diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..977f1d8c --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.idea +libraries/manifest/sophiatx_manifest/__pycache__/ +cmake-build-debug +CMakeCache.txt +CMakeFiles +*.user diff --git a/CMakeCache.txt b/CMakeCache.txt deleted file mode 100644 index 3457371f..00000000 --- a/CMakeCache.txt +++ /dev/null @@ -1,864 +0,0 @@ -# This is the CMakeCache file. -# For build in directory: /Users/ejossev/working/steem -# It was generated by CMake: /usr/local/Cellar/cmake/3.11.0/bin/cmake -# You can edit this file to change values found and used by cmake. -# If you do not want to change any of the values, simply exit the editor. -# If you do want to change a value, simply edit, save, and exit the editor. -# The syntax for the file is as follows: -# KEY:TYPE=VALUE -# KEY is the name of a variable in the cache. -# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. -# VALUE is the current value for the KEY. - -######################## -# EXTERNAL cache entries -######################## - -//Value Computed by CMake -AppBase_BINARY_DIR:STATIC=/Users/ejossev/working/steem/libraries/appbase - -//Value Computed by CMake -AppBase_SOURCE_DIR:STATIC=/Users/ejossev/working/steem/libraries/appbase - -//No help, variable specified on the command line. -BOOST_ROOT:PATH=/usr/local/opt/boost@1.60/ - -//The threading library used by boost-thread -BOOST_THREAD_LIBRARY:FILEPATH=/usr/lib/libpthread.dylib - -//Build websocketpp examples. -BUILD_EXAMPLES:BOOL=OFF - -//Build source for test network (ON OR OFF) -BUILD_STEEM_TESTNET:BOOL=OFF - -//Build websocketpp tests. -BUILD_TESTS:BOOL=OFF - -//Path to a file. -BZIP2_INCLUDE_DIR:PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include - -//No help, variable specified on the command line. -BZIP2_LIBRARIES:UNINITIALIZED=/usr/local/opt/bzip2/lib/libbz2.a - -//Boost chrono library (debug) -Boost_CHRONO_LIBRARY_DEBUG:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_chrono-mt.a - -//Boost chrono library (release) -Boost_CHRONO_LIBRARY_RELEASE:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_chrono-mt.a - -//Boost context library (debug) -Boost_CONTEXT_LIBRARY_DEBUG:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_context-mt.a - -//Boost context library (release) -Boost_CONTEXT_LIBRARY_RELEASE:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_context-mt.a - -//Boost coroutine library (debug) -Boost_COROUTINE_LIBRARY_DEBUG:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_coroutine-mt.a - -//Boost coroutine library (release) -Boost_COROUTINE_LIBRARY_RELEASE:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_coroutine-mt.a - -//Boost date_time library (debug) -Boost_DATE_TIME_LIBRARY_DEBUG:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_date_time-mt.a - -//Boost date_time library (release) -Boost_DATE_TIME_LIBRARY_RELEASE:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_date_time-mt.a - -//The directory containing a CMake configuration file for Boost. -Boost_DIR:PATH=Boost_DIR-NOTFOUND - -//Boost filesystem library (debug) -Boost_FILESYSTEM_LIBRARY_DEBUG:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_filesystem-mt.a - -//Boost filesystem library (release) -Boost_FILESYSTEM_LIBRARY_RELEASE:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_filesystem-mt.a - -//Path to a file. -Boost_INCLUDE_DIR:PATH=/usr/local/opt/boost@1.60/include - -//Boost iostreams library (debug) -Boost_IOSTREAMS_LIBRARY_DEBUG:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_iostreams-mt.a - -//Boost iostreams library (release) -Boost_IOSTREAMS_LIBRARY_RELEASE:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_iostreams-mt.a - -//Boost library directory -Boost_LIBRARY_DIR:PATH=/usr/local/opt/boost@1.60/lib - -//Boost locale library (debug) -Boost_LOCALE_LIBRARY_DEBUG:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_locale-mt.a - -//Boost locale library (release) -Boost_LOCALE_LIBRARY_RELEASE:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_locale-mt.a - -//Boost program_options library (debug) -Boost_PROGRAM_OPTIONS_LIBRARY_DEBUG:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_program_options-mt.a - -//Boost program_options library (release) -Boost_PROGRAM_OPTIONS_LIBRARY_RELEASE:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_program_options-mt.a - -//Boost serialization library (debug) -Boost_SERIALIZATION_LIBRARY_DEBUG:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_serialization-mt.a - -//Boost serialization library (release) -Boost_SERIALIZATION_LIBRARY_RELEASE:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_serialization-mt.a - -//Boost signals library (debug) -Boost_SIGNALS_LIBRARY_DEBUG:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_signals-mt.a - -//Boost signals library (release) -Boost_SIGNALS_LIBRARY_RELEASE:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_signals-mt.a - -//Boost system library (debug) -Boost_SYSTEM_LIBRARY_DEBUG:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_system-mt.a - -//Boost system library (release) -Boost_SYSTEM_LIBRARY_RELEASE:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_system-mt.a - -//Boost thread library (debug) -Boost_THREAD_LIBRARY_DEBUG:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_thread-mt.a - -//Boost thread library (release) -Boost_THREAD_LIBRARY_RELEASE:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_thread-mt.a - -//Boost unit_test_framework library (debug) -Boost_UNIT_TEST_FRAMEWORK_LIBRARY_DEBUG:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_unit_test_framework-mt.a - -//Boost unit_test_framework library (release) -Boost_UNIT_TEST_FRAMEWORK_LIBRARY_RELEASE:FILEPATH=/usr/local/opt/boost@1.60/lib/libboost_unit_test_framework-mt.a - -//ON or OFF -Boost_USE_STATIC_LIBS:STRING=ON - -//Check locks in chainbase (ON or OFF) -CHAINBASE_CHECK_LOCKING:BOOL=ON - -//Path to clain-tidy executable -CLANG_TIDY_EXE:FILEPATH=CLANG_TIDY_EXE-NOTFOUND - -//Build source to clear old votes from memory -CLEAR_VOTES:BOOL=ON - -//Path to a program. -CMAKE_AR:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar - -//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or -// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. -CMAKE_BUILD_TYPE:STRING=Release - -//Id string of the compiler for the CodeBlocks IDE. Automatically -// detected when left empty -CMAKE_CODEBLOCKS_COMPILER_ID:STRING= - -//The CodeBlocks executable -CMAKE_CODEBLOCKS_EXECUTABLE:FILEPATH=CMAKE_CODEBLOCKS_EXECUTABLE-NOTFOUND - -//Additional command line arguments when CodeBlocks invokes make. -// Enter e.g. -j to get parallel builds -CMAKE_CODEBLOCKS_MAKE_ARGUMENTS:STRING=-j8 - -//Enable/Disable color output during build. -CMAKE_COLOR_MAKEFILE:BOOL=ON - -//Configurations -CMAKE_CONFIGURATION_TYPES:STRING=Release;RelWithDebInfo;Debug - -//CXX compiler -CMAKE_CXX_COMPILER:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - -//Flags used by the compiler during all build types. -CMAKE_CXX_FLAGS:STRING= - -//Flags used by the compiler during debug builds. -CMAKE_CXX_FLAGS_DEBUG:STRING=-g - -//Flags used by the compiler during release builds for minimum -// size. -CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG - -//Flags used by the compiler during release builds. -CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG - -//Flags used by the compiler during release builds with debug info. -CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG - -//C compiler -CMAKE_C_COMPILER:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - -//Flags used by the compiler during all build types. -CMAKE_C_FLAGS:STRING= - -//Flags used by the compiler during debug builds. -CMAKE_C_FLAGS_DEBUG:STRING=-g - -//Flags used by the compiler during release builds for minimum -// size. -CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG - -//Flags used by the compiler during release builds. -CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG - -//Flags used by the compiler during release builds with debug info. -CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG - -//Flags used by the linker. -CMAKE_EXE_LINKER_FLAGS:STRING= - -//Flags used by the linker during debug builds. -CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during release minsize builds. -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during release builds. -CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during Release with Debug Info builds. -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Enable/Disable output of compile commands during generation. -CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF - -//Path to a program. -CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool - -//Install path prefix, prepended onto install directories. -CMAKE_INSTALL_PREFIX:PATH=/usr/local - -//Path to a program. -CMAKE_LINKER:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld - -//Path to a program. -CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make - -//Flags used by the linker during the creation of modules. -CMAKE_MODULE_LINKER_FLAGS:STRING= - -//Flags used by the linker during debug builds. -CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during release minsize builds. -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during release builds. -CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during Release with Debug Info builds. -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Path to a program. -CMAKE_NM:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm - -//Path to a program. -CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND - -//Path to a program. -CMAKE_OBJDUMP:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/objdump - -//Build architectures for OSX -CMAKE_OSX_ARCHITECTURES:STRING= - -//Minimum OS X version to target for deployment (at runtime); newer -// APIs weak linked. Set to empty string for default value. -CMAKE_OSX_DEPLOYMENT_TARGET:STRING= - -//The product will be built against the headers and libraries located -// inside the indicated SDK. -CMAKE_OSX_SYSROOT:PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk - -//Value Computed by CMake -CMAKE_PROJECT_NAME:STATIC=Steem - -//Path to a program. -CMAKE_RANLIB:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib - -//Flags used by the linker during the creation of dll's. -CMAKE_SHARED_LINKER_FLAGS:STRING= - -//Flags used by the linker during debug builds. -CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during release minsize builds. -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during release builds. -CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during Release with Debug Info builds. -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//If set, runtime paths are not added when installing shared libraries, -// but are added when building. -CMAKE_SKIP_INSTALL_RPATH:BOOL=NO - -//If set, runtime paths are not added when using shared libraries. -CMAKE_SKIP_RPATH:BOOL=NO - -//Flags used by the linker during the creation of static libraries. -CMAKE_STATIC_LINKER_FLAGS:STRING= - -//Flags used by the linker during debug builds. -CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during release minsize builds. -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during release builds. -CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during Release with Debug Info builds. -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Path to a program. -CMAKE_STRIP:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip - -//If this value is on, makefiles will be generated without the -// .SILENT directive, and all commands will be echoed to the console -// during the make. This is useful for debugging only. With Visual -// Studio IDE projects all commands are done without /nologo. -CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE - -//Path to a library. -CURSES_CURSES_LIBRARY:FILEPATH=/usr/lib/libcurses.dylib - -//Path to a library. -CURSES_FORM_LIBRARY:FILEPATH=/usr/lib/libform.dylib - -//Path to a file. -CURSES_INCLUDE_PATH:PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include - -//Path to a library. -CURSES_NCURSES_LIBRARY:FILEPATH=/usr/lib/libncurses.dylib - -//Value Computed by CMake -ChainBase_BINARY_DIR:STATIC=/Users/ejossev/working/steem/libraries/chainbase - -//Value Computed by CMake -ChainBase_SOURCE_DIR:STATIC=/Users/ejossev/working/steem/libraries/chainbase - -//Dot tool for use with Doxygen -DOXYGEN_DOT_EXECUTABLE:FILEPATH=/usr/local/bin/dot - -//Doxygen documentation generation tool (http://www.doxygen.org) -DOXYGEN_EXECUTABLE:FILEPATH=/usr/local/bin/doxygen - -//secp256k1 or openssl or mixed -ECC_IMPL:STRING=secp256k1 - -//Build Steem for code coverage analysis -ENABLE_COVERAGE_TESTING:BOOL=FALSE - -//Build websocketpp with CPP11 features enabled. -ENABLE_CPP11:BOOL=ON - -//Build source with SMT support (ON OR OFF) -ENABLE_SMT_SUPPORT:BOOL=OFF - -//Git command line client -GIT_EXECUTABLE:FILEPATH=/usr/bin/git - -//The directory containing a CMake configuration file for Gperftools. -Gperftools_DIR:PATH=Gperftools_DIR-NOTFOUND - -//Installation directory for CMake files -INSTALL_CMAKE_DIR:PATH=lib/cmake/websocketpp - -//Installation directory for header files -INSTALL_INCLUDE_DIR:PATH=include - -//Log long API calls over websocket (ON OR OFF) -LOG_LONG_API:BOOL=ON - -//Max API execution time in ms -LOG_LONG_API_MAX_MS:STRING=1000 - -//API execution time in ms at which to warn -LOG_LONG_API_WARN_MS:STRING=750 - -//Build source for low memory node (ON OR OFF) -LOW_MEMORY_NODE:BOOL=OFF - -//Path to a library. -OPENSSL_CRYPTO_LIBRARY:FILEPATH=/usr/local/opt/openssl@1.0/lib/libcrypto.a - -//Path to a library. -OPENSSL_SSL_LIBRARY:FILEPATH=/usr/local/opt/openssl@1.0/lib/libssl.a - -//Path to a program. -PERL_EXECUTABLE:FILEPATH=/usr/bin/perl - -//pkg-config executable -PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/local/bin/pkg-config - -//Path to a program. -ProcessorCount_cmd_sysctl:FILEPATH=/usr/sbin/sysctl - -//Path to a file. -READLINE_INCLUDE_DIR:PATH=/usr/local/include - -//Path to a library. -READLINE_LIBRARIES:FILEPATH=/usr/local/lib/libreadline.dylib - -//Path to a file. -Readline_INCLUDE_DIR:PATH=/usr/local/include - -//Path to a library. -Readline_LIBRARY:FILEPATH=/usr/local/lib/libreadline.dylib - -//Path to a file. -Readline_ROOT_DIR:PATH=/usr/local - -//Skip ordering operation history by transaction id (ON or OFF) -SKIP_BY_TX_ID:BOOL=OFF - -//Lint level during steem build (FULL, HIGH, LOW, OFF) -STEEM_LINT_LEVEL:STRING=OFF - -//Build steemd as a static library (ON or OFF) -STEEM_STATIC_BUILD:BOOL=OFF - -//Value Computed by CMake -Steem_BINARY_DIR:STATIC=/Users/ejossev/working/steem - -//Value Computed by CMake -Steem_SOURCE_DIR:STATIC=/Users/ejossev/working/steem - -//OFF -UNITY_BUILD:BOOL=OFF - -//Path to a file. -ZLIB_INCLUDE_DIR:PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include - -//No help, variable specified on the command line. -ZLIB_LIBRARIES:UNINITIALIZED=/usr/local/opt/zlib/lib/libz.a - -//Path to a library. -ZLIB_LIBRARY_DEBUG:FILEPATH=ZLIB_LIBRARY_DEBUG-NOTFOUND - -//Path to a library. -ZLIB_LIBRARY_RELEASE:FILEPATH=/usr/lib/libz.dylib - -//Dependencies for the target -account_by_key_api_plugin_LIB_DEPENDS:STATIC=general;account_by_key_plugin;general;json_rpc_plugin; - -//Dependencies for the target -account_by_key_plugin_LIB_DEPENDS:STATIC=general;chain_plugin;general;steem_chain;general;steem_protocol; - -//Dependencies for the target -account_history_api_plugin_LIB_DEPENDS:STATIC=general;account_history_plugin;general;json_rpc_plugin; - -//Dependencies for the target -account_history_plugin_LIB_DEPENDS:STATIC=general;chain_plugin;general;steem_chain;general;steem_protocol;general;steem_utilities; - -//Dependencies for the target -appbase_LIB_DEPENDS:STATIC=general;/usr/local/opt/boost@1.60/lib/libboost_thread-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_date_time-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_system-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_filesystem-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_chrono-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_program_options-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_unit_test_framework-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_locale-mt.a;general;/usr/lib/libpthread.dylib; - -//Dependencies for the target -block_api_plugin_LIB_DEPENDS:STATIC=general;chain_plugin;general;json_rpc_plugin; - -//Dependencies for the target -block_log_info_plugin_LIB_DEPENDS:STATIC=general;chain_plugin;general;steem_chain;general;steem_protocol; - -//Dependencies for the target -chain_api_plugin_LIB_DEPENDS:STATIC=general;chain_plugin;general;json_rpc_plugin; - -//Dependencies for the target -chain_plugin_LIB_DEPENDS:STATIC=general;steem_chain;general;appbase;general;steem_utilities; - -//Dependencies for the target -chainbase_LIB_DEPENDS:STATIC=general;/usr/local/opt/boost@1.60/lib/libboost_thread-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_date_time-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_system-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_filesystem-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_chrono-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_unit_test_framework-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_locale-mt.a;general;/usr/lib/libpthread.dylib; - -//Dependencies for the target -condenser_api_plugin_LIB_DEPENDS:STATIC=general;account_by_key_api_plugin;general;account_history_api_plugin;general;database_api_plugin;general;block_api_plugin;general;follow_api_plugin;general;market_history_api_plugin;general;network_broadcast_api_plugin;general;tags_api_plugin;general;witness_api_plugin;general;steem_utilities; - -//Dependencies for the target -database_api_plugin_LIB_DEPENDS:STATIC=general;chain_plugin;general;json_rpc_plugin; - -//Dependencies for the target -db_fixture_LIB_DEPENDS:STATIC=general;steem_chain;general;steem_protocol;general;account_history_plugin;general;market_history_plugin;general;block_api_plugin;general;database_api_plugin;general;webserver_plugin;general;witness_plugin;general;debug_node_plugin;general;condenser_api_plugin;general;fc; - -//Dependencies for the target -debug_node_api_plugin_LIB_DEPENDS:STATIC=general;debug_node_plugin;general;json_rpc_plugin;general;database_api_plugin; - -//Dependencies for the target -debug_node_plugin_LIB_DEPENDS:STATIC=general;chain_plugin;general;steem_utilities; - -//Dependencies for target -equihash_LIB_DEPENDS:STATIC= - -//Value Computed by CMake -fc_BINARY_DIR:STATIC=/Users/ejossev/working/steem/libraries/fc - -//Dependencies for the target -fc_LIB_DEPENDS:STATIC=general;-L/usr/local/lib;general;udt;general;/usr/local/opt/boost@1.60/lib/libboost_thread-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_date_time-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_system-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_filesystem-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_program_options-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_signals-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_serialization-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_chrono-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_unit_test_framework-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_context-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_locale-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_iostreams-mt.a;general;/usr/local/opt/boost@1.60/lib/libboost_coroutine-mt.a;general;/usr/lib/libpthread.dylib;general;/usr/local/opt/openssl@1.0/lib/libssl.a;general;/usr/local/opt/openssl@1.0/lib/libcrypto.a;general;/usr/lib/libz.dylib;general;/usr/local/lib/libreadline.dylib;general;/usr/lib/libcurses.dylib;general;secp256k1; - -//Value Computed by CMake -fc_SOURCE_DIR:STATIC=/Users/ejossev/working/steem/libraries/fc - -//Dependencies for the target -follow_api_plugin_LIB_DEPENDS:STATIC=general;follow_plugin;general;database_api_plugin;general;json_rpc_plugin; - -//Dependencies for the target -follow_plugin_LIB_DEPENDS:STATIC=general;chain_plugin; - -//Dependencies for the target -graphene_net_LIB_DEPENDS:STATIC=general;steem_protocol;general;fc; - -//Dependencies for the target -json_rpc_plugin_LIB_DEPENDS:STATIC=general;chainbase;general;appbase;general;fc; - -//Dependencies for the target -market_history_api_plugin_LIB_DEPENDS:STATIC=general;market_history_plugin;general;json_rpc_plugin; - -//Dependencies for the target -market_history_plugin_LIB_DEPENDS:STATIC=general;chain_plugin; - -//Dependencies for the target -network_broadcast_api_plugin_LIB_DEPENDS:STATIC=general;chain_plugin;general;json_rpc_plugin;general;p2p_plugin;general;appbase; - -//Dependencies for the target -p2p_plugin_LIB_DEPENDS:STATIC=general;chain_plugin;general;appbase;general;steem_chain;general;graphene_net; - -//Dependencies for the target -smt_test_plugin_LIB_DEPENDS:STATIC=general;chain_plugin;general;steem_chain;general;steem_protocol; - -//Dependencies for the target -steem_chain_LIB_DEPENDS:STATIC=general;steem_protocol;general;fc;general;chainbase;general;steem_schema; - -//Dependencies for the target -steem_plugins_LIB_DEPENDS:STATIC=general;appbase;general;fc;general;smt_test_plugin;general;witness_plugin;general;follow_api_plugin;general;account_history_api_plugin;general;witness_api_plugin;general;market_history_api_plugin;general;network_broadcast_api_plugin;general;database_api_plugin;general;chain_api_plugin;general;tags_api_plugin;general;account_by_key_api_plugin;general;block_api_plugin;general;debug_node_api_plugin;general;condenser_api_plugin;general;account_history_plugin;general;follow_plugin;general;chain_plugin;general;debug_node_plugin;general;tags_plugin;general;webserver_plugin;general;p2p_plugin;general;block_log_info_plugin;general;account_by_key_plugin;general;market_history_plugin; - -//Dependencies for the target -steem_protocol_LIB_DEPENDS:STATIC=general;fc; - -//Dependencies for the target -steem_schema_LIB_DEPENDS:STATIC=general;fc; - -//Dependencies for the target -steem_utilities_LIB_DEPENDS:STATIC=general;fc; - -//Dependencies for the target -steem_wallet_LIB_DEPENDS:STATIC=general;graphene_net;general;steem_chain;general;steem_protocol;general;steem_utilities;general;fc;general;condenser_api_plugin; - -//Dependencies for the target -tags_api_plugin_LIB_DEPENDS:STATIC=general;tags_plugin;general;follow_api_plugin;general;json_rpc_plugin; - -//Dependencies for the target -tags_plugin_LIB_DEPENDS:STATIC=general;chain_plugin;general;steem_protocol;general;appbase; - -//Dependencies for the target -test_api_plugin_LIB_DEPENDS:STATIC=general;json_rpc_plugin;general;appbase;general;fc; - -//Dependencies for target -udt_LIB_DEPENDS:STATIC= - -//Dependencies for the target -webserver_plugin_LIB_DEPENDS:STATIC=general;json_rpc_plugin;general;chain_plugin;general;appbase;general;fc; - -//Value Computed by CMake -websocketpp_BINARY_DIR:STATIC=/Users/ejossev/working/steem/libraries/fc/vendor/websocketpp - -//Value Computed by CMake -websocketpp_SOURCE_DIR:STATIC=/Users/ejossev/working/steem/libraries/fc/vendor/websocketpp - -//Dependencies for the target -witness_api_plugin_LIB_DEPENDS:STATIC=general;witness_plugin;general;json_rpc_plugin; - -//Dependencies for the target -witness_plugin_LIB_DEPENDS:STATIC=general;p2p_plugin;general;chain_plugin;general;appbase;general;steem_chain;general;steem_utilities;general;steem_utilities; - - -######################## -# INTERNAL cache entries -######################## - -//ADVANCED property for variable: BOOST_ROOT -BOOST_ROOT-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: BZIP2_INCLUDE_DIR -BZIP2_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//Have symbol BZ2_bzCompressInit -BZIP2_NEED_PREFIX:INTERNAL=1 -//ADVANCED property for variable: Boost_CHRONO_LIBRARY_DEBUG -Boost_CHRONO_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_CHRONO_LIBRARY_RELEASE -Boost_CHRONO_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_CONTEXT_LIBRARY_DEBUG -Boost_CONTEXT_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_CONTEXT_LIBRARY_RELEASE -Boost_CONTEXT_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_COROUTINE_LIBRARY_DEBUG -Boost_COROUTINE_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_COROUTINE_LIBRARY_RELEASE -Boost_COROUTINE_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_DATE_TIME_LIBRARY_DEBUG -Boost_DATE_TIME_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_DATE_TIME_LIBRARY_RELEASE -Boost_DATE_TIME_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_DIR -Boost_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_FILESYSTEM_LIBRARY_DEBUG -Boost_FILESYSTEM_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_FILESYSTEM_LIBRARY_RELEASE -Boost_FILESYSTEM_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_INCLUDE_DIR -Boost_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_IOSTREAMS_LIBRARY_DEBUG -Boost_IOSTREAMS_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_IOSTREAMS_LIBRARY_RELEASE -Boost_IOSTREAMS_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_LIBRARY_DIR -Boost_LIBRARY_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_LOCALE_LIBRARY_DEBUG -Boost_LOCALE_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_LOCALE_LIBRARY_RELEASE -Boost_LOCALE_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_PROGRAM_OPTIONS_LIBRARY_DEBUG -Boost_PROGRAM_OPTIONS_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_PROGRAM_OPTIONS_LIBRARY_RELEASE -Boost_PROGRAM_OPTIONS_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_SERIALIZATION_LIBRARY_DEBUG -Boost_SERIALIZATION_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_SERIALIZATION_LIBRARY_RELEASE -Boost_SERIALIZATION_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_SIGNALS_LIBRARY_DEBUG -Boost_SIGNALS_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_SIGNALS_LIBRARY_RELEASE -Boost_SIGNALS_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_SYSTEM_LIBRARY_DEBUG -Boost_SYSTEM_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_SYSTEM_LIBRARY_RELEASE -Boost_SYSTEM_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_THREAD_LIBRARY_DEBUG -Boost_THREAD_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_THREAD_LIBRARY_RELEASE -Boost_THREAD_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_UNIT_TEST_FRAMEWORK_LIBRARY_DEBUG -Boost_UNIT_TEST_FRAMEWORK_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Boost_UNIT_TEST_FRAMEWORK_LIBRARY_RELEASE -Boost_UNIT_TEST_FRAMEWORK_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_AR -CMAKE_AR-ADVANCED:INTERNAL=1 -//This is the directory where this CMakeCache.txt was created -CMAKE_CACHEFILE_DIR:INTERNAL=/Users/ejossev/working/steem -//Major version of cmake used to create the current loaded cache -CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 -//Minor version of cmake used to create the current loaded cache -CMAKE_CACHE_MINOR_VERSION:INTERNAL=11 -//Patch version of cmake used to create the current loaded cache -CMAKE_CACHE_PATCH_VERSION:INTERNAL=0 -//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE -CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 -//Path to CMake executable. -CMAKE_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.11.0/bin/cmake -//Path to cpack program executable. -CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.11.0/bin/cpack -//Path to ctest program executable. -CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.11.0/bin/ctest -//ADVANCED property for variable: CMAKE_CXX_COMPILER -CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS -CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG -CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL -CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE -CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO -CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_COMPILER -CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS -CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG -CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL -CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE -CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO -CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//Executable file format -CMAKE_EXECUTABLE_FORMAT:INTERNAL=Unknown -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS -CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG -CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE -CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS -CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 -//Name of external makefile project generator. -CMAKE_EXTRA_GENERATOR:INTERNAL=CodeBlocks -//CXX compiler system defined macros -CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS:INTERNAL=__llvm__;1;__clang__;1;__clang_major__;9;__clang_minor__;1;__clang_patchlevel__; ;__clang_version__;"9.1.0 (clang-902.0.39.1)";__GNUC_MINOR__;2;__GNUC_PATCHLEVEL__;1;__GNUC__;4;__GXX_ABI_VERSION;1002;__ATOMIC_RELAXED; ;__ATOMIC_CONSUME;1;__ATOMIC_ACQUIRE;2;__ATOMIC_RELEASE;3;__ATOMIC_ACQ_REL;4;__ATOMIC_SEQ_CST;5;__PRAGMA_REDEFINE_EXTNAME;1;__VERSION__;"4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)";__OBJC_BOOL_IS_BOOL; ;__CONSTANT_CFSTRINGS__;1;__block;__attribute__((__blocks__(byref)));__BLOCKS__;1;__ORDER_LITTLE_ENDIAN__;1234;__ORDER_BIG_ENDIAN__;4321;__ORDER_PDP_ENDIAN__;3412;__BYTE_ORDER__;__ORDER_LITTLE_ENDIAN__;__LITTLE_ENDIAN__;1;_LP64;1;__LP64__;1;__CHAR_BIT__;8;__SCHAR_MAX__;127;__SHRT_MAX__;32767;__INT_MAX__;2147483647;__LONG_MAX__;9223372036854775807L;__LONG_LONG_MAX__;9223372036854775807LL;__WCHAR_MAX__;2147483647;__INTMAX_MAX__;9223372036854775807L;__SIZE_MAX__;18446744073709551615UL;__UINTMAX_MAX__;18446744073709551615UL;__PTRDIFF_MAX__;9223372036854775807L;__INTPTR_MAX__;9223372036854775807L;__UINTPTR_MAX__;18446744073709551615UL;__SIZEOF_DOUBLE__;8;__SIZEOF_FLOAT__;4;__SIZEOF_INT__;4;__SIZEOF_LONG__;8;__SIZEOF_LONG_DOUBLE__;16;__SIZEOF_LONG_LONG__;8;__SIZEOF_POINTER__;8;__SIZEOF_SHORT__;2;__SIZEOF_PTRDIFF_T__;8;__SIZEOF_SIZE_T__;8;__SIZEOF_WCHAR_T__;4;__SIZEOF_WINT_T__;4;__SIZEOF_INT128__;16;__INTMAX_TYPE__;long int;__INTMAX_FMTd__;"ld";__INTMAX_FMTi__;"li";__INTMAX_C_SUFFIX__;L;__UINTMAX_TYPE__;long unsigned int;__UINTMAX_FMTo__;"lo";__UINTMAX_FMTu__;"lu";__UINTMAX_FMTx__;"lx";__UINTMAX_FMTX__;"lX";__UINTMAX_C_SUFFIX__;UL;__INTMAX_WIDTH__;64;__PTRDIFF_TYPE__;long int;__PTRDIFF_FMTd__;"ld";__PTRDIFF_FMTi__;"li";__PTRDIFF_WIDTH__;64;__INTPTR_TYPE__;long int;__INTPTR_FMTd__;"ld";__INTPTR_FMTi__;"li";__INTPTR_WIDTH__;64;__SIZE_TYPE__;long unsigned int;__SIZE_FMTo__;"lo";__SIZE_FMTu__;"lu";__SIZE_FMTx__;"lx";__SIZE_FMTX__;"lX";__SIZE_WIDTH__;64;__WCHAR_TYPE__;int;__WCHAR_WIDTH__;32;__WINT_TYPE__;int;__WINT_WIDTH__;32;__SIG_ATOMIC_WIDTH__;32;__SIG_ATOMIC_MAX__;2147483647;__CHAR16_TYPE__;unsigned short;__CHAR32_TYPE__;unsigned int;__UINTMAX_WIDTH__;64;__UINTPTR_TYPE__;long unsigned int;__UINTPTR_FMTo__;"lo";__UINTPTR_FMTu__;"lu";__UINTPTR_FMTx__;"lx";__UINTPTR_FMTX__;"lX";__UINTPTR_WIDTH__;64;__FLT_DENORM_MIN__;1.40129846e-45F;__FLT_HAS_DENORM__;1;__FLT_DIG__;6;__FLT_DECIMAL_DIG__;9;__FLT_EPSILON__;1.19209290e-7F;__FLT_HAS_INFINITY__;1;__FLT_HAS_QUIET_NAN__;1;__FLT_MANT_DIG__;24;__FLT_MAX_10_EXP__;38;__FLT_MAX_EXP__;128;__FLT_MAX__;3.40282347e+38F;__FLT_MIN_10_EXP__;(-37);__FLT_MIN_EXP__;(-125);__FLT_MIN__;1.17549435e-38F;__DBL_DENORM_MIN__;4.9406564584124654e-324;__DBL_HAS_DENORM__;1;__DBL_DIG__;15;__DBL_DECIMAL_DIG__;17;__DBL_EPSILON__;2.2204460492503131e-16;__DBL_HAS_INFINITY__;1;__DBL_HAS_QUIET_NAN__;1;__DBL_MANT_DIG__;53;__DBL_MAX_10_EXP__;308;__DBL_MAX_EXP__;1024;__DBL_MAX__;1.7976931348623157e+308;__DBL_MIN_10_EXP__;(-307);__DBL_MIN_EXP__;(-1021);__DBL_MIN__;2.2250738585072014e-308;__LDBL_DENORM_MIN__;3.64519953188247460253e-4951L;__LDBL_HAS_DENORM__;1;__LDBL_DIG__;18;__LDBL_DECIMAL_DIG__;21;__LDBL_EPSILON__;1.08420217248550443401e-19L;__LDBL_HAS_INFINITY__;1;__LDBL_HAS_QUIET_NAN__;1;__LDBL_MANT_DIG__;64;__LDBL_MAX_10_EXP__;4932;__LDBL_MAX_EXP__;16384;__LDBL_MAX__;1.18973149535723176502e+4932L;__LDBL_MIN_10_EXP__;(-4931);__LDBL_MIN_EXP__;(-16381);__LDBL_MIN__;3.36210314311209350626e-4932L;__POINTER_WIDTH__;64;__BIGGEST_ALIGNMENT__;16;__INT8_TYPE__;signed char;__INT8_FMTd__;"hhd";__INT8_FMTi__;"hhi";__INT8_C_SUFFIX__; ;__INT16_TYPE__;short;__INT16_FMTd__;"hd";__INT16_FMTi__;"hi";__INT16_C_SUFFIX__; ;__INT32_TYPE__;int;__INT32_FMTd__;"d";__INT32_FMTi__;"i";__INT32_C_SUFFIX__; ;__INT64_TYPE__;long long int;__INT64_FMTd__;"lld";__INT64_FMTi__;"lli";__INT64_C_SUFFIX__;LL;__UINT8_TYPE__;unsigned char;__UINT8_FMTo__;"hho";__UINT8_FMTu__;"hhu";__UINT8_FMTx__;"hhx";__UINT8_FMTX__;"hhX";__UINT8_C_SUFFIX__; ;__UINT8_MAX__;255;__INT8_MAX__;127;__UINT16_TYPE__;unsigned short;__UINT16_FMTo__;"ho";__UINT16_FMTu__;"hu";__UINT16_FMTx__;"hx";__UINT16_FMTX__;"hX";__UINT16_C_SUFFIX__; ;__UINT16_MAX__;65535;__INT16_MAX__;32767;__UINT32_TYPE__;unsigned int;__UINT32_FMTo__;"o";__UINT32_FMTu__;"u";__UINT32_FMTx__;"x";__UINT32_FMTX__;"X";__UINT32_C_SUFFIX__;U;__UINT32_MAX__;4294967295U;__INT32_MAX__;2147483647;__UINT64_TYPE__;long long unsigned int;__UINT64_FMTo__;"llo";__UINT64_FMTu__;"llu";__UINT64_FMTx__;"llx";__UINT64_FMTX__;"llX";__UINT64_C_SUFFIX__;ULL;__UINT64_MAX__;18446744073709551615ULL;__INT64_MAX__;9223372036854775807LL;__INT_LEAST8_TYPE__;signed char;__INT_LEAST8_MAX__;127;__INT_LEAST8_FMTd__;"hhd";__INT_LEAST8_FMTi__;"hhi";__UINT_LEAST8_TYPE__;unsigned char;__UINT_LEAST8_MAX__;255;__UINT_LEAST8_FMTo__;"hho";__UINT_LEAST8_FMTu__;"hhu";__UINT_LEAST8_FMTx__;"hhx";__UINT_LEAST8_FMTX__;"hhX";__INT_LEAST16_TYPE__;short;__INT_LEAST16_MAX__;32767;__INT_LEAST16_FMTd__;"hd";__INT_LEAST16_FMTi__;"hi";__UINT_LEAST16_TYPE__;unsigned short;__UINT_LEAST16_MAX__;65535;__UINT_LEAST16_FMTo__;"ho";__UINT_LEAST16_FMTu__;"hu";__UINT_LEAST16_FMTx__;"hx";__UINT_LEAST16_FMTX__;"hX";__INT_LEAST32_TYPE__;int;__INT_LEAST32_MAX__;2147483647;__INT_LEAST32_FMTd__;"d";__INT_LEAST32_FMTi__;"i";__UINT_LEAST32_TYPE__;unsigned int;__UINT_LEAST32_MAX__;4294967295U;__UINT_LEAST32_FMTo__;"o";__UINT_LEAST32_FMTu__;"u";__UINT_LEAST32_FMTx__;"x";__UINT_LEAST32_FMTX__;"X";__INT_LEAST64_TYPE__;long int;__INT_LEAST64_MAX__;9223372036854775807L;__INT_LEAST64_FMTd__;"ld";__INT_LEAST64_FMTi__;"li";__UINT_LEAST64_TYPE__;long unsigned int;__UINT_LEAST64_MAX__;18446744073709551615UL;__UINT_LEAST64_FMTo__;"lo";__UINT_LEAST64_FMTu__;"lu";__UINT_LEAST64_FMTx__;"lx";__UINT_LEAST64_FMTX__;"lX";__INT_FAST8_TYPE__;signed char;__INT_FAST8_MAX__;127;__INT_FAST8_FMTd__;"hhd";__INT_FAST8_FMTi__;"hhi";__UINT_FAST8_TYPE__;unsigned char;__UINT_FAST8_MAX__;255;__UINT_FAST8_FMTo__;"hho";__UINT_FAST8_FMTu__;"hhu";__UINT_FAST8_FMTx__;"hhx";__UINT_FAST8_FMTX__;"hhX";__INT_FAST16_TYPE__;short;__INT_FAST16_MAX__;32767;__INT_FAST16_FMTd__;"hd";__INT_FAST16_FMTi__;"hi";__UINT_FAST16_TYPE__;unsigned short;__UINT_FAST16_MAX__;65535;__UINT_FAST16_FMTo__;"ho";__UINT_FAST16_FMTu__;"hu";__UINT_FAST16_FMTx__;"hx";__UINT_FAST16_FMTX__;"hX";__INT_FAST32_TYPE__;int;__INT_FAST32_MAX__;2147483647;__INT_FAST32_FMTd__;"d";__INT_FAST32_FMTi__;"i";__UINT_FAST32_TYPE__;unsigned int;__UINT_FAST32_MAX__;4294967295U;__UINT_FAST32_FMTo__;"o";__UINT_FAST32_FMTu__;"u";__UINT_FAST32_FMTx__;"x";__UINT_FAST32_FMTX__;"X";__INT_FAST64_TYPE__;long int;__INT_FAST64_MAX__;9223372036854775807L;__INT_FAST64_FMTd__;"ld";__INT_FAST64_FMTi__;"li";__UINT_FAST64_TYPE__;long unsigned int;__UINT_FAST64_MAX__;18446744073709551615UL;__UINT_FAST64_FMTo__;"lo";__UINT_FAST64_FMTu__;"lu";__UINT_FAST64_FMTx__;"lx";__UINT_FAST64_FMTX__;"lX";__USER_LABEL_PREFIX__;_;__FINITE_MATH_ONLY__; ;__GNUC_STDC_INLINE__;1;__GCC_ATOMIC_TEST_AND_SET_TRUEVAL;1;__CLANG_ATOMIC_BOOL_LOCK_FREE;2;__CLANG_ATOMIC_CHAR_LOCK_FREE;2;__CLANG_ATOMIC_CHAR16_T_LOCK_FREE;2;__CLANG_ATOMIC_CHAR32_T_LOCK_FREE;2;__CLANG_ATOMIC_WCHAR_T_LOCK_FREE;2;__CLANG_ATOMIC_SHORT_LOCK_FREE;2;__CLANG_ATOMIC_INT_LOCK_FREE;2;__CLANG_ATOMIC_LONG_LOCK_FREE;2;__CLANG_ATOMIC_LLONG_LOCK_FREE;2;__CLANG_ATOMIC_POINTER_LOCK_FREE;2;__GCC_ATOMIC_BOOL_LOCK_FREE;2;__GCC_ATOMIC_CHAR_LOCK_FREE;2;__GCC_ATOMIC_CHAR16_T_LOCK_FREE;2;__GCC_ATOMIC_CHAR32_T_LOCK_FREE;2;__GCC_ATOMIC_WCHAR_T_LOCK_FREE;2;__GCC_ATOMIC_SHORT_LOCK_FREE;2;__GCC_ATOMIC_INT_LOCK_FREE;2;__GCC_ATOMIC_LONG_LOCK_FREE;2;__GCC_ATOMIC_LLONG_LOCK_FREE;2;__GCC_ATOMIC_POINTER_LOCK_FREE;2;__NO_INLINE__;1;__PIC__;2;__pic__;2;__FLT_EVAL_METHOD__; ;__FLT_RADIX__;2;__DECIMAL_DIG__;__LDBL_DECIMAL_DIG__;__SSP__;1;__nonnull;_Nonnull;__null_unspecified;_Null_unspecified;__nullable;_Nullable;__amd64__;1;__amd64;1;__x86_64;1;__x86_64__;1;__core2;1;__core2__;1;__tune_core2__;1;__REGISTER_PREFIX__; ;__NO_MATH_INLINES;1;__FXSR__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16;1;__SSE4_1__;1;__SSSE3__;1;__SSE3__;1;__SSE2__;1;__SSE2_MATH__;1;__SSE__;1;__SSE_MATH__;1;__MMX__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8;1;__APPLE_CC__;6000;__APPLE__;1;__STDC_NO_THREADS__;1;OBJC_NEW_PROPERTIES;1;__apple_build_version__;9020039;__weak;__attribute__((objc_gc(weak)));__strong; ;__unsafe_unretained; ;__DYNAMIC__;1;__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__;101300;__MACH__;1;__STDC__;1;__STDC_HOSTED__;1;__STDC_VERSION__;201112L;__STDC_UTF_16__;1;__STDC_UTF_32__;1;__llvm__;1;__clang__;1;__clang_major__;9;__clang_minor__;1;__clang_patchlevel__; ;__clang_version__;"9.1.0 (clang-902.0.39.1)";__GNUC_MINOR__;2;__GNUC_PATCHLEVEL__;1;__GNUC__;4;__GXX_ABI_VERSION;1002;__ATOMIC_RELAXED; ;__ATOMIC_CONSUME;1;__ATOMIC_ACQUIRE;2;__ATOMIC_RELEASE;3;__ATOMIC_ACQ_REL;4;__ATOMIC_SEQ_CST;5;__PRAGMA_REDEFINE_EXTNAME;1;__VERSION__;"4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)";__OBJC_BOOL_IS_BOOL; ;__cpp_rtti;199711;__cpp_exceptions;199711;__cpp_threadsafe_static_init;200806;__CONSTANT_CFSTRINGS__;1;__block;__attribute__((__blocks__(byref)));__BLOCKS__;1;__EXCEPTIONS;1;__GXX_RTTI;1;__DEPRECATED;1;__GNUG__;4;__GXX_WEAK__;1;__private_extern__;extern;__ORDER_LITTLE_ENDIAN__;1234;__ORDER_BIG_ENDIAN__;4321;__ORDER_PDP_ENDIAN__;3412;__BYTE_ORDER__;__ORDER_LITTLE_ENDIAN__;__LITTLE_ENDIAN__;1;_LP64;1;__LP64__;1;__CHAR_BIT__;8;__SCHAR_MAX__;127;__SHRT_MAX__;32767;__INT_MAX__;2147483647;__LONG_MAX__;9223372036854775807L;__LONG_LONG_MAX__;9223372036854775807LL;__WCHAR_MAX__;2147483647;__INTMAX_MAX__;9223372036854775807L;__SIZE_MAX__;18446744073709551615UL;__UINTMAX_MAX__;18446744073709551615UL;__PTRDIFF_MAX__;9223372036854775807L;__INTPTR_MAX__;9223372036854775807L;__UINTPTR_MAX__;18446744073709551615UL;__SIZEOF_DOUBLE__;8;__SIZEOF_FLOAT__;4;__SIZEOF_INT__;4;__SIZEOF_LONG__;8;__SIZEOF_LONG_DOUBLE__;16;__SIZEOF_LONG_LONG__;8;__SIZEOF_POINTER__;8;__SIZEOF_SHORT__;2;__SIZEOF_PTRDIFF_T__;8;__SIZEOF_SIZE_T__;8;__SIZEOF_WCHAR_T__;4;__SIZEOF_WINT_T__;4;__SIZEOF_INT128__;16;__INTMAX_TYPE__;long int;__INTMAX_FMTd__;"ld";__INTMAX_FMTi__;"li";__INTMAX_C_SUFFIX__;L;__UINTMAX_TYPE__;long unsigned int;__UINTMAX_FMTo__;"lo";__UINTMAX_FMTu__;"lu";__UINTMAX_FMTx__;"lx";__UINTMAX_FMTX__;"lX";__UINTMAX_C_SUFFIX__;UL;__INTMAX_WIDTH__;64;__PTRDIFF_TYPE__;long int;__PTRDIFF_FMTd__;"ld";__PTRDIFF_FMTi__;"li";__PTRDIFF_WIDTH__;64;__INTPTR_TYPE__;long int;__INTPTR_FMTd__;"ld";__INTPTR_FMTi__;"li";__INTPTR_WIDTH__;64;__SIZE_TYPE__;long unsigned int;__SIZE_FMTo__;"lo";__SIZE_FMTu__;"lu";__SIZE_FMTx__;"lx";__SIZE_FMTX__;"lX";__SIZE_WIDTH__;64;__WCHAR_TYPE__;int;__WCHAR_WIDTH__;32;__WINT_TYPE__;int;__WINT_WIDTH__;32;__SIG_ATOMIC_WIDTH__;32;__SIG_ATOMIC_MAX__;2147483647;__CHAR16_TYPE__;unsigned short;__CHAR32_TYPE__;unsigned int;__UINTMAX_WIDTH__;64;__UINTPTR_TYPE__;long unsigned int;__UINTPTR_FMTo__;"lo";__UINTPTR_FMTu__;"lu";__UINTPTR_FMTx__;"lx";__UINTPTR_FMTX__;"lX";__UINTPTR_WIDTH__;64;__FLT_DENORM_MIN__;1.40129846e-45F;__FLT_HAS_DENORM__;1;__FLT_DIG__;6;__FLT_DECIMAL_DIG__;9;__FLT_EPSILON__;1.19209290e-7F;__FLT_HAS_INFINITY__;1;__FLT_HAS_QUIET_NAN__;1;__FLT_MANT_DIG__;24;__FLT_MAX_10_EXP__;38;__FLT_MAX_EXP__;128;__FLT_MAX__;3.40282347e+38F;__FLT_MIN_10_EXP__;(-37);__FLT_MIN_EXP__;(-125);__FLT_MIN__;1.17549435e-38F;__DBL_DENORM_MIN__;4.9406564584124654e-324;__DBL_HAS_DENORM__;1;__DBL_DIG__;15;__DBL_DECIMAL_DIG__;17;__DBL_EPSILON__;2.2204460492503131e-16;__DBL_HAS_INFINITY__;1;__DBL_HAS_QUIET_NAN__;1;__DBL_MANT_DIG__;53;__DBL_MAX_10_EXP__;308;__DBL_MAX_EXP__;1024;__DBL_MAX__;1.7976931348623157e+308;__DBL_MIN_10_EXP__;(-307);__DBL_MIN_EXP__;(-1021);__DBL_MIN__;2.2250738585072014e-308;__LDBL_DENORM_MIN__;3.64519953188247460253e-4951L;__LDBL_HAS_DENORM__;1;__LDBL_DIG__;18;__LDBL_DECIMAL_DIG__;21;__LDBL_EPSILON__;1.08420217248550443401e-19L;__LDBL_HAS_INFINITY__;1;__LDBL_HAS_QUIET_NAN__;1;__LDBL_MANT_DIG__;64;__LDBL_MAX_10_EXP__;4932;__LDBL_MAX_EXP__;16384;__LDBL_MAX__;1.18973149535723176502e+4932L;__LDBL_MIN_10_EXP__;(-4931);__LDBL_MIN_EXP__;(-16381);__LDBL_MIN__;3.36210314311209350626e-4932L;__POINTER_WIDTH__;64;__BIGGEST_ALIGNMENT__;16;__INT8_TYPE__;signed char;__INT8_FMTd__;"hhd";__INT8_FMTi__;"hhi";__INT8_C_SUFFIX__; ;__INT16_TYPE__;short;__INT16_FMTd__;"hd";__INT16_FMTi__;"hi";__INT16_C_SUFFIX__; ;__INT32_TYPE__;int;__INT32_FMTd__;"d";__INT32_FMTi__;"i";__INT32_C_SUFFIX__; ;__INT64_TYPE__;long long int;__INT64_FMTd__;"lld";__INT64_FMTi__;"lli";__INT64_C_SUFFIX__;LL;__UINT8_TYPE__;unsigned char;__UINT8_FMTo__;"hho";__UINT8_FMTu__;"hhu";__UINT8_FMTx__;"hhx";__UINT8_FMTX__;"hhX";__UINT8_C_SUFFIX__; ;__UINT8_MAX__;255;__INT8_MAX__;127;__UINT16_TYPE__;unsigned short;__UINT16_FMTo__;"ho";__UINT16_FMTu__;"hu";__UINT16_FMTx__;"hx";__UINT16_FMTX__;"hX";__UINT16_C_SUFFIX__; ;__UINT16_MAX__;65535;__INT16_MAX__;32767;__UINT32_TYPE__;unsigned int;__UINT32_FMTo__;"o";__UINT32_FMTu__;"u";__UINT32_FMTx__;"x";__UINT32_FMTX__;"X";__UINT32_C_SUFFIX__;U;__UINT32_MAX__;4294967295U;__INT32_MAX__;2147483647;__UINT64_TYPE__;long long unsigned int;__UINT64_FMTo__;"llo";__UINT64_FMTu__;"llu";__UINT64_FMTx__;"llx";__UINT64_FMTX__;"llX";__UINT64_C_SUFFIX__;ULL;__UINT64_MAX__;18446744073709551615ULL;__INT64_MAX__;9223372036854775807LL;__INT_LEAST8_TYPE__;signed char;__INT_LEAST8_MAX__;127;__INT_LEAST8_FMTd__;"hhd";__INT_LEAST8_FMTi__;"hhi";__UINT_LEAST8_TYPE__;unsigned char;__UINT_LEAST8_MAX__;255;__UINT_LEAST8_FMTo__;"hho";__UINT_LEAST8_FMTu__;"hhu";__UINT_LEAST8_FMTx__;"hhx";__UINT_LEAST8_FMTX__;"hhX";__INT_LEAST16_TYPE__;short;__INT_LEAST16_MAX__;32767;__INT_LEAST16_FMTd__;"hd";__INT_LEAST16_FMTi__;"hi";__UINT_LEAST16_TYPE__;unsigned short;__UINT_LEAST16_MAX__;65535;__UINT_LEAST16_FMTo__;"ho";__UINT_LEAST16_FMTu__;"hu";__UINT_LEAST16_FMTx__;"hx";__UINT_LEAST16_FMTX__;"hX";__INT_LEAST32_TYPE__;int;__INT_LEAST32_MAX__;2147483647;__INT_LEAST32_FMTd__;"d";__INT_LEAST32_FMTi__;"i";__UINT_LEAST32_TYPE__;unsigned int;__UINT_LEAST32_MAX__;4294967295U;__UINT_LEAST32_FMTo__;"o";__UINT_LEAST32_FMTu__;"u";__UINT_LEAST32_FMTx__;"x";__UINT_LEAST32_FMTX__;"X";__INT_LEAST64_TYPE__;long int;__INT_LEAST64_MAX__;9223372036854775807L;__INT_LEAST64_FMTd__;"ld";__INT_LEAST64_FMTi__;"li";__UINT_LEAST64_TYPE__;long unsigned int;__UINT_LEAST64_MAX__;18446744073709551615UL;__UINT_LEAST64_FMTo__;"lo";__UINT_LEAST64_FMTu__;"lu";__UINT_LEAST64_FMTx__;"lx";__UINT_LEAST64_FMTX__;"lX";__INT_FAST8_TYPE__;signed char;__INT_FAST8_MAX__;127;__INT_FAST8_FMTd__;"hhd";__INT_FAST8_FMTi__;"hhi";__UINT_FAST8_TYPE__;unsigned char;__UINT_FAST8_MAX__;255;__UINT_FAST8_FMTo__;"hho";__UINT_FAST8_FMTu__;"hhu";__UINT_FAST8_FMTx__;"hhx";__UINT_FAST8_FMTX__;"hhX";__INT_FAST16_TYPE__;short;__INT_FAST16_MAX__;32767;__INT_FAST16_FMTd__;"hd";__INT_FAST16_FMTi__;"hi";__UINT_FAST16_TYPE__;unsigned short;__UINT_FAST16_MAX__;65535;__UINT_FAST16_FMTo__;"ho";__UINT_FAST16_FMTu__;"hu";__UINT_FAST16_FMTx__;"hx";__UINT_FAST16_FMTX__;"hX";__INT_FAST32_TYPE__;int;__INT_FAST32_MAX__;2147483647;__INT_FAST32_FMTd__;"d";__INT_FAST32_FMTi__;"i";__UINT_FAST32_TYPE__;unsigned int;__UINT_FAST32_MAX__;4294967295U;__UINT_FAST32_FMTo__;"o";__UINT_FAST32_FMTu__;"u";__UINT_FAST32_FMTx__;"x";__UINT_FAST32_FMTX__;"X";__INT_FAST64_TYPE__;long int;__INT_FAST64_MAX__;9223372036854775807L;__INT_FAST64_FMTd__;"ld";__INT_FAST64_FMTi__;"li";__UINT_FAST64_TYPE__;long unsigned int;__UINT_FAST64_MAX__;18446744073709551615UL;__UINT_FAST64_FMTo__;"lo";__UINT_FAST64_FMTu__;"lu";__UINT_FAST64_FMTx__;"lx";__UINT_FAST64_FMTX__;"lX";__USER_LABEL_PREFIX__;_;__FINITE_MATH_ONLY__; ;__GNUC_GNU_INLINE__;1;__GCC_ATOMIC_TEST_AND_SET_TRUEVAL;1;__CLANG_ATOMIC_BOOL_LOCK_FREE;2;__CLANG_ATOMIC_CHAR_LOCK_FREE;2;__CLANG_ATOMIC_CHAR16_T_LOCK_FREE;2;__CLANG_ATOMIC_CHAR32_T_LOCK_FREE;2;__CLANG_ATOMIC_WCHAR_T_LOCK_FREE;2;__CLANG_ATOMIC_SHORT_LOCK_FREE;2;__CLANG_ATOMIC_INT_LOCK_FREE;2;__CLANG_ATOMIC_LONG_LOCK_FREE;2;__CLANG_ATOMIC_LLONG_LOCK_FREE;2;__CLANG_ATOMIC_POINTER_LOCK_FREE;2;__GCC_ATOMIC_BOOL_LOCK_FREE;2;__GCC_ATOMIC_CHAR_LOCK_FREE;2;__GCC_ATOMIC_CHAR16_T_LOCK_FREE;2;__GCC_ATOMIC_CHAR32_T_LOCK_FREE;2;__GCC_ATOMIC_WCHAR_T_LOCK_FREE;2;__GCC_ATOMIC_SHORT_LOCK_FREE;2;__GCC_ATOMIC_INT_LOCK_FREE;2;__GCC_ATOMIC_LONG_LOCK_FREE;2;__GCC_ATOMIC_LLONG_LOCK_FREE;2;__GCC_ATOMIC_POINTER_LOCK_FREE;2;__NO_INLINE__;1;__PIC__;2;__pic__;2;__FLT_EVAL_METHOD__; ;__FLT_RADIX__;2;__DECIMAL_DIG__;__LDBL_DECIMAL_DIG__;__SSP__;1;__nonnull;_Nonnull;__null_unspecified;_Null_unspecified;__nullable;_Nullable;__GLIBCXX_TYPE_INT_N_0;__int128;__GLIBCXX_BITSIZE_INT_N_0;128;__amd64__;1;__amd64;1;__x86_64;1;__x86_64__;1;__core2;1;__core2__;1;__tune_core2__;1;__REGISTER_PREFIX__; ;__NO_MATH_INLINES;1;__FXSR__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16;1;__SSE4_1__;1;__SSSE3__;1;__SSE3__;1;__SSE2__;1;__SSE2_MATH__;1;__SSE__;1;__SSE_MATH__;1;__MMX__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8;1;__APPLE_CC__;6000;__APPLE__;1;__STDC_NO_THREADS__;1;OBJC_NEW_PROPERTIES;1;__apple_build_version__;9020039;__weak;__attribute__((objc_gc(weak)));__strong; ;__unsafe_unretained; ;__DYNAMIC__;1;__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__;101300;__MACH__;1;__STDC__;1;__STDC_HOSTED__;1;__cplusplus;199711L;__STDCPP_DEFAULT_NEW_ALIGNMENT__;16UL;__STDC_UTF_16__;1;__STDC_UTF_32__;1 -//CXX compiler system include directories -CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS:INTERNAL=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1;/usr/local/include;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/include;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include;/System/Library/Frameworks;/Library/Frameworks -//C compiler system defined macros -CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS:INTERNAL=__llvm__;1;__clang__;1;__clang_major__;9;__clang_minor__;1;__clang_patchlevel__; ;__clang_version__;"9.1.0 (clang-902.0.39.1)";__GNUC_MINOR__;2;__GNUC_PATCHLEVEL__;1;__GNUC__;4;__GXX_ABI_VERSION;1002;__ATOMIC_RELAXED; ;__ATOMIC_CONSUME;1;__ATOMIC_ACQUIRE;2;__ATOMIC_RELEASE;3;__ATOMIC_ACQ_REL;4;__ATOMIC_SEQ_CST;5;__PRAGMA_REDEFINE_EXTNAME;1;__VERSION__;"4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)";__OBJC_BOOL_IS_BOOL; ;__CONSTANT_CFSTRINGS__;1;__block;__attribute__((__blocks__(byref)));__BLOCKS__;1;__ORDER_LITTLE_ENDIAN__;1234;__ORDER_BIG_ENDIAN__;4321;__ORDER_PDP_ENDIAN__;3412;__BYTE_ORDER__;__ORDER_LITTLE_ENDIAN__;__LITTLE_ENDIAN__;1;_LP64;1;__LP64__;1;__CHAR_BIT__;8;__SCHAR_MAX__;127;__SHRT_MAX__;32767;__INT_MAX__;2147483647;__LONG_MAX__;9223372036854775807L;__LONG_LONG_MAX__;9223372036854775807LL;__WCHAR_MAX__;2147483647;__INTMAX_MAX__;9223372036854775807L;__SIZE_MAX__;18446744073709551615UL;__UINTMAX_MAX__;18446744073709551615UL;__PTRDIFF_MAX__;9223372036854775807L;__INTPTR_MAX__;9223372036854775807L;__UINTPTR_MAX__;18446744073709551615UL;__SIZEOF_DOUBLE__;8;__SIZEOF_FLOAT__;4;__SIZEOF_INT__;4;__SIZEOF_LONG__;8;__SIZEOF_LONG_DOUBLE__;16;__SIZEOF_LONG_LONG__;8;__SIZEOF_POINTER__;8;__SIZEOF_SHORT__;2;__SIZEOF_PTRDIFF_T__;8;__SIZEOF_SIZE_T__;8;__SIZEOF_WCHAR_T__;4;__SIZEOF_WINT_T__;4;__SIZEOF_INT128__;16;__INTMAX_TYPE__;long int;__INTMAX_FMTd__;"ld";__INTMAX_FMTi__;"li";__INTMAX_C_SUFFIX__;L;__UINTMAX_TYPE__;long unsigned int;__UINTMAX_FMTo__;"lo";__UINTMAX_FMTu__;"lu";__UINTMAX_FMTx__;"lx";__UINTMAX_FMTX__;"lX";__UINTMAX_C_SUFFIX__;UL;__INTMAX_WIDTH__;64;__PTRDIFF_TYPE__;long int;__PTRDIFF_FMTd__;"ld";__PTRDIFF_FMTi__;"li";__PTRDIFF_WIDTH__;64;__INTPTR_TYPE__;long int;__INTPTR_FMTd__;"ld";__INTPTR_FMTi__;"li";__INTPTR_WIDTH__;64;__SIZE_TYPE__;long unsigned int;__SIZE_FMTo__;"lo";__SIZE_FMTu__;"lu";__SIZE_FMTx__;"lx";__SIZE_FMTX__;"lX";__SIZE_WIDTH__;64;__WCHAR_TYPE__;int;__WCHAR_WIDTH__;32;__WINT_TYPE__;int;__WINT_WIDTH__;32;__SIG_ATOMIC_WIDTH__;32;__SIG_ATOMIC_MAX__;2147483647;__CHAR16_TYPE__;unsigned short;__CHAR32_TYPE__;unsigned int;__UINTMAX_WIDTH__;64;__UINTPTR_TYPE__;long unsigned int;__UINTPTR_FMTo__;"lo";__UINTPTR_FMTu__;"lu";__UINTPTR_FMTx__;"lx";__UINTPTR_FMTX__;"lX";__UINTPTR_WIDTH__;64;__FLT_DENORM_MIN__;1.40129846e-45F;__FLT_HAS_DENORM__;1;__FLT_DIG__;6;__FLT_DECIMAL_DIG__;9;__FLT_EPSILON__;1.19209290e-7F;__FLT_HAS_INFINITY__;1;__FLT_HAS_QUIET_NAN__;1;__FLT_MANT_DIG__;24;__FLT_MAX_10_EXP__;38;__FLT_MAX_EXP__;128;__FLT_MAX__;3.40282347e+38F;__FLT_MIN_10_EXP__;(-37);__FLT_MIN_EXP__;(-125);__FLT_MIN__;1.17549435e-38F;__DBL_DENORM_MIN__;4.9406564584124654e-324;__DBL_HAS_DENORM__;1;__DBL_DIG__;15;__DBL_DECIMAL_DIG__;17;__DBL_EPSILON__;2.2204460492503131e-16;__DBL_HAS_INFINITY__;1;__DBL_HAS_QUIET_NAN__;1;__DBL_MANT_DIG__;53;__DBL_MAX_10_EXP__;308;__DBL_MAX_EXP__;1024;__DBL_MAX__;1.7976931348623157e+308;__DBL_MIN_10_EXP__;(-307);__DBL_MIN_EXP__;(-1021);__DBL_MIN__;2.2250738585072014e-308;__LDBL_DENORM_MIN__;3.64519953188247460253e-4951L;__LDBL_HAS_DENORM__;1;__LDBL_DIG__;18;__LDBL_DECIMAL_DIG__;21;__LDBL_EPSILON__;1.08420217248550443401e-19L;__LDBL_HAS_INFINITY__;1;__LDBL_HAS_QUIET_NAN__;1;__LDBL_MANT_DIG__;64;__LDBL_MAX_10_EXP__;4932;__LDBL_MAX_EXP__;16384;__LDBL_MAX__;1.18973149535723176502e+4932L;__LDBL_MIN_10_EXP__;(-4931);__LDBL_MIN_EXP__;(-16381);__LDBL_MIN__;3.36210314311209350626e-4932L;__POINTER_WIDTH__;64;__BIGGEST_ALIGNMENT__;16;__INT8_TYPE__;signed char;__INT8_FMTd__;"hhd";__INT8_FMTi__;"hhi";__INT8_C_SUFFIX__; ;__INT16_TYPE__;short;__INT16_FMTd__;"hd";__INT16_FMTi__;"hi";__INT16_C_SUFFIX__; ;__INT32_TYPE__;int;__INT32_FMTd__;"d";__INT32_FMTi__;"i";__INT32_C_SUFFIX__; ;__INT64_TYPE__;long long int;__INT64_FMTd__;"lld";__INT64_FMTi__;"lli";__INT64_C_SUFFIX__;LL;__UINT8_TYPE__;unsigned char;__UINT8_FMTo__;"hho";__UINT8_FMTu__;"hhu";__UINT8_FMTx__;"hhx";__UINT8_FMTX__;"hhX";__UINT8_C_SUFFIX__; ;__UINT8_MAX__;255;__INT8_MAX__;127;__UINT16_TYPE__;unsigned short;__UINT16_FMTo__;"ho";__UINT16_FMTu__;"hu";__UINT16_FMTx__;"hx";__UINT16_FMTX__;"hX";__UINT16_C_SUFFIX__; ;__UINT16_MAX__;65535;__INT16_MAX__;32767;__UINT32_TYPE__;unsigned int;__UINT32_FMTo__;"o";__UINT32_FMTu__;"u";__UINT32_FMTx__;"x";__UINT32_FMTX__;"X";__UINT32_C_SUFFIX__;U;__UINT32_MAX__;4294967295U;__INT32_MAX__;2147483647;__UINT64_TYPE__;long long unsigned int;__UINT64_FMTo__;"llo";__UINT64_FMTu__;"llu";__UINT64_FMTx__;"llx";__UINT64_FMTX__;"llX";__UINT64_C_SUFFIX__;ULL;__UINT64_MAX__;18446744073709551615ULL;__INT64_MAX__;9223372036854775807LL;__INT_LEAST8_TYPE__;signed char;__INT_LEAST8_MAX__;127;__INT_LEAST8_FMTd__;"hhd";__INT_LEAST8_FMTi__;"hhi";__UINT_LEAST8_TYPE__;unsigned char;__UINT_LEAST8_MAX__;255;__UINT_LEAST8_FMTo__;"hho";__UINT_LEAST8_FMTu__;"hhu";__UINT_LEAST8_FMTx__;"hhx";__UINT_LEAST8_FMTX__;"hhX";__INT_LEAST16_TYPE__;short;__INT_LEAST16_MAX__;32767;__INT_LEAST16_FMTd__;"hd";__INT_LEAST16_FMTi__;"hi";__UINT_LEAST16_TYPE__;unsigned short;__UINT_LEAST16_MAX__;65535;__UINT_LEAST16_FMTo__;"ho";__UINT_LEAST16_FMTu__;"hu";__UINT_LEAST16_FMTx__;"hx";__UINT_LEAST16_FMTX__;"hX";__INT_LEAST32_TYPE__;int;__INT_LEAST32_MAX__;2147483647;__INT_LEAST32_FMTd__;"d";__INT_LEAST32_FMTi__;"i";__UINT_LEAST32_TYPE__;unsigned int;__UINT_LEAST32_MAX__;4294967295U;__UINT_LEAST32_FMTo__;"o";__UINT_LEAST32_FMTu__;"u";__UINT_LEAST32_FMTx__;"x";__UINT_LEAST32_FMTX__;"X";__INT_LEAST64_TYPE__;long int;__INT_LEAST64_MAX__;9223372036854775807L;__INT_LEAST64_FMTd__;"ld";__INT_LEAST64_FMTi__;"li";__UINT_LEAST64_TYPE__;long unsigned int;__UINT_LEAST64_MAX__;18446744073709551615UL;__UINT_LEAST64_FMTo__;"lo";__UINT_LEAST64_FMTu__;"lu";__UINT_LEAST64_FMTx__;"lx";__UINT_LEAST64_FMTX__;"lX";__INT_FAST8_TYPE__;signed char;__INT_FAST8_MAX__;127;__INT_FAST8_FMTd__;"hhd";__INT_FAST8_FMTi__;"hhi";__UINT_FAST8_TYPE__;unsigned char;__UINT_FAST8_MAX__;255;__UINT_FAST8_FMTo__;"hho";__UINT_FAST8_FMTu__;"hhu";__UINT_FAST8_FMTx__;"hhx";__UINT_FAST8_FMTX__;"hhX";__INT_FAST16_TYPE__;short;__INT_FAST16_MAX__;32767;__INT_FAST16_FMTd__;"hd";__INT_FAST16_FMTi__;"hi";__UINT_FAST16_TYPE__;unsigned short;__UINT_FAST16_MAX__;65535;__UINT_FAST16_FMTo__;"ho";__UINT_FAST16_FMTu__;"hu";__UINT_FAST16_FMTx__;"hx";__UINT_FAST16_FMTX__;"hX";__INT_FAST32_TYPE__;int;__INT_FAST32_MAX__;2147483647;__INT_FAST32_FMTd__;"d";__INT_FAST32_FMTi__;"i";__UINT_FAST32_TYPE__;unsigned int;__UINT_FAST32_MAX__;4294967295U;__UINT_FAST32_FMTo__;"o";__UINT_FAST32_FMTu__;"u";__UINT_FAST32_FMTx__;"x";__UINT_FAST32_FMTX__;"X";__INT_FAST64_TYPE__;long int;__INT_FAST64_MAX__;9223372036854775807L;__INT_FAST64_FMTd__;"ld";__INT_FAST64_FMTi__;"li";__UINT_FAST64_TYPE__;long unsigned int;__UINT_FAST64_MAX__;18446744073709551615UL;__UINT_FAST64_FMTo__;"lo";__UINT_FAST64_FMTu__;"lu";__UINT_FAST64_FMTx__;"lx";__UINT_FAST64_FMTX__;"lX";__USER_LABEL_PREFIX__;_;__FINITE_MATH_ONLY__; ;__GNUC_STDC_INLINE__;1;__GCC_ATOMIC_TEST_AND_SET_TRUEVAL;1;__CLANG_ATOMIC_BOOL_LOCK_FREE;2;__CLANG_ATOMIC_CHAR_LOCK_FREE;2;__CLANG_ATOMIC_CHAR16_T_LOCK_FREE;2;__CLANG_ATOMIC_CHAR32_T_LOCK_FREE;2;__CLANG_ATOMIC_WCHAR_T_LOCK_FREE;2;__CLANG_ATOMIC_SHORT_LOCK_FREE;2;__CLANG_ATOMIC_INT_LOCK_FREE;2;__CLANG_ATOMIC_LONG_LOCK_FREE;2;__CLANG_ATOMIC_LLONG_LOCK_FREE;2;__CLANG_ATOMIC_POINTER_LOCK_FREE;2;__GCC_ATOMIC_BOOL_LOCK_FREE;2;__GCC_ATOMIC_CHAR_LOCK_FREE;2;__GCC_ATOMIC_CHAR16_T_LOCK_FREE;2;__GCC_ATOMIC_CHAR32_T_LOCK_FREE;2;__GCC_ATOMIC_WCHAR_T_LOCK_FREE;2;__GCC_ATOMIC_SHORT_LOCK_FREE;2;__GCC_ATOMIC_INT_LOCK_FREE;2;__GCC_ATOMIC_LONG_LOCK_FREE;2;__GCC_ATOMIC_LLONG_LOCK_FREE;2;__GCC_ATOMIC_POINTER_LOCK_FREE;2;__NO_INLINE__;1;__PIC__;2;__pic__;2;__FLT_EVAL_METHOD__; ;__FLT_RADIX__;2;__DECIMAL_DIG__;__LDBL_DECIMAL_DIG__;__SSP__;1;__nonnull;_Nonnull;__null_unspecified;_Null_unspecified;__nullable;_Nullable;__amd64__;1;__amd64;1;__x86_64;1;__x86_64__;1;__core2;1;__core2__;1;__tune_core2__;1;__REGISTER_PREFIX__; ;__NO_MATH_INLINES;1;__FXSR__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16;1;__SSE4_1__;1;__SSSE3__;1;__SSE3__;1;__SSE2__;1;__SSE2_MATH__;1;__SSE__;1;__SSE_MATH__;1;__MMX__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8;1;__APPLE_CC__;6000;__APPLE__;1;__STDC_NO_THREADS__;1;OBJC_NEW_PROPERTIES;1;__apple_build_version__;9020039;__weak;__attribute__((objc_gc(weak)));__strong; ;__unsafe_unretained; ;__DYNAMIC__;1;__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__;101300;__MACH__;1;__STDC__;1;__STDC_HOSTED__;1;__STDC_VERSION__;201112L;__STDC_UTF_16__;1;__STDC_UTF_32__;1 -//C compiler system include directories -CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS:INTERNAL=/usr/local/include;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/include;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include;/System/Library/Frameworks;/Library/Frameworks -//Name of generator. -CMAKE_GENERATOR:INTERNAL=Unix Makefiles -//Generator instance identifier. -CMAKE_GENERATOR_INSTANCE:INTERNAL= -//Name of generator platform. -CMAKE_GENERATOR_PLATFORM:INTERNAL= -//Name of generator toolset. -CMAKE_GENERATOR_TOOLSET:INTERNAL= -//Source directory with the top level CMakeLists.txt file for this -// project -CMAKE_HOME_DIRECTORY:INTERNAL=/Users/ejossev/working/steem -//ADVANCED property for variable: CMAKE_INSTALL_NAME_TOOL -CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_LINKER -CMAKE_LINKER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MAKE_PROGRAM -CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS -CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG -CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE -CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_NM -CMAKE_NM-ADVANCED:INTERNAL=1 -//number of local generators -CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=55 -//ADVANCED property for variable: CMAKE_OBJCOPY -CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_OBJDUMP -CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 -//Platform information initialized -CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_RANLIB -CMAKE_RANLIB-ADVANCED:INTERNAL=1 -//Path to CMake installation. -CMAKE_ROOT:INTERNAL=/usr/local/Cellar/cmake/3.11.0/share/cmake -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS -CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG -CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE -CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH -CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_RPATH -CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS -CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG -CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE -CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STRIP -CMAKE_STRIP-ADVANCED:INTERNAL=1 -//uname command -CMAKE_UNAME:INTERNAL=/usr/bin/uname -//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE -CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CURSES_CURSES_LIBRARY -CURSES_CURSES_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CURSES_FORM_LIBRARY -CURSES_FORM_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CURSES_INCLUDE_PATH -CURSES_INCLUDE_PATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CURSES_NCURSES_LIBRARY -CURSES_NCURSES_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: DOXYGEN_DOT_EXECUTABLE -DOXYGEN_DOT_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: DOXYGEN_EXECUTABLE -DOXYGEN_EXECUTABLE-ADVANCED:INTERNAL=1 -//Details about finding BZip2 -FIND_PACKAGE_MESSAGE_DETAILS_BZip2:INTERNAL=[/usr/local/opt/bzip2/lib/libbz2.a][/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include][v1.0.6()] -//Details about finding Curses -FIND_PACKAGE_MESSAGE_DETAILS_Curses:INTERNAL=[/usr/lib/libcurses.dylib][/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include][v()] -//Details about finding Doxygen -FIND_PACKAGE_MESSAGE_DETAILS_Doxygen:INTERNAL=[/usr/local/bin/doxygen][cfound components: doxygen dot ][v1.8.14()] -//Details about finding OpenSSL -FIND_PACKAGE_MESSAGE_DETAILS_OpenSSL:INTERNAL=[/usr/local/opt/openssl@1.0/lib/libcrypto.a][/usr/local/opt/openssl@1.0//include][v1.0.2o()] -//Details about finding Perl -FIND_PACKAGE_MESSAGE_DETAILS_Perl:INTERNAL=[/usr/bin/perl][v5.18.2()] -//Details about finding Readline -FIND_PACKAGE_MESSAGE_DETAILS_Readline:INTERNAL=[/usr/local/include][/usr/local/lib/libreadline.dylib][v()] -//Details about finding ZLIB -FIND_PACKAGE_MESSAGE_DETAILS_ZLIB:INTERNAL=[/usr/lib/libz.dylib][/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include][v1.2.11()] -//ADVANCED property for variable: GIT_EXECUTABLE -GIT_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: OPENSSL_CRYPTO_LIBRARY -OPENSSL_CRYPTO_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: OPENSSL_SSL_LIBRARY -OPENSSL_SSL_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: PERL_EXECUTABLE -PERL_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE -PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: ProcessorCount_cmd_sysctl -ProcessorCount_cmd_sysctl-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Readline_INCLUDE_DIR -Readline_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Readline_LIBRARY -Readline_LIBRARY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: Readline_ROOT_DIR -Readline_ROOT_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: ZLIB_INCLUDE_DIR -ZLIB_INCLUDE_DIR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: ZLIB_LIBRARY_DEBUG -ZLIB_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: ZLIB_LIBRARY_RELEASE -ZLIB_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 -//Last used BOOST_ROOT value. -_BOOST_ROOT_LAST:INTERNAL=/usr/local/opt/boost@1.60/ -//Components requested for this build tree. -_Boost_COMPONENTS_SEARCHED:INTERNAL=chrono;context;coroutine;date_time;filesystem;iostreams;locale;program_options;serialization;signals;system;thread;unit_test_framework -//Last used Boost_INCLUDE_DIR value. -_Boost_INCLUDE_DIR_LAST:INTERNAL=/usr/local/opt/boost@1.60/include -//Last used Boost_LIBRARY_DIR value. -_Boost_LIBRARY_DIR_LAST:INTERNAL=/usr/local/opt/boost@1.60/lib -//Last used Boost_USE_MULTITHREADED value. -_Boost_USE_MULTITHREADED_LAST:INTERNAL=TRUE -//Last used Boost_USE_STATIC_LIBS value. -_Boost_USE_STATIC_LIBS_LAST:INTERNAL=ON -_OPENSSL_CFLAGS:INTERNAL= -_OPENSSL_CFLAGS_I:INTERNAL= -_OPENSSL_CFLAGS_OTHER:INTERNAL= -_OPENSSL_FOUND:INTERNAL= -_OPENSSL_INCLUDEDIR:INTERNAL= -_OPENSSL_LIBDIR:INTERNAL= -_OPENSSL_LIBS:INTERNAL= -_OPENSSL_LIBS_L:INTERNAL= -_OPENSSL_LIBS_OTHER:INTERNAL= -_OPENSSL_LIBS_PATHS:INTERNAL= -_OPENSSL_PREFIX:INTERNAL= -_OPENSSL_STATIC_CFLAGS:INTERNAL= -_OPENSSL_STATIC_CFLAGS_I:INTERNAL= -_OPENSSL_STATIC_CFLAGS_OTHER:INTERNAL= -_OPENSSL_STATIC_LIBDIR:INTERNAL= -_OPENSSL_STATIC_LIBS:INTERNAL= -_OPENSSL_STATIC_LIBS_L:INTERNAL= -_OPENSSL_STATIC_LIBS_OTHER:INTERNAL= -_OPENSSL_STATIC_LIBS_PATHS:INTERNAL= -_OPENSSL_VERSION:INTERNAL= -_OPENSSL_openssl_INCLUDEDIR:INTERNAL= -_OPENSSL_openssl_LIBDIR:INTERNAL= -_OPENSSL_openssl_PREFIX:INTERNAL= -_OPENSSL_openssl_VERSION:INTERNAL= -__pkg_config_checked__OPENSSL:INTERNAL=1 - diff --git a/CMakeFiles/3.9.6/CMakeCCompiler.cmake b/CMakeFiles/3.9.6/CMakeCCompiler.cmake deleted file mode 100644 index cccb1405..00000000 --- a/CMakeFiles/3.9.6/CMakeCCompiler.cmake +++ /dev/null @@ -1,71 +0,0 @@ -set(CMAKE_C_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc") -set(CMAKE_C_COMPILER_ARG1 "") -set(CMAKE_C_COMPILER_ID "AppleClang") -set(CMAKE_C_COMPILER_VERSION "9.1.0.9020039") -set(CMAKE_C_COMPILER_WRAPPER "") -set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") -set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert") -set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") -set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") -set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") - -set(CMAKE_C_PLATFORM_ID "Darwin") -set(CMAKE_C_SIMULATE_ID "") -set(CMAKE_C_SIMULATE_VERSION "") - - -set(CMAKE_AR "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar") -set(CMAKE_C_COMPILER_AR "") -set(CMAKE_RANLIB "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib") -set(CMAKE_C_COMPILER_RANLIB "") -set(CMAKE_LINKER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld") -set(CMAKE_COMPILER_IS_GNUCC ) -set(CMAKE_C_COMPILER_LOADED 1) -set(CMAKE_C_COMPILER_WORKS TRUE) -set(CMAKE_C_ABI_COMPILED TRUE) -set(CMAKE_COMPILER_IS_MINGW ) -set(CMAKE_COMPILER_IS_CYGWIN ) -if(CMAKE_COMPILER_IS_CYGWIN) - set(CYGWIN 1) - set(UNIX 1) -endif() - -set(CMAKE_C_COMPILER_ENV_VAR "CC") - -if(CMAKE_COMPILER_IS_MINGW) - set(MINGW 1) -endif() -set(CMAKE_C_COMPILER_ID_RUN 1) -set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) -set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) -set(CMAKE_C_LINKER_PREFERENCE 10) - -# Save compiler ABI information. -set(CMAKE_C_SIZEOF_DATA_PTR "8") -set(CMAKE_C_COMPILER_ABI "") -set(CMAKE_C_LIBRARY_ARCHITECTURE "") - -if(CMAKE_C_SIZEOF_DATA_PTR) - set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") -endif() - -if(CMAKE_C_COMPILER_ABI) - set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") -endif() - -if(CMAKE_C_LIBRARY_ARCHITECTURE) - set(CMAKE_LIBRARY_ARCHITECTURE "") -endif() - -set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") -if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) - set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") -endif() - - - - - -set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") -set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib") -set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks") diff --git a/CMakeFiles/3.9.6/CMakeCXXCompiler.cmake b/CMakeFiles/3.9.6/CMakeCXXCompiler.cmake deleted file mode 100644 index 882b9faa..00000000 --- a/CMakeFiles/3.9.6/CMakeCXXCompiler.cmake +++ /dev/null @@ -1,73 +0,0 @@ -set(CMAKE_CXX_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++") -set(CMAKE_CXX_COMPILER_ARG1 "") -set(CMAKE_CXX_COMPILER_ID "AppleClang") -set(CMAKE_CXX_COMPILER_VERSION "9.1.0.9020039") -set(CMAKE_CXX_COMPILER_WRAPPER "") -set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "98") -set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17") -set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") -set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") -set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") -set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") - -set(CMAKE_CXX_PLATFORM_ID "Darwin") -set(CMAKE_CXX_SIMULATE_ID "") -set(CMAKE_CXX_SIMULATE_VERSION "") - - -set(CMAKE_AR "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar") -set(CMAKE_CXX_COMPILER_AR "") -set(CMAKE_RANLIB "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib") -set(CMAKE_CXX_COMPILER_RANLIB "") -set(CMAKE_LINKER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld") -set(CMAKE_COMPILER_IS_GNUCXX ) -set(CMAKE_CXX_COMPILER_LOADED 1) -set(CMAKE_CXX_COMPILER_WORKS TRUE) -set(CMAKE_CXX_ABI_COMPILED TRUE) -set(CMAKE_COMPILER_IS_MINGW ) -set(CMAKE_COMPILER_IS_CYGWIN ) -if(CMAKE_COMPILER_IS_CYGWIN) - set(CYGWIN 1) - set(UNIX 1) -endif() - -set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") - -if(CMAKE_COMPILER_IS_MINGW) - set(MINGW 1) -endif() -set(CMAKE_CXX_COMPILER_ID_RUN 1) -set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) -set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;mm;CPP) -set(CMAKE_CXX_LINKER_PREFERENCE 30) -set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) - -# Save compiler ABI information. -set(CMAKE_CXX_SIZEOF_DATA_PTR "8") -set(CMAKE_CXX_COMPILER_ABI "") -set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") - -if(CMAKE_CXX_SIZEOF_DATA_PTR) - set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") -endif() - -if(CMAKE_CXX_COMPILER_ABI) - set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") -endif() - -if(CMAKE_CXX_LIBRARY_ARCHITECTURE) - set(CMAKE_LIBRARY_ARCHITECTURE "") -endif() - -set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") -if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) - set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") -endif() - - - - - -set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++") -set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib") -set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks") diff --git a/CMakeFiles/3.9.6/CMakeDetermineCompilerABI_C.bin b/CMakeFiles/3.9.6/CMakeDetermineCompilerABI_C.bin deleted file mode 100755 index 66e26cde..00000000 Binary files a/CMakeFiles/3.9.6/CMakeDetermineCompilerABI_C.bin and /dev/null differ diff --git a/CMakeFiles/3.9.6/CMakeDetermineCompilerABI_CXX.bin b/CMakeFiles/3.9.6/CMakeDetermineCompilerABI_CXX.bin deleted file mode 100755 index 05c215fb..00000000 Binary files a/CMakeFiles/3.9.6/CMakeDetermineCompilerABI_CXX.bin and /dev/null differ diff --git a/CMakeFiles/3.9.6/CMakeSystem.cmake b/CMakeFiles/3.9.6/CMakeSystem.cmake deleted file mode 100644 index 4529152f..00000000 --- a/CMakeFiles/3.9.6/CMakeSystem.cmake +++ /dev/null @@ -1,15 +0,0 @@ -set(CMAKE_HOST_SYSTEM "Darwin-17.4.0") -set(CMAKE_HOST_SYSTEM_NAME "Darwin") -set(CMAKE_HOST_SYSTEM_VERSION "17.4.0") -set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") - - - -set(CMAKE_SYSTEM "Darwin-17.4.0") -set(CMAKE_SYSTEM_NAME "Darwin") -set(CMAKE_SYSTEM_VERSION "17.4.0") -set(CMAKE_SYSTEM_PROCESSOR "x86_64") - -set(CMAKE_CROSSCOMPILING "FALSE") - -set(CMAKE_SYSTEM_LOADED 1) diff --git a/CMakeFiles/3.9.6/CompilerIdC/CMakeCCompilerId.c b/CMakeFiles/3.9.6/CompilerIdC/CMakeCCompilerId.c deleted file mode 100644 index df91dafe..00000000 --- a/CMakeFiles/3.9.6/CompilerIdC/CMakeCCompilerId.c +++ /dev/null @@ -1,567 +0,0 @@ -#ifdef __cplusplus -# error "A C++ compiler has been selected for C." -#endif - -#if defined(__18CXX) -# define ID_VOID_MAIN -#endif -#if defined(__CLASSIC_C__) -/* cv-qualifiers did not exist in K&R C */ -# define const -# define volatile -#endif - - -/* Version number components: V=Version, R=Revision, P=Patch - Version date components: YYYY=Year, MM=Month, DD=Day */ - -#if defined(__INTEL_COMPILER) || defined(__ICC) -# define COMPILER_ID "Intel" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif - /* __INTEL_COMPILER = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) -# if defined(__INTEL_COMPILER_UPDATE) -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) -# else -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) -# endif -# if defined(__INTEL_COMPILER_BUILD_DATE) - /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ -# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) -# endif -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif - -#elif defined(__PATHCC__) -# define COMPILER_ID "PathScale" -# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) -# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) -# if defined(__PATHCC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) -# endif - -#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) -# define COMPILER_ID "Embarcadero" -# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) -# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) -# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) - -#elif defined(__BORLANDC__) -# define COMPILER_ID "Borland" - /* __BORLANDC__ = 0xVRR */ -# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) -# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) - -#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 -# define COMPILER_ID "Watcom" - /* __WATCOMC__ = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__WATCOMC__) -# define COMPILER_ID "OpenWatcom" - /* __WATCOMC__ = VVRP + 1100 */ -# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__SUNPRO_C) -# define COMPILER_ID "SunPro" -# if __SUNPRO_C >= 0x5100 - /* __SUNPRO_C = 0xVRRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) -# else - /* __SUNPRO_CC = 0xVRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) -# endif - -#elif defined(__HP_cc) -# define COMPILER_ID "HP" - /* __HP_cc = VVRRPP */ -# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) -# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) - -#elif defined(__DECC) -# define COMPILER_ID "Compaq" - /* __DECC_VER = VVRRTPPPP */ -# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) -# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) -# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) - -#elif defined(__IBMC__) && defined(__COMPILER_VER__) -# define COMPILER_ID "zOS" - /* __IBMC__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) - -#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 -# define COMPILER_ID "XL" - /* __IBMC__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) - -#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 -# define COMPILER_ID "VisualAge" - /* __IBMC__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) - -#elif defined(__PGI) -# define COMPILER_ID "PGI" -# define COMPILER_VERSION_MAJOR DEC(__PGIC__) -# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) -# if defined(__PGIC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) -# endif - -#elif defined(_CRAYC) -# define COMPILER_ID "Cray" -# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) -# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) - -#elif defined(__TI_COMPILER_VERSION__) -# define COMPILER_ID "TI" - /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ -# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) -# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) -# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) - -#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) -# define COMPILER_ID "Fujitsu" - -#elif defined(__TINYC__) -# define COMPILER_ID "TinyCC" - -#elif defined(__BCC__) -# define COMPILER_ID "Bruce" - -#elif defined(__SCO_VERSION__) -# define COMPILER_ID "SCO" - -#elif defined(__clang__) && defined(__apple_build_version__) -# define COMPILER_ID "AppleClang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) - -#elif defined(__clang__) -# define COMPILER_ID "Clang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif - -#elif defined(__GNUC__) -# define COMPILER_ID "GNU" -# define COMPILER_VERSION_MAJOR DEC(__GNUC__) -# if defined(__GNUC_MINOR__) -# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif defined(_MSC_VER) -# define COMPILER_ID "MSVC" - /* _MSC_VER = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) -# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) -# if defined(_MSC_FULL_VER) -# if _MSC_VER >= 1400 - /* _MSC_FULL_VER = VVRRPPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) -# else - /* _MSC_FULL_VER = VVRRPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) -# endif -# endif -# if defined(_MSC_BUILD) -# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) -# endif - -#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) -# define COMPILER_ID "ADSP" -#if defined(__VISUALDSPVERSION__) - /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ -# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) -# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) -#endif - -#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC) -# define COMPILER_ID "IAR" - -#elif defined(__ARMCC_VERSION) -# define COMPILER_ID "ARMCC" -#if __ARMCC_VERSION >= 1000000 - /* __ARMCC_VERSION = VRRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#else - /* __ARMCC_VERSION = VRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#endif - - -#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) -# define COMPILER_ID "SDCC" -# if defined(__SDCC_VERSION_MAJOR) -# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) -# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) -# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) -# else - /* SDCC = VRP */ -# define COMPILER_VERSION_MAJOR DEC(SDCC/100) -# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) -# define COMPILER_VERSION_PATCH DEC(SDCC % 10) -# endif - -#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) -# define COMPILER_ID "MIPSpro" -# if defined(_SGI_COMPILER_VERSION) - /* _SGI_COMPILER_VERSION = VRP */ -# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100) -# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10) -# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10) -# else - /* _COMPILER_VERSION = VRP */ -# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100) -# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10) -# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10) -# endif - - -/* These compilers are either not known or too old to define an - identification macro. Try to identify the platform and guess that - it is the native compiler. */ -#elif defined(__sgi) -# define COMPILER_ID "MIPSpro" - -#elif defined(__hpux) || defined(__hpua) -# define COMPILER_ID "HP" - -#else /* unknown compiler */ -# define COMPILER_ID "" -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; -#ifdef SIMULATE_ID -char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; -#endif - -#ifdef __QNXNTO__ -char const* qnxnto = "INFO" ":" "qnxnto[]"; -#endif - -#if defined(__CRAYXE) || defined(__CRAYXC) -char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; -#endif - -#define STRINGIFY_HELPER(X) #X -#define STRINGIFY(X) STRINGIFY_HELPER(X) - -/* Identify known platforms by name. */ -#if defined(__linux) || defined(__linux__) || defined(linux) -# define PLATFORM_ID "Linux" - -#elif defined(__CYGWIN__) -# define PLATFORM_ID "Cygwin" - -#elif defined(__MINGW32__) -# define PLATFORM_ID "MinGW" - -#elif defined(__APPLE__) -# define PLATFORM_ID "Darwin" - -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) -# define PLATFORM_ID "Windows" - -#elif defined(__FreeBSD__) || defined(__FreeBSD) -# define PLATFORM_ID "FreeBSD" - -#elif defined(__NetBSD__) || defined(__NetBSD) -# define PLATFORM_ID "NetBSD" - -#elif defined(__OpenBSD__) || defined(__OPENBSD) -# define PLATFORM_ID "OpenBSD" - -#elif defined(__sun) || defined(sun) -# define PLATFORM_ID "SunOS" - -#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) -# define PLATFORM_ID "AIX" - -#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) -# define PLATFORM_ID "IRIX" - -#elif defined(__hpux) || defined(__hpux__) -# define PLATFORM_ID "HP-UX" - -#elif defined(__HAIKU__) -# define PLATFORM_ID "Haiku" - -#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) -# define PLATFORM_ID "BeOS" - -#elif defined(__QNX__) || defined(__QNXNTO__) -# define PLATFORM_ID "QNX" - -#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) -# define PLATFORM_ID "Tru64" - -#elif defined(__riscos) || defined(__riscos__) -# define PLATFORM_ID "RISCos" - -#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) -# define PLATFORM_ID "SINIX" - -#elif defined(__UNIX_SV__) -# define PLATFORM_ID "UNIX_SV" - -#elif defined(__bsdos__) -# define PLATFORM_ID "BSDOS" - -#elif defined(_MPRAS) || defined(MPRAS) -# define PLATFORM_ID "MP-RAS" - -#elif defined(__osf) || defined(__osf__) -# define PLATFORM_ID "OSF1" - -#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) -# define PLATFORM_ID "SCO_SV" - -#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) -# define PLATFORM_ID "ULTRIX" - -#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) -# define PLATFORM_ID "Xenix" - -#elif defined(__WATCOMC__) -# if defined(__LINUX__) -# define PLATFORM_ID "Linux" - -# elif defined(__DOS__) -# define PLATFORM_ID "DOS" - -# elif defined(__OS2__) -# define PLATFORM_ID "OS2" - -# elif defined(__WINDOWS__) -# define PLATFORM_ID "Windows3x" - -# else /* unknown platform */ -# define PLATFORM_ID -# endif - -#else /* unknown platform */ -# define PLATFORM_ID - -#endif - -/* For windows compilers MSVC and Intel we can determine - the architecture of the compiler being used. This is because - the compilers do not have flags that can change the architecture, - but rather depend on which compiler is being used -*/ -#if defined(_WIN32) && defined(_MSC_VER) -# if defined(_M_IA64) -# define ARCHITECTURE_ID "IA64" - -# elif defined(_M_X64) || defined(_M_AMD64) -# define ARCHITECTURE_ID "x64" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# elif defined(_M_ARM) -# if _M_ARM == 4 -# define ARCHITECTURE_ID "ARMV4I" -# elif _M_ARM == 5 -# define ARCHITECTURE_ID "ARMV5I" -# else -# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) -# endif - -# elif defined(_M_MIPS) -# define ARCHITECTURE_ID "MIPS" - -# elif defined(_M_SH) -# define ARCHITECTURE_ID "SHx" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__WATCOMC__) -# if defined(_M_I86) -# define ARCHITECTURE_ID "I86" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#else -# define ARCHITECTURE_ID -#endif - -/* Convert integer to decimal digit literals. */ -#define DEC(n) \ - ('0' + (((n) / 10000000)%10)), \ - ('0' + (((n) / 1000000)%10)), \ - ('0' + (((n) / 100000)%10)), \ - ('0' + (((n) / 10000)%10)), \ - ('0' + (((n) / 1000)%10)), \ - ('0' + (((n) / 100)%10)), \ - ('0' + (((n) / 10)%10)), \ - ('0' + ((n) % 10)) - -/* Convert integer to hex digit literals. */ -#define HEX(n) \ - ('0' + ((n)>>28 & 0xF)), \ - ('0' + ((n)>>24 & 0xF)), \ - ('0' + ((n)>>20 & 0xF)), \ - ('0' + ((n)>>16 & 0xF)), \ - ('0' + ((n)>>12 & 0xF)), \ - ('0' + ((n)>>8 & 0xF)), \ - ('0' + ((n)>>4 & 0xF)), \ - ('0' + ((n) & 0xF)) - -/* Construct a string literal encoding the version number components. */ -#ifdef COMPILER_VERSION_MAJOR -char const info_version[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', - COMPILER_VERSION_MAJOR, -# ifdef COMPILER_VERSION_MINOR - '.', COMPILER_VERSION_MINOR, -# ifdef COMPILER_VERSION_PATCH - '.', COMPILER_VERSION_PATCH, -# ifdef COMPILER_VERSION_TWEAK - '.', COMPILER_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct a string literal encoding the version number components. */ -#ifdef SIMULATE_VERSION_MAJOR -char const info_simulate_version[] = { - 'I', 'N', 'F', 'O', ':', - 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', - SIMULATE_VERSION_MAJOR, -# ifdef SIMULATE_VERSION_MINOR - '.', SIMULATE_VERSION_MINOR, -# ifdef SIMULATE_VERSION_PATCH - '.', SIMULATE_VERSION_PATCH, -# ifdef SIMULATE_VERSION_TWEAK - '.', SIMULATE_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; -char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; - - - - -#if !defined(__STDC__) -# if defined(_MSC_VER) && !defined(__clang__) -# define C_DIALECT "90" -# else -# define C_DIALECT -# endif -#elif __STDC_VERSION__ >= 201000L -# define C_DIALECT "11" -#elif __STDC_VERSION__ >= 199901L -# define C_DIALECT "99" -#else -# define C_DIALECT "90" -#endif -const char* info_language_dialect_default = - "INFO" ":" "dialect_default[" C_DIALECT "]"; - -/*--------------------------------------------------------------------------*/ - -#ifdef ID_VOID_MAIN -void main() {} -#else -# if defined(__CLASSIC_C__) -int main(argc, argv) int argc; char *argv[]; -# else -int main(int argc, char* argv[]) -# endif -{ - int require = 0; - require += info_compiler[argc]; - require += info_platform[argc]; - require += info_arch[argc]; -#ifdef COMPILER_VERSION_MAJOR - require += info_version[argc]; -#endif -#ifdef SIMULATE_ID - require += info_simulate[argc]; -#endif -#ifdef SIMULATE_VERSION_MAJOR - require += info_simulate_version[argc]; -#endif -#if defined(__CRAYXE) || defined(__CRAYXC) - require += info_cray[argc]; -#endif - require += info_language_dialect_default[argc]; - (void)argv; - return require; -} -#endif diff --git a/CMakeFiles/3.9.6/CompilerIdC/a.out b/CMakeFiles/3.9.6/CompilerIdC/a.out deleted file mode 100755 index a55aea5e..00000000 Binary files a/CMakeFiles/3.9.6/CompilerIdC/a.out and /dev/null differ diff --git a/CMakeFiles/3.9.6/CompilerIdCXX/CMakeCXXCompilerId.cpp b/CMakeFiles/3.9.6/CompilerIdCXX/CMakeCXXCompilerId.cpp deleted file mode 100644 index e7037e50..00000000 --- a/CMakeFiles/3.9.6/CompilerIdCXX/CMakeCXXCompilerId.cpp +++ /dev/null @@ -1,539 +0,0 @@ -/* This source file must have a .cpp extension so that all C++ compilers - recognize the extension without flags. Borland does not know .cxx for - example. */ -#ifndef __cplusplus -# error "A C compiler has been selected for C++." -#endif - - -/* Version number components: V=Version, R=Revision, P=Patch - Version date components: YYYY=Year, MM=Month, DD=Day */ - -#if defined(__COMO__) -# define COMPILER_ID "Comeau" - /* __COMO_VERSION__ = VRR */ -# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) -# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) - -#elif defined(__INTEL_COMPILER) || defined(__ICC) -# define COMPILER_ID "Intel" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif - /* __INTEL_COMPILER = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) -# if defined(__INTEL_COMPILER_UPDATE) -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) -# else -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) -# endif -# if defined(__INTEL_COMPILER_BUILD_DATE) - /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ -# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) -# endif -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif - -#elif defined(__PATHCC__) -# define COMPILER_ID "PathScale" -# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) -# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) -# if defined(__PATHCC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) -# endif - -#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) -# define COMPILER_ID "Embarcadero" -# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) -# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) -# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) - -#elif defined(__BORLANDC__) -# define COMPILER_ID "Borland" - /* __BORLANDC__ = 0xVRR */ -# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) -# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) - -#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 -# define COMPILER_ID "Watcom" - /* __WATCOMC__ = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__WATCOMC__) -# define COMPILER_ID "OpenWatcom" - /* __WATCOMC__ = VVRP + 1100 */ -# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__SUNPRO_CC) -# define COMPILER_ID "SunPro" -# if __SUNPRO_CC >= 0x5100 - /* __SUNPRO_CC = 0xVRRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) -# else - /* __SUNPRO_CC = 0xVRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) -# endif - -#elif defined(__HP_aCC) -# define COMPILER_ID "HP" - /* __HP_aCC = VVRRPP */ -# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) -# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) - -#elif defined(__DECCXX) -# define COMPILER_ID "Compaq" - /* __DECCXX_VER = VVRRTPPPP */ -# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) -# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) -# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) - -#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) -# define COMPILER_ID "zOS" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 -# define COMPILER_ID "XL" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 -# define COMPILER_ID "VisualAge" - /* __IBMCPP__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) - -#elif defined(__PGI) -# define COMPILER_ID "PGI" -# define COMPILER_VERSION_MAJOR DEC(__PGIC__) -# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) -# if defined(__PGIC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) -# endif - -#elif defined(_CRAYC) -# define COMPILER_ID "Cray" -# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) -# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) - -#elif defined(__TI_COMPILER_VERSION__) -# define COMPILER_ID "TI" - /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ -# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) -# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) -# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) - -#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) -# define COMPILER_ID "Fujitsu" - -#elif defined(__SCO_VERSION__) -# define COMPILER_ID "SCO" - -#elif defined(__clang__) && defined(__apple_build_version__) -# define COMPILER_ID "AppleClang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) - -#elif defined(__clang__) -# define COMPILER_ID "Clang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif - -#elif defined(__GNUC__) || defined(__GNUG__) -# define COMPILER_ID "GNU" -# if defined(__GNUC__) -# define COMPILER_VERSION_MAJOR DEC(__GNUC__) -# else -# define COMPILER_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif defined(_MSC_VER) -# define COMPILER_ID "MSVC" - /* _MSC_VER = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) -# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) -# if defined(_MSC_FULL_VER) -# if _MSC_VER >= 1400 - /* _MSC_FULL_VER = VVRRPPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) -# else - /* _MSC_FULL_VER = VVRRPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) -# endif -# endif -# if defined(_MSC_BUILD) -# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) -# endif - -#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) -# define COMPILER_ID "ADSP" -#if defined(__VISUALDSPVERSION__) - /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ -# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) -# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) -#endif - -#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC) -# define COMPILER_ID "IAR" - -#elif defined(__ARMCC_VERSION) -# define COMPILER_ID "ARMCC" -#if __ARMCC_VERSION >= 1000000 - /* __ARMCC_VERSION = VRRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#else - /* __ARMCC_VERSION = VRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#endif - - -#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) -# define COMPILER_ID "MIPSpro" -# if defined(_SGI_COMPILER_VERSION) - /* _SGI_COMPILER_VERSION = VRP */ -# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100) -# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10) -# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10) -# else - /* _COMPILER_VERSION = VRP */ -# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100) -# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10) -# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10) -# endif - - -/* These compilers are either not known or too old to define an - identification macro. Try to identify the platform and guess that - it is the native compiler. */ -#elif defined(__sgi) -# define COMPILER_ID "MIPSpro" - -#elif defined(__hpux) || defined(__hpua) -# define COMPILER_ID "HP" - -#else /* unknown compiler */ -# define COMPILER_ID "" -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; -#ifdef SIMULATE_ID -char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; -#endif - -#ifdef __QNXNTO__ -char const* qnxnto = "INFO" ":" "qnxnto[]"; -#endif - -#if defined(__CRAYXE) || defined(__CRAYXC) -char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; -#endif - -#define STRINGIFY_HELPER(X) #X -#define STRINGIFY(X) STRINGIFY_HELPER(X) - -/* Identify known platforms by name. */ -#if defined(__linux) || defined(__linux__) || defined(linux) -# define PLATFORM_ID "Linux" - -#elif defined(__CYGWIN__) -# define PLATFORM_ID "Cygwin" - -#elif defined(__MINGW32__) -# define PLATFORM_ID "MinGW" - -#elif defined(__APPLE__) -# define PLATFORM_ID "Darwin" - -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) -# define PLATFORM_ID "Windows" - -#elif defined(__FreeBSD__) || defined(__FreeBSD) -# define PLATFORM_ID "FreeBSD" - -#elif defined(__NetBSD__) || defined(__NetBSD) -# define PLATFORM_ID "NetBSD" - -#elif defined(__OpenBSD__) || defined(__OPENBSD) -# define PLATFORM_ID "OpenBSD" - -#elif defined(__sun) || defined(sun) -# define PLATFORM_ID "SunOS" - -#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) -# define PLATFORM_ID "AIX" - -#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) -# define PLATFORM_ID "IRIX" - -#elif defined(__hpux) || defined(__hpux__) -# define PLATFORM_ID "HP-UX" - -#elif defined(__HAIKU__) -# define PLATFORM_ID "Haiku" - -#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) -# define PLATFORM_ID "BeOS" - -#elif defined(__QNX__) || defined(__QNXNTO__) -# define PLATFORM_ID "QNX" - -#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) -# define PLATFORM_ID "Tru64" - -#elif defined(__riscos) || defined(__riscos__) -# define PLATFORM_ID "RISCos" - -#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) -# define PLATFORM_ID "SINIX" - -#elif defined(__UNIX_SV__) -# define PLATFORM_ID "UNIX_SV" - -#elif defined(__bsdos__) -# define PLATFORM_ID "BSDOS" - -#elif defined(_MPRAS) || defined(MPRAS) -# define PLATFORM_ID "MP-RAS" - -#elif defined(__osf) || defined(__osf__) -# define PLATFORM_ID "OSF1" - -#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) -# define PLATFORM_ID "SCO_SV" - -#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) -# define PLATFORM_ID "ULTRIX" - -#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) -# define PLATFORM_ID "Xenix" - -#elif defined(__WATCOMC__) -# if defined(__LINUX__) -# define PLATFORM_ID "Linux" - -# elif defined(__DOS__) -# define PLATFORM_ID "DOS" - -# elif defined(__OS2__) -# define PLATFORM_ID "OS2" - -# elif defined(__WINDOWS__) -# define PLATFORM_ID "Windows3x" - -# else /* unknown platform */ -# define PLATFORM_ID -# endif - -#else /* unknown platform */ -# define PLATFORM_ID - -#endif - -/* For windows compilers MSVC and Intel we can determine - the architecture of the compiler being used. This is because - the compilers do not have flags that can change the architecture, - but rather depend on which compiler is being used -*/ -#if defined(_WIN32) && defined(_MSC_VER) -# if defined(_M_IA64) -# define ARCHITECTURE_ID "IA64" - -# elif defined(_M_X64) || defined(_M_AMD64) -# define ARCHITECTURE_ID "x64" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# elif defined(_M_ARM) -# if _M_ARM == 4 -# define ARCHITECTURE_ID "ARMV4I" -# elif _M_ARM == 5 -# define ARCHITECTURE_ID "ARMV5I" -# else -# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) -# endif - -# elif defined(_M_MIPS) -# define ARCHITECTURE_ID "MIPS" - -# elif defined(_M_SH) -# define ARCHITECTURE_ID "SHx" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__WATCOMC__) -# if defined(_M_I86) -# define ARCHITECTURE_ID "I86" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#else -# define ARCHITECTURE_ID -#endif - -/* Convert integer to decimal digit literals. */ -#define DEC(n) \ - ('0' + (((n) / 10000000)%10)), \ - ('0' + (((n) / 1000000)%10)), \ - ('0' + (((n) / 100000)%10)), \ - ('0' + (((n) / 10000)%10)), \ - ('0' + (((n) / 1000)%10)), \ - ('0' + (((n) / 100)%10)), \ - ('0' + (((n) / 10)%10)), \ - ('0' + ((n) % 10)) - -/* Convert integer to hex digit literals. */ -#define HEX(n) \ - ('0' + ((n)>>28 & 0xF)), \ - ('0' + ((n)>>24 & 0xF)), \ - ('0' + ((n)>>20 & 0xF)), \ - ('0' + ((n)>>16 & 0xF)), \ - ('0' + ((n)>>12 & 0xF)), \ - ('0' + ((n)>>8 & 0xF)), \ - ('0' + ((n)>>4 & 0xF)), \ - ('0' + ((n) & 0xF)) - -/* Construct a string literal encoding the version number components. */ -#ifdef COMPILER_VERSION_MAJOR -char const info_version[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', - COMPILER_VERSION_MAJOR, -# ifdef COMPILER_VERSION_MINOR - '.', COMPILER_VERSION_MINOR, -# ifdef COMPILER_VERSION_PATCH - '.', COMPILER_VERSION_PATCH, -# ifdef COMPILER_VERSION_TWEAK - '.', COMPILER_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct a string literal encoding the version number components. */ -#ifdef SIMULATE_VERSION_MAJOR -char const info_simulate_version[] = { - 'I', 'N', 'F', 'O', ':', - 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', - SIMULATE_VERSION_MAJOR, -# ifdef SIMULATE_VERSION_MINOR - '.', SIMULATE_VERSION_MINOR, -# ifdef SIMULATE_VERSION_PATCH - '.', SIMULATE_VERSION_PATCH, -# ifdef SIMULATE_VERSION_TWEAK - '.', SIMULATE_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; -char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; - - - - -const char* info_language_dialect_default = "INFO" ":" "dialect_default[" -#if __cplusplus > 201402L - "17" -#elif __cplusplus >= 201402L - "14" -#elif __cplusplus >= 201103L - "11" -#else - "98" -#endif -"]"; - -/*--------------------------------------------------------------------------*/ - -int main(int argc, char* argv[]) -{ - int require = 0; - require += info_compiler[argc]; - require += info_platform[argc]; -#ifdef COMPILER_VERSION_MAJOR - require += info_version[argc]; -#endif -#ifdef SIMULATE_ID - require += info_simulate[argc]; -#endif -#ifdef SIMULATE_VERSION_MAJOR - require += info_simulate_version[argc]; -#endif -#if defined(__CRAYXE) || defined(__CRAYXC) - require += info_cray[argc]; -#endif - require += info_language_dialect_default[argc]; - (void)argv; - return require; -} diff --git a/CMakeFiles/3.9.6/CompilerIdCXX/a.out b/CMakeFiles/3.9.6/CompilerIdCXX/a.out deleted file mode 100755 index 83c6fa79..00000000 Binary files a/CMakeFiles/3.9.6/CompilerIdCXX/a.out and /dev/null differ diff --git a/CMakeFiles/CMakeOutput.log b/CMakeFiles/CMakeOutput.log deleted file mode 100644 index f868703c..00000000 --- a/CMakeFiles/CMakeOutput.log +++ /dev/null @@ -1,1082 +0,0 @@ -The system is: Darwin - 17.4.0 - x86_64 -Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. -Compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -Build flags: -Id flags: - -The output was: -0 - - -Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" - -The C compiler identification is AppleClang, found in "/Users/ejossev/working/steem/CMakeFiles/3.9.6/CompilerIdC/a.out" - -Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. -Compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -Build flags: -Id flags: - -The output was: -0 - - -Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" - -The CXX compiler identification is AppleClang, found in "/Users/ejossev/working/steem/CMakeFiles/3.9.6/CompilerIdCXX/a.out" - -Determining if the C compiler works passed with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_b0a9a/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_b0a9a.dir/build.make CMakeFiles/cmTC_b0a9a.dir/build -Building C object CMakeFiles/cmTC_b0a9a.dir/testCCompiler.c.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o CMakeFiles/cmTC_b0a9a.dir/testCCompiler.c.o -c /Users/ejossev/working/steem/CMakeFiles/CMakeTmp/testCCompiler.c -Linking C executable cmTC_b0a9a -/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b0a9a.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_b0a9a.dir/testCCompiler.c.o -o cmTC_b0a9a - - -Detecting C compiler ABI info compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_b5f64/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_b5f64.dir/build.make CMakeFiles/cmTC_b5f64.dir/build -Building C object CMakeFiles/cmTC_b5f64.dir/CMakeCCompilerABI.c.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o CMakeFiles/cmTC_b5f64.dir/CMakeCCompilerABI.c.o -c /Applications/CLion.app/Contents/bin/cmake/share/cmake-3.9/Modules/CMakeCCompilerABI.c -Linking C executable cmTC_b5f64 -/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b5f64.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_b5f64.dir/CMakeCCompilerABI.c.o -o cmTC_b5f64 -Apple LLVM version 9.1.0 (clang-902.0.39.1) -Target: x86_64-apple-darwin17.4.0 -Thread model: posix -InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin - "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.13.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o cmTC_b5f64 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_b5f64.dir/CMakeCCompilerABI.c.o -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a -@(#)PROGRAM:ld PROJECT:ld64-351.8 -configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em (tvOS) -Library search paths: - /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib -Framework search paths: - /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/ - - -Parsed C implicit link information from above output: - link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] - ignore line: [Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp] - ignore line: [] - ignore line: [Run Build Command:"/usr/bin/make" "cmTC_b5f64/fast"] - ignore line: [/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_b5f64.dir/build.make CMakeFiles/cmTC_b5f64.dir/build] - ignore line: [Building C object CMakeFiles/cmTC_b5f64.dir/CMakeCCompilerABI.c.o] - ignore line: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o CMakeFiles/cmTC_b5f64.dir/CMakeCCompilerABI.c.o -c /Applications/CLion.app/Contents/bin/cmake/share/cmake-3.9/Modules/CMakeCCompilerABI.c] - ignore line: [Linking C executable cmTC_b5f64] - ignore line: [/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b5f64.dir/link.txt --verbose=1] - ignore line: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_b5f64.dir/CMakeCCompilerABI.c.o -o cmTC_b5f64 ] - ignore line: [Apple LLVM version 9.1.0 (clang-902.0.39.1)] - ignore line: [Target: x86_64-apple-darwin17.4.0] - ignore line: [Thread model: posix] - ignore line: [InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin] - link line: [ "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.13.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o cmTC_b5f64 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_b5f64.dir/CMakeCCompilerABI.c.o -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] - arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld] ==> ignore - arg [-demangle] ==> ignore - arg [-lto_library] ==> ignore, skip following value - arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib] ==> skip value of -lto_library - arg [-dynamic] ==> ignore - arg [-arch] ==> ignore - arg [x86_64] ==> ignore - arg [-macosx_version_min] ==> ignore - arg [10.13.0] ==> ignore - arg [-syslibroot] ==> ignore - arg [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk] ==> ignore - arg [-o] ==> ignore - arg [cmTC_b5f64] ==> ignore - arg [-search_paths_first] ==> ignore - arg [-headerpad_max_install_names] ==> ignore - arg [-v] ==> ignore - arg [CMakeFiles/cmTC_b5f64.dir/CMakeCCompilerABI.c.o] ==> ignore - arg [-lSystem] ==> lib [System] - arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] ==> lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] - Library search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] - Framework search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/] - remove lib [System] - remove lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] - collapse library dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] - collapse framework dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks] - implicit libs: [] - implicit dirs: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] - implicit fwks: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks] - - - - -Detecting C [-std=c11] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_9bd73/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_9bd73.dir/build.make CMakeFiles/cmTC_9bd73.dir/build -Building C object CMakeFiles/cmTC_9bd73.dir/feature_tests.c.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c11 -o CMakeFiles/cmTC_9bd73.dir/feature_tests.c.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.c -Linking C executable cmTC_9bd73 -/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_9bd73.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_9bd73.dir/feature_tests.c.o -o cmTC_9bd73 - - - Feature record: C_FEATURE:1c_function_prototypes - Feature record: C_FEATURE:1c_restrict - Feature record: C_FEATURE:1c_static_assert - Feature record: C_FEATURE:1c_variadic_macros - - -Detecting C [-std=c99] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_5e386/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_5e386.dir/build.make CMakeFiles/cmTC_5e386.dir/build -Building C object CMakeFiles/cmTC_5e386.dir/feature_tests.c.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c99 -o CMakeFiles/cmTC_5e386.dir/feature_tests.c.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.c -Linking C executable cmTC_5e386 -/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_5e386.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_5e386.dir/feature_tests.c.o -o cmTC_5e386 - - - Feature record: C_FEATURE:1c_function_prototypes - Feature record: C_FEATURE:1c_restrict - Feature record: C_FEATURE:0c_static_assert - Feature record: C_FEATURE:1c_variadic_macros - - -Detecting C [-std=c90] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_67aa3/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_67aa3.dir/build.make CMakeFiles/cmTC_67aa3.dir/build -Building C object CMakeFiles/cmTC_67aa3.dir/feature_tests.c.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c90 -o CMakeFiles/cmTC_67aa3.dir/feature_tests.c.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.c -Linking C executable cmTC_67aa3 -/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_67aa3.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_67aa3.dir/feature_tests.c.o -o cmTC_67aa3 - - - Feature record: C_FEATURE:1c_function_prototypes - Feature record: C_FEATURE:0c_restrict - Feature record: C_FEATURE:0c_static_assert - Feature record: C_FEATURE:0c_variadic_macros -Determining if the CXX compiler works passed with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_08120/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_08120.dir/build.make CMakeFiles/cmTC_08120.dir/build -Building CXX object CMakeFiles/cmTC_08120.dir/testCXXCompiler.cxx.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o CMakeFiles/cmTC_08120.dir/testCXXCompiler.cxx.o -c /Users/ejossev/working/steem/CMakeFiles/CMakeTmp/testCXXCompiler.cxx -Linking CXX executable cmTC_08120 -/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_08120.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_08120.dir/testCXXCompiler.cxx.o -o cmTC_08120 - - -Detecting CXX compiler ABI info compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_64f42/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_64f42.dir/build.make CMakeFiles/cmTC_64f42.dir/build -Building CXX object CMakeFiles/cmTC_64f42.dir/CMakeCXXCompilerABI.cpp.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o CMakeFiles/cmTC_64f42.dir/CMakeCXXCompilerABI.cpp.o -c /Applications/CLion.app/Contents/bin/cmake/share/cmake-3.9/Modules/CMakeCXXCompilerABI.cpp -Linking CXX executable cmTC_64f42 -/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_64f42.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_64f42.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_64f42 -Apple LLVM version 9.1.0 (clang-902.0.39.1) -Target: x86_64-apple-darwin17.4.0 -Thread model: posix -InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin - "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.13.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o cmTC_64f42 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_64f42.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a -@(#)PROGRAM:ld PROJECT:ld64-351.8 -configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em (tvOS) -Library search paths: - /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib -Framework search paths: - /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/ - - -Parsed CXX implicit link information from above output: - link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] - ignore line: [Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp] - ignore line: [] - ignore line: [Run Build Command:"/usr/bin/make" "cmTC_64f42/fast"] - ignore line: [/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_64f42.dir/build.make CMakeFiles/cmTC_64f42.dir/build] - ignore line: [Building CXX object CMakeFiles/cmTC_64f42.dir/CMakeCXXCompilerABI.cpp.o] - ignore line: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o CMakeFiles/cmTC_64f42.dir/CMakeCXXCompilerABI.cpp.o -c /Applications/CLion.app/Contents/bin/cmake/share/cmake-3.9/Modules/CMakeCXXCompilerABI.cpp] - ignore line: [Linking CXX executable cmTC_64f42] - ignore line: [/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_64f42.dir/link.txt --verbose=1] - ignore line: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_64f42.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_64f42 ] - ignore line: [Apple LLVM version 9.1.0 (clang-902.0.39.1)] - ignore line: [Target: x86_64-apple-darwin17.4.0] - ignore line: [Thread model: posix] - ignore line: [InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin] - link line: [ "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.13.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o cmTC_64f42 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_64f42.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] - arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld] ==> ignore - arg [-demangle] ==> ignore - arg [-lto_library] ==> ignore, skip following value - arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib] ==> skip value of -lto_library - arg [-dynamic] ==> ignore - arg [-arch] ==> ignore - arg [x86_64] ==> ignore - arg [-macosx_version_min] ==> ignore - arg [10.13.0] ==> ignore - arg [-syslibroot] ==> ignore - arg [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk] ==> ignore - arg [-o] ==> ignore - arg [cmTC_64f42] ==> ignore - arg [-search_paths_first] ==> ignore - arg [-headerpad_max_install_names] ==> ignore - arg [-v] ==> ignore - arg [CMakeFiles/cmTC_64f42.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore - arg [-lc++] ==> lib [c++] - arg [-lSystem] ==> lib [System] - arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] ==> lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] - Library search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] - Framework search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/] - remove lib [System] - remove lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] - collapse library dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] - collapse framework dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks] - implicit libs: [c++] - implicit dirs: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] - implicit fwks: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks] - - - - -Detecting CXX [-std=c++1z] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_86490/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_86490.dir/build.make CMakeFiles/cmTC_86490.dir/build -Building CXX object CMakeFiles/cmTC_86490.dir/feature_tests.cxx.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c++1z -o CMakeFiles/cmTC_86490.dir/feature_tests.cxx.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.cxx -Linking CXX executable cmTC_86490 -/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_86490.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_86490.dir/feature_tests.cxx.o -o cmTC_86490 - - - Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers - Feature record: CXX_FEATURE:1cxx_alias_templates - Feature record: CXX_FEATURE:1cxx_alignas - Feature record: CXX_FEATURE:1cxx_alignof - Feature record: CXX_FEATURE:1cxx_attributes - Feature record: CXX_FEATURE:1cxx_attribute_deprecated - Feature record: CXX_FEATURE:1cxx_auto_type - Feature record: CXX_FEATURE:1cxx_binary_literals - Feature record: CXX_FEATURE:1cxx_constexpr - Feature record: CXX_FEATURE:1cxx_contextual_conversions - Feature record: CXX_FEATURE:1cxx_decltype - Feature record: CXX_FEATURE:1cxx_decltype_auto - Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types - Feature record: CXX_FEATURE:1cxx_default_function_template_args - Feature record: CXX_FEATURE:1cxx_defaulted_functions - Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers - Feature record: CXX_FEATURE:1cxx_delegating_constructors - Feature record: CXX_FEATURE:1cxx_deleted_functions - Feature record: CXX_FEATURE:1cxx_digit_separators - Feature record: CXX_FEATURE:1cxx_enum_forward_declarations - Feature record: CXX_FEATURE:1cxx_explicit_conversions - Feature record: CXX_FEATURE:1cxx_extended_friend_declarations - Feature record: CXX_FEATURE:1cxx_extern_templates - Feature record: CXX_FEATURE:1cxx_final - Feature record: CXX_FEATURE:1cxx_func_identifier - Feature record: CXX_FEATURE:1cxx_generalized_initializers - Feature record: CXX_FEATURE:1cxx_generic_lambdas - Feature record: CXX_FEATURE:1cxx_inheriting_constructors - Feature record: CXX_FEATURE:1cxx_inline_namespaces - Feature record: CXX_FEATURE:1cxx_lambdas - Feature record: CXX_FEATURE:1cxx_lambda_init_captures - Feature record: CXX_FEATURE:1cxx_local_type_template_args - Feature record: CXX_FEATURE:1cxx_long_long_type - Feature record: CXX_FEATURE:1cxx_noexcept - Feature record: CXX_FEATURE:1cxx_nonstatic_member_init - Feature record: CXX_FEATURE:1cxx_nullptr - Feature record: CXX_FEATURE:1cxx_override - Feature record: CXX_FEATURE:1cxx_range_for - Feature record: CXX_FEATURE:1cxx_raw_string_literals - Feature record: CXX_FEATURE:1cxx_reference_qualified_functions - Feature record: CXX_FEATURE:1cxx_relaxed_constexpr - Feature record: CXX_FEATURE:1cxx_return_type_deduction - Feature record: CXX_FEATURE:1cxx_right_angle_brackets - Feature record: CXX_FEATURE:1cxx_rvalue_references - Feature record: CXX_FEATURE:1cxx_sizeof_member - Feature record: CXX_FEATURE:1cxx_static_assert - Feature record: CXX_FEATURE:1cxx_strong_enums - Feature record: CXX_FEATURE:1cxx_template_template_parameters - Feature record: CXX_FEATURE:1cxx_thread_local - Feature record: CXX_FEATURE:1cxx_trailing_return_types - Feature record: CXX_FEATURE:1cxx_unicode_literals - Feature record: CXX_FEATURE:1cxx_uniform_initialization - Feature record: CXX_FEATURE:1cxx_unrestricted_unions - Feature record: CXX_FEATURE:1cxx_user_literals - Feature record: CXX_FEATURE:1cxx_variable_templates - Feature record: CXX_FEATURE:1cxx_variadic_macros - Feature record: CXX_FEATURE:1cxx_variadic_templates - - -Detecting CXX [-std=c++14] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_18fb1/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_18fb1.dir/build.make CMakeFiles/cmTC_18fb1.dir/build -Building CXX object CMakeFiles/cmTC_18fb1.dir/feature_tests.cxx.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c++14 -o CMakeFiles/cmTC_18fb1.dir/feature_tests.cxx.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.cxx -Linking CXX executable cmTC_18fb1 -/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_18fb1.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_18fb1.dir/feature_tests.cxx.o -o cmTC_18fb1 - - - Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers - Feature record: CXX_FEATURE:1cxx_alias_templates - Feature record: CXX_FEATURE:1cxx_alignas - Feature record: CXX_FEATURE:1cxx_alignof - Feature record: CXX_FEATURE:1cxx_attributes - Feature record: CXX_FEATURE:1cxx_attribute_deprecated - Feature record: CXX_FEATURE:1cxx_auto_type - Feature record: CXX_FEATURE:1cxx_binary_literals - Feature record: CXX_FEATURE:1cxx_constexpr - Feature record: CXX_FEATURE:1cxx_contextual_conversions - Feature record: CXX_FEATURE:1cxx_decltype - Feature record: CXX_FEATURE:1cxx_decltype_auto - Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types - Feature record: CXX_FEATURE:1cxx_default_function_template_args - Feature record: CXX_FEATURE:1cxx_defaulted_functions - Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers - Feature record: CXX_FEATURE:1cxx_delegating_constructors - Feature record: CXX_FEATURE:1cxx_deleted_functions - Feature record: CXX_FEATURE:1cxx_digit_separators - Feature record: CXX_FEATURE:1cxx_enum_forward_declarations - Feature record: CXX_FEATURE:1cxx_explicit_conversions - Feature record: CXX_FEATURE:1cxx_extended_friend_declarations - Feature record: CXX_FEATURE:1cxx_extern_templates - Feature record: CXX_FEATURE:1cxx_final - Feature record: CXX_FEATURE:1cxx_func_identifier - Feature record: CXX_FEATURE:1cxx_generalized_initializers - Feature record: CXX_FEATURE:1cxx_generic_lambdas - Feature record: CXX_FEATURE:1cxx_inheriting_constructors - Feature record: CXX_FEATURE:1cxx_inline_namespaces - Feature record: CXX_FEATURE:1cxx_lambdas - Feature record: CXX_FEATURE:1cxx_lambda_init_captures - Feature record: CXX_FEATURE:1cxx_local_type_template_args - Feature record: CXX_FEATURE:1cxx_long_long_type - Feature record: CXX_FEATURE:1cxx_noexcept - Feature record: CXX_FEATURE:1cxx_nonstatic_member_init - Feature record: CXX_FEATURE:1cxx_nullptr - Feature record: CXX_FEATURE:1cxx_override - Feature record: CXX_FEATURE:1cxx_range_for - Feature record: CXX_FEATURE:1cxx_raw_string_literals - Feature record: CXX_FEATURE:1cxx_reference_qualified_functions - Feature record: CXX_FEATURE:1cxx_relaxed_constexpr - Feature record: CXX_FEATURE:1cxx_return_type_deduction - Feature record: CXX_FEATURE:1cxx_right_angle_brackets - Feature record: CXX_FEATURE:1cxx_rvalue_references - Feature record: CXX_FEATURE:1cxx_sizeof_member - Feature record: CXX_FEATURE:1cxx_static_assert - Feature record: CXX_FEATURE:1cxx_strong_enums - Feature record: CXX_FEATURE:1cxx_template_template_parameters - Feature record: CXX_FEATURE:1cxx_thread_local - Feature record: CXX_FEATURE:1cxx_trailing_return_types - Feature record: CXX_FEATURE:1cxx_unicode_literals - Feature record: CXX_FEATURE:1cxx_uniform_initialization - Feature record: CXX_FEATURE:1cxx_unrestricted_unions - Feature record: CXX_FEATURE:1cxx_user_literals - Feature record: CXX_FEATURE:1cxx_variable_templates - Feature record: CXX_FEATURE:1cxx_variadic_macros - Feature record: CXX_FEATURE:1cxx_variadic_templates - - -Detecting CXX [-std=c++11] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_7f917/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_7f917.dir/build.make CMakeFiles/cmTC_7f917.dir/build -Building CXX object CMakeFiles/cmTC_7f917.dir/feature_tests.cxx.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c++11 -o CMakeFiles/cmTC_7f917.dir/feature_tests.cxx.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.cxx -Linking CXX executable cmTC_7f917 -/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_7f917.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_7f917.dir/feature_tests.cxx.o -o cmTC_7f917 - - - Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers - Feature record: CXX_FEATURE:1cxx_alias_templates - Feature record: CXX_FEATURE:1cxx_alignas - Feature record: CXX_FEATURE:1cxx_alignof - Feature record: CXX_FEATURE:1cxx_attributes - Feature record: CXX_FEATURE:0cxx_attribute_deprecated - Feature record: CXX_FEATURE:1cxx_auto_type - Feature record: CXX_FEATURE:0cxx_binary_literals - Feature record: CXX_FEATURE:1cxx_constexpr - Feature record: CXX_FEATURE:0cxx_contextual_conversions - Feature record: CXX_FEATURE:1cxx_decltype - Feature record: CXX_FEATURE:0cxx_decltype_auto - Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types - Feature record: CXX_FEATURE:1cxx_default_function_template_args - Feature record: CXX_FEATURE:1cxx_defaulted_functions - Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers - Feature record: CXX_FEATURE:1cxx_delegating_constructors - Feature record: CXX_FEATURE:1cxx_deleted_functions - Feature record: CXX_FEATURE:0cxx_digit_separators - Feature record: CXX_FEATURE:1cxx_enum_forward_declarations - Feature record: CXX_FEATURE:1cxx_explicit_conversions - Feature record: CXX_FEATURE:1cxx_extended_friend_declarations - Feature record: CXX_FEATURE:1cxx_extern_templates - Feature record: CXX_FEATURE:1cxx_final - Feature record: CXX_FEATURE:1cxx_func_identifier - Feature record: CXX_FEATURE:1cxx_generalized_initializers - Feature record: CXX_FEATURE:0cxx_generic_lambdas - Feature record: CXX_FEATURE:1cxx_inheriting_constructors - Feature record: CXX_FEATURE:1cxx_inline_namespaces - Feature record: CXX_FEATURE:1cxx_lambdas - Feature record: CXX_FEATURE:0cxx_lambda_init_captures - Feature record: CXX_FEATURE:1cxx_local_type_template_args - Feature record: CXX_FEATURE:1cxx_long_long_type - Feature record: CXX_FEATURE:1cxx_noexcept - Feature record: CXX_FEATURE:1cxx_nonstatic_member_init - Feature record: CXX_FEATURE:1cxx_nullptr - Feature record: CXX_FEATURE:1cxx_override - Feature record: CXX_FEATURE:1cxx_range_for - Feature record: CXX_FEATURE:1cxx_raw_string_literals - Feature record: CXX_FEATURE:1cxx_reference_qualified_functions - Feature record: CXX_FEATURE:0cxx_relaxed_constexpr - Feature record: CXX_FEATURE:0cxx_return_type_deduction - Feature record: CXX_FEATURE:1cxx_right_angle_brackets - Feature record: CXX_FEATURE:1cxx_rvalue_references - Feature record: CXX_FEATURE:1cxx_sizeof_member - Feature record: CXX_FEATURE:1cxx_static_assert - Feature record: CXX_FEATURE:1cxx_strong_enums - Feature record: CXX_FEATURE:1cxx_template_template_parameters - Feature record: CXX_FEATURE:1cxx_thread_local - Feature record: CXX_FEATURE:1cxx_trailing_return_types - Feature record: CXX_FEATURE:1cxx_unicode_literals - Feature record: CXX_FEATURE:1cxx_uniform_initialization - Feature record: CXX_FEATURE:1cxx_unrestricted_unions - Feature record: CXX_FEATURE:1cxx_user_literals - Feature record: CXX_FEATURE:0cxx_variable_templates - Feature record: CXX_FEATURE:1cxx_variadic_macros - Feature record: CXX_FEATURE:1cxx_variadic_templates - - -Detecting CXX [-std=c++98] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_3a176/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_3a176.dir/build.make CMakeFiles/cmTC_3a176.dir/build -Building CXX object CMakeFiles/cmTC_3a176.dir/feature_tests.cxx.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c++98 -o CMakeFiles/cmTC_3a176.dir/feature_tests.cxx.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.cxx -Linking CXX executable cmTC_3a176 -/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3a176.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_3a176.dir/feature_tests.cxx.o -o cmTC_3a176 - - - Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers - Feature record: CXX_FEATURE:0cxx_alias_templates - Feature record: CXX_FEATURE:0cxx_alignas - Feature record: CXX_FEATURE:0cxx_alignof - Feature record: CXX_FEATURE:0cxx_attributes - Feature record: CXX_FEATURE:0cxx_attribute_deprecated - Feature record: CXX_FEATURE:0cxx_auto_type - Feature record: CXX_FEATURE:0cxx_binary_literals - Feature record: CXX_FEATURE:0cxx_constexpr - Feature record: CXX_FEATURE:0cxx_contextual_conversions - Feature record: CXX_FEATURE:0cxx_decltype - Feature record: CXX_FEATURE:0cxx_decltype_auto - Feature record: CXX_FEATURE:0cxx_decltype_incomplete_return_types - Feature record: CXX_FEATURE:0cxx_default_function_template_args - Feature record: CXX_FEATURE:0cxx_defaulted_functions - Feature record: CXX_FEATURE:0cxx_defaulted_move_initializers - Feature record: CXX_FEATURE:0cxx_delegating_constructors - Feature record: CXX_FEATURE:0cxx_deleted_functions - Feature record: CXX_FEATURE:0cxx_digit_separators - Feature record: CXX_FEATURE:0cxx_enum_forward_declarations - Feature record: CXX_FEATURE:0cxx_explicit_conversions - Feature record: CXX_FEATURE:0cxx_extended_friend_declarations - Feature record: CXX_FEATURE:0cxx_extern_templates - Feature record: CXX_FEATURE:0cxx_final - Feature record: CXX_FEATURE:0cxx_func_identifier - Feature record: CXX_FEATURE:0cxx_generalized_initializers - Feature record: CXX_FEATURE:0cxx_generic_lambdas - Feature record: CXX_FEATURE:0cxx_inheriting_constructors - Feature record: CXX_FEATURE:0cxx_inline_namespaces - Feature record: CXX_FEATURE:0cxx_lambdas - Feature record: CXX_FEATURE:0cxx_lambda_init_captures - Feature record: CXX_FEATURE:0cxx_local_type_template_args - Feature record: CXX_FEATURE:0cxx_long_long_type - Feature record: CXX_FEATURE:0cxx_noexcept - Feature record: CXX_FEATURE:0cxx_nonstatic_member_init - Feature record: CXX_FEATURE:0cxx_nullptr - Feature record: CXX_FEATURE:0cxx_override - Feature record: CXX_FEATURE:0cxx_range_for - Feature record: CXX_FEATURE:0cxx_raw_string_literals - Feature record: CXX_FEATURE:0cxx_reference_qualified_functions - Feature record: CXX_FEATURE:0cxx_relaxed_constexpr - Feature record: CXX_FEATURE:0cxx_return_type_deduction - Feature record: CXX_FEATURE:0cxx_right_angle_brackets - Feature record: CXX_FEATURE:0cxx_rvalue_references - Feature record: CXX_FEATURE:0cxx_sizeof_member - Feature record: CXX_FEATURE:0cxx_static_assert - Feature record: CXX_FEATURE:0cxx_strong_enums - Feature record: CXX_FEATURE:1cxx_template_template_parameters - Feature record: CXX_FEATURE:0cxx_thread_local - Feature record: CXX_FEATURE:0cxx_trailing_return_types - Feature record: CXX_FEATURE:0cxx_unicode_literals - Feature record: CXX_FEATURE:0cxx_uniform_initialization - Feature record: CXX_FEATURE:0cxx_unrestricted_unions - Feature record: CXX_FEATURE:0cxx_user_literals - Feature record: CXX_FEATURE:0cxx_variable_templates - Feature record: CXX_FEATURE:0cxx_variadic_macros - Feature record: CXX_FEATURE:0cxx_variadic_templates -Determining if the BZ2_bzCompressInit exist passed with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_4565e/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_4565e.dir/build.make CMakeFiles/cmTC_4565e.dir/build -Building C object CMakeFiles/cmTC_4565e.dir/CheckSymbolExists.c.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -DCHAINBASE_CHECK_LOCKING -DCLEAR_VOTES -fno-strict-aliasing -Werror -DBOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY -std=c99 -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o CMakeFiles/cmTC_4565e.dir/CheckSymbolExists.c.o -c /Users/ejossev/working/steem/CMakeFiles/CMakeTmp/CheckSymbolExists.c -Linking C executable cmTC_4565e -/Applications/CLion.app/Contents/bin/cmake/bin/cmake -E cmake_link_script CMakeFiles/cmTC_4565e.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -DCHAINBASE_CHECK_LOCKING -DCLEAR_VOTES -fno-strict-aliasing -Werror -DBOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY -std=c99 -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_4565e.dir/CheckSymbolExists.c.o -o cmTC_4565e /usr/local/opt/bzip2/lib/libbz2.a - -File /Users/ejossev/working/steem/CMakeFiles/CMakeTmp/CheckSymbolExists.c: -/* */ -#include - -int main(int argc, char** argv) -{ - (void)argv; -#ifndef BZ2_bzCompressInit - return ((int*)(&BZ2_bzCompressInit))[argc]; -#else - (void)argc; - return 0; -#endif -} - -The system is: Darwin - 17.4.0 - x86_64 -Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. -Compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -Build flags: -Id flags: - -The output was: -0 - - -Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" - -The C compiler identification is AppleClang, found in "/Users/ejossev/working/steem/CMakeFiles/3.11.0/CompilerIdC/a.out" - -Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. -Compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -Build flags: -Id flags: - -The output was: -0 - - -Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" - -The CXX compiler identification is AppleClang, found in "/Users/ejossev/working/steem/CMakeFiles/3.11.0/CompilerIdCXX/a.out" - -Determining if the C compiler works passed with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_f43f1/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_f43f1.dir/build.make CMakeFiles/cmTC_f43f1.dir/build -Building C object CMakeFiles/cmTC_f43f1.dir/testCCompiler.c.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o CMakeFiles/cmTC_f43f1.dir/testCCompiler.c.o -c /Users/ejossev/working/steem/CMakeFiles/CMakeTmp/testCCompiler.c -Linking C executable cmTC_f43f1 -/usr/local/Cellar/cmake/3.11.0/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f43f1.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_f43f1.dir/testCCompiler.c.o -o cmTC_f43f1 - - -Detecting C compiler ABI info compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_b3814/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_b3814.dir/build.make CMakeFiles/cmTC_b3814.dir/build -Building C object CMakeFiles/cmTC_b3814.dir/CMakeCCompilerABI.c.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o CMakeFiles/cmTC_b3814.dir/CMakeCCompilerABI.c.o -c /usr/local/Cellar/cmake/3.11.0/share/cmake/Modules/CMakeCCompilerABI.c -Linking C executable cmTC_b3814 -/usr/local/Cellar/cmake/3.11.0/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b3814.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_b3814.dir/CMakeCCompilerABI.c.o -o cmTC_b3814 -Apple LLVM version 9.1.0 (clang-902.0.39.1) -Target: x86_64-apple-darwin17.4.0 -Thread model: posix -InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin - "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.13.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o cmTC_b3814 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_b3814.dir/CMakeCCompilerABI.c.o -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a -@(#)PROGRAM:ld PROJECT:ld64-351.8 -configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em (tvOS) -Library search paths: - /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib -Framework search paths: - /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/ - - -Parsed C implicit link information from above output: - link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] - ignore line: [Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp] - ignore line: [] - ignore line: [Run Build Command:"/usr/bin/make" "cmTC_b3814/fast"] - ignore line: [/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_b3814.dir/build.make CMakeFiles/cmTC_b3814.dir/build] - ignore line: [Building C object CMakeFiles/cmTC_b3814.dir/CMakeCCompilerABI.c.o] - ignore line: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o CMakeFiles/cmTC_b3814.dir/CMakeCCompilerABI.c.o -c /usr/local/Cellar/cmake/3.11.0/share/cmake/Modules/CMakeCCompilerABI.c] - ignore line: [Linking C executable cmTC_b3814] - ignore line: [/usr/local/Cellar/cmake/3.11.0/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b3814.dir/link.txt --verbose=1] - ignore line: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_b3814.dir/CMakeCCompilerABI.c.o -o cmTC_b3814 ] - ignore line: [Apple LLVM version 9.1.0 (clang-902.0.39.1)] - ignore line: [Target: x86_64-apple-darwin17.4.0] - ignore line: [Thread model: posix] - ignore line: [InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin] - link line: [ "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.13.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o cmTC_b3814 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_b3814.dir/CMakeCCompilerABI.c.o -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] - arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld] ==> ignore - arg [-demangle] ==> ignore - arg [-lto_library] ==> ignore, skip following value - arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib] ==> skip value of -lto_library - arg [-dynamic] ==> ignore - arg [-arch] ==> ignore - arg [x86_64] ==> ignore - arg [-macosx_version_min] ==> ignore - arg [10.13.0] ==> ignore - arg [-syslibroot] ==> ignore - arg [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk] ==> ignore - arg [-o] ==> ignore - arg [cmTC_b3814] ==> ignore - arg [-search_paths_first] ==> ignore - arg [-headerpad_max_install_names] ==> ignore - arg [-v] ==> ignore - arg [CMakeFiles/cmTC_b3814.dir/CMakeCCompilerABI.c.o] ==> ignore - arg [-lSystem] ==> lib [System] - arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] ==> lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] - Library search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] - Framework search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/] - remove lib [System] - remove lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] - collapse library dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] - collapse framework dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks] - implicit libs: [] - implicit dirs: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] - implicit fwks: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks] - - - - -Detecting C [-std=c11] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_bcbc4/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_bcbc4.dir/build.make CMakeFiles/cmTC_bcbc4.dir/build -Building C object CMakeFiles/cmTC_bcbc4.dir/feature_tests.c.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c11 -o CMakeFiles/cmTC_bcbc4.dir/feature_tests.c.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.c -Linking C executable cmTC_bcbc4 -/usr/local/Cellar/cmake/3.11.0/bin/cmake -E cmake_link_script CMakeFiles/cmTC_bcbc4.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_bcbc4.dir/feature_tests.c.o -o cmTC_bcbc4 - - - Feature record: C_FEATURE:1c_function_prototypes - Feature record: C_FEATURE:1c_restrict - Feature record: C_FEATURE:1c_static_assert - Feature record: C_FEATURE:1c_variadic_macros - - -Detecting C [-std=c99] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_6e668/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_6e668.dir/build.make CMakeFiles/cmTC_6e668.dir/build -Building C object CMakeFiles/cmTC_6e668.dir/feature_tests.c.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c99 -o CMakeFiles/cmTC_6e668.dir/feature_tests.c.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.c -Linking C executable cmTC_6e668 -/usr/local/Cellar/cmake/3.11.0/bin/cmake -E cmake_link_script CMakeFiles/cmTC_6e668.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_6e668.dir/feature_tests.c.o -o cmTC_6e668 - - - Feature record: C_FEATURE:1c_function_prototypes - Feature record: C_FEATURE:1c_restrict - Feature record: C_FEATURE:0c_static_assert - Feature record: C_FEATURE:1c_variadic_macros - - -Detecting C [-std=c90] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_bac7a/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_bac7a.dir/build.make CMakeFiles/cmTC_bac7a.dir/build -Building C object CMakeFiles/cmTC_bac7a.dir/feature_tests.c.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c90 -o CMakeFiles/cmTC_bac7a.dir/feature_tests.c.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.c -Linking C executable cmTC_bac7a -/usr/local/Cellar/cmake/3.11.0/bin/cmake -E cmake_link_script CMakeFiles/cmTC_bac7a.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_bac7a.dir/feature_tests.c.o -o cmTC_bac7a - - - Feature record: C_FEATURE:1c_function_prototypes - Feature record: C_FEATURE:0c_restrict - Feature record: C_FEATURE:0c_static_assert - Feature record: C_FEATURE:0c_variadic_macros -Determining if the CXX compiler works passed with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_ee77a/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_ee77a.dir/build.make CMakeFiles/cmTC_ee77a.dir/build -Building CXX object CMakeFiles/cmTC_ee77a.dir/testCXXCompiler.cxx.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o CMakeFiles/cmTC_ee77a.dir/testCXXCompiler.cxx.o -c /Users/ejossev/working/steem/CMakeFiles/CMakeTmp/testCXXCompiler.cxx -Linking CXX executable cmTC_ee77a -/usr/local/Cellar/cmake/3.11.0/bin/cmake -E cmake_link_script CMakeFiles/cmTC_ee77a.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_ee77a.dir/testCXXCompiler.cxx.o -o cmTC_ee77a - - -Detecting CXX compiler ABI info compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_6ce18/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_6ce18.dir/build.make CMakeFiles/cmTC_6ce18.dir/build -Building CXX object CMakeFiles/cmTC_6ce18.dir/CMakeCXXCompilerABI.cpp.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o CMakeFiles/cmTC_6ce18.dir/CMakeCXXCompilerABI.cpp.o -c /usr/local/Cellar/cmake/3.11.0/share/cmake/Modules/CMakeCXXCompilerABI.cpp -Linking CXX executable cmTC_6ce18 -/usr/local/Cellar/cmake/3.11.0/bin/cmake -E cmake_link_script CMakeFiles/cmTC_6ce18.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_6ce18.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_6ce18 -Apple LLVM version 9.1.0 (clang-902.0.39.1) -Target: x86_64-apple-darwin17.4.0 -Thread model: posix -InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin - "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.13.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o cmTC_6ce18 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_6ce18.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a -@(#)PROGRAM:ld PROJECT:ld64-351.8 -configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em (tvOS) -Library search paths: - /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib -Framework search paths: - /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/ - - -Parsed CXX implicit link information from above output: - link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] - ignore line: [Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp] - ignore line: [] - ignore line: [Run Build Command:"/usr/bin/make" "cmTC_6ce18/fast"] - ignore line: [/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_6ce18.dir/build.make CMakeFiles/cmTC_6ce18.dir/build] - ignore line: [Building CXX object CMakeFiles/cmTC_6ce18.dir/CMakeCXXCompilerABI.cpp.o] - ignore line: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o CMakeFiles/cmTC_6ce18.dir/CMakeCXXCompilerABI.cpp.o -c /usr/local/Cellar/cmake/3.11.0/share/cmake/Modules/CMakeCXXCompilerABI.cpp] - ignore line: [Linking CXX executable cmTC_6ce18] - ignore line: [/usr/local/Cellar/cmake/3.11.0/bin/cmake -E cmake_link_script CMakeFiles/cmTC_6ce18.dir/link.txt --verbose=1] - ignore line: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_6ce18.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_6ce18 ] - ignore line: [Apple LLVM version 9.1.0 (clang-902.0.39.1)] - ignore line: [Target: x86_64-apple-darwin17.4.0] - ignore line: [Thread model: posix] - ignore line: [InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin] - link line: [ "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.13.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -o cmTC_6ce18 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_6ce18.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] - arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld] ==> ignore - arg [-demangle] ==> ignore - arg [-lto_library] ==> ignore, skip following value - arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib] ==> skip value of -lto_library - arg [-dynamic] ==> ignore - arg [-arch] ==> ignore - arg [x86_64] ==> ignore - arg [-macosx_version_min] ==> ignore - arg [10.13.0] ==> ignore - arg [-syslibroot] ==> ignore - arg [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk] ==> ignore - arg [-o] ==> ignore - arg [cmTC_6ce18] ==> ignore - arg [-search_paths_first] ==> ignore - arg [-headerpad_max_install_names] ==> ignore - arg [-v] ==> ignore - arg [CMakeFiles/cmTC_6ce18.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore - arg [-lc++] ==> lib [c++] - arg [-lSystem] ==> lib [System] - arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] ==> lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] - Library search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] - Framework search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/] - remove lib [System] - remove lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a] - collapse library dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] - collapse framework dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks] - implicit libs: [c++] - implicit dirs: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib] - implicit fwks: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks] - - - - -Detecting CXX [-std=c++1z] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_d0ad0/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_d0ad0.dir/build.make CMakeFiles/cmTC_d0ad0.dir/build -Building CXX object CMakeFiles/cmTC_d0ad0.dir/feature_tests.cxx.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c++1z -o CMakeFiles/cmTC_d0ad0.dir/feature_tests.cxx.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.cxx -Linking CXX executable cmTC_d0ad0 -/usr/local/Cellar/cmake/3.11.0/bin/cmake -E cmake_link_script CMakeFiles/cmTC_d0ad0.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_d0ad0.dir/feature_tests.cxx.o -o cmTC_d0ad0 - - - Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers - Feature record: CXX_FEATURE:1cxx_alias_templates - Feature record: CXX_FEATURE:1cxx_alignas - Feature record: CXX_FEATURE:1cxx_alignof - Feature record: CXX_FEATURE:1cxx_attributes - Feature record: CXX_FEATURE:1cxx_attribute_deprecated - Feature record: CXX_FEATURE:1cxx_auto_type - Feature record: CXX_FEATURE:1cxx_binary_literals - Feature record: CXX_FEATURE:1cxx_constexpr - Feature record: CXX_FEATURE:1cxx_contextual_conversions - Feature record: CXX_FEATURE:1cxx_decltype - Feature record: CXX_FEATURE:1cxx_decltype_auto - Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types - Feature record: CXX_FEATURE:1cxx_default_function_template_args - Feature record: CXX_FEATURE:1cxx_defaulted_functions - Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers - Feature record: CXX_FEATURE:1cxx_delegating_constructors - Feature record: CXX_FEATURE:1cxx_deleted_functions - Feature record: CXX_FEATURE:1cxx_digit_separators - Feature record: CXX_FEATURE:1cxx_enum_forward_declarations - Feature record: CXX_FEATURE:1cxx_explicit_conversions - Feature record: CXX_FEATURE:1cxx_extended_friend_declarations - Feature record: CXX_FEATURE:1cxx_extern_templates - Feature record: CXX_FEATURE:1cxx_final - Feature record: CXX_FEATURE:1cxx_func_identifier - Feature record: CXX_FEATURE:1cxx_generalized_initializers - Feature record: CXX_FEATURE:1cxx_generic_lambdas - Feature record: CXX_FEATURE:1cxx_inheriting_constructors - Feature record: CXX_FEATURE:1cxx_inline_namespaces - Feature record: CXX_FEATURE:1cxx_lambdas - Feature record: CXX_FEATURE:1cxx_lambda_init_captures - Feature record: CXX_FEATURE:1cxx_local_type_template_args - Feature record: CXX_FEATURE:1cxx_long_long_type - Feature record: CXX_FEATURE:1cxx_noexcept - Feature record: CXX_FEATURE:1cxx_nonstatic_member_init - Feature record: CXX_FEATURE:1cxx_nullptr - Feature record: CXX_FEATURE:1cxx_override - Feature record: CXX_FEATURE:1cxx_range_for - Feature record: CXX_FEATURE:1cxx_raw_string_literals - Feature record: CXX_FEATURE:1cxx_reference_qualified_functions - Feature record: CXX_FEATURE:1cxx_relaxed_constexpr - Feature record: CXX_FEATURE:1cxx_return_type_deduction - Feature record: CXX_FEATURE:1cxx_right_angle_brackets - Feature record: CXX_FEATURE:1cxx_rvalue_references - Feature record: CXX_FEATURE:1cxx_sizeof_member - Feature record: CXX_FEATURE:1cxx_static_assert - Feature record: CXX_FEATURE:1cxx_strong_enums - Feature record: CXX_FEATURE:1cxx_template_template_parameters - Feature record: CXX_FEATURE:1cxx_thread_local - Feature record: CXX_FEATURE:1cxx_trailing_return_types - Feature record: CXX_FEATURE:1cxx_unicode_literals - Feature record: CXX_FEATURE:1cxx_uniform_initialization - Feature record: CXX_FEATURE:1cxx_unrestricted_unions - Feature record: CXX_FEATURE:1cxx_user_literals - Feature record: CXX_FEATURE:1cxx_variable_templates - Feature record: CXX_FEATURE:1cxx_variadic_macros - Feature record: CXX_FEATURE:1cxx_variadic_templates - - -Detecting CXX [-std=c++14] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_55d60/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_55d60.dir/build.make CMakeFiles/cmTC_55d60.dir/build -Building CXX object CMakeFiles/cmTC_55d60.dir/feature_tests.cxx.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c++14 -o CMakeFiles/cmTC_55d60.dir/feature_tests.cxx.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.cxx -Linking CXX executable cmTC_55d60 -/usr/local/Cellar/cmake/3.11.0/bin/cmake -E cmake_link_script CMakeFiles/cmTC_55d60.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_55d60.dir/feature_tests.cxx.o -o cmTC_55d60 - - - Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers - Feature record: CXX_FEATURE:1cxx_alias_templates - Feature record: CXX_FEATURE:1cxx_alignas - Feature record: CXX_FEATURE:1cxx_alignof - Feature record: CXX_FEATURE:1cxx_attributes - Feature record: CXX_FEATURE:1cxx_attribute_deprecated - Feature record: CXX_FEATURE:1cxx_auto_type - Feature record: CXX_FEATURE:1cxx_binary_literals - Feature record: CXX_FEATURE:1cxx_constexpr - Feature record: CXX_FEATURE:1cxx_contextual_conversions - Feature record: CXX_FEATURE:1cxx_decltype - Feature record: CXX_FEATURE:1cxx_decltype_auto - Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types - Feature record: CXX_FEATURE:1cxx_default_function_template_args - Feature record: CXX_FEATURE:1cxx_defaulted_functions - Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers - Feature record: CXX_FEATURE:1cxx_delegating_constructors - Feature record: CXX_FEATURE:1cxx_deleted_functions - Feature record: CXX_FEATURE:1cxx_digit_separators - Feature record: CXX_FEATURE:1cxx_enum_forward_declarations - Feature record: CXX_FEATURE:1cxx_explicit_conversions - Feature record: CXX_FEATURE:1cxx_extended_friend_declarations - Feature record: CXX_FEATURE:1cxx_extern_templates - Feature record: CXX_FEATURE:1cxx_final - Feature record: CXX_FEATURE:1cxx_func_identifier - Feature record: CXX_FEATURE:1cxx_generalized_initializers - Feature record: CXX_FEATURE:1cxx_generic_lambdas - Feature record: CXX_FEATURE:1cxx_inheriting_constructors - Feature record: CXX_FEATURE:1cxx_inline_namespaces - Feature record: CXX_FEATURE:1cxx_lambdas - Feature record: CXX_FEATURE:1cxx_lambda_init_captures - Feature record: CXX_FEATURE:1cxx_local_type_template_args - Feature record: CXX_FEATURE:1cxx_long_long_type - Feature record: CXX_FEATURE:1cxx_noexcept - Feature record: CXX_FEATURE:1cxx_nonstatic_member_init - Feature record: CXX_FEATURE:1cxx_nullptr - Feature record: CXX_FEATURE:1cxx_override - Feature record: CXX_FEATURE:1cxx_range_for - Feature record: CXX_FEATURE:1cxx_raw_string_literals - Feature record: CXX_FEATURE:1cxx_reference_qualified_functions - Feature record: CXX_FEATURE:1cxx_relaxed_constexpr - Feature record: CXX_FEATURE:1cxx_return_type_deduction - Feature record: CXX_FEATURE:1cxx_right_angle_brackets - Feature record: CXX_FEATURE:1cxx_rvalue_references - Feature record: CXX_FEATURE:1cxx_sizeof_member - Feature record: CXX_FEATURE:1cxx_static_assert - Feature record: CXX_FEATURE:1cxx_strong_enums - Feature record: CXX_FEATURE:1cxx_template_template_parameters - Feature record: CXX_FEATURE:1cxx_thread_local - Feature record: CXX_FEATURE:1cxx_trailing_return_types - Feature record: CXX_FEATURE:1cxx_unicode_literals - Feature record: CXX_FEATURE:1cxx_uniform_initialization - Feature record: CXX_FEATURE:1cxx_unrestricted_unions - Feature record: CXX_FEATURE:1cxx_user_literals - Feature record: CXX_FEATURE:1cxx_variable_templates - Feature record: CXX_FEATURE:1cxx_variadic_macros - Feature record: CXX_FEATURE:1cxx_variadic_templates - - -Detecting CXX [-std=c++11] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_a5b15/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_a5b15.dir/build.make CMakeFiles/cmTC_a5b15.dir/build -Building CXX object CMakeFiles/cmTC_a5b15.dir/feature_tests.cxx.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c++11 -o CMakeFiles/cmTC_a5b15.dir/feature_tests.cxx.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.cxx -Linking CXX executable cmTC_a5b15 -/usr/local/Cellar/cmake/3.11.0/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a5b15.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_a5b15.dir/feature_tests.cxx.o -o cmTC_a5b15 - - - Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers - Feature record: CXX_FEATURE:1cxx_alias_templates - Feature record: CXX_FEATURE:1cxx_alignas - Feature record: CXX_FEATURE:1cxx_alignof - Feature record: CXX_FEATURE:1cxx_attributes - Feature record: CXX_FEATURE:0cxx_attribute_deprecated - Feature record: CXX_FEATURE:1cxx_auto_type - Feature record: CXX_FEATURE:0cxx_binary_literals - Feature record: CXX_FEATURE:1cxx_constexpr - Feature record: CXX_FEATURE:0cxx_contextual_conversions - Feature record: CXX_FEATURE:1cxx_decltype - Feature record: CXX_FEATURE:0cxx_decltype_auto - Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types - Feature record: CXX_FEATURE:1cxx_default_function_template_args - Feature record: CXX_FEATURE:1cxx_defaulted_functions - Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers - Feature record: CXX_FEATURE:1cxx_delegating_constructors - Feature record: CXX_FEATURE:1cxx_deleted_functions - Feature record: CXX_FEATURE:0cxx_digit_separators - Feature record: CXX_FEATURE:1cxx_enum_forward_declarations - Feature record: CXX_FEATURE:1cxx_explicit_conversions - Feature record: CXX_FEATURE:1cxx_extended_friend_declarations - Feature record: CXX_FEATURE:1cxx_extern_templates - Feature record: CXX_FEATURE:1cxx_final - Feature record: CXX_FEATURE:1cxx_func_identifier - Feature record: CXX_FEATURE:1cxx_generalized_initializers - Feature record: CXX_FEATURE:0cxx_generic_lambdas - Feature record: CXX_FEATURE:1cxx_inheriting_constructors - Feature record: CXX_FEATURE:1cxx_inline_namespaces - Feature record: CXX_FEATURE:1cxx_lambdas - Feature record: CXX_FEATURE:0cxx_lambda_init_captures - Feature record: CXX_FEATURE:1cxx_local_type_template_args - Feature record: CXX_FEATURE:1cxx_long_long_type - Feature record: CXX_FEATURE:1cxx_noexcept - Feature record: CXX_FEATURE:1cxx_nonstatic_member_init - Feature record: CXX_FEATURE:1cxx_nullptr - Feature record: CXX_FEATURE:1cxx_override - Feature record: CXX_FEATURE:1cxx_range_for - Feature record: CXX_FEATURE:1cxx_raw_string_literals - Feature record: CXX_FEATURE:1cxx_reference_qualified_functions - Feature record: CXX_FEATURE:0cxx_relaxed_constexpr - Feature record: CXX_FEATURE:0cxx_return_type_deduction - Feature record: CXX_FEATURE:1cxx_right_angle_brackets - Feature record: CXX_FEATURE:1cxx_rvalue_references - Feature record: CXX_FEATURE:1cxx_sizeof_member - Feature record: CXX_FEATURE:1cxx_static_assert - Feature record: CXX_FEATURE:1cxx_strong_enums - Feature record: CXX_FEATURE:1cxx_template_template_parameters - Feature record: CXX_FEATURE:1cxx_thread_local - Feature record: CXX_FEATURE:1cxx_trailing_return_types - Feature record: CXX_FEATURE:1cxx_unicode_literals - Feature record: CXX_FEATURE:1cxx_uniform_initialization - Feature record: CXX_FEATURE:1cxx_unrestricted_unions - Feature record: CXX_FEATURE:1cxx_user_literals - Feature record: CXX_FEATURE:0cxx_variable_templates - Feature record: CXX_FEATURE:1cxx_variadic_macros - Feature record: CXX_FEATURE:1cxx_variadic_templates - - -Detecting CXX [-std=c++98] compiler features compiled with the following output: -Change Dir: /Users/ejossev/working/steem/CMakeFiles/CMakeTmp - -Run Build Command:"/usr/bin/make" "cmTC_37f8b/fast" -/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_37f8b.dir/build.make CMakeFiles/cmTC_37f8b.dir/build -Building CXX object CMakeFiles/cmTC_37f8b.dir/feature_tests.cxx.o -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -std=c++98 -o CMakeFiles/cmTC_37f8b.dir/feature_tests.cxx.o -c /Users/ejossev/working/steem/CMakeFiles/feature_tests.cxx -Linking CXX executable cmTC_37f8b -/usr/local/Cellar/cmake/3.11.0/bin/cmake -E cmake_link_script CMakeFiles/cmTC_37f8b.dir/link.txt --verbose=1 -/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_37f8b.dir/feature_tests.cxx.o -o cmTC_37f8b - - - Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers - Feature record: CXX_FEATURE:0cxx_alias_templates - Feature record: CXX_FEATURE:0cxx_alignas - Feature record: CXX_FEATURE:0cxx_alignof - Feature record: CXX_FEATURE:0cxx_attributes - Feature record: CXX_FEATURE:0cxx_attribute_deprecated - Feature record: CXX_FEATURE:0cxx_auto_type - Feature record: CXX_FEATURE:0cxx_binary_literals - Feature record: CXX_FEATURE:0cxx_constexpr - Feature record: CXX_FEATURE:0cxx_contextual_conversions - Feature record: CXX_FEATURE:0cxx_decltype - Feature record: CXX_FEATURE:0cxx_decltype_auto - Feature record: CXX_FEATURE:0cxx_decltype_incomplete_return_types - Feature record: CXX_FEATURE:0cxx_default_function_template_args - Feature record: CXX_FEATURE:0cxx_defaulted_functions - Feature record: CXX_FEATURE:0cxx_defaulted_move_initializers - Feature record: CXX_FEATURE:0cxx_delegating_constructors - Feature record: CXX_FEATURE:0cxx_deleted_functions - Feature record: CXX_FEATURE:0cxx_digit_separators - Feature record: CXX_FEATURE:0cxx_enum_forward_declarations - Feature record: CXX_FEATURE:0cxx_explicit_conversions - Feature record: CXX_FEATURE:0cxx_extended_friend_declarations - Feature record: CXX_FEATURE:0cxx_extern_templates - Feature record: CXX_FEATURE:0cxx_final - Feature record: CXX_FEATURE:0cxx_func_identifier - Feature record: CXX_FEATURE:0cxx_generalized_initializers - Feature record: CXX_FEATURE:0cxx_generic_lambdas - Feature record: CXX_FEATURE:0cxx_inheriting_constructors - Feature record: CXX_FEATURE:0cxx_inline_namespaces - Feature record: CXX_FEATURE:0cxx_lambdas - Feature record: CXX_FEATURE:0cxx_lambda_init_captures - Feature record: CXX_FEATURE:0cxx_local_type_template_args - Feature record: CXX_FEATURE:0cxx_long_long_type - Feature record: CXX_FEATURE:0cxx_noexcept - Feature record: CXX_FEATURE:0cxx_nonstatic_member_init - Feature record: CXX_FEATURE:0cxx_nullptr - Feature record: CXX_FEATURE:0cxx_override - Feature record: CXX_FEATURE:0cxx_range_for - Feature record: CXX_FEATURE:0cxx_raw_string_literals - Feature record: CXX_FEATURE:0cxx_reference_qualified_functions - Feature record: CXX_FEATURE:0cxx_relaxed_constexpr - Feature record: CXX_FEATURE:0cxx_return_type_deduction - Feature record: CXX_FEATURE:0cxx_right_angle_brackets - Feature record: CXX_FEATURE:0cxx_rvalue_references - Feature record: CXX_FEATURE:0cxx_sizeof_member - Feature record: CXX_FEATURE:0cxx_static_assert - Feature record: CXX_FEATURE:0cxx_strong_enums - Feature record: CXX_FEATURE:1cxx_template_template_parameters - Feature record: CXX_FEATURE:0cxx_thread_local - Feature record: CXX_FEATURE:0cxx_trailing_return_types - Feature record: CXX_FEATURE:0cxx_unicode_literals - Feature record: CXX_FEATURE:0cxx_uniform_initialization - Feature record: CXX_FEATURE:0cxx_unrestricted_unions - Feature record: CXX_FEATURE:0cxx_user_literals - Feature record: CXX_FEATURE:0cxx_variable_templates - Feature record: CXX_FEATURE:0cxx_variadic_macros - Feature record: CXX_FEATURE:0cxx_variadic_templates diff --git a/CMakeFiles/clion-environment.txt b/CMakeFiles/clion-environment.txt deleted file mode 100644 index 77aad768..00000000 Binary files a/CMakeFiles/clion-environment.txt and /dev/null differ diff --git a/CMakeFiles/clion-log.txt b/CMakeFiles/clion-log.txt deleted file mode 100644 index f4f48216..00000000 --- a/CMakeFiles/clion-log.txt +++ /dev/null @@ -1,202 +0,0 @@ -/Applications/CLion.app/Contents/bin/cmake/bin/cmake -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARIES=/usr/local/opt/zlib/lib/libz.a -DBZIP2_LIBRARIES=/usr/local/opt/bzip2/lib/libbz2.a -DBOOST_ROOT=/usr/local/opt/boost@1.60 -G "CodeBlocks - Unix Makefiles" /Users/ejossev/working/steem --- The C compiler identification is AppleClang 9.1.0.9020039 --- The CXX compiler identification is AppleClang 9.1.0.9020039 --- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc --- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works --- Detecting C compiler ABI info --- Detecting C compiler ABI info - done --- Detecting C compile features --- Detecting C compile features - done --- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ --- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works --- Detecting CXX compiler ABI info --- Detecting CXX compiler ABI info - done --- Detecting CXX compile features --- Detecting CXX compile features - done -CMake Error at CMakeFiles/git-data/grabRef.cmake:36 (file): - file failed to open for reading (No such file or directory): - - /Users/ejossev/working/steem/CMakeFiles/git-data/head-ref -Call Stack (most recent call first): - libraries/fc/GitVersionGen/GetGitRevisionDescription.cmake:77 (include) - CMakeLists.txt:37 (get_git_head_revision) - - --- BUILD_STEEM_TESTNET: OFF --- ENABLE_SMT_SUPPORT: OFF --- LOW_MEMORY_NODE: OFF --- CHAINBASE_CHECK_LOCKING: ON --- CONFIGURING TO CLEAR OLD VOTES FROM MEMORY --- SKIP_BY_TX_ID: OFF --- STEEM_STATIC_BUILD: OFF --- clang-tidy not found --- Using custom FindBoost.cmake --- Boost version: 1.60.0 --- Found the following Boost libraries: --- thread --- date_time --- system --- filesystem --- program_options --- signals --- serialization --- chrono --- unit_test_framework --- context --- locale --- coroutine --- Configuring Steem on OS X --- Configuring project fc located in: /Users/ejossev/working/steem/libraries/fc -CMake Error at libraries/fc/CMakeFiles/git-data/grabRef.cmake:36 (file): - file failed to open for reading (No such file or directory): - - /Users/ejossev/working/steem/libraries/fc/CMakeFiles/git-data/head-ref -Call Stack (most recent call first): - libraries/fc/GitVersionGen/GetGitRevisionDescription.cmake:77 (include) - libraries/fc/CMakeLists.txt:19 (get_git_head_revision) - - -CMake Error at libraries/fc/CMakeFiles/git-data/grabRef.cmake:36 (file): - file failed to open for reading (No such file or directory): - - /Users/ejossev/working/steem/libraries/fc/CMakeFiles/git-data/head-ref -Call Stack (most recent call first): - libraries/fc/GitVersionGen/GetGitRevisionDescription.cmake:77 (include) - libraries/fc/GitVersionGen/GetGitRevisionDescription.cmake:131 (get_git_head_revision) - libraries/fc/CMakeLists.txt:20 (get_git_unix_timestamp) - - --- Configuring fc to build on Unix/Apple --- Using custom FindBoost.cmake --- Boost version: 1.60.0 --- Found the following Boost libraries: --- thread --- date_time --- system --- filesystem --- program_options --- signals --- serialization --- chrono --- unit_test_framework --- context --- locale --- iostreams --- coroutine --- Setting up OpenSSL root and include vars to /usr/local/opt/openssl@1.0, /usr/local/opt/openssl@1.0/include --- Found OpenSSL: /usr/local/opt/openssl@1.0/lib/libcrypto.a (found version "1.0.2o") -** websocketpp - -=========== Used Build Configuration ============= - --- ENABLE_CPP11 = ON --- BUILD_EXAMPLES = OFF --- BUILD_TESTS = OFF - --- WEBSOCKETPP_ROOT = /Users/ejossev/working/steem/libraries/fc/vendor/websocketpp --- WEBSOCKETPP_BIN = /Users/ejossev/working/steem/libraries/fc/vendor/websocketpp/bin --- WEBSOCKETPP_LIB = /Users/ejossev/working/steem/libraries/fc/vendor/websocketpp/lib --- Install prefix = /usr/local - --- WEBSOCKETPP_BOOST_LIBS = --- WEBSOCKETPP_PLATFORM_LIBS = --- WEBSOCKETPP_PLATFORM_TLS_LIBS = - --- OPENSSL_FOUND = TRUE --- OPENSSL_INCLUDE_DIR = /usr/local/opt/openssl@1.0/include --- OPENSSL_LIBRARIES = /usr/local/opt/openssl@1.0/lib/libssl.a;/usr/local/opt/openssl@1.0/lib/libcrypto.a --- OPENSSL_VERSION = 1.0.2o - --- Found Curses: /usr/lib/libcurses.dylib --- Found Readline: /usr/local/include --- Found Readline: /usr/local/lib/libreadline.dylib --- Found ZLIB: /usr/lib/libz.dylib (found version "1.2.11") --- zlib found --- Found BZip2: /usr/local/opt/bzip2/lib/libbz2.a (found version "1.0.6") --- Looking for BZ2_bzCompressInit --- Looking for BZ2_bzCompressInit - found --- bzip2 found --- LOG_LONG_API: ON --- --- LOGGING LONG API CALLS --- MAX MS: 1000 --- WARN MS: 750 --- --- Finished fc module configuration... --- Using custom FindBoost.cmake --- Boost version: 1.60.0 --- Found the following Boost libraries: --- thread --- date_time --- system --- filesystem --- chrono --- program_options --- unit_test_framework --- locale --- Configuring AppBase on OS X --- Using custom FindBoost.cmake --- Boost version: 1.60.0 --- Found the following Boost libraries: --- thread --- date_time --- system --- filesystem --- chrono --- unit_test_framework --- locale --- Configuring ChainBase on OS X -CMake Error at libraries/utilities/CMakeFiles/git-data/grabRef.cmake:36 (file): - file failed to open for reading (No such file or directory): - - /Users/ejossev/working/steem/libraries/utilities/CMakeFiles/git-data/head-ref -Call Stack (most recent call first): - libraries/fc/GitVersionGen/GetGitRevisionDescription.cmake:77 (include) - libraries/utilities/CMakeLists.txt:3 (get_git_head_revision) - - -CMake Error at libraries/utilities/CMakeFiles/git-data/grabRef.cmake:36 (file): - file failed to open for reading (No such file or directory): - - /Users/ejossev/working/steem/libraries/utilities/CMakeFiles/git-data/head-ref -Call Stack (most recent call first): - libraries/fc/GitVersionGen/GetGitRevisionDescription.cmake:77 (include) - libraries/fc/GitVersionGen/GetGitRevisionDescription.cmake:131 (get_git_head_revision) - libraries/utilities/CMakeLists.txt:4 (get_git_unix_timestamp) - - -CMake Error at libraries/utilities/CMakeFiles/git-data/grabRef.cmake:36 (file): - file failed to open for reading (No such file or directory): - - /Users/ejossev/working/steem/libraries/utilities/CMakeFiles/git-data/head-ref -Call Stack (most recent call first): - libraries/fc/GitVersionGen/GetGitRevisionDescription.cmake:77 (include) - libraries/fc/GitVersionGen/GetGitRevisionDescription.cmake:87 (get_git_head_revision) - libraries/utilities/CMakeLists.txt:5 (git_describe) - - --- PLUGINS_DEPS: /Users/ejossev/working/steem/libraries/manifest/../plugins/smt_test/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/witness/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/apis/follow_api/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/apis/account_history_api/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/apis/witness_api/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/apis/market_history_api/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/apis/network_broadcast_api/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/apis/database_api/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/apis/chain_api/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/apis/tags_api/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/apis/account_by_key_api/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/apis/block_api/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/apis/debug_node_api/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/apis/condenser_api/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/account_history/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/follow/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/chain/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/debug_node/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/tags/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/webserver/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/p2p/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/block_log_info/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/account_by_key/plugin.json;/Users/ejossev/working/steem/libraries/manifest/../plugins/market_history/plugin.json - --- MANIFEST_DEPS: /Users/ejossev/working/steem/libraries/manifest/templates/plugins/CMakeLists.txt.j2;/Users/ejossev/working/steem/libraries/manifest/templates/plugins/plugins.cpp;/Users/ejossev/working/steem/libraries/manifest/templates/plugins/mf_plugins.cpp.j2;/Users/ejossev/working/steem/libraries/manifest/templates/plugins/include/steem/manifest/plugins.hpp - --- MANIFEST_OUTPUTS: /Users/ejossev/working/steem/libraries/manifest/gensrc/plugins/CMakeLists.txt;/Users/ejossev/working/steem/libraries/manifest/gensrc/plugins/plugins.cpp;/Users/ejossev/working/steem/libraries/manifest/gensrc/plugins/mf_plugins.cpp;/Users/ejossev/working/steem/libraries/manifest/gensrc/plugins/include/steem/manifest/plugins.hpp - --- Found Perl: /usr/bin/perl (found version "5.18.2") --- Found Doxygen: /usr/local/bin/doxygen (found version "1.8.14") found components: doxygen dot --- - - CONFIGURED FOR STEEM NETWORK - - --- - - CONFIGURED FOR NO SUPPORT OF SMT - - --- - - CONFIGURED FOR FULL NODE - - --- Configuring incomplete, errors occurred! -See also "/Users/ejossev/working/steem/CMakeFiles/CMakeOutput.log". diff --git a/CMakeFiles/cmake.check_cache b/CMakeFiles/cmake.check_cache deleted file mode 100644 index 3dccd731..00000000 --- a/CMakeFiles/cmake.check_cache +++ /dev/null @@ -1 +0,0 @@ -# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/CMakeFiles/feature_tests.bin b/CMakeFiles/feature_tests.bin deleted file mode 100755 index 52fcf800..00000000 Binary files a/CMakeFiles/feature_tests.bin and /dev/null differ diff --git a/CMakeFiles/feature_tests.c b/CMakeFiles/feature_tests.c deleted file mode 100644 index afbc86df..00000000 --- a/CMakeFiles/feature_tests.c +++ /dev/null @@ -1,34 +0,0 @@ - - const char features[] = {"\n" -"C_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 -"1" -#else -"0" -#endif -"c_function_prototypes\n" -"C_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -"1" -#else -"0" -#endif -"c_restrict\n" -"C_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L -"1" -#else -"0" -#endif -"c_static_assert\n" -"C_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -"1" -#else -"0" -#endif -"c_variadic_macros\n" - -}; - -int main(int argc, char** argv) { (void)argv; return features[argc]; } diff --git a/CMakeFiles/feature_tests.cxx b/CMakeFiles/feature_tests.cxx deleted file mode 100644 index 34d2e8c4..00000000 --- a/CMakeFiles/feature_tests.cxx +++ /dev/null @@ -1,405 +0,0 @@ - - const char features[] = {"\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_aggregate_nsdmi) -"1" -#else -"0" -#endif -"cxx_aggregate_default_initializers\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_alias_templates) -"1" -#else -"0" -#endif -"cxx_alias_templates\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_alignas) -"1" -#else -"0" -#endif -"cxx_alignas\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_alignas) -"1" -#else -"0" -#endif -"cxx_alignof\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_attributes) -"1" -#else -"0" -#endif -"cxx_attributes\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 501 && __cplusplus > 201103L -"1" -#else -"0" -#endif -"cxx_attribute_deprecated\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_auto_type) -"1" -#else -"0" -#endif -"cxx_auto_type\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_binary_literals) -"1" -#else -"0" -#endif -"cxx_binary_literals\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_constexpr) -"1" -#else -"0" -#endif -"cxx_constexpr\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_contextual_conversions) -"1" -#else -"0" -#endif -"cxx_contextual_conversions\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_decltype) -"1" -#else -"0" -#endif -"cxx_decltype\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 501 && __cplusplus > 201103L -"1" -#else -"0" -#endif -"cxx_decltype_auto\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_decltype_incomplete_return_types) -"1" -#else -"0" -#endif -"cxx_decltype_incomplete_return_types\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_default_function_template_args) -"1" -#else -"0" -#endif -"cxx_default_function_template_args\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_defaulted_functions) -"1" -#else -"0" -#endif -"cxx_defaulted_functions\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_defaulted_functions) -"1" -#else -"0" -#endif -"cxx_defaulted_move_initializers\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_delegating_constructors) -"1" -#else -"0" -#endif -"cxx_delegating_constructors\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_deleted_functions) -"1" -#else -"0" -#endif -"cxx_deleted_functions\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 501 && __cplusplus > 201103L -"1" -#else -"0" -#endif -"cxx_digit_separators\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L -"1" -#else -"0" -#endif -"cxx_enum_forward_declarations\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_explicit_conversions) -"1" -#else -"0" -#endif -"cxx_explicit_conversions\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L -"1" -#else -"0" -#endif -"cxx_extended_friend_declarations\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L -"1" -#else -"0" -#endif -"cxx_extern_templates\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_override_control) -"1" -#else -"0" -#endif -"cxx_final\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L -"1" -#else -"0" -#endif -"cxx_func_identifier\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_generalized_initializers) -"1" -#else -"0" -#endif -"cxx_generalized_initializers\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 501 && __cplusplus > 201103L -"1" -#else -"0" -#endif -"cxx_generic_lambdas\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_inheriting_constructors) -"1" -#else -"0" -#endif -"cxx_inheriting_constructors\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L -"1" -#else -"0" -#endif -"cxx_inline_namespaces\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_lambdas) -"1" -#else -"0" -#endif -"cxx_lambdas\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_init_captures) -"1" -#else -"0" -#endif -"cxx_lambda_init_captures\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_local_type_template_args) -"1" -#else -"0" -#endif -"cxx_local_type_template_args\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L -"1" -#else -"0" -#endif -"cxx_long_long_type\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_noexcept) -"1" -#else -"0" -#endif -"cxx_noexcept\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_nonstatic_member_init) -"1" -#else -"0" -#endif -"cxx_nonstatic_member_init\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_nullptr) -"1" -#else -"0" -#endif -"cxx_nullptr\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_override_control) -"1" -#else -"0" -#endif -"cxx_override\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_range_for) -"1" -#else -"0" -#endif -"cxx_range_for\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_raw_string_literals) -"1" -#else -"0" -#endif -"cxx_raw_string_literals\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_reference_qualified_functions) -"1" -#else -"0" -#endif -"cxx_reference_qualified_functions\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_relaxed_constexpr) -"1" -#else -"0" -#endif -"cxx_relaxed_constexpr\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_return_type_deduction) -"1" -#else -"0" -#endif -"cxx_return_type_deduction\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L -"1" -#else -"0" -#endif -"cxx_right_angle_brackets\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_rvalue_references) -"1" -#else -"0" -#endif -"cxx_rvalue_references\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L -"1" -#else -"0" -#endif -"cxx_sizeof_member\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_static_assert) -"1" -#else -"0" -#endif -"cxx_static_assert\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_strong_enums) -"1" -#else -"0" -#endif -"cxx_strong_enums\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 199711L -"1" -#else -"0" -#endif -"cxx_template_template_parameters\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_thread_local) -"1" -#else -"0" -#endif -"cxx_thread_local\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_trailing_return) -"1" -#else -"0" -#endif -"cxx_trailing_return_types\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_unicode_literals) -"1" -#else -"0" -#endif -"cxx_unicode_literals\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_generalized_initializers) -"1" -#else -"0" -#endif -"cxx_uniform_initialization\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_unrestricted_unions) -"1" -#else -"0" -#endif -"cxx_unrestricted_unions\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_user_literals) -"1" -#else -"0" -#endif -"cxx_user_literals\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_variable_templates) -"1" -#else -"0" -#endif -"cxx_variable_templates\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __cplusplus >= 201103L -"1" -#else -"0" -#endif -"cxx_variadic_macros\n" -"CXX_FEATURE:" -#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && __has_feature(cxx_variadic_templates) -"1" -#else -"0" -#endif -"cxx_variadic_templates\n" - -}; - -int main(int argc, char** argv) { (void)argv; return features[argc]; } diff --git a/CMakeFiles/git-data/HEAD b/CMakeFiles/git-data/HEAD deleted file mode 100644 index cb089cd8..00000000 --- a/CMakeFiles/git-data/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/heads/master diff --git a/CMakeFiles/git-data/grabRef.cmake b/CMakeFiles/git-data/grabRef.cmake deleted file mode 100644 index 918a4e82..00000000 --- a/CMakeFiles/git-data/grabRef.cmake +++ /dev/null @@ -1,38 +0,0 @@ -# -# Internal file for GetGitRevisionDescription.cmake -# -# Requires CMake 2.6 or newer (uses the 'function' command) -# -# Original Author: -# 2009-2010 Ryan Pavlik -# http://academic.cleardefinition.com -# Iowa State University HCI Graduate Program/VRAC -# -# Copyright Iowa State University 2009-2010. -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt) - -set(HEAD_HASH) - -file(READ "/Users/ejossev/working/steem/CMakeFiles/git-data/HEAD" HEAD_CONTENTS LIMIT 1024) - -string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) -if(HEAD_CONTENTS MATCHES "ref") - # named branch - string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") - if(EXISTS "/Users/ejossev/working/steem/.git/${HEAD_REF}") - configure_file("/Users/ejossev/working/steem/.git/${HEAD_REF}" "/Users/ejossev/working/steem/CMakeFiles/git-data/head-ref" COPYONLY) - elseif(EXISTS "/Users/ejossev/working/steem/.git/logs/${HEAD_REF}") - configure_file("/Users/ejossev/working/steem/.git/logs/${HEAD_REF}" "/Users/ejossev/working/steem/CMakeFiles/git-data/head-ref" COPYONLY) - set(HEAD_HASH "${HEAD_REF}") - endif() -else() - # detached HEAD - configure_file("/Users/ejossev/working/steem/.git/HEAD" "/Users/ejossev/working/steem/CMakeFiles/git-data/head-ref" COPYONLY) -endif() - -if(NOT HEAD_HASH) - file(READ "/Users/ejossev/working/steem/CMakeFiles/git-data/head-ref" HEAD_HASH LIMIT 1024) - string(STRIP "${HEAD_HASH}" HEAD_HASH) -endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index cbe93a81..0ebe2bd4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,14 +1,26 @@ -# Defines Steem library target. -project( Steem ) +# Defines SophiaTX library target. +project( SophiaTX ) cmake_minimum_required( VERSION 3.2 ) -set( BLOCKCHAIN_NAME "Steem" ) +set( BLOCKCHAIN_NAME "SophiaTX" ) set( CMAKE_CXX_STANDARD 14 ) -set( GUI_CLIENT_EXECUTABLE_NAME Steem ) +set( GUI_CLIENT_EXECUTABLE_NAME SophiaTX ) set( CUSTOM_URL_SCHEME "gcs" ) set( INSTALLER_APP_ID "68ad7005-8eee-49c9-95ce-9eed97e5b347" ) + +OPTION( BUILD_PIC "Build with -fPIC flag (ON OR OFF)" ON) +if(BUILD_PIC) + MESSAGE(STATUS "Building with -fPIC flag") +else(BUILD_PIC) + MESSAGE(STATUS "Skipping libalexandria build, enable with -DBUILD_PIC flag") +endif(BUILD_PIC) + +if(WIN32) + cmake_policy(SET CMP0054 OLD) +endif(WIN32) + # http://stackoverflow.com/a/18369825 if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8) @@ -51,9 +63,9 @@ LIST(APPEND BOOST_COMPONENTS thread coroutine) SET( Boost_USE_STATIC_LIBS ON CACHE STRING "ON or OFF" ) -OPTION( BUILD_STEEM_TESTNET "Build source for test network (ON OR OFF)" OFF ) -MESSAGE( STATUS "BUILD_STEEM_TESTNET: ${BUILD_STEEM_TESTNET}" ) -if( BUILD_STEEM_TESTNET ) +OPTION( BUILD_SOPHIATX_TESTNET "Build source for test network (ON OR OFF)" OFF ) +MESSAGE( STATUS "BUILD_SOPHIATX_TESTNET: ${BUILD_SOPHIATX_TESTNET}" ) +if( BUILD_SOPHIATX_TESTNET ) MESSAGE( STATUS " " ) MESSAGE( STATUS " CONFIGURING FOR TEST NET " ) MESSAGE( STATUS " " ) @@ -61,16 +73,6 @@ if( BUILD_STEEM_TESTNET ) SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DIS_TEST_NET" ) endif() -OPTION( ENABLE_SMT_SUPPORT "Build source with SMT support (ON OR OFF)" OFF ) -MESSAGE( STATUS "ENABLE_SMT_SUPPORT: ${ENABLE_SMT_SUPPORT}" ) -if( ENABLE_SMT_SUPPORT ) - MESSAGE( STATUS " " ) - MESSAGE( STATUS " CONFIGURING FOR SMT SUPPORT " ) - MESSAGE( STATUS " " ) - SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSTEEM_ENABLE_SMT" ) - SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSTEEM_ENABLE_SMT" ) -endif() - OPTION( LOW_MEMORY_NODE "Build source for low memory node (ON OR OFF)" OFF ) MESSAGE( STATUS "LOW_MEMORY_NODE: ${LOW_MEMORY_NODE}" ) if( LOW_MEMORY_NODE ) @@ -102,14 +104,28 @@ if( SKIP_BY_TX_ID ) SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSKIP_BY_TX_ID" ) endif() -OPTION( STEEM_STATIC_BUILD "Build steemd as a static library (ON or OFF)" OFF ) -if( STEEM_STATIC_BUILD AND ( ( MSVC AND NOT MINGW ) OR APPLE ) ) +OPTION( SOPHIATX_STATIC_BUILD "Build sophiatxd as a static library (ON or OFF)" OFF ) +if( SOPHIATX_STATIC_BUILD AND ( ( MSVC AND NOT MINGW ) OR APPLE ) ) MESSAGE( STATUS "Statuc build is not available on Windows or OS X" ) - SET( STEEM_STATIC_BUILD OFF ) + SET( SOPHIATX_STATIC_BUILD OFF ) endif() -MESSAGE( STATUS "STEEM_STATIC_BUILD: ${STEEM_STATIC_BUILD}" ) - -SET( STEEM_LINT_LEVEL "OFF" CACHE STRING "Lint level during steem build (FULL, HIGH, LOW, OFF)" ) +MESSAGE( STATUS "SOPHIATX_STATIC_BUILD: ${SOPHIATX_STATIC_BUILD}" ) + +OPTION( PRIVATE_NET "Building as private net (ON OR OFF)" OFF) +if(PRIVATE_NET) + MESSAGE(STATUS "Building as private net") + ADD_DEFINITIONS("-DPRIVATE_NET") +else(PRIVATE_NET) + MESSAGE(STATUS "Building as public net") +endif(PRIVATE_NET) + +OPTION(ABAP_INTERFACE "Build without map obejcts on the interface (ON OR OFF)" OFF ) +if(ABAP_INTERFACE) + MESSAGE(STATUS "Building with ABAP compliant Alexandria interface") + ADD_DEFINITIONS("-DABAP_INTERFACE") +endif(ABAP_INTERFACE) + +SET( SOPHIATX_LINT_LEVEL "OFF" CACHE STRING "Lint level during sophiatx build (FULL, HIGH, LOW, OFF)" ) find_program( CLANG_TIDY_EXE NAMES "clang-tidy" @@ -122,13 +138,13 @@ elseif( VERSION LESS 3.6 ) messgae( STATUS "clang-tidy found but only supported with CMake version >= 3.6" ) else() message( STATUS "clany-tidy found: ${CLANG_TIDY_EXE}" ) - if( "${STEEM_LINT_LEVEL}" STREQUAL "FULL" ) + if( "${SOPHIATX_LINT_LEVEL}" STREQUAL "FULL" ) message( STATUS "Linting level set to: FULL" ) set( DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-checks='*'" ) - elseif( "${STEEM_LINT_LEVEL}" STREQUAL "HIGH" ) + elseif( "${SOPHIATX_LINT_LEVEL}" STREQUAL "HIGH" ) message( STATUS "Linting level set to: HIGH" ) set( DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-checks='boost-use-to-string,clang-analyzer-*,cppcoreguidelines-*,llvm-*,misc-*,performance-*,readability-*'" ) - elseif( "${STEEM_LINT_LEVEL}" STREQUAL "LOW" ) + elseif( "${SOPHIATX_LINT_LEVEL}" STREQUAL "LOW" ) message( STATUS "Linting level set to: LOW" ) set( DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-checks='clang-analyzer-*'" ) else() @@ -143,11 +159,20 @@ IF( WIN32 ) set(BOOST_ALL_DYN_LINK OFF) # force dynamic linking for all libraries ENDIF(WIN32) -FIND_PACKAGE(Boost 1.58 REQUIRED COMPONENTS ${BOOST_COMPONENTS}) + +FIND_PACKAGE(Boost 1.60 REQUIRED COMPONENTS ${BOOST_COMPONENTS}) + +find_package(JNI) +if(JNI_FOUND AND (NOT ABAP_INTERFACE)) + MESSAGE(STATUS "JNI found, building libalexandriaJNI") +else(JNI_FOUND) + MESSAGE(STATUS "Skipping libalexandriaJNI build, JNI not found") +endif(JNI_FOUND AND (NOT ABAP_INTERFACE)) + if( WIN32 ) - message( STATUS "Configuring Steem on WIN32") + message( STATUS "Configuring SophiaTX on WIN32") set( DB_VERSION 60 ) set( BDB_STATIC_LIBS 1 ) @@ -157,7 +182,8 @@ if( WIN32 ) set(CRYPTO_LIB) if( MSVC ) - add_compile_options(/wd4503 /wd4267 /wd4244) + # Activate C++ exception handling, assume extern C calls don't throw (EHsc) + add_compile_options(/wd4503 /wd4267 /wd4244 /EHsc) #looks like this flag can have different default on some machines. SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO") @@ -179,7 +205,9 @@ if( WIN32 ) SET(TCL_LIBS "${TCL_LIBS}${TCL_LIB_PATH}/${TCL_LIB_NAME}g${TCL_LIB_EXT}") SET(TCL_LIBRARY ${TCL_LIBS}) - + # Needed to disable MSVC autolinking feature (#pragma comment) + ADD_DEFINITIONS("-DBOOST_ALL_NO_LIB") + elseif( MINGW ) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fpermissive -msse4.2 -Wa,-mbig-obj") SET(CMAKE_CXX_FLAGS_RELEASE "-O3") @@ -201,11 +229,11 @@ else( WIN32 ) # Apple AND Linux if( APPLE ) # Apple Specific Options Here - message( STATUS "Configuring Steem on OS X" ) + message( STATUS "Configuring SophiaTX on OS X" ) set( CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -std=c++11 -stdlib=libc++ -Wall -Wno-conversion -Wno-deprecated-declarations" ) else( APPLE ) # Linux Specific Options Here - message( STATUS "Configuring Steem on Linux" ) + message( STATUS "Configuring SophiaTX on Linux" ) set( CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -std=c++11 -Wall" ) set( rt_library rt ) set( pthread_library pthread) @@ -219,6 +247,10 @@ else( WIN32 ) # Apple AND Linux endif ( FULL_STATIC_BUILD ) endif( APPLE ) + if(BUILD_PIC) + set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") + endif(BUILD_PIC) + if( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" ) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-memcmp" ) endif() @@ -237,17 +269,17 @@ else( WIN32 ) # Apple AND Linux endif( WIN32 ) -set(ENABLE_COVERAGE_TESTING FALSE CACHE BOOL "Build Steem for code coverage analysis") +set(ENABLE_COVERAGE_TESTING FALSE CACHE BOOL "Build SophiaTX for code coverage analysis") if(ENABLE_COVERAGE_TESTING) SET(CMAKE_CXX_FLAGS "--coverage ${CMAKE_CXX_FLAGS}") endif() # fc/src/compress/miniz.c breaks strict aliasing. The Linux kernel builds with no strict aliasing -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing -Werror -DBOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY" ) -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing -Werror -DBOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY" ) +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing -DBOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY" ) +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing -DBOOST_THREAD_DONT_PROVIDE_PROMISE_LAZY" ) -# external_plugins needs to be compiled first because libraries/app depends on STEEM_EXTERNAL_PLUGINS being fully populated +# external_plugins needs to be compiled first because libraries/app depends on SOPHIATX_EXTERNAL_PLUGINS being fully populated add_subdirectory( external_plugins ) add_subdirectory( libraries ) add_subdirectory( programs ) @@ -256,8 +288,8 @@ add_subdirectory( tests ) if (ENABLE_INSTALLER) -set(VERSION_MAJOR 0) -set(VERSION_MINOR 1) +set(VERSION_MAJOR 1) +set(VERSION_MINOR 0) set(VERSION_PATCH 0) @@ -267,24 +299,24 @@ set(CPACK_OUTPUT_FILE_PREFIX ${CMAKE_BINARY_DIR}/packages) set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install) SET(CPACK_PACKAGE_DIRECTORY "${CMAKE_INSTALL_PREFIX}") -set(CPACK_PACKAGE_NAME "steem") -set(CPACK_PACKAGE_VENDOR "Steemit, Inc.") +set(CPACK_PACKAGE_NAME "sophiatx") +set(CPACK_PACKAGE_VENDOR "Equidato Technologies") set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}") set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}") set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}") set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") -set(CPACK_PACKAGE_DESCRIPTION "A client for the Steem network") -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A client for the Steem network") +set(CPACK_PACKAGE_DESCRIPTION "A client for the SophiaTX network") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A client for the SophiaTX network") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md") -set(CPACK_PACKAGE_INSTALL_DIRECTORY "Steem ${CPACK_PACKAGE_VERSION}") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "SophiaTX ${CPACK_PACKAGE_VERSION}") if(WIN32) SET(CPACK_GENERATOR "ZIP;NSIS") - set(CPACK_PACKAGE_NAME "Steem") # override above + set(CPACK_PACKAGE_NAME "SophiaTX") # override above set(CPACK_NSIS_EXECUTABLES_DIRECTORY .) - set(CPACK_NSIS_PACKAGE_NAME "Steem v${CPACK_PACKAGE_VERSION}") + set(CPACK_NSIS_PACKAGE_NAME "SophiaTX v${CPACK_PACKAGE_VERSION}") set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}") - set(CPACK_NSIS_DEFINES " !define MUI_STARTMENUPAGE_DEFAULTFOLDER \\\"Steem\\\"") + set(CPACK_NSIS_DEFINES " !define MUI_STARTMENUPAGE_DEFAULTFOLDER \\\"SophiaTX\\\"") # it seems like windows zip files usually don't have a single directory inside them, unix tgz frequently do SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0) @@ -303,16 +335,10 @@ endif(LINUX) include(CPack) endif(ENABLE_INSTALLER) -if( BUILD_STEEM_TESTNET ) +if( BUILD_SOPHIATX_TESTNET ) MESSAGE( STATUS "\n\n CONFIGURED FOR TEST NETWORK \n\n" ) else() - MESSAGE( STATUS "\n\n CONFIGURED FOR STEEM NETWORK \n\n" ) -endif() - -if( ENABLE_SMT_SUPPORT ) -MESSAGE( STATUS "\n\n CONFIGURED FOR SMT SUPPORT \n\n" ) -else() -MESSAGE( STATUS "\n\n CONFIGURED FOR NO SUPPORT OF SMT \n\n" ) + MESSAGE( STATUS "\n\n CONFIGURED FOR SOPHIATX NETWORK \n\n" ) endif() if( LOW_MEMORY_NODE ) diff --git a/CMakeModules/cotire.cmake b/CMakeModules/cotire.cmake new file mode 100644 index 00000000..97546709 --- /dev/null +++ b/CMakeModules/cotire.cmake @@ -0,0 +1,4191 @@ +# - cotire (compile time reducer) +# +# See the cotire manual for usage hints. +# +#============================================================================= +# Copyright 2012-2018 Sascha Kratky +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +#============================================================================= + +if(__COTIRE_INCLUDED) + return() +endif() +set(__COTIRE_INCLUDED TRUE) + +# call cmake_minimum_required, but prevent modification of the CMake policy stack in include mode +# cmake_minimum_required also sets the policy version as a side effect, which we have to avoid +if (NOT CMAKE_SCRIPT_MODE_FILE) + cmake_policy(PUSH) +endif() +cmake_minimum_required(VERSION 2.8.12) +if (NOT CMAKE_SCRIPT_MODE_FILE) + cmake_policy(POP) +endif() + +set (COTIRE_CMAKE_MODULE_FILE "${CMAKE_CURRENT_LIST_FILE}") +set (COTIRE_CMAKE_MODULE_VERSION "1.8.0") + +# activate select policies +if (POLICY CMP0025) + # Compiler id for Apple Clang is now AppleClang + cmake_policy(SET CMP0025 NEW) +endif() + +if (POLICY CMP0026) + # disallow use of the LOCATION target property + cmake_policy(SET CMP0026 NEW) +endif() + +if (POLICY CMP0038) + # targets may not link directly to themselves + cmake_policy(SET CMP0038 NEW) +endif() + +if (POLICY CMP0039) + # utility targets may not have link dependencies + cmake_policy(SET CMP0039 NEW) +endif() + +if (POLICY CMP0040) + # target in the TARGET signature of add_custom_command() must exist + cmake_policy(SET CMP0040 NEW) +endif() + +if (POLICY CMP0045) + # error on non-existent target in get_target_property + cmake_policy(SET CMP0045 NEW) +endif() + +if (POLICY CMP0046) + # error on non-existent dependency in add_dependencies + cmake_policy(SET CMP0046 NEW) +endif() + +if (POLICY CMP0049) + # do not expand variables in target source entries + cmake_policy(SET CMP0049 NEW) +endif() + +if (POLICY CMP0050) + # disallow add_custom_command SOURCE signatures + cmake_policy(SET CMP0050 NEW) +endif() + +if (POLICY CMP0051) + # include TARGET_OBJECTS expressions in a target's SOURCES property + cmake_policy(SET CMP0051 NEW) +endif() + +if (POLICY CMP0053) + # simplify variable reference and escape sequence evaluation + cmake_policy(SET CMP0053 NEW) +endif() + +if (POLICY CMP0054) + # only interpret if() arguments as variables or keywords when unquoted + cmake_policy(SET CMP0054 NEW) +endif() + +if (POLICY CMP0055) + # strict checking for break() command + cmake_policy(SET CMP0055 NEW) +endif() + +include(CMakeParseArguments) +include(ProcessorCount) + +function (cotire_get_configuration_types _configsVar) + set (_configs "") + if (CMAKE_CONFIGURATION_TYPES) + list (APPEND _configs ${CMAKE_CONFIGURATION_TYPES}) + endif() + if (CMAKE_BUILD_TYPE) + list (APPEND _configs "${CMAKE_BUILD_TYPE}") + endif() + if (_configs) + list (REMOVE_DUPLICATES _configs) + set (${_configsVar} ${_configs} PARENT_SCOPE) + else() + set (${_configsVar} "None" PARENT_SCOPE) + endif() +endfunction() + +function (cotire_get_source_file_extension _sourceFile _extVar) + # get_filename_component returns extension from first occurrence of . in file name + # this function computes the extension from last occurrence of . in file name + string (FIND "${_sourceFile}" "." _index REVERSE) + if (_index GREATER -1) + math (EXPR _index "${_index} + 1") + string (SUBSTRING "${_sourceFile}" ${_index} -1 _sourceExt) + else() + set (_sourceExt "") + endif() + set (${_extVar} "${_sourceExt}" PARENT_SCOPE) +endfunction() + +macro (cotire_check_is_path_relative_to _path _isRelativeVar) + set (${_isRelativeVar} FALSE) + if (IS_ABSOLUTE "${_path}") + foreach (_dir ${ARGN}) + file (RELATIVE_PATH _relPath "${_dir}" "${_path}") + if (NOT _relPath OR (NOT IS_ABSOLUTE "${_relPath}" AND NOT "${_relPath}" MATCHES "^\\.\\.")) + set (${_isRelativeVar} TRUE) + break() + endif() + endforeach() + endif() +endmacro() + +function (cotire_filter_language_source_files _language _target _sourceFilesVar _excludedSourceFilesVar _cotiredSourceFilesVar) + if (CMAKE_${_language}_SOURCE_FILE_EXTENSIONS) + set (_languageExtensions "${CMAKE_${_language}_SOURCE_FILE_EXTENSIONS}") + else() + set (_languageExtensions "") + endif() + if (CMAKE_${_language}_IGNORE_EXTENSIONS) + set (_ignoreExtensions "${CMAKE_${_language}_IGNORE_EXTENSIONS}") + else() + set (_ignoreExtensions "") + endif() + if (COTIRE_UNITY_SOURCE_EXCLUDE_EXTENSIONS) + set (_excludeExtensions "${COTIRE_UNITY_SOURCE_EXCLUDE_EXTENSIONS}") + else() + set (_excludeExtensions "") + endif() + if (COTIRE_DEBUG AND _languageExtensions) + message (STATUS "${_language} source file extensions: ${_languageExtensions}") + endif() + if (COTIRE_DEBUG AND _ignoreExtensions) + message (STATUS "${_language} ignore extensions: ${_ignoreExtensions}") + endif() + if (COTIRE_DEBUG AND _excludeExtensions) + message (STATUS "${_language} exclude extensions: ${_excludeExtensions}") + endif() + if (CMAKE_VERSION VERSION_LESS "3.1.0") + set (_allSourceFiles ${ARGN}) + else() + # as of CMake 3.1 target sources may contain generator expressions + # since we cannot obtain required property information about source files added + # through generator expressions at configure time, we filter them out + string (GENEX_STRIP "${ARGN}" _allSourceFiles) + endif() + set (_filteredSourceFiles "") + set (_excludedSourceFiles "") + foreach (_sourceFile ${_allSourceFiles}) + get_source_file_property(_sourceIsHeaderOnly "${_sourceFile}" HEADER_FILE_ONLY) + get_source_file_property(_sourceIsExternal "${_sourceFile}" EXTERNAL_OBJECT) + get_source_file_property(_sourceIsSymbolic "${_sourceFile}" SYMBOLIC) + if (NOT _sourceIsHeaderOnly AND NOT _sourceIsExternal AND NOT _sourceIsSymbolic) + cotire_get_source_file_extension("${_sourceFile}" _sourceExt) + if (_sourceExt) + list (FIND _ignoreExtensions "${_sourceExt}" _ignoreIndex) + if (_ignoreIndex LESS 0) + list (FIND _excludeExtensions "${_sourceExt}" _excludeIndex) + if (_excludeIndex GREATER -1) + list (APPEND _excludedSourceFiles "${_sourceFile}") + else() + list (FIND _languageExtensions "${_sourceExt}" _sourceIndex) + if (_sourceIndex GREATER -1) + # consider source file unless it is excluded explicitly + get_source_file_property(_sourceIsExcluded "${_sourceFile}" COTIRE_EXCLUDED) + if (_sourceIsExcluded) + list (APPEND _excludedSourceFiles "${_sourceFile}") + else() + list (APPEND _filteredSourceFiles "${_sourceFile}") + endif() + else() + get_source_file_property(_sourceLanguage "${_sourceFile}" LANGUAGE) + if ("${_sourceLanguage}" STREQUAL "${_language}") + # add to excluded sources, if file is not ignored and has correct language without having the correct extension + list (APPEND _excludedSourceFiles "${_sourceFile}") + endif() + endif() + endif() + endif() + endif() + endif() + endforeach() + # separate filtered source files from already cotired ones + # the COTIRE_TARGET property of a source file may be set while a target is being processed by cotire + set (_sourceFiles "") + set (_cotiredSourceFiles "") + foreach (_sourceFile ${_filteredSourceFiles}) + get_source_file_property(_sourceIsCotired "${_sourceFile}" COTIRE_TARGET) + if (_sourceIsCotired) + list (APPEND _cotiredSourceFiles "${_sourceFile}") + else() + get_source_file_property(_sourceCompileFlags "${_sourceFile}" COMPILE_FLAGS) + if (_sourceCompileFlags) + # add to excluded sources, if file has custom compile flags + list (APPEND _excludedSourceFiles "${_sourceFile}") + else() + get_source_file_property(_sourceCompileOptions "${_sourceFile}" COMPILE_OPTIONS) + if (_sourceCompileOptions) + # add to excluded sources, if file has list of custom compile options + list (APPEND _excludedSourceFiles "${_sourceFile}") + else() + list (APPEND _sourceFiles "${_sourceFile}") + endif() + endif() + endif() + endforeach() + if (COTIRE_DEBUG) + if (_sourceFiles) + message (STATUS "Filtered ${_target} ${_language} sources: ${_sourceFiles}") + endif() + if (_excludedSourceFiles) + message (STATUS "Excluded ${_target} ${_language} sources: ${_excludedSourceFiles}") + endif() + if (_cotiredSourceFiles) + message (STATUS "Cotired ${_target} ${_language} sources: ${_cotiredSourceFiles}") + endif() + endif() + set (${_sourceFilesVar} ${_sourceFiles} PARENT_SCOPE) + set (${_excludedSourceFilesVar} ${_excludedSourceFiles} PARENT_SCOPE) + set (${_cotiredSourceFilesVar} ${_cotiredSourceFiles} PARENT_SCOPE) +endfunction() + +function (cotire_get_objects_with_property_on _filteredObjectsVar _property _type) + set (_filteredObjects "") + foreach (_object ${ARGN}) + get_property(_isSet ${_type} "${_object}" PROPERTY ${_property} SET) + if (_isSet) + get_property(_propertyValue ${_type} "${_object}" PROPERTY ${_property}) + if (_propertyValue) + list (APPEND _filteredObjects "${_object}") + endif() + endif() + endforeach() + set (${_filteredObjectsVar} ${_filteredObjects} PARENT_SCOPE) +endfunction() + +function (cotire_get_objects_with_property_off _filteredObjectsVar _property _type) + set (_filteredObjects "") + foreach (_object ${ARGN}) + get_property(_isSet ${_type} "${_object}" PROPERTY ${_property} SET) + if (_isSet) + get_property(_propertyValue ${_type} "${_object}" PROPERTY ${_property}) + if (NOT _propertyValue) + list (APPEND _filteredObjects "${_object}") + endif() + endif() + endforeach() + set (${_filteredObjectsVar} ${_filteredObjects} PARENT_SCOPE) +endfunction() + +function (cotire_get_source_file_property_values _valuesVar _property) + set (_values "") + foreach (_sourceFile ${ARGN}) + get_source_file_property(_propertyValue "${_sourceFile}" ${_property}) + if (_propertyValue) + list (APPEND _values "${_propertyValue}") + endif() + endforeach() + set (${_valuesVar} ${_values} PARENT_SCOPE) +endfunction() + +function (cotire_resolve_config_properties _configurations _propertiesVar) + set (_properties "") + foreach (_property ${ARGN}) + if ("${_property}" MATCHES "") + foreach (_config ${_configurations}) + string (TOUPPER "${_config}" _upperConfig) + string (REPLACE "" "${_upperConfig}" _configProperty "${_property}") + list (APPEND _properties ${_configProperty}) + endforeach() + else() + list (APPEND _properties ${_property}) + endif() + endforeach() + set (${_propertiesVar} ${_properties} PARENT_SCOPE) +endfunction() + +function (cotire_copy_set_properties _configurations _type _source _target) + cotire_resolve_config_properties("${_configurations}" _properties ${ARGN}) + foreach (_property ${_properties}) + get_property(_isSet ${_type} ${_source} PROPERTY ${_property} SET) + if (_isSet) + get_property(_propertyValue ${_type} ${_source} PROPERTY ${_property}) + set_property(${_type} ${_target} PROPERTY ${_property} "${_propertyValue}") + endif() + endforeach() +endfunction() + +function (cotire_get_target_usage_requirements _target _config _targetRequirementsVar) + set (_targetRequirements "") + get_target_property(_librariesToProcess ${_target} LINK_LIBRARIES) + while (_librariesToProcess) + # remove from head + list (GET _librariesToProcess 0 _library) + list (REMOVE_AT _librariesToProcess 0) + if (_library MATCHES "^\\$<\\$:([A-Za-z0-9_:-]+)>$") + set (_library "${CMAKE_MATCH_1}") + elseif (_config STREQUAL "None" AND _library MATCHES "^\\$<\\$:([A-Za-z0-9_:-]+)>$") + set (_library "${CMAKE_MATCH_1}") + endif() + if (TARGET ${_library}) + list (FIND _targetRequirements ${_library} _index) + if (_index LESS 0) + list (APPEND _targetRequirements ${_library}) + # BFS traversal of transitive libraries + get_target_property(_libraries ${_library} INTERFACE_LINK_LIBRARIES) + if (_libraries) + list (APPEND _librariesToProcess ${_libraries}) + list (REMOVE_DUPLICATES _librariesToProcess) + endif() + endif() + endif() + endwhile() + set (${_targetRequirementsVar} ${_targetRequirements} PARENT_SCOPE) +endfunction() + +function (cotire_filter_compile_flags _language _flagFilter _matchedOptionsVar _unmatchedOptionsVar) + if (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel") + set (_flagPrefix "[/-]") + else() + set (_flagPrefix "--?") + endif() + set (_optionFlag "") + set (_matchedOptions "") + set (_unmatchedOptions "") + foreach (_compileFlag ${ARGN}) + if (_compileFlag) + if (_optionFlag AND NOT "${_compileFlag}" MATCHES "^${_flagPrefix}") + # option with separate argument + list (APPEND _matchedOptions "${_compileFlag}") + set (_optionFlag "") + elseif ("${_compileFlag}" MATCHES "^(${_flagPrefix})(${_flagFilter})$") + # remember option + set (_optionFlag "${CMAKE_MATCH_2}") + elseif ("${_compileFlag}" MATCHES "^(${_flagPrefix})(${_flagFilter})(.+)$") + # option with joined argument + list (APPEND _matchedOptions "${CMAKE_MATCH_3}") + set (_optionFlag "") + else() + # flush remembered option + if (_optionFlag) + list (APPEND _matchedOptions "${_optionFlag}") + set (_optionFlag "") + endif() + # add to unfiltered options + list (APPEND _unmatchedOptions "${_compileFlag}") + endif() + endif() + endforeach() + if (_optionFlag) + list (APPEND _matchedOptions "${_optionFlag}") + endif() + if (COTIRE_DEBUG AND _matchedOptions) + message (STATUS "Filter ${_flagFilter} matched: ${_matchedOptions}") + endif() + if (COTIRE_DEBUG AND _unmatchedOptions) + message (STATUS "Filter ${_flagFilter} unmatched: ${_unmatchedOptions}") + endif() + set (${_matchedOptionsVar} ${_matchedOptions} PARENT_SCOPE) + set (${_unmatchedOptionsVar} ${_unmatchedOptions} PARENT_SCOPE) +endfunction() + +function (cotire_is_target_supported _target _isSupportedVar) + if (NOT TARGET "${_target}") + set (${_isSupportedVar} FALSE PARENT_SCOPE) + return() + endif() + get_target_property(_imported ${_target} IMPORTED) + if (_imported) + set (${_isSupportedVar} FALSE PARENT_SCOPE) + return() + endif() + get_target_property(_targetType ${_target} TYPE) + if (NOT _targetType MATCHES "EXECUTABLE|(STATIC|SHARED|MODULE|OBJECT)_LIBRARY") + set (${_isSupportedVar} FALSE PARENT_SCOPE) + return() + endif() + set (${_isSupportedVar} TRUE PARENT_SCOPE) +endfunction() + +function (cotire_get_target_compile_flags _config _language _target _flagsVar) + string (TOUPPER "${_config}" _upperConfig) + # collect options from CMake language variables + set (_compileFlags "") + if (CMAKE_${_language}_FLAGS) + set (_compileFlags "${_compileFlags} ${CMAKE_${_language}_FLAGS}") + endif() + if (CMAKE_${_language}_FLAGS_${_upperConfig}) + set (_compileFlags "${_compileFlags} ${CMAKE_${_language}_FLAGS_${_upperConfig}}") + endif() + if (_target) + # add target compile flags + get_target_property(_targetflags ${_target} COMPILE_FLAGS) + if (_targetflags) + set (_compileFlags "${_compileFlags} ${_targetflags}") + endif() + endif() + if (UNIX) + separate_arguments(_compileFlags UNIX_COMMAND "${_compileFlags}") + elseif(WIN32) + separate_arguments(_compileFlags WINDOWS_COMMAND "${_compileFlags}") + else() + separate_arguments(_compileFlags) + endif() + # target compile options + if (_target) + get_target_property(_targetOptions ${_target} COMPILE_OPTIONS) + if (_targetOptions) + list (APPEND _compileFlags ${_targetOptions}) + endif() + endif() + # interface compile options from linked library targets + if (_target) + set (_linkedTargets "") + cotire_get_target_usage_requirements(${_target} ${_config} _linkedTargets) + foreach (_linkedTarget ${_linkedTargets}) + get_target_property(_targetOptions ${_linkedTarget} INTERFACE_COMPILE_OPTIONS) + if (_targetOptions) + list (APPEND _compileFlags ${_targetOptions}) + endif() + endforeach() + endif() + # handle language standard properties + if (CMAKE_${_language}_STANDARD_DEFAULT) + # used compiler supports language standard levels + if (_target) + get_target_property(_targetLanguageStandard ${_target} ${_language}_STANDARD) + if (_targetLanguageStandard) + set (_type "EXTENSION") + get_property(_isSet TARGET ${_target} PROPERTY ${_language}_EXTENSIONS SET) + if (_isSet) + get_target_property(_targetUseLanguageExtensions ${_target} ${_language}_EXTENSIONS) + if (NOT _targetUseLanguageExtensions) + set (_type "STANDARD") + endif() + endif() + if (CMAKE_${_language}${_targetLanguageStandard}_${_type}_COMPILE_OPTION) + list (APPEND _compileFlags "${CMAKE_${_language}${_targetLanguageStandard}_${_type}_COMPILE_OPTION}") + endif() + endif() + endif() + endif() + # handle the POSITION_INDEPENDENT_CODE target property + if (_target) + get_target_property(_targetPIC ${_target} POSITION_INDEPENDENT_CODE) + if (_targetPIC) + get_target_property(_targetType ${_target} TYPE) + if (_targetType STREQUAL "EXECUTABLE" AND CMAKE_${_language}_COMPILE_OPTIONS_PIE) + list (APPEND _compileFlags "${CMAKE_${_language}_COMPILE_OPTIONS_PIE}") + elseif (CMAKE_${_language}_COMPILE_OPTIONS_PIC) + list (APPEND _compileFlags "${CMAKE_${_language}_COMPILE_OPTIONS_PIC}") + endif() + endif() + endif() + # handle visibility target properties + if (_target) + get_target_property(_targetVisibility ${_target} ${_language}_VISIBILITY_PRESET) + if (_targetVisibility AND CMAKE_${_language}_COMPILE_OPTIONS_VISIBILITY) + list (APPEND _compileFlags "${CMAKE_${_language}_COMPILE_OPTIONS_VISIBILITY}${_targetVisibility}") + endif() + get_target_property(_targetVisibilityInlines ${_target} VISIBILITY_INLINES_HIDDEN) + if (_targetVisibilityInlines AND CMAKE_${_language}_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN) + list (APPEND _compileFlags "${CMAKE_${_language}_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN}") + endif() + endif() + # platform specific flags + if (APPLE) + get_target_property(_architectures ${_target} OSX_ARCHITECTURES_${_upperConfig}) + if (NOT _architectures) + get_target_property(_architectures ${_target} OSX_ARCHITECTURES) + endif() + if (_architectures) + foreach (_arch ${_architectures}) + list (APPEND _compileFlags "-arch" "${_arch}") + endforeach() + endif() + if (CMAKE_OSX_SYSROOT) + if (CMAKE_${_language}_SYSROOT_FLAG) + list (APPEND _compileFlags "${CMAKE_${_language}_SYSROOT_FLAG}" "${CMAKE_OSX_SYSROOT}") + else() + list (APPEND _compileFlags "-isysroot" "${CMAKE_OSX_SYSROOT}") + endif() + endif() + if (CMAKE_OSX_DEPLOYMENT_TARGET) + if (CMAKE_${_language}_OSX_DEPLOYMENT_TARGET_FLAG) + list (APPEND _compileFlags "${CMAKE_${_language}_OSX_DEPLOYMENT_TARGET_FLAG}${CMAKE_OSX_DEPLOYMENT_TARGET}") + else() + list (APPEND _compileFlags "-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") + endif() + endif() + endif() + if (COTIRE_DEBUG AND _compileFlags) + message (STATUS "Target ${_target} compile flags: ${_compileFlags}") + endif() + set (${_flagsVar} ${_compileFlags} PARENT_SCOPE) +endfunction() + +function (cotire_get_target_include_directories _config _language _target _includeDirsVar _systemIncludeDirsVar) + set (_includeDirs "") + set (_systemIncludeDirs "") + # default include dirs + if (CMAKE_INCLUDE_CURRENT_DIR) + list (APPEND _includeDirs "${CMAKE_CURRENT_BINARY_DIR}") + list (APPEND _includeDirs "${CMAKE_CURRENT_SOURCE_DIR}") + endif() + set (_targetFlags "") + cotire_get_target_compile_flags("${_config}" "${_language}" "${_target}" _targetFlags) + # parse additional include directories from target compile flags + if (CMAKE_INCLUDE_FLAG_${_language}) + string (STRIP "${CMAKE_INCLUDE_FLAG_${_language}}" _includeFlag) + string (REGEX REPLACE "^[-/]+" "" _includeFlag "${_includeFlag}") + if (_includeFlag) + set (_dirs "") + cotire_filter_compile_flags("${_language}" "${_includeFlag}" _dirs _ignore ${_targetFlags}) + if (_dirs) + list (APPEND _includeDirs ${_dirs}) + endif() + endif() + endif() + # parse additional system include directories from target compile flags + if (CMAKE_INCLUDE_SYSTEM_FLAG_${_language}) + string (STRIP "${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}" _includeFlag) + string (REGEX REPLACE "^[-/]+" "" _includeFlag "${_includeFlag}") + if (_includeFlag) + set (_dirs "") + cotire_filter_compile_flags("${_language}" "${_includeFlag}" _dirs _ignore ${_targetFlags}) + if (_dirs) + list (APPEND _systemIncludeDirs ${_dirs}) + endif() + endif() + endif() + # target include directories + get_directory_property(_dirs DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" INCLUDE_DIRECTORIES) + if (_target) + get_target_property(_targetDirs ${_target} INCLUDE_DIRECTORIES) + if (_targetDirs) + list (APPEND _dirs ${_targetDirs}) + endif() + get_target_property(_targetDirs ${_target} INTERFACE_SYSTEM_INCLUDE_DIRECTORIES) + if (_targetDirs) + list (APPEND _systemIncludeDirs ${_targetDirs}) + endif() + endif() + # interface include directories from linked library targets + if (_target) + set (_linkedTargets "") + cotire_get_target_usage_requirements(${_target} ${_config} _linkedTargets) + foreach (_linkedTarget ${_linkedTargets}) + get_target_property(_linkedTargetType ${_linkedTarget} TYPE) + if (CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE AND NOT CMAKE_VERSION VERSION_LESS "3.4.0" AND + _linkedTargetType MATCHES "(STATIC|SHARED|MODULE|OBJECT)_LIBRARY") + # CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE refers to CMAKE_CURRENT_BINARY_DIR and CMAKE_CURRENT_SOURCE_DIR + # at the time, when the target was created. These correspond to the target properties BINARY_DIR and SOURCE_DIR + # which are only available with CMake 3.4 or later. + get_target_property(_targetDirs ${_linkedTarget} BINARY_DIR) + if (_targetDirs) + list (APPEND _dirs ${_targetDirs}) + endif() + get_target_property(_targetDirs ${_linkedTarget} SOURCE_DIR) + if (_targetDirs) + list (APPEND _dirs ${_targetDirs}) + endif() + endif() + get_target_property(_targetDirs ${_linkedTarget} INTERFACE_INCLUDE_DIRECTORIES) + if (_targetDirs) + list (APPEND _dirs ${_targetDirs}) + endif() + get_target_property(_targetDirs ${_linkedTarget} INTERFACE_SYSTEM_INCLUDE_DIRECTORIES) + if (_targetDirs) + list (APPEND _systemIncludeDirs ${_targetDirs}) + endif() + endforeach() + endif() + if (dirs) + list (REMOVE_DUPLICATES _dirs) + endif() + list (LENGTH _includeDirs _projectInsertIndex) + foreach (_dir ${_dirs}) + if (CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE) + cotire_check_is_path_relative_to("${_dir}" _isRelative "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}") + if (_isRelative) + list (LENGTH _includeDirs _len) + if (_len EQUAL _projectInsertIndex) + list (APPEND _includeDirs "${_dir}") + else() + list (INSERT _includeDirs _projectInsertIndex "${_dir}") + endif() + math (EXPR _projectInsertIndex "${_projectInsertIndex} + 1") + else() + list (APPEND _includeDirs "${_dir}") + endif() + else() + list (APPEND _includeDirs "${_dir}") + endif() + endforeach() + list (REMOVE_DUPLICATES _includeDirs) + list (REMOVE_DUPLICATES _systemIncludeDirs) + if (CMAKE_${_language}_IMPLICIT_INCLUDE_DIRECTORIES) + list (REMOVE_ITEM _includeDirs ${CMAKE_${_language}_IMPLICIT_INCLUDE_DIRECTORIES}) + endif() + if (WIN32 AND NOT MINGW) + # convert Windows paths in include directories to CMake paths + if (_includeDirs) + set (_paths "") + foreach (_dir ${_includeDirs}) + file (TO_CMAKE_PATH "${_dir}" _path) + list (APPEND _paths "${_path}") + endforeach() + set (_includeDirs ${_paths}) + endif() + if (_systemIncludeDirs) + set (_paths "") + foreach (_dir ${_systemIncludeDirs}) + file (TO_CMAKE_PATH "${_dir}" _path) + list (APPEND _paths "${_path}") + endforeach() + set (_systemIncludeDirs ${_paths}) + endif() + endif() + if (COTIRE_DEBUG AND _includeDirs) + message (STATUS "Target ${_target} include dirs: ${_includeDirs}") + endif() + set (${_includeDirsVar} ${_includeDirs} PARENT_SCOPE) + if (COTIRE_DEBUG AND _systemIncludeDirs) + message (STATUS "Target ${_target} system include dirs: ${_systemIncludeDirs}") + endif() + set (${_systemIncludeDirsVar} ${_systemIncludeDirs} PARENT_SCOPE) +endfunction() + +function (cotire_get_target_export_symbol _target _exportSymbolVar) + set (_exportSymbol "") + get_target_property(_targetType ${_target} TYPE) + get_target_property(_enableExports ${_target} ENABLE_EXPORTS) + if (_targetType MATCHES "(SHARED|MODULE)_LIBRARY" OR + (_targetType STREQUAL "EXECUTABLE" AND _enableExports)) + get_target_property(_exportSymbol ${_target} DEFINE_SYMBOL) + if (NOT _exportSymbol) + set (_exportSymbol "${_target}_EXPORTS") + endif() + string (MAKE_C_IDENTIFIER "${_exportSymbol}" _exportSymbol) + endif() + set (${_exportSymbolVar} ${_exportSymbol} PARENT_SCOPE) +endfunction() + +function (cotire_get_target_compile_definitions _config _language _target _definitionsVar) + string (TOUPPER "${_config}" _upperConfig) + set (_configDefinitions "") + # CMAKE_INTDIR for multi-configuration build systems + if (NOT "${CMAKE_CFG_INTDIR}" STREQUAL ".") + list (APPEND _configDefinitions "CMAKE_INTDIR=\"${_config}\"") + endif() + # target export define symbol + cotire_get_target_export_symbol("${_target}" _defineSymbol) + if (_defineSymbol) + list (APPEND _configDefinitions "${_defineSymbol}") + endif() + # directory compile definitions + get_directory_property(_definitions DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMPILE_DEFINITIONS) + if (_definitions) + list (APPEND _configDefinitions ${_definitions}) + endif() + get_directory_property(_definitions DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMPILE_DEFINITIONS_${_upperConfig}) + if (_definitions) + list (APPEND _configDefinitions ${_definitions}) + endif() + # target compile definitions + get_target_property(_definitions ${_target} COMPILE_DEFINITIONS) + if (_definitions) + list (APPEND _configDefinitions ${_definitions}) + endif() + get_target_property(_definitions ${_target} COMPILE_DEFINITIONS_${_upperConfig}) + if (_definitions) + list (APPEND _configDefinitions ${_definitions}) + endif() + # interface compile definitions from linked library targets + set (_linkedTargets "") + cotire_get_target_usage_requirements(${_target} ${_config} _linkedTargets) + foreach (_linkedTarget ${_linkedTargets}) + get_target_property(_definitions ${_linkedTarget} INTERFACE_COMPILE_DEFINITIONS) + if (_definitions) + list (APPEND _configDefinitions ${_definitions}) + endif() + endforeach() + # parse additional compile definitions from target compile flags + # and do not look at directory compile definitions, which we already handled + set (_targetFlags "") + cotire_get_target_compile_flags("${_config}" "${_language}" "${_target}" _targetFlags) + cotire_filter_compile_flags("${_language}" "D" _definitions _ignore ${_targetFlags}) + if (_definitions) + list (APPEND _configDefinitions ${_definitions}) + endif() + list (REMOVE_DUPLICATES _configDefinitions) + if (COTIRE_DEBUG AND _configDefinitions) + message (STATUS "Target ${_target} compile definitions: ${_configDefinitions}") + endif() + set (${_definitionsVar} ${_configDefinitions} PARENT_SCOPE) +endfunction() + +function (cotire_get_target_compiler_flags _config _language _target _compilerFlagsVar) + # parse target compile flags omitting compile definitions and include directives + set (_targetFlags "") + cotire_get_target_compile_flags("${_config}" "${_language}" "${_target}" _targetFlags) + set (_flagFilter "D") + if (CMAKE_INCLUDE_FLAG_${_language}) + string (STRIP "${CMAKE_INCLUDE_FLAG_${_language}}" _includeFlag) + string (REGEX REPLACE "^[-/]+" "" _includeFlag "${_includeFlag}") + if (_includeFlag) + set (_flagFilter "${_flagFilter}|${_includeFlag}") + endif() + endif() + if (CMAKE_INCLUDE_SYSTEM_FLAG_${_language}) + string (STRIP "${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}" _includeFlag) + string (REGEX REPLACE "^[-/]+" "" _includeFlag "${_includeFlag}") + if (_includeFlag) + set (_flagFilter "${_flagFilter}|${_includeFlag}") + endif() + endif() + set (_compilerFlags "") + cotire_filter_compile_flags("${_language}" "${_flagFilter}" _ignore _compilerFlags ${_targetFlags}) + if (COTIRE_DEBUG AND _compilerFlags) + message (STATUS "Target ${_target} compiler flags: ${_compilerFlags}") + endif() + set (${_compilerFlagsVar} ${_compilerFlags} PARENT_SCOPE) +endfunction() + +function (cotire_add_sys_root_paths _pathsVar) + if (APPLE) + if (CMAKE_OSX_SYSROOT AND CMAKE_${_language}_HAS_ISYSROOT) + foreach (_path IN LISTS ${_pathsVar}) + if (IS_ABSOLUTE "${_path}") + get_filename_component(_path "${CMAKE_OSX_SYSROOT}/${_path}" ABSOLUTE) + if (EXISTS "${_path}") + list (APPEND ${_pathsVar} "${_path}") + endif() + endif() + endforeach() + endif() + endif() + set (${_pathsVar} ${${_pathsVar}} PARENT_SCOPE) +endfunction() + +function (cotire_get_source_extra_properties _sourceFile _pattern _resultVar) + set (_extraProperties ${ARGN}) + set (_result "") + if (_extraProperties) + list (FIND _extraProperties "${_sourceFile}" _index) + if (_index GREATER -1) + math (EXPR _index "${_index} + 1") + list (LENGTH _extraProperties _len) + math (EXPR _len "${_len} - 1") + foreach (_index RANGE ${_index} ${_len}) + list (GET _extraProperties ${_index} _value) + if (_value MATCHES "${_pattern}") + list (APPEND _result "${_value}") + else() + break() + endif() + endforeach() + endif() + endif() + set (${_resultVar} ${_result} PARENT_SCOPE) +endfunction() + +function (cotire_get_source_compile_definitions _config _language _sourceFile _definitionsVar) + set (_compileDefinitions "") + if (NOT CMAKE_SCRIPT_MODE_FILE) + string (TOUPPER "${_config}" _upperConfig) + get_source_file_property(_definitions "${_sourceFile}" COMPILE_DEFINITIONS) + if (_definitions) + list (APPEND _compileDefinitions ${_definitions}) + endif() + get_source_file_property(_definitions "${_sourceFile}" COMPILE_DEFINITIONS_${_upperConfig}) + if (_definitions) + list (APPEND _compileDefinitions ${_definitions}) + endif() + endif() + cotire_get_source_extra_properties("${_sourceFile}" "^[a-zA-Z0-9_]+(=.*)?$" _definitions ${ARGN}) + if (_definitions) + list (APPEND _compileDefinitions ${_definitions}) + endif() + if (COTIRE_DEBUG AND _compileDefinitions) + message (STATUS "Source ${_sourceFile} compile definitions: ${_compileDefinitions}") + endif() + set (${_definitionsVar} ${_compileDefinitions} PARENT_SCOPE) +endfunction() + +function (cotire_get_source_files_compile_definitions _config _language _definitionsVar) + set (_configDefinitions "") + foreach (_sourceFile ${ARGN}) + cotire_get_source_compile_definitions("${_config}" "${_language}" "${_sourceFile}" _sourceDefinitions) + if (_sourceDefinitions) + list (APPEND _configDefinitions "${_sourceFile}" ${_sourceDefinitions} "-") + endif() + endforeach() + set (${_definitionsVar} ${_configDefinitions} PARENT_SCOPE) +endfunction() + +function (cotire_get_source_undefs _sourceFile _property _sourceUndefsVar) + set (_sourceUndefs "") + if (NOT CMAKE_SCRIPT_MODE_FILE) + get_source_file_property(_undefs "${_sourceFile}" ${_property}) + if (_undefs) + list (APPEND _sourceUndefs ${_undefs}) + endif() + endif() + cotire_get_source_extra_properties("${_sourceFile}" "^[a-zA-Z0-9_]+$" _undefs ${ARGN}) + if (_undefs) + list (APPEND _sourceUndefs ${_undefs}) + endif() + if (COTIRE_DEBUG AND _sourceUndefs) + message (STATUS "Source ${_sourceFile} ${_property} undefs: ${_sourceUndefs}") + endif() + set (${_sourceUndefsVar} ${_sourceUndefs} PARENT_SCOPE) +endfunction() + +function (cotire_get_source_files_undefs _property _sourceUndefsVar) + set (_sourceUndefs "") + foreach (_sourceFile ${ARGN}) + cotire_get_source_undefs("${_sourceFile}" ${_property} _undefs) + if (_undefs) + list (APPEND _sourceUndefs "${_sourceFile}" ${_undefs} "-") + endif() + endforeach() + set (${_sourceUndefsVar} ${_sourceUndefs} PARENT_SCOPE) +endfunction() + +macro (cotire_set_cmd_to_prologue _cmdVar) + set (${_cmdVar} "${CMAKE_COMMAND}") + if (COTIRE_DEBUG) + list (APPEND ${_cmdVar} "--warn-uninitialized") + endif() + list (APPEND ${_cmdVar} "-DCOTIRE_BUILD_TYPE:STRING=$") + if (XCODE) + list (APPEND ${_cmdVar} "-DXCODE:BOOL=TRUE") + endif() + if (COTIRE_VERBOSE) + list (APPEND ${_cmdVar} "-DCOTIRE_VERBOSE:BOOL=ON") + elseif("${CMAKE_GENERATOR}" MATCHES "Makefiles") + list (APPEND ${_cmdVar} "-DCOTIRE_VERBOSE:BOOL=$(VERBOSE)") + endif() +endmacro() + +function (cotire_init_compile_cmd _cmdVar _language _compilerLauncher _compilerExe _compilerArg1) + if (NOT _compilerLauncher) + set (_compilerLauncher ${CMAKE_${_language}_COMPILER_LAUNCHER}) + endif() + if (NOT _compilerExe) + set (_compilerExe "${CMAKE_${_language}_COMPILER}") + endif() + if (NOT _compilerArg1) + set (_compilerArg1 ${CMAKE_${_language}_COMPILER_ARG1}) + endif() + if (WIN32) + file (TO_NATIVE_PATH "${_compilerExe}" _compilerExe) + endif() + string (STRIP "${_compilerArg1}" _compilerArg1) + if ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") + # compiler launcher is only supported for Makefile and Ninja + set (${_cmdVar} ${_compilerLauncher} "${_compilerExe}" ${_compilerArg1} PARENT_SCOPE) + else() + set (${_cmdVar} "${_compilerExe}" ${_compilerArg1} PARENT_SCOPE) + endif() +endfunction() + +macro (cotire_add_definitions_to_cmd _cmdVar _language) + foreach (_definition ${ARGN}) + if (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel") + list (APPEND ${_cmdVar} "/D${_definition}") + else() + list (APPEND ${_cmdVar} "-D${_definition}") + endif() + endforeach() +endmacro() + +function (cotire_add_includes_to_cmd _cmdVar _language _includesVar _systemIncludesVar) + set (_includeDirs ${${_includesVar}} ${${_systemIncludesVar}}) + if (_includeDirs) + list (REMOVE_DUPLICATES _includeDirs) + foreach (_include ${_includeDirs}) + if (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel") + file (TO_NATIVE_PATH "${_include}" _include) + list (APPEND ${_cmdVar} "${CMAKE_INCLUDE_FLAG_${_language}}${CMAKE_INCLUDE_FLAG_SEP_${_language}}${_include}") + else() + set (_index -1) + if ("${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}" MATCHES ".+") + list (FIND ${_systemIncludesVar} "${_include}" _index) + endif() + if (_index GREATER -1) + list (APPEND ${_cmdVar} "${CMAKE_INCLUDE_SYSTEM_FLAG_${_language}}${CMAKE_INCLUDE_FLAG_SEP_${_language}}${_include}") + else() + list (APPEND ${_cmdVar} "${CMAKE_INCLUDE_FLAG_${_language}}${CMAKE_INCLUDE_FLAG_SEP_${_language}}${_include}") + endif() + endif() + endforeach() + endif() + set (${_cmdVar} ${${_cmdVar}} PARENT_SCOPE) +endfunction() + +function (cotire_add_frameworks_to_cmd _cmdVar _language _includesVar _systemIncludesVar) + if (APPLE) + set (_frameworkDirs "") + foreach (_include ${${_includesVar}}) + if (IS_ABSOLUTE "${_include}" AND _include MATCHES "\\.framework$") + get_filename_component(_frameworkDir "${_include}" DIRECTORY) + list (APPEND _frameworkDirs "${_frameworkDir}") + endif() + endforeach() + set (_systemFrameworkDirs "") + foreach (_include ${${_systemIncludesVar}}) + if (IS_ABSOLUTE "${_include}" AND _include MATCHES "\\.framework$") + get_filename_component(_frameworkDir "${_include}" DIRECTORY) + list (APPEND _systemFrameworkDirs "${_frameworkDir}") + endif() + endforeach() + if (_systemFrameworkDirs) + list (APPEND _frameworkDirs ${_systemFrameworkDirs}) + endif() + if (_frameworkDirs) + list (REMOVE_DUPLICATES _frameworkDirs) + foreach (_frameworkDir ${_frameworkDirs}) + set (_index -1) + if ("${CMAKE_${_language}_SYSTEM_FRAMEWORK_SEARCH_FLAG}" MATCHES ".+") + list (FIND _systemFrameworkDirs "${_frameworkDir}" _index) + endif() + if (_index GREATER -1) + list (APPEND ${_cmdVar} "${CMAKE_${_language}_SYSTEM_FRAMEWORK_SEARCH_FLAG}${_frameworkDir}") + else() + list (APPEND ${_cmdVar} "${CMAKE_${_language}_FRAMEWORK_SEARCH_FLAG}${_frameworkDir}") + endif() + endforeach() + endif() + endif() + set (${_cmdVar} ${${_cmdVar}} PARENT_SCOPE) +endfunction() + +macro (cotire_add_compile_flags_to_cmd _cmdVar) + foreach (_flag ${ARGN}) + list (APPEND ${_cmdVar} "${_flag}") + endforeach() +endmacro() + +function (cotire_check_file_up_to_date _fileIsUpToDateVar _file) + if (EXISTS "${_file}") + set (_triggerFile "") + foreach (_dependencyFile ${ARGN}) + if (EXISTS "${_dependencyFile}") + # IS_NEWER_THAN returns TRUE if both files have the same timestamp + # thus we do the comparison in both directions to exclude ties + if ("${_dependencyFile}" IS_NEWER_THAN "${_file}" AND + NOT "${_file}" IS_NEWER_THAN "${_dependencyFile}") + set (_triggerFile "${_dependencyFile}") + break() + endif() + endif() + endforeach() + if (_triggerFile) + if (COTIRE_VERBOSE) + get_filename_component(_fileName "${_file}" NAME) + message (STATUS "${_fileName} update triggered by ${_triggerFile} change.") + endif() + set (${_fileIsUpToDateVar} FALSE PARENT_SCOPE) + else() + if (COTIRE_VERBOSE) + get_filename_component(_fileName "${_file}" NAME) + message (STATUS "${_fileName} is up-to-date.") + endif() + set (${_fileIsUpToDateVar} TRUE PARENT_SCOPE) + endif() + else() + if (COTIRE_VERBOSE) + get_filename_component(_fileName "${_file}" NAME) + message (STATUS "${_fileName} does not exist yet.") + endif() + set (${_fileIsUpToDateVar} FALSE PARENT_SCOPE) + endif() +endfunction() + +macro (cotire_find_closest_relative_path _headerFile _includeDirs _relPathVar) + set (${_relPathVar} "") + foreach (_includeDir ${_includeDirs}) + if (IS_DIRECTORY "${_includeDir}") + file (RELATIVE_PATH _relPath "${_includeDir}" "${_headerFile}") + if (NOT IS_ABSOLUTE "${_relPath}" AND NOT "${_relPath}" MATCHES "^\\.\\.") + string (LENGTH "${${_relPathVar}}" _closestLen) + string (LENGTH "${_relPath}" _relLen) + if (_closestLen EQUAL 0 OR _relLen LESS _closestLen) + set (${_relPathVar} "${_relPath}") + endif() + endif() + elseif ("${_includeDir}" STREQUAL "${_headerFile}") + # if path matches exactly, return short non-empty string + set (${_relPathVar} "1") + break() + endif() + endforeach() +endmacro() + +macro (cotire_check_header_file_location _headerFile _insideIncludeDirs _outsideIncludeDirs _headerIsInside) + # check header path against ignored and honored include directories + cotire_find_closest_relative_path("${_headerFile}" "${_insideIncludeDirs}" _insideRelPath) + if (_insideRelPath) + # header is inside, but could be become outside if there is a shorter outside match + cotire_find_closest_relative_path("${_headerFile}" "${_outsideIncludeDirs}" _outsideRelPath) + if (_outsideRelPath) + string (LENGTH "${_insideRelPath}" _insideRelPathLen) + string (LENGTH "${_outsideRelPath}" _outsideRelPathLen) + if (_outsideRelPathLen LESS _insideRelPathLen) + set (${_headerIsInside} FALSE) + else() + set (${_headerIsInside} TRUE) + endif() + else() + set (${_headerIsInside} TRUE) + endif() + else() + # header is outside + set (${_headerIsInside} FALSE) + endif() +endmacro() + +macro (cotire_check_ignore_header_file_path _headerFile _headerIsIgnoredVar) + if (NOT EXISTS "${_headerFile}") + set (${_headerIsIgnoredVar} TRUE) + elseif (IS_DIRECTORY "${_headerFile}") + set (${_headerIsIgnoredVar} TRUE) + elseif ("${_headerFile}" MATCHES "\\.\\.|[_-]fixed" AND "${_headerFile}" MATCHES "\\.h$") + # heuristic: ignore C headers with embedded parent directory references or "-fixed" or "_fixed" in path + # these often stem from using GCC #include_next tricks, which may break the precompiled header compilation + # with the error message "error: no include path in which to search for header.h" + set (${_headerIsIgnoredVar} TRUE) + else() + set (${_headerIsIgnoredVar} FALSE) + endif() +endmacro() + +macro (cotire_check_ignore_header_file_ext _headerFile _ignoreExtensionsVar _headerIsIgnoredVar) + # check header file extension + cotire_get_source_file_extension("${_headerFile}" _headerFileExt) + set (${_headerIsIgnoredVar} FALSE) + if (_headerFileExt) + list (FIND ${_ignoreExtensionsVar} "${_headerFileExt}" _index) + if (_index GREATER -1) + set (${_headerIsIgnoredVar} TRUE) + endif() + endif() +endmacro() + +macro (cotire_parse_line _line _headerFileVar _headerDepthVar) + if (MSVC) + # cl.exe /showIncludes produces different output, depending on the language pack used, e.g.: + # English: "Note: including file: C:\directory\file" + # German: "Hinweis: Einlesen der Datei: C:\directory\file" + # We use a very general regular expression, relying on the presence of the : characters + if (_line MATCHES "( +)([a-zA-Z]:[^:]+)$") + string (LENGTH "${CMAKE_MATCH_1}" ${_headerDepthVar}) + get_filename_component(${_headerFileVar} "${CMAKE_MATCH_2}" ABSOLUTE) + else() + set (${_headerFileVar} "") + set (${_headerDepthVar} 0) + endif() + else() + if (_line MATCHES "^(\\.+) (.*)$") + # GCC like output + string (LENGTH "${CMAKE_MATCH_1}" ${_headerDepthVar}) + if (IS_ABSOLUTE "${CMAKE_MATCH_2}") + set (${_headerFileVar} "${CMAKE_MATCH_2}") + else() + get_filename_component(${_headerFileVar} "${CMAKE_MATCH_2}" REALPATH) + endif() + else() + set (${_headerFileVar} "") + set (${_headerDepthVar} 0) + endif() + endif() +endmacro() + +function (cotire_parse_includes _language _scanOutput _ignoredIncludeDirs _honoredIncludeDirs _ignoredExtensions _selectedIncludesVar _unparsedLinesVar) + if (WIN32) + # prevent CMake macro invocation errors due to backslash characters in Windows paths + string (REPLACE "\\" "/" _scanOutput "${_scanOutput}") + endif() + # canonize slashes + string (REPLACE "//" "/" _scanOutput "${_scanOutput}") + # prevent semicolon from being interpreted as a line separator + string (REPLACE ";" "\\;" _scanOutput "${_scanOutput}") + # then separate lines + string (REGEX REPLACE "\n" ";" _scanOutput "${_scanOutput}") + list (LENGTH _scanOutput _len) + # remove duplicate lines to speed up parsing + list (REMOVE_DUPLICATES _scanOutput) + list (LENGTH _scanOutput _uniqueLen) + if (COTIRE_VERBOSE OR COTIRE_DEBUG) + message (STATUS "Scanning ${_uniqueLen} unique lines of ${_len} for includes") + if (_ignoredExtensions) + message (STATUS "Ignored extensions: ${_ignoredExtensions}") + endif() + if (_ignoredIncludeDirs) + message (STATUS "Ignored paths: ${_ignoredIncludeDirs}") + endif() + if (_honoredIncludeDirs) + message (STATUS "Included paths: ${_honoredIncludeDirs}") + endif() + endif() + set (_sourceFiles ${ARGN}) + set (_selectedIncludes "") + set (_unparsedLines "") + # stack keeps track of inside/outside project status of processed header files + set (_headerIsInsideStack "") + foreach (_line IN LISTS _scanOutput) + if (_line) + cotire_parse_line("${_line}" _headerFile _headerDepth) + if (_headerFile) + cotire_check_header_file_location("${_headerFile}" "${_ignoredIncludeDirs}" "${_honoredIncludeDirs}" _headerIsInside) + if (COTIRE_DEBUG) + message (STATUS "${_headerDepth}: ${_headerFile} ${_headerIsInside}") + endif() + # update stack + list (LENGTH _headerIsInsideStack _stackLen) + if (_headerDepth GREATER _stackLen) + math (EXPR _stackLen "${_stackLen} + 1") + foreach (_index RANGE ${_stackLen} ${_headerDepth}) + list (APPEND _headerIsInsideStack ${_headerIsInside}) + endforeach() + else() + foreach (_index RANGE ${_headerDepth} ${_stackLen}) + list (REMOVE_AT _headerIsInsideStack -1) + endforeach() + list (APPEND _headerIsInsideStack ${_headerIsInside}) + endif() + if (COTIRE_DEBUG) + message (STATUS "${_headerIsInsideStack}") + endif() + # header is a candidate if it is outside project + if (NOT _headerIsInside) + # get parent header file's inside/outside status + if (_headerDepth GREATER 1) + math (EXPR _index "${_headerDepth} - 2") + list (GET _headerIsInsideStack ${_index} _parentHeaderIsInside) + else() + set (_parentHeaderIsInside TRUE) + endif() + # select header file if parent header file is inside project + # (e.g., a project header file that includes a standard header file) + if (_parentHeaderIsInside) + cotire_check_ignore_header_file_path("${_headerFile}" _headerIsIgnored) + if (NOT _headerIsIgnored) + cotire_check_ignore_header_file_ext("${_headerFile}" _ignoredExtensions _headerIsIgnored) + if (NOT _headerIsIgnored) + list (APPEND _selectedIncludes "${_headerFile}") + else() + # fix header's inside status on stack, it is ignored by extension now + list (REMOVE_AT _headerIsInsideStack -1) + list (APPEND _headerIsInsideStack TRUE) + endif() + endif() + if (COTIRE_DEBUG) + message (STATUS "${_headerFile} ${_ignoredExtensions} ${_headerIsIgnored}") + endif() + endif() + endif() + else() + if (MSVC) + # for cl.exe do not keep unparsed lines which solely consist of a source file name + string (FIND "${_sourceFiles}" "${_line}" _index) + if (_index LESS 0) + list (APPEND _unparsedLines "${_line}") + endif() + else() + list (APPEND _unparsedLines "${_line}") + endif() + endif() + endif() + endforeach() + list (REMOVE_DUPLICATES _selectedIncludes) + set (${_selectedIncludesVar} ${_selectedIncludes} PARENT_SCOPE) + set (${_unparsedLinesVar} ${_unparsedLines} PARENT_SCOPE) +endfunction() + +function (cotire_scan_includes _includesVar) + set(_options "") + set(_oneValueArgs COMPILER_ID COMPILER_EXECUTABLE COMPILER_ARG1 COMPILER_VERSION LANGUAGE UNPARSED_LINES SCAN_RESULT) + set(_multiValueArgs COMPILE_DEFINITIONS COMPILE_FLAGS INCLUDE_DIRECTORIES SYSTEM_INCLUDE_DIRECTORIES + IGNORE_PATH INCLUDE_PATH IGNORE_EXTENSIONS INCLUDE_PRIORITY_PATH COMPILER_LAUNCHER) + cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + set (_sourceFiles ${_option_UNPARSED_ARGUMENTS}) + if (NOT _option_LANGUAGE) + set (_option_LANGUAGE "CXX") + endif() + if (NOT _option_COMPILER_ID) + set (_option_COMPILER_ID "${CMAKE_${_option_LANGUAGE}_ID}") + endif() + if (NOT _option_COMPILER_VERSION) + set (_option_COMPILER_VERSION "${CMAKE_${_option_LANGUAGE}_COMPILER_VERSION}") + endif() + cotire_init_compile_cmd(_cmd "${_option_LANGUAGE}" "${_option_COMPILER_LAUNCHER}" "${_option_COMPILER_EXECUTABLE}" "${_option_COMPILER_ARG1}") + cotire_add_definitions_to_cmd(_cmd "${_option_LANGUAGE}" ${_option_COMPILE_DEFINITIONS}) + cotire_add_compile_flags_to_cmd(_cmd ${_option_COMPILE_FLAGS}) + cotire_add_includes_to_cmd(_cmd "${_option_LANGUAGE}" _option_INCLUDE_DIRECTORIES _option_SYSTEM_INCLUDE_DIRECTORIES) + cotire_add_frameworks_to_cmd(_cmd "${_option_LANGUAGE}" _option_INCLUDE_DIRECTORIES _option_SYSTEM_INCLUDE_DIRECTORIES) + cotire_add_makedep_flags("${_option_LANGUAGE}" "${_option_COMPILER_ID}" "${_option_COMPILER_VERSION}" _cmd) + # only consider existing source files for scanning + set (_existingSourceFiles "") + foreach (_sourceFile ${_sourceFiles}) + if (EXISTS "${_sourceFile}") + list (APPEND _existingSourceFiles "${_sourceFile}") + endif() + endforeach() + if (NOT _existingSourceFiles) + set (${_includesVar} "" PARENT_SCOPE) + return() + endif() + # add source files to be scanned + if (WIN32) + foreach (_sourceFile ${_existingSourceFiles}) + file (TO_NATIVE_PATH "${_sourceFile}" _sourceFileNative) + list (APPEND _cmd "${_sourceFileNative}") + endforeach() + else() + list (APPEND _cmd ${_existingSourceFiles}) + endif() + if (COTIRE_VERBOSE) + message (STATUS "execute_process: ${_cmd}") + endif() + if (MSVC_IDE OR _option_COMPILER_ID MATCHES "MSVC") + # cl.exe messes with the output streams unless the environment variable VS_UNICODE_OUTPUT is cleared + unset (ENV{VS_UNICODE_OUTPUT}) + endif() + execute_process( + COMMAND ${_cmd} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE _result + OUTPUT_QUIET + ERROR_VARIABLE _output) + if (_result) + message (STATUS "Result ${_result} scanning includes of ${_existingSourceFiles}.") + endif() + cotire_parse_includes( + "${_option_LANGUAGE}" "${_output}" + "${_option_IGNORE_PATH}" "${_option_INCLUDE_PATH}" + "${_option_IGNORE_EXTENSIONS}" + _includes _unparsedLines + ${_sourceFiles}) + if (_option_INCLUDE_PRIORITY_PATH) + set (_sortedIncludes "") + foreach (_priorityPath ${_option_INCLUDE_PRIORITY_PATH}) + foreach (_include ${_includes}) + string (FIND ${_include} ${_priorityPath} _position) + if (_position GREATER -1) + list (APPEND _sortedIncludes ${_include}) + endif() + endforeach() + endforeach() + if (_sortedIncludes) + list (INSERT _includes 0 ${_sortedIncludes}) + list (REMOVE_DUPLICATES _includes) + endif() + endif() + set (${_includesVar} ${_includes} PARENT_SCOPE) + if (_option_UNPARSED_LINES) + set (${_option_UNPARSED_LINES} ${_unparsedLines} PARENT_SCOPE) + endif() + if (_option_SCAN_RESULT) + set (${_option_SCAN_RESULT} ${_result} PARENT_SCOPE) + endif() +endfunction() + +macro (cotire_append_undefs _contentsVar) + set (_undefs ${ARGN}) + if (_undefs) + list (REMOVE_DUPLICATES _undefs) + foreach (_definition ${_undefs}) + list (APPEND ${_contentsVar} "#undef ${_definition}") + endforeach() + endif() +endmacro() + +macro (cotire_comment_str _language _commentText _commentVar) + if ("${_language}" STREQUAL "CMAKE") + set (${_commentVar} "# ${_commentText}") + else() + set (${_commentVar} "/* ${_commentText} */") + endif() +endmacro() + +function (cotire_write_file _language _file _contents _force) + get_filename_component(_moduleName "${COTIRE_CMAKE_MODULE_FILE}" NAME) + cotire_comment_str("${_language}" "${_moduleName} ${COTIRE_CMAKE_MODULE_VERSION} generated file" _header1) + cotire_comment_str("${_language}" "${_file}" _header2) + set (_contents "${_header1}\n${_header2}\n${_contents}") + if (COTIRE_DEBUG) + message (STATUS "${_contents}") + endif() + if (_force OR NOT EXISTS "${_file}") + file (WRITE "${_file}" "${_contents}") + else() + file (READ "${_file}" _oldContents) + if (NOT "${_oldContents}" STREQUAL "${_contents}") + file (WRITE "${_file}" "${_contents}") + else() + if (COTIRE_DEBUG) + message (STATUS "${_file} unchanged") + endif() + endif() + endif() +endfunction() + +function (cotire_generate_unity_source _unityFile) + set(_options "") + set(_oneValueArgs LANGUAGE) + set(_multiValueArgs + DEPENDS SOURCES_COMPILE_DEFINITIONS + PRE_UNDEFS SOURCES_PRE_UNDEFS POST_UNDEFS SOURCES_POST_UNDEFS PROLOGUE EPILOGUE) + cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + if (_option_DEPENDS) + cotire_check_file_up_to_date(_unityFileIsUpToDate "${_unityFile}" ${_option_DEPENDS}) + if (_unityFileIsUpToDate) + return() + endif() + endif() + set (_sourceFiles ${_option_UNPARSED_ARGUMENTS}) + if (NOT _option_PRE_UNDEFS) + set (_option_PRE_UNDEFS "") + endif() + if (NOT _option_SOURCES_PRE_UNDEFS) + set (_option_SOURCES_PRE_UNDEFS "") + endif() + if (NOT _option_POST_UNDEFS) + set (_option_POST_UNDEFS "") + endif() + if (NOT _option_SOURCES_POST_UNDEFS) + set (_option_SOURCES_POST_UNDEFS "") + endif() + set (_contents "") + if (_option_PROLOGUE) + list (APPEND _contents ${_option_PROLOGUE}) + endif() + if (_option_LANGUAGE AND _sourceFiles) + if ("${_option_LANGUAGE}" STREQUAL "CXX") + list (APPEND _contents "#ifdef __cplusplus") + elseif ("${_option_LANGUAGE}" STREQUAL "C") + list (APPEND _contents "#ifndef __cplusplus") + endif() + endif() + set (_compileUndefinitions "") + foreach (_sourceFile ${_sourceFiles}) + cotire_get_source_compile_definitions( + "${_option_CONFIGURATION}" "${_option_LANGUAGE}" "${_sourceFile}" _compileDefinitions + ${_option_SOURCES_COMPILE_DEFINITIONS}) + cotire_get_source_undefs("${_sourceFile}" COTIRE_UNITY_SOURCE_PRE_UNDEFS _sourcePreUndefs ${_option_SOURCES_PRE_UNDEFS}) + cotire_get_source_undefs("${_sourceFile}" COTIRE_UNITY_SOURCE_POST_UNDEFS _sourcePostUndefs ${_option_SOURCES_POST_UNDEFS}) + if (_option_PRE_UNDEFS) + list (APPEND _compileUndefinitions ${_option_PRE_UNDEFS}) + endif() + if (_sourcePreUndefs) + list (APPEND _compileUndefinitions ${_sourcePreUndefs}) + endif() + if (_compileUndefinitions) + cotire_append_undefs(_contents ${_compileUndefinitions}) + set (_compileUndefinitions "") + endif() + if (_sourcePostUndefs) + list (APPEND _compileUndefinitions ${_sourcePostUndefs}) + endif() + if (_option_POST_UNDEFS) + list (APPEND _compileUndefinitions ${_option_POST_UNDEFS}) + endif() + foreach (_definition ${_compileDefinitions}) + if (_definition MATCHES "^([a-zA-Z0-9_]+)=(.+)$") + list (APPEND _contents "#define ${CMAKE_MATCH_1} ${CMAKE_MATCH_2}") + list (INSERT _compileUndefinitions 0 "${CMAKE_MATCH_1}") + else() + list (APPEND _contents "#define ${_definition}") + list (INSERT _compileUndefinitions 0 "${_definition}") + endif() + endforeach() + # use absolute path as source file location + get_filename_component(_sourceFileLocation "${_sourceFile}" ABSOLUTE) + if (WIN32) + file (TO_NATIVE_PATH "${_sourceFileLocation}" _sourceFileLocation) + endif() + list (APPEND _contents "#include \"${_sourceFileLocation}\"") + endforeach() + if (_compileUndefinitions) + cotire_append_undefs(_contents ${_compileUndefinitions}) + set (_compileUndefinitions "") + endif() + if (_option_LANGUAGE AND _sourceFiles) + list (APPEND _contents "#endif") + endif() + if (_option_EPILOGUE) + list (APPEND _contents ${_option_EPILOGUE}) + endif() + list (APPEND _contents "") + string (REPLACE ";" "\n" _contents "${_contents}") + if (COTIRE_VERBOSE) + message ("${_contents}") + endif() + cotire_write_file("${_option_LANGUAGE}" "${_unityFile}" "${_contents}" TRUE) +endfunction() + +function (cotire_generate_prefix_header _prefixFile) + set(_options "") + set(_oneValueArgs LANGUAGE COMPILER_EXECUTABLE COMPILER_ARG1 COMPILER_ID COMPILER_VERSION) + set(_multiValueArgs DEPENDS COMPILE_DEFINITIONS COMPILE_FLAGS + INCLUDE_DIRECTORIES SYSTEM_INCLUDE_DIRECTORIES IGNORE_PATH INCLUDE_PATH + IGNORE_EXTENSIONS INCLUDE_PRIORITY_PATH COMPILER_LAUNCHER) + cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + if (NOT _option_COMPILER_ID) + set (_option_COMPILER_ID "${CMAKE_${_option_LANGUAGE}_ID}") + endif() + if (NOT _option_COMPILER_VERSION) + set (_option_COMPILER_VERSION "${CMAKE_${_option_LANGUAGE}_COMPILER_VERSION}") + endif() + if (_option_DEPENDS) + cotire_check_file_up_to_date(_prefixFileIsUpToDate "${_prefixFile}" ${_option_DEPENDS}) + if (_prefixFileIsUpToDate) + # create empty log file + set (_unparsedLinesFile "${_prefixFile}.log") + file (WRITE "${_unparsedLinesFile}" "") + return() + endif() + endif() + set (_prologue "") + set (_epilogue "") + if (_option_COMPILER_ID MATCHES "Clang") + set (_prologue "#pragma clang system_header") + elseif (_option_COMPILER_ID MATCHES "GNU") + set (_prologue "#pragma GCC system_header") + elseif (_option_COMPILER_ID MATCHES "MSVC") + set (_prologue "#pragma warning(push, 0)") + set (_epilogue "#pragma warning(pop)") + elseif (_option_COMPILER_ID MATCHES "Intel") + # Intel compiler requires hdrstop pragma to stop generating PCH file + set (_epilogue "#pragma hdrstop") + endif() + set (_sourceFiles ${_option_UNPARSED_ARGUMENTS}) + cotire_scan_includes(_selectedHeaders ${_sourceFiles} + LANGUAGE "${_option_LANGUAGE}" + COMPILER_LAUNCHER "${_option_COMPILER_LAUNCHER}" + COMPILER_EXECUTABLE "${_option_COMPILER_EXECUTABLE}" + COMPILER_ARG1 "${_option_COMPILER_ARG1}" + COMPILER_ID "${_option_COMPILER_ID}" + COMPILER_VERSION "${_option_COMPILER_VERSION}" + COMPILE_DEFINITIONS ${_option_COMPILE_DEFINITIONS} + COMPILE_FLAGS ${_option_COMPILE_FLAGS} + INCLUDE_DIRECTORIES ${_option_INCLUDE_DIRECTORIES} + SYSTEM_INCLUDE_DIRECTORIES ${_option_SYSTEM_INCLUDE_DIRECTORIES} + IGNORE_PATH ${_option_IGNORE_PATH} + INCLUDE_PATH ${_option_INCLUDE_PATH} + IGNORE_EXTENSIONS ${_option_IGNORE_EXTENSIONS} + INCLUDE_PRIORITY_PATH ${_option_INCLUDE_PRIORITY_PATH} + UNPARSED_LINES _unparsedLines + SCAN_RESULT _scanResult) + cotire_generate_unity_source("${_prefixFile}" + PROLOGUE ${_prologue} EPILOGUE ${_epilogue} LANGUAGE "${_option_LANGUAGE}" ${_selectedHeaders}) + set (_unparsedLinesFile "${_prefixFile}.log") + if (_unparsedLines) + if (COTIRE_VERBOSE OR _scanResult OR NOT _selectedHeaders) + list (LENGTH _unparsedLines _skippedLineCount) + if (WIN32) + file (TO_NATIVE_PATH "${_unparsedLinesFile}" _unparsedLinesLogPath) + else() + set (_unparsedLinesLogPath "${_unparsedLinesFile}") + endif() + message (STATUS "${_skippedLineCount} line(s) skipped, see ${_unparsedLinesLogPath}") + endif() + string (REPLACE ";" "\n" _unparsedLines "${_unparsedLines}") + endif() + file (WRITE "${_unparsedLinesFile}" "${_unparsedLines}\n") +endfunction() + +function (cotire_add_makedep_flags _language _compilerID _compilerVersion _flagsVar) + set (_flags ${${_flagsVar}}) + if (_compilerID MATCHES "MSVC") + # cl.exe options used + # /nologo suppresses display of sign-on banner + # /TC treat all files named on the command line as C source files + # /TP treat all files named on the command line as C++ source files + # /EP preprocess to stdout without #line directives + # /showIncludes list include files + set (_sourceFileTypeC "/TC") + set (_sourceFileTypeCXX "/TP") + if (_flags) + # append to list + list (APPEND _flags /nologo "${_sourceFileType${_language}}" /EP /showIncludes) + else() + # return as a flag string + set (_flags "${_sourceFileType${_language}} /EP /showIncludes") + endif() + elseif (_compilerID MATCHES "GNU") + # GCC options used + # -H print the name of each header file used + # -E invoke preprocessor + # -fdirectives-only do not expand macros, requires GCC >= 4.3 + if (_flags) + # append to list + list (APPEND _flags -H -E) + if (NOT "${_compilerVersion}" VERSION_LESS "4.3.0") + list (APPEND _flags -fdirectives-only) + endif() + else() + # return as a flag string + set (_flags "-H -E") + if (NOT "${_compilerVersion}" VERSION_LESS "4.3.0") + set (_flags "${_flags} -fdirectives-only") + endif() + endif() + elseif (_compilerID MATCHES "Clang") + if (UNIX) + # Clang options used + # -H print the name of each header file used + # -E invoke preprocessor + # -fno-color-diagnostics do not print diagnostics in color + # -Eonly just run preprocessor, no output + if (_flags) + # append to list + list (APPEND _flags -H -E -fno-color-diagnostics -Xclang -Eonly) + else() + # return as a flag string + set (_flags "-H -E -fno-color-diagnostics -Xclang -Eonly") + endif() + elseif (WIN32) + # Clang-cl.exe options used + # /TC treat all files named on the command line as C source files + # /TP treat all files named on the command line as C++ source files + # /EP preprocess to stdout without #line directives + # -H print the name of each header file used + # -fno-color-diagnostics do not print diagnostics in color + # -Eonly just run preprocessor, no output + set (_sourceFileTypeC "/TC") + set (_sourceFileTypeCXX "/TP") + if (_flags) + # append to list + list (APPEND _flags "${_sourceFileType${_language}}" /EP -fno-color-diagnostics -Xclang -H -Xclang -Eonly) + else() + # return as a flag string + set (_flags "${_sourceFileType${_language}} /EP -fno-color-diagnostics -Xclang -H -Xclang -Eonly") + endif() + endif() + elseif (_compilerID MATCHES "Intel") + if (WIN32) + # Windows Intel options used + # /nologo do not display compiler version information + # /QH display the include file order + # /EP preprocess to stdout, omitting #line directives + # /TC process all source or unrecognized file types as C source files + # /TP process all source or unrecognized file types as C++ source files + set (_sourceFileTypeC "/TC") + set (_sourceFileTypeCXX "/TP") + if (_flags) + # append to list + list (APPEND _flags /nologo "${_sourceFileType${_language}}" /EP /QH) + else() + # return as a flag string + set (_flags "${_sourceFileType${_language}} /EP /QH") + endif() + else() + # Linux / Mac OS X Intel options used + # -H print the name of each header file used + # -EP preprocess to stdout, omitting #line directives + # -Kc++ process all source or unrecognized file types as C++ source files + if (_flags) + # append to list + if ("${_language}" STREQUAL "CXX") + list (APPEND _flags -Kc++) + endif() + list (APPEND _flags -H -EP) + else() + # return as a flag string + if ("${_language}" STREQUAL "CXX") + set (_flags "-Kc++ ") + endif() + set (_flags "${_flags}-H -EP") + endif() + endif() + else() + message (FATAL_ERROR "cotire: unsupported ${_language} compiler ${_compilerID} version ${_compilerVersion}.") + endif() + set (${_flagsVar} ${_flags} PARENT_SCOPE) +endfunction() + +function (cotire_add_pch_compilation_flags _language _compilerID _compilerVersion _prefixFile _pchFile _hostFile _flagsVar) + set (_flags ${${_flagsVar}}) + if (_compilerID MATCHES "MSVC") + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) + file (TO_NATIVE_PATH "${_hostFile}" _hostFileNative) + # cl.exe options used + # /Yc creates a precompiled header file + # /Fp specifies precompiled header binary file name + # /FI forces inclusion of file + # /TC treat all files named on the command line as C source files + # /TP treat all files named on the command line as C++ source files + # /Zs syntax check only + # /Zm precompiled header memory allocation scaling factor + set (_sourceFileTypeC "/TC") + set (_sourceFileTypeCXX "/TP") + if (_flags) + # append to list + list (APPEND _flags /nologo "${_sourceFileType${_language}}" + "/Yc${_prefixFileNative}" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}" /Zs "${_hostFileNative}") + if (COTIRE_PCH_MEMORY_SCALING_FACTOR) + list (APPEND _flags "/Zm${COTIRE_PCH_MEMORY_SCALING_FACTOR}") + endif() + else() + # return as a flag string + set (_flags "/Yc\"${_prefixFileNative}\" /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") + if (COTIRE_PCH_MEMORY_SCALING_FACTOR) + set (_flags "${_flags} /Zm${COTIRE_PCH_MEMORY_SCALING_FACTOR}") + endif() + endif() + elseif (_compilerID MATCHES "GNU") + # GCC options used + # -x specify the source language + # -c compile but do not link + # -o place output in file + # note that we cannot use -w to suppress all warnings upon pre-compiling, because turning off a warning may + # alter compile flags as a side effect (e.g., -Wwrite-string implies -fconst-strings) + set (_xLanguage_C "c-header") + set (_xLanguage_CXX "c++-header") + if (_flags) + # append to list + list (APPEND _flags -x "${_xLanguage_${_language}}" -c "${_prefixFile}" -o "${_pchFile}") + else() + # return as a flag string + set (_flags "-x ${_xLanguage_${_language}} -c \"${_prefixFile}\" -o \"${_pchFile}\"") + endif() + elseif (_compilerID MATCHES "Clang") + if (UNIX) + # Clang options used + # -x specify the source language + # -c compile but do not link + # -o place output in file + # -fno-pch-timestamp disable inclusion of timestamp in precompiled headers (clang 4.0.0+) + set (_xLanguage_C "c-header") + set (_xLanguage_CXX "c++-header") + if (_flags) + # append to list + list (APPEND _flags -x "${_xLanguage_${_language}}" -c "${_prefixFile}" -o "${_pchFile}") + if (NOT "${_compilerVersion}" VERSION_LESS "4.0.0") + list (APPEND _flags -Xclang -fno-pch-timestamp) + endif() + else() + # return as a flag string + set (_flags "-x ${_xLanguage_${_language}} -c \"${_prefixFile}\" -o \"${_pchFile}\"") + if (NOT "${_compilerVersion}" VERSION_LESS "4.0.0") + set (_flags "${_flags} -Xclang -fno-pch-timestamp") + endif() + endif() + elseif (WIN32) + # Clang-cl.exe options used + # /Yc creates a precompiled header file + # /Fp specifies precompiled header binary file name + # /FI forces inclusion of file + # /Zs syntax check only + # /TC treat all files named on the command line as C source files + # /TP treat all files named on the command line as C++ source files + set (_sourceFileTypeC "/TC") + set (_sourceFileTypeCXX "/TP") + if (_flags) + # append to list + list (APPEND _flags "${_sourceFileType${_language}}" + "/Yc${_prefixFile}" "/Fp${_pchFile}" "/FI${_prefixFile}" /Zs "${_hostFile}") + else() + # return as a flag string + set (_flags "/Yc\"${_prefixFile}\" /Fp\"${_pchFile}\" /FI\"${_prefixFile}\"") + endif() + endif() + elseif (_compilerID MATCHES "Intel") + if (WIN32) + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) + file (TO_NATIVE_PATH "${_hostFile}" _hostFileNative) + # Windows Intel options used + # /nologo do not display compiler version information + # /Yc create a precompiled header (PCH) file + # /Fp specify a path or file name for precompiled header files + # /FI tells the preprocessor to include a specified file name as the header file + # /TC process all source or unrecognized file types as C source files + # /TP process all source or unrecognized file types as C++ source files + # /Zs syntax check only + # /Wpch-messages enable diagnostics related to pre-compiled headers (requires Intel XE 2013 Update 2) + set (_sourceFileTypeC "/TC") + set (_sourceFileTypeCXX "/TP") + if (_flags) + # append to list + list (APPEND _flags /nologo "${_sourceFileType${_language}}" + "/Yc" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}" /Zs "${_hostFileNative}") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + list (APPEND _flags "/Wpch-messages") + endif() + else() + # return as a flag string + set (_flags "/Yc /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + set (_flags "${_flags} /Wpch-messages") + endif() + endif() + else() + # Linux / Mac OS X Intel options used + # -pch-dir location for precompiled header files + # -pch-create name of the precompiled header (PCH) to create + # -Kc++ process all source or unrecognized file types as C++ source files + # -fsyntax-only check only for correct syntax + # -Wpch-messages enable diagnostics related to pre-compiled headers (requires Intel XE 2013 Update 2) + get_filename_component(_pchDir "${_pchFile}" DIRECTORY) + get_filename_component(_pchName "${_pchFile}" NAME) + set (_xLanguage_C "c-header") + set (_xLanguage_CXX "c++-header") + set (_pchSuppressMessages FALSE) + if ("${CMAKE_${_language}_FLAGS}" MATCHES ".*-Wno-pch-messages.*") + set(_pchSuppressMessages TRUE) + endif() + if (_flags) + # append to list + if ("${_language}" STREQUAL "CXX") + list (APPEND _flags -Kc++) + endif() + list (APPEND _flags -include "${_prefixFile}" -pch-dir "${_pchDir}" -pch-create "${_pchName}" -fsyntax-only "${_hostFile}") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + if (NOT _pchSuppressMessages) + list (APPEND _flags -Wpch-messages) + endif() + endif() + else() + # return as a flag string + set (_flags "-include \"${_prefixFile}\" -pch-dir \"${_pchDir}\" -pch-create \"${_pchName}\"") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + if (NOT _pchSuppressMessages) + set (_flags "${_flags} -Wpch-messages") + endif() + endif() + endif() + endif() + else() + message (FATAL_ERROR "cotire: unsupported ${_language} compiler ${_compilerID} version ${_compilerVersion}.") + endif() + set (${_flagsVar} ${_flags} PARENT_SCOPE) +endfunction() + +function (cotire_add_prefix_pch_inclusion_flags _language _compilerID _compilerVersion _prefixFile _pchFile _flagsVar) + set (_flags ${${_flagsVar}}) + if (_compilerID MATCHES "MSVC") + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) + # cl.exe options used + # /Yu uses a precompiled header file during build + # /Fp specifies precompiled header binary file name + # /FI forces inclusion of file + # /Zm precompiled header memory allocation scaling factor + if (_pchFile) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) + if (_flags) + # append to list + list (APPEND _flags "/Yu${_prefixFileNative}" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}") + if (COTIRE_PCH_MEMORY_SCALING_FACTOR) + list (APPEND _flags "/Zm${COTIRE_PCH_MEMORY_SCALING_FACTOR}") + endif() + else() + # return as a flag string + set (_flags "/Yu\"${_prefixFileNative}\" /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") + if (COTIRE_PCH_MEMORY_SCALING_FACTOR) + set (_flags "${_flags} /Zm${COTIRE_PCH_MEMORY_SCALING_FACTOR}") + endif() + endif() + else() + # no precompiled header, force inclusion of prefix header + if (_flags) + # append to list + list (APPEND _flags "/FI${_prefixFileNative}") + else() + # return as a flag string + set (_flags "/FI\"${_prefixFileNative}\"") + endif() + endif() + elseif (_compilerID MATCHES "GNU") + # GCC options used + # -include process include file as the first line of the primary source file + # -Winvalid-pch warns if precompiled header is found but cannot be used + # note: ccache requires the -include flag to be used in order to process precompiled header correctly + if (_flags) + # append to list + list (APPEND _flags -Winvalid-pch -include "${_prefixFile}") + else() + # return as a flag string + set (_flags "-Winvalid-pch -include \"${_prefixFile}\"") + endif() + elseif (_compilerID MATCHES "Clang") + if (UNIX) + # Clang options used + # -include process include file as the first line of the primary source file + # note: ccache requires the -include flag to be used in order to process precompiled header correctly + if (_flags) + # append to list + list (APPEND _flags -include "${_prefixFile}") + else() + # return as a flag string + set (_flags "-include \"${_prefixFile}\"") + endif() + elseif (WIN32) + # Clang-cl.exe options used + # /Yu uses a precompiled header file during build + # /Fp specifies precompiled header binary file name + # /FI forces inclusion of file + if (_pchFile) + if (_flags) + # append to list + list (APPEND _flags "/Yu${_prefixFile}" "/Fp${_pchFile}" "/FI${_prefixFile}") + else() + # return as a flag string + set (_flags "/Yu\"${_prefixFile}\" /Fp\"${_pchFile}\" /FI\"${_prefixFile}\"") + endif() + else() + # no precompiled header, force inclusion of prefix header + if (_flags) + # append to list + list (APPEND _flags "/FI${_prefixFile}") + else() + # return as a flag string + set (_flags "/FI\"${_prefixFile}\"") + endif() + endif() + endif() + elseif (_compilerID MATCHES "Intel") + if (WIN32) + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileNative) + # Windows Intel options used + # /Yu use a precompiled header (PCH) file + # /Fp specify a path or file name for precompiled header files + # /FI tells the preprocessor to include a specified file name as the header file + # /Wpch-messages enable diagnostics related to pre-compiled headers (requires Intel XE 2013 Update 2) + if (_pchFile) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileNative) + if (_flags) + # append to list + list (APPEND _flags "/Yu" "/Fp${_pchFileNative}" "/FI${_prefixFileNative}") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + list (APPEND _flags "/Wpch-messages") + endif() + else() + # return as a flag string + set (_flags "/Yu /Fp\"${_pchFileNative}\" /FI\"${_prefixFileNative}\"") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + set (_flags "${_flags} /Wpch-messages") + endif() + endif() + else() + # no precompiled header, force inclusion of prefix header + if (_flags) + # append to list + list (APPEND _flags "/FI${_prefixFileNative}") + else() + # return as a flag string + set (_flags "/FI\"${_prefixFileNative}\"") + endif() + endif() + else() + # Linux / Mac OS X Intel options used + # -pch-dir location for precompiled header files + # -pch-use name of the precompiled header (PCH) to use + # -include process include file as the first line of the primary source file + # -Wpch-messages enable diagnostics related to pre-compiled headers (requires Intel XE 2013 Update 2) + if (_pchFile) + get_filename_component(_pchDir "${_pchFile}" DIRECTORY) + get_filename_component(_pchName "${_pchFile}" NAME) + set (_pchSuppressMessages FALSE) + if ("${CMAKE_${_language}_FLAGS}" MATCHES ".*-Wno-pch-messages.*") + set(_pchSuppressMessages TRUE) + endif() + if (_flags) + # append to list + list (APPEND _flags -include "${_prefixFile}" -pch-dir "${_pchDir}" -pch-use "${_pchName}") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + if (NOT _pchSuppressMessages) + list (APPEND _flags -Wpch-messages) + endif() + endif() + else() + # return as a flag string + set (_flags "-include \"${_prefixFile}\" -pch-dir \"${_pchDir}\" -pch-use \"${_pchName}\"") + if (NOT "${_compilerVersion}" VERSION_LESS "13.1.0") + if (NOT _pchSuppressMessages) + set (_flags "${_flags} -Wpch-messages") + endif() + endif() + endif() + else() + # no precompiled header, force inclusion of prefix header + if (_flags) + # append to list + list (APPEND _flags -include "${_prefixFile}") + else() + # return as a flag string + set (_flags "-include \"${_prefixFile}\"") + endif() + endif() + endif() + else() + message (FATAL_ERROR "cotire: unsupported ${_language} compiler ${_compilerID} version ${_compilerVersion}.") + endif() + set (${_flagsVar} ${_flags} PARENT_SCOPE) +endfunction() + +function (cotire_precompile_prefix_header _prefixFile _pchFile _hostFile) + set(_options "") + set(_oneValueArgs COMPILER_EXECUTABLE COMPILER_ARG1 COMPILER_ID COMPILER_VERSION LANGUAGE) + set(_multiValueArgs COMPILE_DEFINITIONS COMPILE_FLAGS INCLUDE_DIRECTORIES SYSTEM_INCLUDE_DIRECTORIES SYS COMPILER_LAUNCHER) + cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + if (NOT _option_LANGUAGE) + set (_option_LANGUAGE "CXX") + endif() + if (NOT _option_COMPILER_ID) + set (_option_COMPILER_ID "${CMAKE_${_option_LANGUAGE}_ID}") + endif() + if (NOT _option_COMPILER_VERSION) + set (_option_COMPILER_VERSION "${CMAKE_${_option_LANGUAGE}_COMPILER_VERSION}") + endif() + cotire_init_compile_cmd(_cmd "${_option_LANGUAGE}" "${_option_COMPILER_LAUNCHER}" "${_option_COMPILER_EXECUTABLE}" "${_option_COMPILER_ARG1}") + cotire_add_definitions_to_cmd(_cmd "${_option_LANGUAGE}" ${_option_COMPILE_DEFINITIONS}) + cotire_add_compile_flags_to_cmd(_cmd ${_option_COMPILE_FLAGS}) + cotire_add_includes_to_cmd(_cmd "${_option_LANGUAGE}" _option_INCLUDE_DIRECTORIES _option_SYSTEM_INCLUDE_DIRECTORIES) + cotire_add_frameworks_to_cmd(_cmd "${_option_LANGUAGE}" _option_INCLUDE_DIRECTORIES _option_SYSTEM_INCLUDE_DIRECTORIES) + cotire_add_pch_compilation_flags( + "${_option_LANGUAGE}" "${_option_COMPILER_ID}" "${_option_COMPILER_VERSION}" + "${_prefixFile}" "${_pchFile}" "${_hostFile}" _cmd) + if (COTIRE_VERBOSE) + message (STATUS "execute_process: ${_cmd}") + endif() + if (MSVC_IDE OR _option_COMPILER_ID MATCHES "MSVC") + # cl.exe messes with the output streams unless the environment variable VS_UNICODE_OUTPUT is cleared + unset (ENV{VS_UNICODE_OUTPUT}) + elseif (_option_COMPILER_ID MATCHES "Clang" AND _option_COMPILER_VERSION VERSION_LESS "4.0.0") + if (_option_COMPILER_LAUNCHER MATCHES "ccache" OR + _option_COMPILER_EXECUTABLE MATCHES "ccache") + # Newer versions of Clang embed a compilation timestamp into the precompiled header binary, + # which results in "file has been modified since the precompiled header was built" errors if ccache is used. + # We work around the problem by disabling ccache upon pre-compiling the prefix header. + set (ENV{CCACHE_DISABLE} "true") + endif() + endif() + execute_process( + COMMAND ${_cmd} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE _result) + if (_result) + message (FATAL_ERROR "cotire: error ${_result} precompiling ${_prefixFile}.") + endif() +endfunction() + +function (cotire_check_precompiled_header_support _language _target _msgVar) + set (_unsupportedCompiler + "Precompiled headers not supported for ${_language} compiler ${CMAKE_${_language}_COMPILER_ID}") + if (CMAKE_${_language}_COMPILER_ID MATCHES "MSVC") + # PCH supported since Visual Studio C++ 6.0 + # and CMake does not support an earlier version + set (${_msgVar} "" PARENT_SCOPE) + elseif (CMAKE_${_language}_COMPILER_ID MATCHES "GNU") + # GCC PCH support requires version >= 3.4 + if ("${CMAKE_${_language}_COMPILER_VERSION}" VERSION_LESS "3.4.0") + set (${_msgVar} "${_unsupportedCompiler} version ${CMAKE_${_language}_COMPILER_VERSION}." PARENT_SCOPE) + else() + set (${_msgVar} "" PARENT_SCOPE) + endif() + elseif (CMAKE_${_language}_COMPILER_ID MATCHES "Clang") + if (UNIX) + # all Unix Clang versions have PCH support + set (${_msgVar} "" PARENT_SCOPE) + elseif (WIN32) + # only clang-cl is supported under Windows + get_filename_component(_compilerName "${CMAKE_${_language}_COMPILER}" NAME_WE) + if (NOT _compilerName MATCHES "cl$") + set (${_msgVar} "${_unsupportedCompiler} version ${CMAKE_${_language}_COMPILER_VERSION}. Use clang-cl instead." PARENT_SCOPE) + endif() + endif() + elseif (CMAKE_${_language}_COMPILER_ID MATCHES "Intel") + # Intel PCH support requires version >= 8.0.0 + if ("${CMAKE_${_language}_COMPILER_VERSION}" VERSION_LESS "8.0.0") + set (${_msgVar} "${_unsupportedCompiler} version ${CMAKE_${_language}_COMPILER_VERSION}." PARENT_SCOPE) + else() + set (${_msgVar} "" PARENT_SCOPE) + endif() + else() + set (${_msgVar} "${_unsupportedCompiler}." PARENT_SCOPE) + endif() + # check if ccache is used as a compiler launcher + get_target_property(_launcher ${_target} ${_language}_COMPILER_LAUNCHER) + get_filename_component(_realCompilerExe "${CMAKE_${_language}_COMPILER}" REALPATH) + if (_realCompilerExe MATCHES "ccache" OR _launcher MATCHES "ccache") + # verify that ccache configuration is compatible with precompiled headers + # always check environment variable CCACHE_SLOPPINESS, because earlier versions of ccache + # do not report the "sloppiness" setting correctly upon printing ccache configuration + if (DEFINED ENV{CCACHE_SLOPPINESS}) + if (NOT "$ENV{CCACHE_SLOPPINESS}" MATCHES "pch_defines" OR + NOT "$ENV{CCACHE_SLOPPINESS}" MATCHES "time_macros") + set (${_msgVar} + "ccache requires the environment variable CCACHE_SLOPPINESS to be set to \"pch_defines,time_macros\"." + PARENT_SCOPE) + endif() + else() + if (_realCompilerExe MATCHES "ccache") + set (_ccacheExe "${_realCompilerExe}") + else() + set (_ccacheExe "${_launcher}") + endif() + execute_process( + COMMAND "${_ccacheExe}" "--print-config" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + RESULT_VARIABLE _result + OUTPUT_VARIABLE _ccacheConfig OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET) + if (_result) + set (${_msgVar} "ccache configuration cannot be determined." PARENT_SCOPE) + elseif (NOT _ccacheConfig MATCHES "sloppiness.*=.*time_macros" OR + NOT _ccacheConfig MATCHES "sloppiness.*=.*pch_defines") + set (${_msgVar} + "ccache requires configuration setting \"sloppiness\" to be set to \"pch_defines,time_macros\"." + PARENT_SCOPE) + endif() + endif() + endif() + if (APPLE) + # PCH compilation not supported by GCC / Clang for multi-architecture builds (e.g., i386, x86_64) + cotire_get_configuration_types(_configs) + foreach (_config ${_configs}) + set (_targetFlags "") + cotire_get_target_compile_flags("${_config}" "${_language}" "${_target}" _targetFlags) + cotire_filter_compile_flags("${_language}" "arch" _architectures _ignore ${_targetFlags}) + list (LENGTH _architectures _numberOfArchitectures) + if (_numberOfArchitectures GREATER 1) + string (REPLACE ";" ", " _architectureStr "${_architectures}") + set (${_msgVar} + "Precompiled headers not supported on Darwin for multi-architecture builds (${_architectureStr})." + PARENT_SCOPE) + break() + endif() + endforeach() + endif() +endfunction() + +macro (cotire_get_intermediate_dir _cotireDir) + # ${CMAKE_CFG_INTDIR} may reference a build-time variable when using a generator which supports configuration types + get_filename_component(${_cotireDir} "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${COTIRE_INTDIR}" ABSOLUTE) +endmacro() + +macro (cotire_setup_file_extension_variables) + set (_unityFileExt_C ".c") + set (_unityFileExt_CXX ".cxx") + set (_prefixFileExt_C ".h") + set (_prefixFileExt_CXX ".hxx") + set (_prefixSourceFileExt_C ".c") + set (_prefixSourceFileExt_CXX ".cxx") +endmacro() + +function (cotire_make_single_unity_source_file_path _language _target _unityFileVar) + cotire_setup_file_extension_variables() + if (NOT DEFINED _unityFileExt_${_language}) + set (${_unityFileVar} "" PARENT_SCOPE) + return() + endif() + set (_unityFileBaseName "${_target}_${_language}${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}") + set (_unityFileName "${_unityFileBaseName}${_unityFileExt_${_language}}") + cotire_get_intermediate_dir(_baseDir) + set (_unityFile "${_baseDir}/${_unityFileName}") + set (${_unityFileVar} "${_unityFile}" PARENT_SCOPE) +endfunction() + +function (cotire_make_unity_source_file_paths _language _target _maxIncludes _unityFilesVar) + cotire_setup_file_extension_variables() + if (NOT DEFINED _unityFileExt_${_language}) + set (${_unityFileVar} "" PARENT_SCOPE) + return() + endif() + set (_unityFileBaseName "${_target}_${_language}${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}") + cotire_get_intermediate_dir(_baseDir) + set (_startIndex 0) + set (_index 0) + set (_unityFiles "") + set (_sourceFiles ${ARGN}) + foreach (_sourceFile ${_sourceFiles}) + get_source_file_property(_startNew "${_sourceFile}" COTIRE_START_NEW_UNITY_SOURCE) + math (EXPR _unityFileCount "${_index} - ${_startIndex}") + if (_startNew OR (_maxIncludes GREATER 0 AND NOT _unityFileCount LESS _maxIncludes)) + if (_index GREATER 0) + # start new unity file segment + math (EXPR _endIndex "${_index} - 1") + set (_unityFileName "${_unityFileBaseName}_${_startIndex}_${_endIndex}${_unityFileExt_${_language}}") + list (APPEND _unityFiles "${_baseDir}/${_unityFileName}") + endif() + set (_startIndex ${_index}) + endif() + math (EXPR _index "${_index} + 1") + endforeach() + list (LENGTH _sourceFiles _numberOfSources) + if (_startIndex EQUAL 0) + # there is only a single unity file + cotire_make_single_unity_source_file_path(${_language} ${_target} _unityFiles) + elseif (_startIndex LESS _numberOfSources) + # end with final unity file segment + math (EXPR _endIndex "${_index} - 1") + set (_unityFileName "${_unityFileBaseName}_${_startIndex}_${_endIndex}${_unityFileExt_${_language}}") + list (APPEND _unityFiles "${_baseDir}/${_unityFileName}") + endif() + set (${_unityFilesVar} ${_unityFiles} PARENT_SCOPE) + if (COTIRE_DEBUG AND _unityFiles) + message (STATUS "unity files: ${_unityFiles}") + endif() +endfunction() + +function (cotire_unity_to_prefix_file_path _language _target _unityFile _prefixFileVar) + cotire_setup_file_extension_variables() + if (NOT DEFINED _unityFileExt_${_language}) + set (${_prefixFileVar} "" PARENT_SCOPE) + return() + endif() + set (_unityFileBaseName "${_target}_${_language}${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}") + set (_prefixFileBaseName "${_target}_${_language}${COTIRE_PREFIX_HEADER_FILENAME_SUFFIX}") + string (REPLACE "${_unityFileBaseName}" "${_prefixFileBaseName}" _prefixFile "${_unityFile}") + string (REGEX REPLACE "${_unityFileExt_${_language}}$" "${_prefixFileExt_${_language}}" _prefixFile "${_prefixFile}") + set (${_prefixFileVar} "${_prefixFile}" PARENT_SCOPE) +endfunction() + +function (cotire_prefix_header_to_source_file_path _language _prefixHeaderFile _prefixSourceFileVar) + cotire_setup_file_extension_variables() + if (NOT DEFINED _prefixSourceFileExt_${_language}) + set (${_prefixSourceFileVar} "" PARENT_SCOPE) + return() + endif() + string (REGEX REPLACE "${_prefixFileExt_${_language}}$" "${_prefixSourceFileExt_${_language}}" _prefixSourceFile "${_prefixHeaderFile}") + set (${_prefixSourceFileVar} "${_prefixSourceFile}" PARENT_SCOPE) +endfunction() + +function (cotire_make_prefix_file_name _language _target _prefixFileBaseNameVar _prefixFileNameVar) + cotire_setup_file_extension_variables() + if (NOT _language) + set (_prefixFileBaseName "${_target}${COTIRE_PREFIX_HEADER_FILENAME_SUFFIX}") + set (_prefixFileName "${_prefixFileBaseName}${_prefixFileExt_C}") + elseif (DEFINED _prefixFileExt_${_language}) + set (_prefixFileBaseName "${_target}_${_language}${COTIRE_PREFIX_HEADER_FILENAME_SUFFIX}") + set (_prefixFileName "${_prefixFileBaseName}${_prefixFileExt_${_language}}") + else() + set (_prefixFileBaseName "") + set (_prefixFileName "") + endif() + set (${_prefixFileBaseNameVar} "${_prefixFileBaseName}" PARENT_SCOPE) + set (${_prefixFileNameVar} "${_prefixFileName}" PARENT_SCOPE) +endfunction() + +function (cotire_make_prefix_file_path _language _target _prefixFileVar) + cotire_make_prefix_file_name("${_language}" "${_target}" _prefixFileBaseName _prefixFileName) + set (${_prefixFileVar} "" PARENT_SCOPE) + if (_prefixFileName) + if (NOT _language) + set (_language "C") + endif() + if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang|Intel|MSVC") + cotire_get_intermediate_dir(_baseDir) + set (${_prefixFileVar} "${_baseDir}/${_prefixFileName}" PARENT_SCOPE) + endif() + endif() +endfunction() + +function (cotire_make_pch_file_path _language _target _pchFileVar) + cotire_make_prefix_file_name("${_language}" "${_target}" _prefixFileBaseName _prefixFileName) + set (${_pchFileVar} "" PARENT_SCOPE) + if (_prefixFileBaseName AND _prefixFileName) + cotire_check_precompiled_header_support("${_language}" "${_target}" _msg) + if (NOT _msg) + if (XCODE) + # For Xcode, we completely hand off the compilation of the prefix header to the IDE + return() + endif() + cotire_get_intermediate_dir(_baseDir) + if (CMAKE_${_language}_COMPILER_ID MATCHES "MSVC") + # MSVC uses the extension .pch added to the prefix header base name + set (${_pchFileVar} "${_baseDir}/${_prefixFileBaseName}.pch" PARENT_SCOPE) + elseif (CMAKE_${_language}_COMPILER_ID MATCHES "Clang") + # Clang looks for a precompiled header corresponding to the prefix header with the extension .pch appended + set (${_pchFileVar} "${_baseDir}/${_prefixFileName}.pch" PARENT_SCOPE) + elseif (CMAKE_${_language}_COMPILER_ID MATCHES "GNU") + # GCC looks for a precompiled header corresponding to the prefix header with the extension .gch appended + set (${_pchFileVar} "${_baseDir}/${_prefixFileName}.gch" PARENT_SCOPE) + elseif (CMAKE_${_language}_COMPILER_ID MATCHES "Intel") + # Intel uses the extension .pchi added to the prefix header base name + set (${_pchFileVar} "${_baseDir}/${_prefixFileBaseName}.pchi" PARENT_SCOPE) + endif() + endif() + endif() +endfunction() + +function (cotire_select_unity_source_files _unityFile _sourcesVar) + set (_sourceFiles ${ARGN}) + if (_sourceFiles AND "${_unityFile}" MATCHES "${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}_([0-9]+)_([0-9]+)") + set (_startIndex ${CMAKE_MATCH_1}) + set (_endIndex ${CMAKE_MATCH_2}) + list (LENGTH _sourceFiles _numberOfSources) + if (NOT _startIndex LESS _numberOfSources) + math (EXPR _startIndex "${_numberOfSources} - 1") + endif() + if (NOT _endIndex LESS _numberOfSources) + math (EXPR _endIndex "${_numberOfSources} - 1") + endif() + set (_files "") + foreach (_index RANGE ${_startIndex} ${_endIndex}) + list (GET _sourceFiles ${_index} _file) + list (APPEND _files "${_file}") + endforeach() + else() + set (_files ${_sourceFiles}) + endif() + set (${_sourcesVar} ${_files} PARENT_SCOPE) +endfunction() + +function (cotire_get_unity_source_dependencies _language _target _dependencySourcesVar) + set (_dependencySources "") + # depend on target's generated source files + get_target_property(_targetSourceFiles ${_target} SOURCES) + cotire_get_objects_with_property_on(_generatedSources GENERATED SOURCE ${_targetSourceFiles}) + if (_generatedSources) + # but omit all generated source files that have the COTIRE_EXCLUDED property set to true + cotire_get_objects_with_property_on(_excludedGeneratedSources COTIRE_EXCLUDED SOURCE ${_generatedSources}) + if (_excludedGeneratedSources) + list (REMOVE_ITEM _generatedSources ${_excludedGeneratedSources}) + endif() + # and omit all generated source files that have the COTIRE_DEPENDENCY property set to false explicitly + cotire_get_objects_with_property_off(_excludedNonDependencySources COTIRE_DEPENDENCY SOURCE ${_generatedSources}) + if (_excludedNonDependencySources) + list (REMOVE_ITEM _generatedSources ${_excludedNonDependencySources}) + endif() + if (_generatedSources) + list (APPEND _dependencySources ${_generatedSources}) + endif() + endif() + if (COTIRE_DEBUG AND _dependencySources) + message (STATUS "${_language} ${_target} unity source dependencies: ${_dependencySources}") + endif() + set (${_dependencySourcesVar} ${_dependencySources} PARENT_SCOPE) +endfunction() + +function (cotire_get_prefix_header_dependencies _language _target _dependencySourcesVar) + set (_dependencySources "") + # depend on target source files marked with custom COTIRE_DEPENDENCY property + get_target_property(_targetSourceFiles ${_target} SOURCES) + cotire_get_objects_with_property_on(_dependencySources COTIRE_DEPENDENCY SOURCE ${_targetSourceFiles}) + if (COTIRE_DEBUG AND _dependencySources) + message (STATUS "${_language} ${_target} prefix header dependencies: ${_dependencySources}") + endif() + set (${_dependencySourcesVar} ${_dependencySources} PARENT_SCOPE) +endfunction() + +function (cotire_generate_target_script _language _configurations _target _targetScriptVar _targetConfigScriptVar) + set (_targetSources ${ARGN}) + cotire_get_prefix_header_dependencies(${_language} ${_target} COTIRE_TARGET_PREFIX_DEPENDS ${_targetSources}) + cotire_get_unity_source_dependencies(${_language} ${_target} COTIRE_TARGET_UNITY_DEPENDS ${_targetSources}) + # set up variables to be configured + set (COTIRE_TARGET_LANGUAGE "${_language}") + get_target_property(COTIRE_TARGET_IGNORE_PATH ${_target} COTIRE_PREFIX_HEADER_IGNORE_PATH) + cotire_add_sys_root_paths(COTIRE_TARGET_IGNORE_PATH) + get_target_property(COTIRE_TARGET_INCLUDE_PATH ${_target} COTIRE_PREFIX_HEADER_INCLUDE_PATH) + cotire_add_sys_root_paths(COTIRE_TARGET_INCLUDE_PATH) + get_target_property(COTIRE_TARGET_PRE_UNDEFS ${_target} COTIRE_UNITY_SOURCE_PRE_UNDEFS) + get_target_property(COTIRE_TARGET_POST_UNDEFS ${_target} COTIRE_UNITY_SOURCE_POST_UNDEFS) + get_target_property(COTIRE_TARGET_MAXIMUM_NUMBER_OF_INCLUDES ${_target} COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES) + get_target_property(COTIRE_TARGET_INCLUDE_PRIORITY_PATH ${_target} COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH) + cotire_get_source_files_undefs(COTIRE_UNITY_SOURCE_PRE_UNDEFS COTIRE_TARGET_SOURCES_PRE_UNDEFS ${_targetSources}) + cotire_get_source_files_undefs(COTIRE_UNITY_SOURCE_POST_UNDEFS COTIRE_TARGET_SOURCES_POST_UNDEFS ${_targetSources}) + set (COTIRE_TARGET_CONFIGURATION_TYPES "${_configurations}") + foreach (_config ${_configurations}) + string (TOUPPER "${_config}" _upperConfig) + cotire_get_target_include_directories( + "${_config}" "${_language}" "${_target}" COTIRE_TARGET_INCLUDE_DIRECTORIES_${_upperConfig} COTIRE_TARGET_SYSTEM_INCLUDE_DIRECTORIES_${_upperConfig}) + cotire_get_target_compile_definitions( + "${_config}" "${_language}" "${_target}" COTIRE_TARGET_COMPILE_DEFINITIONS_${_upperConfig}) + cotire_get_target_compiler_flags( + "${_config}" "${_language}" "${_target}" COTIRE_TARGET_COMPILE_FLAGS_${_upperConfig}) + cotire_get_source_files_compile_definitions( + "${_config}" "${_language}" COTIRE_TARGET_SOURCES_COMPILE_DEFINITIONS_${_upperConfig} ${_targetSources}) + endforeach() + get_target_property(COTIRE_TARGET_${_language}_COMPILER_LAUNCHER ${_target} ${_language}_COMPILER_LAUNCHER) + # set up COTIRE_TARGET_SOURCES + set (COTIRE_TARGET_SOURCES "") + foreach (_sourceFile ${_targetSources}) + get_source_file_property(_generated "${_sourceFile}" GENERATED) + if (_generated) + # use absolute paths for generated files only, retrieving the LOCATION property is an expensive operation + get_source_file_property(_sourceLocation "${_sourceFile}" LOCATION) + list (APPEND COTIRE_TARGET_SOURCES "${_sourceLocation}") + else() + list (APPEND COTIRE_TARGET_SOURCES "${_sourceFile}") + endif() + endforeach() + # copy variable definitions to cotire target script + get_cmake_property(_vars VARIABLES) + string (REGEX MATCHALL "COTIRE_[A-Za-z0-9_]+" _matchVars "${_vars}") + # omit COTIRE_*_INIT variables + string (REGEX MATCHALL "COTIRE_[A-Za-z0-9_]+_INIT" _initVars "${_matchVars}") + if (_initVars) + list (REMOVE_ITEM _matchVars ${_initVars}) + endif() + # omit COTIRE_VERBOSE which is passed as a CMake define on command line + list (REMOVE_ITEM _matchVars COTIRE_VERBOSE) + set (_contents "") + set (_contentsHasGeneratorExpressions FALSE) + foreach (_var IN LISTS _matchVars ITEMS + XCODE MSVC CMAKE_GENERATOR CMAKE_BUILD_TYPE CMAKE_CONFIGURATION_TYPES + CMAKE_${_language}_COMPILER_ID CMAKE_${_language}_COMPILER_VERSION + CMAKE_${_language}_COMPILER_LAUNCHER CMAKE_${_language}_COMPILER CMAKE_${_language}_COMPILER_ARG1 + CMAKE_INCLUDE_FLAG_${_language} CMAKE_INCLUDE_FLAG_SEP_${_language} + CMAKE_INCLUDE_SYSTEM_FLAG_${_language} + CMAKE_${_language}_FRAMEWORK_SEARCH_FLAG + CMAKE_${_language}_SYSTEM_FRAMEWORK_SEARCH_FLAG + CMAKE_${_language}_SOURCE_FILE_EXTENSIONS) + if (DEFINED ${_var}) + string (REPLACE "\"" "\\\"" _value "${${_var}}") + set (_contents "${_contents}set (${_var} \"${_value}\")\n") + if (NOT _contentsHasGeneratorExpressions) + if ("${_value}" MATCHES "\\$<.*>") + set (_contentsHasGeneratorExpressions TRUE) + endif() + endif() + endif() + endforeach() + # generate target script file + get_filename_component(_moduleName "${COTIRE_CMAKE_MODULE_FILE}" NAME) + set (_targetCotireScript "${CMAKE_CURRENT_BINARY_DIR}/${_target}_${_language}_${_moduleName}") + cotire_write_file("CMAKE" "${_targetCotireScript}" "${_contents}" FALSE) + if (_contentsHasGeneratorExpressions) + # use file(GENERATE ...) to expand generator expressions in the target script at CMake generate-time + set (_configNameOrNoneGeneratorExpression "$<$:None>$<$>:$>") + set (_targetCotireConfigScript "${CMAKE_CURRENT_BINARY_DIR}/${_target}_${_language}_${_configNameOrNoneGeneratorExpression}_${_moduleName}") + file (GENERATE OUTPUT "${_targetCotireConfigScript}" INPUT "${_targetCotireScript}") + else() + set (_targetCotireConfigScript "${_targetCotireScript}") + endif() + set (${_targetScriptVar} "${_targetCotireScript}" PARENT_SCOPE) + set (${_targetConfigScriptVar} "${_targetCotireConfigScript}" PARENT_SCOPE) +endfunction() + +function (cotire_setup_pch_file_compilation _language _target _targetScript _prefixFile _pchFile _hostFile) + set (_sourceFiles ${ARGN}) + if (CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel" OR + (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "Clang")) + # for MSVC, Intel and Clang-cl, we attach the precompiled header compilation to the host file + # the remaining files include the precompiled header, see cotire_setup_pch_file_inclusion + if (_sourceFiles) + set (_flags "") + cotire_add_pch_compilation_flags( + "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" + "${_prefixFile}" "${_pchFile}" "${_hostFile}" _flags) + set_property (SOURCE ${_hostFile} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") + set_property (SOURCE ${_hostFile} APPEND PROPERTY OBJECT_OUTPUTS "${_pchFile}") + # make object file generated from host file depend on prefix header + set_property (SOURCE ${_hostFile} APPEND PROPERTY OBJECT_DEPENDS "${_prefixFile}") + # mark host file as cotired to prevent it from being used in another cotired target + set_property (SOURCE ${_hostFile} PROPERTY COTIRE_TARGET "${_target}") + endif() + elseif ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") + # for makefile based generator, we add a custom command to precompile the prefix header + if (_targetScript) + cotire_set_cmd_to_prologue(_cmds) + list (APPEND _cmds -P "${COTIRE_CMAKE_MODULE_FILE}" "precompile" "${_targetScript}" "${_prefixFile}" "${_pchFile}" "${_hostFile}") + if (MSVC_IDE) + file (TO_NATIVE_PATH "${_pchFile}" _pchFileLogPath) + else() + file (RELATIVE_PATH _pchFileLogPath "${CMAKE_BINARY_DIR}" "${_pchFile}") + endif() + # make precompiled header compilation depend on the actual compiler executable used to force + # re-compilation when the compiler executable is updated. This prevents "created by a different GCC executable" + # warnings when the precompiled header is included. + get_filename_component(_realCompilerExe "${CMAKE_${_language}_COMPILER}" ABSOLUTE) + if (COTIRE_DEBUG) + message (STATUS "add_custom_command: OUTPUT ${_pchFile} ${_cmds} DEPENDS ${_prefixFile} ${_realCompilerExe} IMPLICIT_DEPENDS ${_language} ${_prefixFile}") + endif() + set_property (SOURCE "${_pchFile}" PROPERTY GENERATED TRUE) + add_custom_command( + OUTPUT "${_pchFile}" + COMMAND ${_cmds} + DEPENDS "${_prefixFile}" "${_realCompilerExe}" + IMPLICIT_DEPENDS ${_language} "${_prefixFile}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Building ${_language} precompiled header ${_pchFileLogPath}" + VERBATIM) + endif() + endif() +endfunction() + +function (cotire_setup_pch_file_inclusion _language _target _wholeTarget _prefixFile _pchFile _hostFile) + if (CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel" OR + (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "Clang")) + # for MSVC, Intel and clang-cl, we include the precompiled header in all but the host file + # the host file does the precompiled header compilation, see cotire_setup_pch_file_compilation + set (_sourceFiles ${ARGN}) + list (LENGTH _sourceFiles _numberOfSourceFiles) + if (_numberOfSourceFiles GREATER 0) + # mark sources as cotired to prevent them from being used in another cotired target + set_source_files_properties(${_sourceFiles} PROPERTIES COTIRE_TARGET "${_target}") + set (_flags "") + cotire_add_prefix_pch_inclusion_flags( + "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" + "${_prefixFile}" "${_pchFile}" _flags) + set_property (SOURCE ${_sourceFiles} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") + # make object files generated from source files depend on precompiled header + set_property (SOURCE ${_sourceFiles} APPEND PROPERTY OBJECT_DEPENDS "${_pchFile}") + endif() + elseif ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") + set (_sourceFiles ${_hostFile} ${ARGN}) + if (NOT _wholeTarget) + # for makefile based generator, we force the inclusion of the prefix header for a subset + # of the source files, if this is a multi-language target or has excluded files + set (_flags "") + cotire_add_prefix_pch_inclusion_flags( + "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" + "${_prefixFile}" "${_pchFile}" _flags) + set_property (SOURCE ${_sourceFiles} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") + # mark sources as cotired to prevent them from being used in another cotired target + set_source_files_properties(${_sourceFiles} PROPERTIES COTIRE_TARGET "${_target}") + endif() + # make object files generated from source files depend on precompiled header + set_property (SOURCE ${_sourceFiles} APPEND PROPERTY OBJECT_DEPENDS "${_pchFile}") + endif() +endfunction() + +function (cotire_setup_prefix_file_inclusion _language _target _prefixFile) + set (_sourceFiles ${ARGN}) + # force the inclusion of the prefix header for the given source files + set (_flags "") + set (_pchFile "") + cotire_add_prefix_pch_inclusion_flags( + "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" + "${_prefixFile}" "${_pchFile}" _flags) + set_property (SOURCE ${_sourceFiles} APPEND_STRING PROPERTY COMPILE_FLAGS " ${_flags} ") + # mark sources as cotired to prevent them from being used in another cotired target + set_source_files_properties(${_sourceFiles} PROPERTIES COTIRE_TARGET "${_target}") + # make object files generated from source files depend on prefix header + set_property (SOURCE ${_sourceFiles} APPEND PROPERTY OBJECT_DEPENDS "${_prefixFile}") +endfunction() + +function (cotire_get_first_set_property_value _propertyValueVar _type _object) + set (_properties ${ARGN}) + foreach (_property ${_properties}) + get_property(_propertyValue ${_type} "${_object}" PROPERTY ${_property}) + if (_propertyValue) + set (${_propertyValueVar} ${_propertyValue} PARENT_SCOPE) + return() + endif() + endforeach() + set (${_propertyValueVar} "" PARENT_SCOPE) +endfunction() + +function (cotire_setup_combine_command _language _targetScript _joinedFile _cmdsVar) + set (_files ${ARGN}) + set (_filesPaths "") + foreach (_file ${_files}) + get_filename_component(_filePath "${_file}" ABSOLUTE) + list (APPEND _filesPaths "${_filePath}") + endforeach() + cotire_set_cmd_to_prologue(_prefixCmd) + list (APPEND _prefixCmd -P "${COTIRE_CMAKE_MODULE_FILE}" "combine") + if (_targetScript) + list (APPEND _prefixCmd "${_targetScript}") + endif() + list (APPEND _prefixCmd "${_joinedFile}" ${_filesPaths}) + if (COTIRE_DEBUG) + message (STATUS "add_custom_command: OUTPUT ${_joinedFile} COMMAND ${_prefixCmd} DEPENDS ${_files}") + endif() + set_property (SOURCE "${_joinedFile}" PROPERTY GENERATED TRUE) + if (MSVC_IDE) + file (TO_NATIVE_PATH "${_joinedFile}" _joinedFileLogPath) + else() + file (RELATIVE_PATH _joinedFileLogPath "${CMAKE_BINARY_DIR}" "${_joinedFile}") + endif() + get_filename_component(_joinedFileBaseName "${_joinedFile}" NAME_WE) + get_filename_component(_joinedFileExt "${_joinedFile}" EXT) + if (_language AND _joinedFileBaseName MATCHES "${COTIRE_UNITY_SOURCE_FILENAME_SUFFIX}$") + set (_comment "Generating ${_language} unity source ${_joinedFileLogPath}") + elseif (_language AND _joinedFileBaseName MATCHES "${COTIRE_PREFIX_HEADER_FILENAME_SUFFIX}$") + if (_joinedFileExt MATCHES "^\\.c") + set (_comment "Generating ${_language} prefix source ${_joinedFileLogPath}") + else() + set (_comment "Generating ${_language} prefix header ${_joinedFileLogPath}") + endif() + else() + set (_comment "Generating ${_joinedFileLogPath}") + endif() + add_custom_command( + OUTPUT "${_joinedFile}" + COMMAND ${_prefixCmd} + DEPENDS ${_files} + COMMENT "${_comment}" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + VERBATIM) + list (APPEND ${_cmdsVar} COMMAND ${_prefixCmd}) + set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) +endfunction() + +function (cotire_setup_target_pch_usage _languages _target _wholeTarget) + if (XCODE) + # for Xcode, we attach a pre-build action to generate the unity sources and prefix headers + set (_prefixFiles "") + foreach (_language ${_languages}) + get_property(_prefixFile TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER) + if (_prefixFile) + list (APPEND _prefixFiles "${_prefixFile}") + endif() + endforeach() + set (_cmds ${ARGN}) + list (LENGTH _prefixFiles _numberOfPrefixFiles) + if (_numberOfPrefixFiles GREATER 1) + # we also generate a generic, single prefix header which includes all language specific prefix headers + set (_language "") + set (_targetScript "") + cotire_make_prefix_file_path("${_language}" ${_target} _prefixHeader) + cotire_setup_combine_command("${_language}" "${_targetScript}" "${_prefixHeader}" _cmds ${_prefixFiles}) + else() + set (_prefixHeader "${_prefixFiles}") + endif() + if (COTIRE_DEBUG) + message (STATUS "add_custom_command: TARGET ${_target} PRE_BUILD ${_cmds}") + endif() + # because CMake PRE_BUILD command does not support dependencies, + # we check dependencies explicity in cotire script mode when the pre-build action is run + add_custom_command( + TARGET "${_target}" + PRE_BUILD ${_cmds} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Updating target ${_target} prefix headers" + VERBATIM) + # make Xcode precompile the generated prefix header with ProcessPCH and ProcessPCH++ + set_target_properties(${_target} PROPERTIES XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES") + set_target_properties(${_target} PROPERTIES XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${_prefixHeader}") + elseif ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") + # for makefile based generator, we force inclusion of the prefix header for all target source files + # if this is a single-language target without any excluded files + if (_wholeTarget) + set (_language "${_languages}") + # for MSVC, Intel and clang-cl, precompiled header inclusion is always done on the source file level + # see cotire_setup_pch_file_inclusion + if (NOT CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel" AND NOT + (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "Clang")) + get_property(_prefixFile TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER) + if (_prefixFile) + get_property(_pchFile TARGET ${_target} PROPERTY COTIRE_${_language}_PRECOMPILED_HEADER) + set (_options COMPILE_OPTIONS) + cotire_add_prefix_pch_inclusion_flags( + "${_language}" "${CMAKE_${_language}_COMPILER_ID}" "${CMAKE_${_language}_COMPILER_VERSION}" + "${_prefixFile}" "${_pchFile}" _options) + set_property(TARGET ${_target} APPEND PROPERTY ${_options}) + endif() + endif() + endif() + endif() +endfunction() + +function (cotire_setup_unity_generation_commands _language _target _targetScript _targetConfigScript _unityFiles _cmdsVar) + set (_dependencySources "") + cotire_get_unity_source_dependencies(${_language} ${_target} _dependencySources ${ARGN}) + foreach (_unityFile ${_unityFiles}) + set_property (SOURCE "${_unityFile}" PROPERTY GENERATED TRUE) + # set up compiled unity source dependencies via OBJECT_DEPENDS + # this ensures that missing source files are generated before the unity file is compiled + if (COTIRE_DEBUG AND _dependencySources) + message (STATUS "${_unityFile} OBJECT_DEPENDS ${_dependencySources}") + endif() + if (_dependencySources) + # the OBJECT_DEPENDS property requires a list of full paths + set (_objectDependsPaths "") + foreach (_sourceFile ${_dependencySources}) + get_source_file_property(_sourceLocation "${_sourceFile}" LOCATION) + list (APPEND _objectDependsPaths "${_sourceLocation}") + endforeach() + set_property (SOURCE "${_unityFile}" PROPERTY OBJECT_DEPENDS ${_objectDependsPaths}) + endif() + if (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel") + # unity file compilation results in potentially huge object file, + # thus use /bigobj by default unter cl.exe and Windows Intel + set_property (SOURCE "${_unityFile}" APPEND_STRING PROPERTY COMPILE_FLAGS "/bigobj") + endif() + cotire_set_cmd_to_prologue(_unityCmd) + list (APPEND _unityCmd -P "${COTIRE_CMAKE_MODULE_FILE}" "unity" "${_targetConfigScript}" "${_unityFile}") + if (CMAKE_VERSION VERSION_LESS "3.1.0") + set (_unityCmdDepends "${_targetScript}") + else() + # CMake 3.1.0 supports generator expressions in arguments to DEPENDS + set (_unityCmdDepends "${_targetConfigScript}") + endif() + if (MSVC_IDE) + file (TO_NATIVE_PATH "${_unityFile}" _unityFileLogPath) + else() + file (RELATIVE_PATH _unityFileLogPath "${CMAKE_BINARY_DIR}" "${_unityFile}") + endif() + if (COTIRE_DEBUG) + message (STATUS "add_custom_command: OUTPUT ${_unityFile} COMMAND ${_unityCmd} DEPENDS ${_unityCmdDepends}") + endif() + add_custom_command( + OUTPUT "${_unityFile}" + COMMAND ${_unityCmd} + DEPENDS ${_unityCmdDepends} + COMMENT "Generating ${_language} unity source ${_unityFileLogPath}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + VERBATIM) + list (APPEND ${_cmdsVar} COMMAND ${_unityCmd}) + endforeach() + set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) +endfunction() + +function (cotire_setup_prefix_generation_command _language _target _targetScript _prefixFile _unityFiles _cmdsVar) + set (_sourceFiles ${ARGN}) + set (_dependencySources "") + cotire_get_prefix_header_dependencies(${_language} ${_target} _dependencySources ${_sourceFiles}) + cotire_set_cmd_to_prologue(_prefixCmd) + list (APPEND _prefixCmd -P "${COTIRE_CMAKE_MODULE_FILE}" "prefix" "${_targetScript}" "${_prefixFile}" ${_unityFiles}) + set_property (SOURCE "${_prefixFile}" PROPERTY GENERATED TRUE) + # make prefix header generation depend on the actual compiler executable used to force + # re-generation when the compiler executable is updated. This prevents "file not found" + # errors for compiler version specific system header files. + get_filename_component(_realCompilerExe "${CMAKE_${_language}_COMPILER}" ABSOLUTE) + if (COTIRE_DEBUG) + message (STATUS "add_custom_command: OUTPUT ${_prefixFile} COMMAND ${_prefixCmd} DEPENDS ${_unityFile} ${_dependencySources} ${_realCompilerExe}") + endif() + if (MSVC_IDE) + file (TO_NATIVE_PATH "${_prefixFile}" _prefixFileLogPath) + else() + file (RELATIVE_PATH _prefixFileLogPath "${CMAKE_BINARY_DIR}" "${_prefixFile}") + endif() + get_filename_component(_prefixFileExt "${_prefixFile}" EXT) + if (_prefixFileExt MATCHES "^\\.c") + set (_comment "Generating ${_language} prefix source ${_prefixFileLogPath}") + else() + set (_comment "Generating ${_language} prefix header ${_prefixFileLogPath}") + endif() + # prevent pre-processing errors upon generating the prefix header when a target's generated include file does not yet exist + # we do not add a file-level dependency for the target's generated files though, because we only want to depend on their existence + # thus we make the prefix header generation depend on a custom helper target which triggers the generation of the files + set (_preTargetName "${_target}${COTIRE_PCH_TARGET_SUFFIX}_pre") + if (TARGET ${_preTargetName}) + # custom helper target has already been generated while processing a different language + list (APPEND _dependencySources ${_preTargetName}) + else() + get_target_property(_targetSourceFiles ${_target} SOURCES) + cotire_get_objects_with_property_on(_generatedSources GENERATED SOURCE ${_targetSourceFiles}) + if (_generatedSources) + add_custom_target("${_preTargetName}" DEPENDS ${_generatedSources}) + cotire_init_target("${_preTargetName}") + list (APPEND _dependencySources ${_preTargetName}) + endif() + endif() + add_custom_command( + OUTPUT "${_prefixFile}" "${_prefixFile}.log" + COMMAND ${_prefixCmd} + DEPENDS ${_unityFiles} ${_dependencySources} "${_realCompilerExe}" + COMMENT "${_comment}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + VERBATIM) + list (APPEND ${_cmdsVar} COMMAND ${_prefixCmd}) + set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) +endfunction() + +function (cotire_setup_prefix_generation_from_unity_command _language _target _targetScript _prefixFile _unityFiles _cmdsVar) + set (_sourceFiles ${ARGN}) + if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang") + # GNU and Clang require indirect compilation of the prefix header to make them honor the system_header pragma + cotire_prefix_header_to_source_file_path(${_language} "${_prefixFile}" _prefixSourceFile) + else() + set (_prefixSourceFile "${_prefixFile}") + endif() + cotire_setup_prefix_generation_command( + ${_language} ${_target} "${_targetScript}" + "${_prefixSourceFile}" "${_unityFiles}" ${_cmdsVar} ${_sourceFiles}) + if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang") + # set up generation of a prefix source file which includes the prefix header + cotire_setup_combine_command(${_language} "${_targetScript}" "${_prefixFile}" _cmds ${_prefixSourceFile}) + endif() + set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) +endfunction() + +function (cotire_setup_prefix_generation_from_provided_command _language _target _targetScript _prefixFile _cmdsVar) + set (_prefixHeaderFiles ${ARGN}) + if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang") + # GNU and Clang require indirect compilation of the prefix header to make them honor the system_header pragma + cotire_prefix_header_to_source_file_path(${_language} "${_prefixFile}" _prefixSourceFile) + else() + set (_prefixSourceFile "${_prefixFile}") + endif() + cotire_setup_combine_command(${_language} "${_targetScript}" "${_prefixSourceFile}" _cmds ${_prefixHeaderFiles}) + if (CMAKE_${_language}_COMPILER_ID MATCHES "GNU|Clang") + # set up generation of a prefix source file which includes the prefix header + cotire_setup_combine_command(${_language} "${_targetScript}" "${_prefixFile}" _cmds ${_prefixSourceFile}) + endif() + set (${_cmdsVar} ${${_cmdsVar}} PARENT_SCOPE) +endfunction() + +function (cotire_init_cotire_target_properties _target) + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_ENABLE_PRECOMPILED_HEADER SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_ENABLE_PRECOMPILED_HEADER TRUE) + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_ADD_UNITY_BUILD SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_ADD_UNITY_BUILD TRUE) + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_ADD_CLEAN SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_ADD_CLEAN FALSE) + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_IGNORE_PATH SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_IGNORE_PATH "${CMAKE_SOURCE_DIR}") + cotire_check_is_path_relative_to("${CMAKE_BINARY_DIR}" _isRelative "${CMAKE_SOURCE_DIR}") + if (NOT _isRelative) + set_property(TARGET ${_target} APPEND PROPERTY COTIRE_PREFIX_HEADER_IGNORE_PATH "${CMAKE_BINARY_DIR}") + endif() + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PATH SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PATH "") + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH "") + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_PRE_UNDEFS SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_PRE_UNDEFS "") + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_POST_UNDEFS SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_POST_UNDEFS "") + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_LINK_LIBRARIES_INIT SET) + if (NOT _isSet) + set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_LINK_LIBRARIES_INIT "COPY_UNITY") + endif() + get_property(_isSet TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES SET) + if (NOT _isSet) + if (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES) + set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES "${COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES}") + else() + set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES "") + endif() + endif() +endfunction() + +function (cotire_make_target_message _target _languages _disableMsg _targetMsgVar) + get_target_property(_targetUsePCH ${_target} COTIRE_ENABLE_PRECOMPILED_HEADER) + get_target_property(_targetAddSCU ${_target} COTIRE_ADD_UNITY_BUILD) + string (REPLACE ";" " " _languagesStr "${_languages}") + math (EXPR _numberOfExcludedFiles "${ARGC} - 4") + if (_numberOfExcludedFiles EQUAL 0) + set (_excludedStr "") + elseif (COTIRE_VERBOSE OR _numberOfExcludedFiles LESS 4) + string (REPLACE ";" ", " _excludedStr "excluding ${ARGN}") + else() + set (_excludedStr "excluding ${_numberOfExcludedFiles} files") + endif() + set (_targetMsg "") + if (NOT _languages) + set (_targetMsg "Target ${_target} cannot be cotired.") + if (_disableMsg) + set (_targetMsg "${_targetMsg} ${_disableMsg}") + endif() + elseif (NOT _targetUsePCH AND NOT _targetAddSCU) + set (_targetMsg "${_languagesStr} target ${_target} cotired without unity build and precompiled header.") + if (_disableMsg) + set (_targetMsg "${_targetMsg} ${_disableMsg}") + endif() + elseif (NOT _targetUsePCH) + if (_excludedStr) + set (_targetMsg "${_languagesStr} target ${_target} cotired without precompiled header ${_excludedStr}.") + else() + set (_targetMsg "${_languagesStr} target ${_target} cotired without precompiled header.") + endif() + if (_disableMsg) + set (_targetMsg "${_targetMsg} ${_disableMsg}") + endif() + elseif (NOT _targetAddSCU) + if (_excludedStr) + set (_targetMsg "${_languagesStr} target ${_target} cotired without unity build ${_excludedStr}.") + else() + set (_targetMsg "${_languagesStr} target ${_target} cotired without unity build.") + endif() + if (_disableMsg) + set (_targetMsg "${_targetMsg} ${_disableMsg}") + endif() + else() + if (_excludedStr) + set (_targetMsg "${_languagesStr} target ${_target} cotired ${_excludedStr}.") + else() + set (_targetMsg "${_languagesStr} target ${_target} cotired.") + endif() + endif() + set (${_targetMsgVar} "${_targetMsg}" PARENT_SCOPE) +endfunction() + +function (cotire_choose_target_languages _target _targetLanguagesVar _wholeTargetVar) + set (_languages ${ARGN}) + set (_allSourceFiles "") + set (_allExcludedSourceFiles "") + set (_allCotiredSourceFiles "") + set (_targetLanguages "") + set (_pchEligibleTargetLanguages "") + get_target_property(_targetType ${_target} TYPE) + get_target_property(_targetSourceFiles ${_target} SOURCES) + get_target_property(_targetUsePCH ${_target} COTIRE_ENABLE_PRECOMPILED_HEADER) + get_target_property(_targetAddSCU ${_target} COTIRE_ADD_UNITY_BUILD) + set (_disableMsg "") + foreach (_language ${_languages}) + get_target_property(_prefixHeader ${_target} COTIRE_${_language}_PREFIX_HEADER) + get_target_property(_unityBuildFile ${_target} COTIRE_${_language}_UNITY_SOURCE) + if (_prefixHeader OR _unityBuildFile) + message (STATUS "cotire: target ${_target} has already been cotired.") + set (${_targetLanguagesVar} "" PARENT_SCOPE) + return() + endif() + if (_targetUsePCH AND "${_language}" MATCHES "^C|CXX$" AND DEFINED CMAKE_${_language}_COMPILER_ID) + if (CMAKE_${_language}_COMPILER_ID) + cotire_check_precompiled_header_support("${_language}" "${_target}" _disableMsg) + if (_disableMsg) + set (_targetUsePCH FALSE) + endif() + endif() + endif() + set (_sourceFiles "") + set (_excludedSources "") + set (_cotiredSources "") + cotire_filter_language_source_files(${_language} ${_target} _sourceFiles _excludedSources _cotiredSources ${_targetSourceFiles}) + if (_sourceFiles OR _excludedSources OR _cotiredSources) + list (APPEND _targetLanguages ${_language}) + endif() + if (_sourceFiles) + list (APPEND _allSourceFiles ${_sourceFiles}) + endif() + list (LENGTH _sourceFiles _numberOfSources) + if (NOT _numberOfSources LESS ${COTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES}) + list (APPEND _pchEligibleTargetLanguages ${_language}) + endif() + if (_excludedSources) + list (APPEND _allExcludedSourceFiles ${_excludedSources}) + endif() + if (_cotiredSources) + list (APPEND _allCotiredSourceFiles ${_cotiredSources}) + endif() + endforeach() + set (_targetMsgLevel STATUS) + if (NOT _targetLanguages) + string (REPLACE ";" " or " _languagesStr "${_languages}") + set (_disableMsg "No ${_languagesStr} source files.") + set (_targetUsePCH FALSE) + set (_targetAddSCU FALSE) + endif() + if (_targetUsePCH) + if (_allCotiredSourceFiles) + cotire_get_source_file_property_values(_cotireTargets COTIRE_TARGET ${_allCotiredSourceFiles}) + list (REMOVE_DUPLICATES _cotireTargets) + string (REPLACE ";" ", " _cotireTargetsStr "${_cotireTargets}") + set (_disableMsg "Target sources already include a precompiled header for target(s) ${_cotireTargets}.") + set (_disableMsg "${_disableMsg} Set target property COTIRE_ENABLE_PRECOMPILED_HEADER to FALSE for targets ${_target},") + set (_disableMsg "${_disableMsg} ${_cotireTargetsStr} to get a workable build system.") + set (_targetMsgLevel SEND_ERROR) + set (_targetUsePCH FALSE) + elseif (NOT _pchEligibleTargetLanguages) + set (_disableMsg "Too few applicable sources.") + set (_targetUsePCH FALSE) + elseif (XCODE AND _allExcludedSourceFiles) + # for Xcode, we cannot apply the precompiled header to individual sources, only to the whole target + set (_disableMsg "Exclusion of source files not supported for generator Xcode.") + set (_targetUsePCH FALSE) + elseif (XCODE AND "${_targetType}" STREQUAL "OBJECT_LIBRARY") + # for Xcode, we cannot apply the required PRE_BUILD action to generate the prefix header to an OBJECT_LIBRARY target + set (_disableMsg "Required PRE_BUILD action not supported for OBJECT_LIBRARY targets for generator Xcode.") + set (_targetUsePCH FALSE) + endif() + endif() + if (_targetAddSCU) + # disable unity builds if automatic Qt processing is used + get_target_property(_targetAutoMoc ${_target} AUTOMOC) + get_target_property(_targetAutoUic ${_target} AUTOUIC) + get_target_property(_targetAutoRcc ${_target} AUTORCC) + if (_targetAutoMoc OR _targetAutoUic OR _targetAutoRcc) + if (_disableMsg) + set (_disableMsg "${_disableMsg} Target uses automatic CMake Qt processing.") + else() + set (_disableMsg "Target uses automatic CMake Qt processing.") + endif() + set (_targetAddSCU FALSE) + endif() + endif() + set_property(TARGET ${_target} PROPERTY COTIRE_ENABLE_PRECOMPILED_HEADER ${_targetUsePCH}) + set_property(TARGET ${_target} PROPERTY COTIRE_ADD_UNITY_BUILD ${_targetAddSCU}) + cotire_make_target_message(${_target} "${_targetLanguages}" "${_disableMsg}" _targetMsg ${_allExcludedSourceFiles}) + if (_targetMsg) + if (NOT DEFINED COTIREMSG_${_target}) + set (COTIREMSG_${_target} "") + endif() + if (COTIRE_VERBOSE OR NOT "${_targetMsgLevel}" STREQUAL "STATUS" OR + NOT "${COTIREMSG_${_target}}" STREQUAL "${_targetMsg}") + # cache message to avoid redundant messages on re-configure + set (COTIREMSG_${_target} "${_targetMsg}" CACHE INTERNAL "${_target} cotire message.") + message (${_targetMsgLevel} "${_targetMsg}") + endif() + endif() + list (LENGTH _targetLanguages _numberOfLanguages) + if (_numberOfLanguages GREATER 1 OR _allExcludedSourceFiles) + set (${_wholeTargetVar} FALSE PARENT_SCOPE) + else() + set (${_wholeTargetVar} TRUE PARENT_SCOPE) + endif() + set (${_targetLanguagesVar} ${_targetLanguages} PARENT_SCOPE) +endfunction() + +function (cotire_compute_unity_max_number_of_includes _target _maxIncludesVar) + set (_sourceFiles ${ARGN}) + get_target_property(_maxIncludes ${_target} COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES) + if (_maxIncludes MATCHES "(-j|--parallel|--jobs) ?([0-9]*)") + if (DEFINED CMAKE_MATCH_2) + set (_numberOfThreads "${CMAKE_MATCH_2}") + else() + set (_numberOfThreads "") + endif() + if (NOT _numberOfThreads) + # use all available cores + ProcessorCount(_numberOfThreads) + endif() + list (LENGTH _sourceFiles _numberOfSources) + math (EXPR _maxIncludes "(${_numberOfSources} + ${_numberOfThreads} - 1) / ${_numberOfThreads}") + elseif (NOT _maxIncludes MATCHES "[0-9]+") + set (_maxIncludes 0) + endif() + if (COTIRE_DEBUG) + message (STATUS "${_target} unity source max includes: ${_maxIncludes}") + endif() + set (${_maxIncludesVar} ${_maxIncludes} PARENT_SCOPE) +endfunction() + +function (cotire_process_target_language _language _configurations _target _wholeTarget _cmdsVar) + set (${_cmdsVar} "" PARENT_SCOPE) + get_target_property(_targetSourceFiles ${_target} SOURCES) + set (_sourceFiles "") + set (_excludedSources "") + set (_cotiredSources "") + cotire_filter_language_source_files(${_language} ${_target} _sourceFiles _excludedSources _cotiredSources ${_targetSourceFiles}) + if (NOT _sourceFiles AND NOT _cotiredSources) + return() + endif() + set (_cmds "") + # check for user provided unity source file list + get_property(_unitySourceFiles TARGET ${_target} PROPERTY COTIRE_${_language}_UNITY_SOURCE_INIT) + if (NOT _unitySourceFiles) + set (_unitySourceFiles ${_sourceFiles} ${_cotiredSources}) + endif() + cotire_generate_target_script( + ${_language} "${_configurations}" ${_target} _targetScript _targetConfigScript ${_unitySourceFiles}) + # set up unity files for parallel compilation + cotire_compute_unity_max_number_of_includes(${_target} _maxIncludes ${_unitySourceFiles}) + cotire_make_unity_source_file_paths(${_language} ${_target} ${_maxIncludes} _unityFiles ${_unitySourceFiles}) + list (LENGTH _unityFiles _numberOfUnityFiles) + if (_numberOfUnityFiles EQUAL 0) + return() + elseif (_numberOfUnityFiles GREATER 1) + cotire_setup_unity_generation_commands( + ${_language} ${_target} "${_targetScript}" "${_targetConfigScript}" "${_unityFiles}" _cmds ${_unitySourceFiles}) + endif() + # set up single unity file for prefix header generation + cotire_make_single_unity_source_file_path(${_language} ${_target} _unityFile) + cotire_setup_unity_generation_commands( + ${_language} ${_target} "${_targetScript}" "${_targetConfigScript}" "${_unityFile}" _cmds ${_unitySourceFiles}) + cotire_make_prefix_file_path(${_language} ${_target} _prefixFile) + # set up prefix header + if (_prefixFile) + # check for user provided prefix header files + get_property(_prefixHeaderFiles TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER_INIT) + if (_prefixHeaderFiles) + cotire_setup_prefix_generation_from_provided_command( + ${_language} ${_target} "${_targetConfigScript}" "${_prefixFile}" _cmds ${_prefixHeaderFiles}) + else() + cotire_setup_prefix_generation_from_unity_command( + ${_language} ${_target} "${_targetConfigScript}" "${_prefixFile}" "${_unityFile}" _cmds ${_unitySourceFiles}) + endif() + # check if selected language has enough sources at all + list (LENGTH _sourceFiles _numberOfSources) + if (_numberOfSources LESS ${COTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES}) + set (_targetUsePCH FALSE) + else() + get_target_property(_targetUsePCH ${_target} COTIRE_ENABLE_PRECOMPILED_HEADER) + endif() + if (_targetUsePCH) + cotire_make_pch_file_path(${_language} ${_target} _pchFile) + if (_pchFile) + # first file in _sourceFiles is passed as the host file + cotire_setup_pch_file_compilation( + ${_language} ${_target} "${_targetConfigScript}" "${_prefixFile}" "${_pchFile}" ${_sourceFiles}) + cotire_setup_pch_file_inclusion( + ${_language} ${_target} ${_wholeTarget} "${_prefixFile}" "${_pchFile}" ${_sourceFiles}) + endif() + elseif (_prefixHeaderFiles) + # user provided prefix header must be included unconditionally + cotire_setup_prefix_file_inclusion(${_language} ${_target} "${_prefixFile}" ${_sourceFiles}) + endif() + endif() + # mark target as cotired for language + set_property(TARGET ${_target} PROPERTY COTIRE_${_language}_UNITY_SOURCE "${_unityFiles}") + if (_prefixFile) + set_property(TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER "${_prefixFile}") + if (_targetUsePCH AND _pchFile) + set_property(TARGET ${_target} PROPERTY COTIRE_${_language}_PRECOMPILED_HEADER "${_pchFile}") + endif() + endif() + set (${_cmdsVar} ${_cmds} PARENT_SCOPE) +endfunction() + +function (cotire_setup_clean_target _target) + set (_cleanTargetName "${_target}${COTIRE_CLEAN_TARGET_SUFFIX}") + if (NOT TARGET "${_cleanTargetName}") + cotire_set_cmd_to_prologue(_cmds) + get_filename_component(_outputDir "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}" ABSOLUTE) + list (APPEND _cmds -P "${COTIRE_CMAKE_MODULE_FILE}" "cleanup" "${_outputDir}" "${COTIRE_INTDIR}" "${_target}") + add_custom_target(${_cleanTargetName} + COMMAND ${_cmds} + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + COMMENT "Cleaning up target ${_target} cotire generated files" + VERBATIM) + cotire_init_target("${_cleanTargetName}") + endif() +endfunction() + +function (cotire_setup_pch_target _languages _configurations _target) + if ("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") + # for makefile based generators, we add a custom target to trigger the generation of the cotire related files + set (_dependsFiles "") + foreach (_language ${_languages}) + set (_props COTIRE_${_language}_PREFIX_HEADER COTIRE_${_language}_UNITY_SOURCE) + if (NOT CMAKE_${_language}_COMPILER_ID MATCHES "MSVC|Intel" AND NOT + (WIN32 AND CMAKE_${_language}_COMPILER_ID MATCHES "Clang")) + # MSVC, Intel and clang-cl only create precompiled header as a side effect + list (INSERT _props 0 COTIRE_${_language}_PRECOMPILED_HEADER) + endif() + cotire_get_first_set_property_value(_dependsFile TARGET ${_target} ${_props}) + if (_dependsFile) + list (APPEND _dependsFiles "${_dependsFile}") + endif() + endforeach() + if (_dependsFiles) + set (_pchTargetName "${_target}${COTIRE_PCH_TARGET_SUFFIX}") + add_custom_target("${_pchTargetName}" DEPENDS ${_dependsFiles}) + cotire_init_target("${_pchTargetName}") + cotire_add_to_pch_all_target(${_pchTargetName}) + endif() + else() + # for other generators, we add the "clean all" target to clean up the precompiled header + cotire_setup_clean_all_target() + endif() +endfunction() + +function (cotire_filter_object_libraries _target _objectLibrariesVar) + set (_objectLibraries "") + foreach (_source ${ARGN}) + if (_source MATCHES "^\\$$") + list (APPEND _objectLibraries "${_source}") + endif() + endforeach() + set (${_objectLibrariesVar} ${_objectLibraries} PARENT_SCOPE) +endfunction() + +function (cotire_collect_unity_target_sources _target _languages _unityTargetSourcesVar) + get_target_property(_targetSourceFiles ${_target} SOURCES) + set (_unityTargetSources ${_targetSourceFiles}) + foreach (_language ${_languages}) + get_property(_unityFiles TARGET ${_target} PROPERTY COTIRE_${_language}_UNITY_SOURCE) + if (_unityFiles) + # remove source files that are included in the unity source + set (_sourceFiles "") + set (_excludedSources "") + set (_cotiredSources "") + cotire_filter_language_source_files(${_language} ${_target} _sourceFiles _excludedSources _cotiredSources ${_targetSourceFiles}) + if (_sourceFiles OR _cotiredSources) + list (REMOVE_ITEM _unityTargetSources ${_sourceFiles} ${_cotiredSources}) + endif() + # add unity source files instead + list (APPEND _unityTargetSources ${_unityFiles}) + endif() + endforeach() + # handle object libraries which are part of the target's sources + get_target_property(_linkLibrariesStrategy ${_target} COTIRE_UNITY_LINK_LIBRARIES_INIT) + if ("${_linkLibrariesStrategy}" MATCHES "^COPY_UNITY$") + cotire_filter_object_libraries(${_target} _objectLibraries ${_targetSourceFiles}) + if (_objectLibraries) + cotire_map_libraries("${_linkLibrariesStrategy}" _unityObjectLibraries ${_objectLibraries}) + list (REMOVE_ITEM _unityTargetSources ${_objectLibraries}) + list (APPEND _unityTargetSources ${_unityObjectLibraries}) + endif() + endif() + set (${_unityTargetSourcesVar} ${_unityTargetSources} PARENT_SCOPE) +endfunction() + +function (cotire_setup_unity_target_pch_usage _languages _target) + foreach (_language ${_languages}) + get_property(_unityFiles TARGET ${_target} PROPERTY COTIRE_${_language}_UNITY_SOURCE) + if (_unityFiles) + get_property(_userPrefixFile TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER_INIT) + get_property(_prefixFile TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER) + if (_userPrefixFile AND _prefixFile) + # user provided prefix header must be included unconditionally by unity sources + cotire_setup_prefix_file_inclusion(${_language} ${_target} "${_prefixFile}" ${_unityFiles}) + endif() + endif() + endforeach() +endfunction() + +function (cotire_setup_unity_build_target _languages _configurations _target) + get_target_property(_unityTargetName ${_target} COTIRE_UNITY_TARGET_NAME) + if (NOT _unityTargetName) + set (_unityTargetName "${_target}${COTIRE_UNITY_BUILD_TARGET_SUFFIX}") + endif() + # determine unity target sub type + get_target_property(_targetType ${_target} TYPE) + if ("${_targetType}" STREQUAL "EXECUTABLE") + set (_unityTargetSubType "") + elseif (_targetType MATCHES "(STATIC|SHARED|MODULE|OBJECT)_LIBRARY") + set (_unityTargetSubType "${CMAKE_MATCH_1}") + else() + message (WARNING "cotire: target ${_target} has unknown target type ${_targetType}.") + return() + endif() + # determine unity target sources + set (_unityTargetSources "") + cotire_collect_unity_target_sources(${_target} "${_languages}" _unityTargetSources) + # prevent AUTOMOC, AUTOUIC and AUTORCC properties from being set when the unity target is created + set (CMAKE_AUTOMOC OFF) + set (CMAKE_AUTOUIC OFF) + set (CMAKE_AUTORCC OFF) + if (COTIRE_DEBUG) + message (STATUS "add target ${_targetType} ${_unityTargetName} ${_unityTargetSubType} EXCLUDE_FROM_ALL ${_unityTargetSources}") + endif() + # generate unity target + if ("${_targetType}" STREQUAL "EXECUTABLE") + add_executable(${_unityTargetName} ${_unityTargetSubType} EXCLUDE_FROM_ALL ${_unityTargetSources}) + else() + add_library(${_unityTargetName} ${_unityTargetSubType} EXCLUDE_FROM_ALL ${_unityTargetSources}) + endif() + # copy output location properties + set (_outputDirProperties + ARCHIVE_OUTPUT_DIRECTORY ARCHIVE_OUTPUT_DIRECTORY_ + LIBRARY_OUTPUT_DIRECTORY LIBRARY_OUTPUT_DIRECTORY_ + RUNTIME_OUTPUT_DIRECTORY RUNTIME_OUTPUT_DIRECTORY_) + if (COTIRE_UNITY_OUTPUT_DIRECTORY) + set (_setDefaultOutputDir TRUE) + if (IS_ABSOLUTE "${COTIRE_UNITY_OUTPUT_DIRECTORY}") + set (_outputDir "${COTIRE_UNITY_OUTPUT_DIRECTORY}") + else() + # append relative COTIRE_UNITY_OUTPUT_DIRECTORY to target's actual output directory + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} ${_outputDirProperties}) + cotire_resolve_config_properties("${_configurations}" _properties ${_outputDirProperties}) + foreach (_property ${_properties}) + get_property(_outputDir TARGET ${_target} PROPERTY ${_property}) + if (_outputDir) + get_filename_component(_outputDir "${_outputDir}/${COTIRE_UNITY_OUTPUT_DIRECTORY}" ABSOLUTE) + set_property(TARGET ${_unityTargetName} PROPERTY ${_property} "${_outputDir}") + set (_setDefaultOutputDir FALSE) + endif() + endforeach() + if (_setDefaultOutputDir) + get_filename_component(_outputDir "${CMAKE_CURRENT_BINARY_DIR}/${COTIRE_UNITY_OUTPUT_DIRECTORY}" ABSOLUTE) + endif() + endif() + if (_setDefaultOutputDir) + set_target_properties(${_unityTargetName} PROPERTIES + ARCHIVE_OUTPUT_DIRECTORY "${_outputDir}" + LIBRARY_OUTPUT_DIRECTORY "${_outputDir}" + RUNTIME_OUTPUT_DIRECTORY "${_outputDir}") + endif() + else() + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + ${_outputDirProperties}) + endif() + # copy output name + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + ARCHIVE_OUTPUT_NAME ARCHIVE_OUTPUT_NAME_ + LIBRARY_OUTPUT_NAME LIBRARY_OUTPUT_NAME_ + OUTPUT_NAME OUTPUT_NAME_ + RUNTIME_OUTPUT_NAME RUNTIME_OUTPUT_NAME_ + PREFIX _POSTFIX SUFFIX + IMPORT_PREFIX IMPORT_SUFFIX) + # copy compile stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + COMPILE_DEFINITIONS COMPILE_DEFINITIONS_ + COMPILE_FLAGS COMPILE_OPTIONS + Fortran_FORMAT Fortran_MODULE_DIRECTORY + INCLUDE_DIRECTORIES + INTERPROCEDURAL_OPTIMIZATION INTERPROCEDURAL_OPTIMIZATION_ + POSITION_INDEPENDENT_CODE + C_COMPILER_LAUNCHER CXX_COMPILER_LAUNCHER + C_INCLUDE_WHAT_YOU_USE CXX_INCLUDE_WHAT_YOU_USE + C_VISIBILITY_PRESET CXX_VISIBILITY_PRESET VISIBILITY_INLINES_HIDDEN + C_CLANG_TIDY CXX_CLANG_TIDY) + # copy compile features + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + C_EXTENSIONS C_STANDARD C_STANDARD_REQUIRED + CXX_EXTENSIONS CXX_STANDARD CXX_STANDARD_REQUIRED + COMPILE_FEATURES) + # copy interface stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + COMPATIBLE_INTERFACE_BOOL COMPATIBLE_INTERFACE_NUMBER_MAX COMPATIBLE_INTERFACE_NUMBER_MIN + COMPATIBLE_INTERFACE_STRING + INTERFACE_COMPILE_DEFINITIONS INTERFACE_COMPILE_FEATURES INTERFACE_COMPILE_OPTIONS + INTERFACE_INCLUDE_DIRECTORIES INTERFACE_SOURCES + INTERFACE_POSITION_INDEPENDENT_CODE INTERFACE_SYSTEM_INCLUDE_DIRECTORIES + INTERFACE_AUTOUIC_OPTIONS NO_SYSTEM_FROM_IMPORTED) + # copy link stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + BUILD_WITH_INSTALL_RPATH BUILD_WITH_INSTALL_NAME_DIR + INSTALL_RPATH INSTALL_RPATH_USE_LINK_PATH SKIP_BUILD_RPATH + LINKER_LANGUAGE LINK_DEPENDS LINK_DEPENDS_NO_SHARED + LINK_FLAGS LINK_FLAGS_ + LINK_INTERFACE_LIBRARIES LINK_INTERFACE_LIBRARIES_ + LINK_INTERFACE_MULTIPLICITY LINK_INTERFACE_MULTIPLICITY_ + LINK_SEARCH_START_STATIC LINK_SEARCH_END_STATIC + STATIC_LIBRARY_FLAGS STATIC_LIBRARY_FLAGS_ + NO_SONAME SOVERSION VERSION + LINK_WHAT_YOU_USE BUILD_RPATH) + # copy cmake stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + IMPLICIT_DEPENDS_INCLUDE_TRANSFORM RULE_LAUNCH_COMPILE RULE_LAUNCH_CUSTOM RULE_LAUNCH_LINK) + # copy Apple platform specific stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + BUNDLE BUNDLE_EXTENSION FRAMEWORK FRAMEWORK_VERSION INSTALL_NAME_DIR + MACOSX_BUNDLE MACOSX_BUNDLE_INFO_PLIST MACOSX_FRAMEWORK_INFO_PLIST MACOSX_RPATH + OSX_ARCHITECTURES OSX_ARCHITECTURES_ PRIVATE_HEADER PUBLIC_HEADER RESOURCE XCTEST + IOS_INSTALL_COMBINED XCODE_EXPLICIT_FILE_TYPE XCODE_PRODUCT_TYPE) + # copy Windows platform specific stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + GNUtoMS + COMPILE_PDB_NAME COMPILE_PDB_NAME_ + COMPILE_PDB_OUTPUT_DIRECTORY COMPILE_PDB_OUTPUT_DIRECTORY_ + PDB_NAME PDB_NAME_ PDB_OUTPUT_DIRECTORY PDB_OUTPUT_DIRECTORY_ + VS_DESKTOP_EXTENSIONS_VERSION VS_DOTNET_REFERENCES VS_DOTNET_TARGET_FRAMEWORK_VERSION + VS_GLOBAL_KEYWORD VS_GLOBAL_PROJECT_TYPES VS_GLOBAL_ROOTNAMESPACE + VS_IOT_EXTENSIONS_VERSION VS_IOT_STARTUP_TASK + VS_KEYWORD VS_MOBILE_EXTENSIONS_VERSION + VS_SCC_AUXPATH VS_SCC_LOCALPATH VS_SCC_PROJECTNAME VS_SCC_PROVIDER + VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION + VS_WINRT_COMPONENT VS_WINRT_EXTENSIONS VS_WINRT_REFERENCES + WIN32_EXECUTABLE WINDOWS_EXPORT_ALL_SYMBOLS + DEPLOYMENT_REMOTE_DIRECTORY VS_CONFIGURATION_TYPE + VS_SDK_REFERENCES VS_USER_PROPS VS_DEBUGGER_WORKING_DIRECTORY) + # copy Android platform specific stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + ANDROID_API ANDROID_API_MIN ANDROID_GUI + ANDROID_ANT_ADDITIONAL_OPTIONS ANDROID_ARCH ANDROID_ASSETS_DIRECTORIES + ANDROID_JAR_DEPENDENCIES ANDROID_JAR_DIRECTORIES ANDROID_JAVA_SOURCE_DIR + ANDROID_NATIVE_LIB_DEPENDENCIES ANDROID_NATIVE_LIB_DIRECTORIES + ANDROID_PROCESS_MAX ANDROID_PROGUARD ANDROID_PROGUARD_CONFIG_PATH + ANDROID_SECURE_PROPS_PATH ANDROID_SKIP_ANT_STEP ANDROID_STL_TYPE) + # copy CUDA platform specific stuff + cotire_copy_set_properties("${_configurations}" TARGET ${_target} ${_unityTargetName} + CUDA_PTX_COMPILATION CUDA_SEPARABLE_COMPILATION CUDA_RESOLVE_DEVICE_SYMBOLS + CUDA_EXTENSIONS CUDA_STANDARD CUDA_STANDARD_REQUIRED) + # use output name from original target + get_target_property(_targetOutputName ${_unityTargetName} OUTPUT_NAME) + if (NOT _targetOutputName) + set_property(TARGET ${_unityTargetName} PROPERTY OUTPUT_NAME "${_target}") + endif() + # use export symbol from original target + cotire_get_target_export_symbol("${_target}" _defineSymbol) + if (_defineSymbol) + set_property(TARGET ${_unityTargetName} PROPERTY DEFINE_SYMBOL "${_defineSymbol}") + if ("${_targetType}" STREQUAL "EXECUTABLE") + set_property(TARGET ${_unityTargetName} PROPERTY ENABLE_EXPORTS TRUE) + endif() + endif() + # enable parallel compilation for MSVC + if (MSVC AND "${CMAKE_GENERATOR}" MATCHES "Visual Studio") + list (LENGTH _unityTargetSources _numberOfUnityTargetSources) + if (_numberOfUnityTargetSources GREATER 1) + set_property(TARGET ${_unityTargetName} APPEND PROPERTY COMPILE_OPTIONS "/MP") + endif() + endif() + cotire_init_target(${_unityTargetName}) + cotire_add_to_unity_all_target(${_unityTargetName}) + set_property(TARGET ${_target} PROPERTY COTIRE_UNITY_TARGET_NAME "${_unityTargetName}") +endfunction(cotire_setup_unity_build_target) + +function (cotire_target _target) + set(_options "") + set(_oneValueArgs "") + set(_multiValueArgs LANGUAGES CONFIGURATIONS) + cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + if (NOT _option_LANGUAGES) + get_property (_option_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) + endif() + if (NOT _option_CONFIGURATIONS) + cotire_get_configuration_types(_option_CONFIGURATIONS) + endif() + # check if cotire can be applied to target at all + cotire_is_target_supported(${_target} _isSupported) + if (NOT _isSupported) + get_target_property(_imported ${_target} IMPORTED) + get_target_property(_targetType ${_target} TYPE) + if (_imported) + message (WARNING "cotire: imported ${_targetType} target ${_target} cannot be cotired.") + else() + message (STATUS "cotire: ${_targetType} target ${_target} cannot be cotired.") + endif() + return() + endif() + # resolve alias + get_target_property(_aliasName ${_target} ALIASED_TARGET) + if (_aliasName) + if (COTIRE_DEBUG) + message (STATUS "${_target} is an alias. Applying cotire to aliased target ${_aliasName} instead.") + endif() + set (_target ${_aliasName}) + endif() + # check if target needs to be cotired for build type + # when using configuration types, the test is performed at build time + cotire_init_cotire_target_properties(${_target}) + if (NOT CMAKE_CONFIGURATION_TYPES) + if (CMAKE_BUILD_TYPE) + list (FIND _option_CONFIGURATIONS "${CMAKE_BUILD_TYPE}" _index) + else() + list (FIND _option_CONFIGURATIONS "None" _index) + endif() + if (_index EQUAL -1) + if (COTIRE_DEBUG) + message (STATUS "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} not cotired (${_option_CONFIGURATIONS})") + endif() + return() + endif() + endif() + # when not using configuration types, immediately create cotire intermediate dir + if (NOT CMAKE_CONFIGURATION_TYPES) + cotire_get_intermediate_dir(_baseDir) + file (MAKE_DIRECTORY "${_baseDir}") + endif() + # choose languages that apply to the target + cotire_choose_target_languages("${_target}" _targetLanguages _wholeTarget ${_option_LANGUAGES}) + if (NOT _targetLanguages) + return() + endif() + set (_cmds "") + foreach (_language ${_targetLanguages}) + cotire_process_target_language("${_language}" "${_option_CONFIGURATIONS}" ${_target} ${_wholeTarget} _cmd) + if (_cmd) + list (APPEND _cmds ${_cmd}) + endif() + endforeach() + get_target_property(_targetAddSCU ${_target} COTIRE_ADD_UNITY_BUILD) + if (_targetAddSCU) + cotire_setup_unity_build_target("${_targetLanguages}" "${_option_CONFIGURATIONS}" ${_target}) + endif() + get_target_property(_targetUsePCH ${_target} COTIRE_ENABLE_PRECOMPILED_HEADER) + if (_targetUsePCH) + cotire_setup_target_pch_usage("${_targetLanguages}" ${_target} ${_wholeTarget} ${_cmds}) + cotire_setup_pch_target("${_targetLanguages}" "${_option_CONFIGURATIONS}" ${_target}) + if (_targetAddSCU) + cotire_setup_unity_target_pch_usage("${_targetLanguages}" ${_target}) + endif() + endif() + get_target_property(_targetAddCleanTarget ${_target} COTIRE_ADD_CLEAN) + if (_targetAddCleanTarget) + cotire_setup_clean_target(${_target}) + endif() +endfunction(cotire_target) + +function (cotire_map_libraries _strategy _mappedLibrariesVar) + set (_mappedLibraries "") + foreach (_library ${ARGN}) + if (_library MATCHES "^\\$$") + set (_libraryName "${CMAKE_MATCH_1}") + set (_linkOnly TRUE) + set (_objectLibrary FALSE) + elseif (_library MATCHES "^\\$$") + set (_libraryName "${CMAKE_MATCH_1}") + set (_linkOnly FALSE) + set (_objectLibrary TRUE) + else() + set (_libraryName "${_library}") + set (_linkOnly FALSE) + set (_objectLibrary FALSE) + endif() + if ("${_strategy}" MATCHES "COPY_UNITY") + cotire_is_target_supported(${_libraryName} _isSupported) + if (_isSupported) + # use target's corresponding unity target, if available + get_target_property(_libraryUnityTargetName ${_libraryName} COTIRE_UNITY_TARGET_NAME) + if (TARGET "${_libraryUnityTargetName}") + if (_linkOnly) + list (APPEND _mappedLibraries "$") + elseif (_objectLibrary) + list (APPEND _mappedLibraries "$") + else() + list (APPEND _mappedLibraries "${_libraryUnityTargetName}") + endif() + else() + list (APPEND _mappedLibraries "${_library}") + endif() + else() + list (APPEND _mappedLibraries "${_library}") + endif() + else() + list (APPEND _mappedLibraries "${_library}") + endif() + endforeach() + list (REMOVE_DUPLICATES _mappedLibraries) + set (${_mappedLibrariesVar} ${_mappedLibraries} PARENT_SCOPE) +endfunction() + +function (cotire_target_link_libraries _target) + cotire_is_target_supported(${_target} _isSupported) + if (NOT _isSupported) + return() + endif() + get_target_property(_unityTargetName ${_target} COTIRE_UNITY_TARGET_NAME) + if (TARGET "${_unityTargetName}") + get_target_property(_linkLibrariesStrategy ${_target} COTIRE_UNITY_LINK_LIBRARIES_INIT) + if (COTIRE_DEBUG) + message (STATUS "unity target ${_unityTargetName} link strategy: ${_linkLibrariesStrategy}") + endif() + if ("${_linkLibrariesStrategy}" MATCHES "^(COPY|COPY_UNITY)$") + get_target_property(_linkLibraries ${_target} LINK_LIBRARIES) + if (_linkLibraries) + cotire_map_libraries("${_linkLibrariesStrategy}" _unityLinkLibraries ${_linkLibraries}) + set_target_properties(${_unityTargetName} PROPERTIES LINK_LIBRARIES "${_unityLinkLibraries}") + if (COTIRE_DEBUG) + message (STATUS "unity target ${_unityTargetName} link libraries: ${_unityLinkLibraries}") + endif() + endif() + get_target_property(_interfaceLinkLibraries ${_target} INTERFACE_LINK_LIBRARIES) + if (_interfaceLinkLibraries) + cotire_map_libraries("${_linkLibrariesStrategy}" _unityLinkInterfaceLibraries ${_interfaceLinkLibraries}) + set_target_properties(${_unityTargetName} PROPERTIES INTERFACE_LINK_LIBRARIES "${_unityLinkInterfaceLibraries}") + if (COTIRE_DEBUG) + message (STATUS "unity target ${_unityTargetName} interface link libraries: ${_unityLinkInterfaceLibraries}") + endif() + endif() + get_target_property(_manualDependencies ${_target} MANUALLY_ADDED_DEPENDENCIES) + if (_manualDependencies) + cotire_map_libraries("${_linkLibrariesStrategy}" _unityManualDependencies ${_manualDependencies}) + if (_unityManualDependencies) + add_dependencies("${_unityTargetName}" ${_unityManualDependencies}) + endif() + endif() + endif() + endif() +endfunction(cotire_target_link_libraries) + +function (cotire_cleanup _binaryDir _cotireIntermediateDirName _targetName) + if (_targetName) + file (GLOB_RECURSE _cotireFiles "${_binaryDir}/${_targetName}*.*") + else() + file (GLOB_RECURSE _cotireFiles "${_binaryDir}/*.*") + endif() + # filter files in intermediate directory + set (_filesToRemove "") + foreach (_file ${_cotireFiles}) + get_filename_component(_dir "${_file}" DIRECTORY) + get_filename_component(_dirName "${_dir}" NAME) + if ("${_dirName}" STREQUAL "${_cotireIntermediateDirName}") + list (APPEND _filesToRemove "${_file}") + endif() + endforeach() + if (_filesToRemove) + if (COTIRE_VERBOSE) + message (STATUS "cleaning up ${_filesToRemove}") + endif() + file (REMOVE ${_filesToRemove}) + endif() +endfunction() + +function (cotire_init_target _targetName) + if (COTIRE_TARGETS_FOLDER) + set_target_properties(${_targetName} PROPERTIES FOLDER "${COTIRE_TARGETS_FOLDER}") + endif() + set_target_properties(${_targetName} PROPERTIES EXCLUDE_FROM_ALL TRUE) + if (MSVC_IDE) + set_target_properties(${_targetName} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE) + endif() +endfunction() + +function (cotire_add_to_pch_all_target _pchTargetName) + set (_targetName "${COTIRE_PCH_ALL_TARGET_NAME}") + if (NOT TARGET "${_targetName}") + add_custom_target("${_targetName}" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + VERBATIM) + cotire_init_target("${_targetName}") + endif() + cotire_setup_clean_all_target() + add_dependencies(${_targetName} ${_pchTargetName}) +endfunction() + +function (cotire_add_to_unity_all_target _unityTargetName) + set (_targetName "${COTIRE_UNITY_BUILD_ALL_TARGET_NAME}") + if (NOT TARGET "${_targetName}") + add_custom_target("${_targetName}" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + VERBATIM) + cotire_init_target("${_targetName}") + endif() + cotire_setup_clean_all_target() + add_dependencies(${_targetName} ${_unityTargetName}) +endfunction() + +function (cotire_setup_clean_all_target) + set (_targetName "${COTIRE_CLEAN_ALL_TARGET_NAME}") + if (NOT TARGET "${_targetName}") + cotire_set_cmd_to_prologue(_cmds) + list (APPEND _cmds -P "${COTIRE_CMAKE_MODULE_FILE}" "cleanup" "${CMAKE_BINARY_DIR}" "${COTIRE_INTDIR}") + add_custom_target(${_targetName} + COMMAND ${_cmds} + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + COMMENT "Cleaning up all cotire generated files" + VERBATIM) + cotire_init_target("${_targetName}") + endif() +endfunction() + +function (cotire) + set(_options "") + set(_oneValueArgs "") + set(_multiValueArgs LANGUAGES CONFIGURATIONS) + cmake_parse_arguments(_option "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) + set (_targets ${_option_UNPARSED_ARGUMENTS}) + foreach (_target ${_targets}) + if (TARGET ${_target}) + cotire_target(${_target} LANGUAGES ${_option_LANGUAGES} CONFIGURATIONS ${_option_CONFIGURATIONS}) + else() + message (WARNING "cotire: ${_target} is not a target.") + endif() + endforeach() + foreach (_target ${_targets}) + if (TARGET ${_target}) + cotire_target_link_libraries(${_target}) + endif() + endforeach() +endfunction() + +if (CMAKE_SCRIPT_MODE_FILE) + + # cotire is being run in script mode + # locate -P on command args + set (COTIRE_ARGC -1) + foreach (_index RANGE ${CMAKE_ARGC}) + if (COTIRE_ARGC GREATER -1) + set (COTIRE_ARGV${COTIRE_ARGC} "${CMAKE_ARGV${_index}}") + math (EXPR COTIRE_ARGC "${COTIRE_ARGC} + 1") + elseif ("${CMAKE_ARGV${_index}}" STREQUAL "-P") + set (COTIRE_ARGC 0) + endif() + endforeach() + + # include target script if available + if ("${COTIRE_ARGV2}" MATCHES "\\.cmake$") + # the included target scripts sets up additional variables relating to the target (e.g., COTIRE_TARGET_SOURCES) + include("${COTIRE_ARGV2}") + endif() + + if (COTIRE_DEBUG) + message (STATUS "${COTIRE_ARGV0} ${COTIRE_ARGV1} ${COTIRE_ARGV2} ${COTIRE_ARGV3} ${COTIRE_ARGV4} ${COTIRE_ARGV5}") + endif() + + if (NOT COTIRE_BUILD_TYPE) + set (COTIRE_BUILD_TYPE "None") + endif() + string (TOUPPER "${COTIRE_BUILD_TYPE}" _upperConfig) + set (_includeDirs ${COTIRE_TARGET_INCLUDE_DIRECTORIES_${_upperConfig}}) + set (_systemIncludeDirs ${COTIRE_TARGET_SYSTEM_INCLUDE_DIRECTORIES_${_upperConfig}}) + set (_compileDefinitions ${COTIRE_TARGET_COMPILE_DEFINITIONS_${_upperConfig}}) + set (_compileFlags ${COTIRE_TARGET_COMPILE_FLAGS_${_upperConfig}}) + # check if target has been cotired for actual build type COTIRE_BUILD_TYPE + list (FIND COTIRE_TARGET_CONFIGURATION_TYPES "${COTIRE_BUILD_TYPE}" _index) + if (_index GREATER -1) + set (_sources ${COTIRE_TARGET_SOURCES}) + set (_sourcesDefinitions ${COTIRE_TARGET_SOURCES_COMPILE_DEFINITIONS_${_upperConfig}}) + else() + if (COTIRE_DEBUG) + message (STATUS "COTIRE_BUILD_TYPE=${COTIRE_BUILD_TYPE} not cotired (${COTIRE_TARGET_CONFIGURATION_TYPES})") + endif() + set (_sources "") + set (_sourcesDefinitions "") + endif() + set (_targetPreUndefs ${COTIRE_TARGET_PRE_UNDEFS}) + set (_targetPostUndefs ${COTIRE_TARGET_POST_UNDEFS}) + set (_sourcesPreUndefs ${COTIRE_TARGET_SOURCES_PRE_UNDEFS}) + set (_sourcesPostUndefs ${COTIRE_TARGET_SOURCES_POST_UNDEFS}) + + if ("${COTIRE_ARGV1}" STREQUAL "unity") + + if (XCODE) + # executing pre-build action under Xcode, check dependency on target script + set (_dependsOption DEPENDS "${COTIRE_ARGV2}") + else() + # executing custom command, no need to re-check for dependencies + set (_dependsOption "") + endif() + + cotire_select_unity_source_files("${COTIRE_ARGV3}" _sources ${_sources}) + + cotire_generate_unity_source( + "${COTIRE_ARGV3}" ${_sources} + LANGUAGE "${COTIRE_TARGET_LANGUAGE}" + SOURCES_COMPILE_DEFINITIONS ${_sourcesDefinitions} + PRE_UNDEFS ${_targetPreUndefs} + POST_UNDEFS ${_targetPostUndefs} + SOURCES_PRE_UNDEFS ${_sourcesPreUndefs} + SOURCES_POST_UNDEFS ${_sourcesPostUndefs} + ${_dependsOption}) + + elseif ("${COTIRE_ARGV1}" STREQUAL "prefix") + + if (XCODE) + # executing pre-build action under Xcode, check dependency on unity file and prefix dependencies + set (_dependsOption DEPENDS "${COTIRE_ARGV4}" ${COTIRE_TARGET_PREFIX_DEPENDS}) + else() + # executing custom command, no need to re-check for dependencies + set (_dependsOption "") + endif() + + set (_files "") + foreach (_index RANGE 4 ${COTIRE_ARGC}) + if (COTIRE_ARGV${_index}) + list (APPEND _files "${COTIRE_ARGV${_index}}") + endif() + endforeach() + + cotire_generate_prefix_header( + "${COTIRE_ARGV3}" ${_files} + COMPILER_LAUNCHER "${COTIRE_TARGET_${COTIRE_TARGET_LANGUAGE}_COMPILER_LAUNCHER}" + COMPILER_EXECUTABLE "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER}" + COMPILER_ARG1 ${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_ARG1} + COMPILER_ID "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_ID}" + COMPILER_VERSION "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_VERSION}" + LANGUAGE "${COTIRE_TARGET_LANGUAGE}" + IGNORE_PATH "${COTIRE_TARGET_IGNORE_PATH};${COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_PATH}" + INCLUDE_PATH ${COTIRE_TARGET_INCLUDE_PATH} + IGNORE_EXTENSIONS "${CMAKE_${COTIRE_TARGET_LANGUAGE}_SOURCE_FILE_EXTENSIONS};${COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_EXTENSIONS}" + INCLUDE_PRIORITY_PATH ${COTIRE_TARGET_INCLUDE_PRIORITY_PATH} + INCLUDE_DIRECTORIES ${_includeDirs} + SYSTEM_INCLUDE_DIRECTORIES ${_systemIncludeDirs} + COMPILE_DEFINITIONS ${_compileDefinitions} + COMPILE_FLAGS ${_compileFlags} + ${_dependsOption}) + + elseif ("${COTIRE_ARGV1}" STREQUAL "precompile") + + set (_files "") + foreach (_index RANGE 5 ${COTIRE_ARGC}) + if (COTIRE_ARGV${_index}) + list (APPEND _files "${COTIRE_ARGV${_index}}") + endif() + endforeach() + + cotire_precompile_prefix_header( + "${COTIRE_ARGV3}" "${COTIRE_ARGV4}" "${COTIRE_ARGV5}" + COMPILER_LAUNCHER "${COTIRE_TARGET_${COTIRE_TARGET_LANGUAGE}_COMPILER_LAUNCHER}" + COMPILER_EXECUTABLE "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER}" + COMPILER_ARG1 ${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_ARG1} + COMPILER_ID "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_ID}" + COMPILER_VERSION "${CMAKE_${COTIRE_TARGET_LANGUAGE}_COMPILER_VERSION}" + LANGUAGE "${COTIRE_TARGET_LANGUAGE}" + INCLUDE_DIRECTORIES ${_includeDirs} + SYSTEM_INCLUDE_DIRECTORIES ${_systemIncludeDirs} + COMPILE_DEFINITIONS ${_compileDefinitions} + COMPILE_FLAGS ${_compileFlags}) + + elseif ("${COTIRE_ARGV1}" STREQUAL "combine") + + if (COTIRE_TARGET_LANGUAGE) + set (_combinedFile "${COTIRE_ARGV3}") + set (_startIndex 4) + else() + set (_combinedFile "${COTIRE_ARGV2}") + set (_startIndex 3) + endif() + set (_files "") + foreach (_index RANGE ${_startIndex} ${COTIRE_ARGC}) + if (COTIRE_ARGV${_index}) + list (APPEND _files "${COTIRE_ARGV${_index}}") + endif() + endforeach() + + if (XCODE) + # executing pre-build action under Xcode, check dependency on files to be combined + set (_dependsOption DEPENDS ${_files}) + else() + # executing custom command, no need to re-check for dependencies + set (_dependsOption "") + endif() + + if (COTIRE_TARGET_LANGUAGE) + cotire_generate_unity_source( + "${_combinedFile}" ${_files} + LANGUAGE "${COTIRE_TARGET_LANGUAGE}" + ${_dependsOption}) + else() + cotire_generate_unity_source("${_combinedFile}" ${_files} ${_dependsOption}) + endif() + + elseif ("${COTIRE_ARGV1}" STREQUAL "cleanup") + + cotire_cleanup("${COTIRE_ARGV2}" "${COTIRE_ARGV3}" "${COTIRE_ARGV4}") + + else() + message (FATAL_ERROR "cotire: unknown command \"${COTIRE_ARGV1}\".") + endif() + +else() + + # cotire is being run in include mode + # set up all variable and property definitions + + if (NOT DEFINED COTIRE_DEBUG_INIT) + if (DEFINED COTIRE_DEBUG) + set (COTIRE_DEBUG_INIT ${COTIRE_DEBUG}) + else() + set (COTIRE_DEBUG_INIT FALSE) + endif() + endif() + option (COTIRE_DEBUG "Enable cotire debugging output?" ${COTIRE_DEBUG_INIT}) + + if (NOT DEFINED COTIRE_VERBOSE_INIT) + if (DEFINED COTIRE_VERBOSE) + set (COTIRE_VERBOSE_INIT ${COTIRE_VERBOSE}) + else() + set (COTIRE_VERBOSE_INIT FALSE) + endif() + endif() + option (COTIRE_VERBOSE "Enable cotire verbose output?" ${COTIRE_VERBOSE_INIT}) + + set (COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_EXTENSIONS "inc;inl;ipp" CACHE STRING + "Ignore headers with the listed file extensions from the generated prefix header.") + + set (COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_PATH "" CACHE STRING + "Ignore headers from these directories when generating the prefix header.") + + set (COTIRE_UNITY_SOURCE_EXCLUDE_EXTENSIONS "m;mm" CACHE STRING + "Ignore sources with the listed file extensions from the generated unity source.") + + set (COTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES "2" CACHE STRING + "Minimum number of sources in target required to enable use of precompiled header.") + + if (NOT DEFINED COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT) + if (DEFINED COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES) + set (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT ${COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES}) + elseif ("${CMAKE_GENERATOR}" MATCHES "JOM|Ninja|Visual Studio") + # enable parallelization for generators that run multiple jobs by default + set (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT "-j") + else() + set (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT "0") + endif() + endif() + set (COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES "${COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES_INIT}" CACHE STRING + "Maximum number of source files to include in a single unity source file.") + + if (NOT COTIRE_PREFIX_HEADER_FILENAME_SUFFIX) + set (COTIRE_PREFIX_HEADER_FILENAME_SUFFIX "_prefix") + endif() + if (NOT COTIRE_UNITY_SOURCE_FILENAME_SUFFIX) + set (COTIRE_UNITY_SOURCE_FILENAME_SUFFIX "_unity") + endif() + if (NOT COTIRE_INTDIR) + set (COTIRE_INTDIR "cotire") + endif() + if (NOT COTIRE_PCH_ALL_TARGET_NAME) + set (COTIRE_PCH_ALL_TARGET_NAME "all_pch") + endif() + if (NOT COTIRE_UNITY_BUILD_ALL_TARGET_NAME) + set (COTIRE_UNITY_BUILD_ALL_TARGET_NAME "all_unity") + endif() + if (NOT COTIRE_CLEAN_ALL_TARGET_NAME) + set (COTIRE_CLEAN_ALL_TARGET_NAME "clean_cotire") + endif() + if (NOT COTIRE_CLEAN_TARGET_SUFFIX) + set (COTIRE_CLEAN_TARGET_SUFFIX "_clean_cotire") + endif() + if (NOT COTIRE_PCH_TARGET_SUFFIX) + set (COTIRE_PCH_TARGET_SUFFIX "_pch") + endif() + if (MSVC) + # MSVC default PCH memory scaling factor of 100 percent (75 MB) is too small for template heavy C++ code + # use a bigger default factor of 170 percent (128 MB) + if (NOT DEFINED COTIRE_PCH_MEMORY_SCALING_FACTOR) + set (COTIRE_PCH_MEMORY_SCALING_FACTOR "170") + endif() + endif() + if (NOT COTIRE_UNITY_BUILD_TARGET_SUFFIX) + set (COTIRE_UNITY_BUILD_TARGET_SUFFIX "_unity") + endif() + if (NOT DEFINED COTIRE_TARGETS_FOLDER) + set (COTIRE_TARGETS_FOLDER "cotire") + endif() + if (NOT DEFINED COTIRE_UNITY_OUTPUT_DIRECTORY) + if ("${CMAKE_GENERATOR}" MATCHES "Ninja") + # generated Ninja build files do not work if the unity target produces the same output file as the cotired target + set (COTIRE_UNITY_OUTPUT_DIRECTORY "unity") + else() + set (COTIRE_UNITY_OUTPUT_DIRECTORY "") + endif() + endif() + + # define cotire cache variables + + define_property( + CACHED_VARIABLE PROPERTY "COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_PATH" + BRIEF_DOCS "Ignore headers from these directories when generating the prefix header." + FULL_DOCS + "The variable can be set to a semicolon separated list of include directories." + "If a header file is found in one of these directories or sub-directories, it will be excluded from the generated prefix header." + "If not defined, defaults to empty list." + ) + + define_property( + CACHED_VARIABLE PROPERTY "COTIRE_ADDITIONAL_PREFIX_HEADER_IGNORE_EXTENSIONS" + BRIEF_DOCS "Ignore includes with the listed file extensions from the generated prefix header." + FULL_DOCS + "The variable can be set to a semicolon separated list of file extensions." + "If a header file extension matches one in the list, it will be excluded from the generated prefix header." + "Includes with an extension in CMAKE__SOURCE_FILE_EXTENSIONS are always ignored." + "If not defined, defaults to inc;inl;ipp." + ) + + define_property( + CACHED_VARIABLE PROPERTY "COTIRE_UNITY_SOURCE_EXCLUDE_EXTENSIONS" + BRIEF_DOCS "Exclude sources with the listed file extensions from the generated unity source." + FULL_DOCS + "The variable can be set to a semicolon separated list of file extensions." + "If a source file extension matches one in the list, it will be excluded from the generated unity source file." + "Source files with an extension in CMAKE__IGNORE_EXTENSIONS are always excluded." + "If not defined, defaults to m;mm." + ) + + define_property( + CACHED_VARIABLE PROPERTY "COTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES" + BRIEF_DOCS "Minimum number of sources in target required to enable use of precompiled header." + FULL_DOCS + "The variable can be set to an integer > 0." + "If a target contains less than that number of source files, cotire will not enable the use of the precompiled header for the target." + "If not defined, defaults to 2." + ) + + define_property( + CACHED_VARIABLE PROPERTY "COTIRE_MAXIMUM_NUMBER_OF_UNITY_INCLUDES" + BRIEF_DOCS "Maximum number of source files to include in a single unity source file." + FULL_DOCS + "This may be set to an integer >= 0." + "If 0, cotire will only create a single unity source file." + "If a target contains more than that number of source files, cotire will create multiple unity source files for it." + "Can be set to \"-j\" to optimize the count of unity source files for the number of available processor cores." + "Can be set to \"-j jobs\" to optimize the number of unity source files for the given number of simultaneous jobs." + "Is used to initialize the target property COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES." + "Defaults to \"-j\" for the generators Visual Studio, JOM or Ninja. Defaults to 0 otherwise." + ) + + # define cotire directory properties + + define_property( + DIRECTORY PROPERTY "COTIRE_ENABLE_PRECOMPILED_HEADER" + BRIEF_DOCS "Modify build command of cotired targets added in this directory to make use of the generated precompiled header." + FULL_DOCS + "See target property COTIRE_ENABLE_PRECOMPILED_HEADER." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_ADD_UNITY_BUILD" + BRIEF_DOCS "Add a new target that performs a unity build for cotired targets added in this directory." + FULL_DOCS + "See target property COTIRE_ADD_UNITY_BUILD." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_ADD_CLEAN" + BRIEF_DOCS "Add a new target that cleans all cotire generated files for cotired targets added in this directory." + FULL_DOCS + "See target property COTIRE_ADD_CLEAN." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_PREFIX_HEADER_IGNORE_PATH" + BRIEF_DOCS "Ignore headers from these directories when generating the prefix header." + FULL_DOCS + "See target property COTIRE_PREFIX_HEADER_IGNORE_PATH." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PATH" + BRIEF_DOCS "Honor headers from these directories when generating the prefix header." + FULL_DOCS + "See target property COTIRE_PREFIX_HEADER_INCLUDE_PATH." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH" + BRIEF_DOCS "Header paths matching one of these directories are put at the top of the prefix header." + FULL_DOCS + "See target property COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_UNITY_SOURCE_PRE_UNDEFS" + BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file before the inclusion of each source file." + FULL_DOCS + "See target property COTIRE_UNITY_SOURCE_PRE_UNDEFS." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_UNITY_SOURCE_POST_UNDEFS" + BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file after the inclusion of each source file." + FULL_DOCS + "See target property COTIRE_UNITY_SOURCE_POST_UNDEFS." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES" + BRIEF_DOCS "Maximum number of source files to include in a single unity source file." + FULL_DOCS + "See target property COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES." + ) + + define_property( + DIRECTORY PROPERTY "COTIRE_UNITY_LINK_LIBRARIES_INIT" + BRIEF_DOCS "Define strategy for setting up the unity target's link libraries." + FULL_DOCS + "See target property COTIRE_UNITY_LINK_LIBRARIES_INIT." + ) + + # define cotire target properties + + define_property( + TARGET PROPERTY "COTIRE_ENABLE_PRECOMPILED_HEADER" INHERITED + BRIEF_DOCS "Modify this target's build command to make use of the generated precompiled header." + FULL_DOCS + "If this property is set to TRUE, cotire will modify the build command to make use of the generated precompiled header." + "Irrespective of the value of this property, cotire will setup custom commands to generate the unity source and prefix header for the target." + "For makefile based generators cotire will also set up a custom target to manually invoke the generation of the precompiled header." + "The target name will be set to this target's name with the suffix _pch appended." + "Inherited from directory." + "Defaults to TRUE." + ) + + define_property( + TARGET PROPERTY "COTIRE_ADD_UNITY_BUILD" INHERITED + BRIEF_DOCS "Add a new target that performs a unity build for this target." + FULL_DOCS + "If this property is set to TRUE, cotire creates a new target of the same type that uses the generated unity source file instead of the target sources." + "Most of the relevant target properties will be copied from this target to the new unity build target." + "Target dependencies and linked libraries have to be manually set up for the new unity build target." + "The unity target name will be set to this target's name with the suffix _unity appended." + "Inherited from directory." + "Defaults to TRUE." + ) + + define_property( + TARGET PROPERTY "COTIRE_ADD_CLEAN" INHERITED + BRIEF_DOCS "Add a new target that cleans all cotire generated files for this target." + FULL_DOCS + "If this property is set to TRUE, cotire creates a new target that clean all files (unity source, prefix header, precompiled header)." + "The clean target name will be set to this target's name with the suffix _clean_cotire appended." + "Inherited from directory." + "Defaults to FALSE." + ) + + define_property( + TARGET PROPERTY "COTIRE_PREFIX_HEADER_IGNORE_PATH" INHERITED + BRIEF_DOCS "Ignore headers from these directories when generating the prefix header." + FULL_DOCS + "The property can be set to a list of directories." + "If a header file is found in one of these directories or sub-directories, it will be excluded from the generated prefix header." + "Inherited from directory." + "If not set, this property is initialized to \${CMAKE_SOURCE_DIR};\${CMAKE_BINARY_DIR}." + ) + + define_property( + TARGET PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PATH" INHERITED + BRIEF_DOCS "Honor headers from these directories when generating the prefix header." + FULL_DOCS + "The property can be set to a list of directories." + "If a header file is found in one of these directories or sub-directories, it will be included in the generated prefix header." + "If a header file is both selected by COTIRE_PREFIX_HEADER_IGNORE_PATH and COTIRE_PREFIX_HEADER_INCLUDE_PATH," + "the option which yields the closer relative path match wins." + "Inherited from directory." + "If not set, this property is initialized to the empty list." + ) + + define_property( + TARGET PROPERTY "COTIRE_PREFIX_HEADER_INCLUDE_PRIORITY_PATH" INHERITED + BRIEF_DOCS "Header paths matching one of these directories are put at the top of prefix header." + FULL_DOCS + "The property can be set to a list of directories." + "Header file paths matching one of these directories will be inserted at the beginning of the generated prefix header." + "Header files are sorted according to the order of the directories in the property." + "If not set, this property is initialized to the empty list." + ) + + define_property( + TARGET PROPERTY "COTIRE_UNITY_SOURCE_PRE_UNDEFS" INHERITED + BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file before the inclusion of each target source file." + FULL_DOCS + "This may be set to a semicolon-separated list of preprocessor symbols." + "cotire will add corresponding #undef directives to the generated unit source file before each target source file." + "Inherited from directory." + "Defaults to empty string." + ) + + define_property( + TARGET PROPERTY "COTIRE_UNITY_SOURCE_POST_UNDEFS" INHERITED + BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file after the inclusion of each target source file." + FULL_DOCS + "This may be set to a semicolon-separated list of preprocessor symbols." + "cotire will add corresponding #undef directives to the generated unit source file after each target source file." + "Inherited from directory." + "Defaults to empty string." + ) + + define_property( + TARGET PROPERTY "COTIRE_UNITY_SOURCE_MAXIMUM_NUMBER_OF_INCLUDES" INHERITED + BRIEF_DOCS "Maximum number of source files to include in a single unity source file." + FULL_DOCS + "This may be set to an integer > 0." + "If a target contains more than that number of source files, cotire will create multiple unity build files for it." + "If not set, cotire will only create a single unity source file." + "Inherited from directory." + "Defaults to empty." + ) + + define_property( + TARGET PROPERTY "COTIRE__UNITY_SOURCE_INIT" + BRIEF_DOCS "User provided unity source file to be used instead of the automatically generated one." + FULL_DOCS + "If set, cotire will only add the given file(s) to the generated unity source file." + "If not set, cotire will add all the target source files to the generated unity source file." + "The property can be set to a user provided unity source file." + "Defaults to empty." + ) + + define_property( + TARGET PROPERTY "COTIRE__PREFIX_HEADER_INIT" + BRIEF_DOCS "User provided prefix header file to be used instead of the automatically generated one." + FULL_DOCS + "If set, cotire will add the given header file(s) to the generated prefix header file." + "If not set, cotire will generate a prefix header by tracking the header files included by the unity source file." + "The property can be set to a user provided prefix header file (e.g., stdafx.h)." + "Defaults to empty." + ) + + define_property( + TARGET PROPERTY "COTIRE_UNITY_LINK_LIBRARIES_INIT" INHERITED + BRIEF_DOCS "Define strategy for setting up unity target's link libraries." + FULL_DOCS + "If this property is empty or set to NONE, the generated unity target's link libraries have to be set up manually." + "If this property is set to COPY, the unity target's link libraries will be copied from this target." + "If this property is set to COPY_UNITY, the unity target's link libraries will be copied from this target with considering existing unity targets." + "Inherited from directory." + "Defaults to empty." + ) + + define_property( + TARGET PROPERTY "COTIRE__UNITY_SOURCE" + BRIEF_DOCS "Read-only property. The generated unity source file(s)." + FULL_DOCS + "cotire sets this property to the path of the generated single computation unit source file for the target." + "Defaults to empty string." + ) + + define_property( + TARGET PROPERTY "COTIRE__PREFIX_HEADER" + BRIEF_DOCS "Read-only property. The generated prefix header file." + FULL_DOCS + "cotire sets this property to the full path of the generated language prefix header for the target." + "Defaults to empty string." + ) + + define_property( + TARGET PROPERTY "COTIRE__PRECOMPILED_HEADER" + BRIEF_DOCS "Read-only property. The generated precompiled header file." + FULL_DOCS + "cotire sets this property to the full path of the generated language precompiled header binary for the target." + "Defaults to empty string." + ) + + define_property( + TARGET PROPERTY "COTIRE_UNITY_TARGET_NAME" + BRIEF_DOCS "The name of the generated unity build target corresponding to this target." + FULL_DOCS + "This property can be set to the desired name of the unity target that will be created by cotire." + "If not set, the unity target name will be set to this target's name with the suffix _unity appended." + "After this target has been processed by cotire, the property is set to the actual name of the generated unity target." + "Defaults to empty string." + ) + + # define cotire source properties + + define_property( + SOURCE PROPERTY "COTIRE_EXCLUDED" + BRIEF_DOCS "Do not modify source file's build command." + FULL_DOCS + "If this property is set to TRUE, the source file's build command will not be modified to make use of the precompiled header." + "The source file will also be excluded from the generated unity source file." + "Source files that have their COMPILE_FLAGS property set will be excluded by default." + "Defaults to FALSE." + ) + + define_property( + SOURCE PROPERTY "COTIRE_DEPENDENCY" + BRIEF_DOCS "Add this source file to dependencies of the automatically generated prefix header file." + FULL_DOCS + "If this property is set to TRUE, the source file is added to dependencies of the generated prefix header file." + "If the file is modified, cotire will re-generate the prefix header source upon build." + "Defaults to FALSE." + ) + + define_property( + SOURCE PROPERTY "COTIRE_UNITY_SOURCE_PRE_UNDEFS" + BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file before the inclusion of this source file." + FULL_DOCS + "This may be set to a semicolon-separated list of preprocessor symbols." + "cotire will add corresponding #undef directives to the generated unit source file before this file is included." + "Defaults to empty string." + ) + + define_property( + SOURCE PROPERTY "COTIRE_UNITY_SOURCE_POST_UNDEFS" + BRIEF_DOCS "Preprocessor undefs to place in the generated unity source file after the inclusion of this source file." + FULL_DOCS + "This may be set to a semicolon-separated list of preprocessor symbols." + "cotire will add corresponding #undef directives to the generated unit source file after this file is included." + "Defaults to empty string." + ) + + define_property( + SOURCE PROPERTY "COTIRE_START_NEW_UNITY_SOURCE" + BRIEF_DOCS "Start a new unity source file which includes this source file as the first one." + FULL_DOCS + "If this property is set to TRUE, cotire will complete the current unity file and start a new one." + "The new unity source file will include this source file as the first one." + "This property essentially works as a separator for unity source files." + "Defaults to FALSE." + ) + + define_property( + SOURCE PROPERTY "COTIRE_TARGET" + BRIEF_DOCS "Read-only property. Mark this source file as cotired for the given target." + FULL_DOCS + "cotire sets this property to the name of target, that the source file's build command has been altered for." + "Defaults to empty string." + ) + + message (STATUS "cotire ${COTIRE_CMAKE_MODULE_VERSION} loaded.") + +endif() + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 7a9a02b3..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,33 +0,0 @@ -# Please Read - -Please read these instructions before submitting issues to the Steem GitHub repository. The issue tracker is for bugs and specific implementation discussion **only**. It should not be used for other purposes, as described below. - -## Bug Reports - -If there is an existing feature that is not working correctly, or a glitch in the blockchain that is impacting user behaviour - please open an issue to report variance. Include as much relevant information as you can, including screen shots or log output when applicable, and steps to reproduce the issue. - -## Enhancement Suggestions - -Do **not** use the issue tracker to suggest enhancements or improvements to the platform. The best place for these discussions is on Steemit.com. If there is a well vetted idea that has the support of the community that you feel should be considered by the development team, please email it to [sneak@steemit.com](mailto:sneak@steemit.com) for review. - -## Implementation Discussion - -The developers frequently open issues to discuss changes that are being worked on. This is to inform the community of the changes being worked on, and to get input from the community and other developers on the implementation. - -Issues opened that devolve into lengthy discussion of minor site features will be closed or locked. The issue tracker is not a general purpose discussion forum. - -This is not the place to make suggestions for product improvement (please see the Enhancement Suggestions section above for this). If you are not planning to work on the change yourself - do not open an issue for it. - -## Duplicate Issues - -Please do a keyword search to see if there is already an existing issue before opening a new one. - -## Steemit.com vs. Steem Blockchain - -This issue tracker is only intended to track issues for the Steem blockchain. If the issue is with the Steemit.com website, please open an issue in the [Steemit.com Repository](https://github.com/steemit/steemit.com/). - -## Pull Requests - -Anybody in the community is welcome and encouraged to submit pull requests with any desired changes to the platform! - -Requests to make changes that include working, tested pull requests jump to the top of the queue. There is not a guarantee that all functionality submitted as a PR will be accepted and merged, however. diff --git a/Dockerfile b/Dockerfile index 16e7e5fc..40501c86 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,9 @@ FROM phusion/baseimage:0.9.19 -#ARG STEEMD_BLOCKCHAIN=https://example.com/steemd-blockchain.tbz2 +#ARG SOPHIATXD_BLOCKCHAIN=https://example.com/sophiatxd-blockchain.tbz2 -ARG STEEM_STATIC_BUILD=ON -ENV STEEM_STATIC_BUILD ${STEEM_STATIC_BUILD} +ARG SOPHIATX_STATIC_BUILD=ON +ENV SOPHIATX_STATIC_BUILD ${SOPHIATX_STATIC_BUILD} ENV LANG=en_US.UTF-8 @@ -41,16 +41,16 @@ RUN \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ pip3 install gcovr -ADD . /usr/local/src/steem +ADD . /usr/local/src/sophiatx RUN \ - cd /usr/local/src/steem && \ + cd /usr/local/src/sophiatx && \ git submodule update --init --recursive && \ mkdir build && \ cd build && \ cmake \ -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_STEEM_TESTNET=ON \ + -DBUILD_SOPHIATX_TESTNET=ON \ -DLOW_MEMORY_NODE=OFF \ -DCLEAR_VOTES=ON \ -DSKIP_BY_TX_ID=ON \ @@ -59,47 +59,47 @@ RUN \ ./tests/chain_test && \ ./tests/plugin_test && \ ./programs/util/test_fixed_string && \ - cd /usr/local/src/steem && \ + cd /usr/local/src/sophiatx && \ doxygen && \ programs/build_helpers/check_reflect.py && \ programs/build_helpers/get_config_check.sh && \ - rm -rf /usr/local/src/steem/build + rm -rf /usr/local/src/sophiatx/build RUN \ - cd /usr/local/src/steem && \ + cd /usr/local/src/sophiatx && \ git submodule update --init --recursive && \ mkdir build && \ cd build && \ cmake \ - -DCMAKE_INSTALL_PREFIX=/usr/local/steemd-testnet \ + -DCMAKE_INSTALL_PREFIX=/usr/local/sophiatxd-testnet \ -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_STEEM_TESTNET=ON \ + -DBUILD_SOPHIATX_TESTNET=ON \ -DLOW_MEMORY_NODE=OFF \ -DCLEAR_VOTES=ON \ -DSKIP_BY_TX_ID=ON \ -DENABLE_SMT_SUPPORT=ON \ - -DSTEEM_STATIC_BUILD=${STEEM_STATIC_BUILD} \ + -DSOPHIATX_STATIC_BUILD=${SOPHIATX_STATIC_BUILD} \ .. && \ make -j$(nproc) chain_test test_fixed_string plugin_test && \ make install && \ ./tests/chain_test && \ ./tests/plugin_test && \ ./programs/util/test_fixed_string && \ - cd /usr/local/src/steem && \ + cd /usr/local/src/sophiatx && \ doxygen && \ programs/build_helpers/check_reflect.py && \ programs/build_helpers/get_config_check.sh && \ - rm -rf /usr/local/src/steem/build + rm -rf /usr/local/src/sophiatx/build RUN \ - cd /usr/local/src/steem && \ + cd /usr/local/src/sophiatx && \ git submodule update --init --recursive && \ mkdir build && \ cd build && \ cmake \ -DCMAKE_BUILD_TYPE=Debug \ -DENABLE_COVERAGE_TESTING=ON \ - -DBUILD_STEEM_TESTNET=ON \ + -DBUILD_SOPHIATX_TESTNET=ON \ -DLOW_MEMORY_NODE=OFF \ -DCLEAR_VOTES=ON \ -DSKIP_BY_TX_ID=ON \ @@ -110,50 +110,50 @@ RUN \ ./tests/plugin_test && \ mkdir -p /var/cobertura && \ gcovr --object-directory="../" --root=../ --xml-pretty --gcov-exclude=".*tests.*" --gcov-exclude=".*fc.*" --gcov-exclude=".*app*" --gcov-exclude=".*net*" --gcov-exclude=".*plugins*" --gcov-exclude=".*schema*" --gcov-exclude=".*time*" --gcov-exclude=".*utilities*" --gcov-exclude=".*wallet*" --gcov-exclude=".*programs*" --output="/var/cobertura/coverage.xml" && \ - cd /usr/local/src/steem && \ - rm -rf /usr/local/src/steem/build + cd /usr/local/src/sophiatx && \ + rm -rf /usr/local/src/sophiatx/build RUN \ - cd /usr/local/src/steem && \ + cd /usr/local/src/sophiatx && \ git submodule update --init --recursive && \ mkdir build && \ cd build && \ cmake \ - -DCMAKE_INSTALL_PREFIX=/usr/local/steemd-default \ + -DCMAKE_INSTALL_PREFIX=/usr/local/sophiatxd-default \ -DCMAKE_BUILD_TYPE=Release \ -DLOW_MEMORY_NODE=ON \ -DCLEAR_VOTES=ON \ -DSKIP_BY_TX_ID=OFF \ - -DBUILD_STEEM_TESTNET=OFF \ - -DSTEEM_STATIC_BUILD=${STEEM_STATIC_BUILD} \ + -DBUILD_SOPHIATX_TESTNET=OFF \ + -DSOPHIATX_STATIC_BUILD=${SOPHIATX_STATIC_BUILD} \ .. \ && \ make -j$(nproc) && \ make install && \ cd .. && \ - ( /usr/local/steemd-default/bin/steemd --version \ + ( /usr/local/sophiatxd-default/bin/sophiatxd --version \ | grep -o '[0-9]*\.[0-9]*\.[0-9]*' \ && echo '_' \ && git rev-parse --short HEAD ) \ | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n//g' \ - > /etc/steemdversion && \ - cat /etc/steemdversion && \ + > /etc/sophiatxdversion && \ + cat /etc/sophiatxdversion && \ rm -rfv build && \ mkdir build && \ cd build && \ cmake \ - -DCMAKE_INSTALL_PREFIX=/usr/local/steemd-full \ + -DCMAKE_INSTALL_PREFIX=/usr/local/sophiatxd-full \ -DCMAKE_BUILD_TYPE=Release \ -DLOW_MEMORY_NODE=OFF \ -DCLEAR_VOTES=OFF \ -DSKIP_BY_TX_ID=ON \ - -DBUILD_STEEM_TESTNET=OFF \ - -DSTEEM_STATIC_BUILD=${STEEM_STATIC_BUILD} \ + -DBUILD_SOPHIATX_TESTNET=OFF \ + -DSOPHIATX_STATIC_BUILD=${SOPHIATX_STATIC_BUILD} \ .. \ && \ make -j$(nproc) && \ make install && \ - rm -rf /usr/local/src/steem + rm -rf /usr/local/src/sophiatx RUN \ apt-get remove -y \ @@ -202,18 +202,18 @@ RUN \ /usr/include \ /usr/local/include -RUN useradd -s /bin/bash -m -d /var/lib/steemd steemd +RUN useradd -s /bin/bash -m -d /var/lib/sophiatxd sophiatxd -RUN mkdir /var/cache/steemd && \ - chown steemd:steemd -R /var/cache/steemd +RUN mkdir /var/cache/sophiatxd && \ + chown sophiatxd:sophiatxd -R /var/cache/sophiatxd # add blockchain cache to image -#ADD $STEEMD_BLOCKCHAIN /var/cache/steemd/blocks.tbz2 +#ADD $SOPHIATXD_BLOCKCHAIN /var/cache/sophiatxd/blocks.tbz2 -ENV HOME /var/lib/steemd -RUN chown steemd:steemd -R /var/lib/steemd +ENV HOME /var/lib/sophiatxd +RUN chown sophiatxd:sophiatxd -R /var/lib/sophiatxd -VOLUME ["/var/lib/steemd"] +VOLUME ["/var/lib/sophiatxd"] # rpc service: EXPOSE 8090 @@ -221,32 +221,32 @@ EXPOSE 8090 EXPOSE 2001 # add seednodes from documentation to image -ADD doc/seednodes.txt /etc/steemd/seednodes.txt +ADD doc/seednodes.txt /etc/sophiatxd/seednodes.txt # the following adds lots of logging info to stdout -ADD contrib/config-for-docker.ini /etc/steemd/config.ini -ADD contrib/fullnode.config.ini /etc/steemd/fullnode.config.ini -ADD contrib/fullnode.opswhitelist.config.ini /etc/steemd/fullnode.opswhitelist.config.ini -ADD contrib/config-for-broadcaster.ini /etc/steemd/config-for-broadcaster.ini -ADD contrib/config-for-ahnode.ini /etc/steemd/config-for-ahnode.ini -ADD contrib/testnet.config.ini /etc/steemd/testnet.config.ini -ADD contrib/fastgen.config.ini /etc/steemd/fastgen.config.ini +ADD contrib/config-for-docker.ini /etc/sophiatxd/config.ini +ADD contrib/fullnode.config.ini /etc/sophiatxd/fullnode.config.ini +ADD contrib/fullnode.opswhitelist.config.ini /etc/sophiatxd/fullnode.opswhitelist.config.ini +ADD contrib/config-for-broadcaster.ini /etc/sophiatxd/config-for-broadcaster.ini +ADD contrib/config-for-ahnode.ini /etc/sophiatxd/config-for-ahnode.ini +ADD contrib/testnet.config.ini /etc/sophiatxd/testnet.config.ini +ADD contrib/fastgen.config.ini /etc/sophiatxd/fastgen.config.ini # add normal startup script that starts via sv -ADD contrib/steemd.run /usr/local/bin/steem-sv-run.sh -RUN chmod +x /usr/local/bin/steem-sv-run.sh +ADD contrib/sophiatxd.run /usr/local/bin/sophiatx-sv-run.sh +RUN chmod +x /usr/local/bin/sophiatx-sv-run.sh # add nginx templates -ADD contrib/steemd.nginx.conf /etc/nginx/steemd.nginx.conf +ADD contrib/sophiatxd.nginx.conf /etc/nginx/sophiatxd.nginx.conf ADD contrib/healthcheck.conf.template /etc/nginx/healthcheck.conf.template # add PaaS startup script and service script -ADD contrib/startpaassteemd.sh /usr/local/bin/startpaassteemd.sh +ADD contrib/startpaassophiatxd.sh /usr/local/bin/startpaassophiatxd.sh ADD contrib/testnetinit.sh /usr/local/bin/testnetinit.sh ADD contrib/paas-sv-run.sh /usr/local/bin/paas-sv-run.sh ADD contrib/sync-sv-run.sh /usr/local/bin/sync-sv-run.sh ADD contrib/healthcheck.sh /usr/local/bin/healthcheck.sh -RUN chmod +x /usr/local/bin/startpaassteemd.sh +RUN chmod +x /usr/local/bin/startpaassophiatxd.sh RUN chmod +x /usr/local/bin/testnetinit.sh RUN chmod +x /usr/local/bin/paas-sv-run.sh RUN chmod +x /usr/local/bin/sync-sv-run.sh @@ -256,6 +256,6 @@ RUN chmod +x /usr/local/bin/healthcheck.sh # this enables exitting of the container when the writer node dies # for PaaS mode (elasticbeanstalk, etc) # AWS EB Docker requires a non-daemonized entrypoint -ADD contrib/steemdentrypoint.sh /usr/local/bin/steemdentrypoint.sh -RUN chmod +x /usr/local/bin/steemdentrypoint.sh -CMD /usr/local/bin/steemdentrypoint.sh +ADD contrib/sophiatxdentrypoint.sh /usr/local/bin/sophiatxdentrypoint.sh +RUN chmod +x /usr/local/bin/sophiatxdentrypoint.sh +CMD /usr/local/bin/sophiatxdentrypoint.sh diff --git a/Doxyfile b/Doxyfile index 66973d6c..ea297803 100644 --- a/Doxyfile +++ b/Doxyfile @@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = "Steem" +PROJECT_NAME = "SophiaTX" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version @@ -758,7 +758,7 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = doc/main.dox libraries/chain libraries/chain/db libraries/app libraries/wallet libraries/plugins +INPUT = doc/main.dox libraries/chain libraries/chain/db libraries/app libraries/wallet libraries/plugins libraries/alexandria # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses diff --git a/Jenkinsfile b/Jenkinsfile index 4acd96bf..7d22699b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,20 +1,120 @@ #!groovy + +//////////////////////////////////////// + + +properties([parameters([booleanParam(defaultValue: false, description: '', name: 'build_as_debug'), booleanParam(defaultValue: false, description: '', name: 'build_as_testnet')])]) + + pipeline { - agent any + options { + buildDiscarder(logRotator(artifactNumToKeepStr: '20')) + } + environment { + ARCHIVE_NAME = "sophiatx_" + "#" + "${env.BUILD_NUMBER}" + ".tar.gz" + GENESIS_FILE = "genesis.json" + BUILD_TYPE = "Release" + } + agent { + label get_label_name() + } stages { stage('Build') { steps { - sh 'ciscripts/triggerbuild.sh' + script { + if( params.build_as_testnet ) { + GENESIS_FILE = "genesis_testnet.json" + } + if( params.build_as_debug ) { + BUILD_TYPE = "Debug" + } + } + sh "cmake -DUSE_PCH=ON -DBOOST_ROOT=${BOOST_160} -DOPENSSL_ROOT_DIR=${OPENSSL_102} -DFULL_STATIC_BUILD=ON -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=install -DSOPHIATX_EGENESIS_JSON=${GENESIS_FILE} -DBUILD_SOPHIATX_TESTNET=${params.build_as_testnet}" + sh 'make -j4' + } + } + stage('Tests') { + steps { + script { + if( !params.build_as_testnet ) { + sh './tests/chain_test' + } + } + } + } + stage('Archive') { + steps { + sh 'make install' + dir('install') { + dir('lib') { + script { + if( !params.build_as_debug ) { + sh 'strip -s libalexandria.so libalexandriaJNI.so' //strip symbols + } + } + sh 'tar -czf libalexandria.tar.gz libalexandria.so libalexandriaJNI.so alexandria.hpp AlexandriaJNI.java' //create tar file + archiveArtifacts '*.gz' + } + dir('bin') { + script { + if( !params.build_as_debug ) { + sh 'strip -s *' //strip symbols + } + } + sh 'rm -f test*' //remove test binaries + sh 'cp ${WORKSPACE}/contrib/fullnode_config.ini .'//copy configs + sh 'cp ${WORKSPACE}/contrib/witness_config.ini .'//copy configs + sh 'tar -czf ${ARCHIVE_NAME} alexandria_deamon cli_wallet sophiatxd fullnode_config.ini witness_config.ini' //create tar file + archiveArtifacts '*.gz' + } + } + } + } + stage('Create RPM') { + when { + branch 'develop' + } + steps { + sh 'rm -rf /home/$USER/RPMBUILD/RPMS/*.rpm' + dir('install') { + dir('bin') { + sh 'mv *.gz sophiatx.tar.gz' //rename tar file + sh 'cp sophiatx.tar.gz /home/$USER/RPMBUILD/SOURCES' //copy file for rpm creation + } + } + sh 'cp ciscripts/sophiatx.spec /home/$USER/RPMBUILD/SPECS' + sh 'rpmbuild -ba /home/$USER/RPMBUILD/SPECS/sophiatx.spec' + sh 'cp /home/$USER/RPMBUILD/RPMS/x86_64/*.rpm ${WORKSPACE}' + archiveArtifacts '*.rpm' + } + } + stage('Clean WS') { + steps { + cleanWs() } } } post { success { - sh 'ciscripts/buildsuccess.sh' + send_positive_slack_notification() } failure { - sh 'ciscripts/buildfailure.sh' slackSend (color: '#ff0000', message: "FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})") } } } +//////////////////////////////////////// + +def send_positive_slack_notification() { + if( "${env.BRANCH_NAME}" == 'develop' ) { + slackSend (color: 'good', message: "SUCCESS: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})") + } +} + +def get_label_name() { + if( "${env.BRANCH_NAME}" == 'develop' ) { + return 'suse' + } else { + return 'linux' + } +} \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md index fcfe3658..3b973c39 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,7 +1,7 @@ -Copyright (c) 2017 Steemit, Inc., and contributors. +Copyright (c) 2017 Equidato Technologies, and contributors. The following license applies to code contained within this repository that -is created by Steemit, Inc. Other copy right holders have licensed dependencies such +is created by Equidato Technologies. Other copy right holders have licensed dependencies such as Graphene, FC, and Boost under their own individual licenses. The MIT License diff --git a/README.md b/README.md index 5d3a35a8..5fdddec9 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,11 @@ -# Introducing Steem (beta) +# Introducing SophiaTX (beta) -Steem is a Delegated Proof of Stake blockchain that uses a "Proof of Brain" social consensus algorithm for token allocation. - - - Currency symbol STEEM. - - 10% APR inflation narrowing to 1% APR over 20 years. - - 75% of inflation to "Proof of Brain" social consensus algorithm. - - 15% of inflation to stake holders. - - 10% of inflation to block producers. +SophiaTX is a Delegated Proof of Stake blockchain that uses a "Proof of Brain" social consensus algorithm for token allocation. # Public Announcement & Discussion -Steem was announced on the -[Bitcointalk forum](https://bitcointalk.org/index.php?topic=1410943.new) prior to +SophiaTX was announced on the +[Bitcointalk forum](https://bitcointalk.org/index.php?topic=2214715.0) prior to the start of any mining. # No Support & No Warranty @@ -26,94 +20,34 @@ IN THE SOFTWARE. # Whitepaper -You can read the Steem Whitepaper at [Steem.io/SteemWhitePaper.pdf](https://steem.io/SteemWhitePaper.pdf). +You can read the SophiaTX Whitepaper at [SophiaTXWhitePaper.pdf](https://www.sophiatx.com/storage/web/SophiaTX_Whitepaper_v1.9.pdf). # Quickstart -Just want to get up and running quickly? We have pre-built docker images for your convenience. More details are in our [quickstart guide](https://github.com/steemit/steem/blob/master/doc/exchangequickstart.md). - -# Building - -We strongly recommend using one of our pre-built Docker images or using Docker to build Steem. Both of these processes are described in the [quickstart guide](https://github.com/steemit/steem/blob/master/doc/exchangequickstart.md). - -If you would still like to build from source, we do have [build instructions](https://github.com/steemit/steem/blob/master/doc/building.md) for Linux (Ubuntu LTS) and macOS. - -## Dockerized p2p Node - -To run a p2p node (ca. 2GB of memory is required at the moment): - - docker run \ - -d -p 2001:2001 -p 8090:8090 --name steemd-default \ - steemit/steem - - docker logs -f steemd-default # follow along - -## Dockerized Full Node - -To run a node with *all* the data (e.g. for supporting a content website) -that uses ca. 14GB of memory and growing: - - docker run \ - --env USE_WAY_TOO_MUCH_RAM=1 --env USE_FULL_WEB_NODE=1 \ - -d -p 2001:2001 -p 8090:8090 --name steemd-full \ - steemit/steem - - docker logs -f steemd-full +Just want to get up and running quickly? We have pre-built docker images for your convenience. More details are in our [quickstart guide](doc/quickstartguide.md). -# Environment variables +# Downloading -There are quite a few environment variables that can be set to run steemd in different ways: +Latest release can be always found [here](https://github.com/SophiaTX/SophiaTX/releases) -* `USE_WAY_TOO_MUCH_RAM` - if set to true, steemd starts a 'full node' -* `USE_FULL_WEB_NODE` - if set to true, a default config file will be used that enables a full set of API's and associated plugins. -* `USE_NGINX_FRONTEND` - if set to true, this will enable an NGINX reverse proxy in front of steemd that proxies websocket requests to steemd. This will also enable a custom healtcheck at the path '/health' that lists how many seconds away from current blockchain time your node is. It will return a '200' if it's less than 60 seconds away from synced. -* `USE_MULTICORE_READONLY` - if set to true, this will enable steemd in multiple reader mode to take advantage of multiple cores (if available). Read requests are handled by the read-only nodes, and write requests are forwarded back to the single 'writer' node automatically. NGINX load balances all requests to the reader nodes, 4 per available core. This setting is still considered experimental and may have trouble with some API calls until further development is completed. -* `HOME` - set this to the path where you want steemd to store it's data files (block log, shared memory, config file, etc). By default `/var/lib/steemd` is used and exists inside the docker container. If you want to use a different mountpoint (like a ramdisk, or a different drive) then you may want to set this variable to map the volume to your docker container. - -# PaaS mode - -Steemd now supports a PaaS mode (platform as a service) that currently works with Amazon's Elastic Beanstalk service. It can be launched using the following environment variables: +# Building -* `USE_PAAS` - if set to true, steemd will launch in a format that works with AWS EB. Containers will exit upon failure so that they can be relaunched automatically by ECS. This mode assumes `USE_WAY_TOO_MUCH_RAM` and `USE_FULL_WEB_NODE`, they do not need to be also set. -* `S3_BUCKET` - set this to the name of the S3 bucket where you will store shared memory files for steemd in Amazon S3. They will be stored compressed in bz2 format with the file name `blockchain-$VERSION-latest.tar.bz2`, where $VERSION is the release number followed by the git short commit hash stored in each docker image at `/etc/steemdversion`. -* `SYNC_TO_S3` - if set to true, the node will function to only generate shared memory files and upload them to the specified S3 bucket. This makes fast deployments and autoscaling for steemd possible. +If you would like to build from source, we do have [build instructions](doc/building.md) for Linux (Ubuntu LTS) and macOS. # Config File -Run `steemd` once to generate a data directory and config file. The default location is `witness_node_data_dir`. Kill `steemd`. It won't do anything without seed nodes. If you want to modify the config to your liking, we have two example configs used in the docker images. ( [consensus node](contrib/config-for-docker.ini), [full node](contrib/fullnode.config.ini) ) All options will be present in the default config file and there may be more options needing to be changed from the docker configs (some of the options actually used in images are configured via command line). +Run `sophiatxd` once to generate a data directory and config file. The default location is `witness_node_data_dir`. Kill `sophiatxd`. It won't do anything without seed nodes. If you want to modify the config to your liking, we have two example configs. ( [full node](contrib/fullnode_config.ini), [witness node](contrib/witness_config.ini) ) All options will be present in the default config file and there may be more options needing to be changed from the those configs (some of the options actually used in images are configured via command line). # Seed Nodes A list of some seed nodes to get you started can be found in [doc/seednodes.txt](doc/seednodes.txt). -This same file is baked into the docker images and can be overridden by -setting `STEEMD_SEED_NODES` in the container environment at `docker run` -time to a whitespace delimited list of seed nodes (with port). - # CLI Wallet -We provide a basic cli wallet for interfacing with `steemd`. The wallet is self documented via command line help. The node you connect to via the cli wallet needs to be running the `account_by_key_api`, `condenser_api`, and needs to be configured to accept websocket connections via `webserver-ws-endpoint`. - -# Building - -See [doc/building.md](doc/building.md) for detailed build instructions, including -compile-time options, and specific commands for Linux (Ubuntu LTS) or macOS. - -# Testing - -See [doc/testing.md](doc/testing.md) for test build targets and info -on how to use lcov to check code test coverage. +We provide a basic cli wallet for interfacing with `sophiatxd`. The wallet is self documented via command line help. The node you connect to via the cli wallet needs to be running the `account_by_key_api`, `condenser_api`, and needs to be configured to accept websocket connections via `webserver-ws-endpoint`. # System Requirements -For a full web node, you need at least 110GB of disk space available. Steemd uses a memory mapped file which currently holds 56GB of data and by default is set to use up to 80GB. The block log of the blockchain itself is a little over 27GB. It's highly recommended to run steemd on a fast disk such as an SSD or by placing the shared memory files in a ramdisk and using the `--shared-file-dir=/path` command line option to specify where. At least 16GB of memory is required for a full web node. Seed nodes (p2p mode) can run with as little as 4GB of memory with a 24 GB state file. Any CPU with decent single core performance should be sufficient. Steemd is constantly growing. As of August 2017, these numbers were accurate, but you may find you need more disk space to run a full node. We are also constantly working on optimizing Steem's use of disk space. - -On Linux use the following Virtual Memory configuration for the initial sync and subsequent replays. It is not needed for normal operation. - -``` -echo 75 | sudo tee /proc/sys/vm/dirty_background_ratio -echo 1000 | sudo tee /proc/sys/vm/dirty_expire_centisecs -echo 80 | sudo tee /proc/sys/vm/dirty_ratio -echo 30000 | sudo tee /proc/sys/vm/dirty_writeback_centisecs +For a full web node, you need at least 110GB of disk space available. SophiaTXd uses a memory mapped file which currently holds 56GB of data and by default is set to use up to 80GB. The block log of the blockchain itself is a little over 27GB. It's highly recommended to run sophiatxd on a fast disk such as an SSD or by placing the shared memory files in a ramdisk and using the `--shared-file-dir=/path` command line option to specify where. At least 16GB of memory is required for a full web node. Seed nodes (p2p mode) can run with as little as 4GB of memory with a 24 GB state file. Any CPU with decent single core performance should be sufficient. SophiaTXd is constantly growing, so you may find you need more disk space to run a full node. We are also constantly working on optimizing SophiaTX's use of disk space. ``` diff --git a/circle.yml b/circle.yml index c56817cb..ed4a793a 100644 --- a/circle.yml +++ b/circle.yml @@ -11,4 +11,4 @@ dependencies: test: override: - - time docker build --rm=false -t steemitinc/steem-test -f Dockerfile.test . + - time docker build --rm=false -t sophiatxitinc/sophiatx-test -f Dockerfile.test . diff --git a/ciscripts/Jenkinsfile_doxgen b/ciscripts/Jenkinsfile_doxgen new file mode 100644 index 00000000..4a0efbaf --- /dev/null +++ b/ciscripts/Jenkinsfile_doxgen @@ -0,0 +1,34 @@ +#!groovy + +//////////////////////////////////////// + +pipeline { + agent any + options { + buildDiscarder(logRotator(artifactNumToKeepStr: '1')) + } + environment { + ARCHIVE_NAME = "sophiatx_" + "#" + "${env.BUILD_NUMBER}" + "doc.tar.gz" + } + stages { + stage('Generate doxygen') { + steps { + sh 'doxygen Doxyfile' + } + } + stage('Archive') { + steps { + dir('doxygen') { + sh 'tar -czf ${ARCHIVE_NAME} html' //create tar file + archiveArtifacts '*.gz' + } + } + } + stage('Clean WS') { + steps { + cleanWs() + } + } + } +} +//////////////////////////////////////// diff --git a/ciscripts/buildfailure.sh b/ciscripts/buildfailure.sh deleted file mode 100755 index 45d57dda..00000000 --- a/ciscripts/buildfailure.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -curl --silent -XPOST -H "Authorization: token $GITHUB_SECRET" https://api.github.com/repos/steemit/steem/statuses/$(git rev-parse HEAD) -d "{ - \"state\": \"failure\", - \"target_url\": \"${BUILD_URL}\", - \"description\": \"JenkinsCI reports the build has failed!\", - \"context\": \"jenkins-ci-steemit\" -}" -rm -rf $WORKSPACE/* -# make docker cleanup after itself and delete all exited containers -sudo docker rm -v $(docker ps -a -q -f status=exited) || true diff --git a/ciscripts/buildpending.sh b/ciscripts/buildpending.sh deleted file mode 100755 index e59971c4..00000000 --- a/ciscripts/buildpending.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -curl --silent -XPOST -H "Authorization: token $GITHUB_SECRET" https://api.github.com/repos/steemit/steem/statuses/$(git rev-parse HEAD) -d "{ - \"state\": \"pending\", - \"target_url\": \"${BUILD_URL}\", - \"description\": \"The build is now pending in jenkinsci!\", - \"context\": \"jenkins-ci-steemit\" -}" diff --git a/ciscripts/buildscript.sh b/ciscripts/buildscript.sh deleted file mode 100755 index cf3b3e5a..00000000 --- a/ciscripts/buildscript.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -set -e -export IMAGE_NAME="steemit/steem:$BRANCH_NAME" -if [[ $IMAGE_NAME == "steemit/steem:stable" ]] ; then - IMAGE_NAME="steemit/steem:latest" -fi -sudo docker build -t=$IMAGE_NAME . -sudo docker login --username=$DOCKER_USER --password=$DOCKER_PASS -sudo docker push $IMAGE_NAME -sudo docker run -v /var/jenkins_home:/var/jenkins $IMAGE_NAME cp -r /var/cobertura /var/jenkins -cp -r /var/jenkins_home/cobertura . diff --git a/ciscripts/buildsuccess.sh b/ciscripts/buildsuccess.sh deleted file mode 100755 index 042cbf0e..00000000 --- a/ciscripts/buildsuccess.sh +++ /dev/null @@ -1,10 +0,0 @@ -#/bin/bash -curl --silent -XPOST -H "Authorization: token $GITHUB_SECRET" https://api.github.com/repos/steemit/steem/statuses/$(git rev-parse HEAD) -d "{ - \"state\": \"success\", - \"target_url\": \"${BUILD_URL}\", - \"description\": \"Jenkins-CI reports build succeeded!!\", - \"context\": \"jenkins-ci-steemit\" -}" -rm -rf $WORKSPACE/* -# make docker cleanup after itself and delete all exited containers -sudo docker rm -v $(docker ps -a -q -f status=exited) || true diff --git a/ciscripts/sophiatx.spec b/ciscripts/sophiatx.spec new file mode 100644 index 00000000..827b167d --- /dev/null +++ b/ciscripts/sophiatx.spec @@ -0,0 +1,30 @@ +Name: sophiatx +Version: 1.0 +Release: 0 +License: MIT +Source: %{name}.tar.gz +Summary: Official SophiaTX deamon +Url: https://www.sophiatx.com/ +Vendor: Equidato Technologies AG +BuildRoot: %{_tmppath}/%{name}-%{version}-build + +%description +Official SophiaTX deamon + +%prep +%setup -c %{name} + +%install +mkdir -p $RPM_BUILD_ROOT/usr/local/bin +install -m 700 sophiatxd $RPM_BUILD_ROOT/usr/local/bin + +%files +%defattr(-,root,root) +/usr/local/bin/sophiatxd + +%clean +rm -rf $RPM_BUILD_ROOT + +%changelog +* Thu Jul 12 2018 Matus Kysel +- 1.0 r1 First release diff --git a/ciscripts/triggerbuild.sh b/ciscripts/triggerbuild.sh deleted file mode 100755 index 9fb8d458..00000000 --- a/ciscripts/triggerbuild.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -set -e -/bin/bash $WORKSPACE/ciscripts/buildpending.sh -if /bin/bash $WORKSPACE/ciscripts/buildscript.sh; then - echo BUILD SUCCESS -else - echo BUILD FAILURE - exit 1 -fi diff --git a/contrib/config-for-ahnode.ini b/contrib/config-for-ahnode.ini deleted file mode 100644 index 936d2028..00000000 --- a/contrib/config-for-ahnode.ini +++ /dev/null @@ -1,86 +0,0 @@ -# Console appender definition json: {"appender", "stream"} -log-console-appender = {"appender":"stderr","stream":"std_error"} - -# File appender definition json: {"appender", "file"} -log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"} - -# Logger definition json: {"name", "level", "appender"} -log-logger = {"name":"default","level":"debug","appender":"stderr"} -log-logger = {"name":"p2p","level":"info","appender":"stderr"} - -# Plugin(s) to enable, may be specified multiple times -plugin = webserver p2p json_rpc account_history - -plugin = database_api account_history_api condenser_api - -# Defines a range of accounts to track as a json pair ["from","to"] [from,to] Can be specified multiple times -# account-history-track-account-range = - -# Defines a list of operations which will be explicitly logged. -# account-history-whitelist-ops = transfer_operation transfer_to_vesting_operation withdraw_vesting_operation interest_operation transfer_to_savings_operation transfer_from_savings_operation cancel_transfer_from_savings_operation escrow_transfer_operation escrow_approve_operation escrow_dispute_operation escrow_release_operation fill_convert_request_operation fill_order_operation claim_reward_balance_operation author_reward_operation curation_reward_operation fill_vesting_withdraw_operation fill_transfer_from_savings_operation delegate_vesting_shares_operation return_vesting_delegation_operation comment_benefactor_reward_operation - -# Defines a list of operations which will be explicitly ignored. -# account-history-blacklist-ops = - -# the location of the chain shared memory files (absolute path or relative to application data dir) -# shared-file-dir = "blockchain" - -# Size of the shared memory file. Default: 54G -shared-file-size = 215G - -# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. -# checkpoint = - -# flush shared memory changes to disk every N blocks -# flush-state-interval = 0 - -# Database edits to apply on startup (may specify multiple times) -# edit-script = - -# Set the maximum size of cached feed for an account -follow-max-feed-size = 500 - -# Block time (in epoch seconds) when to start calculating feeds -# follow-start-feeds = 0 - -# Track market history by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers -market-history-bucket-size = [15,60,300,3600,86400] - -# How far back in time to track history for each bucket size, measured in the number of buckets (default: 5760) -market-history-buckets-per-size = 5760 - -# The local IP address and port to listen for incoming connections. -# p2p-endpoint = - -# Maxmimum number of incoming connections on P2P endpoint -# p2p-max-connections = - -# The IP address and port of a remote peer to sync with. Deprecated in favor of p2p-seed-node. -# seed-node = - -# The IP address and port of a remote peer to sync with. -# p2p-seed-node = - -# User agent to advertise to peers -p2p-user-agent = Graphene Reference Implementation - -# The local IP and port to listen for incoming http connections. -# webserver-http-endpoint = - -# The local IP and port to listen for incoming websocket connections. -# webserver-ws-endpoint = - -# Number of threads used to handle queries. Default: 32. -webserver-thread-pool-size = 32 - -# Enable block production, even if the chain is stale. -enable-stale-production = false - -# Percent of witnesses (0-99) that must be participating in order to produce blocks -# required-participation = - -# name of witness controlled by this node (e.g. initwitness ) -# witness = - -# WIF PRIVATE KEY to be used by one or more witnesses or miners -# private-key = diff --git a/contrib/config-for-broadcaster.ini b/contrib/config-for-broadcaster.ini deleted file mode 100644 index 8911b6b2..00000000 --- a/contrib/config-for-broadcaster.ini +++ /dev/null @@ -1,86 +0,0 @@ -# Console appender definition json: {"appender", "stream"} -log-console-appender = {"appender":"stderr","stream":"std_error"} - -# File appender definition json: {"appender", "file"} -log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"} - -# Logger definition json: {"name", "level", "appender"} -log-logger = {"name":"default","level":"info","appender":"stderr"} -log-logger = {"name":"p2p","level":"info","appender":"stderr"} - -# Plugin(s) to enable, may be specified multiple times -plugin = webserver p2p json_rpc witness - -plugin = database_api witness_api condenser_api network_broadcast_api - -# Defines a range of accounts to track as a json pair ["from","to"] [from,to] Can be specified multiple times -# account-history-track-account-range = - -# Defines a list of operations which will be explicitly logged. -# account-history-whitelist-ops = - -# Defines a list of operations which will be explicitly ignored. -# account-history-blacklist-ops = - -# the location of the chain shared memory files (absolute path or relative to application data dir) -# shared-file-dir = "blockchain" - -# Size of the shared memory file. Default: 54G -shared-file-size = 24G - -# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. -# checkpoint = - -# flush shared memory changes to disk every N blocks -flush-state-interval = 0 - -# Database edits to apply on startup (may specify multiple times) -# edit-script = - -# Set the maximum size of cached feed for an account -follow-max-feed-size = 500 - -# Block time (in epoch seconds) when to start calculating feeds -# follow-start-feeds = 0 - -# Track market history by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers -market-history-bucket-size = [15,60,300,3600,86400] - -# How far back in time to track history for each bucket size, measured in the number of buckets (default: 5760) -market-history-buckets-per-size = 5760 - -# The local IP address and port to listen for incoming connections. -# p2p-endpoint = - -# Maxmimum number of incoming connections on P2P endpoint -# p2p-max-connections = - -# The IP address and port of a remote peer to sync with. Deprecated in favor of p2p-seed-node. -# seed-node = - -# The IP address and port of a remote peer to sync with. -# p2p-seed-node = - -# User agent to advertise to peers -p2p-user-agent = Graphene Reference Implementation - -# The local IP and port to listen for incoming http connections. -# webserver-http-endpoint = - -# The local IP and port to listen for incoming websocket connections. -# webserver-ws-endpoint = - -# Number of threads used to handle queries. Default: 32. -webserver-thread-pool-size = 256 - -# Enable block production, even if the chain is stale. -enable-stale-production = false - -# Percent of witnesses (0-99) that must be participating in order to produce blocks -# required-participation = - -# name of witness controlled by this node (e.g. initwitness ) -# witness = - -# WIF PRIVATE KEY to be used by one or more witnesses or miners -# private-key = diff --git a/contrib/config-for-docker.ini b/contrib/config-for-docker.ini deleted file mode 100644 index 03d3cdee..00000000 --- a/contrib/config-for-docker.ini +++ /dev/null @@ -1,86 +0,0 @@ -# Console appender definition json: {"appender", "stream"} -log-console-appender = {"appender":"stderr","stream":"std_error"} - -# File appender definition json: {"appender", "file"} -log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"} - -# Logger definition json: {"name", "level", "appender"} -log-logger = {"name":"default","level":"info","appender":"stderr"} -log-logger = {"name":"p2p","level":"info","appender":"stderr"} - -# Plugin(s) to enable, may be specified multiple times -plugin = webserver p2p json_rpc witness - -plugin = database_api witness_api condenser_api - -# Defines a range of accounts to track as a json pair ["from","to"] [from,to] Can be specified multiple times -# account-history-track-account-range = - -# Defines a list of operations which will be explicitly logged. -# account-history-whitelist-ops = - -# Defines a list of operations which will be explicitly ignored. -# account-history-blacklist-ops = - -# the location of the chain shared memory files (absolute path or relative to application data dir) -shared-file-dir = "blockchain" - -# Size of the shared memory file. Default: 54G -shared-file-size = 16G - -# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. -# checkpoint = - -# flush shared memory changes to disk every N blocks -flush-state-interval = 0 - -# Database edits to apply on startup (may specify multiple times) -# edit-script = - -# Set the maximum size of cached feed for an account -follow-max-feed-size = 500 - -# Block time (in epoch seconds) when to start calculating feeds -# follow-start-feeds = 0 - -# Track market history by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers -market-history-bucket-size = [15,60,300,3600,86400] - -# How far back in time to track history for each bucket size, measured in the number of buckets (default: 5760) -market-history-buckets-per-size = 5760 - -# The local IP address and port to listen for incoming connections. -# p2p-endpoint = - -# Maxmimum number of incoming connections on P2P endpoint -# p2p-max-connections = - -# The IP address and port of a remote peer to sync with. Deprecated in favor of p2p-seed-node. -# seed-node = - -# The IP address and port of a remote peer to sync with. -# p2p-seed-node = - -# User agent to advertise to peers -p2p-user-agent = Graphene Reference Implementation - -# The local IP and port to listen for incoming http connections. -# webserver-http-endpoint = - -# The local IP and port to listen for incoming websocket connections. -# webserver-ws-endpoint = - -# Number of threads used to handle queries. Default: 32. -webserver-thread-pool-size = 256 - -# Enable block production, even if the chain is stale. -enable-stale-production = false - -# Percent of witnesses (0-99) that must be participating in order to produce blocks -# required-participation = - -# name of witness controlled by this node (e.g. initwitness ) -# witness = - -# WIF PRIVATE KEY to be used by one or more witnesses or miners -# private-key = diff --git a/contrib/fastgen.config.ini b/contrib/fastgen.config.ini deleted file mode 100644 index 76bd5728..00000000 --- a/contrib/fastgen.config.ini +++ /dev/null @@ -1,39 +0,0 @@ -# Console appender definition json: {"appender", "stream"} -log-console-appender = {"appender":"stderr","stream":"std_error"} - -# File appender definition json: {"appender", "file"} -log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"} - -# Logger definition json: {"name", "level", "appender"} -log-logger = {"name":"default","level":"debug","appender":"stderr"} -log-logger = {"name":"p2p","level":"info","appender":"stderr"} - -# Plugin(s) to enable, may be specified multiple times -plugin = chain p2p webserver debug_node database_api network_broadcast_api debug_node_api block_api - -# Size of the shared memory file. Default: 54G -shared-file-size = 30G - -# Set the maximum size of cached feed for an account -follow-max-feed-size = 500 - -# Track market history by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers -market-history-bucket-size = [15,60,300,3600,86400] - -# How far back in time to track history for each bucket size, measured in the number of buckets (default: 5760) -market-history-buckets-per-size = 5760 - -# User agent to advertise to peers -p2p-user-agent = Graphene Reference Implementation - -# Number of threads used to handle queries. Default: 32. -webserver-thread-pool-size = 256 - -# Enable block production, even if the chain is stale. -enable-stale-production = false - -# name of witness controlled by this node (e.g. initwitness ) -# witness = - -# WIF PRIVATE KEY to be used by one or more witnesses or miners -# private-key = \ No newline at end of file diff --git a/contrib/fullnode.config.ini b/contrib/fullnode.config.ini deleted file mode 100644 index e261091c..00000000 --- a/contrib/fullnode.config.ini +++ /dev/null @@ -1,86 +0,0 @@ -# Console appender definition json: {"appender", "stream"} -log-console-appender = {"appender":"stderr","stream":"std_error"} - -# File appender definition json: {"appender", "file"} -log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"} - -# Logger definition json: {"name", "level", "appender"} -log-logger = {"name":"default","level":"debug","appender":"stderr"} -log-logger = {"name":"p2p","level":"info","appender":"stderr"} - -# Plugin(s) to enable, may be specified multiple times -plugin = webserver p2p json_rpc witness account_by_key tags follow market_history - -plugin = database_api account_by_key_api network_broadcast_api tags_api follow_api market_history_api witness_api condenser_api - -# Defines a range of accounts to track as a json pair ["from","to"] [from,to] Can be specified multiple times -# account-history-track-account-range = - -# Defines a list of operations which will be explicitly logged. -# account-history-whitelist-ops = transfer_operation transfer_to_vesting_operation withdraw_vesting_operation interest_operation transfer_to_savings_operation transfer_from_savings_operation cancel_transfer_from_savings_operation escrow_transfer_operation escrow_approve_operation escrow_dispute_operation escrow_release_operation fill_convert_request_operation fill_order_operation claim_reward_balance_operation author_reward_operation curation_reward_operation fill_vesting_withdraw_operation fill_transfer_from_savings_operation delegate_vesting_shares_operation return_vesting_delegation_operation comment_benefactor_reward_operation - -# Defines a list of operations which will be explicitly ignored. -# account-history-blacklist-ops = - -# the location of the chain shared memory files (absolute path or relative to application data dir) -# shared-file-dir = "blockchain" - -# Size of the shared memory file. Default: 54G -shared-file-size = 215G - -# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. -# checkpoint = - -# flush shared memory changes to disk every N blocks -# flush-state-interval = 0 - -# Database edits to apply on startup (may specify multiple times) -# edit-script = - -# Set the maximum size of cached feed for an account -follow-max-feed-size = 500 - -# Block time (in epoch seconds) when to start calculating feeds -# follow-start-feeds = 0 - -# Track market history by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers -market-history-bucket-size = [15,60,300,3600,86400] - -# How far back in time to track history for each bucket size, measured in the number of buckets (default: 5760) -market-history-buckets-per-size = 5760 - -# The local IP address and port to listen for incoming connections. -# p2p-endpoint = - -# Maxmimum number of incoming connections on P2P endpoint -# p2p-max-connections = - -# The IP address and port of a remote peer to sync with. Deprecated in favor of p2p-seed-node. -# seed-node = - -# The IP address and port of a remote peer to sync with. -# p2p-seed-node = - -# User agent to advertise to peers -p2p-user-agent = Graphene Reference Implementation - -# The local IP and port to listen for incoming http connections. -# webserver-http-endpoint = - -# The local IP and port to listen for incoming websocket connections. -# webserver-ws-endpoint = - -# Number of threads used to handle queries. Default: 32. -webserver-thread-pool-size = 256 - -# Enable block production, even if the chain is stale. -enable-stale-production = false - -# Percent of witnesses (0-99) that must be participating in order to produce blocks -# required-participation = - -# name of witness controlled by this node (e.g. initwitness ) -# witness = - -# WIF PRIVATE KEY to be used by one or more witnesses or miners -# private-key = diff --git a/contrib/fullnode.opswhitelist.config.ini b/contrib/fullnode.opswhitelist.config.ini deleted file mode 100644 index b36df5af..00000000 --- a/contrib/fullnode.opswhitelist.config.ini +++ /dev/null @@ -1,86 +0,0 @@ -# Console appender definition json: {"appender", "stream"} -log-console-appender = {"appender":"stderr","stream":"std_error"} - -# File appender definition json: {"appender", "file"} -log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"} - -# Logger definition json: {"name", "level", "appender"} -log-logger = {"name":"default","level":"debug","appender":"stderr"} -log-logger = {"name":"p2p","level":"info","appender":"stderr"} - -# Plugin(s) to enable, may be specified multiple times -plugin = webserver p2p json_rpc witness account_by_key tags follow market_history account_history - -plugin = database_api account_by_key_api network_broadcast_api tags_api follow_api market_history_api witness_api condenser_api account_history_api - -# Defines a range of accounts to track as a json pair ["from","to"] [from,to] Can be specified multiple times -# account-history-track-account-range = - -# Defines a list of operations which will be explicitly logged. -account-history-whitelist-ops = transfer_operation transfer_to_vesting_operation withdraw_vesting_operation interest_operation transfer_to_savings_operation transfer_from_savings_operation cancel_transfer_from_savings_operation escrow_transfer_operation escrow_approve_operation escrow_dispute_operation escrow_release_operation fill_convert_request_operation fill_order_operation claim_reward_balance_operation author_reward_operation curation_reward_operation fill_vesting_withdraw_operation fill_transfer_from_savings_operation delegate_vesting_shares_operation return_vesting_delegation_operation comment_benefactor_reward_operation - -# Defines a list of operations which will be explicitly ignored. -# account-history-blacklist-ops = - -# the location of the chain shared memory files (absolute path or relative to application data dir) -# shared-file-dir = "blockchain" - -# Size of the shared memory file. Default: 54G -shared-file-size = 215G - -# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. -# checkpoint = - -# flush shared memory changes to disk every N blocks -# flush-state-interval = 0 - -# Database edits to apply on startup (may specify multiple times) -# edit-script = - -# Set the maximum size of cached feed for an account -follow-max-feed-size = 500 - -# Block time (in epoch seconds) when to start calculating feeds -# follow-start-feeds = 0 - -# Track market history by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers -market-history-bucket-size = [15,60,300,3600,86400] - -# How far back in time to track history for each bucket size, measured in the number of buckets (default: 5760) -market-history-buckets-per-size = 5760 - -# The local IP address and port to listen for incoming connections. -# p2p-endpoint = - -# Maxmimum number of incoming connections on P2P endpoint -# p2p-max-connections = - -# The IP address and port of a remote peer to sync with. Deprecated in favor of p2p-seed-node. -# seed-node = - -# The IP address and port of a remote peer to sync with. -# p2p-seed-node = - -# User agent to advertise to peers -p2p-user-agent = Graphene Reference Implementation - -# The local IP and port to listen for incoming http connections. -# webserver-http-endpoint = - -# The local IP and port to listen for incoming websocket connections. -# webserver-ws-endpoint = - -# Number of threads used to handle queries. Default: 32. -# webserver-thread-pool-size = 1024 - -# Enable block production, even if the chain is stale. -enable-stale-production = false - -# Percent of witnesses (0-99) that must be participating in order to produce blocks -# required-participation = - -# name of witness controlled by this node (e.g. initwitness ) -# witness = - -# WIF PRIVATE KEY to be used by one or more witnesses or miners -# private-key = diff --git a/contrib/fullnode_config.ini b/contrib/fullnode_config.ini new file mode 100644 index 00000000..6bfc8143 --- /dev/null +++ b/contrib/fullnode_config.ini @@ -0,0 +1,125 @@ +# Console appender definition json: {"appender", "stream"} +log-console-appender = {"appender":"stderr","stream":"std_error"} + +# File appender definition json: {"appender", "file"} +log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"} + +# Logger definition json: {"name", "level", "appender"} +log-logger = {"name":"default","level":"warn","appender":"stderr"} +log-logger = {"name":"p2p","level":"warn","appender":"p2p"} + +# Whether to print backtrace on SIGSEGV +backtrace = yes + +# Plugin(s) to enable, may be specified multiple times +#plugin = witness +plugin = condenser_api +plugin = account_history +plugin = account_history_api +plugin = account_by_key +plugin = chain_api +plugin = database_api +plugin = block_api +plugin = network_broadcast_api +plugin = custom_api + +# Defines a range of accounts to track as a json pair ["from","to"] [from,to] Can be specified multiple times. +# account-history-track-account-range = + +# Defines a range of accounts to track as a json pair ["from","to"] [from,to] Can be specified multiple times. Deprecated in favor of account-history-track-account-range. +# track-account-range = + +# Defines a list of operations which will be explicitly logged. +# account-history-whitelist-ops = + +# Defines a list of operations which will be explicitly logged. Deprecated in favor of account-history-whitelist-ops. +# history-whitelist-ops = + +# Defines a list of operations which will be explicitly ignored. +# account-history-blacklist-ops = + +# Defines a list of operations which will be explicitly ignored. Deprecated in favor of account-history-blacklist-ops. +# history-blacklist-ops = + +# Disables automatic account history trimming +history-disable-pruning = 0 + +# How often to print out block_log_info (default 1 day) +block-log-info-print-interval-seconds = 86400 + +# Whether to defer printing until block is irreversible +block-log-info-print-irreversible = 1 + +# Where to print (filename or special sink ILOG, STDOUT, STDERR) +block-log-info-print-file = ILOG + +# the location of the chain shared memory files (absolute path or relative to application data dir) +shared-file-dir = "blockchain" + +# Size of the shared memory file. Default: 24G. If running a full node, increase this value to 200G. +shared-file-size = 24G + +# A 2 precision percentage (0-10000) that defines the threshold for when to autoscale the shared memory file. Setting this to 0 disables autoscaling. Recommended value for consensus node is 9500 (95%). Full node is 9900 (99%) +shared-file-full-threshold = 0 + +# A 2 precision percentage (0-10000) that defines how quickly to scale the shared memory file. When autoscaling occurs the file's size will be increased by this percent. Setting this to 0 disables autoscaling. Recommended value is between 1000-2000 (10-20%) +shared-file-scale-rate = 0 + +# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. +# checkpoint = + +# flush shared memory changes to disk every N blocks +# flush-state-interval = + +# Database edits to apply on startup (may specify multiple times) +# debug-node-edit-script = + +# Database edits to apply on startup (may specify multiple times). Deprecated in favor of debug-node-edit-script. +# edit-script = + +# json-rpc log directory name. +# log-json-rpc = + +# The local IP address and port to listen for incoming connections. +p2p-endpoint = 0.0.0.0:60000 + +# Maxmimum number of incoming connections on P2P endpoint. +# p2p-max-connections = + +# The IP address and port of a remote peer to sync with. Deprecated in favor of p2p-seed-node. +# seed-node = + +# The IP address and port of a remote peer to sync with. +p2p-seed-node = seednode1.sophiatx.com:60000 +p2p-seed-node = seednode2.sophiatx.com:60000 +p2p-seed-node = seednode3.sophiatx.com:60000 +p2p-seed-node = seednode4.sophiatx.com:60000 +p2p-seed-node = seednode5.sophiatx.com:60000 +p2p-seed-node = seednode6.sophiatx.com:60000 + +# P2P network parameters. (Default: {"listen_endpoint":"0.0.0.0:0","accept_incoming_connections":true,"wait_if_endpoint_is_busy":true,"private_key":"0000000000000000000000000000000000000000000000000000000000000000","desired_number_of_connections":20,"maximum_number_of_connections":200,"peer_connection_retry_timeout":30,"peer_inactivity_timeout":5,"peer_advertising_disabled":false,"maximum_number_of_blocks_to_handle_at_one_time":200,"maximum_number_of_sync_blocks_to_prefetch":2000,"maximum_blocks_per_peer_during_syncing":200,"active_ignored_request_timeout_microseconds":6000000} ) +#p2p-parameters = + +# Local http endpoint for webserver requests. +webserver-http-endpoint = 0.0.0.0:9193 + +# Local websocket endpoint for webserver requests. +webserver-ws-endpoint = 0.0.0.0:9191 + +# Local http and websocket endpoint for webserver requests. Deprecated in favor of webserver-http-endpoint and webserver-ws-endpoint +#rpc-endpoint = 127.0.0.1:9195 + +# Number of threads used to handle queries. Default: 32. +webserver-thread-pool-size = 32 + +# Enable block production, even if the chain is stale. +# enable-stale-production = true + +# Percent of witnesses (0-99) that must be participating in order to produce blocks +required-participation = 0 + +# name of witness controlled by this node (e.g. initwitness ) +# witness = "" + +# WIF PRIVATE KEY to be used by one or more witnesses or miners +# private-key = diff --git a/contrib/healthcheck.conf.template b/contrib/healthcheck.conf.template deleted file mode 100644 index 628bf66f..00000000 --- a/contrib/healthcheck.conf.template +++ /dev/null @@ -1,25 +0,0 @@ - server { - listen 0.0.0.0:8090; - - location /health { - fastcgi_pass unix:/var/run/fcgiwrap.socket; - fastcgi_param SCRIPT_FILENAME /usr/local/bin/healthcheck.sh; - } - - location / { - access_log off; - proxy_pass http://ws; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_http_version 1.1; - proxy_buffering off; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - add_header Access-Control-Allow-Origin "*"; - add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; - add_header Access-Control-Allow-Headers "DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range"; - add_header Strict-Transport-Security "max-age=31557600; includeSubDomains; preload" always; - } -} - upstream ws { diff --git a/contrib/healthcheck.sh b/contrib/healthcheck.sh deleted file mode 100644 index 6dea5ede..00000000 --- a/contrib/healthcheck.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash - -# if this is a syncing node, it will regularly be down -# so all we need to know is that this healthcheck script is up and responding -if [[ -e /tmp/issyncnode ]]; then - echo Status: 200 - echo Content-type:text/plain - echo - echo The sync node is up and running. - exit 0 -fi - -BLOCKCHAIN_TIME=$( - curl --silent --max-time 3 \ - --data '{"jsonrpc":"2.0","id":39,"method":"database_api.get_dynamic_global_properties"}' \ - localhost:8090 | jq -r .result.time -) - -# this is a separate check because if the node is actually responding on the open port but -# isn't responding within the given amount of time -# curl will return a string set to null, which is different than -# if it's not responding at all and the variable is actually null -if [[ ${BLOCKCHAIN_TIME} == "null" ]]; then - echo Status: 502 - echo Content-type:text/plain - echo - echo The node is currently not responding. - exit 0 -fi - -if [[ ! -z "$BLOCKCHAIN_TIME" ]]; then - BLOCKCHAIN_SECS=`date -d $BLOCKCHAIN_TIME +%s` - CURRENT_SECS=`date +%s` - - # if we're within 60 seconds of current time, call it synced and report healthy - BLOCK_AGE=$((${CURRENT_SECS} - ${BLOCKCHAIN_SECS})) - if [[ ${BLOCK_AGE} -le 60 ]]; then - echo Status: 200 - echo Content-type:text/plain - echo - echo Block age is less than 60 seconds old, this node is considered healthy. - else - echo Status: 503 - echo Content-type:text/plain - echo - echo The node is responding but block chain age is $BLOCK_AGE seconds old - fi -else - echo Status: 502 - echo Content-type:text/plain - echo - echo The node is currently not responding. -fi diff --git a/contrib/paas-sv-run.sh b/contrib/paas-sv-run.sh deleted file mode 100644 index d1992660..00000000 --- a/contrib/paas-sv-run.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -# if the writer node dies, kill runsv causing the container to exit -STEEMD_PID=`pgrep -f p2p-endpoint` -if [[ ! $? -eq 0 ]]; then - echo NOTIFYALERT! steemd has quit unexpectedly, checking for core dump and then starting a new instance.. - sleep 30 - SAVED_PID=`cat /tmp/steemdpid` - if [[ -e /tmp/core.$SAVED_PID ]]; then - gdb --batch --quiet -ex "thread apply all bt full" -ex "quit" /usr/local/steemd-full/bin/steemd /tmp/core.$SAVED_PID >> /tmp/stacktrace - STACKTRACE=`cat /tmp/stacktrace` - echo NOTIFYALERT! steemd stacktrace from coredump: - for ((i=0;i<${#STACKTRACE};i+=120)); do - echo "${STACKTRACE:i:120}" - done - CORE_FILE_NAME=coredump-`date '+%Y%m%d-%H%M%S'`.$SAVED_PID - aws s3 cp /tmp/core.$SAVED_PID s3://$S3_BUCKET/$CORE_FILE_NAME - fi - RUN_SV_PID=`pgrep -f /etc/service/steemd` - kill -9 $RUN_SV_PID -fi - -# check on this every 10 seconds -sleep 10 diff --git a/contrib/startpaassteemd.sh b/contrib/startpaassteemd.sh deleted file mode 100644 index 4795e3e9..00000000 --- a/contrib/startpaassteemd.sh +++ /dev/null @@ -1,174 +0,0 @@ -#!/bin/bash - -VERSION=`cat /etc/steemdversion` - -if [[ "$IS_BROADCAST_NODE" ]]; then - STEEMD="/usr/local/steemd-default/bin/steemd" -elif [[ "$IS_AH_NODE" ]]; then - STEEMD="/usr/local/steemd-default/bin/steemd" -else - STEEMD="/usr/local/steemd-full/bin/steemd" -fi - -chown -R steemd:steemd $HOME - -# clean out data dir since it may be semi-persistent block storage on the ec2 with stale data -rm -rf $HOME/* - -# seed nodes come from doc/seednodes.txt which is -# installed by docker into /etc/steemd/seednodes.txt -SEED_NODES="$(cat /etc/steemd/seednodes.txt | awk -F' ' '{print $1}')" - -ARGS="" - -# if user did not pass in any desired -# seed nodes, use the ones above: -if [[ -z "$STEEMD_SEED_NODES" ]]; then - for NODE in $SEED_NODES ; do - ARGS+=" --p2p-seed-node=$NODE" - done -fi - -# if user did pass in desired seed nodes, use -# the ones the user specified: -if [[ ! -z "$STEEMD_SEED_NODES" ]]; then - for NODE in $STEEMD_SEED_NODES ; do - ARGS+=" --p2p-seed-node=$NODE" - done -fi - -NOW=`date +%s` -STEEMD_FEED_START_TIME=`expr $NOW - 1209600` - -ARGS+=" --follow-start-feeds=$STEEMD_FEED_START_TIME" - -STEEMD_PROMOTED_START_TIME=`expr $NOW - 604800` -ARGS+=" --tags-start-promoted=$STEEMD_PROMOTED_START_TIME" - -if [[ ! "$DISABLE_BLOCK_API" ]]; then - ARGS+=" --plugin=block_api" -fi - -# overwrite local config with image one -if [[ "$IS_BROADCAST_NODE" ]]; then - cp /etc/steemd/config-for-broadcaster.ini $HOME/config.ini -elif [[ "$IS_AH_NODE" ]]; then - cp /etc/steemd/config-for-ahnode.ini $HOME/config.ini -elif [[ "$IS_OPSWHITELIST_NODE" ]]; then - cp /etc/steemd/fullnode.opswhitelist.config.ini $HOME/config.ini -else - cp /etc/steemd/fullnode.config.ini $HOME/config.ini -fi - -chown steemd:steemd $HOME/config.ini - -cd $HOME - -mv /etc/nginx/nginx.conf /etc/nginx/nginx.original.conf -cp /etc/nginx/steemd.nginx.conf /etc/nginx/nginx.conf - -# get blockchain state from an S3 bucket -echo steemd: beginning download and decompress of s3://$S3_BUCKET/blockchain-$VERSION-latest.tar.lz4 -if [[ "$USE_RAMDISK" ]]; then - mkdir -p /mnt/ramdisk - mount -t ramfs -o size=${RAMDISK_SIZE_IN_MB:-51200}m ramfs /mnt/ramdisk - ARGS+=" --shared-file-dir=/mnt/ramdisk/blockchain" - # try five times to pull in shared memory file - finished=0 - count=1 - while [[ $count -le 5 ]] && [[ $finished == 0 ]] - do - rm -rf $HOME/blockchain/* - rm -rf /mnt/ramdisk/blockchain/* - if [[ "$IS_BROADCAST_NODE" ]]; then - aws s3 cp s3://$S3_BUCKET/broadcast-$VERSION-latest.tar.lz4 - | lz4 -d | tar x --wildcards 'blockchain/block*' -C /mnt/ramdisk 'blockchain/shared*' - elif [[ "$IS_AH_NODE" ]]; then - aws s3 cp s3://$S3_BUCKET/ahnode-$VERSION-latest.tar.lz4 - | lz4 -d | tar x --wildcards 'blockchain/block*' -C /mnt/ramdisk 'blockchain/shared*' - else - aws s3 cp s3://$S3_BUCKET/blockchain-$VERSION-latest.tar.lz4 - | lz4 -d | tar x --wildcards 'blockchain/block*' -C /mnt/ramdisk 'blockchain/shared*' - fi - if [[ $? -ne 0 ]]; then - sleep 1 - echo notifyalert steemd: unable to pull blockchain state from S3 - attempt $count - (( count++ )) - else - finished=1 - fi - done - chown -R steemd:steemd /mnt/ramdisk/blockchain -else - while [[ $count -le 5 ]] && [[ $finished == 0 ]] - do - rm -rf $HOME/blockchain/* - if [[ "$IS_BROADCAST_NODE" ]]; then - aws s3 cp s3://$S3_BUCKET/broadcast-$VERSION-latest.tar.lz4 - | lz4 -d | tar x - elif [[ "$IS_AH_NODE" ]]; then - aws s3 cp s3://$S3_BUCKET/ahnode-$VERSION-latest.tar.lz4 - | lz4 -d | tar x - else - aws s3 cp s3://$S3_BUCKET/blockchain-$VERSION-latest.tar.lz4 - | lz4 -d | tar x - fi - if [[ $? -ne 0 ]]; then - sleep 1 - echo notifyalert steemd: unable to pull blockchain state from S3 - attempt $count - (( count++ )) - else - finished=1 - fi - done -fi -if [[ $finished == 0 ]]; then - if [[ ! "$SYNC_TO_S3" ]]; then - echo notifyalert steemd: unable to pull blockchain state from S3 - exiting - exit 1 - else - echo notifysteemdsync steemdsync: shared memory file for $VERSION not found, creating a new one by replaying the blockchain - mkdir blockchain - aws s3 cp s3://$S3_BUCKET/block_log-latest blockchain/block_log - if [[ $? -ne 0 ]]; then - echo notifysteemdsync steemdsync: unable to pull latest block_log from S3, will sync from scratch. - else - ARGS+=" --replay-blockchain --force-validate" - fi - touch /tmp/isnewsync - fi -fi - -# for appbase tags plugin loading -ARGS+=" --tags-skip-startup-update" - -cd $HOME - -if [[ "$SYNC_TO_S3" ]]; then - touch /tmp/issyncnode - chown www-data:www-data /tmp/issyncnode -fi - -chown -R steemd:steemd $HOME/* - -# let's get going -cp /etc/nginx/healthcheck.conf.template /etc/nginx/healthcheck.conf -echo server 127.0.0.1:8091\; >> /etc/nginx/healthcheck.conf -echo } >> /etc/nginx/healthcheck.conf -rm /etc/nginx/sites-enabled/default -cp /etc/nginx/healthcheck.conf /etc/nginx/sites-enabled/default -/etc/init.d/fcgiwrap restart -service nginx restart -exec chpst -usteemd \ - $STEEMD \ - --webserver-ws-endpoint=127.0.0.1:8091 \ - --webserver-http-endpoint=127.0.0.1:8091 \ - --p2p-endpoint=0.0.0.0:2001 \ - --data-dir=$HOME \ - $ARGS \ - $STEEMD_EXTRA_OPTS \ - 2>&1& -SAVED_PID=`pgrep -f p2p-endpoint` -echo $SAVED_PID >> /tmp/steemdpid -mkdir -p /etc/service/steemd -if [[ ! "$SYNC_TO_S3" ]]; then - cp /usr/local/bin/paas-sv-run.sh /etc/service/steemd/run -else - cp /usr/local/bin/sync-sv-run.sh /etc/service/steemd/run -fi -chmod +x /etc/service/steemd/run -runsv /etc/service/steemd diff --git a/contrib/steemd.nginx.conf b/contrib/steemd.nginx.conf deleted file mode 100644 index 9f807ae9..00000000 --- a/contrib/steemd.nginx.conf +++ /dev/null @@ -1,37 +0,0 @@ -user www-data; -worker_processes 64; -worker_rlimit_nofile 10000; -pid /run/nginx.pid; - -events { - worker_connections 10000; -} - -http { - - sendfile on; - keepalive_timeout 0; - server_tokens off; - - real_ip_header X-Forwarded-For; - set_real_ip_from 172.31.0.0/16; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - log_format main '$remote_addr - $remote_user [$time_local] ' - '"$request" $status $body_bytes_sent ' - '|"$http_referer"| "$http_user_agent"'; - - access_log /dev/stdout main; - error_log /dev/stdout info; - - log_not_found off; - - gzip on; - - proxy_ignore_client_abort on; - - include /etc/nginx/conf.d/*.conf; - include /etc/nginx/sites-enabled/*; -} diff --git a/contrib/steemd.run b/contrib/steemd.run deleted file mode 100644 index db70e881..00000000 --- a/contrib/steemd.run +++ /dev/null @@ -1,134 +0,0 @@ -#!/bin/bash - -STEEMD="/usr/local/steemd-default/bin/steemd" - -VERSION=`cat /etc/steemdversion` - -if [[ "$USE_WAY_TOO_MUCH_RAM" ]]; then - STEEMD="/usr/local/steemd-full/bin/steemd" -fi - -chown -R steemd:steemd $HOME - -# seed nodes come from doc/seednodes.txt which is -# installed by docker into /etc/steemd/seednodes.txt -SEED_NODES="$(cat /etc/steemd/seednodes.txt | awk -F' ' '{print $1}')" - -ARGS="" - -# if user did not pass in any desired -# seed nodes, use the ones above: -if [[ -z "$STEEMD_SEED_NODES" ]]; then - for NODE in $SEED_NODES ; do - ARGS+=" --p2p-seed-node=$NODE" - done -fi - -# if user did pass in desired seed nodes, use -# the ones the user specified: -if [[ ! -z "$STEEMD_SEED_NODES" ]]; then - for NODE in $STEEMD_SEED_NODES ; do - ARGS+=" --p2p-seed-node=$NODE" - done -fi - -if [[ ! -z "$STEEMD_WITNESS_NAME" ]]; then - ARGS+=" --witness=\"$STEEMD_WITNESS_NAME\"" -fi - - -if [[ ! -z "$STEEMD_PRIVATE_KEY" ]]; then - ARGS+=" --private-key=$STEEMD_PRIVATE_KEY" -fi - -if [[ ! -z "$TRACK_ACCOUNT" ]]; then - if [[ ! "$USE_WAY_TOO_MUCH_RAM" ]]; then - ARGS+=" --plugin=account_history" - fi - ARGS+=" --account-history-track-account-range=[\"$TRACK_ACCOUNT\",\"$TRACK_ACCOUNT\"]" -fi - -if [[ ! "$DISABLE_BLOCK_API" ]]; then - ARGS+=" --plugin=block_api" -fi - -if [[ ! "$DISABLE_SCALE_MEM" ]]; then - ARGS+=" --shared-file-full-threshold=9500 --shared-file-scale-rate=1000" -fi - -NOW=`date +%s` -STEEMD_FEED_START_TIME=`expr $NOW - 1209600` - -ARGS+=" --follow-start-feeds=$STEEMD_FEED_START_TIME" - -# overwrite local config with image one -if [[ "$USE_FULL_WEB_NODE" ]]; then - cp /etc/steemd/fullnode.config.ini $HOME/config.ini -elif [[ "$IS_BROADCAST_NODE" ]]; then - cp /etc/steemd/config-for-broadcaster.ini $HOME/config.ini -elif [[ "$IS_AH_NODE" ]]; then - cp /etc/steemd/config-for-ahnode.ini $HOME/config.ini -elif [[ "$IS_OPSWHITELIST_NODE" ]]; then - cp /etc/steemd/fullnode.opswhitelist.config.ini $HOME/config.ini -else - cp /etc/steemd/config.ini $HOME/config.ini -fi - -chown steemd:steemd $HOME/config.ini - -if [[ ! -d $HOME/blockchain ]]; then - if [[ -e /var/cache/steemd/blocks.tbz2 ]]; then - # init with blockchain cached in image - ARGS+=" --replay-blockchain" - mkdir -p $HOME/blockchain/database - cd $HOME/blockchain/database - tar xvjpf /var/cache/steemd/blocks.tbz2 - chown -R steemd:steemd $HOME/blockchain - fi -else - ARGS+=" --tags-skip-startup-update" -fi - -# without --data-dir it uses cwd as datadir(!) -# who knows what else it dumps into current dir -cd $HOME - -if [[ "$USE_PUBLIC_SHARED_MEMORY" ]]; then - echo steemd: Downloading and uncompressing blockchain-$VERSION-latest.tar.lz4 - this may take awhile. - wget -qO- https://s3.amazonaws.com/steemit-dev-blockchainstate/blockchain-$VERSION-latest.tar.lz4 | lz4 -d | tar x -fi - -# slow down restart loop if flapping -sleep 1 - -mv /etc/nginx/nginx.conf /etc/nginx/nginx.original.conf -cp /etc/nginx/steemd.nginx.conf /etc/nginx/nginx.conf - -if [[ "$USE_NGINX_FRONTEND" ]]; then - cp /etc/nginx/healthcheck.conf.template /etc/nginx/healthcheck.conf - echo server 127.0.0.1:8091\; >> /etc/nginx/healthcheck.conf - echo } >> /etc/nginx/healthcheck.conf - rm /etc/nginx/sites-enabled/default - cp /etc/nginx/healthcheck.conf /etc/nginx/sites-enabled/default - /etc/init.d/fcgiwrap restart - service nginx restart - exec chpst -usteemd \ - $STEEMD \ - --webserver-ws-endpoint=0.0.0.0:8091 \ - --webserver-http-endpoint=0.0.0.0:8091 \ - --p2p-endpoint=0.0.0.0:2001 \ - --data-dir=$HOME \ - $ARGS \ - $STEEMD_EXTRA_OPTS \ - 2>&1 -else - exec chpst -usteemd \ - $STEEMD \ - --webserver-ws-endpoint=0.0.0.0:8090 \ - --webserver-http-endpoint=0.0.0.0:8090 \ - --p2p-endpoint=0.0.0.0:2001 \ - --data-dir=$HOME \ - $ARGS \ - $STEEMD_EXTRA_OPTS \ - 2>&1 -fi diff --git a/contrib/steemdentrypoint.sh b/contrib/steemdentrypoint.sh deleted file mode 100644 index 3a96c2fc..00000000 --- a/contrib/steemdentrypoint.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -echo /tmp/core | tee /proc/sys/kernel/core_pattern -ulimit -c unlimited - -# if we're not using PaaS mode then start steemd traditionally with sv to control it -if [[ ! "$USE_PAAS" ]]; then - mkdir -p /etc/service/steemd - cp /usr/local/bin/steem-sv-run.sh /etc/service/steemd/run - chmod +x /etc/service/steemd/run - runsv /etc/service/steemd -elif [[ "$IS_TESTNET" ]]; then - /usr/local/bin/testnetinit.sh -else - /usr/local/bin/startpaassteemd.sh -fi diff --git a/contrib/sync-sv-run.sh b/contrib/sync-sv-run.sh deleted file mode 100644 index 83207af1..00000000 --- a/contrib/sync-sv-run.sh +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/bash - -VERSION=`cat /etc/steemdversion` - -# if the writer node dies by itself, kill runsv causing the container to exit -STEEMD_PID=`pgrep -f p2p-endpoint` -if [[ ! $? -eq 0 ]]; then - echo NOTIFYALERT! steemdsync has quit unexpectedly, checking for coredump and then starting a new instance.. - sleep 30 - SAVED_PID=`cat /tmp/steemdpid` - if [[ -e /tmp/core.$SAVED_PID ]]; then - gdb --batch --quiet -ex "thread apply all bt full" -ex "quit" /usr/local/steemd-full/bin/steemd /tmp/core.$SAVED_PID >> /tmp/stacktrace - STACKTRACE=`cat /tmp/stacktrace` - echo NOTIFYALERT! steemdsync stacktrace from coredump: - for ((i=0;i<${#STACKTRACE};i+=120)); do - echo "${STACKTRACE:i:120}" - done - CORE_FILE_NAME=coredump-`date '+%Y%m%d-%H%M%S'`.$SAVED_PID - aws s3 cp /tmp/core.$SAVED_PID s3://$S3_BUCKET/$CORE_FILE_NAME - fi - RUN_SV_PID=`pgrep -f /etc/service/steemd` - kill -9 $RUN_SV_PID -fi - -# check if we are synced, if so start the process of uploading to s3 -# after uploading, kill runsv causing the container to exit -# and ecs-agent will start a new container starting the process over -BLOCKCHAIN_TIME=$( - curl --silent --max-time 20 \ - --data '{"jsonrpc":"2.0","id":39,"method":"database_api.get_dynamic_global_properties"}' \ - localhost:8090 | jq -r .result.time -) - -if [[ ! -z "$BLOCKCHAIN_TIME" ]]; then - BLOCKCHAIN_SECS=`date -d $BLOCKCHAIN_TIME +%s` - CURRENT_SECS=`date +%s` - - # if we're within 10 seconds of current time, call it synced and begin the upload - BLOCK_AGE=$((${CURRENT_SECS} - ${BLOCKCHAIN_SECS})) - if [[ ${BLOCK_AGE} -le 10 ]]; then - STEEMD_PID=`pgrep -f p2p-endpoint` - kill -SIGINT $STEEMD_PID - echo steemdsync: waiting for steemd to exit cleanly - while [ -e /proc/$STEEMD_PID ]; do sleep 0.1; done - echo steemdsync: starting a new blockchainstate upload operation - cd ${COMPRESSPATH:-$HOME} - echo steemdsync: compressing blockchainstate... - if [[ "$USE_RAMDISK" ]]; then - tar vcf blockchain.tar.lz4 --use-compress-prog=lz4 -C $HOME blockchain -C /mnt/ramdisk blockchain - else - tar cf blockchain.tar.lz4 --use-compress-prog=lz4 -C $HOME blockchain - fi - if [[ ! $? -eq 0 ]]; then - echo NOTIFYALERT! steemdsync was unable to compress shared memory file, check the logs. - exit 1 - fi - if [[ "$IS_BROADCAST_NODE" ]]; then - FILE_NAME=broadcast-$VERSION-`date '+%Y%m%d-%H%M%S'`.tar.lz4 - elif [[ "$IS_AH_NODE" ]]; then - FILE_NAME=ahnode-$VERSION-`date '+%Y%m%d-%H%M%S'`.tar.lz4 - else - FILE_NAME=blockchain-$VERSION-`date '+%Y%m%d-%H%M%S'`.tar.lz4 - fi - echo steemdsync: uploading $FILE_NAME to $S3_BUCKET - aws s3 cp blockchain.tar.lz4 s3://$S3_BUCKET/$FILE_NAME - if [[ ! $? -eq 0 ]]; then - echo NOTIFYALERT! steemdsync was unable to upload $FILE_NAME to s3://$S3_BUCKET - exit 1 - fi - echo steemdsync: replacing current version of blockchain state with $FILE_NAME - if [[ "$IS_BROADCAST_NODE" ]]; then - aws s3 cp s3://$S3_BUCKET/$FILE_NAME s3://$S3_BUCKET/broadcast-$VERSION-latest.tar.lz4 - aws s3api put-object-acl --bucket $S3_BUCKET --key broadcast-$VERSION-latest.tar.lz4 --acl public-read - elif [[ "$IS_AH_NODE" ]]; then - aws s3 cp s3://$S3_BUCKET/$FILE_NAME s3://$S3_BUCKET/ahnode-$VERSION-latest.tar.lz4 - aws s3api put-object-acl --bucket $S3_BUCKET --key ahnode-$VERSION-latest.tar.lz4 --acl public-read - else - aws s3 cp s3://$S3_BUCKET/$FILE_NAME s3://$S3_BUCKET/blockchain-$VERSION-latest.tar.lz4 - aws s3api put-object-acl --bucket $S3_BUCKET --key blockchain-$VERSION-latest.tar.lz4 --acl public-read - fi - if [[ ! $? -eq 0 ]]; then - echo NOTIFYALERT! steemdsync was unable to overwrite the current blockchainstate with $FILE_NAME - exit 1 - fi - # upload a current block_log - cd $HOME - if [[ ! "$IS_BROADCAST_NODE" ]] && [[ ! "$IS_AH_NODE" ]]; then - aws s3 cp blockchain/block_log s3://$S3_BUCKET/block_log-intransit - aws s3 cp s3://$S3_BUCKET/block_log-intransit s3://$S3_BUCKET/block_log-latest - fi - # kill the container starting the process over again - echo steemdsync: stopping the container after a sync operation - if [[ -e /tmp/isnewsync ]]; then - echo notifysteemdsync: steemdsync: successfully generated and uploaded new blockchain-$VERSION-latest.tar.lz4 to s3://$S3_BUCKET - fi - RUN_SV_PID=`pgrep -f /etc/service/steemd` - kill -9 $RUN_SV_PID - fi -fi - -# check on this every 60 seconds -sleep 60 diff --git a/contrib/testnet.config.ini b/contrib/testnet.config.ini deleted file mode 100644 index 16d850af..00000000 --- a/contrib/testnet.config.ini +++ /dev/null @@ -1,44 +0,0 @@ -# Console appender definition json: {"appender", "stream"} -log-console-appender = {"appender":"stderr","stream":"std_error"} - -# File appender definition json: {"appender", "file"} -log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"} - -# Logger definition json: {"name", "level", "appender"} -log-logger = {"name":"default","level":"debug","appender":"stderr"} -log-logger = {"name":"p2p","level":"info","appender":"stderr"} - -# Plugin(s) to enable, may be specified multiple times -plugin = webserver p2p json_rpc witness account_by_key tags follow market_history account_history - -plugin = database_api account_by_key_api network_broadcast_api tags_api follow_api market_history_api witness_api condenser_api account_history_api - -# Size of the shared memory file. Default: 54G -shared-file-size = 30G - -# Set the maximum size of cached feed for an account -follow-max-feed-size = 500 - -# Track market history by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers -market-history-bucket-size = [15,60,300,3600,86400] - -# How far back in time to track history for each bucket size, measured in the number of buckets (default: 5760) -market-history-buckets-per-size = 5760 - -# User agent to advertise to peers -p2p-user-agent = Graphene Reference Implementation - -# Number of threads used to handle queries. Default: 32. -webserver-thread-pool-size = 256 - -# Enable block production, even if the chain is stale. -enable-stale-production = true - -# required participation -required-participation = 0 - -# name of witness controlled by this node (e.g. initwitness ) -# witness = - -# WIF PRIVATE KEY to be used by one or more witnesses or miners -# private-key = \ No newline at end of file diff --git a/contrib/testnetinit.sh b/contrib/testnetinit.sh deleted file mode 100644 index ed719214..00000000 --- a/contrib/testnetinit.sh +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/bash - -VERSION=`cat /etc/steemdversion` - -STEEMD="/usr/local/steemd-testnet/bin/steemd" - -UTILS="/usr/local/steemd-testnet/bin" - -chown -R steemd:steemd $HOME - -# clean out data dir since it may be semi-persistent block storage on the ec2 with stale data -rm -rf $HOME/* - -mkdir -p $HOME/testnet_datadir - -# for the startup node to connect to the fastgen -ARGS+=" --p2p-seed-node=127.0.0.1:12001" - -# copy over config for testnet init and fastgen nodes -cp /etc/steemd/testnet.config.ini $HOME/config.ini -cp /etc/steemd/fastgen.config.ini $HOME/testnet_datadir/config.ini - -chown steemd:steemd $HOME/config.ini -chown steemd:steemd $HOME/testnet_datadir/config.ini - -cd $HOME - -echo chain-id = $CHAIN_ID >> config.ini -echo chain-id = $CHAIN_ID >> testnet_datadir/config.ini - -mv /etc/nginx/nginx.conf /etc/nginx/nginx.original.conf -cp /etc/nginx/steemd.nginx.conf /etc/nginx/nginx.conf - -# for appbase tags plugin loading -ARGS+=" --tags-skip-startup-update" - -cd $HOME - -# setup tinman -git clone https://github.com/steemit/tinman -cd tinman/tinman -git clone https://github.com/steemit/simple_steem_client -cd $HOME -virtualenv -p $(which python3) ~/ve/tinman -source ~/ve/tinman/bin/activate -pip install ./tinman - -# get latest tx-gen from s3 -aws s3 cp s3://$S3_BUCKET/txgen-latest.list ./txgen.list -cp tinman/txgen.conf.example ./txgen.conf - -chown -R steemd:steemd $HOME/* - -echo steemd-testnet: starting fastgen node -# start the fastgen node -exec chpst -usteemd \ - $STEEMD \ - --webserver-ws-endpoint=0.0.0.0:9990 \ - --webserver-http-endpoint=0.0.0.0:9990 \ - --p2p-endpoint=0.0.0.0:12001 \ - --data-dir=$HOME/testnet_datadir \ - 2>&1& - -# give the fastgen node some time to startup -sleep 120 - -# pipe the transactions through keysub and into the fastgen node -echo steemd-testnet: pipelining transactions into fastgen node, this may take some time -( \ - echo [\"set_secret\", {\"secret\":\"$SHARED_SECRET\"}] ; \ - cat txgen.list \ -) | \ -tinman keysub --get-dev-key $UTILS/get_dev_key | \ -tinman submit -t http://127.0.0.1:9990 --signer $UTILS/sign_transaction -f fail.json - -# add witness names to config file -i=0 ; while [ $i -lt 21 ] ; do echo witness = '"'init-$i'"' >> config.ini ; let i=i+1 ; done - -# add keys derived from shared secret to config file -$UTILS/get_dev_key $SHARED_SECRET block-init-0:21 | cut -d '"' -f 4 | sed 's/^/private-key = /' >> config.ini - -# let's get going -echo steemd-testnet: bringing up witness / full node -cp /etc/nginx/healthcheck.conf.template /etc/nginx/healthcheck.conf -echo server 127.0.0.1:8091\; >> /etc/nginx/healthcheck.conf -echo } >> /etc/nginx/healthcheck.conf -rm /etc/nginx/sites-enabled/default -cp /etc/nginx/healthcheck.conf /etc/nginx/sites-enabled/default -/etc/init.d/fcgiwrap restart -service nginx restart -exec chpst -usteemd \ - $STEEMD \ - --webserver-ws-endpoint=0.0.0.0:8091 \ - --webserver-http-endpoint=0.0.0.0:8091 \ - --p2p-endpoint=0.0.0.0:2001 \ - --data-dir=$HOME \ - $ARGS \ - 2>&1 diff --git a/contrib/witness_config.ini b/contrib/witness_config.ini new file mode 100644 index 00000000..bf423a65 --- /dev/null +++ b/contrib/witness_config.ini @@ -0,0 +1,126 @@ +# Console appender definition json: {"appender", "stream"} +log-console-appender = {"appender":"stderr","stream":"std_error"} + +# File appender definition json: {"appender", "file"} +log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"} + +# Logger definition json: {"name", "level", "appender"} +log-logger = {"name":"default","level":"warn","appender":"stderr"} +log-logger = {"name":"p2p","level":"warn","appender":"p2p"} + +# Whether to print backtrace on SIGSEGV +backtrace = yes + +# Plugin(s) to enable, may be specified multiple times +plugin = witness +#plugin = condenser_api +#plugin = account_history +#plugin = account_history_api +#plugin = account_by_key +#plugin = chain_api +#plugin = database_api +#plugin = block_api +#plugin = network_broadcast_api +#plugin = custom_api + +# Defines a range of accounts to track as a json pair ["from","to"] [from,to] Can be specified multiple times. +# account-history-track-account-range = + +# Defines a range of accounts to track as a json pair ["from","to"] [from,to] Can be specified multiple times. Deprecated in favor of account-history-track-account-range. +# track-account-range = + +# Defines a list of operations which will be explicitly logged. +# account-history-whitelist-ops = + +# Defines a list of operations which will be explicitly logged. Deprecated in favor of account-history-whitelist-ops. +# history-whitelist-ops = + +# Defines a list of operations which will be explicitly ignored. +# account-history-blacklist-ops = + +# Defines a list of operations which will be explicitly ignored. Deprecated in favor of account-history-blacklist-ops. +# history-blacklist-ops = + +# Disables automatic account history trimming +history-disable-pruning = 0 + +# How often to print out block_log_info (default 1 day) +block-log-info-print-interval-seconds = 86400 + +# Whether to defer printing until block is irreversible +block-log-info-print-irreversible = 1 + +# Where to print (filename or special sink ILOG, STDOUT, STDERR) +block-log-info-print-file = ILOG + +# the location of the chain shared memory files (absolute path or relative to application data dir) +shared-file-dir = "blockchain" + +# Size of the shared memory file. Default: 24G. If running a full node, increase this value to 200G. +shared-file-size = 24G + +# A 2 precision percentage (0-10000) that defines the threshold for when to autoscale the shared memory file. Setting this to 0 disables autoscaling. Recommended value for consensus node is 9500 (95%). Full node is 9900 (99%) +shared-file-full-threshold = 0 + +# A 2 precision percentage (0-10000) that defines how quickly to scale the shared memory file. When autoscaling occurs the file's size will be increased by this percent. Setting this to 0 disables autoscaling. Recommended value is between 1000-2000 (10-20%) +shared-file-scale-rate = 0 + +# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints. +# checkpoint = + +# flush shared memory changes to disk every N blocks +# flush-state-interval = + +# Database edits to apply on startup (may specify multiple times) +# debug-node-edit-script = + +# Database edits to apply on startup (may specify multiple times). Deprecated in favor of debug-node-edit-script. +# edit-script = + +# json-rpc log directory name. +# log-json-rpc = + +# The local IP address and port to listen for incoming connections. +p2p-endpoint = 0.0.0.0:60000 + +# Maxmimum number of incoming connections on P2P endpoint. +# p2p-max-connections = + +# The IP address and port of a remote peer to sync with. Deprecated in favor of p2p-seed-node. +# seed-node = + +# The IP address and port of a remote peer to sync with. +p2p-seed-node = seednode1.sophiatx.com:60000 +p2p-seed-node = seednode2.sophiatx.com:60000 +p2p-seed-node = seednode3.sophiatx.com:60000 +p2p-seed-node = seednode4.sophiatx.com:60000 +p2p-seed-node = seednode5.sophiatx.com:60000 +p2p-seed-node = seednode6.sophiatx.com:60000 + +# P2P network parameters. (Default: {"listen_endpoint":"0.0.0.0:0","accept_incoming_connections":true,"wait_if_endpoint_is_busy":true,"private_key":"0000000000000000000000000000000000000000000000000000000000000000","desired_number_of_connections":20,"maximum_number_of_connections":200,"peer_connection_retry_timeout":30,"peer_inactivity_timeout":5,"peer_advertising_disabled":false,"maximum_number_of_blocks_to_handle_at_one_time":200,"maximum_number_of_sync_blocks_to_prefetch":2000,"maximum_blocks_per_peer_during_syncing":200,"active_ignored_request_timeout_microseconds":6000000} ) +#p2p-parameters = {"listen_endpoint":"0.0.0.0:0","accept_incoming_connections":true,"wait_if_endpoint_is_busy":true,"private_key":"0000000000000000000000000000000000000000000000000000000000000000","desired_number_of_connections":20,"maximum_number_of_connections":200,"peer_connection_retry_timeout":30,"peer_inactivity_timeout":5,"peer_advertising_disabled":true,"maximum_number_of_blocks_to_handle_at_one_time":200,"maximum_number_of_sync_blocks_to_prefetch":2000,"maximum_blocks_per_peer_during_syncing":200,"active_ignored_request_timeout_microseconds":6000000} + +# Local http endpoint for webserver requests. +webserver-http-endpoint = 0.0.0.0:9193 + +# Local websocket endpoint for webserver requests. +webserver-ws-endpoint = 0.0.0.0:9191 + +# Local http and websocket endpoint for webserver requests. Deprecated in favor of webserver-http-endpoint and webserver-ws-endpoint +#rpc-endpoint = 0.0.0.0:9195 + +# Number of threads used to handle queries. Default: 32. +webserver-thread-pool-size = 32 + +# Enable block production, even if the chain is stale. +enable-stale-production = true + +# Percent of witnesses (0-99) that must be participating in order to produce blocks +required-participation = 0 + +# name of witness controlled by this node (e.g. initwitness ) +#witness = "sphtxwitness" + +# WIF PRIVATE KEY to be used by one or more witnesses or miners +#private-key = 5tPwY3bwFgfsGtxMeLkLqXzUrQDMAsqSyAZDnMtBkg7PDDRhQEaz + diff --git a/doc/Python-Debug-Node.md b/doc/Python-Debug-Node.md index c50b933b..5b09e181 100644 --- a/doc/Python-Debug-Node.md +++ b/doc/Python-Debug-Node.md @@ -3,7 +3,7 @@ Python Debug Node Readme ------------------------ The Python Debug Node is a wrapper class that automates the creation and maintenance -of a running Steem Debug Node. The Debug Node is a plugin for Steem that allows realtime +of a running SophiaTX Debug Node. The Debug Node is a plugin for SophiaTX that allows realtime local modification of the chain state in a way that mimicks real world behaviors without corrupting a localally saved blockchain or propogating changes to the live chain. @@ -19,18 +19,18 @@ is a higher level language that many amateur and skilled programmers use. There been community development of Python libraries to make interfacing with a live node easier. This plugin closes the gap by allowing a node to be launched programmatically in Python in addition to interfacing with the node. This module utilizes community member Xeroc's -[Python Steem library](https://github.com/xeroc/python-steemlib). +[Python SophiaTX library](https://github.com/xeroc/python-sophiatxlib). How Do I Use This? ------------------ First of all, you need to install the module. Navigate to `tests/external_testing_scripts` and run `python3 setup.py install` -To use the script include `from steemdebugnode import DebugNode` +To use the script include `from sophiatxdebugnode import DebugNode` There are a couple of examples already made that you can try modifying yourself. -[debug_hardforks.py](https://github.com/steemit/steem/python_scripts/tests/debug_hardforks.py) +[debug_hardforks.py](https://github.com/SophiaTX/SophiaTX/python_scripts/tests/debug_hardforks.py) This script starts a debug node, replays blocks, schedules a hardfork, and finally generates new blocks after the hardfork. The script also communicates via the general purpose rpc interface in Xeroc's Library to do a simple analysis of the results. In this case it @@ -38,7 +38,7 @@ generates a historgram of block producers to verify the witness scheduling algor properly. The purpose of the script is it verify any given hardfork does not have a bug that could crash the chain entirely. -[debugnode.py](https://github.com/steemit/steem/python_scripts/steemdebugnode/debugnode.py#L212) +[debugnode.py](https://github.com/SophiaTX/SophiaTX/python_scripts/sophiatxdebugnode/debugnode.py#L212) This script is much simpler. It has the same parsing logic, but has much less test logic. All it does is replay the blockchain, periodically printing a status update so the user knows it is still working. The script then hangs so the user can interact with the chain @@ -47,7 +47,7 @@ through RPC calls or the CLI Wallet. What is the important part of these scripts? ``` Python -debug_node = DebugNode( str( steemd ), str( data_dir ) ) +debug_node = DebugNode( str( sophiatxd ), str( data_dir ) ) with debug_node: # Do stuff with blockchain ``` @@ -58,9 +58,9 @@ and establishes the internal rpc connection. The script can then do whatever it When the `with` block ends, the node automatically shutsdown and cleans up. The node uses a system standard temp directory through the standard Python TemporaryDirectory as the working data directory for the running node. The only work your script needs to do is -specify the steemd binary location and a populated data directory. For most configurations -this will be `programs/steemd/steemd` and `witness_node_data_dir` respectively, from the -git root directory for Steem. +specify the sophiatxd binary location and a populated data directory. For most configurations +this will be `programs/sophiatxd/sophiatxd` and `witness_node_data_dir` respectively, from the +git root directory for SophiaTX. TODO/ Long Term Goals --------------------- @@ -75,4 +75,4 @@ the RPC call. Most, if not all, RPC API calls could be programatically generated the C++ source. It would also be a good step forward to introduce a simple testing framework that could be used to start a debug node and then run a series of test cases on a common starting chain state. This would address much of the integration testing that is sorely -needed for Steem. \ No newline at end of file +needed for SophiaTX. diff --git a/doc/api-notes.md b/doc/api-notes.md index 2cc90a38..126c687c 100644 --- a/doc/api-notes.md +++ b/doc/api-notes.md @@ -62,7 +62,7 @@ There are three methods to secure the API: - Limit access to the API socket to a trusted LAN by firewall configuration - Limit access to particular API's with username/password authentication -The Steem developers recommend using the first of these methods to secure the API by binding to localhost, as follows: +The SophiaTX developers recommend using the first of these methods to secure the API by binding to localhost, as follows: rpc-endpoint = 127.0.0.1:8090 @@ -70,7 +70,7 @@ Securing specific API's ----------------------- The problem with securing API's at the network level is that there are deployment scenarios where a node may want to have some API's public, but other API's private. -The `steemd` process includes username/password based authentication to individual API's. +The `sophiatxd` process includes username/password based authentication to individual API's. Since the username/password is sent directly over the wire, you should use a TLS connection when authenticating with username and password. TLS connection can be achieved by one of two methods: diff --git a/doc/building.md b/doc/building.md index 27533b75..fafb2a89 100644 --- a/doc/building.md +++ b/doc/building.md @@ -1,4 +1,4 @@ -# Building Steem +# Building SophiaTX ## Compile-Time Options (cmake) @@ -10,7 +10,7 @@ running tests, it is recommended to build as release. ### LOW_MEMORY_NODE=[OFF/ON] -Builds steemd to be a consensus-only low memory node. Data and fields not +Builds sophiatxd to be a consensus-only low memory node. Data and fields not needed for consensus are not stored in the object database. This option is recommended for witnesses and seed-nodes. @@ -18,9 +18,9 @@ recommended for witnesses and seed-nodes. Clears old votes from memory that are no longer required for consensus. -### BUILD_STEEM_TESTNET=[OFF/ON] +### BUILD_SOPHIATX_TESTNET=[OFF/ON] -Builds steem for use in a private testnet. Also required for building unit tests. +Builds sophiatx for use in a private testnet. Also required for building unit tests. ### SKIP_BY_TX_ID=[OFF/ON] @@ -28,17 +28,9 @@ By default this is off. Enabling will prevent the account history plugin queryin by id, but saving around 65% of CPU time when reindexing. Enabling this option is a huge gain if you do not need this functionality. -## Building under Docker - -We ship a Dockerfile. This builds both common node type binaries. - - git clone https://github.com/steemit/steem - cd steem - docker build -t steemit/steem . - ## Building on Ubuntu 16.04 -For Ubuntu 16.04 users, after installing the right packages with `apt` Steem +For Ubuntu 16.04 users, after installing the right packages with `apt` SophiaTX will build out of the box without further effort: # Required packages @@ -78,56 +70,25 @@ will build out of the box without further effort: libreadline-dev \ perl - git clone https://github.com/steemit/steem - cd steem + git clone https://github.com/SophiaTX/SophiaTX + cd sophiatx git checkout stable git submodule update --init --recursive mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. - make -j$(nproc) steemd + make -j$(nproc) sophiatxd make -j$(nproc) cli_wallet # optional make install # defaults to /usr/local -## Building on Ubuntu 14.04 - -(It is strongly advised to use Ubuntu 16.04 LTS instead) - -Here are the required packages: - - # Required packages - sudo apt-get install -y \ - autoconf \ - cmake3 \ - g++ \ - git \ - libssl-dev \ - libtool \ - make \ - pkg-config \ - doxygen \ - libncurses5-dev \ - libreadline-dev \ - libbz2-dev \ - python-dev \ - perl \ - python3 \ - python3-jinja2 +## Building Boost 1.60 -The Boost provided in the Ubuntu 14.04 package manager (Boost 1.55) is too old. -Steem requires Boost 1.58 (as in Ubuntu 16.04) and works with versions up to 1.60 (including). -So building Steem on Ubuntu 14.04 requires downloading and installing a more recent +SophiaTX requires Boost 1.58 (as in Ubuntu 16.04) and works with versions up to 1.60 (including). +So building SophiaTX on Ubuntu 14.04 requires downloading and installing a more recent version of Boost. -According to [this mailing list -post](http://boost.2283326.n4.nabble.com/1-58-1-bugfix-release-necessary-td4674686.html), -Boost 1.58 is not compatible with gcc 4.8 (the default C++ compiler for -Ubuntu 14.04) when compiling in C++11 mode (which Steem does). -So we will use Boost 1.60. - Here is how to build and install Boost 1.60 into your user's home directory -(make sure you install all the packages above first): export BOOST_ROOT=$HOME/opt/boost_1_60_0 URL='http://sourceforge.net/projects/boost/files/boost/1.60.0/boost_1_60_0.tar.bz2/download' @@ -140,17 +101,6 @@ Here is how to build and install Boost 1.60 into your user's home directory ./bootstrap.sh "--prefix=$BOOST_ROOT" ./b2 install -Then the instructions are the same as for steem: - - git clone https://github.com/steemit/steem - cd steem - git checkout stable - git submodule update --init --recursive - mkdir build && cd build - cmake -DCMAKE_BUILD_TYPE=Release .. - make -j$(nproc) steemd - make -j$(nproc) cli_wallet - ## Building on macOS X Install Xcode and its command line tools by following the instructions here: @@ -169,7 +119,7 @@ Install Homebrew by following the instructions here: http://brew.sh/ brew doctor brew update -### Install steem dependencies: +### Install sophiatx dependencies: brew install \ autoconf \ @@ -184,7 +134,7 @@ Install Homebrew by following the instructions here: http://brew.sh/ pip3 install --user jinja2 Note: brew recently updated to boost 1.61.0, which is not yet supported by -steem. Until then, this will allow you to install boost 1.60.0. +sophiatx. Until then, this will allow you to install boost 1.60.0. *Optional.* To use TCMalloc in LevelDB: @@ -197,8 +147,8 @@ steem. Until then, this will allow you to install boost 1.60.0. ### Clone the Repository - git clone https://github.com/steemit/steem.git - cd steem + git clone https://github.com/SophiaTX/SophiaTX + cd sophiatx ### Compile @@ -212,19 +162,19 @@ steem. Until then, this will allow you to install boost 1.60.0. Also, some useful build targets for `make` are: - steemd + sophiatxd chain_test cli_wallet e.g.: - make -j$(sysctl -n hw.logicalcpu) steemd + make -j$(sysctl -n hw.logicalcpu) sophiatxd -This will only build `steemd`. +This will only build `sophiatxd`. ## Building on Other Platforms -- Windows build instructions do not yet exist. +- Windows build instructions are available here https://github.com/SophiaTX/SophiaTX/wiki/Setting-up-Windows-build-enviroment - The developers normally compile with gcc and clang. These compilers should be well-supported. diff --git a/doc/create-operation.md b/doc/create-operation.md index 0a65ed62..04a66730 100644 --- a/doc/create-operation.md +++ b/doc/create-operation.md @@ -1,10 +1,10 @@ -This is developer documentation for creating brand-new operations on the STEEM blockchain. +This is developer documentation for creating brand-new operations on the SOPHIATX blockchain. - (1) Define `smt_elevate_account_operation` structure in `smt_operations.hpp` - (2) Create `FC_REFLECT` definition for the operation struct. - (3) Implement `validate()` for the operation struct. -- (4) Add operation to `steem::protocol::operation` +- (4) Add operation to `sophiatx::protocol::operation` - (5) Define evaluator for the operation. - (6) Define required authorities for the operation. - (7) Define unit tests for the operation. @@ -68,7 +68,7 @@ checks must go in the evaluator. ## Step 4 -- (4a) The file `operations.hpp` defines the `steem::protocol::operation` +- (4a) The file `operations.hpp` defines the `sophiatx::protocol::operation` type, which is an `fc::static_variant` with a lengthy parameter list. (The `fc::static_variant` implements a [tagged union type](https://en.wikipedia.org/wiki/Tagged_union) which uses @@ -85,7 +85,7 @@ of virtual operations. ## Step 5 -- (5a) You must add `STEEM_DEFINE_EVALUATOR` macro in `evaluator.hpp` to +- (5a) You must add `SOPHIATX_DEFINE_EVALUATOR` macro in `evaluator.hpp` to generate some boilerplate code. The macro is defined `evaluator.hpp`, most of the generated code is support code required by the framework and does not affect the operation itself. @@ -104,7 +104,7 @@ later we will see how to adapt this field to different objects. - (5e) Methods which get objects from the database return `const` references. The most general way to retrieve chain state is with `get< type, index >( index_value )`, for example see the -[implementation](https://github.com/steemit/steem/blob/a0a69b10189d93a9be4da7e7fd9d5358af956e34/libraries/chain/database.cpp#L364) +[implementation](https://github.com/SophiaTX/SophiaTX/blob/a0a69b10189d93a9be4da7e7fd9d5358af956e34/libraries/chain/database.cpp#L364) of `get_account(name)`. - (5f) To modify an object on the database, you must issue `db.modify()`, @@ -152,13 +152,13 @@ to make it available to JSON clients ## Step 9 -- (9a) Add `smt_token_object_type` to `enum object_type` in `steem_objects.hpp` and add +- (9a) Add `smt_token_object_type` to `enum object_type` in `sophiatx_objects.hpp` and add to `FC_REFLECT_ENUM` bubble list at the bottom of that file -- (9b) Declare (but do not define) `class smt_token_object;` in `steem_objects.hpp` -- (9c) Define `typedef oid< smt_token_object > smt_token_id_type` in `steem_objects.hpp` +- (9b) Declare (but do not define) `class smt_token_object;` in `sophiatx_objects.hpp` +- (9c) Define `typedef oid< smt_token_object > smt_token_id_type` in `sophiatx_objects.hpp` - (9d) Create object header file (one header file per object) in `smt_objects` directory. Include the new header from `smt_objects.hpp`. -- (9e) All SMT objects are consensus, and therefore should exist in `steem::chain` namespace +- (9e) All SMT objects are consensus, and therefore should exist in `sophiatx::chain` namespace - (9f) The object class should subclass `object< smt_token_object_type, smt_token_object >` - (9g) The constructor should be defined the same as other object classes, with `Constructor` and `Allocator` template parameters. @@ -181,7 +181,7 @@ will have access to necessary external information (from `database` and the oper and Boost `multi_index_container` docs for more information on the purpose and syntax of this definition. - (9n) Macro -`CHAINBASE_SET_INDEX_TYPE( steem::chain::smt_token_object, steem::chain::smt_token_index )` +`CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::smt_token_object, sophiatx::chain::smt_token_index )` must be invoked. It should be invoked at the global scope (outside any namespace). - (9o) Call `add_core_index< smt_token_index >(*this);` in `database::initialize_indexes()` to register the object type with the database. @@ -191,7 +191,7 @@ register the object type with the database. Step 9 requires some explanation. - (9a) Each object type has an integer ID signifying that object type. These type ID's are -defined by an `enum` in `steem_object_types.hpp`, any new objects must be added here. In SQL +defined by an `enum` in `sophiatx_object_types.hpp`, any new objects must be added here. In SQL terms, if we imagine each *database table* has an integer ID, then `smt_token_object_type` is the ID value that refers to the `smt_token_object` *table*. @@ -200,7 +200,7 @@ variable of ID type, which notes the table the ID refers to. This is implemente `chainbase::oid` class, which takes the class name as a template parameter. To cut down on the number of template invocations needed in typical code (and to ease porting of code first developed with older versions of `chainbase` or its predecessors), a type -alias `typedef oid< smt_token_object > smt_id_type` is added to `steem_object_types.hpp`. +alias `typedef oid< smt_token_object > smt_id_type` is added to `sophiatx_object_types.hpp`. - (9f) The `smt_token_object` class subclasses `chainbase::object< smt_token_object_type, smt_token_object >`. This is the @@ -228,9 +228,9 @@ Examples may be seen with fields `transaction_object::packed_trx`, `comment_obje created will be assigned the next sequentially available object ID. - (9l) Some functionality in `chainbase` requires the `by_id` field. Since `chainbase` -is designed as a reusable library, not tightly coupled to Steem, it contains no reference -to any `steem` namespaces. So the name `by_id` must refer to `chainbase::by_id`. If you -define a `struct by_id;` in the `steem::chain` namespace, the result will be that every +is designed as a reusable library, not tightly coupled to SophiaTX, it contains no reference +to any `sophiatx` namespaces. So the name `by_id` must refer to `chainbase::by_id`. If you +define a `struct by_id;` in the `sophiatx::chain` namespace, the result will be that every index defined later in the compilation unit which references `by_id` without qualification will become an incorrect or ambiguous type reference. The result likely will not function correctly, and may not compile. @@ -249,7 +249,7 @@ definitions. More information about the syntax is available in the Boost docume - (9m) The `by_id` index is used by the `chainbase` infrastructure to implement the undo function. -- (9m) All indexes used in Steem must be `ordered_unique`. In theory, hashed or non-unique +- (9m) All indexes used in SophiaTX must be `ordered_unique`. In theory, hashed or non-unique indexes may be permissible in some situations, and may offer a performance advantage. However, past experience has shown that the undefined iteration order of these indexes is a potential source of state corruption bugs (in practice, iteration order of such an diff --git a/doc/debug_node_plugin.md b/doc/debug_node_plugin.md index 32b91dc6..d83382b7 100644 --- a/doc/debug_node_plugin.md +++ b/doc/debug_node_plugin.md @@ -18,18 +18,18 @@ performing (simulated) actions with that account. Why this isn't unsafe --------------------- -Anyone (even you!) can edit their account to contain 1 million STEEM. It's really +Anyone (even you!) can edit their account to contain 1 million SOPHIATX. It's really impossible for the developers to physically stop you from editing the memory/disk of your own computer to make your local node think any account balance is any amount, so you can "give" -yourself 1 million STEEM. Just like it's really impossible for your bank to physically stop +yourself 1 million SOPHIATX. Just like it's really impossible for your bank to physically stop you from writing any numbers you'd like when balancing your checkbook, so you can "give" yourself 1 million dollars. But you have no way to control what other nodes do (or what your bank's clerks and computer systems do). They do their own bookkeeping and keep track of what your real balance is (without all -the fake STEEM or fake dollars you "gave" yourself). So you can believe whatever you want +the fake SOPHIATX or fake dollars you "gave" yourself). So you can believe whatever you want about your balance and rewrite the rules of your own bookkeeping system to show you whatever balance you -want to be shown, but as soon as you try to actually spend STEEM (or dollars) that you don't actually have, +want to be shown, but as soon as you try to actually spend SOPHIATX (or dollars) that you don't actually have, you'll be stopped because every other node on the network is a system you don't control that's keeping the books properly (without all your edits to give yourself extra funds), and they do their own verification of every transaction and will suppress any that doesn't have sufficient balance and a proper cryptographic @@ -73,7 +73,7 @@ The API's configured with `public-api` are assigned numbers starting at zero. S API number 2 (TODO: Explain about resolving names to API's and get it working). The API provides the following methods -(see `libraries/plugins/debug_node/include/steem/plugins/debug_node/debug_node_api.hpp` +(see `libraries/plugins/debug_node/include/sophiatx/plugins/debug_node/debug_node_api.hpp` for these definitions): void debug_push_blocks( std::string src_filename, uint32_t count ); @@ -82,7 +82,7 @@ for these definitions): void debug_stream_json_objects( std::string filename ); void debug_stream_json_objects_flush(); -Okay, let's run `steemd`. It should start immediately with no blocks. We can ask it to read blocks from the directory we saved earlier: +Okay, let's run `sophiatxd`. It should start immediately with no blocks. We can ask it to read blocks from the directory we saved earlier: curl --data '{"jsonrpc": "2.0", "method": "call", "params": [2,"debug_push_blocks",["/mydir/myblocks", 1000]], "id": 1}' http://127.0.0.1:8090/rpc @@ -113,7 +113,7 @@ which demonstrates the witness keys have been reset and the head block number ha If we want to take control of an account we can do so by editing its key with `debug_update_object` command like this: - curl --data '{"jsonrpc": "2.0", "method": "call", "params": [0,"lookup_account_names",[["steemit"]]], "id": 8}' http://127.0.0.1:8090/rpc # find out ID of account we want is 2.2.28 + curl --data '{"jsonrpc": "2.0", "method": "call", "params": [0,"lookup_account_names",[["sophiatx"]]], "id": 8}' http://127.0.0.1:8090/rpc # find out ID of account we want is 2.2.28 curl --data '{"jsonrpc": "2.0", "method": "call", "params": [2,"debug_update_object",[{"_action":"update","id":"2.2.28","active":{"weight_threshold":1,"key_auths":[["STM6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",1]]}}]], "id": 9}]' http://127.0.0.1:8090/rpc Now that we've reset its key, we can take control of it in the wallet: @@ -122,9 +122,9 @@ Now that we've reset its key, we can take control of it in the wallet: unlock abc import_key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 list_my_accounts - transfer steemit dantheman "1.234 STEEM" "make -j100 money" true + transfer sophiatx dantheman "1.234 SOPHIATX" "make -j100 money" true list_my_accounts - get_account_history steemit -1 1000 + get_account_history sophiatx -1 1000 (For some unknown reason, the current version of the wallet hangs after the transfer command -- why?) diff --git a/doc/example_config.ini b/doc/example_config.ini index f9f7f8d1..a0425bec 100644 --- a/doc/example_config.ini +++ b/doc/example_config.ini @@ -83,7 +83,7 @@ track-account-range = ["exchange_account", "exchange_account"] # WIF PRIVATE KEY to be used by one or more witnesses or miners # private-key = -# Account creation fee to be voted on upon successful POW - Minimum fee is 100.000 STEEM (written as 100000) +# Account creation fee to be voted on upon successful POW - Minimum fee is 100.000 SOPHIATX (written as 100000) # miner-account-creation-fee = # Maximum block size (in bytes) to be voted on upon successful POW - Max block size must be between 128 KB and 750 MB diff --git a/doc/exchangequickstart.md b/doc/exchangequickstart.md deleted file mode 100644 index 857c5077..00000000 --- a/doc/exchangequickstart.md +++ /dev/null @@ -1,95 +0,0 @@ -Exchange Quickstart -------------------- - -System Requirements: A dedicated server or virtual machine with a minimum of 16GB of RAM, and at least 50GB of fast local SSD storage. STEEM is one of the most active blockchains in the world and handles an incredibly large amount of transactions per second, as such, it requires fast storage to run efficiently. - -We recommend using docker to both build and run STEEM for exchanges. Docker is the world's leading containerization platform and using it guarantees that your build and run environment is identical to what our developers use. You can still build from source and you can keep both blockchain data and wallet data outside of the docker container. The instructions below will show you how to do this in just a few easy steps. - -### Install docker and git (if not already installed) - -On Ubuntu 16.04+: -``` -apt-get update && apt-get install git docker.io -y -``` - -On other distributions you can install docker with the native package manager or with the script from get.docker.com: -``` -curl -fsSL get.docker.com -o get-docker.sh -sh get-docker.sh -``` - -### Clone the steem repo - -Pull in the steem repo from the official source on github and then change into the directory that's created for it. -``` -git clone https://github.com/steemit/steem -cd steem -``` - -### Build the image from source with docker - -Docker isn't just for downloading already built images, it can be used to build from source the same way you would otherwise build. By doing this you ensure that your build environment is identical to what we use to develop the software. Use the below command to start the build: - -``` -docker build -t=steemit/steem . -``` - -Don't forget the `.` at the end of the line which indicates the build target is in the current directory. - -This will build everything including running our full suite of tests during the build process. It will anywhere from thirty minutes to a couple hours depending on how fast your equipment is. - -When the build completes you will see a message indicating that it is 'successfully built'. - -### Using our official Docker images without building from source - -If you'd like to use our already pre-built official binary images, it's as simple as downloading it from the Dockerhub registry with only one command: - -``` -docker pull steemit/steem -``` - -### Running a binary build without a Docker container - -If you build with Docker but do not want to run steemd from within a docker container, you can stop here with this step and instead extract the binary from the container with the commands below. If you are going to run steemd with docker (recommended method), skip this step altogether. We're simply providing an option for everyone's use-case. Our binaries are built mostly static, only dynamically linking to linux kernel libraries. We have tested and confirmed binaries built in Docker work on Ubuntu and Fedora and will likely work on many other Linux distrubutions. Building the image yourself or pulling one of our pre-built images both work. - -To extract the binary you need to start a container and then copy the file from it. - -``` -docker run -d --name steemd-exchange steemit/steem -docker cp steemd-exchange:/usr/local/steemd-default/bin/steemd /local/path/to/steemd -docker cp steemd-exchange:/usr/local/steemd-default/bin/cli_wallet /local/path/to/cli_wallet -docker stop steemd-exchange -``` - -For your convenience, we have provided a provided an [example\_config](example\_config.ini) that we expect should be sufficient to run your exchange node. Be sure to rename it to simply `config.ini`. - -### Create directories to store blockchain and wallet data outside of Docker - -For re-usability, you can create directories to store blockchain and wallet data and easily link them inside your docker container. - -``` -mkdir blockchain -mkdir steemwallet -``` - -### Run the container - -The below command will start a daemonized instance opening ports for p2p and RPC while linking the directories we created for blockchain and wallet data inside the container. Fill in `TRACK_ACCOUNT` with the name of your exchange account that you want to follow. The `-v` flags are how you map directories outside of the container to the inside, you list the path to the directories you created earlier before the `:` for each `-v` flag. The restart policy ensures that the container will automatically restart even if your system is restarted. - -``` -docker run -d --name steemd-exchange --env TRACK_ACCOUNT=nameofaccount -p 2001:2001 -p 8090:8090 -v /path/to/steemwallet:/var/steemwallet -v /path/to/blockchain:/var/lib/steemd/blockchain --restart always steemit/steem -``` - -You can see that the container is running with the `docker ps` command. - -To follow along with the logs, use `docker logs -f`. - -Initial syncing will take between 6 and 48 hours depending on your equipment, faster storage devices will take less time and be more efficient. Subsequent restarts will not take as long. - -### Running the cli_wallet - -The command below will run the cli_wallet from inside the running container while mapping the `wallet.json` to the directory you created for it on the host. - -``` -docker exec -it steemd-exchange /usr/local/steemd-default/bin/cli_wallet -w /var/steemwallet/wallet.json -``` diff --git a/doc/plugin.md b/doc/plugin.md index e7e4d530..2bf6054d 100644 --- a/doc/plugin.md +++ b/doc/plugin.md @@ -2,7 +2,7 @@ How plugins work ---------------- -All plugins in the `libraries/plugins` directory are iterated over by `CMakeLists.txt`. The manifest directory iterates through all plugins, adding them to the `steem_plugins` build target. Any other build target wanting to access all plugins +All plugins in the `libraries/plugins` directory are iterated over by `CMakeLists.txt`. The manifest directory iterates through all plugins, adding them to the `sophiatx_plugins` build target. Any other build target wanting to access all plugins available at build time should link to this target. There is a plugin in `example_plugins` called `example_api_plugin` which is a working example of adding a custom API call. @@ -11,7 +11,7 @@ Registering plugins ------------------- - Plugins are enabled with the `plugins` config file option. -- By default, steemd runs the `chain`, `p2p`, and `webserver` plugins. +- By default, sophiatxd runs the `chain`, `p2p`, and `webserver` plugins. - Some plugins may keep records in the database (such as `account_history`). If you change whether such a plugin is disabled/enabled, you should also replay the chain. Detecting this situation and automatically replaying when needed will be implemented in a future release. - To make an API visible, include the associated plugin in the `plugins` config file option. Only APIs explicitly made available through the config will be registered. diff --git a/doc/quickstart.md b/doc/quickstart.md deleted file mode 100644 index 4cb8b92b..00000000 --- a/doc/quickstart.md +++ /dev/null @@ -1,71 +0,0 @@ -Quickstart ----------- - -### Get current steemd -Use docker: -``` -docker run \ - -d -p 2001:2001 -p 8090:8090 --name steemd-default \ - --restart unless-stopped steemit/steem -``` -#### Low memory node? -Above runs low memory node, which is suitable for: -- seed nodes -- witness nodes -- exchanges, etc. -For full api node use: - -``` -docker run \ - --env USE_WAY_TOO_MUCH_RAM=1 --env USE_FULL_WEB_NODE=1 \ - -d -p 2001:2001 -p 8090:8090 --name steemd-full \ - --restart unless-stopped \ - steemit/steem -``` -### Configure for your use case -#### Full API node -You need to use `USE_WAY_TOO_MUCH_RAM=1` and `USE_FULL_WEB_NODE=1` as stated above. -You can Use `contrib/fullnode.config.ini` as a base for your `config.ini` file. - -#### Exchanges -Use low memory node. - -Also make sure that your `config.ini` contains: -``` -enable-plugin = account_history -public-api = database_api login_api -track-account-range = ["yourexchangeid", "yourexchangeid"] -``` -Do not add other APIs or plugins unless you know what you are doing. - -This configuration exists in Docker with the following command - -``` -docker run -d --env TRACK_ACCOUNT="yourexchangeid" \ - --name steemd \ - --restart unless-stopped \ - steemit/steem -``` - -### Resources usage - -Please make sure that you have enough resources available. -Check `shared-file-size =` in your `config.ini` to reflect your needs. -Set it to at least 25% more than current size. - -Provided values are expected to grow significantly over time. - -Blockchain data takes over **16GB** of storage space. - -#### Full node -Shared memory file for full node uses over **65GB** - -#### Exchange node -Shared memory file for exchange node users over **16GB** -(tracked history for single account) - -#### Seed node -Shared memory file for seed node uses over **5.5GB** - -#### Other use cases -Shared memory file size varies, depends on your specific configuration but it is expected to be somewhere between "seed node" and "full node" usage. diff --git a/doc/quickstartguide.md b/doc/quickstartguide.md new file mode 100644 index 00000000..2cba1836 --- /dev/null +++ b/doc/quickstartguide.md @@ -0,0 +1,208 @@ +Quickstart Guide +------------------- + +### Pre-requisites + +* A sufficient-sized and secure machine (Physical, VM or in the Cloud) with any NIX system (SUSE, openSUSE, Redhat, Ubuntu, Debian,etc.) pre-installed on it +* System requirements: + * CPU: min. 2 cores + * RAM: min. 4 GB + * Disk space – > 50GB (blockchain and OS) + * Disk Partitions + Recommended to create dedicated partition for storing blockchain database (data); sizing to be adjusted according to the size of the actual blockchain (e.g. 50 GB could be sufficient for 1 year at the time when SophiaTX MainNet was launched) + + for other partitions, setup and sizing, follow the best practice for NIX system installation + + * Network – the network should be reliable and fast (high speed connection with low latency), and the machine accessible via public IP + * 2 x 1Gb >= Network adapter (second Network Interface Card (NIC) as a standby or failover interface in case the primary NIC fails. Can also be used for load balancing) + + * The following are the port(s) to be opened for incoming traffic or connections: + #### MANDATORY PORT + 60000 (default port nr. for P2P endpoint blockchain nodes communication) + + `p2p-endpoint = 0.0.0.0:60000` + + #### OPTIONAL PORTS + 9193 (default port nr. for Local http endpoint for webserver requests) + + `webserver-http-endpoint = a.b.c.d:9193` + + 9191 (default port for Local web-socket endpoint for webserver requests) + + ` webserver-ws-endpoint = a.b.c.d:9191` + + There is no need to keep these 2 ports (http & ws) open on the witness node. + + For any testing purposes on the witness node, restrict the usage of http & ws ports for a limited time period and only to locahost = 127.0.0.1 or to a dedicated host IP – a.b.c.d. The setting to 0.0.0.0 is not recommended and to be avoided. Restrict accepting incoming http or ws requests to only specific IP or net. For net - define network as a.b.0.0 / for dedicated IP as a.b.c.d. + + All ports are configurable and can be subject to adjustment, either in the config.ini file or added as a parameter(s) upon the starting of sophiatxd deamon. + + Example of configuration of the network parameters (IP & Ports) in config.ini: + + #### The local IP address and port to listen for incoming connections. + + `p2p-endpoint = 154.32.0.0:61234 ` + + #### Local http endpoint for webserver requests. + + `webserver-http-endpoint = 127.0.0.1:1193` + + #### Local websocket endpoint for webserver requests. + + `webserver-ws-endpoint = 127.0.0.1:2291` + + Example to start sophiatxd with adjusted network parameters: + + ```./sophiatxd -d /sphtxBCdata --p2p-endpoint 154.32.0.0:61234 --webserver-http-endpoint 127.0.0.1:1193 --webserver-ws-endpoint 127.0.0.1:2291``` + +### Dedicated Operating System account to run blockchain applications + There is no urgency to install and run blockchain applications (daemon, wallet, …) under privileged account as a root. + + In general, as your own user account, programs you run are restricted from writing to the rest of the system – they can only write to your “home” folder. You cannot modify system files without gaining root permissions first. This helps keep your computer secure. + + To fulfil this requirement, it is recommended to create a dedicated user and group on NIX system + + * Group: sphtxgrp + * Account: sphtxamd + + __!!! You must gain sufficient privileges (e.g. as a root user or you can also prefix the following commands with the sudo command to run them as a non-privileged user to create a group and an account!!!__ + + CLI commands to add group and account. The basic syntax of the command to Create/Add a new Group. As a root user you will type and run this command from command line. + + `# groupadd sphtxgrp ` + + or as a john user you will type and run this command from command line. + + `john@EUGREEN02:~> sudo groupadd sphtxgrp` + + In the next steps follow the same principle for running the commands either as a root user or as any other OS user by using the sudo command + The basic syntax of the command to Create/Add a new User with Specific Home Directory, Default Shell and Custom Comment from command line: + + `# useradd -m -g sphtxgrp -d /home/sphtxadm -s /bin/bash -c "SophiaTX Blockchain Owner" sphtxadm` + + To set password for user sphtxamd + + `# passwd sphtxadm ` + + There are many other possibilities how to create users and groups in the NIX system – just follow NIX documentation / best praxis. + +## Install SophiaTX blockchain + +To store blockchain data, it is suggested to create and have mounted a supplemental dedicated partition/file system. Subject of pre-requisites. Create subdirectory sphtxBCdata in the / directory and adjust ownership & permissions to user sphtxadm. +``` +# mkdir /sphtxBCdata +# chown sphtxadm:sphtxgrp /sphtxBCdata +``` +Make sure that dedicated partition and file system for blockdata is mounted under previously created directory sphtxBCdata. Don’t forget to adjust /etc/fstab accordingly in order to avoid problems after rebooting the OS. +To validate that a dedicated partition is mounted under /sphtxBCdata, launch the mount command. +``` +# mount +sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) +proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) +devtmpfs on /dev type devtmpfs (rw,nosuid,size=2011880k,nr_inodes=502970,mode=755) +securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) +tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,size=8388608k) +devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) +tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755) +/dev/sda2 on /sphtxBCdata type xfs (rw,relatime,attr2,inode64,noquota) +``` + +If no record about /sphtxBCdata is found in the output, then you have to mount the partition as follows: +In case there exists sdb2 partition issue the following command from command line + +`# mount /dev/sdb2 /sphtxBCdata ` + +There are many other options on how to check and mount the file system under specific directory and make sure it will be mounted automatically after the reboot. Just follow NIX documentation / best praxis. + +The following commands to be executed as a sphtxadm user. You may log in as sphtxadm user, or switch to sphtxadm user by issuing of the following command: + +`# su - sphtxadm` + +Create and change to subdirectory sphtxd in home directory of sphtxadm user + +``` +sphtxadm@EUGREEN02:~> mkdir sphtxd +sphtxadm@EUGREEN02:~> cd sphtxd +``` +Go & Download the latest version of sophiatx binary and config files from the GitHub repository https://github.com/SophiaTX/SophiaTX/releases + +#### Unpack downloaded sophiatx.tar.gz file +``` +sphtxadm@EUGREEN02:~/sphtxd> tar -xvf sophiatx.tar.gz +alexandria_deamon +cli_wallet +sophiatxd +witness_config.ini +fullnode_config.ini +``` +If required, adjust witness_config.ini and get it copied as config.ini into the blockchain data directory. Make sure that ownership and privileges of the config file are set accordingly. + +``` +sphtxadm@EUGREEN02:~/sphtxd> chmod 600 ./witness_config.ini +sphtxadm@EUGREEN02:~/sphtxd> chown sphtxadm:sphtxgp ./witness_config.ini +sphtxadm@EUGREEN02:~/sphtxd> ls -l ./witness_config.ini +-rw------- 1 sphatxdm sphtxgrp 5671 Jul 25 17:26 witness_config.ini +``` +There might be a few reasons to update the config.ini file. Adjust witness private key and name of witness controlled by node +``` +witness = “” +private-key = +``` +Example + +``` +witness = "I889UHminer" +private-key = 5IJY3b9FgfsGtxMeLkLqXzUrQDMAsqSyAZDnMBkg7PDDRhQgaV +``` +Adjust a list of plugins +#### Mandatory plugin(s) – required to run witness node + +`plugin = witness` + +#### Optional plugin(s) – NOT required to run witness node + +``` +#plugin = block_api +#plugin = network_broadcast_api +#plugin = database_api +#plugin = condenser_api +#plugin = account_history +#plugin = account_history_api +#plugin = account_by_key +#plugin = chain_api +#plugin = custom_api +``` +Adjust a default port number for P2P endpoint blockchain nodes communication + +`p2p-endpoint = 0.0.0.0:60000` + +Make sure that "enable-stale-production" is set on true + +`enable-stale-production = true` + +Copy witness_config.ini into config.ini in the blockchain data directory + +`sphtxadm@EUGREEN02:~/sphtxd> cp ./witness_config.ini /sphtxBCdata/config.ini` + + +__To run SophiaTX Witness node and produce blocks (meaning being eligible to validate the transactions embedded in the blocks) you need to be one of the elected SophiaTX witnesses__ + +#### Run SophiaTX Witness + +There are two options to launch and run the SophiaTX witness node. When all mandatory parameters have been embedded in config.ini file, you may run the witness node with the following command: + + `sophiatxd -d ` + +Example + +`sphtxadm@EUGREEN02:~/sphtxd> ./sophiatxd -d /sophiaBCdata` + +Parameters to be entered from command line. + +```sophiatxd -d --enable-stale-production true –-witness ‘’ --private-key --plugin witness``` + +Example: + +```sphtxadm@EUGREEN02:~/sphtxd> ./sophiatxd -d /sophiaBCdata --enable-stale-production true --witness '" I889UHminer"' --private-key 5JPwY3bwFgfsGtxMeLkLqXzUrQDMAsqSyAZDnMBkg7PDDRhQgaV --plugin witness``` + + diff --git a/doc/seednodes.txt b/doc/seednodes.txt index 6025a603..d205f8c6 100644 --- a/doc/seednodes.txt +++ b/doc/seednodes.txt @@ -1,36 +1,6 @@ -seed-east.steemit.com:2001 # steemit -seed-central.steemit.com:2001 # steemit -seed-west.steemit.com:2001 # steemit -steem-seed1.abit-more.com:2001 # abit -52.74.152.79:2001 # smooth.witness -seed.steemd.com:34191 # roadscape -anyx.co:2001 # anyx -seed.xeldal.com:12150 # xeldal -seed.steemnodes.com:2001 # wackou -seed.liondani.com:2016 # liondani -gtg.steem.house:2001 # gtg -seed.jesta.us:2001 # jesta -steemd.pharesim.me:2001 # pharesim -5.9.18.213:2001 # pfunk -lafonasteem.com:2001 # lafona -seed.rossco99.com:2001 # rossco99 -steem-seed.altcap.io:40696 # ihashfury -seed.roelandp.nl:2001 # roelandp -steem.global:2001 # klye -seed.esteem.ws:2001 # good-karma -94.23.33.61:2001 # timcliff -104.199.118.92:2001 # clayop -192.99.4.226:2001 # dele-puppy -seed.bhuz.info:2001 # bhuz -seed.steemviz.com:2001 # ausbitbank -steem-seed.lukestokes.info:2001 # lukestokes -seed.blackrift.net:2001 # drakos -seed.followbtcnews.com:2001 # followbtcnews -node.mahdiyari.info:2001 # mahdi.yari -seed.jerrybanfield.com:2001 # jerrybanfield -seed.windforce.farm:2001 # windforce -seed.curiesteem.com:2001 # curie -seed.riversteem.com:2001 # riverhead -steem-seed.furion.me:2001 # furion -148.251.237.104:2001 # steem-bounty -seed1.blockbrothers.io:2001 # blockbrothers +seednode1.sophiatx.com:60000 +seednode2.sophiatx.com:60000 +seednode3.sophiatx.com:60000 +seednode4.sophiatx.com:60000 +seednode5.sophiatx.com:60000 +seednode6.sophiatx.com:60000 diff --git a/doc/sqrt.md b/doc/sqrt.md deleted file mode 100644 index 3c09242d..00000000 --- a/doc/sqrt.md +++ /dev/null @@ -1,128 +0,0 @@ - -# Introduction - -In this document we derive the approximate integer square root function used by Steem for the curation curve -[here](https://github.com/steemit/steem/issues/1052). - -# MSB function - -Let function `msb(x)` be defined as follows for `x >= 1`: - -- (Definition 1a) `msb(x)` is the index of the most-significant 1 bit in the binary representation of `x` - -The following definitions are equivalent to Definition (1a): - -- (Definition 1b) `msb(x)` is the length of the binary representation of `x` as a string of bits, minus one -- (Definition 1c) `msb(x)` is the greatest integer such that `2 ^ msb(x) <= x` -- (Definition 1d) `msb(x) = floor(log_2(x))` - -Many CPU's (including Intel CPU's since the Intel 386) can compute the `msb()` function very quickly on -machine-word-size integers with a special instruction directly implemented in hardware. In C++, the -Boost library provides reasonably compiler-independent, hardware-independent access to this -functionality with `boost::multiprecision::detail::find_msb(x)`. - -# Approximate logarithms - -According to Definition 1d, `msb(x)` is already a (somewhat crude) approximate base-2 logarithm. The -bits below the most-significant bit provide the fractional part of the linear interpolation. The -fractional part is called the *mantissa* and the integer part is called the *exponent*; effectively we -have re-invented the floating-point representation. - -Here are some Python functions to convert to/from these approximate logarithms: - -``` -def to_log(x, wordsize=32, ebits=5): - if x <= 1: - return x - # mantissa_bits, mantissa_mask are independent of x - mantissa_bits = wordsize - ebits - mantissa_mask = (1 << mantissa_bits)-1 - - msb = x.bit_length() - 1 - mantissa_shift = mantissa_bits - msb - y = (msb << mantissa_bits) | ((x << mantissa_shift) & mantissa_mask) - return y - -def from_log(y, wordsize=32, ebits=5): - if y <= 1: - return y - # mantissa_bits, leading_1, mantissa_mask are independent of x - mantissa_bits = wordsize - ebits - leading_1 = 1 << mantissa_bits - mantissa_mask = leading_1 - 1 - - msb = y >> mantissa_bits - mantissa_shift = mantissa_bits - msb - y = (leading_1 | (y & mantissa_mask)) >> mantissa_shift - return y -``` - -# Approximate square roots - -To construct an approximate square root algorithm, start from the identity `log(sqrt(x)) = log(x) / 2`. -We can easily obtain `sqrt(x) ~ from_log(to_log(x) >> 1)`. We can proceed by manual inlining the inner -function call: - -``` -def approx_sqrt_v0(x, wordsize=32, ebits=5): - if x <= 1: - return x - # mantissa_bits, leading_1, mantissa_mask are independent of x - mantissa_bits = wordsize - ebits - leading_1 = 1 << mantissa_bits - mantissa_mask = leading_1 - 1 - - msb_x = x.bit_length() - 1 - mantissa_shift_x = mantissa_bits - msb_x - to_log_x = (msb_x << mantissa_bits) | ((x << mantissa_shift_x) & mantissa_mask) - - z = to_log_x >> 1 - - msb_z = z >> mantissa_bits - mantissa_shift_z = mantissa_bits - msb_z - result = (leading_1 | (z & mantissa_mask)) >> mantissa_shift_z - return result -``` - -# Optimized approximate square roots - -First, consider the following simplifications: - -- The exponent part of `z`, denoted here `msb_z`, is simply `msb_x >> 1` -- The MSB of the mantissa part of `z` is the low bit of `msb_x` -- The lower bits of the mantissa part of `z` are simply the bits of the mantissa part of `x` shifted once - -The above simplifications enable a more fundamental improvement: We can compute -the mantissa and exponent of `z` directly from `x` and `msb_x`. Therefore, packing -the intermediate result into `to_log_x` and then immediately unpacking it, effectively -becomes a no-op and can be omitted. This makes the `wordsize` and `ebits` variables fall -out. Making choices for these parameters and allocating extra space at the top of the word -for exponent bits becomes completely unnecessary! - -One subtlety is that the two shift operators result in a net shift of mantissa bits. The -are shifted left by `mantissa_bits - msb_x` and then shifted right by `mantissa_bits - msb_z`. The -net shift is therefore a right-shift of `msb_x - msb_z`. - -The final code looks like this: - -``` -def approx_sqrt_v1(x): - if x <= 1: - return x - # mantissa_bits, leading_1, mantissa_mask are independent of x - msb_x = x.bit_length() - 1 - msb_z = msb_x >> 1 - msb_x_bit = 1 << msb_x - msb_z_bit = 1 << msb_z - mantissa_mask = msb_x_bit-1 - - mantissa_x = x & mantissa_mask - if (msb_x & 1) != 0: - mantissa_z_hi = msb_z_bit - else: - mantissa_z_hi = 0 - mantissa_z_lo = mantissa_x >> (msb_x - msb_z) - mantissa_z = (mantissa_z_hi | mantissa_z_lo) >> 1 - result = msb_z_bit | mantissa_z - return result -``` diff --git a/doc/testing.md b/doc/testing.md index 1d1eff85..589c6eac 100644 --- a/doc/testing.md +++ b/doc/testing.md @@ -8,8 +8,8 @@ Tests are broken in several categories: basic_tests // Tests of "basic" functionality block_tests // Tests of the block chain live_tests // Tests on live chain data (currently only past hardfork testing) -operation_tests // Unit Tests of Steem operations -operation_time_tests // Tests of Steem operations that include a time based component (ex. vesting withdrawals) +operation_tests // Unit Tests of SophiaTX operations +operation_time_tests // Tests of SophiaTX operations that include a time based component (ex. vesting withdrawals) serialization_tests // Tests related of serialization ``` @@ -18,7 +18,7 @@ serialization_tests // Tests related of serialization If you have not done so, install lcov `brew install lcov` ``` -cmake -D BUILD_STEEM_TESTNET=ON -D ENABLE_COVERAGE_TESTING=true -D CMAKE_BUILD_TYPE=Debug . +cmake -D BUILD_SOPHIATX_TESTNET=ON -D ENABLE_COVERAGE_TESTING=true -D CMAKE_BUILD_TYPE=Debug . make lcov --capture --initial --directory . --output-file base.info --no-external tests/chain_test diff --git a/example_plugins/example_api_plugin/CMakeLists.txt b/example_plugins/example_api_plugin/CMakeLists.txt index 8949ab6f..afffb9ce 100644 --- a/example_plugins/example_api_plugin/CMakeLists.txt +++ b/example_plugins/example_api_plugin/CMakeLists.txt @@ -1,10 +1,10 @@ -file(GLOB HEADERS "include/steem/plugins/example_api_plugin/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/example_api_plugin/*.hpp") add_library( example_api_plugin ${HEADERS} example_api_plugin.cpp ) -target_link_libraries( example_api_plugin appbase steem_chain fc ) +target_link_libraries( example_api_plugin appbase sophiatx_chain fc ) target_include_directories( example_api_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) diff --git a/example_plugins/example_api_plugin/example_api_plugin.cpp b/example_plugins/example_api_plugin/example_api_plugin.cpp index 8eeae9e7..ac2245d6 100644 --- a/example_plugins/example_api_plugin/example_api_plugin.cpp +++ b/example_plugins/example_api_plugin/example_api_plugin.cpp @@ -1,11 +1,11 @@ #pragma once #include -#include +#include -#define STEEM_EXAMPLE_API_PLUGIN_NAME "example_api" +#define SOPHIATX_EXAMPLE_API_PLUGIN_NAME "example_api" -namespace steem { namespace example_api_plugin { +namespace sophiatx { namespace example_api_plugin { using namespace appbase; @@ -42,7 +42,7 @@ namespace steem { namespace example_api_plugin { APPBASE_PLUGIN_REQUIRES( (plugins::json_rpc::json_rpc_plugin) ); // This static method is a required by the appbase::plugin template - static const std::string& name() { static std::string name = STEEM_EXAMPLE_API_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_EXAMPLE_API_PLUGIN_NAME; return name; } // Specify any config options here virtual void set_program_options( options_description&, options_description& ) override {} @@ -82,9 +82,9 @@ namespace steem { namespace example_api_plugin { return echo_return{ args.call }; } -} } // steem::example_api_plugin +} } // sophiatx::example_api_plugin // Args and return types need to be reflected. hello_world_args does not because it is a typedef of a reflected type -FC_REFLECT( steem::example_api_plugin::hello_world_return, (message) ) -FC_REFLECT( steem::example_api_plugin::echo_args, (call) ) -FC_REFLECT( steem::example_api_plugin::echo_return, (response) ) +FC_REFLECT( sophiatx::example_api_plugin::hello_world_return, (message) ) +FC_REFLECT( sophiatx::example_api_plugin::echo_args, (call) ) +FC_REFLECT( sophiatx::example_api_plugin::echo_return, (response) ) diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt index e7d2caf3..adf54adf 100644 --- a/libraries/CMakeLists.txt +++ b/libraries/CMakeLists.txt @@ -3,9 +3,11 @@ add_subdirectory( schema ) add_subdirectory( appbase ) add_subdirectory( chainbase ) add_subdirectory( chain ) +add_subdirectory( egenesis ) add_subdirectory( protocol ) add_subdirectory( net ) add_subdirectory( utilities ) add_subdirectory( plugins ) add_subdirectory( manifest ) add_subdirectory( wallet ) +add_subdirectory( alexandria ) diff --git a/libraries/alexandria/CMakeLists.txt b/libraries/alexandria/CMakeLists.txt new file mode 100644 index 00000000..fb01f0ef --- /dev/null +++ b/libraries/alexandria/CMakeLists.txt @@ -0,0 +1,62 @@ +file(GLOB HEADERS "include/sophiatx/alexandria/*.hpp") + +find_package( Perl ) +find_package( Doxygen ) + +if( PERL_FOUND AND DOXYGEN_FOUND AND NOT "${CMAKE_GENERATOR}" STREQUAL "Ninja" ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile ) + add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doxygen/perlmod/DoxyDocs.pm + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${DOXYGEN_EXECUTABLE} + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile ${CMAKE_CURRENT_SOURCE_DIR}/include/sophiatx/alexandria/lib_alexandria.hpp ) + + if(WIN32) + add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp + COMMAND set PERLLIB=${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_api_documentation.pl ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp.new + + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp.new ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp + COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp.new + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generate_api_documentation.pl ${CMAKE_CURRENT_BINARY_DIR}/doxygen/perlmod/DoxyDocs.pm ) + else() + add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp + COMMAND PERLLIB=${CMAKE_CURRENT_BINARY_DIR} ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_api_documentation.pl ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp.new + + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp.new ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp + COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp.new + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generate_api_documentation.pl ${CMAKE_CURRENT_BINARY_DIR}/doxygen/perlmod/DoxyDocs.pm ) + endif() + +else() +# # no perl and doxygen, generate the best docs we can at runtime from reflection + add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/api_documentation_standin.cpp ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/api_documentation_standin.cpp ) +endif() + +add_library( lib_alexandria lib_alexandria.cpp remote_node_api.cpp ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp ${HEADERS} ) +target_link_libraries( lib_alexandria PRIVATE graphene_net sophiatx_chain sophiatx_protocol sophiatx_utilities fc condenser_api_plugin ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) +target_include_directories( lib_alexandria PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) +if (USE_PCH) + cotire(lib_alexandria) +endif(USE_PCH) + +if( CLANG_TIDY_EXE ) + set_target_properties( + lib_alexandria PROPERTIES + CXX_CLANG_TIDY "${DO_CLANG_TIDY}" + ) +endif( CLANG_TIDY_EXE ) + +if(MSVC) + set_source_files_properties( lib_alexandria.cpp PROPERTIES COMPILE_FLAGS "/bigobj" ) +endif(MSVC) + +install( TARGETS + lib_alexandria + + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) +install( FILES ${HEADERS} DESTINATION "include/sophiatx/alexandria" ) diff --git a/libraries/wallet/Doxyfile b/libraries/alexandria/Doxyfile.in similarity index 99% rename from libraries/wallet/Doxyfile rename to libraries/alexandria/Doxyfile.in index 483a1b7e..9d7a757d 100644 --- a/libraries/wallet/Doxyfile +++ b/libraries/alexandria/Doxyfile.in @@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = "Steem Wallet API" +PROJECT_NAME = "SophiaTX Alexandria API" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version @@ -58,7 +58,7 @@ PROJECT_LOGO = # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = /Users/ejossev/working/steem/libraries/wallet/doxygen +OUTPUT_DIRECTORY = ${CMAKE_CURRENT_BINARY_DIR}/doxygen # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and @@ -758,7 +758,7 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = /Users/ejossev/working/steem/libraries/wallet/include/steem/wallet/wallet.hpp +INPUT = ${CMAKE_CURRENT_SOURCE_DIR}/include/sophiatx/alexandria/lib_alexandria.hpp # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses diff --git a/libraries/alexandria/api_documentation_standin.cpp b/libraries/alexandria/api_documentation_standin.cpp new file mode 100644 index 00000000..6f4c3603 --- /dev/null +++ b/libraries/alexandria/api_documentation_standin.cpp @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2015 Cryptonomex, Inc., and contributors. + * + * The MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#include +#include +#include +#include + +namespace sophiatx { namespace alexandria { + namespace detail { + namespace + { + template + struct types_to_string_list_helper; + + template + struct types_to_string_list_helper + { + std::list operator()() const + { + std::list argsList = types_to_string_list_helper()(); + argsList.push_front(fc::get_typename::type>::name()); + return argsList; + } + }; + + template <> + struct types_to_string_list_helper<> + { + std::list operator()() const + { + return std::list(); + } + }; + + template + std::list types_to_string_list() + { + return types_to_string_list_helper()(); + } + } // end anonymous namespace + + struct help_visitor + { + std::vector method_descriptions; + + template + void operator()( const char* name, std::function& memb ) + { + method_description this_method; + this_method.method_name = name; + std::ostringstream ss; + ss << std::setw(40) << std::left << fc::get_typename::name() << " " << name << "("; + ss << boost::algorithm::join(types_to_string_list(), ", "); + ss << ")\n"; + this_method.brief_description = ss.str(); + method_descriptions.push_back(this_method); + } + }; + } // end namespace detail + + api_documentation::api_documentation() + { + fc::api tmp; + detail::help_visitor visitor; + tmp->visit(visitor); + std::copy(visitor.method_descriptions.begin(), visitor.method_descriptions.end(), + std::inserter(method_descriptions, method_descriptions.end())); + } + +} } // end namespace sophiatx::alexandria diff --git a/libraries/alexandria/generate_api_documentation.pl b/libraries/alexandria/generate_api_documentation.pl new file mode 100755 index 00000000..51d9b3d1 --- /dev/null +++ b/libraries/alexandria/generate_api_documentation.pl @@ -0,0 +1,179 @@ +#! /usr/bin/perl + +use Text::Wrap; +use IO::File; + +require 'doxygen/perlmod/DoxyDocs.pm'; + +my($outputFileName) = @ARGV; +die "usage: $0 output_file_name" unless $outputFileName; +my $outFile = new IO::File($outputFileName, "w") + or die "Error opening output file: $!"; + +my $fileHeader = <<'END'; +/** GENERATED FILE **/ +#include +#include +#include + +namespace sophiatx { namespace alexandria { + namespace detail + { + struct api_method_name_collector_visitor + { + std::set method_names; + + template + void operator()( const char* name, std::function& memb ) + { + method_names.emplace(name); + } + }; + } + + api_documentation::api_documentation() + { +END +$outFile->print($fileHeader); + +for my $class (@{$doxydocs->{classes}}) +{ + if ($class->{name} eq 'sophiatx::alexandria::alexandria_api') + { + for my $member (@{$class->{public_methods}->{members}}) + { + if ($member->{kind} eq 'function') + { + my @params = map { join(' ', cleanupDoxygenType($_->{type}), $_->{declaration_name}) } @{$member->{parameters}}; + my $briefDescription = sprintf("%40s %s(%s)\n", cleanupDoxygenType($member->{type}), $member->{name}, join(', ', @params)); + my $escapedBriefDescription = "\"" . escapeStringForC($briefDescription) . "\""; + my %paramInfo = map { $_->{declaration_name} => { type => $_->{type}} } @{$member->{parameters}}; + my $escapedDetailedDescription = "\"\"\n"; + if ($member->{detailed}->{doc}) + { + my $docString = formatDocComment($member->{detailed}->{doc}, \%paramInfo); + for my $line (split(/\n/, $docString)) + { + $escapedDetailedDescription .= " \"" . escapeStringForC($line . "\n") . "\"\n"; + } + } + my $codeFragment = <<"END"; + { + method_description this_method; + this_method.method_name = "$member->{name}"; + this_method.brief_description = $escapedBriefDescription; + this_method.detailed_description = $escapedDetailedDescription; + method_descriptions.insert(this_method); + } + +END + $outFile->print($codeFragment); + } + } + } +} + +my $fileFooter = <<'END'; + fc::api tmp; + detail::api_method_name_collector_visitor visitor; + tmp->visit(visitor); + for (auto iter = method_descriptions.begin(); iter != method_descriptions.end();) + if (visitor.method_names.find(iter->method_name) == visitor.method_names.end()) + iter = method_descriptions.erase(iter); + else + ++iter; + } + +} } // end namespace sophiatx::alexandria +END +$outFile->print($fileFooter); +$outFile->close(); + +sub cleanupDoxygenType +{ + my($type) = @_; + $type =~ s/< //>/g; + return $type; +} + +sub formatDocComment +{ + my($doc, $paramInfo) = @_; + + my $bodyDocs = ''; + my $paramDocs = ''; + my $returnDocs = ''; + + for (my $i = 0; $i < @{$doc}; ++$i) + { + if ($doc->[$i] eq 'params') + { + $paramDocs .= "Parameters:\n"; + @parametersList = @{$doc->[$i + 1]}; + for my $parameter (@parametersList) + { + my $declname = $parameter->{parameters}->[0]->{name}; + my $decltype = cleanupDoxygenType($paramInfo->{$declname}->{type}); + $paramDocs .= Text::Wrap::fill(' ', ' ', "$declname: " . formatDocComment($parameter->{doc}) . " (type: $decltype)") . "\n"; + } + ++$i; + } + elsif ($doc->[$i]->{return}) + { + $returnDocs .= "Returns\n"; + $returnDocs .= Text::Wrap::fill(' ',' ', formatDocComment($doc->[$i]->{return})) . "\n"; + } + else + { + my $docElement = $doc->[$i]; + if ($docElement->{type} eq 'text' or $docElement->{type} eq 'url') + { + $bodyDocs .= $docElement->{content}; + } + elsif ($docElement->{type} eq 'parbreak') + { + $bodyDocs .= "\n\n"; + } + elsif ($docElement->{type} eq 'style' and $docElement->{style} eq 'code') + { + $bodyDocs .= "'"; + } + } + } + + $bodyDocs =~ s/^\s+|\s+$//g; + $bodyDocs = Text::Wrap::fill('', '', $bodyDocs); + + $paramDocs =~ s/^\s+|\s+$//g; + $returnDocs =~ s/^\s+|\s+$//g; + + my $result = Text::Wrap::fill('', '', $bodyDocs); + $result .= "\n\n" . $paramDocs if $paramDocs; + $result .= "\n\n" . $returnDocs if $returnDocs; + + return $result; +} + +sub escapeCharForCString +{ + my($char) = @_; + return "\\a" if $char eq "\x07"; + return "\\b" if $char eq "\x08"; + return "\\f" if $char eq "\x0c"; + return "\\n" if $char eq "\x0a"; + return "\\r" if $char eq "\x0d"; + return "\\t" if $char eq "\x09"; + return "\\v" if $char eq "\x0b"; + return "\\\"" if $char eq "\x22"; + return "\\\\" if $char eq "\x5c"; + return $char; +} + +sub escapeStringForC +{ + my($str) = @_; + return join('', map { escapeCharForCString($_) } split('', $str)); +} + + diff --git a/libraries/alexandria/include/sophiatx/alexandria/api_documentation.hpp b/libraries/alexandria/include/sophiatx/alexandria/api_documentation.hpp new file mode 100644 index 00000000..c2e53a81 --- /dev/null +++ b/libraries/alexandria/include/sophiatx/alexandria/api_documentation.hpp @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2015 Cryptonomex, Inc., and contributors. + * + * The MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#pragma once + +#include + +#include +#include +#include + +#include + +namespace sophiatx { namespace alexandria { + + struct method_description + { + std::string method_name; + std::string brief_description; + std::string detailed_description; + }; + + class api_documentation + { + typedef boost::multi_index::multi_index_container > > > method_description_set; + method_description_set method_descriptions; + public: + api_documentation(); + std::string get_brief_description(const std::string& method_name) const + { + auto iter = method_descriptions.find(method_name); + if (iter != method_descriptions.end()) + return iter->brief_description; + else + FC_THROW_EXCEPTION(fc::key_not_found_exception, "No entry for method ${name}", ("name", method_name)); + } + std::string get_detailed_description(const std::string& method_name) const + { + auto iter = method_descriptions.find(method_name); + if (iter != method_descriptions.end()) + return iter->detailed_description; + else + FC_THROW_EXCEPTION(fc::key_not_found_exception, "No entry for method ${name}", ("name", method_name)); + } + std::vector get_method_names() const + { + std::vector method_names; + for (const method_description& method_description: method_descriptions) + method_names.emplace_back(method_description.method_name); + return method_names; + } + }; + +} } // end namespace sophiatx::alexandria diff --git a/libraries/alexandria/include/sophiatx/alexandria/lib_alexandria.hpp b/libraries/alexandria/include/sophiatx/alexandria/lib_alexandria.hpp new file mode 100644 index 00000000..43b4cbb0 --- /dev/null +++ b/libraries/alexandria/include/sophiatx/alexandria/lib_alexandria.hpp @@ -0,0 +1,728 @@ +#pragma once + +#include + +#include + +#include +#include +#include +#include +#include + +namespace sophiatx { namespace alexandria { + +using namespace std; + +using namespace sophiatx::utilities; +using namespace sophiatx::protocol; + + +struct brain_key_info +{ + string brain_priv_key; + public_key_type pub_key; + string wif_priv_key; +}; + +struct key_pair +{ + public_key_type pub_key; + string wif_priv_key; +}; + +enum authority_type +{ + owner, + active +}; + +struct memo_data { + + static fc::optional from_string( string str ) { + try { + if( str.size() > sizeof(memo_data)) { + auto data = fc::from_base58( str ); + auto m = fc::raw::unpack_from_vector( data ); + FC_ASSERT( string(m) == str ); + return m; + } + } catch ( ... ) {} + return fc::optional(); + } + + int64_t nonce = 0; + uint64_t check = 0; + vector encrypted; + + operator string()const { + auto data = fc::raw::pack_to_vector(*this); + auto base58 = fc::to_base58( data ); + return base58; + } +}; + +namespace detail { +class alexandria_api_impl; +} + +class alexandria_api +{ + public: + alexandria_api( fc::api< remote_node_api > rapi ); + virtual ~alexandria_api(); + + /** Returns a list of all commands supported by the alexandria API. + * + * This lists each command, along with its arguments and return types. + * For more detailed help on a single command, use \c get_help() + * + * @returns a multi-line string suitable for displaying on a terminal + */ + string help()const; + + /** + * Returns info about the current state of the blockchain + */ + variant info(); + + /** Returns info such as client version, git version of graphene/fc, version of boost, openssl. + * @returns compile time info and client and dependencies versions + */ + variant_object about(); + + /** Returns the information about a block + * + * @param num Block num + * + * @returns Public block data on the blockchain + */ + optional< database_api::api_signed_block_object > get_block( uint32_t num ); + + /** Returns sequence of operations included/generated in a specified block + * + * @param block_num Block height of specified block + * @param only_virtual Whether to only return virtual operations + */ + vector< condenser_api::api_operation_object > get_ops_in_block( uint32_t block_num, bool only_virtual = true ); + + /** Return the current price feed history + * + * @returns Price feed history data on the blockchain + */ + condenser_api::api_feed_history_object get_feed_history( string symbol)const; + + /** + * Returns the list of witnesses producing blocks in the current round (21 Blocks) + */ + vector< account_name_type > get_active_witnesses()const; + + /** Returns information about the given account. + * + * @param account_name the name of the account to provide information about + * @returns the public account data stored in the blockchain + */ + vector get_account( string account_name ) const; + + /** + * Returns transaction by ID. + */ + annotated_signed_transaction get_transaction( transaction_id_type trx_id )const; + + /** Returns detailed help on a single API command. + * @param method the name of the API command you want help with + * @returns a multi-line string suitable for displaying on a terminal + */ + string gethelp(const string& method)const; + + /** + * This method is used by faucets to create new accounts for other users which must + * provide their desired keys. The resulting account may not be controllable by this + * alexandria. There is a fee associated with account creation that is paid by the creator. + * The current account creation fee can be found with the 'info' alexandria command. + * + * @param creator The account creating the new account + * @param seed The seed to generate the new account name + * @param json_meta JSON Metadata associated with the new account + * @param owner public owner key of the new account + * @param active public active key of the new account + * @param memo public memo key of the new account + */ + operation create_account( string creator, + string seed, + string json_meta, + public_key_type owner, + public_key_type active, + public_key_type memo)const; + + + + /** + * This method updates the keys of an existing account. + * + * @param accountname The name of the account + * @param json_meta New JSON Metadata to be associated with the account + * @param owner New public owner key for the account + * @param active New public active key for the account + * @param memo New public memo key for the account + */ + operation update_account( string accountname, + string json_meta, + public_key_type owner, + public_key_type active, + public_key_type memo )const; + + /** + * This method deletes an existing account. + * + * @param account_name The name of the account you wish to delete + */ + operation delete_account( string account_name); + + /** + * This method is used to convert a JSON transaction to its transaction ID. + */ + transaction_id_type get_transaction_id( const signed_transaction& trx )const { return trx.id(); } + + /** Lists all witnesses registered in the blockchain. + * This returns a list of all account names that own witnesses, and the associated witness id, + * sorted by name. This lists witnesses whether they are currently voted in or not. + * + * Use the \c lowerbound and limit parameters to page through the list. To retrieve all witnesss, + * start by setting \c lowerbound to the empty string \c "", and then each iteration, pass + * the last witness name returned as the \c lowerbound for the next \c list_witnesss() call. + * + * @param lowerbound the name of the first witness to return. If the named witness does not exist, + * the list will start at the witness that comes after \c lowerbound + * @param limit the maximum number of witnesss to return (max: 1000) + * @returns a list of witnesss mapping witness names to witness ids + */ + vector< account_name_type > list_witnesses(const string& lowerbound, uint32_t limit); + + /** Returns information about the given witness. + * @param owner_account the name or id of the witness account owner, or the id of the witness + * @returns the information about the witness stored in the block chain + */ + optional< condenser_api::api_witness_object > get_witness(string owner_account); + + /** + * Update a witness object owned by the given account. + * + * @param witness_name The name of the witness account. + * @param url A URL containing some information about the witness. The empty string makes it remain the same. + * @param block_signing_key The new block signing public key. The empty string disables block production. + * @param props The chain properties the witness is voting on. + */ + operation update_witness(string witness_name, + string url, + public_key_type block_signing_key, + const chain_properties& props); + + /** + * Stop being a witness, effectively deleting the witness object owned by the given account. + * + * @param witness_name The name of the witness account. + */ + operation stop_witness(string witness_name); + + /** Set the voting proxy for an account. + * + * If a user does not wish to take an active part in voting, they can choose + * to allow another account to vote their stake. + * + * Setting a vote proxy does not remove your previous votes from the blockchain, + * they remain there but are ignored. If you later null out your vote proxy, + * your previous votes will take effect again. + * + * This setting can be changed at any time. + * + * @param account_to_modify the name or id of the account to update + * @param proxy the name of account that should proxy to, or empty string to have no proxy + */ + operation set_voting_proxy(string account_to_modify, string proxy); + + /** + * Vote for a witness to become a block producer. By default an account has not voted + * positively or negatively for a witness. The account can either vote for with positively + * votes or against with negative votes. The vote will remain until updated with another + * vote. Vote strength is determined by the accounts vesting shares. + * + * @param account_to_vote_with The account voting for a witness + * @param witness_to_vote_for The witness that is being voted for + * @param approve true if the account is voting for the account to be able to be a block produce + */ + operation vote_for_witness(string account_to_vote_with, + string witness_to_vote_for, + bool approve = true); + + /** + * Transfer funds from one account to another. SPHTX can be transferred. + * + * @param from The account the funds are coming from + * @param to The account the funds are going to + * @param amount The funds being transferred. i.e. "100.000 SPHTX" + * @param memo A memo for the transaction, encrypted with the to account's public memo key */ + operation transfer(string from, string to, asset amount, string memo); + + /** + * Transfer SPHTX into a vesting fund represented by vesting shares (VESTS). VESTS are required to vesting + * for a minimum of one coin year and can be withdrawn once a week over a two year withdraw period. + * VESTS are protected against dilution up until 90% of SPHTX is vesting. + * + * @param from The account the SPHTX is coming from + * @param to The account getting the VESTS + * @param amount The amount of SPHTX to vest i.e. "100.00 SPHTX" + */ + operation transfer_to_vesting(string from, string to, asset amount); + + /** + * Set up a vesting withdraw request. The request is fulfilled once a week over the next two year (104 weeks). + * + * @param from The account the VESTS are withdrawn from + * @param vesting_shares The amount of VESTS to withdraw over the next two years. Each week (amount/104) shares are + * withdrawn and deposited back as SPHTX. i.e. "10.000000 VESTS" + */ + operation withdraw_vesting( string from, asset vesting_shares); + + vector< database_api::api_owner_authority_history_object > get_owner_history( string account )const; + + /** + * This method will create new application object. There is a fee associated with account creation + * that is paid by the creator. The current account creation fee can be found with the + * 'info' alexandria command. + * + * @param author The account creating the new application + * @param app_name The unique name for new application + * @param url The url of the new application + * @param meta_data The meta data of new application + * @param price_param The price parameter that specifies billing for the app + */ + operation create_application( string author, string app_name, string url, string meta_data, uint8_t price_param); + + /** + * This method will update existing application object. + * + * @param author The author of application + * @param app_name The name of app that will be updated + * @param new_author The new author + * @param url Updated url + * @param meta_data Updated meta data + * @param price_param Updated price param + */ + operation update_application( string author, string app_name, string new_author, string url, string meta_data, + uint8_t price_param); + + /** + * This method will delete specified application object. + * + * @param author The author of application that will be deleted + * @param app_name The name of app that will be deleted + */ + operation delete_application( string author, string app_name); + + /** + * This method will create application buy object + * + * @param buyer The buyer of application + * @param app_id The id of app that buyer will buy + */ + operation buy_application( string buyer, int64_t app_id); + + /** + * This method will cancel application buy object + * + * @param app_owner The owner of bought application + * @param buyer The buyer of application + * @param app_id The id of bought app + */ + operation cancel_application_buying( string app_owner, string buyer, int64_t app_id); + + /** + * Get all app buyings by app_name or buyer + * @param name Application id or buyers name + * @param search_type One of "by_buyer", "by_app_id" + * @param count Number of items to retrieve + * @return + */ + vector< condenser_api::api_application_buying_object > get_application_buyings(string name, string search_type, uint32_t count); + + std::map> get_result_formatters() const; + + std::shared_ptr my; + + /** + * Send custom JSON data + * @param app_id Application ID + * @param from Sender + * @param to List of receivers + * @param json Data formatted in JSON + * @return + */ + operation make_custom_json_operation(uint32_t app_id, string from, vector to, string json); + + /** + * Send custom data data + * @param app_id Application ID + * @param from Sender + * @param to List of receivers + * @param data Data formatted in base58. + * @return + */ + operation make_custom_binary_operation(uint32_t app_id, string from, vector to, string data); + + + /** + * Broadcast transaction to node + * @param tx Signed transaction to be broadcasts + * @return transaction with block information + */ + annotated_signed_transaction broadcast_transaction(signed_transaction tx) const; + + /** + * Creating single operation form vector of operations + * @param op_vec Vector of operations that should be in this transaction + * @return single transaction with all the operations + */ + signed_transaction create_transaction(vector op_vec) const; + + /** + * Creating single operation form operation + * @param op operation that should be in this transaction + * @return single transaction with all the operations + */ + signed_transaction create_simple_transaction(operation op) const; + + /** + * Get all app objects + * @param names - array of names of applications + * @return array of application objects + */ + vector< condenser_api::api_application_object > get_applications(vector names); + + /** + * Calculates digest of provided transaction + * @param tx - transaction to be digested + * @return transaction digest + */ + digest_type get_transaction_digest(signed_transaction tx); + + /** + * Adds signature to transaction + * @param tx - transaction to be signed + * @param signature - signature that will be add to transaction + * @return signed transaction + */ + signed_transaction add_signature(signed_transaction tx, fc::ecc::compact_signature signature) const; + + /** + * Add custom fee to the operation + * @param op Operation where the fee is added + * @param fee Fee to be added + */ + operation add_fee(operation op, asset fee)const; + + /** + * Sign digest with providet private key + * @param digest - digest fo transaction + * @param pk - private key for signing (in WIF format) + * @return signature of digest + */ + fc::ecc::compact_signature sign_digest(digest_type digest, string pk) const; + + /** + * This function will create transaction of this operation, sign it with key and broadcast to node + * @param op - operation to be send + * @param pk - private key for signing + */ + annotated_signed_transaction send_and_sign_operation(operation op, string pk); + + /** + * This function will sign and broadcast transaction + * @param tx - transaction to be send + * @param pk - private key for signing + */ + annotated_signed_transaction send_and_sign_transaction(signed_transaction tx, string pk); + + /** + * Verify signature + * @param digest - digest corresponding to signature + * @param pub_key - public key corresponding to private_key, that signed digest + * @param signature - signature to be verified + * @return true if is valid + */ + bool verify_signature(digest_type digest, public_key_type pub_key, fc::ecc::compact_signature signature) const; + + /** + * Generates key pair + * @return pair of keys + */ + key_pair generate_key_pair() const; + + /** + * Generates key pair based on brain key + * @param brain_key - brain key for generating key pair + * @return pair of keys + */ + key_pair generate_key_pair_from_brain_key(string brain_key) const; + + /** + * Returns public key to provided private key + * @param private_key + * @return + */ + public_key_type get_public_key(string private_key) const; + + /** + * Decode data to base58 + * @param data - data to decode + * @return + */ + std::vector from_base58(string data) const; + + /** + * Encode data to base58 + * @param data - data to encode + * @return + */ + string to_base58(std::vector data) const; + + /** + * Encrypt data + * @param data - data to encrypt + * @param public_key - public key of recipient + * @param private_key - private key of sender + * @return encrypted data + */ + string encrypt_data(string data, public_key_type public_key, string private_key) const; + + /** + * Decrypt data + * @param data - data to decrypt + * @param public_key - public key of sender + * @param private_key - private key of recipient + * @return decrypted data + */ + string decrypt_data(string data, public_key_type public_key, string private_key) const; + + /** + * Check if account account exists + * @param account_name - name of the account + * @return returns true if account exists + */ + bool account_exist(string account_name) const; +#ifdef ABAP_INTERFACE + /** + * Account operations have sequence numbers from 0 to N where N is the most recent operation. This method + * returns operations in the range [from-limit, from] + * + * @param account - account whose history will be returned + * @param from - the absolute sequence number, -1 means most recent, limit is the number of operations before from. + * @param limit - the maximum number of items that can be queried (0 to 1000], must be less than from + */ + vector< condenser_api::api_operation_object > get_account_history( string account, uint32_t from, uint32_t limit ); + + /** + * Get all received custom jsons and data. + * @param app_id Application ID + * @param account_name Name of the relevant (sender/recipient) account + * @param search_type One of "by_sender", "by_recipient", "by_sender_datetime", "by_recipient_datetime" + * @param start Either timestamp in ISO format or index + * @param count Number of items to retrieve + * @return + */ + vector< condenser_api::api_received_object > get_received_documents(uint32_t app_id, string account_name, string search_type, string start, uint32_t count); + +#else + /** + * Account operations have sequence numbers from 0 to N where N is the most recent operation. This method + * returns operations in the range [from-limit, from] + * + * @param account - account whose history will be returned + * @param from - the absolute sequence number, -1 means most recent, limit is the number of operations before from. + * @param limit - the maximum number of items that can be queried (0 to 1000], must be less than from + */ + map< uint32_t, condenser_api::api_operation_object > get_account_history( string account, uint32_t from, uint32_t limit ); + + /** + * Get all received custom jsons and data. + * @param app_id Application ID + * @param account_name Name of the relevant (sender/recipient) account + * @param search_type One of "by_sender", "by_recipient", "by_sender_datetime", "by_recipient_datetime" + * @param start Either timestamp in ISO format or index + * @param count Number of items to retrieve + * @return + */ + map< uint64_t, condenser_api::api_received_object > get_received_documents(uint32_t app_id, string account_name, string search_type, string start, uint32_t count); +#endif + /** + * Returns active authority for given account + * @param account_name - account name + */ + authority get_active_authority(string account_name) const; + + /** + * Returns owner authority for given account + * @param account_name + */ + authority get_owner_authority(string account_name) const; + + /** + * Returns memo key for given account + * @param account_name + */ + public_key_type get_memo_key(string account_name) const; + + /** + * Returns current balance for given account + * @param account_name + */ + int64_t get_account_balance(string account_name) const; + + /** + * Returns vestig balance for given account + * @param account_name + */ + int64_t get_vesting_balance(string account_name) const; + + /** + * Creates simple authority object from provided public key + * @param pub_key + */ + authority create_simple_authority(public_key_type pub_key) const; + + /** + * Creates simple multisig authority object from provided public key + * @param pub_keys - vector of public keys + * @param required_signatures - number of required signatures + * @return + */ + authority create_simple_multisig_authority(vector pub_keys, uint32_t required_signatures) const; + + /** + * Creates simple managed authority from provided account_name + * @param managing_account + */ + authority create_simple_managed_authority(string managing_account) const; + + /** + * Creates simple multisig managed authority from provided account_name + * @param managing_accounts - vector of accounts + * @param required_signatures - number of required signatures + */ + authority create_simple_multisig_managed_authority(vector managing_accounts, uint32_t required_signatures) const; + + /** + * Converts seed to new account name + * @param seed Seed + * @return new account name + */ + string get_account_name_from_seed(string seed) const; + + /** + * Returns set of public key (authorities) required for signing specific transaction + * @param tx - transaction for signing + */ + set< public_key_type > get_required_signatures( signed_transaction tx) const; + + + /** + * Returns a fee for the given operation + * @param op Operation to evaluate + * @param symbol Symbol of the fee paying currency + * @return fee + */ + asset calculate_fee(operation op, asset_symbol_type symbol)const; + + /** + * Converts the given amount of fiat to sphtx + * @param fiat The amount to be converted + * @return Amount of SPHTX if conversion is possible, or returns back fiat if not. + */ + asset fiat_to_sphtx(asset fiat)const; +}; + +} } + +FC_REFLECT_ENUM( sophiatx::alexandria::authority_type, (owner)(active) ) +FC_REFLECT( sophiatx::alexandria::key_pair, (pub_key)(wif_priv_key) ) +FC_REFLECT( sophiatx::alexandria::memo_data, (nonce)(check)(encrypted) ) + +FC_API( sophiatx::alexandria::alexandria_api, + /// alexandria api + (help)(gethelp) + (about) + + /// query api + (info) + (list_witnesses) + (get_witness) + (get_block) + (get_ops_in_block) + (get_feed_history) + (get_application_buyings) + (get_applications) + (get_received_documents) + (get_active_witnesses) + (get_transaction) + (get_required_signatures) + + ///account api + (get_account_name_from_seed) + (account_exist) + (get_account) + (get_account_history) + (get_active_authority) + (get_owner_authority) + (get_memo_key) + (get_account_balance) + (get_vesting_balance) + (create_simple_authority) + (create_simple_multisig_authority) + (create_simple_managed_authority) + (create_simple_multisig_managed_authority) + + /// transaction api + (create_account) + (update_account) + (delete_account) + (update_witness) + (set_voting_proxy) + (vote_for_witness) + (transfer) + + (transfer_to_vesting) + (withdraw_vesting) + (create_application) + (update_application) + (delete_application) + (buy_application) + (cancel_application_buying) + + (make_custom_json_operation) + (make_custom_binary_operation) + + /// helper api + (broadcast_transaction) + (create_transaction) + (create_simple_transaction) + (calculate_fee) + (fiat_to_sphtx) + + ///local api + (get_transaction_digest) + (add_signature) + (add_fee) + + (sign_digest) + (send_and_sign_operation) + (send_and_sign_transaction) + (verify_signature) + (generate_key_pair) + (generate_key_pair_from_brain_key) + (get_public_key) + (from_base58) + (to_base58) + (encrypt_data) + (decrypt_data) + ) + diff --git a/libraries/alexandria/include/sophiatx/alexandria/reflect_util.hpp b/libraries/alexandria/include/sophiatx/alexandria/reflect_util.hpp new file mode 100644 index 00000000..2bf29dcc --- /dev/null +++ b/libraries/alexandria/include/sophiatx/alexandria/reflect_util.hpp @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2015 Cryptonomex, Inc., and contributors. + * + * The MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#pragma once + +// This file contains various reflection methods that are used to +// support the alexandria, e.g. allow specifying operations by name +// instead of ID. + +namespace sophiatx { namespace alexandria { + +struct static_variant_map +{ + flat_map< string, int > name_to_which; + vector< string > which_to_name; +}; + +namespace impl { + +std::string clean_name( const std::string& name ) +{ + std::string result; + const static std::string prefix = "sophiatx::protocol::"; + const static std::string suffix = "_operation"; + // graphene::chain::.*_operation + if( (name.size() >= prefix.size() + suffix.size()) + && (name.substr( 0, prefix.size() ) == prefix) + && (name.substr( name.size()-suffix.size(), suffix.size() ) == suffix ) + ) + return name.substr( prefix.size(), name.size() - prefix.size() - suffix.size() ); + + // If this line spams the console, please don't just comment it out. + // Instead, add code above to deal specifically with the names that are causing the spam. + wlog( "don't know how to clean name: ${name}", ("name", name) ); + return name; +} + +struct static_variant_map_visitor +{ + static_variant_map_visitor() {} + + typedef void result_type; + + template< typename T > + result_type operator()( const T& dummy ) + { + assert( static_cast(which) == m.which_to_name.size() ); + std::string name = clean_name( fc::get_typename::name() ); + m.name_to_which[ name ] = which; + m.which_to_name.push_back( name ); + } + + static_variant_map m; + int which; +}; + +template< typename StaticVariant > +struct from_which_visitor +{ + typedef StaticVariant result_type; + + template< typename Member > // Member is member of static_variant + result_type operator()( const Member& dummy ) + { + Member result; + from_variant( v, result ); + return result; // converted from StaticVariant to Result automatically due to return type + } + + const variant& v; + + from_which_visitor( const variant& _v ) : v(_v) {} +}; + +} // namespace impl + +template< typename T > +T from_which_variant( int which, const variant& v ) +{ + // Parse a variant for a known which() + T dummy; + dummy.set_which( which ); + impl::from_which_visitor< T > vtor(v); + return dummy.visit( vtor ); +} + +template +static_variant_map create_static_variant_map() +{ + T dummy; + int n = dummy.count(); + impl::static_variant_map_visitor vtor; + for( int i=0; i + +namespace sophiatx { namespace alexandria { + +using std::vector; +using fc::variant; +using fc::optional; + +using namespace chain; +using namespace plugins; +/*using namespace plugins::condenser_api; +using namespace plugins::database_api; +using namespace plugins::account_history; +using namespace plugins::follow; +using namespace plugins::market_history; +using namespace plugins::witness;*/ + +/** + * This is a dummy API so that the alexandria can create properly formatted API calls + */ +struct remote_node_api +{ + condenser_api::get_version_return get_version(); + condenser_api::state get_state( string ); + vector< account_name_type > get_active_witnesses(); + optional< block_header > get_block_header( uint32_t ); + optional< database_api::api_signed_block_object > get_block( uint32_t ); + vector< condenser_api::api_operation_object > get_ops_in_block( uint32_t, bool only_virtual = true ); + fc::variant_object get_config(); + condenser_api::extended_dynamic_global_properties get_dynamic_global_properties(); + chain_properties get_chain_properties(); + condenser_api::legacy_price get_current_median_history_price( asset_symbol_type ); + condenser_api::api_feed_history_object get_feed_history( asset_symbol_type); + condenser_api::api_witness_schedule_object get_witness_schedule(); + hardfork_version get_hardfork_version(); + condenser_api::scheduled_hardfork get_next_scheduled_hardfork(); + vector< vector< account_name_type > > get_key_references( vector< public_key_type > ); + vector< condenser_api::extended_account > get_accounts( vector< account_name_type > ); + vector< account_id_type > get_account_references( account_id_type account_id ); + vector< optional< condenser_api::api_account_object > > lookup_account_names( vector< account_name_type > ); + vector< account_name_type > lookup_accounts( account_name_type, uint32_t ); + uint64_t get_account_count(); + vector< database_api::api_owner_authority_history_object > get_owner_history( account_name_type ); + optional< database_api::api_account_recovery_request_object > get_recovery_request( account_name_type ); + optional< condenser_api::api_escrow_object > get_escrow( account_name_type, uint32_t ); + optional< witness::api_account_bandwidth_object > get_account_bandwidth( account_name_type, witness::bandwidth_type ); + vector< optional< condenser_api::api_witness_object > > get_witnesses( vector< witness_id_type > ); + optional< condenser_api::api_witness_object > get_witness_by_account( account_name_type ); + vector< condenser_api::api_witness_object > get_witnesses_by_vote( account_name_type, uint32_t ); + vector< account_name_type > lookup_witness_accounts( string, uint32_t ); + uint64_t get_witness_count(); + string get_transaction_hex( signed_transaction ); + annotated_signed_transaction get_transaction( transaction_id_type ); + set< public_key_type > get_required_signatures( signed_transaction, flat_set< public_key_type > ); + set< public_key_type > get_potential_signatures( signed_transaction ); + bool verify_authority( signed_transaction ); + bool verify_account_authority( string, flat_set< public_key_type > ); + //vector< condenser_api::account_vote > get_account_votes( account_name_type ); + + map< uint32_t, condenser_api::api_operation_object > get_account_history( account_name_type, uint64_t, uint32_t ); + void broadcast_transaction( signed_transaction ); + network_broadcast_api::broadcast_transaction_synchronous_return broadcast_transaction_synchronous( signed_transaction ); + void broadcast_block( signed_block ); + flat_set< uint32_t > get_market_history_buckets(); + map< uint64_t, condenser_api::api_received_object > get_received_documents(uint32_t, string, string, string, uint32_t); + + vector get_applications(vector); + vector get_application_buyings(string, uint32_t, string); +}; + +} } + +FC_API( sophiatx::alexandria::remote_node_api, + (get_version) + (get_state) + (get_active_witnesses) + (get_block_header) + (get_block) + (get_ops_in_block) + (get_config) + (get_dynamic_global_properties) + (get_chain_properties) + (get_current_median_history_price) + (get_feed_history) + (get_witness_schedule) + (get_hardfork_version) + (get_next_scheduled_hardfork) + (get_key_references) + (get_accounts) + (get_account_references) + (lookup_account_names) + (lookup_accounts) + (get_account_count) + (get_owner_history) + (get_recovery_request) + (get_escrow) + (get_witnesses) + (get_witness_by_account) + (get_witnesses_by_vote) + (lookup_witness_accounts) + (get_witness_count) + (get_transaction_hex) + (get_transaction) + (get_required_signatures) + (get_potential_signatures) + (verify_authority) + (verify_account_authority) + (get_account_history) + (broadcast_transaction) + (broadcast_transaction_synchronous) + (broadcast_block) + (get_applications) + (get_application_buyings) + (get_received_documents) + ) diff --git a/libraries/alexandria/lib_alexandria.cpp b/libraries/alexandria/lib_alexandria.cpp new file mode 100644 index 00000000..3e6d236d --- /dev/null +++ b/libraries/alexandria/lib_alexandria.cpp @@ -0,0 +1,1078 @@ +#include +#include + +#include +#include +#include +#include + + +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace sophiatx { namespace alexandria { + +using sophiatx::plugins::condenser_api::legacy_asset; + +namespace detail { + +class alexandria_api_impl +{ + public: + api_documentation method_documentation; + private: + void enable_umask_protection() { +#ifdef __unix__ + _old_umask = umask( S_IRWXG | S_IRWXO ); +#endif + } + + void disable_umask_protection() { +#ifdef __unix__ + umask( _old_umask ); +#endif + } + +public: + alexandria_api& self; + alexandria_api_impl( alexandria_api& s, fc::api< remote_node_api > rapi ) + : self( s ), _remote_api( rapi ) + {} + virtual ~alexandria_api_impl() + {} + + variant info() const + { + auto dynamic_props = _remote_api->get_dynamic_global_properties(); + fc::mutable_variant_object result(fc::variant(dynamic_props).get_object()); + result["witness_majority_version"] = fc::string( _remote_api->get_witness_schedule().majority_version ); + result["hardfork_version"] = fc::string( _remote_api->get_hardfork_version() ); + //result["head_block_id"] = dynamic_props.head_block_id; + result["head_block_age"] = fc::get_approximate_relative_time_string(dynamic_props.time, + time_point_sec(time_point::now()), + " old"); + result["participation"] = (100*dynamic_props.recent_slots_filled.popcount()) / 128.0; + result["median_sbd1_price"] = _remote_api->get_current_median_history_price(SBD1_SYMBOL); + result["median_sbd2_price"] = _remote_api->get_current_median_history_price(SBD2_SYMBOL); + result["median_sbd3_price"] = _remote_api->get_current_median_history_price(SBD3_SYMBOL); + result["median_sbd4_price"] = _remote_api->get_current_median_history_price(SBD4_SYMBOL); + result["median_sbd5_price"] = _remote_api->get_current_median_history_price(SBD5_SYMBOL); + + result["account_creation_fee"] = _remote_api->get_chain_properties().account_creation_fee; + return result; + } + + variant_object about() + { + string client_version( sophiatx::utilities::git_revision_description ); + const size_t pos = client_version.find( '/' ); + if( pos != string::npos && client_version.size() > pos ) + client_version = client_version.substr( pos + 1 ); + + fc::mutable_variant_object result; + result["blockchain_version"] = SOPHIATX_BLOCKCHAIN_VERSION; + result["client_version"] = client_version; + result["sophiatx_revision"] = sophiatx::utilities::git_revision_sha; + result["sophiatx_revision_age"] = fc::get_approximate_relative_time_string( fc::time_point_sec( sophiatx::utilities::git_revision_unix_timestamp ) ); + result["fc_revision"] = fc::git_revision_sha; + result["fc_revision_age"] = fc::get_approximate_relative_time_string( fc::time_point_sec( fc::git_revision_unix_timestamp ) ); + result["compile_date"] = "compiled on " __DATE__ " at " __TIME__; + result["boost_version"] = boost::replace_all_copy(std::string(BOOST_LIB_VERSION), "_", "."); + result["openssl_version"] = OPENSSL_VERSION_TEXT; + + std::string bitness = boost::lexical_cast(8 * sizeof(int*)) + "-bit"; +#if defined(__APPLE__) + std::string os = "osx"; +#elif defined(__linux__) + std::string os = "linux"; +#elif defined(_MSC_VER) + std::string os = "win32"; +#else + std::string os = "other"; +#endif + result["build"] = os + " " + bitness; + + try + { + auto v = _remote_api->get_version(); + result["server_blockchain_version"] = v.blockchain_version; + result["server_sophiatx_revision"] = v.sophiatx_revision; + result["server_fc_revision"] = v.fc_revision; + result["chain_id"] = v.chain_id; + _chain_id = fc::sha256(v.chain_id); + } + catch( fc::exception& ) + { + result["server"] = "could not retrieve server version information"; + } + + return result; + } + + vector get_account( string account_name ) const + { + string decoded_name = make_random_fixed_string(account_name); + auto accounts = _remote_api->get_accounts( { account_name, decoded_name } ); + FC_ASSERT( !accounts.empty(), "Unknown account" ); + std::vector accounts_ret(std::make_move_iterator(accounts.begin()), + std::make_move_iterator(accounts.end())); + return accounts_ret; + } + + operation set_voting_proxy(string account_to_modify, string proxy) + { try { + account_witness_proxy_operation op; + op.account = account_to_modify; + op.proxy = proxy; + + return op; + } FC_CAPTURE_AND_RETHROW( (account_to_modify)(proxy) ) } + + optional< condenser_api::api_witness_object > get_witness( string owner_account ) + { + return _remote_api->get_witness_by_account( owner_account ); + } + + std::map> get_result_formatters() const + { + std::map > m; + m["help"] = [](variant result, const fc::variants& a) + { + return result.get_string(); + }; + + m["gethelp"] = [](variant result, const fc::variants& a) + { + return result.get_string(); + }; + + m["list_my_accounts"] = [](variant result, const fc::variants& a ) { + std::stringstream out; + + auto accounts = result.as>(); + asset total_sophiatx; + asset total_vest(0, VESTS_SYMBOL ); + for( const auto& a : accounts ) { + total_sophiatx += a.balance.to_asset(); + total_vest += a.vesting_shares.to_asset(); + out << std::left << std::setw( 17 ) << std::string(a.name) + << std::right << std::setw(18) << fc::variant(a.balance).as_string() <<" " + << std::right << std::setw(26) << fc::variant(a.vesting_shares).as_string() <<" \n"; + } + out << "-------------------------------------------------------------------------\n"; + out << std::left << std::setw( 17 ) << "TOTAL" + << std::right << std::setw(18) << legacy_asset::from_asset(total_sophiatx).to_string() <<" " + << std::right << std::setw(26) << legacy_asset::from_asset(total_vest).to_string() <<" \n"; + return out.str(); + }; + m["get_account_history"] = []( variant result, const fc::variants& a ) { + std::stringstream ss; + ss << std::left << std::setw( 5 ) << "#" << " "; + ss << std::left << std::setw( 10 ) << "BLOCK #" << " "; + ss << std::left << std::setw( 15 ) << "TRX ID" << " "; + ss << std::left << std::setw( 20 ) << "OPERATION" << " "; + ss << std::left << std::setw( 50 ) << "DETAILS" << "\n"; + ss << "-------------------------------------------------------------------------------\n"; + const auto& results = result.get_array(); + for( const auto& item : results ) { + ss << std::left << std::setw(5) << item.get_array()[0].as_string() << " "; + const auto& op = item.get_array()[1].get_object(); + ss << std::left << std::setw(10) << op["block"].as_string() << " "; + ss << std::left << std::setw(15) << op["trx_id"].as_string() << " "; + const auto& opop = op["op"].get_array(); + ss << std::left << std::setw(20) << opop[0].as_string() << " "; + ss << std::left << std::setw(50) << fc::json::to_string(opop[1]) << "\n "; + } + return ss.str(); + }; + + + return m; + } + + fc::api< remote_node_api > _remote_api; + uint32_t _tx_expiration_seconds = 30; + chain_id_type _chain_id; + +#ifdef __unix__ + mode_t _old_umask; +#endif +}; + +} } } // sophiatx::alexandria::detail + + + +namespace sophiatx { namespace alexandria { + +alexandria_api::alexandria_api(fc::api< remote_node_api > rapi) + : my(new detail::alexandria_api_impl(*this, rapi)) +{} + +alexandria_api::~alexandria_api(){} + +optional< database_api::api_signed_block_object > alexandria_api::get_block(uint32_t num) +{ + return my->_remote_api->get_block( num ); +} + +vector< condenser_api::api_operation_object > alexandria_api::get_ops_in_block(uint32_t block_num, bool only_virtual) +{ + return my->_remote_api->get_ops_in_block( block_num, only_virtual ); +} + +vector< account_name_type > alexandria_api::get_active_witnesses()const { + return my->_remote_api->get_active_witnesses(); +} + +variant alexandria_api::info() +{ + return my->info(); +} + +variant_object alexandria_api::about() +{ + return my->about(); +} + +vector< account_name_type > alexandria_api::list_witnesses(const string& lowerbound, uint32_t limit) +{ + return my->_remote_api->lookup_witness_accounts( lowerbound, limit ); +} + +optional< condenser_api::api_witness_object > alexandria_api::get_witness(string owner_account) +{ + return my->get_witness(owner_account); +} + +operation alexandria_api::set_voting_proxy(string account_to_modify, string voting_account) +{ return my->set_voting_proxy(account_to_modify, voting_account); } + +string alexandria_api::help()const +{ + std::vector method_names = my->method_documentation.get_method_names(); + std::stringstream ss; + for (const std::string method_name : method_names) + { + try + { + ss << my->method_documentation.get_brief_description(method_name); + } + catch (const fc::key_not_found_exception&) + { + ss << method_name << " (no help available)\n"; + } + } + return ss.str(); +} + +string alexandria_api::gethelp(const string& method)const +{ + fc::api tmp; + std::stringstream ss; + ss << "\n"; + + std::string doxygenHelpString = my->method_documentation.get_detailed_description(method); + if (!doxygenHelpString.empty()) + ss << doxygenHelpString; + else + ss << "No help defined for method " << method << "\n"; + + return ss.str(); +} + +std::map > +alexandria_api::get_result_formatters() const +{ + return my->get_result_formatters(); +} + +condenser_api::api_feed_history_object alexandria_api::get_feed_history(string symbol)const { + return my->_remote_api->get_feed_history(asset_symbol_type::from_string(symbol)); +} + +operation alexandria_api::create_account( string creator, + string name_seed, + string json_meta, + public_key_type owner, + public_key_type active, + public_key_type memo)const +{ try { + + account_create_operation op; + op.creator = creator; + op.name_seed = name_seed; + op.owner = authority( 1, owner, 1 ); + op.active = authority( 1, active, 1 ); + op.memo_key = memo; + op.json_metadata = json_meta; + op.fee = my->_remote_api->get_chain_properties().account_creation_fee * asset( 1, SOPHIATX_SYMBOL ); + + return op; +} FC_CAPTURE_AND_RETHROW( (creator)(name_seed)(json_meta)(owner)(active)(memo)) } + +vector< database_api::api_owner_authority_history_object > alexandria_api::get_owner_history( string account )const +{ + return my->_remote_api->get_owner_history( account ); +} + +operation alexandria_api::update_account( + string account_name, + string json_meta, + public_key_type owner, + public_key_type active, + public_key_type memo )const +{ + try + { + account_update_operation op; + op.account = account_name; + op.owner = authority( 1, owner, 1 ); + op.active = authority( 1, active, 1); + op.memo_key = memo; + op.json_metadata = json_meta; + + return op; + } + FC_CAPTURE_AND_RETHROW( (account_name)(json_meta)(owner)(active)(memo) ) +} + +operation alexandria_api::update_witness( string witness_account_name, + string url, + public_key_type block_signing_key, + const chain_properties& props) +{ + + + witness_update_operation op; + + optional< condenser_api::api_witness_object > wit = my->_remote_api->get_witness_by_account( witness_account_name ); + if( !wit.valid() ) + { + op.url = url; + } + else + { + FC_ASSERT( wit->owner == witness_account_name ); + if( url != "" ) + op.url = url; + else + op.url = wit->url; + } + op.owner = witness_account_name; + op.block_signing_key = block_signing_key; + op.props = props; + return op; +} + +operation alexandria_api::stop_witness( string witness_account_name ) +{ + witness_stop_operation op; + + op.owner = witness_account_name; + return op; +} + +operation alexandria_api::vote_for_witness(string voting_account, string witness_to_vote_for, bool approve ) +{ try { + + account_witness_vote_operation op; + op.account = voting_account; + op.witness = witness_to_vote_for; + op.approve = approve; + + return op; +} FC_CAPTURE_AND_RETHROW( (voting_account)(witness_to_vote_for)(approve)) } + + + +operation alexandria_api::transfer(string from, string to, asset amount, string memo) +{ try { + + transfer_operation op; + op.from = from; + op.to = to; + op.amount = amount; + + op.memo = memo; + return op; +} FC_CAPTURE_AND_RETHROW( (from)(to)(amount)(memo) ) } + +operation alexandria_api::transfer_to_vesting(string from, string to, asset amount) +{ + transfer_to_vesting_operation op; + op.from = from; + op.to = (to == from ? "" : to); + op.amount = amount; + + return op; +} + +operation alexandria_api::withdraw_vesting(string from, asset vesting_shares) +{ + + withdraw_vesting_operation op; + op.account = from; + op.vesting_shares = vesting_shares; + + return op; +} + +annotated_signed_transaction alexandria_api::get_transaction( transaction_id_type id )const { + return my->_remote_api->get_transaction( id ); +} + +vector alexandria_api::get_account( string account_name ) const +{ + return my->get_account( account_name ); +} + +operation +alexandria_api::delete_application(string author, string app_name) +{ + try + { + application_delete_operation op; + op.author = author; + op.name = app_name; + + return op; + } + FC_CAPTURE_AND_RETHROW( (author)(app_name)) +} + +operation alexandria_api::buy_application(string buyer, int64_t app_id) +{ + try + { + buy_application_operation op; + op.buyer = buyer; + op.app_id = app_id; + return op; + } + FC_CAPTURE_AND_RETHROW( (buyer)(app_id)) +} + +operation alexandria_api::cancel_application_buying(string app_owner, string buyer, int64_t app_id) +{ + try + { + cancel_application_buying_operation op; + op.app_owner = app_owner; + op.buyer = buyer; + op.app_id = app_id; + return op; + } + FC_CAPTURE_AND_RETHROW( (app_owner)(buyer)(app_id)) +} + +vector alexandria_api::get_application_buyings(string name, string search_type, uint32_t count) +{ + try{ + return my->_remote_api->get_application_buyings(name, count, search_type); + }FC_CAPTURE_AND_RETHROW((name)(search_type)(count)) +} + +operation +alexandria_api::update_application(string author, string app_name, string new_author, string url, + string meta_data, uint8_t price_param) { + try + { + + + application_update_operation op; + op.author = author; + op.name = app_name; + op.new_author= new_author; + op.url = url; + op.metadata = meta_data; + op.price_param = price_param; + + return op; + } + FC_CAPTURE_AND_RETHROW( (author)(app_name)(new_author)(url)(meta_data)(price_param)) +} + +operation +alexandria_api::create_application(string author, string app_name, string url, string meta_data, + uint8_t price_param) { + try + { + + + application_create_operation op; + op.author = author; + op.name = app_name; + op.url = url; + op.metadata = meta_data; + op.price_param = price_param; + return op; + } + FC_CAPTURE_AND_RETHROW( (author)(app_name)(url)(meta_data)(price_param)) +} + +operation alexandria_api::make_custom_json_operation(uint32_t app_id, string from, vector to, string json){ + try{ + + custom_json_operation op; + op.app_id = app_id; + op.sender = from; + for(const auto& r: to) + op.recipients.insert(r); + op.json = json; + + return op; + + }FC_CAPTURE_AND_RETHROW( (app_id)(from)(to)(json)) +} + +operation alexandria_api::make_custom_binary_operation(uint32_t app_id, string from, vector to, string data){ + try{ + + custom_binary_operation op; + op.app_id = app_id; + op.sender = from; + for(const auto& r: to) + op.recipients.insert(r); + op.data = fc::from_base58(data); + return op; + }FC_CAPTURE_AND_RETHROW( (app_id)(from)(to)(data)) +} + +#ifdef ABAP_INTERFACE +vector< condenser_api::api_received_object > alexandria_api::get_received_documents(uint32_t app_id, string account_name, string search_type, string start, uint32_t count){ + try{ + typedef std::map< uint64_t, condenser_api::api_received_object > ObjectMap; + std::vector ret; + ObjectMap from_api = my->_remote_api->get_received_documents(app_id, account_name, search_type, start, count); + std::transform( from_api.begin(), from_api.end(), + std::back_inserter(ret), + boost::bind(&ObjectMap::value_type::second,_1) ); + return ret; + }FC_CAPTURE_AND_RETHROW((app_id)(account_name)(search_type)(start)(count)) +} + +vector< condenser_api::api_operation_object > alexandria_api::get_account_history( string account, uint32_t from, uint32_t limit ) { + typedef std::map< uint32_t, condenser_api::api_operation_object > ObjectMap; + ObjectMap from_api = my->_remote_api->get_account_history( account, from, limit ); + std::vector < condenser_api::api_operation_object > ret; + std::transform( from_api.begin(), from_api.end(), + std::back_inserter(ret), + boost::bind(&ObjectMap::value_type::second,_1) ); + return ret; +} +#else +map< uint64_t, condenser_api::api_received_object > alexandria_api::get_received_documents(uint32_t app_id, string account_name, string search_type, string start, uint32_t count){ + try{ + return my->_remote_api->get_received_documents(app_id, account_name, search_type, start, count); + }FC_CAPTURE_AND_RETHROW((app_id)(account_name)(search_type)(start)(count)) +} + +map< uint32_t, condenser_api::api_operation_object > alexandria_api::get_account_history( string account, uint32_t from, uint32_t limit ) { + auto result = my->_remote_api->get_account_history( account, from, limit ); + return result; +} +#endif + + +annotated_signed_transaction alexandria_api::broadcast_transaction(signed_transaction tx) const +{ + try { + auto result = my->_remote_api->broadcast_transaction_synchronous( tx ); + annotated_signed_transaction rtrx(tx); + rtrx.block_num = result.block_num; + rtrx.transaction_num = result.trx_num; + return rtrx; + }FC_CAPTURE_AND_RETHROW((tx)) +} + +signed_transaction alexandria_api::create_transaction(vector op_vec) const +{ + try{ + //set fees first + signed_transaction tx; + class op_visitor{ + public: + op_visitor(){}; + typedef void result_type; + result_type operator()( base_operation& bop){ + if(bop.has_special_fee()) + return; + asset req_fee = bop.get_required_fee(SOPHIATX_SYMBOL); + bop.fee = req_fee; + }; + }; + op_visitor op_v; + + for(auto& op : op_vec) + { + op.visit(op_v); + tx.operations.push_back(op); + } + + auto dyn_props = my->_remote_api->get_dynamic_global_properties(); + tx.set_reference_block( dyn_props.head_block_id ); + tx.set_expiration( dyn_props.time + fc::seconds(my->_tx_expiration_seconds) ); + + tx.validate(); + return tx; + }FC_CAPTURE_AND_RETHROW( (op_vec)) +} + +signed_transaction alexandria_api::create_simple_transaction(operation op) const +{ + try{ + //set fees first + signed_transaction tx; + class op_visitor{ + public: + op_visitor(){}; + typedef void result_type; + result_type operator()( base_operation& bop){ + if(bop.has_special_fee()) + return; + asset req_fee = bop.get_required_fee(SOPHIATX_SYMBOL); + bop.fee = req_fee; + }; + }; + op_visitor op_v; + + op.visit(op_v); + tx.operations.push_back(op); + + auto dyn_props = my->_remote_api->get_dynamic_global_properties(); + tx.set_reference_block( dyn_props.head_block_id ); + tx.set_expiration( dyn_props.time + fc::seconds(my->_tx_expiration_seconds) ); + + tx.validate(); + return tx; + }FC_CAPTURE_AND_RETHROW( (op)) +} + +operation alexandria_api::delete_account(string account_name) { + try{ + account_delete_operation op; + op.account = account_name; + return op; + }FC_CAPTURE_AND_RETHROW( (account_name)) +} + +vector alexandria_api::get_applications(vector names) { + try{ + return my->_remote_api->get_applications(names); + }FC_CAPTURE_AND_RETHROW((names)) +} + +digest_type alexandria_api::get_transaction_digest(signed_transaction tx) { + try{ + if(my->_chain_id == fc::sha256()) + { + auto v = my->_remote_api->get_version(); + my->_chain_id = fc::sha256(v.chain_id); + } + return tx.sig_digest(my->_chain_id); + }FC_CAPTURE_AND_RETHROW((tx)) +} + +signed_transaction alexandria_api::add_signature(signed_transaction tx, fc::ecc::compact_signature signature) const { + try{ + tx.signatures.push_back(signature); + return tx; + }FC_CAPTURE_AND_RETHROW((tx)(signature)) +} + +operation alexandria_api::add_fee(operation op, asset fee)const { + class op_visitor{ + public: + op_visitor(asset _fee):fee(_fee){}; + asset fee; + typedef void result_type; + result_type operator()( base_operation& bop){ + bop.fee = fee; + }; + }; + op_visitor op_v(fee); + operation ret = op; + ret.visit(op_v); + return ret; +} + +fc::ecc::compact_signature alexandria_api::sign_digest(digest_type digest, string pk) const { + try{ + auto priv_key = *sophiatx::utilities::wif_to_key(pk); + return priv_key.sign_compact(digest); + }FC_CAPTURE_AND_RETHROW((digest)(pk)) +} + +annotated_signed_transaction alexandria_api::send_and_sign_operation(operation op, string pk) { + try{ + signed_transaction tx = create_simple_transaction(op); + return broadcast_transaction(add_signature(tx, sign_digest(get_transaction_digest(tx), pk))); + }FC_CAPTURE_AND_RETHROW((op)(pk)) +} + +annotated_signed_transaction alexandria_api::send_and_sign_transaction(signed_transaction tx, string pk){ + try{ + return broadcast_transaction(add_signature(tx, sign_digest(get_transaction_digest(tx), pk))); + }FC_CAPTURE_AND_RETHROW((tx)(pk)) +} + +bool alexandria_api::verify_signature(digest_type digest, public_key_type pub_key, + fc::ecc::compact_signature signature) const { + try{ + if(pub_key == fc::ecc::public_key(signature, digest)) { + return true; + } + return false; + }FC_CAPTURE_AND_RETHROW((digest)(pub_key)(signature)) +} + +key_pair alexandria_api::generate_key_pair() const { + private_key_type priv_key = fc::ecc::private_key::generate(); + key_pair kp; + kp.pub_key = priv_key.get_public_key(); + kp.wif_priv_key = key_to_wif(priv_key); + return kp; +} + +key_pair alexandria_api::generate_key_pair_from_brain_key(string brain_key) const { + fc::sha512 h = fc::sha512::hash(brain_key + " 0"); + auto priv_key = fc::ecc::private_key::regenerate(fc::sha256::hash(h)); + key_pair kp; + kp.pub_key = priv_key.get_public_key(); + kp.wif_priv_key = key_to_wif(priv_key); + return kp; +} + +public_key_type alexandria_api::get_public_key(string private_key) const { + try{ + auto priv_key = *sophiatx::utilities::wif_to_key(private_key); + return priv_key.get_public_key(); + }FC_CAPTURE_AND_RETHROW((private_key)) +} + +std::vector alexandria_api::from_base58(string data) const { + return fc::from_base58(data); +} + +string alexandria_api::to_base58(std::vector data) const { + return fc::to_base58(data); +} + +string alexandria_api::encrypt_data(string data, public_key_type public_key, string private_key) const { + try { + memo_data m; + + auto priv_key = *sophiatx::utilities::wif_to_key(private_key); + + m.nonce = fc::time_point::now().time_since_epoch().count(); + + auto shared_secret = priv_key.get_shared_secret( public_key ); + + fc::sha512::encoder enc; + fc::raw::pack( enc, m.nonce ); + fc::raw::pack( enc, shared_secret ); + auto encrypt_key = enc.result(); + + m.encrypted = fc::aes_encrypt( encrypt_key, fc::raw::pack_to_vector(data) ); + m.check = fc::sha256::hash( encrypt_key )._hash[0]; + return string(m); + } FC_CAPTURE_AND_RETHROW((data)(public_key)(private_key)) +} + +string alexandria_api::decrypt_data(string data, public_key_type public_key, string private_key) const { + try { + auto m = memo_data::from_string( data ); + + FC_ASSERT(m , "Can not parse input!"); + + fc::sha512 shared_secret; + auto priv_key = *sophiatx::utilities::wif_to_key(private_key); + + shared_secret = priv_key.get_shared_secret(public_key); + + fc::sha512::encoder enc; + fc::raw::pack(enc, m->nonce); + fc::raw::pack(enc, shared_secret); + auto encryption_key = enc.result(); + + uint64_t check = fc::sha256::hash(encryption_key)._hash[ 0 ]; + + FC_ASSERT(check == m->check, "Checksum does not match!"); + + vector decrypted = fc::aes_decrypt(encryption_key, m->encrypted); + return fc::raw::unpack_from_vector(decrypted); + + } FC_CAPTURE_AND_RETHROW((data)(public_key)(private_key)) +} + +bool alexandria_api::account_exist(string account_name) const { + try { + string decoded_name = make_random_fixed_string(account_name); + auto accounts = my->_remote_api->get_accounts( { account_name, decoded_name } ); + + if( !accounts.empty()) { + return true; + } else { + return false; + } + } FC_CAPTURE_AND_RETHROW((account_name)) +} + + +authority alexandria_api::get_active_authority(string account_name) const { + try { + auto accounts = get_account(account_name); + if(accounts.size() == 1) { + return accounts.front().active; + } + + for(const auto& acc: accounts) { + if(acc.name == account_name_type(account_name)) { + return acc.active; + } + } + FC_ASSERT("Account name does not exist!"); + return authority(); + + } FC_CAPTURE_AND_RETHROW((account_name)) +} + +authority alexandria_api::get_owner_authority(string account_name) const { + try { + auto accounts = get_account(account_name); + if(accounts.size() == 1) { + return accounts.front().owner; + } + + for(const auto& acc: accounts) { + if(acc.name == account_name_type(account_name)) { + return acc.owner; + } + } + FC_ASSERT("Account name does not exist!"); + return authority(); + + } FC_CAPTURE_AND_RETHROW((account_name)) +} + +public_key_type alexandria_api::get_memo_key(string account_name) const { + try { + auto accounts = get_account(account_name); + if(accounts.size() == 1) { + return accounts.front().memo_key; + } + + for(const auto& acc: accounts) { + if(acc.name == account_name_type(account_name)) { + return acc.memo_key; + } + } + FC_ASSERT("Account name does not exist!"); + return public_key_type(); + } FC_CAPTURE_AND_RETHROW((account_name)) +} + +int64_t alexandria_api::get_account_balance(string account_name) const { + try { + auto accounts = get_account(account_name); + if(accounts.size() == 1) { + return accounts.front().balance.amount.value; + } + + for(const auto& acc: accounts) { + if(acc.name == account_name_type(account_name)) { + return acc.balance.amount.value; + } + } + FC_ASSERT("Account name does not exist!"); + return 0; + } FC_CAPTURE_AND_RETHROW((account_name)) +} + +int64_t alexandria_api::get_vesting_balance(string account_name) const { + try { + auto accounts = get_account(account_name); + if(accounts.size() == 1) { + return accounts.front().vesting_shares.amount.value; + } + + for(const auto& acc: accounts) { + if(acc.name == account_name_type(account_name)) { + return acc.vesting_shares.amount.value; + } + } + FC_ASSERT("Account name does not exist!"); + return 0; + } FC_CAPTURE_AND_RETHROW((account_name)) +} + +authority alexandria_api::create_simple_authority(public_key_type pub_key) const { + return authority(1, pub_key, 1); +} + +authority alexandria_api::create_simple_managed_authority(string managing_account) const { + string decoded_name = make_random_fixed_string(managing_account); + return authority(1, decoded_name, 1); +} + + + +authority +alexandria_api::create_simple_multisig_authority(vector pub_keys, uint32_t required_signatures) const { + authority auth; + auth.weight_threshold = required_signatures; + for(const auto& key : pub_keys) + { + auth.add_authority(key, 1); + } + return auth; +} + +authority alexandria_api::create_simple_multisig_managed_authority(vector managing_accounts, + uint32_t required_signatures) const { + authority auth; + auth.weight_threshold = required_signatures; + for(const auto& account : managing_accounts) + { + string decoded_name = make_random_fixed_string(account); + auth.add_authority(decoded_name, 1); + } + return auth; +} + +string alexandria_api::get_account_name_from_seed(string seed) const{ + return make_random_fixed_string(seed); +} + +asset alexandria_api::calculate_fee(operation op, asset_symbol_type symbol)const{ + auto props = my->_remote_api->get_chain_properties(); + + if(op.which() == operation::tag::value){ + return props.account_creation_fee; + } + + class op_visitor{ + public: + op_visitor(asset_symbol_type _symbol):symbol(_symbol){}; + asset_symbol_type symbol; + typedef asset result_type; + result_type operator()(const base_operation& bop){ + if(bop.has_special_fee()) + return asset(0, SOPHIATX_SYMBOL); + asset req_fee = bop.get_required_fee(symbol); + FC_ASSERT(symbol == req_fee.symbol, "fee cannot be paid in with symbol ${s}", ("s", bop.fee.symbol)); + return req_fee; + }; + }; + op_visitor op_v(symbol); + + asset fee = op.visit(op_v); + //check if the symbol has current price feed + FC_ASSERT(fee.symbol == SOPHIATX_SYMBOL || fiat_to_sphtx(fee).symbol == SOPHIATX_SYMBOL, "no current feed for this symbol"); + + return fee; +} + +asset alexandria_api::fiat_to_sphtx(asset fiat)const{ + auto price = my->_remote_api->get_feed_history(fiat.symbol).current_median_price; + if(price.base.amount == 0 || price.quote.amount == 0) + return fiat; + if(price.base.symbol!= fiat.symbol && price.quote.symbol!=fiat.symbol) + return fiat; + return fiat * price; +} + +set alexandria_api::get_required_signatures(signed_transaction tx) const { + try { + flat_set< account_name_type > req_active_approvals; + flat_set< account_name_type > req_owner_approvals; + vector< authority > other_auths; + + tx.get_required_authorities( req_active_approvals, req_owner_approvals, other_auths ); + + vector< account_name_type > v_approving_account_names; + std::merge(req_active_approvals.begin(), req_active_approvals.end(), + req_owner_approvals.begin() , req_owner_approvals.end(), + std::back_inserter( v_approving_account_names ) ); + + auto approving_account_objects = my->_remote_api->get_accounts( v_approving_account_names ); + + FC_ASSERT( approving_account_objects.size() == v_approving_account_names.size(), "", ("aco.size:", approving_account_objects.size())("acn",v_approving_account_names.size()) ); + + flat_map< string, condenser_api::api_account_object > approving_account_lut; + size_t i = 0; + for( const optional< condenser_api::api_account_object >& approving_acct : approving_account_objects ) + { + if( !approving_acct.valid() ) + { + wlog( "operation_get_required_auths said approval of non-existing account ${name} was needed", + ("name", v_approving_account_names[i]) ); + i++; + continue; + } + approving_account_lut[ approving_acct->name ] = *approving_acct; + i++; + } + + set approving_key_set; + for( account_name_type& acct_name : req_active_approvals ) + { + const auto it = approving_account_lut.find( acct_name ); + if( it == approving_account_lut.end() ) + continue; + const condenser_api::api_account_object& acct = it->second; + vector v_approving_keys = acct.active.get_keys(); + for( const public_key_type& approving_key : v_approving_keys ) + { + approving_key_set.insert( approving_key ); + } + } + + for( const account_name_type& acct_name : req_owner_approvals ) + { + const auto it = approving_account_lut.find( acct_name ); + if( it == approving_account_lut.end() ) + continue; + const condenser_api::api_account_object& acct = it->second; + vector v_approving_keys = acct.owner.get_keys(); + for( const public_key_type& approving_key : v_approving_keys ) + { + approving_key_set.insert( approving_key ); + } + } + + for( const authority& a : other_auths ) + { + for( const auto& k : a.key_auths ) + { + approving_key_set.insert( k.first ); + } + } + + return approving_key_set; + } FC_CAPTURE_AND_RETHROW((tx)) +} + +} } // sophiatx::alexandria + diff --git a/libraries/alexandria/remote_node_api.cpp b/libraries/alexandria/remote_node_api.cpp new file mode 100644 index 00000000..0ac29590 --- /dev/null +++ b/libraries/alexandria/remote_node_api.cpp @@ -0,0 +1,213 @@ +#include + +namespace sophiatx { namespace alexandria{ + +// This class exists only to provide method signature information to fc::api, not to execute calls. + +condenser_api::get_version_return remote_node_api::get_version() +{ + FC_ASSERT( false ); +} + +condenser_api::state remote_node_api::get_state( string ) +{ + FC_ASSERT( false ); +} + +vector< account_name_type > remote_node_api::get_active_witnesses() +{ + FC_ASSERT( false ); +} + +optional< block_header > remote_node_api::get_block_header( uint32_t ) +{ + FC_ASSERT( false ); +} + +optional< database_api::api_signed_block_object > remote_node_api::get_block( uint32_t ) +{ + FC_ASSERT( false ); +} + +vector< condenser_api::api_operation_object > remote_node_api::get_ops_in_block( uint32_t, bool only_virtual ) +{ + FC_ASSERT( false ); +} + +fc::variant_object remote_node_api::get_config() +{ + FC_ASSERT( false ); +} + +condenser_api::extended_dynamic_global_properties remote_node_api::get_dynamic_global_properties() +{ + FC_ASSERT( false ); +} + +chain_properties remote_node_api::get_chain_properties() +{ + FC_ASSERT( false ); +} + +condenser_api::legacy_price remote_node_api::get_current_median_history_price( asset_symbol_type ) +{ + FC_ASSERT( false ); +} + +condenser_api::api_feed_history_object remote_node_api::get_feed_history( asset_symbol_type ) +{ + FC_ASSERT( false ); +} + +condenser_api::api_witness_schedule_object remote_node_api::get_witness_schedule() +{ + FC_ASSERT( false ); +} + +hardfork_version remote_node_api::get_hardfork_version() +{ + FC_ASSERT( false ); +} + +condenser_api::scheduled_hardfork remote_node_api::get_next_scheduled_hardfork() +{ + FC_ASSERT( false ); +} + +vector< vector< account_name_type > > remote_node_api::get_key_references( vector< public_key_type > ) +{ + FC_ASSERT( false ); +} + +vector< condenser_api::extended_account > remote_node_api::get_accounts( vector< account_name_type > ) +{ + FC_ASSERT( false ); +} + +vector< account_id_type > remote_node_api::get_account_references( account_id_type account_id ) +{ + FC_ASSERT( false ); +} + +vector< optional< condenser_api::api_account_object > > remote_node_api::lookup_account_names( vector< account_name_type > ) +{ + FC_ASSERT( false ); +} + +vector< account_name_type > remote_node_api::lookup_accounts( account_name_type, uint32_t ) +{ + FC_ASSERT( false ); +} + +uint64_t remote_node_api::get_account_count() +{ + FC_ASSERT( false ); +} + +vector< database_api::api_owner_authority_history_object > remote_node_api::get_owner_history( account_name_type ) +{ + FC_ASSERT( false ); +} + +optional< database_api::api_account_recovery_request_object > remote_node_api::get_recovery_request( account_name_type ) +{ + FC_ASSERT( false ); +} + +optional< condenser_api::api_escrow_object > remote_node_api::get_escrow( account_name_type, uint32_t ) +{ + FC_ASSERT( false ); +} + + +vector< optional< condenser_api::api_witness_object > > remote_node_api::get_witnesses( vector< witness_id_type > ) +{ + FC_ASSERT( false ); +} + +optional< condenser_api::api_witness_object > remote_node_api::get_witness_by_account( account_name_type ) +{ + FC_ASSERT( false ); +} + +vector< condenser_api::api_witness_object > remote_node_api::get_witnesses_by_vote( account_name_type, uint32_t ) +{ + FC_ASSERT( false ); +} + +vector< account_name_type > remote_node_api::lookup_witness_accounts( string, uint32_t ) +{ + FC_ASSERT( false ); +} + +uint64_t remote_node_api::get_witness_count() +{ + FC_ASSERT( false ); +} + + +string remote_node_api::get_transaction_hex( signed_transaction ) +{ + FC_ASSERT( false ); +} + +annotated_signed_transaction remote_node_api::get_transaction( transaction_id_type ) +{ + FC_ASSERT( false ); +} + +set< public_key_type > remote_node_api::get_required_signatures( signed_transaction, flat_set< public_key_type > ) +{ + FC_ASSERT( false ); +} + +set< public_key_type > remote_node_api::get_potential_signatures( signed_transaction ) +{ + FC_ASSERT( false ); +} + +bool remote_node_api::verify_authority( signed_transaction ) +{ + FC_ASSERT( false ); +} + +bool remote_node_api::verify_account_authority( string, flat_set< public_key_type > ) +{ + FC_ASSERT( false ); +} + +map< uint32_t, condenser_api::api_operation_object > remote_node_api::get_account_history( account_name_type, uint64_t, uint32_t ) +{ + FC_ASSERT( false ); +} + +void remote_node_api::broadcast_transaction( signed_transaction ) +{ + FC_ASSERT( false ); +} + +network_broadcast_api::broadcast_transaction_synchronous_return remote_node_api::broadcast_transaction_synchronous( signed_transaction ) +{ + FC_ASSERT( false ); +} + +void remote_node_api::broadcast_block( signed_block ) +{ + FC_ASSERT( false ); +} + +vector remote_node_api::get_applications(vector) +{ + FC_ASSERT( false ); +} + +vector remote_node_api::get_application_buyings(std::string, uint32_t, std::string) +{ + FC_ASSERT( false ); +} + +map< uint64_t, condenser_api::api_received_object > remote_node_api::get_received_documents(uint32_t app_id, string account_name, string search_type, string start, uint32_t count){ + FC_ASSERT( false); +}; + +} } diff --git a/libraries/chain/CMakeLists.txt b/libraries/chain/CMakeLists.txt index 2bdf40f9..134cbd2a 100644 --- a/libraries/chain/CMakeLists.txt +++ b/libraries/chain/CMakeLists.txt @@ -1,34 +1,37 @@ -file(GLOB HEADERS "include/steem/chain/*.hpp" "include/steem/chain/util/*.hpp") +file(GLOB HEADERS "include/sophiatx/chain/*.hpp" "include/sophiatx/chain/util/*.hpp") ## SORT .cpp by most likely to change / break compile -add_library( steem_chain +add_library( sophiatx_chain # As database takes the longest to compile, start it first database.cpp smt_evaluator.cpp - steem_evaluator.cpp - steem_objects.cpp + sophiatx_evaluator.cpp + sophiatx_objects.cpp witness_schedule.cpp fork_database.cpp shared_authority.cpp block_log.cpp + economics.cpp - util/reward.cpp - util/impacted.cpp + util/impacted.cpp ${HEADERS} - ) + ) -target_link_libraries( steem_chain steem_protocol fc chainbase steem_schema ${PATCH_MERGE_LIB} ) -target_include_directories( steem_chain +target_link_libraries( sophiatx_chain sophiatx_protocol fc chainbase sophiatx_schema ${PATCH_MERGE_LIB} ) +target_include_directories( sophiatx_chain PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" "${CMAKE_CURRENT_BINARY_DIR}/include" ) +if (USE_PCH) + cotire(sophiatx_chain) +endif(USE_PCH) if( CLANG_TIDY_EXE ) set_target_properties( - steem_chain PROPERTIES + sophiatx_chain PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" ) endif( CLANG_TIDY_EXE ) @@ -38,10 +41,10 @@ if(MSVC) endif(MSVC) INSTALL( TARGETS - steem_chain + sophiatx_chain RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) -INSTALL( FILES ${HEADERS} DESTINATION "include/steem/chain" ) +INSTALL( FILES ${HEADERS} DESTINATION "include/sophiatx/chain" ) diff --git a/libraries/chain/block_log.cpp b/libraries/chain/block_log.cpp index 14de3463..4cb91b87 100644 --- a/libraries/chain/block_log.cpp +++ b/libraries/chain/block_log.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include @@ -9,7 +9,7 @@ #define LOG_READ (std::ios::in | std::ios::binary) #define LOG_WRITE (std::ios::out | std::ios::binary | std::ios::app) -namespace steem { namespace chain { +namespace sophiatx { namespace chain { typedef boost::interprocess::scoped_lock< boost::mutex > scoped_lock; @@ -382,4 +382,4 @@ namespace steem { namespace chain { { my->use_locking = true; } -} } // steem::chain +} } // sophiatx::chain diff --git a/libraries/chain/database.cpp b/libraries/chain/database.cpp index 73b621c2..3983a623 100644 --- a/libraries/chain/database.cpp +++ b/libraries/chain/database.cpp @@ -1,27 +1,27 @@ -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include #include #include @@ -37,7 +37,7 @@ #include #include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { struct object_schema_repr { @@ -61,20 +61,14 @@ struct db_schema } } -FC_REFLECT( steem::chain::object_schema_repr, (space_type)(type) ) -FC_REFLECT( steem::chain::operation_schema_repr, (id)(type) ) -FC_REFLECT( steem::chain::db_schema, (types)(object_types)(operation_type)(custom_operation_types) ) +FC_REFLECT( sophiatx::chain::object_schema_repr, (space_type)(type) ) +FC_REFLECT( sophiatx::chain::operation_schema_repr, (id)(type) ) +FC_REFLECT( sophiatx::chain::db_schema, (types)(object_types)(operation_type)(custom_operation_types) ) -namespace steem { namespace chain { +namespace sophiatx { namespace chain { using boost::container::flat_set; -struct reward_fund_context -{ - uint128_t recent_claims = 0; - asset reward_balance = asset( 0, STEEM_SYMBOL ); - share_type steem_awarded = 0; -}; class database_impl { @@ -91,7 +85,6 @@ database_impl::database_impl( database& self ) database::database() : _my( new database_impl(*this) ) { - set_chain_id( STEEM_CHAIN_ID_NAME ); } database::~database() @@ -99,7 +92,7 @@ database::~database() clear_pending(); } -void database::open( const open_args& args ) +void database::open( const open_args& args, const genesis_state_type& genesis ) { try { @@ -112,7 +105,7 @@ void database::open( const open_args& args ) if( !find< dynamic_global_property_object >() ) with_write_lock( [&]() { - init_genesis( args.initial_supply ); + init_genesis( genesis ); }); _block_log.open( args.data_dir / "block_log" ); @@ -156,26 +149,26 @@ void database::open( const open_args& args ) FC_CAPTURE_LOG_AND_RETHROW( (args.data_dir)(args.shared_mem_dir)(args.shared_file_size) ) } -uint32_t database::reindex( const open_args& args ) +uint32_t database::reindex( const open_args& args, const genesis_state_type& genesis ) { bool reindex_success = false; uint32_t last_block_number = 0; // result BOOST_SCOPE_EXIT(this_,&reindex_success,&last_block_number) { - STEEM_TRY_NOTIFY(this_->_on_reindex_done, reindex_success, last_block_number); + SOPHIATX_TRY_NOTIFY(this_->_on_reindex_done, reindex_success, last_block_number); } BOOST_SCOPE_EXIT_END try { - STEEM_TRY_NOTIFY(_on_reindex_start); + SOPHIATX_TRY_NOTIFY(_on_reindex_start); ilog( "Reindexing Blockchain" ); wipe( args.data_dir, args.shared_mem_dir, false ); - open( args ); + open( args, genesis ); _fork_db.reset(); // override effect of _fork_db.start_block() call in open() auto start = fc::time_point::now(); - STEEM_ASSERT( _block_log.head(), block_log_exception, "No blocks in block log. Cannot reindex an empty chain." ); + SOPHIATX_ASSERT( _block_log.head(), block_log_exception, "No blocks in block log. Cannot reindex an empty chain." ); ilog( "Replaying blocks..." ); @@ -385,12 +378,12 @@ std::vector< block_id_type > database::get_block_ids_on_fork( block_id_type head chain_id_type database::get_chain_id() const { - return steem_chain_id; + return get_dynamic_global_properties().chain_id; } -void database::set_chain_id( const std::string& _chain_id_name ) +time_point_sec database::get_genesis_time()const { - steem_chain_id = generate_chain_id( _chain_id_name ); + return get_dynamic_global_properties().genesis_time; } const witness_object& database::get_witness( const account_name_type& name ) const @@ -413,24 +406,9 @@ const account_object* database::find_account( const account_name_type& name )con return find< account_object, by_name >( name ); } -const comment_object& database::get_comment( const account_name_type& author, const shared_string& permlink )const -{ try { - return get< comment_object, by_permlink >( boost::make_tuple( author, permlink ) ); -} FC_CAPTURE_AND_RETHROW( (author)(permlink) ) } - -const comment_object* database::find_comment( const account_name_type& author, const shared_string& permlink )const -{ - return find< comment_object, by_permlink >( boost::make_tuple( author, permlink ) ); -} - -const comment_object& database::get_comment( const account_name_type& author, const string& permlink )const -{ try { - return get< comment_object, by_permlink >( boost::make_tuple( author, permlink) ); -} FC_CAPTURE_AND_RETHROW( (author)(permlink) ) } - -const comment_object* database::find_comment( const account_name_type& author, const string& permlink )const +const account_object* database::find_account( const account_id_type& id)const { - return find< comment_object, by_permlink >( boost::make_tuple( author, permlink ) ); + return find< account_object, by_id >( id ); } const escrow_object& database::get_escrow( const account_name_type& name, uint32_t escrow_id )const @@ -443,35 +421,35 @@ const escrow_object* database::find_escrow( const account_name_type& name, uint3 return find< escrow_object, by_from_id >( boost::make_tuple( name, escrow_id ) ); } -const limit_order_object& database::get_limit_order( const account_name_type& name, uint32_t orderid )const -{ try { - if( !has_hardfork( STEEM_HARDFORK_0_6__127 ) ) - orderid = orderid & 0x0000FFFF; - - return get< limit_order_object, by_account >( boost::make_tuple( name, orderid ) ); -} FC_CAPTURE_AND_RETHROW( (name)(orderid) ) } - -const limit_order_object* database::find_limit_order( const account_name_type& name, uint32_t orderid )const +const application_object &database::get_application(const string &name) const { - if( !has_hardfork( STEEM_HARDFORK_0_6__127 ) ) - orderid = orderid & 0x0000FFFF; - - return find< limit_order_object, by_account >( boost::make_tuple( name, orderid ) ); + try { + return get< application_object, by_name >( name ); + } FC_CAPTURE_AND_RETHROW( (name) ) } -const savings_withdraw_object& database::get_savings_withdraw( const account_name_type& owner, uint32_t request_id )const -{ try { - return get< savings_withdraw_object, by_from_rid >( boost::make_tuple( owner, request_id ) ); -} FC_CAPTURE_AND_RETHROW( (owner)(request_id) ) } +const application_object &database::get_application_by_id( const application_id_type id )const +{ + try { + return get< application_object, by_id >( id ); + } FC_CAPTURE_AND_RETHROW( (id) ) +} -const savings_withdraw_object* database::find_savings_withdraw( const account_name_type& owner, uint32_t request_id )const +const application_buying_object &database::get_application_buying(const account_name_type &buyer, const application_id_type app_id) const { - return find< savings_withdraw_object, by_from_rid >( boost::make_tuple( owner, request_id ) ); + try { + return get< application_buying_object, by_buyer_app >( boost::make_tuple(buyer, app_id) ); + } FC_CAPTURE_AND_RETHROW( (buyer)(app_id) ) } const dynamic_global_property_object&database::get_dynamic_global_properties() const { try { - return get< dynamic_global_property_object >(); + return get< dynamic_global_property_object >(); + } FC_CAPTURE_AND_RETHROW() } + +const economic_model_object&database::get_economic_model() const +{ try { + return get< economic_model_object >(); } FC_CAPTURE_AND_RETHROW() } const node_property_object& database::get_node_properties() const @@ -479,9 +457,12 @@ const node_property_object& database::get_node_properties() const return _node_property_object; } -const feed_history_object& database::get_feed_history()const +const feed_history_object & database::get_feed_history(asset_symbol_type a) const { try { - return get< feed_history_object >(); + const auto& fh_idx = get_index().indices().get(); + const auto fh_itr = fh_idx.find(a); + FC_ASSERT(fh_itr != fh_idx.end(), "Symbol history not found"); + return *fh_itr; } FC_CAPTURE_AND_RETHROW() } const witness_schedule_object& database::get_witness_schedule_object()const @@ -494,35 +475,84 @@ const hardfork_property_object& database::get_hardfork_property_object()const return get< hardfork_property_object >(); } FC_CAPTURE_AND_RETHROW() } -const time_point_sec database::calculate_discussion_payout_time( const comment_object& comment )const -{ - if( has_hardfork( STEEM_HARDFORK_0_17__769 ) || comment.parent_author == STEEM_ROOT_POST_PARENT ) - return comment.cashout_time; - else - return get< comment_object >( comment.root_comment ).cashout_time; -} - -const reward_fund_object& database::get_reward_fund( const comment_object& c ) const -{ - return get< reward_fund_object, by_name >( STEEM_POST_REWARD_FUND_NAME ); -} - -#pragma message( "After HF20 passes, re-apply the commit titled 'Remove now-redundant sufficient funds checks #1811'" ) void database::pay_fee( const account_object& account, asset fee ) { FC_ASSERT( fee.amount >= 0 ); /// NOTE if this fails then validate() on some operation is probably wrong if( fee.amount == 0 ) return; + FC_ASSERT(fee.symbol == SOPHIATX_SYMBOL); + FC_ASSERT( account.balance >= fee ); adjust_balance( account, -fee ); adjust_supply( -fee ); + const auto& econ = get_economic_model(); + modify(econ, [&](economic_model_object&e){ + e.add_fee(fee.amount); + }); +} + +asset database::process_operation_fee( const operation& op ) +{ + class op_visitor{ + public: + database* db; + op_visitor(database* _db){db = _db;}; + typedef asset result_type; + result_type operator()(const base_operation& bop){ + if(bop.has_special_fee()) + return asset(0, SOPHIATX_SYMBOL); + asset req_fee = bop.get_required_fee(bop.fee.symbol); + FC_ASSERT(bop.fee.symbol == req_fee.symbol, "fee cannot be paid in with symbol ${s}", ("s", bop.fee.symbol)); + FC_ASSERT(bop.fee >= req_fee); + auto sponsor = db->get_sponsor(bop.get_fee_payer()); + const auto& fee_payer = db->get_account(sponsor? *sponsor : bop.get_fee_payer()); + + asset to_pay; + if(bop.fee.symbol==SOPHIATX_SYMBOL){ + to_pay = bop.fee; + }else{ + to_pay = db->to_sophiatx(bop.fee); + } + FC_ASSERT(to_pay.symbol == SOPHIATX_SYMBOL && to_pay.amount >= 0); + db->pay_fee(fee_payer, to_pay); + return to_pay; + }; + }; + op_visitor op_v(this); + asset paid_fee = op.visit(op_v); + return paid_fee; +} + +account_name_type database::get_fee_payer(const operation& op){ + class op_visitor{ + public: + database* db; + op_visitor(database* _db){db = _db;}; + typedef account_name_type result_type; + result_type operator()(const base_operation& bop){ + auto sponsor = db->get_sponsor(bop.get_fee_payer()); + return sponsor? *sponsor : bop.get_fee_payer(); + } + }; + + op_visitor op_v(this); + return op.visit(op_v); +} + +optional database::get_sponsor(const account_name_type& who) const { + try { + const account_fee_sponsor_object *s = find(who); + if( s ) + return s->sponsor; + return optional(); + } FC_LOG_AND_RETHROW() } -uint32_t database::witness_participation_rate()const + uint32_t database::witness_participation_rate()const { const dynamic_global_property_object& dpo = get_dynamic_global_properties(); - return uint64_t(STEEM_100_PERCENT) * dpo.recent_slots_filled.popcount() / 128; + return uint64_t(SOPHIATX_100_PERCENT) * dpo.recent_slots_filled.popcount() / 128; } void database::add_checkpoints( const flat_map< uint32_t, block_id_type >& checkpts ) @@ -764,10 +794,12 @@ signed_block database::_generate_block( const auto& witness_obj = get_witness( witness_owner ); if( !(skip & skip_witness_signature) ) - FC_ASSERT( witness_obj.signing_key == block_signing_private_key.get_public_key() ); + FC_ASSERT( witness_obj.signing_key == block_signing_private_key.get_public_key(), + "The witness signing key ${ws} is different to the block generation key ${bs}", + ("ws",witness_obj.signing_key)("bs", block_signing_private_key.get_public_key()) ); static const size_t max_block_header_size = fc::raw::pack_size( signed_block_header() ) + 4; - auto maximum_block_size = get_dynamic_global_properties().maximum_block_size; //STEEM_MAX_BLOCK_SIZE; + auto maximum_block_size = get_dynamic_global_properties().maximum_block_size; //SOPHIATX_MAX_BLOCK_SIZE; size_t total_block_size = max_block_header_size; signed_block pending_block; @@ -841,23 +873,22 @@ signed_block database::_generate_block( pending_block.timestamp = when; pending_block.transaction_merkle_root = pending_block.calculate_merkle_root(); pending_block.witness = witness_owner; - if( has_hardfork( STEEM_HARDFORK_0_5__54 ) ) { const auto& witness = get_witness( witness_owner ); - if( witness.running_version != STEEM_BLOCKCHAIN_VERSION ) - pending_block.extensions.insert( block_header_extensions( STEEM_BLOCKCHAIN_VERSION ) ); + if( witness.running_version != SOPHIATX_BLOCKCHAIN_VERSION ) + pending_block.extensions.insert( block_header_extensions( SOPHIATX_BLOCKCHAIN_VERSION ) ); const auto& hfp = get_hardfork_property_object(); - if( hfp.current_hardfork_version < STEEM_BLOCKCHAIN_VERSION // Binary is newer hardfork than has been applied + if( hfp.current_hardfork_version < SOPHIATX_BLOCKCHAIN_VERSION // Binary is newer hardfork than has been applied && ( witness.hardfork_version_vote != _hardfork_versions[ hfp.last_hardfork + 1 ] || witness.hardfork_time_vote != _hardfork_times[ hfp.last_hardfork + 1 ] ) ) // Witness vote does not match binary configuration { // Make vote match binary configuration pending_block.extensions.insert( block_header_extensions( hardfork_version_vote( _hardfork_versions[ hfp.last_hardfork + 1 ], _hardfork_times[ hfp.last_hardfork + 1 ] ) ) ); } - else if( hfp.current_hardfork_version == STEEM_BLOCKCHAIN_VERSION // Binary does not know of a new hardfork - && witness.hardfork_version_vote > STEEM_BLOCKCHAIN_VERSION ) // Voting for hardfork in the future, that we do not know of... + else if( hfp.current_hardfork_version == SOPHIATX_BLOCKCHAIN_VERSION // Binary does not know of a new hardfork + && witness.hardfork_version_vote > SOPHIATX_BLOCKCHAIN_VERSION ) // Voting for hardfork in the future, that we do not know of... { // Make vote match binary configuration. This is vote to not apply the new hardfork. pending_block.extensions.insert( block_header_extensions( hardfork_version_vote( _hardfork_versions[ hfp.last_hardfork ], _hardfork_times[ hfp.last_hardfork ] ) ) ); @@ -870,7 +901,7 @@ signed_block database::_generate_block( // TODO: Move this to _push_block() so session is restored. if( !(skip & skip_block_size_check) ) { - FC_ASSERT( fc::raw::pack_size(pending_block) <= STEEM_MAX_BLOCK_SIZE ); + FC_ASSERT( fc::raw::pack_size(pending_block) <= SOPHIATX_MAX_BLOCK_SIZE ); } push_block( pending_block, skip ); @@ -891,7 +922,7 @@ void database::pop_block() /// save the head block so we can recover its transactions optional head_block = fetch_block_by_id( head_id ); - STEEM_ASSERT( head_block.valid(), pop_empty_chain, "there are no blocks to pop" ); + SOPHIATX_ASSERT( head_block.valid(), pop_empty_chain, "there are no blocks to pop" ); _fork_db.pop_block(); undo(); @@ -920,12 +951,13 @@ void database::notify_pre_apply_operation( operation_notification& note ) note.trx_in_block = _current_trx_in_block; note.op_in_trx = _current_op_in_trx; - STEEM_TRY_NOTIFY( pre_apply_operation, note ) + + SOPHIATX_TRY_NOTIFY( pre_apply_operation, note ) } void database::notify_post_apply_operation( const operation_notification& note ) { - STEEM_TRY_NOTIFY( post_apply_operation, note ) + SOPHIATX_TRY_NOTIFY( post_apply_operation, note ) } inline const void database::push_virtual_operation( const operation& op, bool force ) @@ -947,22 +979,22 @@ inline const void database::push_virtual_operation( const operation& op, bool fo void database::notify_applied_block( const signed_block& block ) { - STEEM_TRY_NOTIFY( applied_block, block ) + SOPHIATX_TRY_NOTIFY( applied_block, block ) } void database::notify_on_pending_transaction( const signed_transaction& tx ) { - STEEM_TRY_NOTIFY( on_pending_transaction, tx ) + SOPHIATX_TRY_NOTIFY( on_pending_transaction, tx ) } void database::notify_on_pre_apply_transaction( const signed_transaction& tx ) { - STEEM_TRY_NOTIFY( on_pre_apply_transaction, tx ) + SOPHIATX_TRY_NOTIFY( on_pre_apply_transaction, tx ) } void database::notify_on_applied_transaction( const signed_transaction& tx ) { - STEEM_TRY_NOTIFY( on_applied_transaction, tx ) + SOPHIATX_TRY_NOTIFY( on_applied_transaction, tx ) } account_name_type database::get_scheduled_witness( uint32_t slot_num )const @@ -978,7 +1010,7 @@ fc::time_point_sec database::get_slot_time(uint32_t slot_num)const if( slot_num == 0 ) return fc::time_point_sec(); - auto interval = STEEM_BLOCK_INTERVAL; + auto interval = SOPHIATX_BLOCK_INTERVAL; const dynamic_global_property_object& dpo = get_dynamic_global_properties(); if( head_block_num() == 0 ) @@ -1003,156 +1035,45 @@ uint32_t database::get_slot_at_time(fc::time_point_sec when)const fc::time_point_sec first_slot_time = get_slot_time( 1 ); if( when < first_slot_time ) return 0; - return (when - first_slot_time).to_seconds() / STEEM_BLOCK_INTERVAL + 1; -} - -/** - * Converts STEEM into sbd and adds it to to_account while reducing the STEEM supply - * by STEEM and increasing the sbd supply by the specified amount. - */ -std::pair< asset, asset > database::create_sbd( const account_object& to_account, asset steem, bool to_reward_balance ) -{ - std::pair< asset, asset > assets( asset( 0, SBD_SYMBOL ), asset( 0, STEEM_SYMBOL ) ); - - try - { - if( steem.amount == 0 ) - return assets; - - const auto& median_price = get_feed_history().current_median_history; - const auto& gpo = get_dynamic_global_properties(); - - if( !median_price.is_null() ) - { - auto to_sbd = ( gpo.sbd_print_rate * steem.amount ) / STEEM_100_PERCENT; - auto to_steem = steem.amount - to_sbd; - - auto sbd = asset( to_sbd, STEEM_SYMBOL ) * median_price; - - if( to_reward_balance ) - { - adjust_reward_balance( to_account, sbd ); - adjust_reward_balance( to_account, asset( to_steem, STEEM_SYMBOL ) ); - } - else - { - adjust_balance( to_account, sbd ); - adjust_balance( to_account, asset( to_steem, STEEM_SYMBOL ) ); - } - - adjust_supply( asset( -to_sbd, STEEM_SYMBOL ) ); - adjust_supply( sbd ); - assets.first = sbd; - assets.second = asset( to_steem, STEEM_SYMBOL ); - } - else - { - adjust_balance( to_account, steem ); - assets.second = steem; - } - } - FC_CAPTURE_LOG_AND_RETHROW( (to_account.name)(steem) ) - - return assets; -} - -/** - * @param to_account - the account to receive the new vesting shares - * @param STEEM - STEEM to be converted to vesting shares - */ -asset database::create_vesting( const account_object& to_account, asset steem, bool to_reward_balance ) -{ - try - { - const auto& cprops = get_dynamic_global_properties(); - - /** - * The ratio of total_vesting_shares / total_vesting_fund_steem should not - * change as the result of the user adding funds - * - * V / C = (V+Vn) / (C+Cn) - * - * Simplifies to Vn = (V * Cn ) / C - * - * If Cn equals o.amount, then we must solve for Vn to know how many new vesting shares - * the user should receive. - * - * 128 bit math is requred due to multiplying of 64 bit numbers. This is done in asset and price. - */ - asset new_vesting = steem * ( to_reward_balance ? cprops.get_reward_vesting_share_price() : cprops.get_vesting_share_price() ); - - modify( to_account, [&]( account_object& to ) - { - if( to_reward_balance ) - { - to.reward_vesting_balance += new_vesting; - to.reward_vesting_steem += steem; - } - else - to.vesting_shares += new_vesting; - } ); - - modify( cprops, [&]( dynamic_global_property_object& props ) - { - if( to_reward_balance ) - { - props.pending_rewarded_vesting_shares += new_vesting; - props.pending_rewarded_vesting_steem += steem; - } - else - { - props.total_vesting_fund_steem += steem; - props.total_vesting_shares += new_vesting; - } - } ); - - if( !to_reward_balance ) - adjust_proxied_witness_votes( to_account, new_vesting.amount ); - - return new_vesting; - } - FC_CAPTURE_AND_RETHROW( (to_account.name)(steem) ) + return (when - first_slot_time).to_seconds() / SOPHIATX_BLOCK_INTERVAL + 1; } -fc::sha256 database::get_pow_target()const -{ - const auto& dgp = get_dynamic_global_properties(); - fc::sha256 target; - target._hash[0] = -1; - target._hash[1] = -1; - target._hash[2] = -1; - target._hash[3] = -1; - target = target >> ((dgp.num_pow_witnesses/4)+4); - return target; -} +void database::vest( const account_name_type& name, const share_type delta) +{try{ + const auto& a = get_account(name); + vest(a, delta); +}FC_LOG_AND_RETHROW() } -uint32_t database::get_pow_summary_target()const +void database::vest(const account_object& a, const share_type delta) { - const dynamic_global_property_object& dgp = get_dynamic_global_properties(); - if( dgp.num_pow_witnesses >= 1004 ) - return 0; + FC_ASSERT(a.balance.amount >= delta); + modify(a, [&](account_object& ao){ + ao.balance.amount -= delta; + ao.vesting_shares.amount += delta; + }); + const auto& cprops = get_dynamic_global_properties(); - if( has_hardfork( STEEM_HARDFORK_0_16__551 ) ) - return (0xFE00 - 0x0040 * dgp.num_pow_witnesses ) << 0x10; - else - return (0xFC00 - 0x0040 * dgp.num_pow_witnesses) << 0x10; + modify( cprops, [&]( dynamic_global_property_object& o ) + { + o.total_vesting_shares.amount += delta; + }); } void database::adjust_proxied_witness_votes( const account_object& a, - const std::array< share_type, STEEM_MAX_PROXY_RECURSION_DEPTH+1 >& delta, + const std::array< share_type, SOPHIATX_MAX_PROXY_RECURSION_DEPTH+1 >& delta, int depth ) { - if( a.proxy != STEEM_PROXY_TO_SELF_ACCOUNT ) + if( a.proxy != SOPHIATX_PROXY_TO_SELF_ACCOUNT ) { /// nested proxies are not supported, vote will not propagate - if( depth >= STEEM_MAX_PROXY_RECURSION_DEPTH ) + if( depth >= SOPHIATX_MAX_PROXY_RECURSION_DEPTH ) return; const auto& proxy = get_account( a.proxy ); modify( proxy, [&]( account_object& a ) { - for( int i = STEEM_MAX_PROXY_RECURSION_DEPTH - depth - 1; i >= 0; --i ) + for( int i = SOPHIATX_MAX_PROXY_RECURSION_DEPTH - depth - 1; i >= 0; --i ) { a.proxied_vsf_votes[i+depth] += delta[i]; } @@ -1163,7 +1084,7 @@ void database::adjust_proxied_witness_votes( const account_object& a, else { share_type total_delta = 0; - for( int i = STEEM_MAX_PROXY_RECURSION_DEPTH - depth; i >= 0; --i ) + for( int i = SOPHIATX_MAX_PROXY_RECURSION_DEPTH - depth; i >= 0; --i ) total_delta += delta[i]; adjust_witness_votes( a, total_delta ); } @@ -1171,10 +1092,10 @@ void database::adjust_proxied_witness_votes( const account_object& a, void database::adjust_proxied_witness_votes( const account_object& a, share_type delta, int depth ) { - if( a.proxy != STEEM_PROXY_TO_SELF_ACCOUNT ) + if( a.proxy != SOPHIATX_PROXY_TO_SELF_ACCOUNT ) { /// nested proxies are not supported, vote will not propagate - if( depth >= STEEM_MAX_PROXY_RECURSION_DEPTH ) + if( depth >= SOPHIATX_MAX_PROXY_RECURSION_DEPTH ) return; const auto& proxy = get_account( a.proxy ); @@ -1213,19 +1134,14 @@ void database::adjust_witness_vote( const witness_object& witness, share_type de w.virtual_last_update = wso.current_virtual_time; w.votes += delta; - FC_ASSERT( w.votes <= get_dynamic_global_properties().total_vesting_shares.amount, "", ("w.votes", w.votes)("props",get_dynamic_global_properties().total_vesting_shares) ); - if( has_hardfork( STEEM_HARDFORK_0_2 ) ) - w.virtual_scheduled_time = w.virtual_last_update + (STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH2 - w.virtual_position)/(w.votes.value+1); - else - w.virtual_scheduled_time = w.virtual_last_update + (STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH - w.virtual_position)/(w.votes.value+1); + w.virtual_scheduled_time = w.virtual_last_update + (SOPHIATX_VIRTUAL_SCHEDULE_LAP_LENGTH2 - w.virtual_position)/(w.votes.value+1); /** witnesses with a low number of votes could overflow the time field and end up with a scheduled time in the past */ - if( has_hardfork( STEEM_HARDFORK_0_4 ) ) - { - if( w.virtual_scheduled_time < wso.current_virtual_time ) - w.virtual_scheduled_time = fc::uint128::max_value(); - } + + if( w.virtual_scheduled_time < wso.current_virtual_time ) + w.virtual_scheduled_time = fc::uint128::max_value(); + } ); } @@ -1240,54 +1156,32 @@ void database::clear_witness_votes( const account_object& a ) remove(current); } - if( has_hardfork( STEEM_HARDFORK_0_6__104 ) ) - modify( a, [&](account_object& acc ) - { - acc.witnesses_voted_for = 0; - }); + modify( a, [&](account_object& acc ) + { + acc.witnesses_voted_for = 0; + }); } void database::clear_null_account_balance() { - if( !has_hardfork( STEEM_HARDFORK_0_14__327 ) ) return; - const auto& null_account = get_account( STEEM_NULL_ACCOUNT ); - asset total_steem( 0, STEEM_SYMBOL ); - asset total_sbd( 0, SBD_SYMBOL ); + const auto& null_account = get_account( SOPHIATX_NULL_ACCOUNT ); + asset total_sophiatx( 0, SOPHIATX_SYMBOL ); if( null_account.balance.amount > 0 ) { - total_steem += null_account.balance; + total_sophiatx += null_account.balance; adjust_balance( null_account, -null_account.balance ); } - if( null_account.savings_balance.amount > 0 ) - { - total_steem += null_account.savings_balance; - adjust_savings_balance( null_account, -null_account.savings_balance ); - } - - if( null_account.sbd_balance.amount > 0 ) - { - total_sbd += null_account.sbd_balance; - adjust_balance( null_account, -null_account.sbd_balance ); - } - - if( null_account.savings_sbd_balance.amount > 0 ) - { - total_sbd += null_account.savings_sbd_balance; - adjust_savings_balance( null_account, -null_account.savings_sbd_balance ); - } - if( null_account.vesting_shares.amount > 0 ) { const auto& gpo = get_dynamic_global_properties(); - auto converted_steem = null_account.vesting_shares * gpo.get_vesting_share_price(); + auto converted_sophiatx = null_account.vesting_shares; modify( gpo, [&]( dynamic_global_property_object& g ) { g.total_vesting_shares -= null_account.vesting_shares; - g.total_vesting_fund_steem -= converted_steem; }); modify( null_account, [&]( account_object& a ) @@ -1295,86 +1189,34 @@ void database::clear_null_account_balance() a.vesting_shares.amount = 0; }); - total_steem += converted_steem; - } - - if( null_account.reward_steem_balance.amount > 0 ) - { - total_steem += null_account.reward_steem_balance; - adjust_reward_balance( null_account, -null_account.reward_steem_balance ); - } - - if( null_account.reward_sbd_balance.amount > 0 ) - { - total_sbd += null_account.reward_sbd_balance; - adjust_reward_balance( null_account, -null_account.reward_sbd_balance ); - } - - if( null_account.reward_vesting_balance.amount > 0 ) - { - const auto& gpo = get_dynamic_global_properties(); - - total_steem += null_account.reward_vesting_steem; - - modify( gpo, [&]( dynamic_global_property_object& g ) - { - g.pending_rewarded_vesting_shares -= null_account.reward_vesting_balance; - g.pending_rewarded_vesting_steem -= null_account.reward_vesting_steem; - }); - - modify( null_account, [&]( account_object& a ) - { - a.reward_vesting_steem.amount = 0; - a.reward_vesting_balance.amount = 0; - }); + total_sophiatx.amount += converted_sophiatx.amount; } - if( total_steem.amount > 0 ) - adjust_supply( -total_steem ); + if( total_sophiatx.amount > 0 ) + adjust_supply( -total_sophiatx ); - if( total_sbd.amount > 0 ) - adjust_supply( -total_sbd ); } -/** - * This method updates total_reward_shares2 on DGPO, and children_rshares2 on comments, when a comment's rshares2 changes - * from old_rshares2 to new_rshares2. Maintaining invariants that children_rshares2 is the sum of all descendants' rshares2, - * and dgpo.total_reward_shares2 is the total number of rshares2 outstanding. - */ -void database::adjust_rshares2( const comment_object& c, fc::uint128_t old_rshares2, fc::uint128_t new_rshares2 ) +void database::update_owner_authority( const account_object& account, const authority& owner_authority ) { - const auto& dgpo = get_dynamic_global_properties(); - modify( dgpo, [&]( dynamic_global_property_object& p ) - { - p.total_reward_shares2 -= old_rshares2; - p.total_reward_shares2 += new_rshares2; - } ); -} + create< owner_authority_history_object >( [&]( owner_authority_history_object& hist ) { + hist.account = account.name; + hist.previous_owner_authority = get< account_authority_object, by_account >( account.name ).owner; + hist.last_valid_time = head_block_time(); + }); -void database::update_owner_authority( const account_object& account, const authority& owner_authority ) -{ - if( head_block_num() >= STEEM_OWNER_AUTH_HISTORY_TRACKING_START_BLOCK_NUM ) - { - create< owner_authority_history_object >( [&]( owner_authority_history_object& hist ) - { - hist.account = account.name; - hist.previous_owner_authority = get< account_authority_object, by_account >( account.name ).owner; - hist.last_valid_time = head_block_time(); - }); - } modify( get< account_authority_object, by_account >( account.name ), [&]( account_authority_object& auth ) { - auth.owner = owner_authority; - auth.last_owner_update = head_block_time(); + auth.owner = owner_authority; + auth.last_owner_update = head_block_time(); }); } void database::process_vesting_withdrawals() { const auto& widx = get_index< account_index, by_next_vesting_withdrawal >(); - const auto& didx = get_index< withdraw_vesting_route_index, by_withdraw_route >(); auto current = widx.begin(); const auto& cprops = get_dynamic_global_properties(); @@ -1396,76 +1238,11 @@ void database::process_vesting_withdrawals() else to_withdraw = std::min( from_account.vesting_shares.amount, from_account.vesting_withdraw_rate.amount ).value; - share_type vests_deposited_as_steem = 0; - share_type vests_deposited_as_vests = 0; - asset total_steem_converted = asset( 0, STEEM_SYMBOL ); - - // Do two passes, the first for vests, the second for steem. Try to maintain as much accuracy for vests as possible. - for( auto itr = didx.upper_bound( boost::make_tuple( from_account.name, account_name_type() ) ); - itr != didx.end() && itr->from_account == from_account.name; - ++itr ) - { - if( itr->auto_vest ) - { - share_type to_deposit = ( ( fc::uint128_t ( to_withdraw.value ) * itr->percent ) / STEEM_100_PERCENT ).to_uint64(); - vests_deposited_as_vests += to_deposit; - - if( to_deposit > 0 ) - { - const auto& to_account = get< account_object, by_name >( itr->to_account ); - - modify( to_account, [&]( account_object& a ) - { - a.vesting_shares.amount += to_deposit; - }); - - adjust_proxied_witness_votes( to_account, to_deposit ); - - push_virtual_operation( fill_vesting_withdraw_operation( from_account.name, to_account.name, asset( to_deposit, VESTS_SYMBOL ), asset( to_deposit, VESTS_SYMBOL ) ) ); - } - } - } - - for( auto itr = didx.upper_bound( boost::make_tuple( from_account.name, account_name_type() ) ); - itr != didx.end() && itr->from_account == from_account.name; - ++itr ) - { - if( !itr->auto_vest ) - { - const auto& to_account = get< account_object, by_name >( itr->to_account ); - - share_type to_deposit = ( ( fc::uint128_t ( to_withdraw.value ) * itr->percent ) / STEEM_100_PERCENT ).to_uint64(); - vests_deposited_as_steem += to_deposit; - auto converted_steem = asset( to_deposit, VESTS_SYMBOL ) * cprops.get_vesting_share_price(); - total_steem_converted += converted_steem; - - if( to_deposit > 0 ) - { - modify( to_account, [&]( account_object& a ) - { - a.balance += converted_steem; - }); - - modify( cprops, [&]( dynamic_global_property_object& o ) - { - o.total_vesting_fund_steem -= converted_steem; - o.total_vesting_shares.amount -= to_deposit; - }); - - push_virtual_operation( fill_vesting_withdraw_operation( from_account.name, to_account.name, asset( to_deposit, VESTS_SYMBOL), converted_steem ) ); - } - } - } - - share_type to_convert = to_withdraw - vests_deposited_as_steem - vests_deposited_as_vests; - FC_ASSERT( to_convert >= 0, "Deposited more vests than were supposed to be withdrawn" ); - - auto converted_steem = asset( to_convert, VESTS_SYMBOL ) * cprops.get_vesting_share_price(); modify( from_account, [&]( account_object& a ) { a.vesting_shares.amount -= to_withdraw; - a.balance += converted_steem; + a.balance.amount += to_withdraw; a.withdrawn += to_withdraw; if( a.withdrawn >= a.to_withdraw || a.vesting_shares.amount == 0 ) @@ -1475,729 +1252,139 @@ void database::process_vesting_withdrawals() } else { - a.next_vesting_withdrawal += fc::seconds( STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS ); + a.next_vesting_withdrawal += fc::seconds( SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS ); } }); modify( cprops, [&]( dynamic_global_property_object& o ) { - o.total_vesting_fund_steem -= converted_steem; - o.total_vesting_shares.amount -= to_convert; + o.total_vesting_shares.amount -= to_withdraw; }); - if( to_withdraw > 0 ) - adjust_proxied_witness_votes( from_account, -to_withdraw ); + //if( to_withdraw > 0 ) + // adjust_proxied_witness_votes( from_account, -to_withdraw ); - push_virtual_operation( fill_vesting_withdraw_operation( from_account.name, from_account.name, asset( to_convert, VESTS_SYMBOL ), converted_steem ) ); + push_virtual_operation( fill_vesting_withdraw_operation( from_account.name, from_account.name, asset( to_withdraw, VESTS_SYMBOL ), asset( to_withdraw, SOPHIATX_SYMBOL ) ) ); } } -void database::adjust_total_payout( const comment_object& cur, const asset& sbd_created, const asset& curator_sbd_value, const asset& beneficiary_value ) -{ - modify( cur, [&]( comment_object& c ) - { - // input assets should be in sbd - c.total_payout_value += sbd_created; - c.curator_payout_value += curator_sbd_value; - c.beneficiary_payout_value += beneficiary_value; - } ); - /// TODO: potentially modify author's total payout numbers as well -} - +//TODO_SOPHIA - rework /** - * This method will iterate through all comment_vote_objects and give them - * (max_rewards * weight) / c.total_vote_weight. + * Overall the network has an inflation rate of 102% of virtual sophiatx per year + * 90% of inflation is directed to vesting shares + * 10% of inflation is directed to subjective proof of work voting + * 1% of inflation is directed to liquidity providers + * 1% of inflation is directed to block producers * - * @returns unclaimed rewards. + * This method pays out vesting and reward shares every block, and liquidity shares once per day. + * This method does not pay out witnesses. */ -share_type database::pay_curators( const comment_object& c, share_type& max_rewards ) +void database::process_funds() { - try + const auto& props = get_dynamic_global_properties(); + const auto& wso = get_witness_schedule_object(); + const auto& economics = get_economic_model(); + + share_type witness_reward; + uint32_t denominator = wso.witness_pay_normalization_factor; + uint32_t nominator; + + const auto& cwit = get_witness( props.current_witness ); + if( cwit.schedule == witness_object::timeshare ) + nominator = wso.timeshare_weight; + else if( cwit.schedule == witness_object::top19 ) + nominator = wso.top19_weight; + // b - avg block reward + //(no_voted * x + no_timeshared *y) = (no_voted+no_timeshared) * b + //y=3x + //25 * x = 21 * b + // x = 21 / 25 * b + // y = 63 / 25 * b + + modify(economics, [&](economic_model_object& e){ + witness_reward = e.withdraw_mining_reward(_current_block_num, nominator, denominator); + }); + + push_virtual_operation( producer_reward_operation( cwit.owner, asset(witness_reward, VESTS_SYMBOL) ) ); + create_vesting(cwit.owner, asset(witness_reward, VESTS_SYMBOL)); + + modify( props, [&]( dynamic_global_property_object& p ) { - uint128_t total_weight( c.total_vote_weight ); - //edump( (total_weight)(max_rewards) ); - share_type unclaimed_rewards = max_rewards; + p.current_supply += asset( witness_reward, SOPHIATX_SYMBOL ); + p.total_vesting_shares += asset( witness_reward, VESTS_SYMBOL ); + }); - if( !c.allow_curation_rewards ) - { - unclaimed_rewards = 0; - max_rewards = 0; - } - else if( c.total_vote_weight > 0 ) - { - const auto& cvidx = get_index().indices().get(); - auto itr = cvidx.lower_bound( c.id ); - while( itr != cvidx.end() && itr->comment == c.id ) - { - uint128_t weight( itr->weight ); - auto claim = ( ( max_rewards.value * weight ) / total_weight ).to_uint64(); - if( claim > 0 ) // min_amt is non-zero satoshis - { - unclaimed_rewards -= claim; - const auto& voter = get(itr->voter); - auto reward = create_vesting( voter, asset( claim, STEEM_SYMBOL ), has_hardfork( STEEM_HARDFORK_0_17__659 ) ); - - push_virtual_operation( curation_reward_operation( voter.name, reward, c.author, to_string( c.permlink ) ) ); - - #ifndef IS_LOW_MEM - modify( voter, [&]( account_object& a ) - { - a.curation_rewards += claim; - }); - #endif - } - ++itr; - } - } - max_rewards -= unclaimed_rewards; +} - return unclaimed_rewards; - } FC_CAPTURE_AND_RETHROW() +asset database::to_sbd(const asset &sophiatx, asset_symbol_type to_symbol) const +{ + return util::to_sbd(get_feed_history(to_symbol).current_median_history, sophiatx ); } -void fill_comment_reward_context_local_state( util::comment_reward_context& ctx, const comment_object& comment ) +asset database::to_sophiatx( const asset& sbd )const { - ctx.rshares = comment.net_rshares; - ctx.reward_weight = comment.reward_weight; - ctx.max_sbd = comment.max_accepted_payout; + return util::to_sophiatx(get_feed_history(sbd.symbol).current_median_history, sbd ); } -share_type database::cashout_comment_helper( util::comment_reward_context& ctx, const comment_object& comment ) +void database::account_recovery_processing() { - try + // Clear expired recovery requests + const auto& rec_req_idx = get_index< account_recovery_request_index >().indices().get< by_expiration >(); + auto rec_req = rec_req_idx.begin(); + + while( rec_req != rec_req_idx.end() && rec_req->expires <= head_block_time() ) { - share_type claimed_reward = 0; + remove( *rec_req ); + rec_req = rec_req_idx.begin(); + } - if( comment.net_rshares > 0 ) - { - fill_comment_reward_context_local_state( ctx, comment ); + // Clear invalid historical authorities + const auto& hist_idx = get_index< owner_authority_history_index >().indices(); //by id + auto hist = hist_idx.begin(); - if( has_hardfork( STEEM_HARDFORK_0_17__774 ) ) - { - const auto rf = get_reward_fund( comment ); - ctx.reward_curve = rf.author_reward_curve; - ctx.content_constant = rf.content_constant; - } + while( hist != hist_idx.end() && time_point_sec( hist->last_valid_time + SOPHIATX_OWNER_AUTH_RECOVERY_PERIOD ) < head_block_time() ) + { + remove( *hist ); + hist = hist_idx.begin(); + } - const share_type reward = util::get_rshare_reward( ctx ); - uint128_t reward_tokens = uint128_t( reward.value ); + // Apply effective recovery_account changes + const auto& change_req_idx = get_index< change_recovery_account_request_index >().indices().get< by_effective_date >(); + auto change_req = change_req_idx.begin(); - if( reward_tokens > 0 ) - { - share_type curation_tokens = ( ( reward_tokens * get_curation_rewards_percent( comment ) ) / STEEM_100_PERCENT ).to_uint64(); - share_type author_tokens = reward_tokens.to_uint64() - curation_tokens; + while( change_req != change_req_idx.end() && change_req->effective_on <= head_block_time() ) + { + modify( get_account( change_req->account_to_recover ), [&]( account_object& a ) + { + a.recovery_account = change_req->recovery_account; + }); - author_tokens += pay_curators( comment, curation_tokens ); - share_type total_beneficiary = 0; - claimed_reward = author_tokens + curation_tokens; + remove( *change_req ); + change_req = change_req_idx.begin(); + } +} - for( auto& b : comment.beneficiaries ) - { - auto benefactor_tokens = ( author_tokens * b.weight ) / STEEM_100_PERCENT; - auto vest_created = create_vesting( get_account( b.account ), asset( benefactor_tokens, STEEM_SYMBOL ), has_hardfork( STEEM_HARDFORK_0_17__659 ) ); - push_virtual_operation( comment_benefactor_reward_operation( b.account, comment.author, to_string( comment.permlink ), vest_created ) ); - total_beneficiary += benefactor_tokens; - } +void database::expire_escrow_ratification() +{ + const auto& escrow_idx = get_index< escrow_index >().indices().get< by_ratification_deadline >(); + auto escrow_itr = escrow_idx.lower_bound( false ); - author_tokens -= total_beneficiary; + while( escrow_itr != escrow_idx.end() && !escrow_itr->is_approved() && escrow_itr->ratification_deadline <= head_block_time() ) + { + const auto& old_escrow = *escrow_itr; + ++escrow_itr; - auto sbd_steem = ( author_tokens * comment.percent_steem_dollars ) / ( 2 * STEEM_100_PERCENT ) ; - auto vesting_steem = author_tokens - sbd_steem; + adjust_balance( old_escrow.from, old_escrow.sophiatx_balance ); + adjust_balance( old_escrow.from, old_escrow.pending_fee ); - const auto& author = get_account( comment.author ); - auto vest_created = create_vesting( author, asset( vesting_steem, STEEM_SYMBOL ), has_hardfork( STEEM_HARDFORK_0_17__659 ) ); - auto sbd_payout = create_sbd( author, asset( sbd_steem, STEEM_SYMBOL ), has_hardfork( STEEM_HARDFORK_0_17__659 ) ); + remove( old_escrow ); + } +} - adjust_total_payout( comment, sbd_payout.first + to_sbd( sbd_payout.second + asset( vesting_steem, STEEM_SYMBOL ) ), to_sbd( asset( curation_tokens, STEEM_SYMBOL ) ), to_sbd( asset( total_beneficiary, STEEM_SYMBOL ) ) ); - - push_virtual_operation( author_reward_operation( comment.author, to_string( comment.permlink ), sbd_payout.first, sbd_payout.second, vest_created ) ); - push_virtual_operation( comment_reward_operation( comment.author, to_string( comment.permlink ), to_sbd( asset( claimed_reward, STEEM_SYMBOL ) ) ) ); - - #ifndef IS_LOW_MEM - modify( comment, [&]( comment_object& c ) - { - c.author_rewards += author_tokens; - }); - - modify( get_account( comment.author ), [&]( account_object& a ) - { - a.posting_rewards += author_tokens; - }); - #endif - - } - - if( !has_hardfork( STEEM_HARDFORK_0_17__774 ) ) - adjust_rshares2( comment, util::evaluate_reward_curve( comment.net_rshares.value ), 0 ); - } - - modify( comment, [&]( comment_object& c ) - { - /** - * A payout is only made for positive rshares, negative rshares hang around - * for the next time this post might get an upvote. - */ - if( c.net_rshares > 0 ) - c.net_rshares = 0; - c.children_abs_rshares = 0; - c.abs_rshares = 0; - c.vote_rshares = 0; - c.total_vote_weight = 0; - c.max_cashout_time = fc::time_point_sec::maximum(); - - if( has_hardfork( STEEM_HARDFORK_0_17__769 ) ) - { - c.cashout_time = fc::time_point_sec::maximum(); - } - else if( c.parent_author == STEEM_ROOT_POST_PARENT ) - { - if( has_hardfork( STEEM_HARDFORK_0_12__177 ) && c.last_payout == fc::time_point_sec::min() ) - c.cashout_time = head_block_time() + STEEM_SECOND_CASHOUT_WINDOW; - else - c.cashout_time = fc::time_point_sec::maximum(); - } - - c.last_payout = head_block_time(); - } ); - - push_virtual_operation( comment_payout_update_operation( comment.author, to_string( comment.permlink ) ) ); - - const auto& vote_idx = get_index< comment_vote_index >().indices().get< by_comment_voter >(); - auto vote_itr = vote_idx.lower_bound( comment.id ); - while( vote_itr != vote_idx.end() && vote_itr->comment == comment.id ) - { - const auto& cur_vote = *vote_itr; - ++vote_itr; - if( !has_hardfork( STEEM_HARDFORK_0_12__177 ) || calculate_discussion_payout_time( comment ) != fc::time_point_sec::maximum() ) - { - modify( cur_vote, [&]( comment_vote_object& cvo ) - { - cvo.num_changes = -1; - }); - } - else - { -#ifdef CLEAR_VOTES - remove( cur_vote ); -#endif - } - } - - return claimed_reward; - } FC_CAPTURE_AND_RETHROW( (comment) ) -} - -void database::process_comment_cashout() -{ - /// don't allow any content to get paid out until the website is ready to launch - /// and people have had a week to start posting. The first cashout will be the biggest because it - /// will represent 2+ months of rewards. - if( !has_hardfork( STEEM_FIRST_CASHOUT_TIME ) ) - return; - - const auto& gpo = get_dynamic_global_properties(); - util::comment_reward_context ctx; - ctx.current_steem_price = get_feed_history().current_median_history; - - vector< reward_fund_context > funds; - vector< share_type > steem_awarded; - const auto& reward_idx = get_index< reward_fund_index, by_id >(); - - // Decay recent rshares of each fund - for( auto itr = reward_idx.begin(); itr != reward_idx.end(); ++itr ) - { - // Add all reward funds to the local cache and decay their recent rshares - modify( *itr, [&]( reward_fund_object& rfo ) - { - fc::microseconds decay_time; - - if( has_hardfork( STEEM_HARDFORK_0_19__1051 ) ) - decay_time = STEEM_RECENT_RSHARES_DECAY_TIME_HF19; - else - decay_time = STEEM_RECENT_RSHARES_DECAY_TIME_HF17; - - rfo.recent_claims -= ( rfo.recent_claims * ( head_block_time() - rfo.last_update ).to_seconds() ) / decay_time.to_seconds(); - rfo.last_update = head_block_time(); - }); - - reward_fund_context rf_ctx; - rf_ctx.recent_claims = itr->recent_claims; - rf_ctx.reward_balance = itr->reward_balance; - - // The index is by ID, so the ID should be the current size of the vector (0, 1, 2, etc...) - assert( funds.size() == static_cast(itr->id._id) ); - - funds.push_back( rf_ctx ); - } - - const auto& cidx = get_index< comment_index >().indices().get< by_cashout_time >(); - const auto& com_by_root = get_index< comment_index >().indices().get< by_root >(); - - auto current = cidx.begin(); - // add all rshares about to be cashed out to the reward funds. This ensures equal satoshi per rshare payment - if( has_hardfork( STEEM_HARDFORK_0_17__771 ) ) - { - while( current != cidx.end() && current->cashout_time <= head_block_time() ) - { - if( current->net_rshares > 0 ) - { - const auto& rf = get_reward_fund( *current ); - funds[ rf.id._id ].recent_claims += util::evaluate_reward_curve( current->net_rshares.value, rf.author_reward_curve, rf.content_constant ); - } - - ++current; - } - - current = cidx.begin(); - } - - /* - * Payout all comments - * - * Each payout follows a similar pattern, but for a different reason. - * Cashout comment helper does not know about the reward fund it is paying from. - * The helper only does token allocation based on curation rewards and the SBD - * global %, etc. - * - * Each context is used by get_rshare_reward to determine what part of each budget - * the comment is entitled to. Prior to hardfork 17, all payouts are done against - * the global state updated each payout. After the hardfork, each payout is done - * against a reward fund state that is snapshotted before all payouts in the block. - */ - while( current != cidx.end() && current->cashout_time <= head_block_time() ) - { - if( has_hardfork( STEEM_HARDFORK_0_17__771 ) ) - { - auto fund_id = get_reward_fund( *current ).id._id; - ctx.total_reward_shares2 = funds[ fund_id ].recent_claims; - ctx.total_reward_fund_steem = funds[ fund_id ].reward_balance; - funds[ fund_id ].steem_awarded += cashout_comment_helper( ctx, *current ); - } - else - { - auto itr = com_by_root.lower_bound( current->root_comment ); - while( itr != com_by_root.end() && itr->root_comment == current->root_comment ) - { - const auto& comment = *itr; ++itr; - ctx.total_reward_shares2 = gpo.total_reward_shares2; - ctx.total_reward_fund_steem = gpo.total_reward_fund_steem; - - auto reward = cashout_comment_helper( ctx, comment ); - - if( reward > 0 ) - { - modify( get_dynamic_global_properties(), [&]( dynamic_global_property_object& p ) - { - p.total_reward_fund_steem.amount -= reward; - }); - } - } - } - - current = cidx.begin(); - } - - // Write the cached fund state back to the database - if( funds.size() ) - { - for( size_t i = 0; i < funds.size(); i++ ) - { - modify( get< reward_fund_object, by_id >( reward_fund_id_type( i ) ), [&]( reward_fund_object& rfo ) - { - rfo.recent_claims = funds[ i ].recent_claims; - rfo.reward_balance -= asset( funds[ i ].steem_awarded, STEEM_SYMBOL ); - }); - } - } -} - -/** - * Overall the network has an inflation rate of 102% of virtual steem per year - * 90% of inflation is directed to vesting shares - * 10% of inflation is directed to subjective proof of work voting - * 1% of inflation is directed to liquidity providers - * 1% of inflation is directed to block producers - * - * This method pays out vesting and reward shares every block, and liquidity shares once per day. - * This method does not pay out witnesses. - */ -void database::process_funds() -{ - const auto& props = get_dynamic_global_properties(); - const auto& wso = get_witness_schedule_object(); - - if( has_hardfork( STEEM_HARDFORK_0_16__551) ) - { - /** - * At block 7,000,000 have a 9.5% instantaneous inflation rate, decreasing to 0.95% at a rate of 0.01% - * every 250k blocks. This narrowing will take approximately 20.5 years and will complete on block 220,750,000 - */ - int64_t start_inflation_rate = int64_t( STEEM_INFLATION_RATE_START_PERCENT ); - int64_t inflation_rate_adjustment = int64_t( head_block_num() / STEEM_INFLATION_NARROWING_PERIOD ); - int64_t inflation_rate_floor = int64_t( STEEM_INFLATION_RATE_STOP_PERCENT ); - - // below subtraction cannot underflow int64_t because inflation_rate_adjustment is <2^32 - int64_t current_inflation_rate = std::max( start_inflation_rate - inflation_rate_adjustment, inflation_rate_floor ); - - auto new_steem = ( props.virtual_supply.amount * current_inflation_rate ) / ( int64_t( STEEM_100_PERCENT ) * int64_t( STEEM_BLOCKS_PER_YEAR ) ); - auto content_reward = ( new_steem * STEEM_CONTENT_REWARD_PERCENT ) / STEEM_100_PERCENT; - if( has_hardfork( STEEM_HARDFORK_0_17__774 ) ) - content_reward = pay_reward_funds( content_reward ); /// 75% to content creator - auto vesting_reward = ( new_steem * STEEM_VESTING_FUND_PERCENT ) / STEEM_100_PERCENT; /// 15% to vesting fund - auto witness_reward = new_steem - content_reward - vesting_reward; /// Remaining 10% to witness pay - - const auto& cwit = get_witness( props.current_witness ); - witness_reward *= STEEM_MAX_WITNESSES; - - if( cwit.schedule == witness_object::timeshare ) - witness_reward *= wso.timeshare_weight; - else if( cwit.schedule == witness_object::miner ) - witness_reward *= wso.miner_weight; - else if( cwit.schedule == witness_object::top19 ) - witness_reward *= wso.top19_weight; - else - wlog( "Encountered unknown witness type for witness: ${w}", ("w", cwit.owner) ); - - witness_reward /= wso.witness_pay_normalization_factor; - - new_steem = content_reward + vesting_reward + witness_reward; - - modify( props, [&]( dynamic_global_property_object& p ) - { - p.total_vesting_fund_steem += asset( vesting_reward, STEEM_SYMBOL ); - if( !has_hardfork( STEEM_HARDFORK_0_17__774 ) ) - p.total_reward_fund_steem += asset( content_reward, STEEM_SYMBOL ); - p.current_supply += asset( new_steem, STEEM_SYMBOL ); - p.virtual_supply += asset( new_steem, STEEM_SYMBOL ); - }); - - const auto& producer_reward = create_vesting( get_account( cwit.owner ), asset( witness_reward, STEEM_SYMBOL ) ); - push_virtual_operation( producer_reward_operation( cwit.owner, producer_reward ) ); - - } - else - { - auto content_reward = get_content_reward(); - auto curate_reward = get_curation_reward(); - auto witness_pay = get_producer_reward(); - auto vesting_reward = content_reward + curate_reward + witness_pay; - - content_reward = content_reward + curate_reward; - - if( props.head_block_number < STEEM_START_VESTING_BLOCK ) - vesting_reward.amount = 0; - else - vesting_reward.amount.value *= 9; - - modify( props, [&]( dynamic_global_property_object& p ) - { - p.total_vesting_fund_steem += vesting_reward; - p.total_reward_fund_steem += content_reward; - p.current_supply += content_reward + witness_pay + vesting_reward; - p.virtual_supply += content_reward + witness_pay + vesting_reward; - } ); - } -} - -void database::process_savings_withdraws() -{ - const auto& idx = get_index< savings_withdraw_index >().indices().get< by_complete_from_rid >(); - auto itr = idx.begin(); - while( itr != idx.end() ) { - if( itr->complete > head_block_time() ) - break; - adjust_balance( get_account( itr->to ), itr->amount ); - - modify( get_account( itr->from ), [&]( account_object& a ) - { - a.savings_withdraw_requests--; - }); - - push_virtual_operation( fill_transfer_from_savings_operation( itr->from, itr->to, itr->amount, itr->request_id, to_string( itr->memo) ) ); - - remove( *itr ); - itr = idx.begin(); - } -} - -asset database::get_liquidity_reward()const -{ - if( has_hardfork( STEEM_HARDFORK_0_12__178 ) ) - return asset( 0, STEEM_SYMBOL ); - - const auto& props = get_dynamic_global_properties(); - static_assert( STEEM_LIQUIDITY_REWARD_PERIOD_SEC == 60*60, "this code assumes a 1 hour time interval" ); - asset percent( protocol::calc_percent_reward_per_hour< STEEM_LIQUIDITY_APR_PERCENT >( props.virtual_supply.amount ), STEEM_SYMBOL ); - return std::max( percent, STEEM_MIN_LIQUIDITY_REWARD ); -} - -asset database::get_content_reward()const -{ - const auto& props = get_dynamic_global_properties(); - static_assert( STEEM_BLOCK_INTERVAL == 3, "this code assumes a 3-second time interval" ); - asset percent( protocol::calc_percent_reward_per_block< STEEM_CONTENT_APR_PERCENT >( props.virtual_supply.amount ), STEEM_SYMBOL ); - return std::max( percent, STEEM_MIN_CONTENT_REWARD ); -} - -asset database::get_curation_reward()const -{ - const auto& props = get_dynamic_global_properties(); - static_assert( STEEM_BLOCK_INTERVAL == 3, "this code assumes a 3-second time interval" ); - asset percent( protocol::calc_percent_reward_per_block< STEEM_CURATE_APR_PERCENT >( props.virtual_supply.amount ), STEEM_SYMBOL); - return std::max( percent, STEEM_MIN_CURATE_REWARD ); -} - -asset database::get_producer_reward() -{ - const auto& props = get_dynamic_global_properties(); - static_assert( STEEM_BLOCK_INTERVAL == 3, "this code assumes a 3-second time interval" ); - asset percent( protocol::calc_percent_reward_per_block< STEEM_PRODUCER_APR_PERCENT >( props.virtual_supply.amount ), STEEM_SYMBOL); - auto pay = std::max( percent, STEEM_MIN_PRODUCER_REWARD ); - const auto& witness_account = get_account( props.current_witness ); - - /// pay witness in vesting shares - if( props.head_block_number >= STEEM_START_MINER_VOTING_BLOCK || (witness_account.vesting_shares.amount.value == 0) ) { - // const auto& witness_obj = get_witness( props.current_witness ); - const auto& producer_reward = create_vesting( witness_account, pay ); - push_virtual_operation( producer_reward_operation( witness_account.name, producer_reward ) ); - } - else - { - modify( get_account( witness_account.name), [&]( account_object& a ) - { - a.balance += pay; - } ); - } - - return pay; -} - -asset database::get_pow_reward()const -{ - const auto& props = get_dynamic_global_properties(); - -#ifndef IS_TEST_NET - /// 0 block rewards until at least STEEM_MAX_WITNESSES have produced a POW - if( props.num_pow_witnesses < STEEM_MAX_WITNESSES && props.head_block_number < STEEM_START_VESTING_BLOCK ) - return asset( 0, STEEM_SYMBOL ); -#endif - - static_assert( STEEM_BLOCK_INTERVAL == 3, "this code assumes a 3-second time interval" ); - static_assert( STEEM_MAX_WITNESSES == 21, "this code assumes 21 per round" ); - asset percent( calc_percent_reward_per_round< STEEM_POW_APR_PERCENT >( props.virtual_supply.amount ), STEEM_SYMBOL); - return std::max( percent, STEEM_MIN_POW_REWARD ); -} - - -void database::pay_liquidity_reward() -{ -#ifdef IS_TEST_NET - if( !liquidity_rewards_enabled ) - return; -#endif - - if( (head_block_num() % STEEM_LIQUIDITY_REWARD_BLOCKS) == 0 ) - { - auto reward = get_liquidity_reward(); - - if( reward.amount == 0 ) - return; - - const auto& ridx = get_index< liquidity_reward_balance_index >().indices().get< by_volume_weight >(); - auto itr = ridx.begin(); - if( itr != ridx.end() && itr->volume_weight() > 0 ) - { - adjust_supply( reward, true ); - adjust_balance( get(itr->owner), reward ); - modify( *itr, [&]( liquidity_reward_balance_object& obj ) - { - obj.steem_volume = 0; - obj.sbd_volume = 0; - obj.last_update = head_block_time(); - obj.weight = 0; - } ); - - push_virtual_operation( liquidity_reward_operation( get(itr->owner).name, reward ) ); - } - } -} - -uint16_t database::get_curation_rewards_percent( const comment_object& c ) const -{ - if( has_hardfork( STEEM_HARDFORK_0_17__774 ) ) - return get_reward_fund( c ).percent_curation_rewards; - else if( has_hardfork( STEEM_HARDFORK_0_8__116 ) ) - return STEEM_1_PERCENT * 25; - else - return STEEM_1_PERCENT * 50; -} - -share_type database::pay_reward_funds( share_type reward ) -{ - const auto& reward_idx = get_index< reward_fund_index, by_id >(); - share_type used_rewards = 0; - - for( auto itr = reward_idx.begin(); itr != reward_idx.end(); ++itr ) - { - // reward is a per block reward and the percents are 16-bit. This should never overflow - auto r = ( reward * itr->percent_content_rewards ) / STEEM_100_PERCENT; - - modify( *itr, [&]( reward_fund_object& rfo ) - { - rfo.reward_balance += asset( r, STEEM_SYMBOL ); - }); - - used_rewards += r; - - // Sanity check to ensure we aren't printing more STEEM than has been allocated through inflation - FC_ASSERT( used_rewards <= reward ); - } - - return used_rewards; -} - -/** - * Iterates over all conversion requests with a conversion date before - * the head block time and then converts them to/from steem/sbd at the - * current median price feed history price times the premium - */ -void database::process_conversions() -{ - auto now = head_block_time(); - const auto& request_by_date = get_index< convert_request_index >().indices().get< by_conversion_date >(); - auto itr = request_by_date.begin(); - - const auto& fhistory = get_feed_history(); - if( fhistory.current_median_history.is_null() ) - return; - - asset net_sbd( 0, SBD_SYMBOL ); - asset net_steem( 0, STEEM_SYMBOL ); - - while( itr != request_by_date.end() && itr->conversion_date <= now ) - { - auto amount_to_issue = itr->amount * fhistory.current_median_history; - - adjust_balance( itr->owner, amount_to_issue ); - - net_sbd += itr->amount; - net_steem += amount_to_issue; - - push_virtual_operation( fill_convert_request_operation ( itr->owner, itr->requestid, itr->amount, amount_to_issue ) ); - - remove( *itr ); - itr = request_by_date.begin(); - } - - const auto& props = get_dynamic_global_properties(); - modify( props, [&]( dynamic_global_property_object& p ) - { - p.current_supply += net_steem; - p.current_sbd_supply -= net_sbd; - p.virtual_supply += net_steem; - p.virtual_supply -= net_sbd * get_feed_history().current_median_history; - } ); -} - -asset database::to_sbd( const asset& steem )const -{ - return util::to_sbd( get_feed_history().current_median_history, steem ); -} - -asset database::to_steem( const asset& sbd )const -{ - return util::to_steem( get_feed_history().current_median_history, sbd ); -} - -void database::account_recovery_processing() -{ - // Clear expired recovery requests - const auto& rec_req_idx = get_index< account_recovery_request_index >().indices().get< by_expiration >(); - auto rec_req = rec_req_idx.begin(); - - while( rec_req != rec_req_idx.end() && rec_req->expires <= head_block_time() ) - { - remove( *rec_req ); - rec_req = rec_req_idx.begin(); - } - - // Clear invalid historical authorities - const auto& hist_idx = get_index< owner_authority_history_index >().indices(); //by id - auto hist = hist_idx.begin(); - - while( hist != hist_idx.end() && time_point_sec( hist->last_valid_time + STEEM_OWNER_AUTH_RECOVERY_PERIOD ) < head_block_time() ) - { - remove( *hist ); - hist = hist_idx.begin(); - } - - // Apply effective recovery_account changes - const auto& change_req_idx = get_index< change_recovery_account_request_index >().indices().get< by_effective_date >(); - auto change_req = change_req_idx.begin(); - - while( change_req != change_req_idx.end() && change_req->effective_on <= head_block_time() ) - { - modify( get_account( change_req->account_to_recover ), [&]( account_object& a ) - { - a.recovery_account = change_req->recovery_account; - }); - - remove( *change_req ); - change_req = change_req_idx.begin(); - } -} - -void database::expire_escrow_ratification() -{ - const auto& escrow_idx = get_index< escrow_index >().indices().get< by_ratification_deadline >(); - auto escrow_itr = escrow_idx.lower_bound( false ); - - while( escrow_itr != escrow_idx.end() && !escrow_itr->is_approved() && escrow_itr->ratification_deadline <= head_block_time() ) - { - const auto& old_escrow = *escrow_itr; - ++escrow_itr; - - adjust_balance( old_escrow.from, old_escrow.steem_balance ); - adjust_balance( old_escrow.from, old_escrow.sbd_balance ); - adjust_balance( old_escrow.from, old_escrow.pending_fee ); - - remove( old_escrow ); - } -} - -void database::process_decline_voting_rights() -{ - const auto& request_idx = get_index< decline_voting_rights_request_index >().indices().get< by_effective_date >(); - auto itr = request_idx.begin(); - - while( itr != request_idx.end() && itr->effective_date <= head_block_time() ) - { - const auto& account = get< account_object, by_name >( itr->account ); - - /// remove all current votes - std::array delta; - delta[0] = -account.vesting_shares.amount; - for( int i = 0; i < STEEM_MAX_PROXY_RECURSION_DEPTH; ++i ) - delta[i+1] = -account.proxied_vsf_votes[i]; - adjust_proxied_witness_votes( account, delta ); - - clear_witness_votes( account ); - - modify( account, [&]( account_object& a ) - { - a.can_vote = false; - a.proxy = STEEM_PROXY_TO_SELF_ACCOUNT; - }); - - remove( *itr ); - itr = request_idx.begin(); - } -} - -time_point_sec database::head_block_time()const -{ - return get_dynamic_global_properties().time; -} +time_point_sec database::head_block_time()const +{ + return get_dynamic_global_properties().time; +} uint32_t database::head_block_num()const { @@ -2221,32 +1408,20 @@ uint32_t database::last_non_undoable_block_num() const void database::initialize_evaluators() { - _my->_evaluator_registry.register_evaluator< vote_evaluator >(); - _my->_evaluator_registry.register_evaluator< comment_evaluator >(); - _my->_evaluator_registry.register_evaluator< comment_options_evaluator >(); - _my->_evaluator_registry.register_evaluator< delete_comment_evaluator >(); _my->_evaluator_registry.register_evaluator< transfer_evaluator >(); _my->_evaluator_registry.register_evaluator< transfer_to_vesting_evaluator >(); _my->_evaluator_registry.register_evaluator< withdraw_vesting_evaluator >(); - _my->_evaluator_registry.register_evaluator< set_withdraw_vesting_route_evaluator >(); _my->_evaluator_registry.register_evaluator< account_create_evaluator >(); _my->_evaluator_registry.register_evaluator< account_update_evaluator >(); + _my->_evaluator_registry.register_evaluator< account_delete_evaluator >(); _my->_evaluator_registry.register_evaluator< witness_update_evaluator >(); + _my->_evaluator_registry.register_evaluator< witness_stop_evaluator >(); _my->_evaluator_registry.register_evaluator< account_witness_vote_evaluator >(); _my->_evaluator_registry.register_evaluator< account_witness_proxy_evaluator >(); _my->_evaluator_registry.register_evaluator< custom_evaluator >(); _my->_evaluator_registry.register_evaluator< custom_binary_evaluator >(); _my->_evaluator_registry.register_evaluator< custom_json_evaluator >(); - _my->_evaluator_registry.register_evaluator< pow_evaluator >(); - _my->_evaluator_registry.register_evaluator< pow2_evaluator >(); - _my->_evaluator_registry.register_evaluator< report_over_production_evaluator >(); _my->_evaluator_registry.register_evaluator< feed_publish_evaluator >(); - _my->_evaluator_registry.register_evaluator< convert_evaluator >(); - _my->_evaluator_registry.register_evaluator< limit_order_create_evaluator >(); - _my->_evaluator_registry.register_evaluator< limit_order_create2_evaluator >(); - _my->_evaluator_registry.register_evaluator< limit_order_cancel_evaluator >(); - _my->_evaluator_registry.register_evaluator< placeholder_a_evaluator >(); - _my->_evaluator_registry.register_evaluator< placeholder_b_evaluator >(); _my->_evaluator_registry.register_evaluator< request_account_recovery_evaluator >(); _my->_evaluator_registry.register_evaluator< recover_account_evaluator >(); _my->_evaluator_registry.register_evaluator< change_recovery_account_evaluator >(); @@ -2254,21 +1429,21 @@ void database::initialize_evaluators() _my->_evaluator_registry.register_evaluator< escrow_approve_evaluator >(); _my->_evaluator_registry.register_evaluator< escrow_dispute_evaluator >(); _my->_evaluator_registry.register_evaluator< escrow_release_evaluator >(); - _my->_evaluator_registry.register_evaluator< transfer_to_savings_evaluator >(); - _my->_evaluator_registry.register_evaluator< transfer_from_savings_evaluator >(); - _my->_evaluator_registry.register_evaluator< cancel_transfer_from_savings_evaluator >(); - _my->_evaluator_registry.register_evaluator< decline_voting_rights_evaluator >(); _my->_evaluator_registry.register_evaluator< reset_account_evaluator >(); _my->_evaluator_registry.register_evaluator< set_reset_account_evaluator >(); - _my->_evaluator_registry.register_evaluator< claim_reward_balance_evaluator >(); -#ifdef STEEM_ENABLE_SMT + _my->_evaluator_registry.register_evaluator< application_create_evaluator >(); + _my->_evaluator_registry.register_evaluator< application_update_evaluator >(); + _my->_evaluator_registry.register_evaluator< application_delete_evaluator >(); + _my->_evaluator_registry.register_evaluator< buy_application_evaluator >(); + _my->_evaluator_registry.register_evaluator< cancel_application_buying_evaluator >(); +#ifdef SOPHIATX_ENABLE_SMT _my->_evaluator_registry.register_evaluator< claim_reward_balance2_evaluator >(); #endif - _my->_evaluator_registry.register_evaluator< account_create_with_delegation_evaluator >(); - _my->_evaluator_registry.register_evaluator< delegate_vesting_shares_evaluator >(); _my->_evaluator_registry.register_evaluator< witness_set_properties_evaluator >(); + _my->_evaluator_registry.register_evaluator< transfer_from_promotion_pool_evaluator >(); + _my->_evaluator_registry.register_evaluator< sponsor_fees_evaluator >(); -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT _my->_evaluator_registry.register_evaluator< smt_setup_evaluator >(); _my->_evaluator_registry.register_evaluator< smt_cap_reveal_evaluator >(); _my->_evaluator_registry.register_evaluator< smt_refund_evaluator >(); @@ -2280,14 +1455,14 @@ void database::initialize_evaluators() } -void database::set_custom_operation_interpreter( const std::string& id, std::shared_ptr< custom_operation_interpreter > registry ) +void database::set_custom_operation_interpreter( const uint32_t id, std::shared_ptr< custom_operation_interpreter > registry ) { bool inserted = _custom_operation_interpreters.emplace( id, registry ).second; // This assert triggering means we're mis-configured (multiple registrations of custom JSON evaluator for same ID) FC_ASSERT( inserted ); } -std::shared_ptr< custom_operation_interpreter > database::get_custom_json_evaluator( const std::string& id ) +std::shared_ptr< custom_operation_interpreter > database::get_custom_json_evaluator( const uint32_t id ) { auto it = _custom_operation_interpreters.find( id ); if( it != _custom_operation_interpreters.end() ) @@ -2298,34 +1473,27 @@ std::shared_ptr< custom_operation_interpreter > database::get_custom_json_evalua void database::initialize_indexes() { add_core_index< dynamic_global_property_index >(*this); + add_core_index< economic_model_index >(*this); add_core_index< account_index >(*this); add_core_index< account_authority_index >(*this); add_core_index< witness_index >(*this); add_core_index< transaction_index >(*this); add_core_index< block_summary_index >(*this); add_core_index< witness_schedule_index >(*this); - add_core_index< comment_index >(*this); - add_core_index< comment_content_index >(*this); - add_core_index< comment_vote_index >(*this); add_core_index< witness_vote_index >(*this); - add_core_index< limit_order_index >(*this); add_core_index< feed_history_index >(*this); - add_core_index< convert_request_index >(*this); - add_core_index< liquidity_reward_balance_index >(*this); add_core_index< operation_index >(*this); add_core_index< account_history_index >(*this); add_core_index< hardfork_property_index >(*this); - add_core_index< withdraw_vesting_route_index >(*this); add_core_index< owner_authority_history_index >(*this); add_core_index< account_recovery_request_index >(*this); add_core_index< change_recovery_account_request_index >(*this); add_core_index< escrow_index >(*this); - add_core_index< savings_withdraw_index >(*this); - add_core_index< decline_voting_rights_request_index >(*this); - add_core_index< reward_fund_index >(*this); - add_core_index< vesting_delegation_index >(*this); - add_core_index< vesting_delegation_expiration_index >(*this); -#ifdef STEEM_ENABLE_SMT + add_core_index< application_index >(*this); + add_core_index< application_buying_index >(*this); + add_core_index< custom_content_index >(*this); + add_core_index< account_fee_sponsor_index >(*this); +#ifdef SOPHIATX_ENABLE_SMT add_core_index< smt_token_index >(*this); add_core_index< account_regular_balance_index >(*this); add_core_index< account_rewards_balance_index >(*this); @@ -2400,7 +1568,7 @@ void database::init_schema() return;*/ } -void database::init_genesis( uint64_t init_supply ) +void database::init_genesis( genesis_state_type genesis ) { try { @@ -2415,92 +1583,134 @@ void database::init_genesis( uint64_t init_supply ) uint32_t old_flags; } inhibitor(*this); + share_type total_initial_balance = 0; // Create blockchain accounts - public_key_type init_public_key(STEEM_INIT_PUBLIC_KEY); + public_key_type init_public_key = genesis.initial_public_key; create< account_object >( [&]( account_object& a ) { - a.name = STEEM_MINER_ACCOUNT; + a.name = SOPHIATX_MINER_ACCOUNT; } ); create< account_authority_object >( [&]( account_authority_object& auth ) { - auth.account = STEEM_MINER_ACCOUNT; + auth.account = SOPHIATX_MINER_ACCOUNT; auth.owner.weight_threshold = 1; auth.active.weight_threshold = 1; }); create< account_object >( [&]( account_object& a ) { - a.name = STEEM_NULL_ACCOUNT; + a.name = SOPHIATX_NULL_ACCOUNT; } ); create< account_authority_object >( [&]( account_authority_object& auth ) { - auth.account = STEEM_NULL_ACCOUNT; + auth.account = SOPHIATX_NULL_ACCOUNT; auth.owner.weight_threshold = 1; auth.active.weight_threshold = 1; }); create< account_object >( [&]( account_object& a ) { - a.name = STEEM_TEMP_ACCOUNT; + a.name = SOPHIATX_TEMP_ACCOUNT; } ); create< account_authority_object >( [&]( account_authority_object& auth ) { - auth.account = STEEM_TEMP_ACCOUNT; + auth.account = SOPHIATX_TEMP_ACCOUNT; auth.owner.weight_threshold = 0; auth.active.weight_threshold = 0; }); - for( int i = 0; i < STEEM_NUM_INIT_MINERS; ++i ) - { - create< account_object >( [&]( account_object& a ) - { - a.name = STEEM_INIT_MINER_NAME + ( i ? fc::to_string( i ) : std::string() ); - a.memo_key = init_public_key; - a.balance = asset( i ? 0 : init_supply, STEEM_SYMBOL ); - } ); + total_initial_balance += genesis.initial_balace; + create< account_object >( [&]( account_object& a ) + { + a.name = SOPHIATX_INIT_MINER_NAME; + a.memo_key = init_public_key; + a.balance = asset( genesis.initial_balace, SOPHIATX_SYMBOL ); + a.holdings_considered_for_interests = a.balance.amount * 2; + } ); - create< account_authority_object >( [&]( account_authority_object& auth ) - { - auth.account = STEEM_INIT_MINER_NAME + ( i ? fc::to_string( i ) : std::string() ); - auth.owner.add_authority( init_public_key, 1 ); - auth.owner.weight_threshold = 1; - auth.active = auth.owner; - auth.posting = auth.active; - }); + create< account_authority_object >( [&]( account_authority_object& auth ) + { + auth.account = SOPHIATX_INIT_MINER_NAME; + auth.owner.add_authority( init_public_key, 1 ); + auth.owner.weight_threshold = 1; + auth.active = auth.owner; + }); + + create< witness_object >( [&]( witness_object& w ) + { + w.owner = SOPHIATX_INIT_MINER_NAME; + w.signing_key = public_key_type(SOPHIATX_INIT_PUBLIC_KEY_STR); + w.schedule = witness_object::top19; + } ); + + for( const auto &acc: genesis.initial_accounts) { + total_initial_balance += acc.balance; + authority owner; + authority active; + active.add_authority(acc.key, 1); + active.weight_threshold = 1; + if(acc.key == public_key_type()){ + owner.add_authority(SOPHIATX_INIT_MINER_NAME, 1); + owner.weight_threshold = 1; + }else{ + owner = active; + } + try { + create([ & ](account_object &a) { + a.name = acc.name; + a.memo_key = acc.key; + a.balance = asset(acc.balance, SOPHIATX_SYMBOL); + a.holdings_considered_for_interests = a.balance.amount * 2; + a.recovery_account = SOPHIATX_INIT_MINER_NAME; + a.reset_account = SOPHIATX_INIT_MINER_NAME; + }); - create< witness_object >( [&]( witness_object& w ) - { - w.owner = STEEM_INIT_MINER_NAME + ( i ? fc::to_string(i) : std::string() ); - w.signing_key = init_public_key; - w.schedule = witness_object::miner; - } ); + create([ & ](account_authority_object &auth) { + auth.account = acc.name; + auth.owner = owner; + auth.active = active; + }); + }FC_CAPTURE_AND_RETHROW((acc)) } + create< dynamic_global_property_object >( [&]( dynamic_global_property_object& p ) { - p.current_witness = STEEM_INIT_MINER_NAME; - p.time = STEEM_GENESIS_TIME; + p.current_witness = SOPHIATX_INIT_MINER_NAME; + p.time = genesis.genesis_time; p.recent_slots_filled = fc::uint128::max_value(); p.participation_count = 128; - p.current_supply = asset( init_supply, STEEM_SYMBOL ); - p.virtual_supply = p.current_supply; - p.maximum_block_size = STEEM_MAX_BLOCK_SIZE; + p.current_supply = asset( total_initial_balance, SOPHIATX_SYMBOL ); + p.maximum_block_size = SOPHIATX_MAX_BLOCK_SIZE; + p.witness_required_vesting = asset(SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE, VESTS_SYMBOL); + p.genesis_time = genesis.genesis_time; + p.chain_id = genesis.compute_chain_id(); } ); + create< economic_model_object >( [&]( economic_model_object& e ) + { + e.init_economics(total_initial_balance, SOPHIATX_TOTAL_SUPPLY); + } ); // Nothing to do - create< feed_history_object >( [&]( feed_history_object& o ) {}); + create< feed_history_object >( [&]( feed_history_object& o ) {o.symbol = SBD1_SYMBOL;}); + create< feed_history_object >( [&]( feed_history_object& o ) {o.symbol = SBD2_SYMBOL;}); + create< feed_history_object >( [&]( feed_history_object& o ) {o.symbol = SBD3_SYMBOL;}); + create< feed_history_object >( [&]( feed_history_object& o ) {o.symbol = SBD4_SYMBOL;}); + create< feed_history_object >( [&]( feed_history_object& o ) {o.symbol = SBD5_SYMBOL;}); + for( int i = 0; i < 0x10000; i++ ) create< block_summary_object >( [&]( block_summary_object& ) {}); + create< hardfork_property_object >( [&](hardfork_property_object& hpo ) { - hpo.processed_hardforks.push_back( STEEM_GENESIS_TIME ); + hpo.processed_hardforks.push_back( genesis.genesis_time ); } ); // Create witness scheduler create< witness_schedule_object >( [&]( witness_schedule_object& wso ) { - wso.current_shuffled_witnesses[0] = STEEM_INIT_MINER_NAME; + wso.current_shuffled_witnesses[0] = SOPHIATX_INIT_MINER_NAME; } ); } FC_CAPTURE_AND_RETHROW() @@ -2523,7 +1733,7 @@ void database::notify_changed_objects() { /*vector< chainbase::generic_id > ids; get_changed_ids( ids ); - STEEM_TRY_NOTIFY( changed_objects, ids )*/ + SOPHIATX_TRY_NOTIFY( changed_objects, ids )*/ /* if( _undo_db.enabled() ) { @@ -2538,7 +1748,7 @@ void database::notify_changed_objects() changed_ids.push_back( item.first ); removed.emplace_back( item.second.get() ); } - STEEM_TRY_NOTIFY( changed_objects, changed_ids ) + SOPHIATX_TRY_NOTIFY( changed_objects, changed_ids ) } */ } @@ -2586,13 +1796,13 @@ void database::apply_block( const signed_block& next_block, uint32_t skip ) _apply_block( next_block ); } ); - /*try + try { - /// check invariants - if( is_producing() || !( skip & skip_validate_invariants ) ) - validate_invariants(); + /// check invariants + //if( is_producing() || !( skip & skip_validate_invariants ) ) + validate_invariants(); } - FC_CAPTURE_AND_RETHROW( (next_block) );*/ + FC_CAPTURE_AND_RETHROW( (next_block) ); //fc::time_point end_time = fc::time_point::now(); //fc::microseconds dt = end_time - begin_time; @@ -2630,9 +1840,9 @@ void database::check_free_memory( bool force_print, uint32_t current_block_num ) uint64_t free_mem = get_free_memory(); uint64_t max_mem = get_max_memory(); - if( BOOST_UNLIKELY( _shared_file_full_threshold != 0 && _shared_file_scale_rate != 0 && free_mem < ( ( uint128_t( STEEM_100_PERCENT - _shared_file_full_threshold ) * max_mem ) / STEEM_100_PERCENT ).to_uint64() ) ) + if( BOOST_UNLIKELY( _shared_file_full_threshold != 0 && _shared_file_scale_rate != 0 && free_mem < ( ( uint128_t( SOPHIATX_100_PERCENT - _shared_file_full_threshold ) * max_mem ) / SOPHIATX_100_PERCENT ).to_uint64() ) ) { - uint64_t new_max = ( uint128_t( max_mem * _shared_file_scale_rate ) / STEEM_100_PERCENT ).to_uint64() + max_mem; + uint64_t new_max = ( uint128_t( max_mem * _shared_file_scale_rate ) / SOPHIATX_100_PERCENT ).to_uint64() + max_mem; wlog( "Memory is almost full, increasing to ${mem}M", ("mem", new_max / (1024*1024)) ); @@ -2677,7 +1887,7 @@ void database::_apply_block( const signed_block& next_block ) // This allows the test net to launch with past hardforks and apply the next harfork when running uint32_t n; - for( n=0; n next_block.timestamp ) break; @@ -2733,15 +1943,13 @@ void database::_apply_block( const signed_block& next_block ) const auto& gprops = get_dynamic_global_properties(); auto block_size = fc::raw::pack_size( next_block ); - if( has_hardfork( STEEM_HARDFORK_0_12 ) ) - { - FC_ASSERT( block_size <= gprops.maximum_block_size, "Block Size is too Big", ("next_block_num",next_block_num)("block_size", block_size)("max",gprops.maximum_block_size) ); - } + FC_ASSERT( block_size <= gprops.maximum_block_size, "Block Size is too Big", ("next_block_num",next_block_num)("block_size", block_size)("max",gprops.maximum_block_size) ); - if( block_size < STEEM_MIN_BLOCK_SIZE ) + + if( block_size < SOPHIATX_MIN_BLOCK_SIZE ) { elog( "Block size is too small", - ("next_block_num",next_block_num)("block_size", block_size)("min",STEEM_MIN_BLOCK_SIZE) + ("next_block_num",next_block_num)("block_size", block_size)("min",SOPHIATX_MIN_BLOCK_SIZE) ); } @@ -2754,15 +1962,13 @@ void database::_apply_block( const signed_block& next_block ) /// parse witness version reporting process_header_extensions( next_block ); - if( has_hardfork( STEEM_HARDFORK_0_5__54 ) ) // Cannot remove after hardfork - { - const auto& witness = get_witness( next_block.witness ); - const auto& hardfork_state = get_hardfork_property_object(); - FC_ASSERT( witness.running_version >= hardfork_state.current_hardfork_version, + const auto& witness = get_witness( next_block.witness ); + const auto& hardfork_state = get_hardfork_property_object(); + FC_ASSERT( witness.running_version >= hardfork_state.current_hardfork_version, "Block produced by witness that is not running current hardfork", ("witness",witness)("next_block.witness",next_block.witness)("hardfork_state", hardfork_state) ); - } + for( const auto& trx : next_block.transactions ) { @@ -2783,25 +1989,17 @@ void database::_apply_block( const signed_block& next_block ) create_block_summary(next_block); clear_expired_transactions(); - clear_expired_orders(); - clear_expired_delegations(); update_witness_schedule(*this); + process_interests(); - update_median_feed(); - update_virtual_supply(); + update_median_feeds(); clear_null_account_balance(); process_funds(); - process_conversions(); - process_comment_cashout(); process_vesting_withdrawals(); - process_savings_withdraws(); - pay_liquidity_reward(); - update_virtual_supply(); account_recovery_processing(); expire_escrow_ratification(); - process_decline_voting_rights(); process_hardforks(); @@ -2809,7 +2007,15 @@ void database::_apply_block( const signed_block& next_block ) notify_applied_block( next_block ); notify_changed_objects(); -} //FC_CAPTURE_AND_RETHROW( (next_block.block_num()) ) } + + const auto& econ = get_economic_model(); + const auto& gpo = get_dynamic_global_properties(); + + modify(econ, [&](economic_model_object& e){ + e.record_block(next_block_num, gpo.current_supply.amount); + }); + +} FC_CAPTURE_LOG_AND_RETHROW( (next_block.block_num()) ) } @@ -2861,6 +2067,37 @@ struct process_header_visitor } }; +void database::process_interests() { + try { + uint32_t block_no = head_block_num(); //process_interests is called after the current block is accepted + uint32_t batch = block_no % SOPHIATX_INTEREST_BLOCKS; + const auto &econ = get_economic_model(); + share_type supply_increase = 0; + uint64_t id = batch; + while( const account_object *a = find_account(id)) { + share_type interest = 0; + + if(head_block_num() > SOPHIATX_INTEREST_DELAY) { + modify(econ, [ & ](economic_model_object &eo) { + interest = eo.withdraw_interests(a->holdings_considered_for_interests, + std::min(uint32_t(SOPHIATX_INTEREST_BLOCKS), head_block_num())); + }); + } + + supply_increase += interest; + modify(*a, [ & ](account_object &ao) { + ao.balance.amount += interest; + ao.holdings_considered_for_interests = ao.total_balance() * SOPHIATX_INTEREST_BLOCKS; + }); + if(interest > 0) + push_virtual_operation(interest_operation(a->name, asset(interest, SOPHIATX_SYMBOL))); + id += SOPHIATX_INTEREST_BLOCKS; + } + + adjust_supply(asset(supply_increase, SOPHIATX_SYMBOL)); + }FC_CAPTURE_AND_RETHROW() +} + void database::process_header_extensions( const signed_block& next_block ) { process_header_visitor _v( next_block.witness, *this ); @@ -2869,73 +2106,42 @@ void database::process_header_extensions( const signed_block& next_block ) e.visit( _v ); } -void database::update_median_feed() { +void database::update_median_feeds() { try { - if( (head_block_num() % STEEM_FEED_INTERVAL_BLOCKS) != 0 ) + if( (head_block_num() % SOPHIATX_FEED_INTERVAL_BLOCKS) != 0 ) return; auto now = head_block_time(); const witness_schedule_object& wso = get_witness_schedule_object(); - vector feeds; feeds.reserve( wso.num_scheduled_witnesses ); + map> all_feeds; for( int i = 0; i < wso.num_scheduled_witnesses; i++ ) { const auto& wit = get_witness( wso.current_shuffled_witnesses[i] ); - if( has_hardfork( STEEM_HARDFORK_0_19__822 ) ) - { - if( now < wit.last_sbd_exchange_update + STEEM_MAX_FEED_AGE_SECONDS - && !wit.sbd_exchange_rate.is_null() ) - { - feeds.push_back( wit.sbd_exchange_rate ); - } - } - else if( wit.last_sbd_exchange_update < now + STEEM_MAX_FEED_AGE_SECONDS && - !wit.sbd_exchange_rate.is_null() ) { - feeds.push_back( wit.sbd_exchange_rate ); + for ( const auto& r: wit.submitted_exchange_rates ) + if( r.second.last_change + SOPHIATX_MAX_FEED_AGE_SECONDS > now && !r.second.rate.is_null() ) + all_feeds[r.first].push_back(r.second.rate); } } - if( feeds.size() >= STEEM_MIN_FEEDS ) - { - std::sort( feeds.begin(), feeds.end() ); - auto median_feed = feeds[feeds.size()/2]; - - modify( get_feed_history(), [&]( feed_history_object& fho ) + for ( const auto& feed: all_feeds){ + if( feed.second.size() >= SOPHIATX_MIN_FEEDS ) { - fho.price_history.push_back( median_feed ); - size_t steem_feed_history_window = STEEM_FEED_HISTORY_WINDOW_PRE_HF_16; - if( has_hardfork( STEEM_HARDFORK_0_16__551) ) - steem_feed_history_window = STEEM_FEED_HISTORY_WINDOW; + vector f = feed.second; + std::sort( f.begin(), f.end() ); + auto median_feed = f[f.size()/2]; - if( fho.price_history.size() > steem_feed_history_window ) - fho.price_history.pop_front(); - - if( fho.price_history.size() ) + modify(get_feed_history(feed.first), [&](feed_history_object& fho ) { - /// BW-TODO Why deque is used here ? Also why don't make copy of whole container ? - std::deque< price > copy; - for( const auto& i : fho.price_history ) - { - copy.push_back( i ); - } - - std::sort( copy.begin(), copy.end() ); /// TODO: use nth_item - fho.current_median_history = copy[copy.size()/2]; + fho.price_history.push_back( median_feed ); + size_t sophiatx_feed_history_window = SOPHIATX_FEED_HISTORY_WINDOW; -#ifdef IS_TEST_NET - if( skip_price_feed_limit_check ) - return; -#endif - if( has_hardfork( STEEM_HARDFORK_0_14__230 ) ) - { - const auto& gpo = get_dynamic_global_properties(); - price min_price( asset( 9 * gpo.current_sbd_supply.amount, SBD_SYMBOL ), gpo.current_supply ); // This price limits SBD to 10% market cap + if( fho.price_history.size() > sophiatx_feed_history_window ) + fho.price_history.pop_front(); - if( min_price > fho.current_median_history ) - fho.current_median_history = min_price; - } - } - }); + fho.current_median_history = median_feed; + }); + } } } FC_CAPTURE_AND_RETHROW() } @@ -2950,8 +2156,9 @@ void database::_apply_transaction(const signed_transaction& trx) _current_trx_id = trx.id(); uint32_t skip = get_node_properties().skip_flags; - if( !(skip&skip_validate) ) /* issue #505 explains why this skip_flag is disabled */ + if( !(skip&skip_validate) ) { /* issue #505 explains why this skip_flag is disabled */ trx.validate(); + } auto& trx_idx = get_index(); const chain_id_type& chain_id = get_chain_id(); @@ -2965,11 +2172,10 @@ void database::_apply_transaction(const signed_transaction& trx) { auto get_active = [&]( const string& name ) { return authority( get< account_authority_object, by_account >( name ).active ); }; auto get_owner = [&]( const string& name ) { return authority( get< account_authority_object, by_account >( name ).owner ); }; - auto get_posting = [&]( const string& name ) { return authority( get< account_authority_object, by_account >( name ).posting ); }; try { - trx.verify_authority( chain_id, get_active, get_owner, get_posting, STEEM_MAX_SIG_CHECK_DEPTH ); + trx.verify_authority( chain_id, get_active, get_owner, SOPHIATX_MAX_SIG_CHECK_DEPTH ); } catch( protocol::tx_missing_active_auth& e ) { @@ -2986,18 +2192,17 @@ void database::_apply_transaction(const signed_transaction& trx) { const auto& tapos_block_summary = get< block_summary_object >( trx.ref_block_num ); //Verify TaPoS block summary has correct ID prefix, and that this block's time is not past the expiration - STEEM_ASSERT( trx.ref_block_prefix == tapos_block_summary.block_id._hash[1], transaction_tapos_exception, + SOPHIATX_ASSERT( trx.ref_block_prefix == tapos_block_summary.block_id._hash[1], transaction_tapos_exception, "", ("trx.ref_block_prefix", trx.ref_block_prefix) ("tapos_block_summary",tapos_block_summary.block_id._hash[1])); } fc::time_point_sec now = head_block_time(); - STEEM_ASSERT( trx.expiration <= now + fc::seconds(STEEM_MAX_TIME_UNTIL_EXPIRATION), transaction_expiration_exception, - "", ("trx.expiration",trx.expiration)("now",now)("max_til_exp",STEEM_MAX_TIME_UNTIL_EXPIRATION)); - if( has_hardfork( STEEM_HARDFORK_0_9 ) ) // Simple solution to pending trx bug when now == trx.expiration - STEEM_ASSERT( now < trx.expiration, transaction_expiration_exception, "", ("now",now)("trx.exp",trx.expiration) ); - STEEM_ASSERT( now <= trx.expiration, transaction_expiration_exception, "", ("now",now)("trx.exp",trx.expiration) ); + SOPHIATX_ASSERT( trx.expiration <= now + fc::seconds(SOPHIATX_MAX_TIME_UNTIL_EXPIRATION), transaction_expiration_exception, + "", ("trx.expiration",trx.expiration)("now",now)("max_til_exp",SOPHIATX_MAX_TIME_UNTIL_EXPIRATION)); + SOPHIATX_ASSERT( now < trx.expiration, transaction_expiration_exception, "", ("now",now)("trx.exp",trx.expiration) ); + SOPHIATX_ASSERT( now <= trx.expiration, transaction_expiration_exception, "", ("now",now)("trx.exp",trx.expiration) ); } //Insert transaction into unique transactions database. @@ -3027,7 +2232,11 @@ void database::_apply_transaction(const signed_transaction& trx) void database::apply_operation(const operation& op) { operation_notification note(op); + + note.fee_payer = get_fee_payer(op); + notify_pre_apply_operation( note ); + process_operation_fee(op); _my->_evaluator_registry.get_evaluator( op ).apply( op ); notify_post_apply_operation( note ); } @@ -3082,14 +2291,13 @@ void database::update_global_dynamic_data( const signed_block& b ) modify( witness_missed, [&]( witness_object& w ) { w.total_missed++; - if( has_hardfork( STEEM_HARDFORK_0_14__278 ) ) + + if( head_block_num() - w.last_confirmed_block_num > SOPHIATX_BLOCKS_PER_DAY ) { - if( head_block_num() - w.last_confirmed_block_num > STEEM_BLOCKS_PER_DAY ) - { - w.signing_key = public_key_type(); - push_virtual_operation( shutdown_witness_operation( w.owner ) ); - } + w.signing_key = public_key_type(); + push_virtual_operation( shutdown_witness_operation( w.owner ) ); } + } ); } } @@ -3110,42 +2318,23 @@ void database::update_global_dynamic_data( const signed_block& b ) dgp.head_block_id = b.id(); dgp.time = b.timestamp; dgp.current_aslot += missed_blocks+1; +#ifndef PRIVATE_NET + if( head_block_num() >= SOPHIATX_WITNESS_VESTING_INCREASE_DAYS * SOPHIATX_BLOCKS_PER_DAY){ + dgp.witness_required_vesting = asset(SOPHIATX_FINAL_WITNESS_REQUIRED_VESTING_BALANCE, VESTS_SYMBOL); + } +#endif } ); if( !(get_node_properties().skip_flags & skip_undo_history_check) ) { - STEEM_ASSERT( _dgp.head_block_number - _dgp.last_irreversible_block_num < STEEM_MAX_UNDO_HISTORY, undo_database_exception, + SOPHIATX_ASSERT( _dgp.head_block_number - _dgp.last_irreversible_block_num < SOPHIATX_MAX_UNDO_HISTORY, undo_database_exception, "The database does not have enough undo history to support a blockchain with so many missed blocks. " "Please add a checkpoint if you would like to continue applying blocks beyond this point.", ("last_irreversible_block_num",_dgp.last_irreversible_block_num)("head", _dgp.head_block_number) - ("max_undo",STEEM_MAX_UNDO_HISTORY) ); + ("max_undo",SOPHIATX_MAX_UNDO_HISTORY) ); } } FC_CAPTURE_AND_RETHROW() } -void database::update_virtual_supply() -{ try { - modify( get_dynamic_global_properties(), [&]( dynamic_global_property_object& dgp ) - { - dgp.virtual_supply = dgp.current_supply - + ( get_feed_history().current_median_history.is_null() ? asset( 0, STEEM_SYMBOL ) : dgp.current_sbd_supply * get_feed_history().current_median_history ); - - auto median_price = get_feed_history().current_median_history; - - if( !median_price.is_null() && has_hardfork( STEEM_HARDFORK_0_14__230 ) ) - { - auto percent_sbd = uint16_t( ( ( fc::uint128_t( ( dgp.current_sbd_supply * get_feed_history().current_median_history ).amount.value ) * STEEM_100_PERCENT ) - / dgp.virtual_supply.amount.value ).to_uint64() ); - - if( percent_sbd <= STEEM_SBD_START_PERCENT ) - dgp.sbd_print_rate = STEEM_100_PERCENT; - else if( percent_sbd >= STEEM_SBD_STOP_PERCENT ) - dgp.sbd_print_rate = 0; - else - dgp.sbd_print_rate = ( ( STEEM_SBD_STOP_PERCENT - percent_sbd ) * STEEM_100_PERCENT ) / ( STEEM_SBD_STOP_PERCENT - STEEM_SBD_START_PERCENT ); - } - }); -} FC_CAPTURE_AND_RETHROW() } - void database::update_signing_witness(const witness_object& signing_witness, const signed_block& new_block) { try { const dynamic_global_property_object& dpo = get_dynamic_global_properties(); @@ -3166,12 +2355,12 @@ void database::update_last_irreversible_block() * Prior to voting taking over, we must be more conservative... * */ - if( head_block_num() < STEEM_START_MINER_VOTING_BLOCK ) + if( head_block_num() < SOPHIATX_START_MINER_VOTING_BLOCK ) { modify( dpo, [&]( dynamic_global_property_object& _dpo ) { - if ( head_block_num() > STEEM_MAX_WITNESSES ) - _dpo.last_irreversible_block_num = head_block_num() - STEEM_MAX_WITNESSES; + if ( head_block_num() > SOPHIATX_MAX_WITNESSES ) + _dpo.last_irreversible_block_num = head_block_num() - SOPHIATX_MAX_WITNESSES; } ); } else @@ -3183,13 +2372,13 @@ void database::update_last_irreversible_block() for( int i = 0; i < wso.num_scheduled_witnesses; i++ ) wit_objs.push_back( &get_witness( wso.current_shuffled_witnesses[i] ) ); - static_assert( STEEM_IRREVERSIBLE_THRESHOLD > 0, "irreversible threshold must be nonzero" ); + static_assert( SOPHIATX_IRREVERSIBLE_THRESHOLD > 0, "irreversible threshold must be nonzero" ); // 1 1 1 2 2 2 2 2 2 2 -> 2 .7*10 = 7 // 1 1 1 1 1 1 1 2 2 2 -> 1 // 3 3 3 3 3 3 3 3 3 3 -> 3 - size_t offset = ((STEEM_100_PERCENT - STEEM_IRREVERSIBLE_THRESHOLD) * wit_objs.size() / STEEM_100_PERCENT); + size_t offset = ((SOPHIATX_100_PERCENT - SOPHIATX_IRREVERSIBLE_THRESHOLD) * wit_objs.size() / SOPHIATX_100_PERCENT); std::nth_element( wit_objs.begin(), wit_objs.begin() + offset, wit_objs.end(), []( const witness_object* a, const witness_object* b ) @@ -3237,215 +2426,6 @@ void database::update_last_irreversible_block() } FC_CAPTURE_AND_RETHROW() } -bool database::apply_order( const limit_order_object& new_order_object ) -{ - auto order_id = new_order_object.id; - - const auto& limit_price_idx = get_index().indices().get(); - - auto max_price = ~new_order_object.sell_price; - auto limit_itr = limit_price_idx.lower_bound(max_price.max()); - auto limit_end = limit_price_idx.upper_bound(max_price); - - bool finished = false; - while( !finished && limit_itr != limit_end ) - { - auto old_limit_itr = limit_itr; - ++limit_itr; - // match returns 2 when only the old order was fully filled. In this case, we keep matching; otherwise, we stop. - finished = ( match(new_order_object, *old_limit_itr, old_limit_itr->sell_price) & 0x1 ); - } - - return find< limit_order_object >( order_id ) == nullptr; -} - -int database::match( const limit_order_object& new_order, const limit_order_object& old_order, const price& match_price ) -{ - bool has_hf_20__1815 = has_hardfork( STEEM_HARDFORK_0_20__1815 ); - -#pragma message( "TODO: Remove if(), do assert unconditionally after HF20 occurs" ) - if( has_hf_20__1815 ) - { - STEEM_ASSERT( new_order.sell_price.quote.symbol == old_order.sell_price.base.symbol, - order_match_exception, "error matching orders: ${new_order} ${old_order} ${match_price}", - ("new_order", new_order)("old_order", old_order)("match_price", match_price) ); - STEEM_ASSERT( new_order.sell_price.base.symbol == old_order.sell_price.quote.symbol, - order_match_exception, "error matching orders: ${new_order} ${old_order} ${match_price}", - ("new_order", new_order)("old_order", old_order)("match_price", match_price) ); - STEEM_ASSERT( new_order.for_sale > 0 && old_order.for_sale > 0, - order_match_exception, "error matching orders: ${new_order} ${old_order} ${match_price}", - ("new_order", new_order)("old_order", old_order)("match_price", match_price) ); - STEEM_ASSERT( match_price.quote.symbol == new_order.sell_price.base.symbol, - order_match_exception, "error matching orders: ${new_order} ${old_order} ${match_price}", - ("new_order", new_order)("old_order", old_order)("match_price", match_price) ); - STEEM_ASSERT( match_price.base.symbol == old_order.sell_price.base.symbol, - order_match_exception, "error matching orders: ${new_order} ${old_order} ${match_price}", - ("new_order", new_order)("old_order", old_order)("match_price", match_price) ); - } - - auto new_order_for_sale = new_order.amount_for_sale(); - auto old_order_for_sale = old_order.amount_for_sale(); - - asset new_order_pays, new_order_receives, old_order_pays, old_order_receives; - - if( new_order_for_sale <= old_order_for_sale * match_price ) - { - old_order_receives = new_order_for_sale; - new_order_receives = new_order_for_sale * match_price; - } - else - { - //This line once read: assert( old_order_for_sale < new_order_for_sale * match_price ); - //This assert is not always true -- see trade_amount_equals_zero in operation_tests.cpp - //Although new_order_for_sale is greater than old_order_for_sale * match_price, old_order_for_sale == new_order_for_sale * match_price - //Removing the assert seems to be safe -- apparently no asset is created or destroyed. - new_order_receives = old_order_for_sale; - old_order_receives = old_order_for_sale * match_price; - } - - old_order_pays = new_order_receives; - new_order_pays = old_order_receives; - -#pragma message( "TODO: Remove if(), do assert unconditionally after HF20 occurs" ) - if( has_hf_20__1815 ) - { - STEEM_ASSERT( new_order_pays == new_order.amount_for_sale() || - old_order_pays == old_order.amount_for_sale(), - order_match_exception, "error matching orders: ${new_order} ${old_order} ${match_price}", - ("new_order", new_order)("old_order", old_order)("match_price", match_price) ); - } - - auto age = head_block_time() - old_order.created; - if( !has_hardfork( STEEM_HARDFORK_0_12__178 ) && - ( (age >= STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC && !has_hardfork( STEEM_HARDFORK_0_10__149)) || - (age >= STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10 && has_hardfork( STEEM_HARDFORK_0_10__149) ) ) ) - { - if( old_order_receives.symbol == STEEM_SYMBOL ) - { - adjust_liquidity_reward( get_account( old_order.seller ), old_order_receives, false ); - adjust_liquidity_reward( get_account( new_order.seller ), -old_order_receives, false ); - } - else - { - adjust_liquidity_reward( get_account( old_order.seller ), new_order_receives, true ); - adjust_liquidity_reward( get_account( new_order.seller ), -new_order_receives, true ); - } - } - - push_virtual_operation( fill_order_operation( new_order.seller, new_order.orderid, new_order_pays, old_order.seller, old_order.orderid, old_order_pays ) ); - - int result = 0; - result |= fill_order( new_order, new_order_pays, new_order_receives ); - result |= fill_order( old_order, old_order_pays, old_order_receives ) << 1; - -#pragma message( "TODO: Remove if(), do assert unconditionally after HF20 occurs" ) - if( has_hf_20__1815 ) - { - STEEM_ASSERT( result != 0, - order_match_exception, "error matching orders: ${new_order} ${old_order} ${match_price}", - ("new_order", new_order)("old_order", old_order)("match_price", match_price) ); - } - return result; -} - - -void database::adjust_liquidity_reward( const account_object& owner, const asset& volume, bool is_sdb ) -{ - const auto& ridx = get_index< liquidity_reward_balance_index >().indices().get< by_owner >(); - auto itr = ridx.find( owner.id ); - if( itr != ridx.end() ) - { - modify( *itr, [&]( liquidity_reward_balance_object& r ) - { - if( head_block_time() - r.last_update >= STEEM_LIQUIDITY_TIMEOUT_SEC ) - { - r.sbd_volume = 0; - r.steem_volume = 0; - r.weight = 0; - } - - if( is_sdb ) - r.sbd_volume += volume.amount.value; - else - r.steem_volume += volume.amount.value; - - r.update_weight( has_hardfork( STEEM_HARDFORK_0_10__141 ) ); - r.last_update = head_block_time(); - } ); - } - else - { - create( [&](liquidity_reward_balance_object& r ) - { - r.owner = owner.id; - if( is_sdb ) - r.sbd_volume = volume.amount.value; - else - r.steem_volume = volume.amount.value; - - r.update_weight( has_hardfork( STEEM_HARDFORK_0_9__141 ) ); - r.last_update = head_block_time(); - } ); - } -} - - -bool database::fill_order( const limit_order_object& order, const asset& pays, const asset& receives ) -{ - try - { - STEEM_ASSERT( order.amount_for_sale().symbol == pays.symbol, - order_fill_exception, "error filling orders: ${order} ${pays} ${receives}", - ("order", order)("pays", pays)("receives", receives) ); - STEEM_ASSERT( pays.symbol != receives.symbol, - order_fill_exception, "error filling orders: ${order} ${pays} ${receives}", - ("order", order)("pays", pays)("receives", receives) ); - - adjust_balance( order.seller, receives ); - - if( pays == order.amount_for_sale() ) - { - remove( order ); - return true; - } - else - { -#pragma message( "TODO: Remove if(), do assert unconditionally after HF20 occurs" ) - if( has_hardfork( STEEM_HARDFORK_0_20__1815 ) ) - { - STEEM_ASSERT( pays < order.amount_for_sale(), - order_fill_exception, "error filling orders: ${order} ${pays} ${receives}", - ("order", order)("pays", pays)("receives", receives) ); - } - - modify( order, [&]( limit_order_object& b ) - { - b.for_sale -= pays.amount; - } ); - /** - * There are times when the AMOUNT_FOR_SALE * SALE_PRICE == 0 which means that we - * have hit the limit where the seller is asking for nothing in return. When this - * happens we must refund any balance back to the seller, it is too small to be - * sold at the sale price. - */ - if( order.amount_to_receive().amount == 0 ) - { - cancel_order(order); - return true; - } - return false; - } - } - FC_CAPTURE_AND_RETHROW( (order)(pays)(receives) ) -} - -void database::cancel_order( const limit_order_object& order ) -{ - adjust_balance( order.seller, order.amount_for_sale() ); - remove(order); -} - - void database::clear_expired_transactions() { //Look for expired transactions in the deduplication list, and remove them. @@ -3456,37 +2436,7 @@ void database::clear_expired_transactions() remove( *dedupe_index.begin() ); } -void database::clear_expired_orders() -{ - auto now = head_block_time(); - const auto& orders_by_exp = get_index().indices().get(); - auto itr = orders_by_exp.begin(); - while( itr != orders_by_exp.end() && itr->expiration < now ) - { - cancel_order( *itr ); - itr = orders_by_exp.begin(); - } -} - -void database::clear_expired_delegations() -{ - auto now = head_block_time(); - const auto& delegations_by_exp = get_index< vesting_delegation_expiration_index, by_expiration >(); - auto itr = delegations_by_exp.begin(); - while( itr != delegations_by_exp.end() && itr->expiration < now ) - { - modify( get_account( itr->delegator ), [&]( account_object& a ) - { - a.delegated_vesting_shares -= itr->vesting_shares; - }); - - push_virtual_operation( return_vesting_delegation_operation( itr->delegator, itr->vesting_shares ) ); - - remove( *itr ); - itr = delegations_by_exp.begin(); - } -} -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT template< typename smt_balance_object_type > void database::adjust_smt_balance( const account_name_type& name, const asset& delta, bool check_account ) { @@ -3526,215 +2476,85 @@ void database::adjust_smt_balance( const account_name_type& name, const asset& d { smt_balance.balance = result; } ); - } - } -} -#endif - -void database::modify_balance( const account_object& a, const asset& delta, bool check_balance ) -{ - modify( a, [&]( account_object& acnt ) - { - switch( delta.symbol.asset_num ) - { - case STEEM_ASSET_NUM_STEEM: - acnt.balance += delta; - if( check_balance ) - { - FC_ASSERT( acnt.balance.amount.value >= 0, "Insufficient STEEM funds" ); - } - break; - case STEEM_ASSET_NUM_SBD: - if( a.sbd_seconds_last_update != head_block_time() ) - { - acnt.sbd_seconds += fc::uint128_t(a.sbd_balance.amount.value) * (head_block_time() - a.sbd_seconds_last_update).to_seconds(); - acnt.sbd_seconds_last_update = head_block_time(); - - if( acnt.sbd_seconds > 0 && - (acnt.sbd_seconds_last_update - acnt.sbd_last_interest_payment).to_seconds() > STEEM_SBD_INTEREST_COMPOUND_INTERVAL_SEC ) - { - auto interest = acnt.sbd_seconds / STEEM_SECONDS_PER_YEAR; - interest *= get_dynamic_global_properties().sbd_interest_rate; - interest /= STEEM_100_PERCENT; - asset interest_paid(interest.to_uint64(), SBD_SYMBOL); - acnt.sbd_balance += interest_paid; - acnt.sbd_seconds = 0; - acnt.sbd_last_interest_payment = head_block_time(); - - if(interest > 0) - push_virtual_operation( interest_operation( a.name, interest_paid ) ); - - modify( get_dynamic_global_properties(), [&]( dynamic_global_property_object& props) - { - props.current_sbd_supply += interest_paid; - props.virtual_supply += interest_paid * get_feed_history().current_median_history; - } ); - } - } - acnt.sbd_balance += delta; - if( check_balance ) - { - FC_ASSERT( acnt.sbd_balance.amount.value >= 0, "Insufficient SBD funds" ); - } - break; - default: - FC_ASSERT( false, "invalid symbol" ); - } - } ); -} - -void database::modify_reward_balance( const account_object& a, const asset& delta, bool check_balance ) -{ - modify( a, [&]( account_object& acnt ) - { - switch( delta.symbol.asset_num ) - { - case STEEM_ASSET_NUM_STEEM: - acnt.reward_steem_balance += delta; - if( check_balance ) - { - FC_ASSERT( acnt.reward_steem_balance.amount.value >= 0, "Insufficient reward STEEM funds" ); - } - break; - case STEEM_ASSET_NUM_SBD: - acnt.reward_sbd_balance += delta; - if( check_balance ) - { - FC_ASSERT( acnt.reward_sbd_balance.amount.value >= 0, "Insufficient reward SBD funds" ); - } - break; - default: - FC_ASSERT( false, "invalid symbol" ); - } - }); -} - -void database::adjust_balance( const account_object& a, const asset& delta ) -{ - bool check_balance = has_hardfork( STEEM_HARDFORK_0_20__1811 ); - -#ifdef STEEM_ENABLE_SMT - // No account object modification for SMT balance, hence separate handling here. - // Note that SMT related code, being post-20-hf needs no hf-guard to do balance checks. - if( delta.symbol.space() == asset_symbol_type::smt_nai_space ) - { - adjust_smt_balance< account_regular_balance_object >( a.name, delta, false/*check_account*/ ); - return; - } -#endif - modify_balance( a, delta, check_balance ); -} - -void database::adjust_balance( const account_name_type& name, const asset& delta ) -{ - bool check_balance = has_hardfork( STEEM_HARDFORK_0_20__1811 ); - -#ifdef STEEM_ENABLE_SMT - // No account object modification for SMT balance, hence separate handling here. - // Note that SMT related code, being post-20-hf needs no hf-guard to do balance checks. - if( delta.symbol.space() == asset_symbol_type::smt_nai_space ) - { - adjust_smt_balance< account_regular_balance_object >( name, delta, true/*check_account*/ ); - return; + } } +} #endif - const auto& a = get_account( name ); - modify_balance( a, delta, check_balance ); + +void database::create_vesting( const account_object& a, const asset& delta){ + FC_ASSERT(delta.symbol == VESTS_SYMBOL, "invalid symbol"); + FC_ASSERT(delta.amount >= 0, "cannot remove vests"); + + modify( a, [&]( account_object& acnt ) + { + acnt.vesting_shares.amount += delta.amount; + + acnt.update_considered_holding(delta.amount, head_block_num()); + adjust_proxied_witness_votes(a, delta.amount); + + } ); } -void database::adjust_savings_balance( const account_object& a, const asset& delta ) + +void database::modify_balance( const account_object& a, const asset& delta, bool check_balance ) { - bool check_balance = has_hardfork( STEEM_HARDFORK_0_20__1811 ); + FC_ASSERT(delta.symbol == SOPHIATX_SYMBOL, "invalid symbol"); modify( a, [&]( account_object& acnt ) { - switch( delta.symbol.asset_num ) - { - case STEEM_ASSET_NUM_STEEM: - acnt.savings_balance += delta; - if( check_balance ) - { - FC_ASSERT( acnt.savings_balance.amount.value >= 0, "Insufficient savings STEEM funds" ); - } - break; - case STEEM_ASSET_NUM_SBD: - if( a.savings_sbd_seconds_last_update != head_block_time() ) - { - acnt.savings_sbd_seconds += fc::uint128_t(a.savings_sbd_balance.amount.value) * (head_block_time() - a.savings_sbd_seconds_last_update).to_seconds(); - acnt.savings_sbd_seconds_last_update = head_block_time(); + acnt.balance.amount += delta.amount; + + acnt.update_considered_holding(delta.amount, head_block_num()); + if( check_balance ) + { + FC_ASSERT( acnt.balance.amount.value >= 0, "Insufficient SOPHIATX funds" ); + } + adjust_proxied_witness_votes(a, delta.amount); - if( acnt.savings_sbd_seconds > 0 && - (acnt.savings_sbd_seconds_last_update - acnt.savings_sbd_last_interest_payment).to_seconds() > STEEM_SBD_INTEREST_COMPOUND_INTERVAL_SEC ) - { - auto interest = acnt.savings_sbd_seconds / STEEM_SECONDS_PER_YEAR; - interest *= get_dynamic_global_properties().sbd_interest_rate; - interest /= STEEM_100_PERCENT; - asset interest_paid(interest.to_uint64(), SBD_SYMBOL); - acnt.savings_sbd_balance += interest_paid; - acnt.savings_sbd_seconds = 0; - acnt.savings_sbd_last_interest_payment = head_block_time(); - - if(interest > 0) - push_virtual_operation( interest_operation( a.name, interest_paid ) ); - - modify( get_dynamic_global_properties(), [&]( dynamic_global_property_object& props) - { - props.current_sbd_supply += interest_paid; - props.virtual_supply += interest_paid * get_feed_history().current_median_history; - } ); - } - } - acnt.savings_sbd_balance += delta; - if( check_balance ) - { - FC_ASSERT( acnt.savings_sbd_balance.amount.value >= 0, "Insufficient savings SBD funds" ); - } - break; - default: - FC_ASSERT( !"invalid symbol" ); - } } ); + } -void database::adjust_reward_balance( const account_object& a, const asset& delta ) +void database::adjust_balance( const account_object& a, const asset& delta ) { - bool check_balance = has_hardfork( STEEM_HARDFORK_0_20__1811 ); -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT // No account object modification for SMT balance, hence separate handling here. // Note that SMT related code, being post-20-hf needs no hf-guard to do balance checks. if( delta.symbol.space() == asset_symbol_type::smt_nai_space ) { - adjust_smt_balance< account_rewards_balance_object >( a.name, delta, false/*check_account*/ ); + adjust_smt_balance< account_regular_balance_object >( a.name, delta, false/*check_account*/ ); return; } #endif - - modify_reward_balance(a, delta, check_balance); + modify_balance( a, delta, true ); } -void database::adjust_reward_balance( const account_name_type& name, const asset& delta ) +void database::adjust_balance( const account_name_type& name, const asset& delta ) { - bool check_balance = has_hardfork( STEEM_HARDFORK_0_20__1811 ); -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT // No account object modification for SMT balance, hence separate handling here. // Note that SMT related code, being post-20-hf needs no hf-guard to do balance checks. if( delta.symbol.space() == asset_symbol_type::smt_nai_space ) { - adjust_smt_balance< account_rewards_balance_object >( name, delta, false/*check_account*/ ); + adjust_smt_balance< account_regular_balance_object >( name, delta, true/*check_account*/ ); return; } #endif + const auto& a = get_account( name ); + modify_balance( a, delta, true ); +} +void database::create_vesting( const account_name_type& name, const asset& delta){ const auto& a = get_account( name ); - modify_reward_balance(a, delta, check_balance); + create_vesting( a, delta); } -void database::adjust_supply( const asset& delta, bool adjust_vesting ) +void database::adjust_supply( const asset& delta ) { -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT if( delta.symbol.space() == asset_symbol_type::smt_nai_space ) { const auto& smt = get< smt_token_object, by_symbol >( delta.symbol ); @@ -3748,36 +2568,19 @@ void database::adjust_supply( const asset& delta, bool adjust_vesting ) } #endif - bool check_supply = has_hardfork( STEEM_HARDFORK_0_20__1811 ); - const auto& props = get_dynamic_global_properties(); - if( props.head_block_number < STEEM_BLOCKS_PER_DAY*7 ) - adjust_vesting = false; modify( props, [&]( dynamic_global_property_object& props ) { - switch( delta.symbol.asset_num ) + switch( delta.symbol.value ) { - case STEEM_ASSET_NUM_STEEM: + case SOPHIATX_SYMBOL_SER: { - asset new_vesting( (adjust_vesting && delta.amount > 0) ? delta.amount * 9 : 0, STEEM_SYMBOL ); - props.current_supply += delta + new_vesting; - props.virtual_supply += delta + new_vesting; - props.total_vesting_fund_steem += new_vesting; - if( check_supply ) - { - FC_ASSERT( props.current_supply.amount.value >= 0 ); - } + props.current_supply += delta; + FC_ASSERT( props.current_supply.amount.value >= 0 ); + break; } - case STEEM_ASSET_NUM_SBD: - props.current_sbd_supply += delta; - props.virtual_supply = props.current_sbd_supply * get_feed_history().current_median_history + props.current_supply; - if( check_supply ) - { - FC_ASSERT( props.current_sbd_supply.amount.value >= 0 ); - } - break; default: FC_ASSERT( false, "invalid symbol" ); } @@ -3787,15 +2590,14 @@ void database::adjust_supply( const asset& delta, bool adjust_vesting ) asset database::get_balance( const account_object& a, asset_symbol_type symbol )const { - switch( symbol.asset_num ) + switch( symbol.value ) { - case STEEM_ASSET_NUM_STEEM: + case SOPHIATX_SYMBOL_SER: return a.balance; - case STEEM_ASSET_NUM_SBD: - return a.sbd_balance; + default: { -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT FC_ASSERT( symbol.space() == asset_symbol_type::smt_nai_space, "invalid symbol" ); const account_regular_balance_object* arbo = find< account_regular_balance_object, by_owner_symbol >( boost::make_tuple(a.name, symbol) ); @@ -3814,95 +2616,16 @@ asset database::get_balance( const account_object& a, asset_symbol_type symbol ) } } -asset database::get_savings_balance( const account_object& a, asset_symbol_type symbol )const -{ - switch( symbol.asset_num ) - { - case STEEM_ASSET_NUM_STEEM: - return a.savings_balance; - case STEEM_ASSET_NUM_SBD: - return a.savings_sbd_balance; - default: // Note no savings balance for SMT per comments in issue 1682. - FC_ASSERT( !"invalid symbol" ); - } -} - void database::init_hardforks() { - _hardfork_times[ 0 ] = fc::time_point_sec( STEEM_GENESIS_TIME ); - _hardfork_versions[ 0 ] = hardfork_version( 0, 0 ); - FC_ASSERT( STEEM_HARDFORK_0_1 == 1, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_1 ] = fc::time_point_sec( STEEM_HARDFORK_0_1_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_1 ] = STEEM_HARDFORK_0_1_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_2 == 2, "Invlaid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_2 ] = fc::time_point_sec( STEEM_HARDFORK_0_2_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_2 ] = STEEM_HARDFORK_0_2_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_3 == 3, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_3 ] = fc::time_point_sec( STEEM_HARDFORK_0_3_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_3 ] = STEEM_HARDFORK_0_3_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_4 == 4, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_4 ] = fc::time_point_sec( STEEM_HARDFORK_0_4_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_4 ] = STEEM_HARDFORK_0_4_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_5 == 5, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_5 ] = fc::time_point_sec( STEEM_HARDFORK_0_5_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_5 ] = STEEM_HARDFORK_0_5_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_6 == 6, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_6 ] = fc::time_point_sec( STEEM_HARDFORK_0_6_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_6 ] = STEEM_HARDFORK_0_6_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_7 == 7, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_7 ] = fc::time_point_sec( STEEM_HARDFORK_0_7_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_7 ] = STEEM_HARDFORK_0_7_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_8 == 8, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_8 ] = fc::time_point_sec( STEEM_HARDFORK_0_8_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_8 ] = STEEM_HARDFORK_0_8_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_9 == 9, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_9 ] = fc::time_point_sec( STEEM_HARDFORK_0_9_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_9 ] = STEEM_HARDFORK_0_9_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_10 == 10, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_10 ] = fc::time_point_sec( STEEM_HARDFORK_0_10_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_10 ] = STEEM_HARDFORK_0_10_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_11 == 11, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_11 ] = fc::time_point_sec( STEEM_HARDFORK_0_11_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_11 ] = STEEM_HARDFORK_0_11_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_12 == 12, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_12 ] = fc::time_point_sec( STEEM_HARDFORK_0_12_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_12 ] = STEEM_HARDFORK_0_12_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_13 == 13, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_13 ] = fc::time_point_sec( STEEM_HARDFORK_0_13_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_13 ] = STEEM_HARDFORK_0_13_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_14 == 14, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_14 ] = fc::time_point_sec( STEEM_HARDFORK_0_14_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_14 ] = STEEM_HARDFORK_0_14_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_15 == 15, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_15 ] = fc::time_point_sec( STEEM_HARDFORK_0_15_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_15 ] = STEEM_HARDFORK_0_15_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_16 == 16, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_16 ] = fc::time_point_sec( STEEM_HARDFORK_0_16_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_16 ] = STEEM_HARDFORK_0_16_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_17 == 17, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_17 ] = fc::time_point_sec( STEEM_HARDFORK_0_17_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_17 ] = STEEM_HARDFORK_0_17_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_18 == 18, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_18 ] = fc::time_point_sec( STEEM_HARDFORK_0_18_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_18 ] = STEEM_HARDFORK_0_18_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_19 == 19, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_19 ] = fc::time_point_sec( STEEM_HARDFORK_0_19_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_19 ] = STEEM_HARDFORK_0_19_VERSION; -#ifdef IS_TEST_NET - FC_ASSERT( STEEM_HARDFORK_0_20 == 20, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_20 ] = fc::time_point_sec( STEEM_HARDFORK_0_20_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_20 ] = STEEM_HARDFORK_0_20_VERSION; - FC_ASSERT( STEEM_HARDFORK_0_21 == 21, "Invalid hardfork configuration" ); - _hardfork_times[ STEEM_HARDFORK_0_21 ] = fc::time_point_sec( STEEM_HARDFORK_0_21_TIME ); - _hardfork_versions[ STEEM_HARDFORK_0_21 ] = STEEM_HARDFORK_0_21_VERSION; -#endif - + _hardfork_times[ 0 ] = fc::time_point_sec( get_genesis_time() ); + _hardfork_versions[ 0 ] = hardfork_version( 1, 0 ); const auto& hardforks = get_hardfork_property_object(); - FC_ASSERT( hardforks.last_hardfork <= STEEM_NUM_HARDFORKS, "Chain knows of more hardforks than configuration", ("hardforks.last_hardfork",hardforks.last_hardfork)("STEEM_NUM_HARDFORKS",STEEM_NUM_HARDFORKS) ); - FC_ASSERT( _hardfork_versions[ hardforks.last_hardfork ] <= STEEM_BLOCKCHAIN_VERSION, "Blockchain version is older than last applied hardfork" ); - FC_ASSERT( STEEM_BLOCKCHAIN_HARDFORK_VERSION >= STEEM_BLOCKCHAIN_VERSION ); - FC_ASSERT( STEEM_BLOCKCHAIN_HARDFORK_VERSION == _hardfork_versions[ STEEM_NUM_HARDFORKS ] ); + FC_ASSERT( hardforks.last_hardfork <= SOPHIATX_NUM_HARDFORKS, "Chain knows of more hardforks than configuration", ("hardforks.last_hardfork",hardforks.last_hardfork)("SOPHIATX_NUM_HARDFORKS",SOPHIATX_NUM_HARDFORKS) ); + FC_ASSERT( _hardfork_versions[ hardforks.last_hardfork ] <= SOPHIATX_BLOCKCHAIN_VERSION, "Blockchain version is older than last applied hardfork" ); + FC_ASSERT( SOPHIATX_BLOCKCHAIN_HARDFORK_VERSION >= SOPHIATX_BLOCKCHAIN_VERSION ); + FC_ASSERT( SOPHIATX_BLOCKCHAIN_HARDFORK_VERSION == _hardfork_versions[ SOPHIATX_NUM_HARDFORKS ] ); } void database::process_hardforks() @@ -3912,27 +2635,18 @@ void database::process_hardforks() // If there are upcoming hardforks and the next one is later, do nothing const auto& hardforks = get_hardfork_property_object(); - if( has_hardfork( STEEM_HARDFORK_0_5__54 ) ) { while( _hardfork_versions[ hardforks.last_hardfork ] < hardforks.next_hardfork && hardforks.next_hardfork_time <= head_block_time() ) { - if( hardforks.last_hardfork < STEEM_NUM_HARDFORKS ) { + if( hardforks.last_hardfork < SOPHIATX_NUM_HARDFORKS ) { apply_hardfork( hardforks.last_hardfork + 1 ); } else throw unknown_hardfork_exception(); } } - else - { - while( hardforks.last_hardfork < STEEM_NUM_HARDFORKS - && _hardfork_times[ hardforks.last_hardfork + 1 ] <= head_block_time() - && hardforks.last_hardfork < STEEM_HARDFORK_0_5__54 ) - { - apply_hardfork( hardforks.last_hardfork + 1 ); - } - } + } FC_CAPTURE_AND_RETHROW() } @@ -3946,18 +2660,14 @@ void database::set_hardfork( uint32_t hardfork, bool apply_now ) { auto const& hardforks = get_hardfork_property_object(); - for( uint32_t i = hardforks.last_hardfork + 1; i <= hardfork && i <= STEEM_NUM_HARDFORKS; i++ ) + for( uint32_t i = hardforks.last_hardfork + 1; i <= hardfork && i <= SOPHIATX_NUM_HARDFORKS; i++ ) { - if( i <= STEEM_HARDFORK_0_5__54 ) - _hardfork_times[i] = head_block_time(); - else - { - modify( hardforks, [&]( hardfork_property_object& hpo ) - { + + modify( hardforks, [&]( hardfork_property_object& hpo ) { hpo.next_hardfork = _hardfork_versions[i]; hpo.next_hardfork_time = head_block_time(); - } ); - } + }); + if( apply_now ) apply_hardfork( i ); @@ -3969,263 +2679,11 @@ void database::apply_hardfork( uint32_t hardfork ) if( _log_hardforks ) elog( "HARDFORK ${hf} at block ${b}", ("hf", hardfork)("b", head_block_num()) ); - switch( hardfork ) - { - case STEEM_HARDFORK_0_1: - perform_vesting_share_split( 1000000 ); -#ifdef IS_TEST_NET - { - custom_operation test_op; - string op_msg = "Testnet: Hardfork applied"; - test_op.data = vector< char >( op_msg.begin(), op_msg.end() ); - test_op.required_auths.insert( STEEM_INIT_MINER_NAME ); - operation op = test_op; // we need the operation object to live to the end of this scope - operation_notification note( op ); - notify_pre_apply_operation( note ); - notify_post_apply_operation( note ); - } - break; -#endif - break; - case STEEM_HARDFORK_0_2: - retally_witness_votes(); - break; - case STEEM_HARDFORK_0_3: - retally_witness_votes(); - break; - case STEEM_HARDFORK_0_4: - reset_virtual_schedule_time(*this); - break; - case STEEM_HARDFORK_0_5: - break; - case STEEM_HARDFORK_0_6: - retally_witness_vote_counts(); - retally_comment_children(); - break; - case STEEM_HARDFORK_0_7: - break; - case STEEM_HARDFORK_0_8: - retally_witness_vote_counts(true); - break; - case STEEM_HARDFORK_0_9: - { - for( const std::string& acc : hardfork9::get_compromised_accounts() ) - { - const account_object* account = find_account( acc ); - if( account == nullptr ) - continue; - - update_owner_authority( *account, authority( 1, public_key_type( "STM7sw22HqsXbz7D2CmJfmMwt9rimtk518dRzsR1f8Cgw52dQR1pR" ), 1 ) ); - - modify( get< account_authority_object, by_account >( account->name ), [&]( account_authority_object& auth ) - { - auth.active = authority( 1, public_key_type( "STM7sw22HqsXbz7D2CmJfmMwt9rimtk518dRzsR1f8Cgw52dQR1pR" ), 1 ); - auth.posting = authority( 1, public_key_type( "STM7sw22HqsXbz7D2CmJfmMwt9rimtk518dRzsR1f8Cgw52dQR1pR" ), 1 ); - }); - } - } - break; - case STEEM_HARDFORK_0_10: - retally_liquidity_weight(); - break; - case STEEM_HARDFORK_0_11: - break; - case STEEM_HARDFORK_0_12: - { - const auto& comment_idx = get_index< comment_index >().indices(); - - for( auto itr = comment_idx.begin(); itr != comment_idx.end(); ++itr ) - { - // At the hardfork time, all new posts with no votes get their cashout time set to +12 hrs from head block time. - // All posts with a payout get their cashout time set to +30 days. This hardfork takes place within 30 days - // initial payout so we don't have to handle the case of posts that should be frozen that aren't - if( itr->parent_author == STEEM_ROOT_POST_PARENT ) - { - // Post has not been paid out and has no votes (cashout_time == 0 === net_rshares == 0, under current semmantics) - if( itr->last_payout == fc::time_point_sec::min() && itr->cashout_time == fc::time_point_sec::maximum() ) - { - modify( *itr, [&]( comment_object & c ) - { - c.cashout_time = head_block_time() + STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF17; - }); - } - // Has been paid out, needs to be on second cashout window - else if( itr->last_payout > fc::time_point_sec() ) - { - modify( *itr, [&]( comment_object& c ) - { - c.cashout_time = c.last_payout + STEEM_SECOND_CASHOUT_WINDOW; - }); - } - } - } - - modify( get< account_authority_object, by_account >( STEEM_MINER_ACCOUNT ), [&]( account_authority_object& auth ) - { - auth.posting = authority(); - auth.posting.weight_threshold = 1; - }); - - modify( get< account_authority_object, by_account >( STEEM_NULL_ACCOUNT ), [&]( account_authority_object& auth ) - { - auth.posting = authority(); - auth.posting.weight_threshold = 1; - }); - - modify( get< account_authority_object, by_account >( STEEM_TEMP_ACCOUNT ), [&]( account_authority_object& auth ) - { - auth.posting = authority(); - auth.posting.weight_threshold = 1; - }); - } - break; - case STEEM_HARDFORK_0_13: - break; - case STEEM_HARDFORK_0_14: - break; - case STEEM_HARDFORK_0_15: - break; - case STEEM_HARDFORK_0_16: - { - modify( get_feed_history(), [&]( feed_history_object& fho ) - { - while( fho.price_history.size() > STEEM_FEED_HISTORY_WINDOW ) - fho.price_history.pop_front(); - }); - } - break; - case STEEM_HARDFORK_0_17: - { - static_assert( - STEEM_MAX_VOTED_WITNESSES_HF0 + STEEM_MAX_MINER_WITNESSES_HF0 + STEEM_MAX_RUNNER_WITNESSES_HF0 == STEEM_MAX_WITNESSES, - "HF0 witness counts must add up to STEEM_MAX_WITNESSES" ); - static_assert( - STEEM_MAX_VOTED_WITNESSES_HF17 + STEEM_MAX_MINER_WITNESSES_HF17 + STEEM_MAX_RUNNER_WITNESSES_HF17 == STEEM_MAX_WITNESSES, - "HF17 witness counts must add up to STEEM_MAX_WITNESSES" ); - - modify( get_witness_schedule_object(), [&]( witness_schedule_object& wso ) - { - wso.max_voted_witnesses = STEEM_MAX_VOTED_WITNESSES_HF17; - wso.max_miner_witnesses = STEEM_MAX_MINER_WITNESSES_HF17; - wso.max_runner_witnesses = STEEM_MAX_RUNNER_WITNESSES_HF17; - }); - - const auto& gpo = get_dynamic_global_properties(); - - auto post_rf = create< reward_fund_object >( [&]( reward_fund_object& rfo ) - { - rfo.name = STEEM_POST_REWARD_FUND_NAME; - rfo.last_update = head_block_time(); - rfo.content_constant = STEEM_CONTENT_CONSTANT_HF0; - rfo.percent_curation_rewards = STEEM_1_PERCENT * 25; - rfo.percent_content_rewards = STEEM_100_PERCENT; - rfo.reward_balance = gpo.total_reward_fund_steem; -#ifndef IS_TEST_NET - rfo.recent_claims = STEEM_HF_17_RECENT_CLAIMS; -#endif - rfo.author_reward_curve = curve_id::quadratic; - rfo.curation_reward_curve = curve_id::quadratic_curation; - }); - - // As a shortcut in payout processing, we use the id as an array index. - // The IDs must be assigned this way. The assertion is a dummy check to ensure this happens. - FC_ASSERT( post_rf.id._id == 0 ); - - modify( gpo, [&]( dynamic_global_property_object& g ) - { - g.total_reward_fund_steem = asset( 0, STEEM_SYMBOL ); - g.total_reward_shares2 = 0; - }); - - /* - * For all current comments we will either keep their current cashout time, or extend it to 1 week - * after creation. - * - * We cannot do a simple iteration by cashout time because we are editting cashout time. - * More specifically, we will be adding an explicit cashout time to all comments with parents. - * To find all discussions that have not been paid out we fir iterate over posts by cashout time. - * Before the hardfork these are all root posts. Iterate over all of their children, adding each - * to a specific list. Next, update payout times for all discussions on the root post. This defines - * the min cashout time for each child in the discussion. Then iterate over the children and set - * their cashout time in a similar way, grabbing the root post as their inherent cashout time. - */ - const auto& comment_idx = get_index< comment_index, by_cashout_time >(); - const auto& by_root_idx = get_index< comment_index, by_root >(); - vector< const comment_object* > root_posts; - root_posts.reserve( STEEM_HF_17_NUM_POSTS ); - vector< const comment_object* > replies; - replies.reserve( STEEM_HF_17_NUM_REPLIES ); - - for( auto itr = comment_idx.begin(); itr != comment_idx.end() && itr->cashout_time < fc::time_point_sec::maximum(); ++itr ) - { - root_posts.push_back( &(*itr) ); - - for( auto reply_itr = by_root_idx.lower_bound( itr->id ); reply_itr != by_root_idx.end() && reply_itr->root_comment == itr->id; ++reply_itr ) - { - replies.push_back( &(*reply_itr) ); - } - } - - for( const auto& itr : root_posts ) - { - modify( *itr, [&]( comment_object& c ) - { - c.cashout_time = std::max( c.created + STEEM_CASHOUT_WINDOW_SECONDS, c.cashout_time ); - }); - } - - for( const auto& itr : replies ) - { - modify( *itr, [&]( comment_object& c ) - { - c.cashout_time = std::max( calculate_discussion_payout_time( c ), c.created + STEEM_CASHOUT_WINDOW_SECONDS ); - }); - } - } - break; - case STEEM_HARDFORK_0_18: - break; - case STEEM_HARDFORK_0_19: - { - modify( get_dynamic_global_properties(), [&]( dynamic_global_property_object& gpo ) - { - gpo.vote_power_reserve_rate = STEEM_REDUCED_VOTE_POWER_RATE; - }); - - modify( get< reward_fund_object, by_name >( STEEM_POST_REWARD_FUND_NAME ), [&]( reward_fund_object &rfo ) - { -#ifndef IS_TEST_NET - rfo.recent_claims = STEEM_HF_19_RECENT_CLAIMS; -#endif - rfo.author_reward_curve = curve_id::linear; - rfo.curation_reward_curve = curve_id::square_root; - }); - - /* Remove all 0 delegation objects */ - vector< const vesting_delegation_object* > to_remove; - const auto& delegation_idx = get_index< vesting_delegation_index, by_id >(); - auto delegation_itr = delegation_idx.begin(); - while( delegation_itr != delegation_idx.end() ) - { - if( delegation_itr->vesting_shares.amount == 0 ) - to_remove.push_back( &(*delegation_itr) ); - ++delegation_itr; - } + switch( hardfork ) + { - for( const vesting_delegation_object* delegation_ptr: to_remove ) - { - remove( *delegation_ptr ); - } - } - break; -#ifdef IS_TEST_NET - case STEEM_HARDFORK_0_20: - break; - case STEEM_HARDFORK_0_21: - break; -#endif default: break; } @@ -4243,15 +2701,6 @@ void database::apply_hardfork( uint32_t hardfork ) push_virtual_operation( hardfork_operation( hardfork ), true ); } -void database::retally_liquidity_weight() { - const auto& ridx = get_index< liquidity_reward_balance_index >().indices().get< by_owner >(); - for( const auto& i : ridx ) { - modify( i, []( liquidity_reward_balance_object& o ){ - o.update_weight(true/*HAS HARDFORK10 if this method is called*/); - }); - } -} - /** * Verifies all supply invariantes check out */ @@ -4260,116 +2709,55 @@ void database::validate_invariants()const try { const auto& account_idx = get_index().indices().get(); - asset total_supply = asset( 0, STEEM_SYMBOL ); - asset total_sbd = asset( 0, SBD_SYMBOL ); + asset total_supply = asset( 0, SOPHIATX_SYMBOL ); asset total_vesting = asset( 0, VESTS_SYMBOL ); - asset pending_vesting_steem = asset( 0, STEEM_SYMBOL ); share_type total_vsf_votes = share_type( 0 ); - auto gpo = get_dynamic_global_properties(); + const auto& gpo = get_dynamic_global_properties(); + const auto& econ = get_economic_model(); /// verify no witness has too many votes const auto& witness_idx = get_index< witness_index >().indices(); for( auto itr = witness_idx.begin(); itr != witness_idx.end(); ++itr ) - FC_ASSERT( itr->votes <= gpo.total_vesting_shares.amount, "", ("itr",*itr) ); + FC_ASSERT( itr->votes <= gpo.current_supply.amount, "", ("itr",*itr) ); for( auto itr = account_idx.begin(); itr != account_idx.end(); ++itr ) { total_supply += itr->balance; - total_supply += itr->savings_balance; - total_supply += itr->reward_steem_balance; - total_sbd += itr->sbd_balance; - total_sbd += itr->savings_sbd_balance; - total_sbd += itr->reward_sbd_balance; total_vesting += itr->vesting_shares; - total_vesting += itr->reward_vesting_balance; - pending_vesting_steem += itr->reward_vesting_steem; - total_vsf_votes += ( itr->proxy == STEEM_PROXY_TO_SELF_ACCOUNT ? + total_vsf_votes += ( itr->proxy == SOPHIATX_PROXY_TO_SELF_ACCOUNT ? itr->witness_vote_weight() : - ( STEEM_MAX_PROXY_RECURSION_DEPTH > 0 ? - itr->proxied_vsf_votes[STEEM_MAX_PROXY_RECURSION_DEPTH - 1] : - itr->vesting_shares.amount ) ); - } - - const auto& convert_request_idx = get_index< convert_request_index >().indices(); - - for( auto itr = convert_request_idx.begin(); itr != convert_request_idx.end(); ++itr ) - { - if( itr->amount.symbol == STEEM_SYMBOL ) - total_supply += itr->amount; - else if( itr->amount.symbol == SBD_SYMBOL ) - total_sbd += itr->amount; - else - FC_ASSERT( false, "Encountered illegal symbol in convert_request_object" ); - } - - const auto& limit_order_idx = get_index< limit_order_index >().indices(); - - for( auto itr = limit_order_idx.begin(); itr != limit_order_idx.end(); ++itr ) - { - if( itr->sell_price.base.symbol == STEEM_SYMBOL ) - { - total_supply += asset( itr->for_sale, STEEM_SYMBOL ); - } - else if ( itr->sell_price.base.symbol == SBD_SYMBOL ) - { - total_sbd += asset( itr->for_sale, SBD_SYMBOL ); - } + ( SOPHIATX_MAX_PROXY_RECURSION_DEPTH > 0 ? + itr->proxied_vsf_votes[SOPHIATX_MAX_PROXY_RECURSION_DEPTH - 1] : + itr->balance.amount ) ); } const auto& escrow_idx = get_index< escrow_index >().indices().get< by_id >(); for( auto itr = escrow_idx.begin(); itr != escrow_idx.end(); ++itr ) { - total_supply += itr->steem_balance; - total_sbd += itr->sbd_balance; + total_supply += itr->sophiatx_balance; - if( itr->pending_fee.symbol == STEEM_SYMBOL ) + if( itr->pending_fee.symbol == SOPHIATX_SYMBOL ) total_supply += itr->pending_fee; - else if( itr->pending_fee.symbol == SBD_SYMBOL ) - total_sbd += itr->pending_fee; - else - FC_ASSERT( false, "found escrow pending fee that is not SBD or STEEM" ); - } - - const auto& savings_withdraw_idx = get_index< savings_withdraw_index >().indices().get< by_id >(); - - for( auto itr = savings_withdraw_idx.begin(); itr != savings_withdraw_idx.end(); ++itr ) - { - if( itr->amount.symbol == STEEM_SYMBOL ) - total_supply += itr->amount; - else if( itr->amount.symbol == SBD_SYMBOL ) - total_sbd += itr->amount; else - FC_ASSERT( false, "found savings withdraw that is not SBD or STEEM" ); + FC_ASSERT( false, "found escrow pending fee that is not SPHTX" ); } - const auto& reward_idx = get_index< reward_fund_index, by_id >(); - - for( auto itr = reward_idx.begin(); itr != reward_idx.end(); ++itr ) - { - total_supply += itr->reward_balance; - } - total_supply += gpo.total_vesting_fund_steem + gpo.total_reward_fund_steem + gpo.pending_rewarded_vesting_steem; + FC_ASSERT( gpo.current_supply == total_supply + asset(total_vesting.amount, SOPHIATX_SYMBOL), "", ("gpo.current_supply",gpo.current_supply)("total_supply",total_supply) ); + FC_ASSERT( gpo.total_vesting_shares == total_vesting, "", ("gpo.total_vesting_shares",gpo.total_vesting_shares)("total_vesting",total_vesting) ); - FC_ASSERT( gpo.current_supply == total_supply, "", ("gpo.current_supply",gpo.current_supply)("total_supply",total_supply) ); - FC_ASSERT( gpo.current_sbd_supply == total_sbd, "", ("gpo.current_sbd_supply",gpo.current_sbd_supply)("total_sbd",total_sbd) ); - FC_ASSERT( gpo.total_vesting_shares + gpo.pending_rewarded_vesting_shares == total_vesting, "", ("gpo.total_vesting_shares",gpo.total_vesting_shares)("total_vesting",total_vesting) ); - FC_ASSERT( gpo.total_vesting_shares.amount == total_vsf_votes, "", ("total_vesting_shares",gpo.total_vesting_shares)("total_vsf_votes",total_vsf_votes) ); - FC_ASSERT( gpo.pending_rewarded_vesting_steem == pending_vesting_steem, "", ("pending_rewarded_vesting_steem",gpo.pending_rewarded_vesting_steem)("pending_vesting_steem", pending_vesting_steem)); + FC_ASSERT( (gpo.current_supply.amount + econ.interest_pool_from_fees + econ.interest_pool_from_coinbase + + econ.mining_pool_from_fees + econ.mining_pool_from_coinbase + econ.promotion_pool + econ.burn_pool) == SOPHIATX_TOTAL_SUPPLY, "difference is $diff", ("diff", SOPHIATX_TOTAL_SUPPLY - + (gpo.current_supply.amount + econ.interest_pool_from_fees + econ.interest_pool_from_coinbase + + econ.mining_pool_from_fees + econ.mining_pool_from_coinbase + econ.promotion_pool + econ.burn_pool))); - FC_ASSERT( gpo.virtual_supply >= gpo.current_supply ); - if ( !get_feed_history().current_median_history.is_null() ) - { - FC_ASSERT( gpo.current_sbd_supply * get_feed_history().current_median_history + gpo.current_supply - == gpo.virtual_supply, "", ("gpo.current_sbd_supply",gpo.current_sbd_supply)("get_feed_history().current_median_history",get_feed_history().current_median_history)("gpo.current_supply",gpo.current_supply)("gpo.virtual_supply",gpo.virtual_supply) ); - } } FC_CAPTURE_LOG_AND_RETHROW( (head_block_num()) ); } -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT namespace { typedef std::map< asset_symbol_type, asset > TTotalSupplyMap; @@ -4423,9 +2811,6 @@ void database::validate_smt_invariants()const } } - // - Reward funds -#pragma message( "TODO: Add reward_fund_object iteration here once they support SMTs." ) - // - Escrow & savings - no support of SMT is expected. // Do the verification of total balances. @@ -4444,96 +2829,6 @@ void database::validate_smt_invariants()const } #endif -void database::perform_vesting_share_split( uint32_t magnitude ) -{ - try - { - modify( get_dynamic_global_properties(), [&]( dynamic_global_property_object& d ) - { - d.total_vesting_shares.amount *= magnitude; - d.total_reward_shares2 = 0; - } ); - - // Need to update all VESTS in accounts and the total VESTS in the dgpo - for( const auto& account : get_index().indices() ) - { - modify( account, [&]( account_object& a ) - { - a.vesting_shares.amount *= magnitude; - a.withdrawn *= magnitude; - a.to_withdraw *= magnitude; - a.vesting_withdraw_rate = asset( a.to_withdraw / STEEM_VESTING_WITHDRAW_INTERVALS_PRE_HF_16, VESTS_SYMBOL ); - if( a.vesting_withdraw_rate.amount == 0 ) - a.vesting_withdraw_rate.amount = 1; - - for( uint32_t i = 0; i < STEEM_MAX_PROXY_RECURSION_DEPTH; ++i ) - a.proxied_vsf_votes[i] *= magnitude; - } ); - } - - const auto& comments = get_index< comment_index >().indices(); - for( const auto& comment : comments ) - { - modify( comment, [&]( comment_object& c ) - { - c.net_rshares *= magnitude; - c.abs_rshares *= magnitude; - c.vote_rshares *= magnitude; - } ); - } - - for( const auto& c : comments ) - { - if( c.net_rshares.value > 0 ) - adjust_rshares2( c, 0, util::evaluate_reward_curve( c.net_rshares.value ) ); - } - - } - FC_CAPTURE_AND_RETHROW() -} - -void database::retally_comment_children() -{ - const auto& cidx = get_index< comment_index >().indices(); - - // Clear children counts - for( auto itr = cidx.begin(); itr != cidx.end(); ++itr ) - { - modify( *itr, [&]( comment_object& c ) - { - c.children = 0; - }); - } - - for( auto itr = cidx.begin(); itr != cidx.end(); ++itr ) - { - if( itr->parent_author != STEEM_ROOT_POST_PARENT ) - { -// Low memory nodes only need immediate child count, full nodes track total children -#ifdef IS_LOW_MEM - modify( get_comment( itr->parent_author, itr->parent_permlink ), [&]( comment_object& c ) - { - c.children++; - }); -#else - const comment_object* parent = &get_comment( itr->parent_author, itr->parent_permlink ); - while( parent ) - { - modify( *parent, [&]( comment_object& c ) - { - c.children++; - }); - - if( parent->parent_author != STEEM_ROOT_POST_PARENT ) - parent = &get_comment( parent->parent_author, parent->parent_permlink ); - else - parent = nullptr; - } -#endif - } - } -} - void database::retally_witness_votes() { const auto& witness_idx = get_index< witness_index >().indices(); @@ -4553,7 +2848,7 @@ void database::retally_witness_votes() // Apply all existing votes by account for( auto itr = account_idx.begin(); itr != account_idx.end(); ++itr ) { - if( itr->proxy != STEEM_PROXY_TO_SELF_ACCOUNT ) continue; + if( itr->proxy != SOPHIATX_PROXY_TO_SELF_ACCOUNT ) continue; const auto& a = *itr; @@ -4567,36 +2862,7 @@ void database::retally_witness_votes() } } -void database::retally_witness_vote_counts( bool force ) -{ - const auto& account_idx = get_index< account_index >().indices(); - - // Check all existing votes by account - for( auto itr = account_idx.begin(); itr != account_idx.end(); ++itr ) - { - const auto& a = *itr; - uint16_t witnesses_voted_for = 0; - if( force || (a.proxy != STEEM_PROXY_TO_SELF_ACCOUNT ) ) - { - const auto& vidx = get_index< witness_vote_index >().indices().get< by_account_witness >(); - auto wit_itr = vidx.lower_bound( boost::make_tuple( a.name, account_name_type() ) ); - while( wit_itr != vidx.end() && wit_itr->account == a.name ) - { - ++witnesses_voted_for; - ++wit_itr; - } - } - if( a.witnesses_voted_for != witnesses_voted_for ) - { - modify( a, [&]( account_object& account ) - { - account.witnesses_voted_for = witnesses_voted_for; - } ); - } - } -} - -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT // 1. NAI number is stored in 32 bits, minus 4 for precision, minus 1 for control. // 2. NAI string has 8 characters (each between '0' and '9') available (11 minus '@@', minus checksum character is 8 ) // 3. Max 27 bit decimal is 134,217,727 but only 8 characters are available to represent it as string so we are left @@ -4634,4 +2900,4 @@ vector< asset_symbol_type > database::get_smt_next_identifier() } #endif -} } //steem::chain +} } //sophiatx::chain diff --git a/libraries/chain/economics.cpp b/libraries/chain/economics.cpp new file mode 100644 index 00000000..9adf5a3b --- /dev/null +++ b/libraries/chain/economics.cpp @@ -0,0 +1,118 @@ +#include +#include + + +namespace sophiatx { namespace chain { +namespace { + uint128_t multiplier(uint64_t(0x0fffffffffffffff), uint64_t(0xffffffffffffffff)); + share_type get_next_block_interests(uint32_t block, share_type remaining_interests){ + if(block >= SOPHIATX_COINBASE_BLOCKS ) + return 0; + return remaining_interests / (SOPHIATX_COINBASE_BLOCKS - block + 1); + } +} + +using namespace sophiatx::protocol; + + +void economic_model_object::init_economics(share_type _init_supply, share_type _total_supply){ + share_type coinbase = _total_supply - _init_supply; + mining_pool_from_coinbase = coinbase * SOPHIATX_MINING_POOL_PERCENTAGE / SOPHIATX_100_PERCENT; + interest_pool_from_coinbase = coinbase * SOPHIATX_INTEREST_POOL_PERCENTAGE / SOPHIATX_100_PERCENT; + promotion_pool = coinbase * SOPHIATX_PROMOTION_POOL_PERCENTAGE / SOPHIATX_100_PERCENT; + initial_promotion_pool = promotion_pool; + init_supply = _init_supply; + total_supply = _total_supply; + coinbase_block_reward = mining_pool_from_coinbase / SOPHIATX_COINBASE_BLOCKS; +} + +share_type economic_model_object::get_mining_reward(uint32_t block_number)const{ + uint32_t blocks_to_coinbase_end = SOPHIATX_COINBASE_BLOCKS - block_number; + //mining reward consist of coinbase reward, which uniformly distributes mining pool among SOPHIATX_COINBASE_BLOCKS rewards, + // and fees rewards, where each block is rewarded one 1/(SOPHIATX_BLOCKS_PER_DAY * 7) of the current pool. + share_type reward = mining_pool_from_coinbase / blocks_to_coinbase_end; + reward += mining_pool_from_fees / (SOPHIATX_BLOCKS_PER_DAY * 7); + return reward; +} + +share_type economic_model_object::withdraw_mining_reward(uint32_t block_number, uint32_t nominator, uint32_t denominator){ + //mining reward consist of coinbase reward, which uniformly distributes mining pool among SOPHIATX_COINBASE_BLOCKS rewards, + // and fees rewards, where each block is rewarded one 1/(SOPHIATX_BLOCKS_PER_DAY * 7) of the current pool. + if( block_number <= SOPHIATX_INTEREST_DELAY ) + return 0; + share_type reward_from_coinbase = coinbase_block_reward; + reward_from_coinbase = (reward_from_coinbase * nominator) / denominator; + reward_from_coinbase = std::min(reward_from_coinbase, mining_pool_from_coinbase); + + share_type reward_from_fees = mining_pool_from_fees / (SOPHIATX_BLOCKS_PER_DAY * 7); + reward_from_fees = (reward_from_fees * nominator) / denominator; + reward_from_fees = std::min(reward_from_fees, mining_pool_from_fees); + + mining_pool_from_coinbase -= reward_from_coinbase; + mining_pool_from_fees -= reward_from_fees; + + return reward_from_coinbase + reward_from_fees; +} + +void economic_model_object::record_block(uint32_t generated_block, share_type current_supply){ + if(generated_block>=SOPHIATX_INTEREST_BLOCKS) + accumulated_supply -= historic_supply[generated_block%SOPHIATX_INTEREST_BLOCKS]; + historic_supply[generated_block%SOPHIATX_INTEREST_BLOCKS] = current_supply; + accumulated_supply+=current_supply; + //TODO_SOPHIATX - check invariants here. + //check that current_supply + all_pools = total supply. Already in database.cpp + //FC_ASSERT(mining_pool_from_coinbase + mining_pool_from_fees + interest_pool_from_coinbase + interest_pool_from_fees + + // promotion_pool + current_supply + burn_pool== total_supply); +} + +#define SOPHIATX_TOTAL_INTERESTS ((uint64_t(SOPHIATX_TOTAL_SUPPLY) - uint64_t(SOPHIATX_INIT_SUPPLY)) * uint64_t(SOPHIATX_INTEREST_POOL_PERCENTAGE) / uint64_t(SOPHIATX_100_PERCENT)) +share_type economic_model_object::withdraw_interests(share_type holding, uint32_t period) { + try { + FC_ASSERT(holding >= 0 && interest_pool_from_coinbase >= 0 && interest_pool_from_fees >= 0 && accumulated_supply >= holding); + if(holding == 0) + return 0; + share_type total_coinbase_for_period = share_type(std::min(uint64_t(interest_pool_from_coinbase.value), + (SOPHIATX_TOTAL_INTERESTS * period / + SOPHIATX_COINBASE_BLOCKS))); + share_type coinbase_reward = (uint128_t(holding.value) * uint128_t(total_coinbase_for_period.value) / + uint128_t(accumulated_supply.value)).to_uint64(); + share_type fees_reward = ( + uint128_t(interest_pool_from_fees.value * SOPHIATX_INTEREST_BLOCKS / SOPHIATX_INTEREST_FEES_TIME) * + uint128_t(holding.value) / uint128_t(accumulated_supply.value)).to_uint64(); + interest_pool_from_fees -= fees_reward; + interest_pool_from_coinbase -= coinbase_reward; + return (fees_reward + coinbase_reward); + } FC_CAPTURE_AND_RETHROW((holding)(period)(*this)) +} + +void economic_model_object::add_fee(share_type fee) { + auto to_burn = fee * SOPHIATX_BURN_FEE_PERCENTAGE / SOPHIATX_100_PERCENT; + fee = fee - to_burn; + auto to_mining_pool = fee * SOPHIATX_MINING_POOL_PERCENTAGE / SOPHIATX_100_PERCENT; + auto to_promotion_pool = fee * SOPHIATX_PROMOTION_POOL_PERCENTAGE / SOPHIATX_100_PERCENT; + mining_pool_from_fees += to_mining_pool; + promotion_pool += to_promotion_pool; + burn_pool += to_burn; + share_type to_interests = fee - to_mining_pool - to_promotion_pool; + interest_pool_from_fees += to_interests; +} + +share_type economic_model_object::get_available_promotion_pool(uint32_t block_number) const{ + uint128_t blocks_to_coinbase_end = SOPHIATX_COINBASE_BLOCKS - block_number; + //share_type locked_pool = promotion_pool_per_day * blocks_to_coinbase_end / SOPHIATX_BLOCKS_PER_DAY; + share_type locked_pool = (((((uint128_t)initial_promotion_pool.value * (uint128_t)262144) / (uint128_t)SOPHIATX_COINBASE_BLOCKS) * blocks_to_coinbase_end ) / (uint128_t)262144).to_uint64(); + FC_ASSERT(promotion_pool >= locked_pool); + return promotion_pool - locked_pool; +} + +share_type economic_model_object::withdraw_from_promotion_pool(share_type amount, uint32_t block_number) { + share_type free_pool = get_available_promotion_pool(block_number); + share_type to_withdraw = std::min(free_pool, amount); + promotion_pool -= to_withdraw; + FC_ASSERT(to_withdraw.value > 0); + return to_withdraw; +} + + + +}}//namespace diff --git a/libraries/chain/fork_database.cpp b/libraries/chain/fork_database.cpp index cb3944a4..8437149a 100644 --- a/libraries/chain/fork_database.cpp +++ b/libraries/chain/fork_database.cpp @@ -1,8 +1,8 @@ -#include +#include -#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { fork_database::fork_database() { @@ -61,7 +61,7 @@ void fork_database::_push_block(const item_ptr& item) { auto& index = _index.get(); auto itr = index.find(item->previous_id()); - STEEM_ASSERT(itr != index.end(), unlinkable_block_exception, "block does not link to known chain"); + SOPHIATX_ASSERT(itr != index.end(), unlinkable_block_exception, "block does not link to known chain"); FC_ASSERT(!(*itr)->invalid); item->prev = *itr; } @@ -240,4 +240,4 @@ void fork_database::remove(block_id_type id) _index.get().erase(id); } -} } // steem::chain +} } // sophiatx::chain diff --git a/libraries/chain/include/steem/chain/account_object.hpp b/libraries/chain/include/sophiatx/chain/account_object.hpp similarity index 53% rename from libraries/chain/include/steem/chain/account_object.hpp rename to libraries/chain/include/sophiatx/chain/account_object.hpp index b4839d9f..32d3b6e2 100644 --- a/libraries/chain/include/steem/chain/account_object.hpp +++ b/libraries/chain/include/sophiatx/chain/account_object.hpp @@ -1,20 +1,20 @@ #pragma once #include -#include -#include +#include +#include -#include -#include -#include +#include +#include +#include #include #include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { - using steem::protocol::authority; + using sophiatx::protocol::authority; class account_object : public object< account_object_type, account_object > { @@ -37,89 +37,53 @@ namespace steem { namespace chain { time_point_sec last_account_update; + + share_type holdings_considered_for_interests = 0; + share_type update_considered_holding(share_type inserted, uint32_t block_no){ + uint32_t my_turn = id._id % SOPHIATX_INTEREST_BLOCKS; + uint32_t block = block_no % SOPHIATX_INTEREST_BLOCKS; + int64_t to_my_turn; + if ( my_turn >= block ){ + to_my_turn = my_turn - block; + }else{ + to_my_turn = my_turn + SOPHIATX_INTEREST_BLOCKS - block; + } + share_type to_add = (inserted * to_my_turn); + holdings_considered_for_interests += to_add; + return to_add; + }; + time_point_sec created; bool mined = true; account_name_type recovery_account; - account_name_type reset_account = STEEM_NULL_ACCOUNT; + account_name_type reset_account = SOPHIATX_NULL_ACCOUNT; time_point_sec last_account_recovery; - uint32_t comment_count = 0; - uint32_t lifetime_vote_count = 0; - uint32_t post_count = 0; - - bool can_vote = true; - uint16_t voting_power = STEEM_100_PERCENT; ///< current voting power of this account, it falls after every vote - time_point_sec last_vote_time; ///< used to increase the voting power of this account the longer it goes without voting. - - asset balance = asset( 0, STEEM_SYMBOL ); ///< total liquid shares held by this account - asset savings_balance = asset( 0, STEEM_SYMBOL ); ///< total liquid shares held by this account - - /** - * SBD Deposits pay interest based upon the interest rate set by witnesses. The purpose of these - * fields is to track the total (time * sbd_balance) that it is held. Then at the appointed time - * interest can be paid using the following equation: - * - * interest = interest_rate * sbd_seconds / seconds_per_year - * - * Every time the sbd_balance is updated the sbd_seconds is also updated. If at least - * STEEM_MIN_COMPOUNDING_INTERVAL_SECONDS has past since sbd_last_interest_payment then - * interest is added to sbd_balance. - * - * @defgroup sbd_data sbd Balance Data - */ - ///@{ - asset sbd_balance = asset( 0, SBD_SYMBOL ); /// total sbd balance - uint128_t sbd_seconds; ///< total sbd * how long it has been hel - time_point_sec sbd_seconds_last_update; ///< the last time the sbd_seconds was updated - time_point_sec sbd_last_interest_payment; ///< used to pay interest at most once per month - - - asset savings_sbd_balance = asset( 0, SBD_SYMBOL ); /// total sbd balance - uint128_t savings_sbd_seconds; ///< total sbd * how long it has been hel - time_point_sec savings_sbd_seconds_last_update; ///< the last time the sbd_seconds was updated - time_point_sec savings_sbd_last_interest_payment; ///< used to pay interest at most once per month - - uint8_t savings_withdraw_requests = 0; - ///@} - - asset reward_sbd_balance = asset( 0, SBD_SYMBOL ); - asset reward_steem_balance = asset( 0, STEEM_SYMBOL ); - asset reward_vesting_balance = asset( 0, VESTS_SYMBOL ); - asset reward_vesting_steem = asset( 0, STEEM_SYMBOL ); - - share_type curation_rewards = 0; - share_type posting_rewards = 0; + asset balance = asset( 0, SOPHIATX_SYMBOL ); ///< total liquid shares held by this account asset vesting_shares = asset( 0, VESTS_SYMBOL ); ///< total vesting shares held by this account, controls its voting power - asset delegated_vesting_shares = asset( 0, VESTS_SYMBOL ); - asset received_vesting_shares = asset( 0, VESTS_SYMBOL ); asset vesting_withdraw_rate = asset( 0, VESTS_SYMBOL ); ///< at the time this is updated it can be at most vesting_shares/104 time_point_sec next_vesting_withdrawal = fc::time_point_sec::maximum(); ///< after every withdrawal this is incremented by 1 week share_type withdrawn = 0; /// Track how many shares have been withdrawn share_type to_withdraw = 0; /// Might be able to look this up with operation history. - uint16_t withdraw_routes = 0; - fc::array proxied_vsf_votes;// = std::vector( STEEM_MAX_PROXY_RECURSION_DEPTH, 0 ); ///< the total VFS votes proxied to this account + fc::array proxied_vsf_votes;// = std::vector( SOPHIATX_MAX_PROXY_RECURSION_DEPTH, 0 ); ///< the total VFS votes proxied to this account uint16_t witnesses_voted_for = 0; - time_point_sec last_post; - time_point_sec last_root_post = fc::time_point_sec::min(); - uint32_t post_bandwidth = 0; + share_type total_balance() const{ return balance.amount + vesting_shares.amount;} /// This function should be used only when the account votes for a witness directly share_type witness_vote_weight()const { - return std::accumulate( proxied_vsf_votes.begin(), - proxied_vsf_votes.end(), - vesting_shares.amount ); + return proxied_vsf_votes_total() + balance.amount + vesting_shares.amount; } + share_type proxied_vsf_votes_total()const { return std::accumulate( proxied_vsf_votes.begin(), proxied_vsf_votes.end(), share_type() ); } - asset effective_vesting_shares()const { return vesting_shares - delegated_vesting_shares + received_vesting_shares; } }; class account_authority_object : public object< account_authority_object_type, account_authority_object > @@ -129,7 +93,7 @@ namespace steem { namespace chain { public: template< typename Constructor, typename Allocator > account_authority_object( Constructor&& c, allocator< Allocator > a ) - : owner( a ), active( a ), posting( a ) + : owner( a ), active( a ) { c( *this ); } @@ -140,46 +104,10 @@ namespace steem { namespace chain { shared_authority owner; ///< used for backup control, can set owner or active shared_authority active; ///< used for all monetary operations, can set active or posting - shared_authority posting; ///< used for voting and posting time_point_sec last_owner_update; }; - class vesting_delegation_object : public object< vesting_delegation_object_type, vesting_delegation_object > - { - public: - template< typename Constructor, typename Allocator > - vesting_delegation_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - vesting_delegation_object() {} - - id_type id; - account_name_type delegator; - account_name_type delegatee; - asset vesting_shares; - time_point_sec min_delegation_time; - }; - - class vesting_delegation_expiration_object : public object< vesting_delegation_expiration_object_type, vesting_delegation_expiration_object > - { - public: - template< typename Constructor, typename Allocator > - vesting_delegation_expiration_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - vesting_delegation_expiration_object() {} - - id_type id; - account_name_type delegator; - asset vesting_shares; - time_point_sec expiration; - }; - class owner_authority_history_object : public object< owner_authority_history_object_type, owner_authority_history_object > { owner_authority_history_object() = delete; @@ -234,6 +162,21 @@ namespace steem { namespace chain { time_point_sec effective_on; }; + class account_fee_sponsor_object : public object + { + public: + template< typename Constructor, typename Allocator > + account_fee_sponsor_object( Constructor&& c, allocator< Allocator > a ) + { + c( *this ); + } + + id_type id; + + account_name_type sponsor; + account_name_type sponsored; + }; + struct by_name; struct by_proxy; struct by_next_vesting_withdrawal; @@ -308,51 +251,6 @@ namespace steem { namespace chain { allocator< account_authority_object > > account_authority_index; - struct by_delegation; - - typedef multi_index_container < - vesting_delegation_object, - indexed_by < - ordered_unique< tag< by_id >, - member< vesting_delegation_object, vesting_delegation_id_type, &vesting_delegation_object::id > >, - ordered_unique< tag< by_delegation >, - composite_key< vesting_delegation_object, - member< vesting_delegation_object, account_name_type, &vesting_delegation_object::delegator >, - member< vesting_delegation_object, account_name_type, &vesting_delegation_object::delegatee > - >, - composite_key_compare< std::less< account_name_type >, std::less< account_name_type > > - > - >, - allocator< vesting_delegation_object > - > vesting_delegation_index; - - struct by_expiration; - struct by_account_expiration; - - typedef multi_index_container < - vesting_delegation_expiration_object, - indexed_by < - ordered_unique< tag< by_id >, - member< vesting_delegation_expiration_object, vesting_delegation_expiration_id_type, &vesting_delegation_expiration_object::id > >, - ordered_unique< tag< by_expiration >, - composite_key< vesting_delegation_expiration_object, - member< vesting_delegation_expiration_object, time_point_sec, &vesting_delegation_expiration_object::expiration >, - member< vesting_delegation_expiration_object, vesting_delegation_expiration_id_type, &vesting_delegation_expiration_object::id > - >, - composite_key_compare< std::less< time_point_sec >, std::less< vesting_delegation_expiration_id_type > > - >, - ordered_unique< tag< by_account_expiration >, - composite_key< vesting_delegation_expiration_object, - member< vesting_delegation_expiration_object, account_name_type, &vesting_delegation_expiration_object::delegator >, - member< vesting_delegation_expiration_object, time_point_sec, &vesting_delegation_expiration_object::expiration >, - member< vesting_delegation_expiration_object, vesting_delegation_expiration_id_type, &vesting_delegation_expiration_object::id > - >, - composite_key_compare< std::less< account_name_type >, std::less< time_point_sec >, std::less< vesting_delegation_expiration_id_type > > - > - >, - allocator< vesting_delegation_expiration_object > - > vesting_delegation_expiration_index; - struct by_expiration; typedef multi_index_container < @@ -400,51 +298,64 @@ namespace steem { namespace chain { >, allocator< change_recovery_account_request_object > > change_recovery_account_request_index; + + struct by_sponsor; + struct by_sponsored; + + typedef multi_index_container < + account_fee_sponsor_object, + indexed_by < + ordered_unique< tag, + member< account_fee_sponsor_object, account_fee_sponsor_id_type, &account_fee_sponsor_object::id > + >, + ordered_unique< tag, + member< account_fee_sponsor_object, account_name_type, &account_fee_sponsor_object::sponsored > + >, + ordered_unique< tag, + composite_key< account_fee_sponsor_object, + member< account_fee_sponsor_object, account_name_type, &account_fee_sponsor_object::sponsor >, + member< account_fee_sponsor_object, account_name_type, &account_fee_sponsor_object::sponsored > + >, + composite_key_compare< std::less< account_name_type >, std::less< account_name_type > > + > + >, + allocator + > account_fee_sponsor_index; + } } -FC_REFLECT( steem::chain::account_object, + + +FC_REFLECT( sophiatx::chain::account_object, (id)(name)(memo_key)(json_metadata)(proxy)(last_account_update) (created)(mined) + (vesting_shares)(vesting_withdraw_rate)(next_vesting_withdrawal)(withdrawn)(to_withdraw) (recovery_account)(last_account_recovery)(reset_account) - (comment_count)(lifetime_vote_count)(post_count)(can_vote)(voting_power)(last_vote_time) - (balance) - (savings_balance) - (sbd_balance)(sbd_seconds)(sbd_seconds_last_update)(sbd_last_interest_payment) - (savings_sbd_balance)(savings_sbd_seconds)(savings_sbd_seconds_last_update)(savings_sbd_last_interest_payment)(savings_withdraw_requests) - (reward_steem_balance)(reward_sbd_balance)(reward_vesting_balance)(reward_vesting_steem) - (vesting_shares)(delegated_vesting_shares)(received_vesting_shares) - (vesting_withdraw_rate)(next_vesting_withdrawal)(withdrawn)(to_withdraw)(withdraw_routes) - (curation_rewards) - (posting_rewards) + (balance)(holdings_considered_for_interests) (proxied_vsf_votes)(witnesses_voted_for) - (last_post)(last_root_post)(post_bandwidth) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::account_object, steem::chain::account_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::account_object, sophiatx::chain::account_index ) -FC_REFLECT( steem::chain::account_authority_object, - (id)(account)(owner)(active)(posting)(last_owner_update) +FC_REFLECT( sophiatx::chain::account_authority_object, + (id)(account)(owner)(active)(last_owner_update) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::account_authority_object, steem::chain::account_authority_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::account_authority_object, sophiatx::chain::account_authority_index ) -FC_REFLECT( steem::chain::vesting_delegation_object, - (id)(delegator)(delegatee)(vesting_shares)(min_delegation_time) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::vesting_delegation_object, steem::chain::vesting_delegation_index ) - -FC_REFLECT( steem::chain::vesting_delegation_expiration_object, - (id)(delegator)(vesting_shares)(expiration) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::vesting_delegation_expiration_object, steem::chain::vesting_delegation_expiration_index ) - -FC_REFLECT( steem::chain::owner_authority_history_object, +FC_REFLECT( sophiatx::chain::owner_authority_history_object, (id)(account)(previous_owner_authority)(last_valid_time) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::owner_authority_history_object, steem::chain::owner_authority_history_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::owner_authority_history_object, sophiatx::chain::owner_authority_history_index ) -FC_REFLECT( steem::chain::account_recovery_request_object, +FC_REFLECT( sophiatx::chain::account_recovery_request_object, (id)(account_to_recover)(new_owner_authority)(expires) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::account_recovery_request_object, steem::chain::account_recovery_request_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::account_recovery_request_object, sophiatx::chain::account_recovery_request_index ) -FC_REFLECT( steem::chain::change_recovery_account_request_object, +FC_REFLECT( sophiatx::chain::change_recovery_account_request_object, (id)(account_to_recover)(recovery_account)(effective_on) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::change_recovery_account_request_object, steem::chain::change_recovery_account_request_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::change_recovery_account_request_object, sophiatx::chain::change_recovery_account_request_index ) + +FC_REFLECT( sophiatx::chain::account_fee_sponsor_object, (id)(sponsor)(sponsored)) + +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::account_fee_sponsor_object, sophiatx::chain::account_fee_sponsor_index ) diff --git a/libraries/chain/include/sophiatx/chain/application_object.hpp b/libraries/chain/include/sophiatx/chain/application_object.hpp new file mode 100644 index 00000000..0c11d2a4 --- /dev/null +++ b/libraries/chain/include/sophiatx/chain/application_object.hpp @@ -0,0 +1,88 @@ +#pragma once +#include + +#include + +#include + +#include + +namespace sophiatx { namespace chain { + + class application_object : public object< application_object_type, application_object > + { + application_object() = delete; + + public: + template + application_object( Constructor&& c, allocator< Allocator > a ) + : metadata( a ) + { + c(*this); + }; + + id_type id; + string name; + account_name_type author; + string url; + shared_string metadata; + application_price_param price_param = none; + }; + + class application_buying_object : public object< application_buying_object_type, application_buying_object > + { + application_buying_object() = delete; + + public: + template + application_buying_object( Constructor&& c, allocator< Allocator > a ) + { + c(*this); + }; + + id_type id; + account_name_type buyer; + application_id_type app_id; + time_point_sec created; + }; + + struct by_name; + struct by_author; + + typedef multi_index_container< + application_object, + indexed_by< + ordered_unique< tag< by_id >, member< application_object, application_id_type, &application_object::id > >, + ordered_unique< tag< by_name >, member >, + ordered_non_unique< tag< by_author >, member > + >, + allocator< application_object > + > application_index; + + + struct by_buyer_app; + struct by_app_id; + + typedef multi_index_container< + application_buying_object, + indexed_by< + ordered_unique< tag< by_id >, member< application_buying_object, application_buying_id_type, &application_buying_object::id > >, + ordered_non_unique< tag< by_app_id >, member >, + ordered_non_unique< tag< by_author >, member >, + ordered_unique< tag< by_buyer_app >, + composite_key< application_buying_object, + member< application_buying_object, account_name_type, &application_buying_object::buyer >, + member< application_buying_object, application_id_type, &application_buying_object::app_id > + > + > + >, + allocator< application_buying_object > + > application_buying_index; + + } } + +FC_REFLECT( sophiatx::chain::application_object, (id)(name)(author)(url)(metadata)(price_param)) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::application_object, sophiatx::chain::application_index ) + +FC_REFLECT( sophiatx::chain::application_buying_object, (id)(buyer)(app_id)(created)) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::application_buying_object, sophiatx::chain::application_buying_index ) diff --git a/libraries/chain/include/steem/chain/block_log.hpp b/libraries/chain/include/sophiatx/chain/block_log.hpp similarity index 96% rename from libraries/chain/include/steem/chain/block_log.hpp rename to libraries/chain/include/sophiatx/chain/block_log.hpp index 5ad26777..5522d06d 100644 --- a/libraries/chain/include/steem/chain/block_log.hpp +++ b/libraries/chain/include/sophiatx/chain/block_log.hpp @@ -1,10 +1,10 @@ #pragma once #include -#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { - using namespace steem::protocol; + using namespace sophiatx::protocol; namespace detail { class block_log_impl; } diff --git a/libraries/chain/include/steem/chain/block_summary_object.hpp b/libraries/chain/include/sophiatx/chain/block_summary_object.hpp similarity index 77% rename from libraries/chain/include/steem/chain/block_summary_object.hpp rename to libraries/chain/include/sophiatx/chain/block_summary_object.hpp index 7824dbe2..ea03a49c 100644 --- a/libraries/chain/include/steem/chain/block_summary_object.hpp +++ b/libraries/chain/include/sophiatx/chain/block_summary_object.hpp @@ -1,9 +1,9 @@ #pragma once -#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { - using steem::protocol::block_id_type; + using sophiatx::protocol::block_id_type; /** * @brief tracks minimal information about past blocks to implement TaPOS @@ -38,7 +38,7 @@ namespace steem { namespace chain { allocator< block_summary_object > > block_summary_index; -} } // steem::chain +} } // sophiatx::chain -FC_REFLECT( steem::chain::block_summary_object, (id)(block_id) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::block_summary_object, steem::chain::block_summary_index ) +FC_REFLECT( sophiatx::chain::block_summary_object, (id)(block_id) ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::block_summary_object, sophiatx::chain::block_summary_index ) diff --git a/libraries/chain/include/steem/chain/buffer_type.hpp b/libraries/chain/include/sophiatx/chain/buffer_type.hpp similarity index 57% rename from libraries/chain/include/steem/chain/buffer_type.hpp rename to libraries/chain/include/sophiatx/chain/buffer_type.hpp index b688d15a..c1bbb8ee 100644 --- a/libraries/chain/include/steem/chain/buffer_type.hpp +++ b/libraries/chain/include/sophiatx/chain/buffer_type.hpp @@ -5,15 +5,15 @@ #include #include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { typedef chainbase::bip::vector< char, chainbase::allocator< char > > buffer_type; -} } // steem::chain +} } // sophiatx::chain namespace fc { namespace raw { -template< typename T > inline void pack_to_buffer( steem::chain::buffer_type& raw, const T& v ) +template< typename T > inline void pack_to_buffer( sophiatx::chain::buffer_type& raw, const T& v ) { auto size = pack_size( v ); raw.resize( size ); @@ -21,13 +21,13 @@ template< typename T > inline void pack_to_buffer( steem::chain::buffer_type& ra pack( ds, v ); } -template< typename T > inline void unpack_from_buffer( const steem::chain::buffer_type& raw, T& v ) +template< typename T > inline void unpack_from_buffer( const sophiatx::chain::buffer_type& raw, T& v ) { datastream< const char* > ds( raw.data(), raw.size() ); unpack( ds, v ); } -template< typename T > inline T unpack_from_buffer( const steem::chain::buffer_type& raw ) +template< typename T > inline T unpack_from_buffer( const sophiatx::chain::buffer_type& raw ) { T v; datastream< const char* > ds( raw.data(), raw.size() ); @@ -37,4 +37,4 @@ template< typename T > inline T unpack_from_buffer( const steem::chain::buffer_t } } // fc::raw -FC_REFLECT_TYPENAME( steem::chain::buffer_type ) +FC_REFLECT_TYPENAME( sophiatx::chain::buffer_type ) diff --git a/libraries/chain/include/steem/chain/compound.hpp b/libraries/chain/include/sophiatx/chain/compound.hpp similarity index 57% rename from libraries/chain/include/steem/chain/compound.hpp rename to libraries/chain/include/sophiatx/chain/compound.hpp index bda61b7d..b0077b02 100644 --- a/libraries/chain/include/steem/chain/compound.hpp +++ b/libraries/chain/include/sophiatx/chain/compound.hpp @@ -2,12 +2,12 @@ #include -#include -#include +#include +#include #include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { template< uint16_t percent, uint64_t multiply_constant, uint64_t shift_constant > share_type calc_percent_reward( share_type current_supply ) @@ -15,9 +15,9 @@ share_type calc_percent_reward( share_type current_supply ) static_assert( shift_constant > 0, "shift constant cannot be zero" ); static_assert( shift_constant < 128, "shift constant is implausibly large, re-check your arguments" ); static_assert( multiply_constant > 256, "multiply constant is implausibly small, re-check your arguments" ); - static_assert( multiply_constant < UINT64_MAX / (10 * uint64_t( STEEM_100_PERCENT )), "multiply constant is too large, we may be in danger of overflow" ); - static_assert( (percent == 0) || (percent > STEEM_1_PERCENT), "percent is smaller than 1%, re-check your arguments" ); - static_assert( percent <= STEEM_100_PERCENT, "percent is implausibly large, re-check your arguments (if you really mean to do this, you should revise the overflow check above accordingly)" ); + static_assert( multiply_constant < UINT64_MAX / (10 * uint64_t( SOPHIATX_100_PERCENT )), "multiply constant is too large, we may be in danger of overflow" ); + static_assert( (percent == 0) || (percent > SOPHIATX_1_PERCENT), "percent is smaller than 1%, re-check your arguments" ); + static_assert( percent <= SOPHIATX_100_PERCENT, "percent is implausibly large, re-check your arguments (if you really mean to do this, you should revise the overflow check above accordingly)" ); static const uint128_t half = uint128_t(1) << (shift_constant - 1); @@ -31,19 +31,19 @@ share_type calc_percent_reward( share_type current_supply ) template< uint16_t percent > inline share_type calc_percent_reward_per_hour( share_type current_supply ) { - return calc_percent_reward< percent, STEEM_APR_PERCENT_MULTIPLY_PER_HOUR, STEEM_APR_PERCENT_SHIFT_PER_HOUR >( current_supply ); + return calc_percent_reward< percent, SOPHIATX_APR_PERCENT_MULTIPLY_PER_HOUR, SOPHIATX_APR_PERCENT_SHIFT_PER_HOUR >( current_supply ); } template< uint16_t percent > inline share_type calc_percent_reward_per_block( share_type current_supply ) { - return calc_percent_reward< percent, STEEM_APR_PERCENT_MULTIPLY_PER_BLOCK, STEEM_APR_PERCENT_SHIFT_PER_BLOCK >( current_supply ); + return calc_percent_reward< percent, SOPHIATX_APR_PERCENT_MULTIPLY_PER_BLOCK, SOPHIATX_APR_PERCENT_SHIFT_PER_BLOCK >( current_supply ); } template< uint16_t percent > inline share_type calc_percent_reward_per_round( share_type current_supply ) { - return calc_percent_reward< percent, STEEM_APR_PERCENT_MULTIPLY_PER_ROUND, STEEM_APR_PERCENT_SHIFT_PER_ROUND >( current_supply ); + return calc_percent_reward< percent, SOPHIATX_APR_PERCENT_MULTIPLY_PER_ROUND, SOPHIATX_APR_PERCENT_SHIFT_PER_ROUND >( current_supply ); } } } diff --git a/libraries/chain/include/sophiatx/chain/custom_content_object.hpp b/libraries/chain/include/sophiatx/chain/custom_content_object.hpp new file mode 100644 index 00000000..c27d28b1 --- /dev/null +++ b/libraries/chain/include/sophiatx/chain/custom_content_object.hpp @@ -0,0 +1,98 @@ +#pragma once + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + + + +namespace sophiatx { namespace chain { + +class custom_content_object: public object< custom_content_object_type, custom_content_object> { +public: + template + custom_content_object(Constructor &&c, allocator a) { + c(*this); + } + + custom_content_object() {} + + id_type id; + + uint64_t app_id; + account_name_type sender; + account_name_type recipient; + flat_set all_recipients; + + uint64_t sender_sequence = 0; + uint64_t recipient_sequence = 0; + time_point_sec received; + + bool binary; + vector data; + string json; +}; + +struct by_id; +struct by_sender; +struct by_recipient; +struct by_sender_time; +struct by_recipient_time; + +typedef multi_index_container< + custom_content_object, + indexed_by< + ordered_unique< tag< by_id >, + member< custom_content_object, custom_content_object::id_type, &custom_content_object::id > >, + ordered_non_unique< tag< by_sender >, + composite_key< custom_content_object, + member< custom_content_object, account_name_type, &custom_content_object::sender>, + member< custom_content_object, uint64_t, &custom_content_object::app_id>, + member< custom_content_object, uint64_t, &custom_content_object::sender_sequence> + >, + composite_key_compare< std::less< account_name_type >, std::greater, std::greater< uint64_t > > + >, + ordered_non_unique< tag< by_recipient >, + composite_key< custom_content_object, + member< custom_content_object, account_name_type, &custom_content_object::recipient>, + member< custom_content_object, uint64_t, &custom_content_object::app_id>, + member< custom_content_object, uint64_t, &custom_content_object::recipient_sequence> + >, + composite_key_compare< std::less< account_name_type >, std::greater, std::greater< uint64_t > > + >, + ordered_non_unique< tag< by_sender_time >, + composite_key< custom_content_object, + member< custom_content_object, account_name_type, &custom_content_object::sender>, + member< custom_content_object, uint64_t, &custom_content_object::app_id>, + member< custom_content_object, time_point_sec, &custom_content_object::received> + >, + composite_key_compare< std::less< account_name_type >, std::greater, std::greater< time_point_sec > > + >, + ordered_non_unique< tag< by_recipient_time >, + composite_key< custom_content_object, + member< custom_content_object, account_name_type, &custom_content_object::recipient>, + member< custom_content_object, uint64_t, &custom_content_object::app_id>, + member< custom_content_object, time_point_sec, &custom_content_object::received> + >, + composite_key_compare< std::less< account_name_type >, std::greater, std::greater< time_point_sec > > + > + >, + allocator< custom_content_object > +> custom_content_index; + + +}} //namespace + + +FC_REFLECT(sophiatx::chain::custom_content_object, + (id)(app_id)(sender)(recipient)(binary)(data)(json)(received)(sender_sequence)(recipient_sequence) +) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::custom_content_object, sophiatx::chain::custom_content_index ) diff --git a/libraries/chain/include/steem/chain/custom_operation_interpreter.hpp b/libraries/chain/include/sophiatx/chain/custom_operation_interpreter.hpp similarity index 56% rename from libraries/chain/include/steem/chain/custom_operation_interpreter.hpp rename to libraries/chain/include/sophiatx/chain/custom_operation_interpreter.hpp index f22e9d54..7bb60ada 100644 --- a/libraries/chain/include/steem/chain/custom_operation_interpreter.hpp +++ b/libraries/chain/include/sophiatx/chain/custom_operation_interpreter.hpp @@ -3,22 +3,22 @@ #include -namespace steem { namespace schema { +namespace sophiatx { namespace schema { struct abstract_schema; } } -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { struct custom_json_operation; } } -namespace steem { namespace chain { +namespace sophiatx { namespace chain { class custom_operation_interpreter { public: virtual void apply( const protocol::custom_json_operation& op ) = 0; virtual void apply( const protocol::custom_binary_operation & op ) = 0; - virtual std::shared_ptr< steem::schema::abstract_schema > get_operation_schema() = 0; + virtual std::shared_ptr< sophiatx::schema::abstract_schema > get_operation_schema() = 0; }; -} } // steem::chain +} } // sophiatx::chain diff --git a/libraries/chain/include/steem/chain/database.hpp b/libraries/chain/include/sophiatx/chain/database.hpp similarity index 75% rename from libraries/chain/include/steem/chain/database.hpp rename to libraries/chain/include/sophiatx/chain/database.hpp index b791987a..7a31b13f 100644 --- a/libraries/chain/include/steem/chain/database.hpp +++ b/libraries/chain/include/sophiatx/chain/database.hpp @@ -2,16 +2,18 @@ * Copyright (c) 2015 Cryptonomex, Inc., and contributors. */ #pragma once -#include -#include -#include -#include -#include -#include -#include - -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include #include @@ -19,21 +21,18 @@ #include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { - using steem::protocol::signed_transaction; - using steem::protocol::operation; - using steem::protocol::authority; - using steem::protocol::asset; - using steem::protocol::asset_symbol_type; - using steem::protocol::price; + using sophiatx::protocol::signed_transaction; + using sophiatx::protocol::operation; + using sophiatx::protocol::authority; + using sophiatx::protocol::asset; + using sophiatx::protocol::asset_symbol_type; + using sophiatx::protocol::price; class database_impl; class custom_operation_interpreter; - namespace util { - struct comment_reward_context; - } /** * @class database @@ -77,7 +76,6 @@ namespace steem { namespace chain { { fc::path data_dir; fc::path shared_mem_dir; - uint64_t initial_supply = STEEM_INIT_SUPPLY; uint64_t shared_file_size = 0; uint16_t shared_file_full_threshold = 0; uint16_t shared_file_scale_rate = 0; @@ -97,7 +95,7 @@ namespace steem { namespace chain { * * @param data_dir Path to open or create database in */ - void open( const open_args& args ); + void open( const open_args& args, const genesis_state_type& genesis ); /** * @brief Rebuild object graph from block history and open detabase @@ -107,7 +105,7 @@ namespace steem { namespace chain { * * @return the last replayed block number. */ - uint32_t reindex( const open_args& args ); + uint32_t reindex( const open_args& args, const genesis_state_type& genesis ); /** * @brief wipe Delete database from disk, and potentially the raw chain as well. @@ -126,8 +124,6 @@ namespace steem { namespace chain { */ bool is_known_block( const block_id_type& id )const; bool is_known_transaction( const transaction_id_type& id )const; - fc::sha256 get_pow_target()const; - uint32_t get_pow_summary_target()const; block_id_type find_block_id_for_num( uint32_t block_num )const; block_id_type get_block_id_for_num( uint32_t block_num )const; optional fetch_block_by_id( const block_id_type& id )const; @@ -135,41 +131,29 @@ namespace steem { namespace chain { const signed_transaction get_recent_transaction( const transaction_id_type& trx_id )const; std::vector get_block_ids_on_fork(block_id_type head_of_fork) const; - chain_id_type steem_chain_id; chain_id_type get_chain_id() const; - void set_chain_id( const std::string& _chain_id_name ); - const witness_object& get_witness( const account_name_type& name )const; const witness_object* find_witness( const account_name_type& name )const; const account_object& get_account( const account_name_type& name )const; const account_object* find_account( const account_name_type& name )const; - - const comment_object& get_comment( const account_name_type& author, const shared_string& permlink )const; - const comment_object* find_comment( const account_name_type& author, const shared_string& permlink )const; - - const comment_object& get_comment( const account_name_type& author, const string& permlink )const; - const comment_object* find_comment( const account_name_type& author, const string& permlink )const; + const account_object* find_account( const account_id_type& id)const; const escrow_object& get_escrow( const account_name_type& name, uint32_t escrow_id )const; const escrow_object* find_escrow( const account_name_type& name, uint32_t escrow_id )const; - const limit_order_object& get_limit_order( const account_name_type& owner, uint32_t id )const; - const limit_order_object* find_limit_order( const account_name_type& owner, uint32_t id )const; - - const savings_withdraw_object& get_savings_withdraw( const account_name_type& owner, uint32_t request_id )const; - const savings_withdraw_object* find_savings_withdraw( const account_name_type& owner, uint32_t request_id )const; + const application_object& get_application( const string& name )const; + const application_object& get_application_by_id( const application_id_type id )const; + const application_buying_object& get_application_buying( const account_name_type& buyer, const application_id_type app_id )const; const dynamic_global_property_object& get_dynamic_global_properties()const; + const economic_model_object& get_economic_model() const; const node_property_object& get_node_properties()const; - const feed_history_object& get_feed_history()const; + const feed_history_object &get_feed_history(asset_symbol_type a) const; const witness_schedule_object& get_witness_schedule_object()const; const hardfork_property_object& get_hardfork_property_object()const; - const time_point_sec calculate_discussion_payout_time( const comment_object& comment )const; - const reward_fund_object& get_reward_fund( const comment_object& c )const; - /** * Deducts fee from the account and the share supply */ @@ -281,7 +265,7 @@ namespace steem { namespace chain { * Use the get_slot_time() and get_slot_at_time() functions * to convert between slot_num and timestamp. * - * Passing slot_num == 0 returns STEEM_NULL_WITNESS + * Passing slot_num == 0 returns SOPHIATX_NULL_WITNESS */ account_name_type get_scheduled_witness(uint32_t slot_num)const; @@ -305,28 +289,23 @@ namespace steem { namespace chain { */ uint32_t get_slot_at_time(fc::time_point_sec when)const; - /** @return the sbd created and deposited to_account, may return STEEM if there is no median feed */ - std::pair< asset, asset > create_sbd( const account_object& to_account, asset steem, bool to_reward_balance=false ); - asset create_vesting( const account_object& to_account, asset steem, bool to_reward_balance=false ); - void adjust_total_payout( const comment_object& a, const asset& sbd, const asset& curator_sbd_value, const asset& beneficiary_value ); + void vest( const account_name_type& name, const share_type delta); + + void vest( const account_object& a, const share_type delta); + void create_vesting( const account_object& a, const asset& delta); + void create_vesting( const account_name_type& name, const asset& delta); - void adjust_liquidity_reward( const account_object& owner, const asset& volume, bool is_bid ); void adjust_balance( const account_object& a, const asset& delta ); void adjust_balance( const account_name_type& name, const asset& delta ); - void adjust_savings_balance( const account_object& a, const asset& delta ); - void adjust_reward_balance( const account_object& a, const asset& delta ); - void adjust_reward_balance( const account_name_type& name, const asset& delta ); - void adjust_supply( const asset& delta, bool adjust_vesting = false ); - void adjust_rshares2( const comment_object& comment, fc::uint128_t old_rshares2, fc::uint128_t new_rshares2 ); + void adjust_supply( const asset& delta ); void update_owner_authority( const account_object& account, const authority& owner_authority ); asset get_balance( const account_object& a, asset_symbol_type symbol )const; - asset get_savings_balance( const account_object& a, asset_symbol_type symbol )const; asset get_balance( const string& aname, asset_symbol_type symbol )const { return get_balance( get_account(aname), symbol ); } /** this updates the votes for witnesses as a result of account voting proxy changing */ void adjust_proxied_witness_votes( const account_object& a, - const std::array< share_type, STEEM_MAX_PROXY_RECURSION_DEPTH+1 >& delta, + const std::array< share_type, SOPHIATX_MAX_PROXY_RECURSION_DEPTH+1 >& delta, int depth = 0 ); /** this updates the votes for all witnesses as a result of account VESTS changing */ @@ -344,35 +323,26 @@ namespace steem { namespace chain { */ void clear_witness_votes( const account_object& a ); void process_vesting_withdrawals(); - share_type pay_curators( const comment_object& c, share_type& max_rewards ); - share_type cashout_comment_helper( util::comment_reward_context& ctx, const comment_object& comment ); - void process_comment_cashout(); - void process_funds(); - void process_conversions(); - void process_savings_withdraws(); - void account_recovery_processing(); - void expire_escrow_ratification(); - void process_decline_voting_rights(); - void update_median_feed(); - asset get_liquidity_reward()const; - asset get_content_reward()const; - asset get_producer_reward(); - asset get_curation_reward()const; - asset get_pow_reward()const; + void process_interests(); - uint16_t get_curation_rewards_percent( const comment_object& c ) const; + void process_funds(); - share_type pay_reward_funds( share_type reward ); + void account_recovery_processing(); + void expire_escrow_ratification(); - void pay_liquidity_reward(); + void update_median_feeds(); - /** - * Helper method to return the current sbd value of a given amount of - * STEEM. Return 0 SBD if there isn't a current_median_history - */ - asset to_sbd( const asset& steem )const; - asset to_steem( const asset& sbd )const; + asset get_producer_reward(); + + asset get_pow_reward()const; + + /** + * Helper method to return the current sbd value of a given amount of + * SOPHIATX. Return 0 SBD if there isn't a current_median_history + */ + asset to_sbd(const asset &sophiatx, asset_symbol_type to_symbol) const; + asset to_sophiatx( const asset& sbd )const; time_point_sec head_block_time()const; uint32_t head_block_num()const; @@ -384,13 +354,13 @@ namespace steem { namespace chain { //////////////////// db_init.cpp //////////////////// void initialize_evaluators(); - void set_custom_operation_interpreter( const std::string& id, std::shared_ptr< custom_operation_interpreter > registry ); - std::shared_ptr< custom_operation_interpreter > get_custom_json_evaluator( const std::string& id ); + void set_custom_operation_interpreter( const uint32_t id, std::shared_ptr< custom_operation_interpreter > registry ); + std::shared_ptr< custom_operation_interpreter > get_custom_json_evaluator( const uint32_t id ); /// Reset the object graph in-memory void initialize_indexes(); void init_schema(); - void init_genesis(uint64_t initial_supply = STEEM_INIT_SUPPLY ); + void init_genesis( genesis_state_type genesis ); /** * This method validates transactions without adding it to the pending state. @@ -403,19 +373,9 @@ namespace steem { namespace chain { std::deque< signed_transaction > _popped_tx; vector< signed_transaction > _pending_tx; - bool apply_order( const limit_order_object& new_order_object ); - bool fill_order( const limit_order_object& order, const asset& pays, const asset& receives ); - void cancel_order( const limit_order_object& obj ); - int match( const limit_order_object& bid, const limit_order_object& ask, const price& trade_price ); + void retally_witness_votes(); - void perform_vesting_share_split( uint32_t magnitude ); - void retally_comment_children(); - void retally_witness_votes(); - void retally_witness_vote_counts( bool force = false ); - void retally_liquidity_weight(); - void update_virtual_supply(); - - bool has_hardfork( uint32_t hardfork )const; + bool has_hardfork( uint32_t hardfork )const; /* For testing and debugging only. Given a hardfork with id N, applies all hardforks with id <= N */ @@ -438,7 +398,7 @@ namespace steem { namespace chain { bool disable_low_mem_warning = true; #endif -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT ///Smart Media Tokens related methods ///@{ void validate_smt_invariants()const; @@ -457,6 +417,12 @@ namespace steem { namespace chain { void on_reindex_done_connect(on_reindex_done_t functor) { _on_reindex_done.connect(functor); } + asset process_operation_fee( const operation& op); + account_name_type get_fee_payer(const operation& op); + optional get_sponsor(const account_name_type& who) const; + + time_point_sec get_genesis_time()const; + protected: //Mark pop_undo() as protected -- we do not want outside calling pop_undo(); it should call pop_block() instead //void pop_undo() { object_database::pop_undo(); } @@ -471,7 +437,6 @@ namespace steem { namespace chain { void _apply_transaction( const signed_transaction& trx ); void apply_operation( const operation& op ); - ///Steps involved in applying a new block ///@{ @@ -484,8 +449,7 @@ namespace steem { namespace chain { void update_signing_witness(const witness_object& signing_witness, const signed_block& new_block); void update_last_irreversible_block(); void clear_expired_transactions(); - void clear_expired_orders(); - void clear_expired_delegations(); + void process_header_extensions( const signed_block& next_block ); void init_hardforks(); @@ -493,7 +457,7 @@ namespace steem { namespace chain { void apply_hardfork( uint32_t hardfork ); ///@} -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT template< typename smt_balance_object_type > void adjust_smt_balance( const account_name_type& name, const asset& delta, bool check_account ); #endif @@ -503,8 +467,8 @@ namespace steem { namespace chain { std::unique_ptr< database_impl > _my; fork_database _fork_db; - fc::time_point_sec _hardfork_times[ STEEM_NUM_HARDFORKS + 1 ]; - protocol::hardfork_version _hardfork_versions[ STEEM_NUM_HARDFORKS + 1 ]; + fc::time_point_sec _hardfork_times[ SOPHIATX_NUM_HARDFORKS + 1 ]; + protocol::hardfork_version _hardfork_versions[ SOPHIATX_NUM_HARDFORKS + 1 ]; block_log _block_log; @@ -528,17 +492,16 @@ namespace steem { namespace chain { uint32_t _next_flush_block = 0; uint32_t _last_free_gb_printed = 0; - /// For Initial value see appropriate comment where get_smt_next_identifier is implemented. - uint32_t _next_available_nai = SMT_MIN_NON_RESERVED_NAI; uint16_t _shared_file_full_threshold = 0; uint16_t _shared_file_scale_rate = 0; - flat_map< std::string, std::shared_ptr< custom_operation_interpreter > > _custom_operation_interpreters; + flat_map< uint32_t, std::shared_ptr< custom_operation_interpreter > > _custom_operation_interpreters; std::string _json_schema; fc::signal _on_reindex_start; fc::signal _on_reindex_done; + }; } } diff --git a/libraries/chain/include/steem/chain/database_exceptions.hpp b/libraries/chain/include/sophiatx/chain/database_exceptions.hpp similarity index 58% rename from libraries/chain/include/steem/chain/database_exceptions.hpp rename to libraries/chain/include/sophiatx/chain/database_exceptions.hpp index 3da37bb6..b7a606cc 100644 --- a/libraries/chain/include/steem/chain/database_exceptions.hpp +++ b/libraries/chain/include/sophiatx/chain/database_exceptions.hpp @@ -1,53 +1,53 @@ #pragma once -#include +#include -#define STEEM_DECLARE_OP_BASE_EXCEPTIONS( op_name ) \ +#define SOPHIATX_DECLARE_OP_BASE_EXCEPTIONS( op_name ) \ FC_DECLARE_DERIVED_EXCEPTION( \ op_name ## _validate_exception, \ - steem::chain::operation_validate_exception, \ + sophiatx::chain::operation_validate_exception, \ 4040000 + 100 * protocol::operation::tag< protocol::op_name ## _operation >::value, \ #op_name "_operation validation exception" \ ) \ FC_DECLARE_DERIVED_EXCEPTION( \ op_name ## _evaluate_exception, \ - steem::chain::operation_evaluate_exception, \ + sophiatx::chain::operation_evaluate_exception, \ 4050000 + 100 * protocol::operation::tag< protocol::op_name ## _operation >::value, \ #op_name "_operation evaluation exception" \ ) -#define STEEM_DECLARE_OP_VALIDATE_EXCEPTION( exc_name, op_name, seqnum, msg ) \ +#define SOPHIATX_DECLARE_OP_VALIDATE_EXCEPTION( exc_name, op_name, seqnum, msg ) \ FC_DECLARE_DERIVED_EXCEPTION( \ op_name ## _ ## exc_name, \ - steem::chain::op_name ## _validate_exception, \ + sophiatx::chain::op_name ## _validate_exception, \ 4040000 + 100 * protocol::operation::tag< protocol::op_name ## _operation >::value \ + seqnum, \ msg \ ) -#define STEEM_DECLARE_OP_EVALUATE_EXCEPTION( exc_name, op_name, seqnum, msg ) \ +#define SOPHIATX_DECLARE_OP_EVALUATE_EXCEPTION( exc_name, op_name, seqnum, msg ) \ FC_DECLARE_DERIVED_EXCEPTION( \ op_name ## _ ## exc_name, \ - steem::chain::op_name ## _evaluate_exception, \ + sophiatx::chain::op_name ## _evaluate_exception, \ 4050000 + 100 * protocol::operation::tag< protocol::op_name ## _operation >::value \ + seqnum, \ msg \ ) -#define STEEM_DECLARE_INTERNAL_EXCEPTION( exc_name, seqnum, msg ) \ +#define SOPHIATX_DECLARE_INTERNAL_EXCEPTION( exc_name, seqnum, msg ) \ FC_DECLARE_DERIVED_EXCEPTION( \ internal_ ## exc_name, \ - steem::chain::internal_exception, \ + sophiatx::chain::internal_exception, \ 4990000 + seqnum, \ msg \ ) -#define STEEM_TRY_NOTIFY( signal, ... ) \ +#define SOPHIATX_TRY_NOTIFY( signal, ... ) \ try \ { \ signal( __VA_ARGS__ ); \ } \ - catch( const steem::chain::plugin_exception& e ) \ + catch( const sophiatx::chain::plugin_exception& e ) \ { \ throw; \ } \ @@ -68,55 +68,55 @@ wlog( "Caught unexpected exception in plugin" ); \ } -namespace steem { namespace chain { +namespace sophiatx { namespace chain { FC_DECLARE_EXCEPTION( chain_exception, 4000000, "blockchain exception" ) - FC_DECLARE_DERIVED_EXCEPTION( database_query_exception, steem::chain::chain_exception, 4010000, "database query exception" ) - FC_DECLARE_DERIVED_EXCEPTION( block_validate_exception, steem::chain::chain_exception, 4020000, "block validation exception" ) - FC_DECLARE_DERIVED_EXCEPTION( transaction_exception, steem::chain::chain_exception, 4030000, "transaction validation exception" ) - FC_DECLARE_DERIVED_EXCEPTION( operation_validate_exception, steem::chain::chain_exception, 4040000, "operation validation exception" ) - FC_DECLARE_DERIVED_EXCEPTION( operation_evaluate_exception, steem::chain::chain_exception, 4050000, "operation evaluation exception" ) - FC_DECLARE_DERIVED_EXCEPTION( utility_exception, steem::chain::chain_exception, 4060000, "utility method exception" ) - FC_DECLARE_DERIVED_EXCEPTION( undo_database_exception, steem::chain::chain_exception, 4070000, "undo database exception" ) - FC_DECLARE_DERIVED_EXCEPTION( unlinkable_block_exception, steem::chain::chain_exception, 4080000, "unlinkable block" ) - FC_DECLARE_DERIVED_EXCEPTION( unknown_hardfork_exception, steem::chain::chain_exception, 4090000, "chain attempted to apply unknown hardfork" ) - FC_DECLARE_DERIVED_EXCEPTION( plugin_exception, steem::chain::chain_exception, 4100000, "plugin exception" ) - FC_DECLARE_DERIVED_EXCEPTION( block_log_exception, steem::chain::chain_exception, 4110000, "block log exception" ) - FC_DECLARE_DERIVED_EXCEPTION( market_exception, steem::chain::chain_exception, 4120000, "market exception" ) - FC_DECLARE_DERIVED_EXCEPTION( order_match_exception, steem::chain::market_exception, 4120100, "order match exception" ) - FC_DECLARE_DERIVED_EXCEPTION( order_fill_exception, steem::chain::market_exception, 4120100, "order fill exception" ) + FC_DECLARE_DERIVED_EXCEPTION( database_query_exception, sophiatx::chain::chain_exception, 4010000, "database query exception" ) + FC_DECLARE_DERIVED_EXCEPTION( block_validate_exception, sophiatx::chain::chain_exception, 4020000, "block validation exception" ) + FC_DECLARE_DERIVED_EXCEPTION( transaction_exception, sophiatx::chain::chain_exception, 4030000, "transaction validation exception" ) + FC_DECLARE_DERIVED_EXCEPTION( operation_validate_exception, sophiatx::chain::chain_exception, 4040000, "operation validation exception" ) + FC_DECLARE_DERIVED_EXCEPTION( operation_evaluate_exception, sophiatx::chain::chain_exception, 4050000, "operation evaluation exception" ) + FC_DECLARE_DERIVED_EXCEPTION( utility_exception, sophiatx::chain::chain_exception, 4060000, "utility method exception" ) + FC_DECLARE_DERIVED_EXCEPTION( undo_database_exception, sophiatx::chain::chain_exception, 4070000, "undo database exception" ) + FC_DECLARE_DERIVED_EXCEPTION( unlinkable_block_exception, sophiatx::chain::chain_exception, 4080000, "unlinkable block" ) + FC_DECLARE_DERIVED_EXCEPTION( unknown_hardfork_exception, sophiatx::chain::chain_exception, 4090000, "chain attempted to apply unknown hardfork" ) + FC_DECLARE_DERIVED_EXCEPTION( plugin_exception, sophiatx::chain::chain_exception, 4100000, "plugin exception" ) + FC_DECLARE_DERIVED_EXCEPTION( block_log_exception, sophiatx::chain::chain_exception, 4110000, "block log exception" ) + FC_DECLARE_DERIVED_EXCEPTION( market_exception, sophiatx::chain::chain_exception, 4120000, "market exception" ) + FC_DECLARE_DERIVED_EXCEPTION( order_match_exception, sophiatx::chain::market_exception, 4120100, "order match exception" ) + FC_DECLARE_DERIVED_EXCEPTION( order_fill_exception, sophiatx::chain::market_exception, 4120100, "order fill exception" ) - FC_DECLARE_DERIVED_EXCEPTION( transaction_expiration_exception, steem::chain::transaction_exception, 4030100, "transaction expiration exception" ) - FC_DECLARE_DERIVED_EXCEPTION( transaction_tapos_exception, steem::chain::transaction_exception, 4030200, "transaction tapos exception" ) + FC_DECLARE_DERIVED_EXCEPTION( transaction_expiration_exception, sophiatx::chain::transaction_exception, 4030100, "transaction expiration exception" ) + FC_DECLARE_DERIVED_EXCEPTION( transaction_tapos_exception, sophiatx::chain::transaction_exception, 4030200, "transaction tapos exception" ) - FC_DECLARE_DERIVED_EXCEPTION( pop_empty_chain, steem::chain::undo_database_exception, 4070001, "there are no blocks to pop" ) + FC_DECLARE_DERIVED_EXCEPTION( pop_empty_chain, sophiatx::chain::undo_database_exception, 4070001, "there are no blocks to pop" ) - STEEM_DECLARE_OP_BASE_EXCEPTIONS( transfer ); -// STEEM_DECLARE_OP_EVALUATE_EXCEPTION( from_account_not_whitelisted, transfer, 1, "owner mismatch" ) + SOPHIATX_DECLARE_OP_BASE_EXCEPTIONS( transfer ); +// SOPHIATX_DECLARE_OP_EVALUATE_EXCEPTION( from_account_not_whitelisted, transfer, 1, "owner mismatch" ) - STEEM_DECLARE_OP_BASE_EXCEPTIONS( account_create ); - STEEM_DECLARE_OP_EVALUATE_EXCEPTION( max_auth_exceeded, account_create, 1, "Exceeds max authority fan-out" ) - STEEM_DECLARE_OP_EVALUATE_EXCEPTION( auth_account_not_found, account_create, 2, "Auth account not found" ) + SOPHIATX_DECLARE_OP_BASE_EXCEPTIONS( account_create ); + SOPHIATX_DECLARE_OP_EVALUATE_EXCEPTION( max_auth_exceeded, account_create, 1, "Exceeds max authority fan-out" ) + SOPHIATX_DECLARE_OP_EVALUATE_EXCEPTION( auth_account_not_found, account_create, 2, "Auth account not found" ) - STEEM_DECLARE_OP_BASE_EXCEPTIONS( account_update ); - STEEM_DECLARE_OP_EVALUATE_EXCEPTION( max_auth_exceeded, account_update, 1, "Exceeds max authority fan-out" ) - STEEM_DECLARE_OP_EVALUATE_EXCEPTION( auth_account_not_found, account_update, 2, "Auth account not found" ) + SOPHIATX_DECLARE_OP_BASE_EXCEPTIONS( account_update ); + SOPHIATX_DECLARE_OP_EVALUATE_EXCEPTION( max_auth_exceeded, account_update, 1, "Exceeds max authority fan-out" ) + SOPHIATX_DECLARE_OP_EVALUATE_EXCEPTION( auth_account_not_found, account_update, 2, "Auth account not found" ) - FC_DECLARE_DERIVED_EXCEPTION( internal_exception, steem::chain::chain_exception, 4990000, "internal exception" ) + FC_DECLARE_DERIVED_EXCEPTION( internal_exception, sophiatx::chain::chain_exception, 4990000, "internal exception" ) - STEEM_DECLARE_INTERNAL_EXCEPTION( verify_auth_max_auth_exceeded, 1, "Exceeds max authority fan-out" ) - STEEM_DECLARE_INTERNAL_EXCEPTION( verify_auth_account_not_found, 2, "Auth account not found" ) + SOPHIATX_DECLARE_INTERNAL_EXCEPTION( verify_auth_max_auth_exceeded, 1, "Exceeds max authority fan-out" ) + SOPHIATX_DECLARE_INTERNAL_EXCEPTION( verify_auth_account_not_found, 2, "Auth account not found" ) -} } // steem::chain +} } // sophiatx::chain #pragma once #include -#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { -} } // steem::chain +} } // sophiatx::chain diff --git a/libraries/chain/include/steem/chain/db_with.hpp b/libraries/chain/include/sophiatx/chain/db_with.hpp similarity index 96% rename from libraries/chain/include/steem/chain/db_with.hpp rename to libraries/chain/include/sophiatx/chain/db_with.hpp index 0835b0ca..66871e2d 100644 --- a/libraries/chain/include/steem/chain/db_with.hpp +++ b/libraries/chain/include/sophiatx/chain/db_with.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include /* * This file provides with() functions which modify the database @@ -13,7 +13,7 @@ * and put the finally block in a destructor. Aagh! */ -namespace steem { namespace chain { namespace detail { +namespace sophiatx { namespace chain { namespace detail { /** * Class used to help the with_skip_flags implementation. * It must be defined in this header because it must be @@ -134,4 +134,4 @@ void without_pending_transactions( return; } -} } } // steem::chain::detail +} } } // sophiatx::chain::detail diff --git a/libraries/chain/include/sophiatx/chain/economics.hpp b/libraries/chain/include/sophiatx/chain/economics.hpp new file mode 100644 index 00000000..e53c0bbc --- /dev/null +++ b/libraries/chain/include/sophiatx/chain/economics.hpp @@ -0,0 +1,88 @@ +#pragma once +#include +#include +#include +#include +#include + + + + +namespace sophiatx { namespace chain { +namespace bip = boost::interprocess; + +using namespace sophiatx::protocol; + +//technically, anything in economic_model_object pools do not exists yet; any transfers (by withdraw and add methods) must affect current_supply +class economic_model_object: public object< economic_model_object_type, economic_model_object> { +public: + template< typename Constructor, typename Allocator > + economic_model_object( Constructor&& c, allocator< Allocator > a ) : historic_supply( historic_supply_allocator_type( a.get_segment_manager() ) ) + { + c( *this ); + } + + economic_model_object() =delete; + + id_type id; + + share_type mining_pool_from_coinbase; + share_type mining_pool_from_fees; + share_type interest_pool_from_coinbase; + share_type interest_pool_from_fees; + share_type promotion_pool; + share_type burn_pool=0; + share_type initial_promotion_pool; + share_type init_supply; + share_type total_supply; + share_type coinbase_block_reward; + + typedef bip::allocator< economic_model_object, bip::managed_mapped_file::segment_manager > allocator_type; + typedef bip::allocator< std::pair< uint32_t, share_type >, bip::managed_mapped_file::segment_manager > historic_supply_allocator_type; + typedef bip::flat_map< uint32_t, share_type, std::less< uint32_t >, historic_supply_allocator_type > historic_supply_map; + + historic_supply_map historic_supply; + share_type accumulated_supply; + + void init_economics(share_type init_supply, share_type total_supply); + void record_block(uint32_t block, share_type current_supply); + share_type get_mining_reward(uint32_t block_number) const; + share_type withdraw_mining_reward(uint32_t block_number, uint32_t nominator, uint32_t denominator); + share_type withdraw_interests(share_type holding, uint32_t period); + share_type get_available_promotion_pool(uint32_t block_number) const; + share_type withdraw_from_promotion_pool(share_type amount, uint32_t block_number); + void add_fee(share_type fee); + + + +}; + +typedef multi_index_container< + economic_model_object, + indexed_by< + ordered_unique< tag< by_id >, + member< economic_model_object, economic_model_object::id_type, &economic_model_object::id > > + >, + allocator< economic_model_object > +> economic_model_index; + +}}//namespace + + + + + +FC_REFLECT(sophiatx::chain::economic_model_object, (id) + (mining_pool_from_coinbase) + (mining_pool_from_fees) + (interest_pool_from_coinbase) + (interest_pool_from_fees) + (promotion_pool) + (initial_promotion_pool) + (init_supply) + (total_supply) + (historic_supply) + (accumulated_supply) + (coinbase_block_reward) +) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::economic_model_object, sophiatx::chain::economic_model_index ) diff --git a/libraries/chain/include/steem/chain/evaluator.hpp b/libraries/chain/include/sophiatx/chain/evaluator.hpp similarity index 74% rename from libraries/chain/include/steem/chain/evaluator.hpp rename to libraries/chain/include/sophiatx/chain/evaluator.hpp index 49640dab..92374644 100644 --- a/libraries/chain/include/steem/chain/evaluator.hpp +++ b/libraries/chain/include/sophiatx/chain/evaluator.hpp @@ -1,12 +1,12 @@ #pragma once -#include -#include +#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { class database; -template< typename OperationType=steem::protocol::operation > +template< typename OperationType=sophiatx::protocol::operation > class evaluator { public: @@ -16,7 +16,7 @@ class evaluator virtual int get_type()const = 0; }; -template< typename EvaluatorType, typename OperationType=steem::protocol::operation > +template< typename EvaluatorType, typename OperationType=sophiatx::protocol::operation > class evaluator_impl : public evaluator { public: @@ -45,27 +45,27 @@ class evaluator_impl : public evaluator } } -#define STEEM_DEFINE_EVALUATOR( X ) \ -class X ## _evaluator : public steem::chain::evaluator_impl< X ## _evaluator > \ +#define SOPHIATX_DEFINE_EVALUATOR( X ) \ +class X ## _evaluator : public sophiatx::chain::evaluator_impl< X ## _evaluator > \ { \ public: \ typedef X ## _operation operation_type; \ \ X ## _evaluator( database& db ) \ - : steem::chain::evaluator_impl< X ## _evaluator >( db ) \ + : sophiatx::chain::evaluator_impl< X ## _evaluator >( db ) \ {} \ \ void do_apply( const X ## _operation& o ); \ }; -#define STEEM_DEFINE_PLUGIN_EVALUATOR( PLUGIN, OPERATION, X ) \ -class X ## _evaluator : public steem::chain::evaluator_impl< X ## _evaluator, OPERATION > \ +#define SOPHIATX_DEFINE_PLUGIN_EVALUATOR( PLUGIN, OPERATION, X ) \ +class X ## _evaluator : public sophiatx::chain::evaluator_impl< X ## _evaluator, OPERATION > \ { \ public: \ typedef X ## _operation operation_type; \ \ - X ## _evaluator( steem::chain::database& db, PLUGIN* plugin ) \ - : steem::chain::evaluator_impl< X ## _evaluator, OPERATION >( db ), \ + X ## _evaluator( sophiatx::chain::database& db, PLUGIN* plugin ) \ + : sophiatx::chain::evaluator_impl< X ## _evaluator, OPERATION >( db ), \ _plugin( plugin ) \ {} \ \ diff --git a/libraries/chain/include/steem/chain/evaluator_registry.hpp b/libraries/chain/include/sophiatx/chain/evaluator_registry.hpp similarity index 93% rename from libraries/chain/include/steem/chain/evaluator_registry.hpp rename to libraries/chain/include/sophiatx/chain/evaluator_registry.hpp index cfb62e72..0ce609bd 100644 --- a/libraries/chain/include/steem/chain/evaluator_registry.hpp +++ b/libraries/chain/include/sophiatx/chain/evaluator_registry.hpp @@ -1,8 +1,8 @@ #pragma once -#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { template< typename OperationType > class evaluator_registry diff --git a/libraries/chain/include/steem/chain/fork_database.hpp b/libraries/chain/include/sophiatx/chain/fork_database.hpp similarity index 95% rename from libraries/chain/include/steem/chain/fork_database.hpp rename to libraries/chain/include/sophiatx/chain/fork_database.hpp index 96b2b0dd..5bb958ff 100644 --- a/libraries/chain/include/steem/chain/fork_database.hpp +++ b/libraries/chain/include/sophiatx/chain/fork_database.hpp @@ -1,5 +1,5 @@ #pragma once -#include +#include #include #include @@ -8,12 +8,12 @@ #include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { using boost::multi_index_container; using namespace boost::multi_index; - using steem::protocol::signed_block; - using steem::protocol::block_id_type; + using sophiatx::protocol::signed_block; + using sophiatx::protocol::block_id_type; struct fork_item { @@ -104,4 +104,4 @@ namespace steem { namespace chain { shared_ptr _head; }; -} } // steem::chain +} } // sophiatx::chain diff --git a/libraries/chain/include/steem/chain/generic_custom_operation_interpreter.hpp b/libraries/chain/include/sophiatx/chain/generic_custom_operation_interpreter.hpp similarity index 86% rename from libraries/chain/include/steem/chain/generic_custom_operation_interpreter.hpp rename to libraries/chain/include/sophiatx/chain/generic_custom_operation_interpreter.hpp index b81e67bc..66d30161 100644 --- a/libraries/chain/include/steem/chain/generic_custom_operation_interpreter.hpp +++ b/libraries/chain/include/sophiatx/chain/generic_custom_operation_interpreter.hpp @@ -1,22 +1,22 @@ #pragma once -#include -#include -#include +#include +#include +#include -#include -#include -#include +#include +#include +#include -#include +#include #include #include #include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { using protocol::operation; using protocol::authority; @@ -110,9 +110,9 @@ class generic_custom_operation_interpreter FC_CAPTURE_AND_RETHROW( (outer_o) ) } - virtual std::shared_ptr< steem::schema::abstract_schema > get_operation_schema() override + virtual std::shared_ptr< sophiatx::schema::abstract_schema > get_operation_schema() override { - return steem::schema::get_schema_for_type< CustomOperationType >(); + return sophiatx::schema::get_schema_for_type< CustomOperationType >(); } }; diff --git a/libraries/chain/include/sophiatx/chain/genesis_state.hpp b/libraries/chain/include/sophiatx/chain/genesis_state.hpp new file mode 100644 index 00000000..62dd89fc --- /dev/null +++ b/libraries/chain/include/sophiatx/chain/genesis_state.hpp @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2015 Cryptonomex, Inc., and contributors. + * + * The MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#pragma once + +#include + +#include +#include + +#include +#include + +namespace sophiatx { namespace chain { +using std::string; +using std::vector; +using namespace sophiatx::protocol; + +struct genesis_state_type { + + struct initial_account_type { + initial_account_type(const account_name_type& name = string(), + const public_key_type& key = public_key_type(), + const share_type& balance = 0 + ) + : name(name), + key(key), + balance(balance) + {} + account_name_type name; + public_key_type key; + share_type balance; + }; + + public_key_type initial_public_key = SOPHIATX_INIT_PUBLIC_KEY; + share_type initial_balace = SOPHIATX_INIT_SUPPLY; + + vector initial_accounts; + + + chain_id_type initial_chain_id; + time_point_sec genesis_time; + + /** + * Get the chain_id corresponding to this genesis state. + * + * This is the SHA256 serialization of the genesis_state. + */ + chain_id_type compute_chain_id() const{return initial_chain_id;}; +}; + +} } // namespace sophiatx::chain + +FC_REFLECT(sophiatx::chain::genesis_state_type::initial_account_type, (name)(key)(balance)) + +FC_REFLECT(sophiatx::chain::genesis_state_type, (initial_public_key)(initial_balace)(initial_accounts)(initial_chain_id)(genesis_time)) \ No newline at end of file diff --git a/libraries/chain/include/sophiatx/chain/global_property_object.hpp b/libraries/chain/include/sophiatx/chain/global_property_object.hpp new file mode 100644 index 00000000..74a072a9 --- /dev/null +++ b/libraries/chain/include/sophiatx/chain/global_property_object.hpp @@ -0,0 +1,108 @@ +#pragma once +#include + +#include + +#include + +namespace sophiatx { namespace chain { + + using sophiatx::protocol::asset; + using sophiatx::protocol::price; + + /** + * @class dynamic_global_property_object + * @brief Maintains global state information + * @ingroup object + * @ingroup implementation + * + * This is an implementation detail. The values here are calculated during normal chain operations and reflect the + * current values of global blockchain properties. + */ + class dynamic_global_property_object : public object< dynamic_global_property_object_type, dynamic_global_property_object> + { + public: + template< typename Constructor, typename Allocator > + dynamic_global_property_object( Constructor&& c, allocator< Allocator > a ) + { + c( *this ); + } + + dynamic_global_property_object(){} + + id_type id; + + uint32_t head_block_number = 0; + block_id_type head_block_id; + time_point_sec time; + account_name_type current_witness; + + asset current_supply = asset( 0, SOPHIATX_SYMBOL ); + asset total_vesting_shares = asset( 0, VESTS_SYMBOL ); + asset total_reward_fund = asset( 0, SOPHIATX_SYMBOL ); + + asset witness_required_vesting = asset( SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE, SOPHIATX_SYMBOL ); + + + /** + * Maximum block size is decided by the set of active witnesses which change every round. + * Each witness posts what they think the maximum size should be as part of their witness + * properties, the median size is chosen to be the maximum block size for the round. + * + * @note the minimum value for maximum_block_size is defined by the protocol to prevent the + * network from getting stuck by witnesses attempting to set this too low. + */ + uint32_t maximum_block_size = 0; + + /** + * The current absolute slot number. Equal to the total + * number of slots since genesis. Also equal to the total + * number of missed slots plus head_block_number. + */ + uint64_t current_aslot = 0; + + /** + * used to compute witness participation. + */ + fc::uint128_t recent_slots_filled; + uint8_t participation_count = 0; ///< Divide by 128 to compute participation percentage + + uint32_t last_irreversible_block_num = 0; + + chain_id_type chain_id; + time_point_sec genesis_time; + +#ifdef SOPHIATX_ENABLE_SMT + asset smt_creation_fee = asset( 1000000, SBD_SYMBOL ); +#endif + }; + + typedef multi_index_container< + dynamic_global_property_object, + indexed_by< + ordered_unique< tag< by_id >, + member< dynamic_global_property_object, dynamic_global_property_object::id_type, &dynamic_global_property_object::id > > + >, + allocator< dynamic_global_property_object > + > dynamic_global_property_index; + +} } // sophiatx::chain + +FC_REFLECT( sophiatx::chain::dynamic_global_property_object, + (id) + (head_block_number) + (head_block_id) + (time) + (current_witness) + (current_supply) + (total_vesting_shares) + (total_reward_fund) + (maximum_block_size) + (current_aslot) + (witness_required_vesting) + (recent_slots_filled) + (participation_count) + (last_irreversible_block_num) +) + +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::dynamic_global_property_object, sophiatx::chain::dynamic_global_property_index ) diff --git a/libraries/chain/include/steem/chain/hardfork_property_object.hpp b/libraries/chain/include/sophiatx/chain/hardfork_property_object.hpp similarity index 77% rename from libraries/chain/include/steem/chain/hardfork_property_object.hpp rename to libraries/chain/include/sophiatx/chain/hardfork_property_object.hpp index 0ade8afa..997c496b 100644 --- a/libraries/chain/include/steem/chain/hardfork_property_object.hpp +++ b/libraries/chain/include/sophiatx/chain/hardfork_property_object.hpp @@ -1,10 +1,10 @@ #pragma once -#include +#include -#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { class hardfork_property_object : public object< hardfork_property_object_type, hardfork_property_object > { @@ -20,7 +20,7 @@ namespace steem { namespace chain { bip::vector< fc::time_point_sec, allocator< fc::time_point_sec > > processed_hardforks; uint32_t last_hardfork = 0; - protocol::hardfork_version current_hardfork_version; + protocol::hardfork_version current_hardfork_version = protocol::hardfork_version(1, 0); protocol::hardfork_version next_hardfork; fc::time_point_sec next_hardfork_time; }; @@ -33,9 +33,9 @@ namespace steem { namespace chain { allocator< hardfork_property_object > > hardfork_property_index; -} } // steem::chain +} } // sophiatx::chain -FC_REFLECT( steem::chain::hardfork_property_object, +FC_REFLECT( sophiatx::chain::hardfork_property_object, (id)(processed_hardforks)(last_hardfork)(current_hardfork_version) (next_hardfork)(next_hardfork_time) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::hardfork_property_object, steem::chain::hardfork_property_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::hardfork_property_object, sophiatx::chain::hardfork_property_index ) diff --git a/libraries/chain/include/steem/chain/history_object.hpp b/libraries/chain/include/sophiatx/chain/history_object.hpp similarity index 76% rename from libraries/chain/include/steem/chain/history_object.hpp rename to libraries/chain/include/sophiatx/chain/history_object.hpp index 27a39001..49f40372 100644 --- a/libraries/chain/include/steem/chain/history_object.hpp +++ b/libraries/chain/include/sophiatx/chain/history_object.hpp @@ -1,17 +1,17 @@ #pragma once -#include -#include -#include +#include +#include +#include -#include -#include -#include +#include +#include +#include #include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { class operation_object : public object< operation_object_type, operation_object > { @@ -34,6 +34,7 @@ namespace steem { namespace chain { uint64_t virtual_op = 0; time_point_sec timestamp; buffer_type serialized_op; + account_name_type fee_payer; }; struct by_location; @@ -98,19 +99,19 @@ namespace steem { namespace chain { > account_history_index; } } -FC_REFLECT( steem::chain::operation_object, (id)(trx_id)(block)(trx_in_block)(op_in_trx)(virtual_op)(timestamp)(serialized_op) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::operation_object, steem::chain::operation_index ) +FC_REFLECT( sophiatx::chain::operation_object, (id)(trx_id)(block)(trx_in_block)(op_in_trx)(virtual_op)(timestamp)(serialized_op)(fee_payer) ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::operation_object, sophiatx::chain::operation_index ) -FC_REFLECT( steem::chain::account_history_object, (id)(account)(sequence)(op) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::account_history_object, steem::chain::account_history_index ) +FC_REFLECT( sophiatx::chain::account_history_object, (id)(account)(sequence)(op) ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::account_history_object, sophiatx::chain::account_history_index ) namespace helpers { template <> - class index_statistic_provider + class index_statistic_provider { public: - typedef steem::chain::operation_index IndexType; + typedef sophiatx::chain::operation_index IndexType; index_statistic_info gather_statistics(const IndexType& index, bool onlyStaticInfo) const { @@ -121,7 +122,7 @@ namespace helpers { for(const auto& o : index) info._item_additional_allocation += - o.serialized_op.capacity()*sizeof(steem::chain::buffer_type::value_type); + o.serialized_op.capacity()*sizeof(sophiatx::chain::buffer_type::value_type); } return info; @@ -129,10 +130,10 @@ namespace helpers }; template <> - class index_statistic_provider + class index_statistic_provider { public: - typedef steem::chain::account_history_index IndexType; + typedef sophiatx::chain::account_history_index IndexType; index_statistic_info gather_statistics(const IndexType& index, bool onlyStaticInfo) const { @@ -143,7 +144,7 @@ namespace helpers { //for(const auto& o : index) // info._item_additional_allocation += o.get_ops().capacity()* - // sizeof(steem::chain::account_history_object::operation_container::value_type); + // sizeof(sophiatx::chain::account_history_object::operation_container::value_type); } return info; diff --git a/libraries/chain/include/steem/chain/index.hpp b/libraries/chain/include/sophiatx/chain/index.hpp similarity index 84% rename from libraries/chain/include/steem/chain/index.hpp rename to libraries/chain/include/sophiatx/chain/index.hpp index 6effc041..d3cd1636 100644 --- a/libraries/chain/include/steem/chain/index.hpp +++ b/libraries/chain/include/sophiatx/chain/index.hpp @@ -1,8 +1,8 @@ #pragma once -#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { template< typename MultiIndexType > void _add_index_impl( database& db ) diff --git a/libraries/chain/include/steem/chain/node_property_object.hpp b/libraries/chain/include/sophiatx/chain/node_property_object.hpp similarity index 91% rename from libraries/chain/include/steem/chain/node_property_object.hpp rename to libraries/chain/include/sophiatx/chain/node_property_object.hpp index 16efbaa8..f38ede3b 100644 --- a/libraries/chain/include/steem/chain/node_property_object.hpp +++ b/libraries/chain/include/sophiatx/chain/node_property_object.hpp @@ -1,6 +1,6 @@ #pragma once -namespace steem { namespace chain { +namespace sophiatx { namespace chain { /** * @brief Contains per-node database configuration. @@ -20,4 +20,4 @@ namespace steem { namespace chain { uint32_t skip_flags = 0; }; -} } // steem::chain +} } // sophiatx::chain diff --git a/libraries/chain/include/steem/chain/operation_notification.hpp b/libraries/chain/include/sophiatx/chain/operation_notification.hpp similarity index 65% rename from libraries/chain/include/steem/chain/operation_notification.hpp rename to libraries/chain/include/sophiatx/chain/operation_notification.hpp index a5a0f457..f705d882 100644 --- a/libraries/chain/include/steem/chain/operation_notification.hpp +++ b/libraries/chain/include/sophiatx/chain/operation_notification.hpp @@ -1,10 +1,10 @@ #pragma once -#include +#include -#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { struct operation_notification { @@ -16,6 +16,7 @@ struct operation_notification uint16_t op_in_trx = 0; uint64_t virtual_op = 0; const operation& op; + account_name_type fee_payer; }; } } diff --git a/libraries/chain/include/steem/chain/shared_authority.hpp b/libraries/chain/include/sophiatx/chain/shared_authority.hpp similarity index 89% rename from libraries/chain/include/steem/chain/shared_authority.hpp rename to libraries/chain/include/sophiatx/chain/shared_authority.hpp index 8d611e8f..b485d4be 100644 --- a/libraries/chain/include/steem/chain/shared_authority.hpp +++ b/libraries/chain/include/sophiatx/chain/shared_authority.hpp @@ -1,12 +1,12 @@ #pragma once -#include +#include #include -namespace steem { namespace chain { - using steem::protocol::authority; - using steem::protocol::public_key_type; - using steem::protocol::account_name_type; - using steem::protocol::weight_type; +namespace sophiatx { namespace chain { + using sophiatx::protocol::authority; + using sophiatx::protocol::public_key_type; + using sophiatx::protocol::account_name_type; + using sophiatx::protocol::weight_type; namespace bip = boost::interprocess; @@ -98,7 +98,7 @@ namespace steem { namespace chain { bool operator == ( const authority& a, const shared_authority& b ); bool operator == ( const shared_authority& a, const authority& b ); -} } //steem::chain +} } //sophiatx::chain -FC_REFLECT_TYPENAME( steem::chain::shared_authority::account_authority_map) -FC_REFLECT( steem::chain::shared_authority, (weight_threshold)(account_auths)(key_auths) ) +FC_REFLECT_TYPENAME( sophiatx::chain::shared_authority::account_authority_map) +FC_REFLECT( sophiatx::chain::shared_authority, (weight_threshold)(account_auths)(key_auths) ) diff --git a/libraries/chain/include/steem/chain/shared_db_merkle.hpp b/libraries/chain/include/sophiatx/chain/shared_db_merkle.hpp similarity index 89% rename from libraries/chain/include/steem/chain/shared_db_merkle.hpp rename to libraries/chain/include/sophiatx/chain/shared_db_merkle.hpp index 4e1f7633..dc54ad98 100644 --- a/libraries/chain/include/steem/chain/shared_db_merkle.hpp +++ b/libraries/chain/include/sophiatx/chain/shared_db_merkle.hpp @@ -1,6 +1,6 @@ -#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { inline static const map< uint32_t, checksum_type >& get_shared_db_merkle() { @@ -19,4 +19,4 @@ inline static const map< uint32_t, checksum_type >& get_shared_db_merkle() return shared_db_merkle; } -} } //steem::chain +} } //sophiatx::chain diff --git a/libraries/chain/include/sophiatx/chain/smt_objects.hpp b/libraries/chain/include/sophiatx/chain/smt_objects.hpp new file mode 100644 index 00000000..6ff7fe68 --- /dev/null +++ b/libraries/chain/include/sophiatx/chain/smt_objects.hpp @@ -0,0 +1,4 @@ +#pragma once + +#include +#include diff --git a/libraries/chain/include/steem/chain/smt_objects/account_balance_object.hpp b/libraries/chain/include/sophiatx/chain/smt_objects/account_balance_object.hpp similarity index 77% rename from libraries/chain/include/steem/chain/smt_objects/account_balance_object.hpp rename to libraries/chain/include/sophiatx/chain/smt_objects/account_balance_object.hpp index 49ae12d3..f2e784f0 100644 --- a/libraries/chain/include/steem/chain/smt_objects/account_balance_object.hpp +++ b/libraries/chain/include/sophiatx/chain/smt_objects/account_balance_object.hpp @@ -1,14 +1,14 @@ #pragma once -#include -#include +#include +#include -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT -namespace steem { namespace chain { +namespace sophiatx { namespace chain { /** - * Class responsible for holding non STEEM balance (SMT one) for given account. + * Class responsible for holding non SOPHIATX balance (SMT one) for given account. * Since multiple kinds of balances are possible (atm regular and savings) this * class is parameterized to distinguish their types. */ @@ -67,21 +67,21 @@ typedef account_balance_index account_regul typedef account_balance_index account_rewards_balance_index; -} } // namespace steem::chain +} } // namespace sophiatx::chain -FC_REFLECT( steem::chain::account_regular_balance_object, +FC_REFLECT( sophiatx::chain::account_regular_balance_object, (id) (owner) (balance) ) -FC_REFLECT( steem::chain::account_rewards_balance_object, +FC_REFLECT( sophiatx::chain::account_rewards_balance_object, (id) (owner) (balance) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::account_regular_balance_object, steem::chain::account_regular_balance_index ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::account_rewards_balance_object, steem::chain::account_rewards_balance_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::account_regular_balance_object, sophiatx::chain::account_regular_balance_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::account_rewards_balance_object, sophiatx::chain::account_rewards_balance_index ) #endif diff --git a/libraries/chain/include/steem/chain/smt_objects/smt_token_object.hpp b/libraries/chain/include/sophiatx/chain/smt_objects/smt_token_object.hpp similarity index 82% rename from libraries/chain/include/steem/chain/smt_objects/smt_token_object.hpp rename to libraries/chain/include/sophiatx/chain/smt_objects/smt_token_object.hpp index e17b7f1f..d885b905 100644 --- a/libraries/chain/include/steem/chain/smt_objects/smt_token_object.hpp +++ b/libraries/chain/include/sophiatx/chain/smt_objects/smt_token_object.hpp @@ -1,11 +1,11 @@ #pragma once -#include -#include +#include +#include -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT -namespace steem { namespace chain { +namespace sophiatx { namespace chain { /**Note that the object represents both liquid and vesting variant of SMT. * The same object is returned by indices when searched by liquid/vesting symbol/nai. @@ -23,7 +23,7 @@ class smt_token_object : public object< smt_token_object_type, smt_token_object struct smt_market_maker_state { - asset steem_balance; + asset sophiatx_balance; asset token_balance; uint32_t reserve_ratio = 0; }; @@ -71,15 +71,15 @@ class smt_token_object : public object< smt_token_object_type, smt_token_object protocol::curve_id curation_reward_curve; /// smt_setup_emissions - time_point_sec schedule_time = STEEM_GENESIS_TIME; - steem::protocol:: + time_point_sec schedule_time = SOPHIATX_GENESIS_TIME; + sophiatx::protocol:: smt_emissions_unit emissions_unit; uint32_t interval_seconds = 0; uint32_t interval_count = 0; - time_point_sec lep_time = STEEM_GENESIS_TIME; - time_point_sec rep_time = STEEM_GENESIS_TIME; - asset lep_abs_amount = asset( 0, STEEM_SYMBOL ); - asset rep_abs_amount = asset( 0, STEEM_SYMBOL ); + time_point_sec lep_time = SOPHIATX_GENESIS_TIME; + time_point_sec rep_time = SOPHIATX_GENESIS_TIME; + asset lep_abs_amount = asset( 0, SOPHIATX_SYMBOL ); + asset rep_abs_amount = asset( 0, SOPHIATX_SYMBOL ); uint32_t lep_rel_amount_numerator = 0; uint32_t rep_rel_amount_numerator = 0; uint8_t rel_amount_denom_bits = 0; @@ -123,20 +123,20 @@ typedef multi_index_container < allocator< smt_token_object > > smt_token_index; -} } // namespace steem::chain +} } // namespace sophiatx::chain -FC_REFLECT_ENUM( steem::chain::smt_token_object::smt_phase, +FC_REFLECT_ENUM( sophiatx::chain::smt_token_object::smt_phase, (account_elevated) (setup_completed) ) -FC_REFLECT( steem::chain::smt_token_object::smt_market_maker_state, - (steem_balance) +FC_REFLECT( sophiatx::chain::smt_token_object::smt_market_maker_state, + (sophiatx_balance) (token_balance) (reserve_ratio) ) -FC_REFLECT( steem::chain::smt_token_object, +FC_REFLECT( sophiatx::chain::smt_token_object, (id) (liquid_symbol) (control_account) @@ -158,6 +158,6 @@ FC_REFLECT( steem::chain::smt_token_object, (rel_amount_denom_bits) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::smt_token_object, steem::chain::smt_token_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::smt_token_object, sophiatx::chain::smt_token_index ) #endif diff --git a/libraries/chain/include/sophiatx/chain/sophiatx_evaluator.hpp b/libraries/chain/include/sophiatx/chain/sophiatx_evaluator.hpp new file mode 100644 index 00000000..516b6998 --- /dev/null +++ b/libraries/chain/include/sophiatx/chain/sophiatx_evaluator.hpp @@ -0,0 +1,55 @@ +#pragma once + +#include + +#include + +namespace sophiatx { namespace chain { + +using namespace sophiatx::protocol; + +SOPHIATX_DEFINE_EVALUATOR( account_create ) +SOPHIATX_DEFINE_EVALUATOR( account_update ) +SOPHIATX_DEFINE_EVALUATOR( account_delete ) +SOPHIATX_DEFINE_EVALUATOR( transfer ) +SOPHIATX_DEFINE_EVALUATOR( transfer_to_vesting ) +SOPHIATX_DEFINE_EVALUATOR( witness_update ) +SOPHIATX_DEFINE_EVALUATOR( witness_stop ) +SOPHIATX_DEFINE_EVALUATOR( account_witness_vote ) +SOPHIATX_DEFINE_EVALUATOR( account_witness_proxy ) +SOPHIATX_DEFINE_EVALUATOR( withdraw_vesting ) +SOPHIATX_DEFINE_EVALUATOR( custom ) +SOPHIATX_DEFINE_EVALUATOR( custom_json ) +SOPHIATX_DEFINE_EVALUATOR( custom_binary ) +SOPHIATX_DEFINE_EVALUATOR( feed_publish ) +SOPHIATX_DEFINE_EVALUATOR( escrow_transfer ) +SOPHIATX_DEFINE_EVALUATOR( escrow_approve ) +SOPHIATX_DEFINE_EVALUATOR( escrow_dispute ) +SOPHIATX_DEFINE_EVALUATOR( escrow_release ) +SOPHIATX_DEFINE_EVALUATOR( request_account_recovery ) +SOPHIATX_DEFINE_EVALUATOR( recover_account ) +SOPHIATX_DEFINE_EVALUATOR( change_recovery_account ) + +SOPHIATX_DEFINE_EVALUATOR( reset_account ) +SOPHIATX_DEFINE_EVALUATOR( set_reset_account ) + +SOPHIATX_DEFINE_EVALUATOR( application_create ) +SOPHIATX_DEFINE_EVALUATOR( application_update ) +SOPHIATX_DEFINE_EVALUATOR( application_delete ) +SOPHIATX_DEFINE_EVALUATOR( buy_application ) +SOPHIATX_DEFINE_EVALUATOR( cancel_application_buying ) + +SOPHIATX_DEFINE_EVALUATOR( witness_set_properties ) +SOPHIATX_DEFINE_EVALUATOR( transfer_from_promotion_pool ) +SOPHIATX_DEFINE_EVALUATOR( sponsor_fees ) +#ifdef SOPHIATX_ENABLE_SMT +SOPHIATX_DEFINE_EVALUATOR( smt_setup ) +SOPHIATX_DEFINE_EVALUATOR( smt_cap_reveal ) +SOPHIATX_DEFINE_EVALUATOR( smt_refund ) +SOPHIATX_DEFINE_EVALUATOR( smt_setup_emissions ) +SOPHIATX_DEFINE_EVALUATOR( smt_set_setup_parameters ) +SOPHIATX_DEFINE_EVALUATOR( smt_set_runtime_parameters ) +SOPHIATX_DEFINE_EVALUATOR( smt_create ) +#endif + +} } // sophiatx::chain diff --git a/libraries/chain/include/steem/chain/steem_object_types.hpp b/libraries/chain/include/sophiatx/chain/sophiatx_object_types.hpp similarity index 62% rename from libraries/chain/include/steem/chain/steem_object_types.hpp rename to libraries/chain/include/sophiatx/chain/sophiatx_object_types.hpp index 97c08cb4..bbc7a427 100644 --- a/libraries/chain/include/steem/chain/steem_object_types.hpp +++ b/libraries/chain/include/sophiatx/chain/sophiatx_object_types.hpp @@ -6,11 +6,11 @@ #include -#include -#include +#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { namespace bip = chainbase::bip; using namespace boost::multi_index; @@ -21,11 +21,11 @@ using chainbase::object; using chainbase::oid; using chainbase::allocator; -using steem::protocol::block_id_type; -using steem::protocol::transaction_id_type; -using steem::protocol::chain_id_type; -using steem::protocol::account_name_type; -using steem::protocol::share_type; +using sophiatx::protocol::block_id_type; +using sophiatx::protocol::transaction_id_type; +using sophiatx::protocol::chain_id_type; +using sophiatx::protocol::account_name_type; +using sophiatx::protocol::share_type; typedef bip::basic_string< char, std::char_traits< char >, allocator< char > > shared_string; inline std::string to_string( const shared_string& str ) { return std::string( str.begin(), str.end() ); } @@ -42,29 +42,22 @@ enum object_type transaction_object_type, block_summary_object_type, witness_schedule_object_type, - comment_object_type, - comment_content_object_type, - comment_vote_object_type, witness_vote_object_type, - limit_order_object_type, feed_history_object_type, - convert_request_object_type, - liquidity_reward_balance_object_type, operation_object_type, account_history_object_type, hardfork_property_object_type, - withdraw_vesting_route_object_type, owner_authority_history_object_type, account_recovery_request_object_type, change_recovery_account_request_object_type, escrow_object_type, - savings_withdraw_object_type, - decline_voting_rights_request_object_type, - block_stats_object_type, reward_fund_object_type, - vesting_delegation_object_type, - vesting_delegation_expiration_object_type, -#ifdef STEEM_ENABLE_SMT + economic_model_object_type, + custom_content_object_type, + application_object_type, + account_fee_sponsor_object_type, + application_buying_object_type, +#ifdef SOPHIATX_ENABLE_SMT // SMT objects smt_token_object_type, account_regular_balance_object_type, @@ -79,30 +72,23 @@ class witness_object; class transaction_object; class block_summary_object; class witness_schedule_object; -class comment_object; -class comment_content_object; -class comment_vote_object; class witness_vote_object; -class limit_order_object; class feed_history_object; -class convert_request_object; -class liquidity_reward_balance_object; class operation_object; class account_history_object; class hardfork_property_object; -class withdraw_vesting_route_object; class owner_authority_history_object; class account_recovery_request_object; class change_recovery_account_request_object; class escrow_object; -class savings_withdraw_object; -class decline_voting_rights_request_object; -class block_stats_object; class reward_fund_object; -class vesting_delegation_object; -class vesting_delegation_expiration_object; +class economic_model_object; +class custom_content_object; +class application_object; +class account_fee_sponsor_object; +class application_buying_object; -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT class smt_token_object; template < enum object_type ObjectType > class account_balance_object; typedef account_balance_object< account_regular_balance_object_type > account_regular_balance_object; @@ -116,30 +102,23 @@ typedef oid< witness_object > witness_id_type; typedef oid< transaction_object > transaction_object_id_type; typedef oid< block_summary_object > block_summary_id_type; typedef oid< witness_schedule_object > witness_schedule_id_type; -typedef oid< comment_object > comment_id_type; -typedef oid< comment_content_object > comment_content_id_type; -typedef oid< comment_vote_object > comment_vote_id_type; typedef oid< witness_vote_object > witness_vote_id_type; -typedef oid< limit_order_object > limit_order_id_type; typedef oid< feed_history_object > feed_history_id_type; -typedef oid< convert_request_object > convert_request_id_type; -typedef oid< liquidity_reward_balance_object > liquidity_reward_balance_id_type; typedef oid< operation_object > operation_id_type; typedef oid< account_history_object > account_history_id_type; typedef oid< hardfork_property_object > hardfork_property_id_type; -typedef oid< withdraw_vesting_route_object > withdraw_vesting_route_id_type; typedef oid< owner_authority_history_object > owner_authority_history_id_type; typedef oid< account_recovery_request_object > account_recovery_request_id_type; typedef oid< change_recovery_account_request_object > change_recovery_account_request_id_type; typedef oid< escrow_object > escrow_id_type; -typedef oid< savings_withdraw_object > savings_withdraw_id_type; -typedef oid< decline_voting_rights_request_object > decline_voting_rights_request_id_type; -typedef oid< block_stats_object > block_stats_id_type; typedef oid< reward_fund_object > reward_fund_id_type; -typedef oid< vesting_delegation_object > vesting_delegation_id_type; -typedef oid< vesting_delegation_expiration_object > vesting_delegation_expiration_id_type; +typedef oid< economic_model_object > economic_model_id_type; +typedef oid< custom_content_object > custom_content_id_type; +typedef oid< application_object > application_id_type; +typedef oid< account_fee_sponsor_object > account_fee_sponsor_id_type; +typedef oid< application_buying_object > application_buying_id_type; -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT typedef oid< smt_token_object > smt_token_id_type; typedef oid< account_regular_balance_object > account_regular_balance_id_type; typedef oid< account_rewards_balance_object > account_rewards_balance_id_type; @@ -152,17 +131,17 @@ enum bandwidth_type market ///< Rate limiting for all other actions }; -} } //steem::chain +} } //sophiatx::chain namespace fc { class variant; - inline void to_variant( const steem::chain::shared_string& s, variant& var ) + inline void to_variant( const sophiatx::chain::shared_string& s, variant& var ) { - var = fc::string( steem::chain::to_string( s ) ); + var = fc::string( sophiatx::chain::to_string( s ) ); } - inline void from_variant( const variant& var, steem::chain::shared_string& s ) + inline void from_variant( const variant& var, sophiatx::chain::shared_string& s ) { auto str = var.as_string(); s.assign( str.begin(), str.end() ); @@ -193,7 +172,7 @@ namespace fc } } -FC_REFLECT_ENUM( steem::chain::object_type, +FC_REFLECT_ENUM( sophiatx::chain::object_type, (dynamic_global_property_object_type) (account_object_type) (account_authority_object_type) @@ -201,36 +180,23 @@ FC_REFLECT_ENUM( steem::chain::object_type, (transaction_object_type) (block_summary_object_type) (witness_schedule_object_type) - (comment_object_type) - (comment_content_object_type) - (comment_vote_object_type) (witness_vote_object_type) - (limit_order_object_type) (feed_history_object_type) - (convert_request_object_type) - (liquidity_reward_balance_object_type) (operation_object_type) (account_history_object_type) (hardfork_property_object_type) - (withdraw_vesting_route_object_type) (owner_authority_history_object_type) (account_recovery_request_object_type) (change_recovery_account_request_object_type) (escrow_object_type) - (savings_withdraw_object_type) - (decline_voting_rights_request_object_type) - (block_stats_object_type) (reward_fund_object_type) - (vesting_delegation_object_type) - (vesting_delegation_expiration_object_type) - -#ifdef STEEM_ENABLE_SMT - (smt_token_object_type) - (account_regular_balance_object_type) - (account_rewards_balance_object_type) -#endif + (economic_model_object_type) + (custom_content_object_type) + (application_object_type) + (account_fee_sponsor_object_type) + (application_buying_object_type) ) -FC_REFLECT_TYPENAME( steem::chain::shared_string ) +FC_REFLECT_TYPENAME( sophiatx::chain::shared_string ) -FC_REFLECT_ENUM( steem::chain::bandwidth_type, (post)(forum)(market) ) +FC_REFLECT_ENUM( sophiatx::chain::bandwidth_type, (post)(forum)(market) ) diff --git a/libraries/chain/include/sophiatx/chain/sophiatx_objects.hpp b/libraries/chain/include/sophiatx/chain/sophiatx_objects.hpp new file mode 100755 index 00000000..78d242a8 --- /dev/null +++ b/libraries/chain/include/sophiatx/chain/sophiatx_objects.hpp @@ -0,0 +1,126 @@ +#pragma once + +#include +#include +#include + +#include + +#include +#include + + +namespace sophiatx { namespace chain { + + using sophiatx::protocol::asset; + using sophiatx::protocol::price; + using sophiatx::protocol::asset_symbol_type; + + typedef protocol::fixed_string< 16 > reward_fund_name_type; + + + class escrow_object : public object< escrow_object_type, escrow_object > + { + public: + template< typename Constructor, typename Allocator > + escrow_object( Constructor&& c, allocator< Allocator > a ) + { + c( *this ); + } + + escrow_object(){} + + id_type id; + + uint32_t escrow_id = 20; + account_name_type from; + account_name_type to; + account_name_type agent; + time_point_sec ratification_deadline; + time_point_sec escrow_expiration; + asset sophiatx_balance; + asset pending_fee; + bool to_approved = false; + bool agent_approved = false; + bool disputed = false; + + bool is_approved()const { return to_approved && agent_approved; } + }; + + + /** + * This object gets updated once per hour, on the hour + */ + class feed_history_object : public object< feed_history_object_type, feed_history_object > + { + feed_history_object() = delete; + + public: + template< typename Constructor, typename Allocator > + feed_history_object( Constructor&& c, allocator< Allocator > a ) + :price_history( a.get_segment_manager() ) + { + c( *this ); + } + + id_type id; + asset_symbol_type symbol; + + price current_median_history; ///< the current median of the price history, used as the base for convert operations + bip::deque< price, allocator< price > > price_history; ///< tracks this last week of median_feed one per hour + }; + + + + + struct by_symbol; + + typedef multi_index_container< + feed_history_object, + indexed_by< + ordered_unique< tag< by_id >, member< feed_history_object, feed_history_id_type, &feed_history_object::id > >, + ordered_unique< tag< by_symbol >, member< feed_history_object, asset_symbol_type, &feed_history_object::symbol> > + >, + allocator< feed_history_object > + > feed_history_index; + + struct by_from_id; + struct by_ratification_deadline; + typedef multi_index_container< + escrow_object, + indexed_by< + ordered_unique< tag< by_id >, member< escrow_object, escrow_id_type, &escrow_object::id > >, + ordered_unique< tag< by_from_id >, + composite_key< escrow_object, + member< escrow_object, account_name_type, &escrow_object::from >, + member< escrow_object, uint32_t, &escrow_object::escrow_id > + > + >, + ordered_unique< tag< by_ratification_deadline >, + composite_key< escrow_object, + const_mem_fun< escrow_object, bool, &escrow_object::is_approved >, + member< escrow_object, time_point_sec, &escrow_object::ratification_deadline >, + member< escrow_object, escrow_id_type, &escrow_object::id > + >, + composite_key_compare< std::less< bool >, std::less< time_point_sec >, std::less< escrow_id_type > > + > + >, + allocator< escrow_object > + > escrow_index; + + +} } // sophiatx::chain + +#include + +FC_REFLECT( sophiatx::chain::feed_history_object, + (id)(current_median_history)(price_history)(symbol) ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::feed_history_object, sophiatx::chain::feed_history_index ) + +FC_REFLECT( sophiatx::chain::escrow_object, + (id)(escrow_id)(from)(to)(agent) + (ratification_deadline)(escrow_expiration) + (sophiatx_balance)(pending_fee) + (to_approved)(agent_approved)(disputed) ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::escrow_object, sophiatx::chain::escrow_index ) + diff --git a/libraries/chain/include/steem/chain/transaction_object.hpp b/libraries/chain/include/sophiatx/chain/transaction_object.hpp similarity index 75% rename from libraries/chain/include/steem/chain/transaction_object.hpp rename to libraries/chain/include/sophiatx/chain/transaction_object.hpp index ccb159c2..888766e9 100644 --- a/libraries/chain/include/steem/chain/transaction_object.hpp +++ b/libraries/chain/include/sophiatx/chain/transaction_object.hpp @@ -1,14 +1,14 @@ #pragma once -#include +#include -#include -#include +#include +#include #include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { - using steem::protocol::signed_transaction; + using sophiatx::protocol::signed_transaction; /** * The purpose of this object is to enable the detection of duplicate transactions. When a transaction is included @@ -48,19 +48,19 @@ namespace steem { namespace chain { allocator< transaction_object > > transaction_index; -} } // steem::chain +} } // sophiatx::chain -FC_REFLECT( steem::chain::transaction_object, (id)(packed_trx)(trx_id)(expiration) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::transaction_object, steem::chain::transaction_index ) +FC_REFLECT( sophiatx::chain::transaction_object, (id)(packed_trx)(trx_id)(expiration) ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::transaction_object, sophiatx::chain::transaction_index ) namespace helpers { template <> - class index_statistic_provider + class index_statistic_provider { public: - typedef steem::chain::transaction_index IndexType; - typedef typename steem::chain::transaction_object::t_packed_trx t_packed_trx; + typedef sophiatx::chain::transaction_index IndexType; + typedef typename sophiatx::chain::transaction_object::t_packed_trx t_packed_trx; index_statistic_info gather_statistics(const IndexType& index, bool onlyStaticInfo) const { diff --git a/libraries/chain/include/sophiatx/chain/util/asset.hpp b/libraries/chain/include/sophiatx/chain/util/asset.hpp new file mode 100644 index 00000000..e4837e75 --- /dev/null +++ b/libraries/chain/include/sophiatx/chain/util/asset.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include + +namespace sophiatx { namespace chain { namespace util { + +using sophiatx::protocol::asset; +using sophiatx::protocol::price; + +inline asset to_sbd( const price& p, const asset& sophiatx ) +{ + FC_ASSERT( sophiatx.symbol == SOPHIATX_SYMBOL ); + FC_ASSERT( p.quote.symbol == SOPHIATX_SYMBOL || p.base.symbol == SOPHIATX_SYMBOL ); + return sophiatx * p; +} + +inline asset to_sophiatx( const price& p, const asset& sbd ) +{ + FC_ASSERT( sbd.symbol == SBD1_SYMBOL || sbd.symbol == SBD2_SYMBOL || sbd.symbol == SBD3_SYMBOL || sbd.symbol == SBD4_SYMBOL || sbd.symbol == SBD5_SYMBOL ); + FC_ASSERT( p.quote.symbol == SOPHIATX_SYMBOL || p.base.symbol == SOPHIATX_SYMBOL ); + FC_ASSERT( p.quote.symbol == sbd.symbol || p.base.symbol == sbd.symbol); + return sbd * p; +} + +} } } diff --git a/libraries/chain/include/steem/chain/util/impacted.hpp b/libraries/chain/include/sophiatx/chain/util/impacted.hpp similarity index 55% rename from libraries/chain/include/steem/chain/util/impacted.hpp rename to libraries/chain/include/sophiatx/chain/util/impacted.hpp index fdc041a1..c61fa4f3 100644 --- a/libraries/chain/include/steem/chain/util/impacted.hpp +++ b/libraries/chain/include/sophiatx/chain/util/impacted.hpp @@ -1,22 +1,22 @@ #pragma once #include -#include -#include +#include +#include #include -namespace steem { namespace app { +namespace sophiatx { namespace app { using namespace fc; void operation_get_impacted_accounts( - const steem::protocol::operation& op, + const sophiatx::protocol::operation& op, fc::flat_set& result ); void transaction_get_impacted_accounts( - const steem::protocol::transaction& tx, + const sophiatx::protocol::transaction& tx, fc::flat_set& result ); -} } // steem::app +} } // sophiatx::app diff --git a/libraries/chain/include/steem/chain/util/signal.hpp b/libraries/chain/include/sophiatx/chain/util/signal.hpp similarity index 79% rename from libraries/chain/include/steem/chain/util/signal.hpp rename to libraries/chain/include/sophiatx/chain/util/signal.hpp index 111c3b37..15b1185a 100644 --- a/libraries/chain/include/steem/chain/util/signal.hpp +++ b/libraries/chain/include/sophiatx/chain/util/signal.hpp @@ -2,7 +2,7 @@ #include -namespace steem { namespace chain { namespace util { +namespace sophiatx { namespace chain { namespace util { inline void disconnect_signal( boost::signals2::connection& signal ) { diff --git a/libraries/chain/include/steem/chain/util/uint256.hpp b/libraries/chain/include/sophiatx/chain/util/uint256.hpp similarity index 61% rename from libraries/chain/include/steem/chain/util/uint256.hpp rename to libraries/chain/include/sophiatx/chain/util/uint256.hpp index f3c19a4f..623fab6a 100644 --- a/libraries/chain/include/steem/chain/util/uint256.hpp +++ b/libraries/chain/include/sophiatx/chain/util/uint256.hpp @@ -1,10 +1,10 @@ #pragma once -#include +#include #include -namespace steem { namespace chain { namespace util { +namespace sophiatx { namespace chain { namespace util { inline u256 to256( const fc::uint128& t ) { diff --git a/libraries/chain/include/steem/chain/witness_objects.hpp b/libraries/chain/include/sophiatx/chain/witness_objects.hpp similarity index 61% rename from libraries/chain/include/steem/chain/witness_objects.hpp rename to libraries/chain/include/sophiatx/chain/witness_objects.hpp index 62bfe73d..2a27760c 100644 --- a/libraries/chain/include/steem/chain/witness_objects.hpp +++ b/libraries/chain/include/sophiatx/chain/witness_objects.hpp @@ -1,48 +1,82 @@ #pragma once -#include -#include +#include +#include -#include +#include #include +#include -namespace steem { namespace chain { - using steem::protocol::digest_type; - using steem::protocol::public_key_type; - using steem::protocol::version; - using steem::protocol::hardfork_version; - using steem::protocol::price; - using steem::protocol::asset; - using steem::protocol::asset_symbol_type; +namespace sophiatx { namespace chain { +namespace bip = boost::interprocess; + using sophiatx::protocol::digest_type; + using sophiatx::protocol::public_key_type; + using sophiatx::protocol::version; + using sophiatx::protocol::hardfork_version; + using sophiatx::protocol::price; + using sophiatx::protocol::asset; + using sophiatx::protocol::asset_symbol_type; + using sophiatx::protocol::chain_properties; + + struct submitted_exchange_rate{ + price rate; + time_point_sec last_change; + }; + + +struct shared_chain_properties +{ /** - * Witnesses must vote on how to set certain chain properties to ensure a smooth - * and well functioning network. Any time @owner is in the active set of witnesses these - * properties will be used to control the blockchain configuration. + * This fee, paid in SOPHIATX, is converted into VESTING SHARES for the new account. Accounts + * without vesting shares cannot earn usage rations and therefore are powerless. This minimum + * fee requires all accounts to have some kind of commitment to the network that includes the + * ability to vote and make transactions. */ - struct chain_properties - { - /** - * This fee, paid in STEEM, is converted into VESTING SHARES for the new account. Accounts - * without vesting shares cannot earn usage rations and therefore are powerless. This minimum - * fee requires all accounts to have some kind of commitment to the network that includes the - * ability to vote and make transactions. - */ - asset account_creation_fee = - asset( STEEM_MIN_ACCOUNT_CREATION_FEE, STEEM_SYMBOL ); - - /** - * This witnesses vote for the maximum_block_size which is used by the network - * to tune rate limiting and capacity - */ - uint32_t maximum_block_size = STEEM_MIN_BLOCK_SIZE_LIMIT * 2; - uint16_t sbd_interest_rate = STEEM_DEFAULT_SBD_INTEREST_RATE; - uint32_t account_subsidy_limit = 0; - }; + asset account_creation_fee = asset( SOPHIATX_MIN_ACCOUNT_CREATION_FEE, SOPHIATX_SYMBOL ); /** + * This witnesses vote for the maximum_block_size which is used by the network + * to tune rate limiting and capacity + */ + uint32_t maximum_block_size = SOPHIATX_MIN_BLOCK_SIZE_LIMIT * 2; + + typedef bip::allocator< shared_chain_properties, bip::managed_mapped_file::segment_manager > allocator_type; + + typedef bip::allocator< std::pair< asset_symbol_type, price >, bip::managed_mapped_file::segment_manager > price_feed_allocator_type; + + typedef bip::flat_map< asset_symbol_type, price, std::less< asset_symbol_type >, price_feed_allocator_type > price_feeds_map; + + + price_feeds_map price_feeds; + + template< typename Allocator > + shared_chain_properties( const Allocator& alloc ) : + price_feeds( price_feed_allocator_type( alloc.get_segment_manager() ) ) {} + + shared_chain_properties& operator=( const chain_properties& a ){ + price_feeds.clear(); + maximum_block_size = a.maximum_block_size; + account_creation_fee = a.account_creation_fee; + for( const auto& item : a.price_feeds ) + price_feeds.insert( item ); + return *this; + }; + + operator chain_properties()const{ + chain_properties result; + result.maximum_block_size=maximum_block_size; + result.account_creation_fee = account_creation_fee; + for( const auto& item: price_feeds) + result.price_feeds.insert(item); + return result; + + } +}; + +/** * All witnesses with at least 1% net positive approval and * at least 2 weeks old are able to participate in block * production. @@ -56,13 +90,12 @@ namespace steem { namespace chain { { top19, timeshare, - miner, none }; template< typename Constructor, typename Allocator > witness_object( Constructor&& c, allocator< Allocator > a ) - :url( a ) + :url( a ), props( a ), submitted_exchange_rates( submitted_exchange_rates_allocator_type( a.get_segment_manager() ) ) { c( *this ); } @@ -77,22 +110,20 @@ namespace steem { namespace chain { uint64_t last_aslot = 0; uint64_t last_confirmed_block_num = 0; - /** - * Some witnesses have the job because they did a proof of work, - * this field indicates where they were in the POW order. After - * each round, the witness with the lowest pow_worker value greater - * than 0 is removed. - */ - uint64_t pow_worker = 0; - /** * This is the key used to sign blocks on behalf of this witness */ public_key_type signing_key; - chain_properties props; - price sbd_exchange_rate; - time_point_sec last_sbd_exchange_update; + shared_chain_properties props; + + typedef bip::allocator< witness_object, bip::managed_mapped_file::segment_manager > allocator_type; + + typedef bip::allocator< std::pair< asset_symbol_type, submitted_exchange_rate >, bip::managed_mapped_file::segment_manager > submitted_exchange_rates_allocator_type; + + typedef bip::flat_map< asset_symbol_type, submitted_exchange_rate, std::less< asset_symbol_type >, submitted_exchange_rates_allocator_type > submitted_exchange_rates_map; + + submitted_exchange_rates_map submitted_exchange_rates; /** @@ -131,15 +162,15 @@ namespace steem { namespace chain { fc::uint128 virtual_scheduled_time = fc::uint128::max_value(); ///@} - digest_type last_work; + bool stopped = false; /** - * This field represents the Steem blockchain version the witness is running. + * This field represents the SophiaTX blockchain version the witness is running. */ version running_version; hardfork_version hardfork_version_vote; - time_point_sec hardfork_time_vote = STEEM_GENESIS_TIME; + time_point_sec hardfork_time_vote = SOPHIATX_GENESIS_TIME; }; @@ -175,27 +206,24 @@ namespace steem { namespace chain { fc::uint128 current_virtual_time; uint32_t next_shuffle_block_num = 1; - fc::array< account_name_type, STEEM_MAX_WITNESSES > current_shuffled_witnesses; + fc::array< account_name_type, SOPHIATX_MAX_WITNESSES > current_shuffled_witnesses; uint8_t num_scheduled_witnesses = 1; - uint8_t top19_weight = 1; - uint8_t timeshare_weight = 5; - uint8_t miner_weight = 1; + uint8_t top19_weight = 21; + uint8_t timeshare_weight = 63; uint32_t witness_pay_normalization_factor = 25; chain_properties median_props; version majority_version; - uint8_t max_voted_witnesses = STEEM_MAX_VOTED_WITNESSES_HF0; - uint8_t max_miner_witnesses = STEEM_MAX_MINER_WITNESSES_HF0; - uint8_t max_runner_witnesses = STEEM_MAX_RUNNER_WITNESSES_HF0; - uint8_t hardfork_required_witnesses = STEEM_HARDFORK_REQUIRED_WITNESSES; + uint8_t max_voted_witnesses = SOPHIATX_MAX_VOTED_WITNESSES_HF0; + uint8_t max_runner_witnesses = SOPHIATX_MAX_RUNNER_WITNESSES_HF0; + uint8_t hardfork_required_witnesses = SOPHIATX_HARDFORK_REQUIRED_WITNESSES; }; struct by_vote_name; struct by_name; - struct by_pow; - struct by_work; + struct by_stopped; struct by_schedule_time; /** * @ingroup object_index @@ -204,9 +232,8 @@ namespace steem { namespace chain { witness_object, indexed_by< ordered_unique< tag< by_id >, member< witness_object, witness_id_type, &witness_object::id > >, - ordered_non_unique< tag< by_work >, member< witness_object, digest_type, &witness_object::last_work > >, + ordered_non_unique< tag< by_stopped >, member< witness_object, bool, &witness_object::stopped > >, ordered_unique< tag< by_name >, member< witness_object, account_name_type, &witness_object::owner > >, - ordered_non_unique< tag< by_pow >, member< witness_object, uint64_t, &witness_object::pow_worker > >, ordered_unique< tag< by_vote_name >, composite_key< witness_object, member< witness_object, share_type, &witness_object::votes >, @@ -258,39 +285,39 @@ namespace steem { namespace chain { } } -FC_REFLECT_ENUM( steem::chain::witness_object::witness_schedule_type, (top19)(timeshare)(miner)(none) ) +FC_REFLECT_ENUM( sophiatx::chain::witness_object::witness_schedule_type, (top19)(timeshare)(none) ) -FC_REFLECT( steem::chain::chain_properties, - (account_creation_fee) - (maximum_block_size) - (sbd_interest_rate) - (account_subsidy_limit) - ) +FC_REFLECT( sophiatx::chain::submitted_exchange_rate, (rate)(last_change)) -FC_REFLECT( steem::chain::witness_object, +FC_REFLECT( sophiatx::chain::witness_object, (id) (owner) (created) (url)(votes)(schedule)(virtual_last_update)(virtual_position)(virtual_scheduled_time)(total_missed) - (last_aslot)(last_confirmed_block_num)(pow_worker)(signing_key) + (last_aslot)(last_confirmed_block_num)(signing_key) (props) - (sbd_exchange_rate)(last_sbd_exchange_update) - (last_work) + (submitted_exchange_rates) + (stopped) (running_version) (hardfork_version_vote)(hardfork_time_vote) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::witness_object, steem::chain::witness_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::witness_object, sophiatx::chain::witness_index ) -FC_REFLECT( steem::chain::witness_vote_object, (id)(witness)(account) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::witness_vote_object, steem::chain::witness_vote_index ) +FC_REFLECT( sophiatx::chain::witness_vote_object, (id)(witness)(account) ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::witness_vote_object, sophiatx::chain::witness_vote_index ) -FC_REFLECT( steem::chain::witness_schedule_object, +FC_REFLECT( sophiatx::chain::witness_schedule_object, (id)(current_virtual_time)(next_shuffle_block_num)(current_shuffled_witnesses)(num_scheduled_witnesses) - (top19_weight)(timeshare_weight)(miner_weight)(witness_pay_normalization_factor) + (top19_weight)(timeshare_weight)(witness_pay_normalization_factor) (median_props)(majority_version) (max_voted_witnesses) - (max_miner_witnesses) (max_runner_witnesses) (hardfork_required_witnesses) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::witness_schedule_object, steem::chain::witness_schedule_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::chain::witness_schedule_object, sophiatx::chain::witness_schedule_index ) + +FC_REFLECT( sophiatx::chain::shared_chain_properties, + (account_creation_fee) + (maximum_block_size) + (price_feeds) +) diff --git a/libraries/chain/include/steem/chain/witness_schedule.hpp b/libraries/chain/include/sophiatx/chain/witness_schedule.hpp similarity index 77% rename from libraries/chain/include/steem/chain/witness_schedule.hpp rename to libraries/chain/include/sophiatx/chain/witness_schedule.hpp index b5b67882..bde12412 100644 --- a/libraries/chain/include/steem/chain/witness_schedule.hpp +++ b/libraries/chain/include/sophiatx/chain/witness_schedule.hpp @@ -1,6 +1,6 @@ #pragma once -namespace steem { namespace chain { +namespace sophiatx { namespace chain { class database; diff --git a/libraries/chain/include/steem/chain/comment_object.hpp b/libraries/chain/include/steem/chain/comment_object.hpp deleted file mode 100644 index 652ceee1..00000000 --- a/libraries/chain/include/steem/chain/comment_object.hpp +++ /dev/null @@ -1,345 +0,0 @@ -#pragma once - -#include -#include - -#include -#include - -#include - - -namespace steem { namespace chain { - - using protocol::beneficiary_route_type; - - struct strcmp_less - { - bool operator()( const shared_string& a, const shared_string& b )const - { - return less( a.c_str(), b.c_str() ); - } - - bool operator()( const shared_string& a, const string& b )const - { - return less( a.c_str(), b.c_str() ); - } - - bool operator()( const string& a, const shared_string& b )const - { - return less( a.c_str(), b.c_str() ); - } - - private: - inline bool less( const char* a, const char* b )const - { - return std::strcmp( a, b ) < 0; - } - }; - - class comment_object : public object < comment_object_type, comment_object > - { - comment_object() = delete; - - public: - template< typename Constructor, typename Allocator > - comment_object( Constructor&& c, allocator< Allocator > a ) - :category( a ), parent_permlink( a ), permlink( a ), beneficiaries( a ) - { - c( *this ); - } - - id_type id; - - shared_string category; - account_name_type parent_author; - shared_string parent_permlink; - account_name_type author; - shared_string permlink; - - time_point_sec last_update; - time_point_sec created; - time_point_sec active; ///< the last time this post was "touched" by voting or reply - time_point_sec last_payout; - - uint16_t depth = 0; ///< used to track max nested depth - uint32_t children = 0; ///< used to track the total number of children, grandchildren, etc... - - /// index on pending_payout for "things happning now... needs moderation" - /// TRENDING = UNCLAIMED + PENDING - share_type net_rshares; // reward is proportional to rshares^2, this is the sum of all votes (positive and negative) - share_type abs_rshares; /// this is used to track the total abs(weight) of votes for the purpose of calculating cashout_time - share_type vote_rshares; /// Total positive rshares from all votes. Used to calculate delta weights. Needed to handle vote changing and removal. - - share_type children_abs_rshares; /// this is used to calculate cashout time of a discussion. - time_point_sec cashout_time; /// 24 hours from the weighted average of vote time - time_point_sec max_cashout_time; - uint64_t total_vote_weight = 0; /// the total weight of voting rewards, used to calculate pro-rata share of curation payouts - - uint16_t reward_weight = 0; - - /** tracks the total payout this comment has received over time, measured in SBD */ - asset total_payout_value = asset(0, SBD_SYMBOL); - asset curator_payout_value = asset(0, SBD_SYMBOL); - asset beneficiary_payout_value = asset( 0, SBD_SYMBOL ); - - share_type author_rewards = 0; - - int32_t net_votes = 0; - - id_type root_comment; - - asset max_accepted_payout = asset( 1000000000, SBD_SYMBOL ); /// SBD value of the maximum payout this post will receive - uint16_t percent_steem_dollars = STEEM_100_PERCENT; /// the percent of Steem Dollars to key, unkept amounts will be received as Steem Power - bool allow_replies = true; /// allows a post to disable replies. - bool allow_votes = true; /// allows a post to receive votes; - bool allow_curation_rewards = true; - - typedef bip::vector< beneficiary_route_type, allocator< beneficiary_route_type > > t_beneficiaries; - t_beneficiaries beneficiaries; - }; - - class comment_content_object : public object< comment_content_object_type, comment_content_object > - { - comment_content_object() = delete; - - public: - template< typename Constructor, typename Allocator > - comment_content_object( Constructor&& c, allocator< Allocator > a ) : - title( a ), body( a ), json_metadata( a ) - { - c( *this ); - } - - id_type id; - - comment_id_type comment; - - shared_string title; - shared_string body; - shared_string json_metadata; - }; - - /** - * This index maintains the set of voter/comment pairs that have been used, voters cannot - * vote on the same comment more than once per payout period. - */ - class comment_vote_object : public object< comment_vote_object_type, comment_vote_object> - { - public: - template< typename Constructor, typename Allocator > - comment_vote_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - id_type id; - - account_id_type voter; - comment_id_type comment; - uint64_t weight = 0; ///< defines the score this vote receives, used by vote payout calc. 0 if a negative vote or changed votes. - int64_t rshares = 0; ///< The number of rshares this vote is responsible for - int16_t vote_percent = 0; ///< The percent weight of the vote - time_point_sec last_update; ///< The time of the last update of the vote - int8_t num_changes = 0; - }; - - struct by_comment_voter; - struct by_voter_comment; - struct by_comment_weight_voter; - struct by_voter_last_update; - typedef multi_index_container< - comment_vote_object, - indexed_by< - ordered_unique< tag< by_id >, member< comment_vote_object, comment_vote_id_type, &comment_vote_object::id > >, - ordered_unique< tag< by_comment_voter >, - composite_key< comment_vote_object, - member< comment_vote_object, comment_id_type, &comment_vote_object::comment>, - member< comment_vote_object, account_id_type, &comment_vote_object::voter> - > - >, - ordered_unique< tag< by_voter_comment >, - composite_key< comment_vote_object, - member< comment_vote_object, account_id_type, &comment_vote_object::voter>, - member< comment_vote_object, comment_id_type, &comment_vote_object::comment> - > - >, - ordered_unique< tag< by_voter_last_update >, - composite_key< comment_vote_object, - member< comment_vote_object, account_id_type, &comment_vote_object::voter>, - member< comment_vote_object, time_point_sec, &comment_vote_object::last_update>, - member< comment_vote_object, comment_id_type, &comment_vote_object::comment> - >, - composite_key_compare< std::less< account_id_type >, std::greater< time_point_sec >, std::less< comment_id_type > > - >, - ordered_unique< tag< by_comment_weight_voter >, - composite_key< comment_vote_object, - member< comment_vote_object, comment_id_type, &comment_vote_object::comment>, - member< comment_vote_object, uint64_t, &comment_vote_object::weight>, - member< comment_vote_object, account_id_type, &comment_vote_object::voter> - >, - composite_key_compare< std::less< comment_id_type >, std::greater< uint64_t >, std::less< account_id_type > > - > - >, - allocator< comment_vote_object > - > comment_vote_index; - - - struct by_cashout_time; /// cashout_time - struct by_permlink; /// author, perm - struct by_root; - struct by_parent; - struct by_last_update; /// parent_auth, last_update - struct by_author_last_update; - - /** - * @ingroup object_index - */ - typedef multi_index_container< - comment_object, - indexed_by< - /// CONSENSUS INDICES - used by evaluators - ordered_unique< tag< by_id >, member< comment_object, comment_id_type, &comment_object::id > >, - ordered_unique< tag< by_cashout_time >, - composite_key< comment_object, - member< comment_object, time_point_sec, &comment_object::cashout_time>, - member< comment_object, comment_id_type, &comment_object::id > - > - >, - ordered_unique< tag< by_permlink >, /// used by consensus to find posts referenced in ops - composite_key< comment_object, - member< comment_object, account_name_type, &comment_object::author >, - member< comment_object, shared_string, &comment_object::permlink > - >, - composite_key_compare< std::less< account_name_type >, strcmp_less > - >, - ordered_unique< tag< by_root >, - composite_key< comment_object, - member< comment_object, comment_id_type, &comment_object::root_comment >, - member< comment_object, comment_id_type, &comment_object::id > - > - >, - ordered_unique< tag< by_parent >, /// used by consensus to find posts referenced in ops - composite_key< comment_object, - member< comment_object, account_name_type, &comment_object::parent_author >, - member< comment_object, shared_string, &comment_object::parent_permlink >, - member< comment_object, comment_id_type, &comment_object::id > - >, - composite_key_compare< std::less< account_name_type >, strcmp_less, std::less< comment_id_type > > - > - /// NON_CONSENSUS INDICIES - used by APIs -#ifndef IS_LOW_MEM - , - ordered_unique< tag< by_last_update >, - composite_key< comment_object, - member< comment_object, account_name_type, &comment_object::parent_author >, - member< comment_object, time_point_sec, &comment_object::last_update >, - member< comment_object, comment_id_type, &comment_object::id > - >, - composite_key_compare< std::less< account_name_type >, std::greater< time_point_sec >, std::less< comment_id_type > > - >, - ordered_unique< tag< by_author_last_update >, - composite_key< comment_object, - member< comment_object, account_name_type, &comment_object::author >, - member< comment_object, time_point_sec, &comment_object::last_update >, - member< comment_object, comment_id_type, &comment_object::id > - >, - composite_key_compare< std::less< account_name_type >, std::greater< time_point_sec >, std::less< comment_id_type > > - > -#endif - >, - allocator< comment_object > - > comment_index; - - struct by_comment; - - typedef multi_index_container< - comment_content_object, - indexed_by< - ordered_unique< tag< by_id >, member< comment_content_object, comment_content_id_type, &comment_content_object::id > >, - ordered_unique< tag< by_comment >, member< comment_content_object, comment_id_type, &comment_content_object::comment > > - >, - allocator< comment_content_object > - > comment_content_index; - -} } // steem::chain - -FC_REFLECT( steem::chain::comment_object, - (id)(author)(permlink) - (category)(parent_author)(parent_permlink) - (last_update)(created)(active)(last_payout) - (depth)(children) - (net_rshares)(abs_rshares)(vote_rshares) - (children_abs_rshares)(cashout_time)(max_cashout_time) - (total_vote_weight)(reward_weight)(total_payout_value)(curator_payout_value)(beneficiary_payout_value)(author_rewards)(net_votes)(root_comment) - (max_accepted_payout)(percent_steem_dollars)(allow_replies)(allow_votes)(allow_curation_rewards) - (beneficiaries) - ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::comment_object, steem::chain::comment_index ) - -FC_REFLECT( steem::chain::comment_content_object, - (id)(comment)(title)(body)(json_metadata) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::comment_content_object, steem::chain::comment_content_index ) - -FC_REFLECT( steem::chain::comment_vote_object, - (id)(voter)(comment)(weight)(rshares)(vote_percent)(last_update)(num_changes) - ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::comment_vote_object, steem::chain::comment_vote_index ) - -namespace helpers -{ - using steem::chain::shared_string; - - template <> - class index_statistic_provider - { - public: - typedef steem::chain::comment_index IndexType; - typedef typename steem::chain::comment_object::t_beneficiaries t_beneficiaries; - - index_statistic_info gather_statistics(const IndexType& index, bool onlyStaticInfo) const - { - index_statistic_info info; - gather_index_static_data(index, &info); - - if(onlyStaticInfo == false) - { - for(const auto& o : index) - { - info._item_additional_allocation += o.category.capacity()*sizeof(shared_string::value_type); - info._item_additional_allocation += o.parent_permlink.capacity()*sizeof(shared_string::value_type); - info._item_additional_allocation += o.permlink.capacity()*sizeof(shared_string::value_type); - info._item_additional_allocation += o.beneficiaries.capacity()*sizeof(t_beneficiaries::value_type); - } - } - - return info; - } - }; - - template <> - class index_statistic_provider - { - public: - typedef steem::chain::comment_content_index IndexType; - - index_statistic_info gather_statistics(const IndexType& index, bool onlyStaticInfo) const - { - index_statistic_info info; - gather_index_static_data(index, &info); - - if(onlyStaticInfo == false) - { - for(const auto& o : index) - { - info._item_additional_allocation += o.title.capacity()*sizeof(shared_string::value_type); - info._item_additional_allocation += o.body.capacity()*sizeof(shared_string::value_type); - info._item_additional_allocation += o.json_metadata.capacity()*sizeof(shared_string::value_type); - } - } - - return info; - } - }; - -} /// namespace helpers diff --git a/libraries/chain/include/steem/chain/global_property_object.hpp b/libraries/chain/include/steem/chain/global_property_object.hpp deleted file mode 100644 index 25ba3a85..00000000 --- a/libraries/chain/include/steem/chain/global_property_object.hpp +++ /dev/null @@ -1,163 +0,0 @@ -#pragma once -#include - -#include - -#include - -namespace steem { namespace chain { - - using steem::protocol::asset; - using steem::protocol::price; - - /** - * @class dynamic_global_property_object - * @brief Maintains global state information - * @ingroup object - * @ingroup implementation - * - * This is an implementation detail. The values here are calculated during normal chain operations and reflect the - * current values of global blockchain properties. - */ - class dynamic_global_property_object : public object< dynamic_global_property_object_type, dynamic_global_property_object> - { - public: - template< typename Constructor, typename Allocator > - dynamic_global_property_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - dynamic_global_property_object(){} - - id_type id; - - uint32_t head_block_number = 0; - block_id_type head_block_id; - time_point_sec time; - account_name_type current_witness; - - - /** - * The total POW accumulated, aka the sum of num_pow_witness at the time new POW is added - */ - uint64_t total_pow = -1; - - /** - * The current count of how many pending POW witnesses there are, determines the difficulty - * of doing pow - */ - uint32_t num_pow_witnesses = 0; - - asset virtual_supply = asset( 0, STEEM_SYMBOL ); - asset current_supply = asset( 0, STEEM_SYMBOL ); - asset confidential_supply = asset( 0, STEEM_SYMBOL ); ///< total asset held in confidential balances - asset current_sbd_supply = asset( 0, SBD_SYMBOL ); - asset confidential_sbd_supply = asset( 0, SBD_SYMBOL ); ///< total asset held in confidential balances - asset total_vesting_fund_steem = asset( 0, STEEM_SYMBOL ); - asset total_vesting_shares = asset( 0, VESTS_SYMBOL ); - asset total_reward_fund_steem = asset( 0, STEEM_SYMBOL ); - fc::uint128 total_reward_shares2; ///< the running total of REWARD^2 - asset pending_rewarded_vesting_shares = asset( 0, VESTS_SYMBOL ); - asset pending_rewarded_vesting_steem = asset( 0, STEEM_SYMBOL ); - - price get_vesting_share_price() const - { - if ( total_vesting_fund_steem.amount == 0 || total_vesting_shares.amount == 0 ) - return price ( asset( 1000, STEEM_SYMBOL ), asset( 1000000, VESTS_SYMBOL ) ); - - return price( total_vesting_shares, total_vesting_fund_steem ); - } - - price get_reward_vesting_share_price() const - { - return price( total_vesting_shares + pending_rewarded_vesting_shares, - total_vesting_fund_steem + pending_rewarded_vesting_steem ); - } - - /** - * This property defines the interest rate that SBD deposits receive. - */ - uint16_t sbd_interest_rate = 0; - - uint16_t sbd_print_rate = STEEM_100_PERCENT; - - /** - * Maximum block size is decided by the set of active witnesses which change every round. - * Each witness posts what they think the maximum size should be as part of their witness - * properties, the median size is chosen to be the maximum block size for the round. - * - * @note the minimum value for maximum_block_size is defined by the protocol to prevent the - * network from getting stuck by witnesses attempting to set this too low. - */ - uint32_t maximum_block_size = 0; - - /** - * The current absolute slot number. Equal to the total - * number of slots since genesis. Also equal to the total - * number of missed slots plus head_block_number. - */ - uint64_t current_aslot = 0; - - /** - * used to compute witness participation. - */ - fc::uint128_t recent_slots_filled; - uint8_t participation_count = 0; ///< Divide by 128 to compute participation percentage - - uint32_t last_irreversible_block_num = 0; - - /** - * The number of votes regenerated per day. Any user voting slower than this rate will be - * "wasting" voting power through spillover; any user voting faster than this rate will have - * their votes reduced. - */ - uint32_t vote_power_reserve_rate = STEEM_INITIAL_VOTE_POWER_RATE; -#ifdef STEEM_ENABLE_SMT - asset smt_creation_fee = asset( 1000000, SBD_SYMBOL ); -#endif - }; - - typedef multi_index_container< - dynamic_global_property_object, - indexed_by< - ordered_unique< tag< by_id >, - member< dynamic_global_property_object, dynamic_global_property_object::id_type, &dynamic_global_property_object::id > > - >, - allocator< dynamic_global_property_object > - > dynamic_global_property_index; - -} } // steem::chain - -FC_REFLECT( steem::chain::dynamic_global_property_object, - (id) - (head_block_number) - (head_block_id) - (time) - (current_witness) - (total_pow) - (num_pow_witnesses) - (virtual_supply) - (current_supply) - (confidential_supply) - (current_sbd_supply) - (confidential_sbd_supply) - (total_vesting_fund_steem) - (total_vesting_shares) - (total_reward_fund_steem) - (total_reward_shares2) - (pending_rewarded_vesting_shares) - (pending_rewarded_vesting_steem) - (sbd_interest_rate) - (sbd_print_rate) - (maximum_block_size) - (current_aslot) - (recent_slots_filled) - (participation_count) - (last_irreversible_block_num) - (vote_power_reserve_rate) -#ifdef STEEM_ENABLE_SMT - (smt_creation_fee) -#endif - ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::dynamic_global_property_object, steem::chain::dynamic_global_property_index ) diff --git a/libraries/chain/include/steem/chain/smt_objects.hpp b/libraries/chain/include/steem/chain/smt_objects.hpp deleted file mode 100644 index 3f6e843d..00000000 --- a/libraries/chain/include/steem/chain/smt_objects.hpp +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - -#include -#include diff --git a/libraries/chain/include/steem/chain/steem_evaluator.hpp b/libraries/chain/include/steem/chain/steem_evaluator.hpp deleted file mode 100644 index 9f110330..00000000 --- a/libraries/chain/include/steem/chain/steem_evaluator.hpp +++ /dev/null @@ -1,67 +0,0 @@ -#pragma once - -#include - -#include - -namespace steem { namespace chain { - -using namespace steem::protocol; - -STEEM_DEFINE_EVALUATOR( account_create ) -STEEM_DEFINE_EVALUATOR( account_create_with_delegation ) -STEEM_DEFINE_EVALUATOR( account_update ) -STEEM_DEFINE_EVALUATOR( transfer ) -STEEM_DEFINE_EVALUATOR( transfer_to_vesting ) -STEEM_DEFINE_EVALUATOR( witness_update ) -STEEM_DEFINE_EVALUATOR( account_witness_vote ) -STEEM_DEFINE_EVALUATOR( account_witness_proxy ) -STEEM_DEFINE_EVALUATOR( withdraw_vesting ) -STEEM_DEFINE_EVALUATOR( set_withdraw_vesting_route ) -STEEM_DEFINE_EVALUATOR( comment ) -STEEM_DEFINE_EVALUATOR( comment_options ) -STEEM_DEFINE_EVALUATOR( delete_comment ) -STEEM_DEFINE_EVALUATOR( vote ) -STEEM_DEFINE_EVALUATOR( custom ) -STEEM_DEFINE_EVALUATOR( custom_json ) -STEEM_DEFINE_EVALUATOR( custom_binary ) -STEEM_DEFINE_EVALUATOR( pow ) -STEEM_DEFINE_EVALUATOR( pow2 ) -STEEM_DEFINE_EVALUATOR( feed_publish ) -STEEM_DEFINE_EVALUATOR( convert ) -STEEM_DEFINE_EVALUATOR( limit_order_create ) -STEEM_DEFINE_EVALUATOR( limit_order_cancel ) -STEEM_DEFINE_EVALUATOR( report_over_production ) -STEEM_DEFINE_EVALUATOR( limit_order_create2 ) -STEEM_DEFINE_EVALUATOR( escrow_transfer ) -STEEM_DEFINE_EVALUATOR( escrow_approve ) -STEEM_DEFINE_EVALUATOR( escrow_dispute ) -STEEM_DEFINE_EVALUATOR( escrow_release ) -STEEM_DEFINE_EVALUATOR( placeholder_a ) -STEEM_DEFINE_EVALUATOR( placeholder_b ) -STEEM_DEFINE_EVALUATOR( request_account_recovery ) -STEEM_DEFINE_EVALUATOR( recover_account ) -STEEM_DEFINE_EVALUATOR( change_recovery_account ) -STEEM_DEFINE_EVALUATOR( transfer_to_savings ) -STEEM_DEFINE_EVALUATOR( transfer_from_savings ) -STEEM_DEFINE_EVALUATOR( cancel_transfer_from_savings ) -STEEM_DEFINE_EVALUATOR( decline_voting_rights ) -STEEM_DEFINE_EVALUATOR( reset_account ) -STEEM_DEFINE_EVALUATOR( set_reset_account ) -STEEM_DEFINE_EVALUATOR( claim_reward_balance ) -#ifdef STEEM_ENABLE_SMT -STEEM_DEFINE_EVALUATOR( claim_reward_balance2 ) -#endif -STEEM_DEFINE_EVALUATOR( delegate_vesting_shares ) -STEEM_DEFINE_EVALUATOR( witness_set_properties ) -#ifdef STEEM_ENABLE_SMT -STEEM_DEFINE_EVALUATOR( smt_setup ) -STEEM_DEFINE_EVALUATOR( smt_cap_reveal ) -STEEM_DEFINE_EVALUATOR( smt_refund ) -STEEM_DEFINE_EVALUATOR( smt_setup_emissions ) -STEEM_DEFINE_EVALUATOR( smt_set_setup_parameters ) -STEEM_DEFINE_EVALUATOR( smt_set_runtime_parameters ) -STEEM_DEFINE_EVALUATOR( smt_create ) -#endif - -} } // steem::chain diff --git a/libraries/chain/include/steem/chain/steem_objects.hpp b/libraries/chain/include/steem/chain/steem_objects.hpp deleted file mode 100755 index d9d4e6b2..00000000 --- a/libraries/chain/include/steem/chain/steem_objects.hpp +++ /dev/null @@ -1,510 +0,0 @@ -#pragma once - -#include -#include -#include - -#include - -#include -#include - - -namespace steem { namespace chain { - - using steem::protocol::asset; - using steem::protocol::price; - using steem::protocol::asset_symbol_type; - - typedef protocol::fixed_string< 16 > reward_fund_name_type; - - /** - * This object is used to track pending requests to convert sbd to steem - */ - class convert_request_object : public object< convert_request_object_type, convert_request_object > - { - public: - template< typename Constructor, typename Allocator > - convert_request_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - convert_request_object(){} - - id_type id; - - account_name_type owner; - uint32_t requestid = 0; ///< id set by owner, the owner,requestid pair must be unique - asset amount; - time_point_sec conversion_date; ///< at this time the feed_history_median_price * amount - }; - - - class escrow_object : public object< escrow_object_type, escrow_object > - { - public: - template< typename Constructor, typename Allocator > - escrow_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - escrow_object(){} - - id_type id; - - uint32_t escrow_id = 20; - account_name_type from; - account_name_type to; - account_name_type agent; - time_point_sec ratification_deadline; - time_point_sec escrow_expiration; - asset sbd_balance; - asset steem_balance; - asset pending_fee; - bool to_approved = false; - bool agent_approved = false; - bool disputed = false; - - bool is_approved()const { return to_approved && agent_approved; } - }; - - - class savings_withdraw_object : public object< savings_withdraw_object_type, savings_withdraw_object > - { - savings_withdraw_object() = delete; - - public: - template< typename Constructor, typename Allocator > - savings_withdraw_object( Constructor&& c, allocator< Allocator > a ) - :memo( a ) - { - c( *this ); - } - - id_type id; - - account_name_type from; - account_name_type to; - shared_string memo; - uint32_t request_id = 0; - asset amount; - time_point_sec complete; - }; - - - /** - * If last_update is greater than 1 week, then volume gets reset to 0 - * - * When a user is a maker, their volume increases - * When a user is a taker, their volume decreases - * - * Every 1000 blocks, the account that has the highest volume_weight() is paid the maximum of - * 1000 STEEM or 1000 * virtual_supply / (100*blocks_per_year) aka 10 * virtual_supply / blocks_per_year - * - * After being paid volume gets reset to 0 - */ - class liquidity_reward_balance_object : public object< liquidity_reward_balance_object_type, liquidity_reward_balance_object > - { - public: - template< typename Constructor, typename Allocator > - liquidity_reward_balance_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - liquidity_reward_balance_object(){} - - id_type id; - - account_id_type owner; - int64_t steem_volume = 0; - int64_t sbd_volume = 0; - uint128_t weight = 0; - - time_point_sec last_update = fc::time_point_sec::min(); /// used to decay negative liquidity balances. block num - - /// this is the sort index - uint128_t volume_weight()const - { - return steem_volume * sbd_volume * is_positive(); - } - - uint128_t min_volume_weight()const - { - return std::min(steem_volume,sbd_volume) * is_positive(); - } - - void update_weight( bool hf9 ) - { - weight = hf9 ? min_volume_weight() : volume_weight(); - } - - inline int is_positive()const - { - return ( steem_volume > 0 && sbd_volume > 0 ) ? 1 : 0; - } - }; - - - /** - * This object gets updated once per hour, on the hour - */ - class feed_history_object : public object< feed_history_object_type, feed_history_object > - { - feed_history_object() = delete; - - public: - template< typename Constructor, typename Allocator > - feed_history_object( Constructor&& c, allocator< Allocator > a ) - :price_history( a.get_segment_manager() ) - { - c( *this ); - } - - id_type id; - - price current_median_history; ///< the current median of the price history, used as the base for convert operations - bip::deque< price, allocator< price > > price_history; ///< tracks this last week of median_feed one per hour - }; - - - /** - * @brief an offer to sell a amount of a asset at a specified exchange rate by a certain time - * @ingroup object - * @ingroup protocol - * @ingroup market - * - * This limit_order_objects are indexed by @ref expiration and is automatically deleted on the first block after expiration. - */ - class limit_order_object : public object< limit_order_object_type, limit_order_object > - { - public: - template< typename Constructor, typename Allocator > - limit_order_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - limit_order_object(){} - - id_type id; - - time_point_sec created; - time_point_sec expiration; - account_name_type seller; - uint32_t orderid = 0; - share_type for_sale; ///< asset id is sell_price.base.symbol - price sell_price; - - pair< asset_symbol_type, asset_symbol_type > get_market()const - { - return sell_price.base.symbol < sell_price.quote.symbol ? - std::make_pair( sell_price.base.symbol, sell_price.quote.symbol ) : - std::make_pair( sell_price.quote.symbol, sell_price.base.symbol ); - } - - asset amount_for_sale()const { return asset( for_sale, sell_price.base.symbol ); } - asset amount_to_receive()const { return amount_for_sale() * sell_price; } - }; - - - /** - * @breif a route to send withdrawn vesting shares. - */ - class withdraw_vesting_route_object : public object< withdraw_vesting_route_object_type, withdraw_vesting_route_object > - { - public: - template< typename Constructor, typename Allocator > - withdraw_vesting_route_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - withdraw_vesting_route_object(){} - - id_type id; - - account_name_type from_account; - account_name_type to_account; - uint16_t percent = 0; - bool auto_vest = false; - }; - - - class decline_voting_rights_request_object : public object< decline_voting_rights_request_object_type, decline_voting_rights_request_object > - { - public: - template< typename Constructor, typename Allocator > - decline_voting_rights_request_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - decline_voting_rights_request_object(){} - - id_type id; - - account_name_type account; - time_point_sec effective_date; - }; - - class reward_fund_object : public object< reward_fund_object_type, reward_fund_object > - { - public: - template< typename Constructor, typename Allocator > - reward_fund_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - reward_fund_object() {} - - reward_fund_id_type id; - reward_fund_name_type name; - asset reward_balance = asset( 0, STEEM_SYMBOL ); - fc::uint128_t recent_claims = 0; - time_point_sec last_update; - uint128_t content_constant = 0; - uint16_t percent_curation_rewards = 0; - uint16_t percent_content_rewards = 0; - protocol::curve_id author_reward_curve; - protocol::curve_id curation_reward_curve; - }; - - struct by_price; - struct by_expiration; - struct by_account; - typedef multi_index_container< - limit_order_object, - indexed_by< - ordered_unique< tag< by_id >, member< limit_order_object, limit_order_id_type, &limit_order_object::id > >, - ordered_non_unique< tag< by_expiration >, member< limit_order_object, time_point_sec, &limit_order_object::expiration > >, - ordered_unique< tag< by_price >, - composite_key< limit_order_object, - member< limit_order_object, price, &limit_order_object::sell_price >, - member< limit_order_object, limit_order_id_type, &limit_order_object::id > - >, - composite_key_compare< std::greater< price >, std::less< limit_order_id_type > > - >, - ordered_unique< tag< by_account >, - composite_key< limit_order_object, - member< limit_order_object, account_name_type, &limit_order_object::seller >, - member< limit_order_object, uint32_t, &limit_order_object::orderid > - > - > - >, - allocator< limit_order_object > - > limit_order_index; - - struct by_owner; - struct by_conversion_date; - typedef multi_index_container< - convert_request_object, - indexed_by< - ordered_unique< tag< by_id >, member< convert_request_object, convert_request_id_type, &convert_request_object::id > >, - ordered_unique< tag< by_conversion_date >, - composite_key< convert_request_object, - member< convert_request_object, time_point_sec, &convert_request_object::conversion_date >, - member< convert_request_object, convert_request_id_type, &convert_request_object::id > - > - >, - ordered_unique< tag< by_owner >, - composite_key< convert_request_object, - member< convert_request_object, account_name_type, &convert_request_object::owner >, - member< convert_request_object, uint32_t, &convert_request_object::requestid > - > - > - >, - allocator< convert_request_object > - > convert_request_index; - - struct by_owner; - struct by_volume_weight; - - typedef multi_index_container< - liquidity_reward_balance_object, - indexed_by< - ordered_unique< tag< by_id >, member< liquidity_reward_balance_object, liquidity_reward_balance_id_type, &liquidity_reward_balance_object::id > >, - ordered_unique< tag< by_owner >, member< liquidity_reward_balance_object, account_id_type, &liquidity_reward_balance_object::owner > >, - ordered_unique< tag< by_volume_weight >, - composite_key< liquidity_reward_balance_object, - member< liquidity_reward_balance_object, fc::uint128, &liquidity_reward_balance_object::weight >, - member< liquidity_reward_balance_object, account_id_type, &liquidity_reward_balance_object::owner > - >, - composite_key_compare< std::greater< fc::uint128 >, std::less< account_id_type > > - > - >, - allocator< liquidity_reward_balance_object > - > liquidity_reward_balance_index; - - typedef multi_index_container< - feed_history_object, - indexed_by< - ordered_unique< tag< by_id >, member< feed_history_object, feed_history_id_type, &feed_history_object::id > > - >, - allocator< feed_history_object > - > feed_history_index; - - struct by_withdraw_route; - struct by_destination; - typedef multi_index_container< - withdraw_vesting_route_object, - indexed_by< - ordered_unique< tag< by_id >, member< withdraw_vesting_route_object, withdraw_vesting_route_id_type, &withdraw_vesting_route_object::id > >, - ordered_unique< tag< by_withdraw_route >, - composite_key< withdraw_vesting_route_object, - member< withdraw_vesting_route_object, account_name_type, &withdraw_vesting_route_object::from_account >, - member< withdraw_vesting_route_object, account_name_type, &withdraw_vesting_route_object::to_account > - >, - composite_key_compare< std::less< account_name_type >, std::less< account_name_type > > - >, - ordered_unique< tag< by_destination >, - composite_key< withdraw_vesting_route_object, - member< withdraw_vesting_route_object, account_name_type, &withdraw_vesting_route_object::to_account >, - member< withdraw_vesting_route_object, withdraw_vesting_route_id_type, &withdraw_vesting_route_object::id > - > - > - >, - allocator< withdraw_vesting_route_object > - > withdraw_vesting_route_index; - - struct by_from_id; - struct by_ratification_deadline; - typedef multi_index_container< - escrow_object, - indexed_by< - ordered_unique< tag< by_id >, member< escrow_object, escrow_id_type, &escrow_object::id > >, - ordered_unique< tag< by_from_id >, - composite_key< escrow_object, - member< escrow_object, account_name_type, &escrow_object::from >, - member< escrow_object, uint32_t, &escrow_object::escrow_id > - > - >, - ordered_unique< tag< by_ratification_deadline >, - composite_key< escrow_object, - const_mem_fun< escrow_object, bool, &escrow_object::is_approved >, - member< escrow_object, time_point_sec, &escrow_object::ratification_deadline >, - member< escrow_object, escrow_id_type, &escrow_object::id > - >, - composite_key_compare< std::less< bool >, std::less< time_point_sec >, std::less< escrow_id_type > > - > - >, - allocator< escrow_object > - > escrow_index; - - struct by_from_rid; - struct by_to_complete; - struct by_complete_from_rid; - typedef multi_index_container< - savings_withdraw_object, - indexed_by< - ordered_unique< tag< by_id >, member< savings_withdraw_object, savings_withdraw_id_type, &savings_withdraw_object::id > >, - ordered_unique< tag< by_from_rid >, - composite_key< savings_withdraw_object, - member< savings_withdraw_object, account_name_type, &savings_withdraw_object::from >, - member< savings_withdraw_object, uint32_t, &savings_withdraw_object::request_id > - > - >, - ordered_unique< tag< by_complete_from_rid >, - composite_key< savings_withdraw_object, - member< savings_withdraw_object, time_point_sec, &savings_withdraw_object::complete >, - member< savings_withdraw_object, account_name_type, &savings_withdraw_object::from >, - member< savings_withdraw_object, uint32_t, &savings_withdraw_object::request_id > - > - >, - ordered_unique< tag< by_to_complete >, - composite_key< savings_withdraw_object, - member< savings_withdraw_object, account_name_type, &savings_withdraw_object::to >, - member< savings_withdraw_object, time_point_sec, &savings_withdraw_object::complete >, - member< savings_withdraw_object, savings_withdraw_id_type, &savings_withdraw_object::id > - > - > - >, - allocator< savings_withdraw_object > - > savings_withdraw_index; - - struct by_account; - struct by_effective_date; - typedef multi_index_container< - decline_voting_rights_request_object, - indexed_by< - ordered_unique< tag< by_id >, member< decline_voting_rights_request_object, decline_voting_rights_request_id_type, &decline_voting_rights_request_object::id > >, - ordered_unique< tag< by_account >, - member< decline_voting_rights_request_object, account_name_type, &decline_voting_rights_request_object::account > - >, - ordered_unique< tag< by_effective_date >, - composite_key< decline_voting_rights_request_object, - member< decline_voting_rights_request_object, time_point_sec, &decline_voting_rights_request_object::effective_date >, - member< decline_voting_rights_request_object, account_name_type, &decline_voting_rights_request_object::account > - >, - composite_key_compare< std::less< time_point_sec >, std::less< account_name_type > > - > - >, - allocator< decline_voting_rights_request_object > - > decline_voting_rights_request_index; - - struct by_name; - typedef multi_index_container< - reward_fund_object, - indexed_by< - ordered_unique< tag< by_id >, member< reward_fund_object, reward_fund_id_type, &reward_fund_object::id > >, - ordered_unique< tag< by_name >, member< reward_fund_object, reward_fund_name_type, &reward_fund_object::name > > - >, - allocator< reward_fund_object > - > reward_fund_index; - -} } // steem::chain - -#include -#include - -FC_REFLECT( steem::chain::limit_order_object, - (id)(created)(expiration)(seller)(orderid)(for_sale)(sell_price) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::limit_order_object, steem::chain::limit_order_index ) - -FC_REFLECT( steem::chain::feed_history_object, - (id)(current_median_history)(price_history) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::feed_history_object, steem::chain::feed_history_index ) - -FC_REFLECT( steem::chain::convert_request_object, - (id)(owner)(requestid)(amount)(conversion_date) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::convert_request_object, steem::chain::convert_request_index ) - -FC_REFLECT( steem::chain::liquidity_reward_balance_object, - (id)(owner)(steem_volume)(sbd_volume)(weight)(last_update) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::liquidity_reward_balance_object, steem::chain::liquidity_reward_balance_index ) - -FC_REFLECT( steem::chain::withdraw_vesting_route_object, - (id)(from_account)(to_account)(percent)(auto_vest) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::withdraw_vesting_route_object, steem::chain::withdraw_vesting_route_index ) - -FC_REFLECT( steem::chain::savings_withdraw_object, - (id)(from)(to)(memo)(request_id)(amount)(complete) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::savings_withdraw_object, steem::chain::savings_withdraw_index ) - -FC_REFLECT( steem::chain::escrow_object, - (id)(escrow_id)(from)(to)(agent) - (ratification_deadline)(escrow_expiration) - (sbd_balance)(steem_balance)(pending_fee) - (to_approved)(agent_approved)(disputed) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::escrow_object, steem::chain::escrow_index ) - -FC_REFLECT( steem::chain::decline_voting_rights_request_object, - (id)(account)(effective_date) ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::decline_voting_rights_request_object, steem::chain::decline_voting_rights_request_index ) - -FC_REFLECT( steem::chain::reward_fund_object, - (id) - (name) - (reward_balance) - (recent_claims) - (last_update) - (content_constant) - (percent_curation_rewards) - (percent_content_rewards) - (author_reward_curve) - (curation_reward_curve) - ) -CHAINBASE_SET_INDEX_TYPE( steem::chain::reward_fund_object, steem::chain::reward_fund_index ) diff --git a/libraries/chain/include/steem/chain/util/asset.hpp b/libraries/chain/include/steem/chain/util/asset.hpp deleted file mode 100644 index 8bd8bb29..00000000 --- a/libraries/chain/include/steem/chain/util/asset.hpp +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include - -namespace steem { namespace chain { namespace util { - -using steem::protocol::asset; -using steem::protocol::price; - -inline asset to_sbd( const price& p, const asset& steem ) -{ - FC_ASSERT( steem.symbol == STEEM_SYMBOL ); - if( p.is_null() ) - return asset( 0, SBD_SYMBOL ); - return steem * p; -} - -inline asset to_steem( const price& p, const asset& sbd ) -{ - FC_ASSERT( sbd.symbol == SBD_SYMBOL ); - if( p.is_null() ) - return asset( 0, STEEM_SYMBOL ); - return sbd * p; -} - -} } } diff --git a/libraries/chain/include/steem/chain/util/reward.hpp b/libraries/chain/include/steem/chain/util/reward.hpp deleted file mode 100644 index 2dd3aad8..00000000 --- a/libraries/chain/include/steem/chain/util/reward.hpp +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once - -#include -#include - -#include -#include -#include -#include - -#include - -#include - -namespace steem { namespace chain { namespace util { - -using steem::protocol::asset; -using steem::protocol::price; -using steem::protocol::share_type; - -using fc::uint128_t; - -struct comment_reward_context -{ - share_type rshares; - uint16_t reward_weight = 0; - asset max_sbd; - uint128_t total_reward_shares2; - asset total_reward_fund_steem; - price current_steem_price; - protocol::curve_id reward_curve = protocol::quadratic; - uint128_t content_constant = STEEM_CONTENT_CONSTANT_HF0; -}; - -uint64_t get_rshare_reward( const comment_reward_context& ctx ); - -inline uint128_t get_content_constant_s() -{ - return STEEM_CONTENT_CONSTANT_HF0; // looking good for posters -} - -uint128_t evaluate_reward_curve( const uint128_t& rshares, const protocol::curve_id& curve = protocol::quadratic, const uint128_t& content_constant = STEEM_CONTENT_CONSTANT_HF0 ); - -inline bool is_comment_payout_dust( const price& p, uint64_t steem_payout ) -{ - return to_sbd( p, asset( steem_payout, STEEM_SYMBOL ) ) < STEEM_MIN_PAYOUT_SBD; -} - -} } } // steem::chain::util - -FC_REFLECT( steem::chain::util::comment_reward_context, - (rshares) - (reward_weight) - (max_sbd) - (total_reward_shares2) - (total_reward_fund_steem) - (current_steem_price) - (reward_curve) - (content_constant) - ) diff --git a/libraries/chain/shared_authority.cpp b/libraries/chain/shared_authority.cpp index 0978b8b7..f387fc9a 100644 --- a/libraries/chain/shared_authority.cpp +++ b/libraries/chain/shared_authority.cpp @@ -1,6 +1,6 @@ -#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { shared_authority::operator authority()const { @@ -90,4 +90,4 @@ bool operator == ( const shared_authority& a, const authority& b ) return authority( a ) == b; } -} } // steem::chain +} } // sophiatx::chain diff --git a/libraries/chain/smt_evaluator.cpp b/libraries/chain/smt_evaluator.cpp index a8ba3e53..8be6519b 100644 --- a/libraries/chain/smt_evaluator.cpp +++ b/libraries/chain/smt_evaluator.cpp @@ -1,16 +1,15 @@ -#include -#include -#include -#include +#include +#include +#include +#include -#include -#include +#include -#include -#ifdef STEEM_ENABLE_SMT -namespace steem { namespace chain { +#include +#ifdef SOPHIATX_ENABLE_SMT +namespace sophiatx { namespace chain { namespace { @@ -67,7 +66,7 @@ const smt_token_object& common_pre_setup_evaluation( void smt_create_evaluator::do_apply( const smt_create_operation& o ) { - FC_ASSERT( _db.has_hardfork( STEEM_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", STEEM_SMT_HARDFORK) ); + FC_ASSERT( _db.has_hardfork( SOPHIATX_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", SOPHIATX_SMT_HARDFORK) ); const dynamic_global_property_object& dgpo = _db.get_dynamic_global_properties(); // Check that SMT with given nai has not been created already. @@ -78,10 +77,10 @@ void smt_create_evaluator::do_apply( const smt_create_operation& o ) asset effective_elevation_fee; - FC_ASSERT( dgpo.smt_creation_fee.symbol == STEEM_SYMBOL || dgpo.smt_creation_fee.symbol == SBD_SYMBOL, + FC_ASSERT( dgpo.smt_creation_fee.symbol == SOPHIATX_SYMBOL || dgpo.smt_creation_fee.symbol == SBD_SYMBOL, "Unexpected internal error - wrong symbol ${s} of SMT creation fee.", ("s", dgpo.smt_creation_fee.symbol) ); - FC_ASSERT( o.smt_creation_fee.symbol == STEEM_SYMBOL || o.smt_creation_fee.symbol == SBD_SYMBOL, - "Asset fee must be STEEM or SBD, was ${s}", ("s", o.smt_creation_fee.symbol) ); + FC_ASSERT( o.smt_creation_fee.symbol == SOPHIATX_SYMBOL || o.smt_creation_fee.symbol == SBD_SYMBOL, + "Asset fee must be SOPHIATX or SBD, was ${s}", ("s", o.smt_creation_fee.symbol) ); if( o.smt_creation_fee.symbol == dgpo.smt_creation_fee.symbol ) { effective_elevation_fee = dgpo.smt_creation_fee; @@ -90,13 +89,13 @@ void smt_create_evaluator::do_apply( const smt_create_operation& o ) { const auto& fhistory = _db.get_feed_history(); FC_ASSERT( !fhistory.current_median_history.is_null(), "Cannot pay the fee using SBD because there is no price feed." ); - if( o.smt_creation_fee.symbol == STEEM_SYMBOL ) + if( o.smt_creation_fee.symbol == SOPHIATX_SYMBOL ) { effective_elevation_fee = _db.to_sbd( o.smt_creation_fee ); } else { - effective_elevation_fee = _db.to_steem( o.smt_creation_fee ); + effective_elevation_fee = _db.to_sophiatx( o.smt_creation_fee ); } } @@ -106,7 +105,7 @@ void smt_create_evaluator::do_apply( const smt_create_operation& o ) "Account does not have sufficient funds for specified fee of ${of}", ("of", o.smt_creation_fee) ); _db.adjust_balance( o.control_account , -o.smt_creation_fee ); - _db.adjust_balance( STEEM_NULL_ACCOUNT, o.smt_creation_fee ); + _db.adjust_balance( SOPHIATX_NULL_ACCOUNT, o.smt_creation_fee ); // Create SMT object common to both liquid and vesting variants of SMT. _db.create< smt_token_object >( [&]( smt_token_object& token ) @@ -119,25 +118,25 @@ void smt_create_evaluator::do_apply( const smt_create_operation& o ) void smt_setup_evaluator::do_apply( const smt_setup_operation& o ) { - FC_ASSERT( _db.has_hardfork( STEEM_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", STEEM_SMT_HARDFORK) ); + FC_ASSERT( _db.has_hardfork( SOPHIATX_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", SOPHIATX_SMT_HARDFORK) ); // TODO: Check whether some impostor tries to hijack SMT operation. } void smt_cap_reveal_evaluator::do_apply( const smt_cap_reveal_operation& o ) { - FC_ASSERT( _db.has_hardfork( STEEM_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", STEEM_SMT_HARDFORK) ); + FC_ASSERT( _db.has_hardfork( SOPHIATX_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", SOPHIATX_SMT_HARDFORK) ); // TODO: Check whether some impostor tries to hijack SMT operation. } void smt_refund_evaluator::do_apply( const smt_refund_operation& o ) { - FC_ASSERT( _db.has_hardfork( STEEM_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", STEEM_SMT_HARDFORK) ); + FC_ASSERT( _db.has_hardfork( SOPHIATX_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", SOPHIATX_SMT_HARDFORK) ); // TODO: Check whether some impostor tries to hijack SMT operation. } void smt_setup_emissions_evaluator::do_apply( const smt_setup_emissions_operation& o ) { - FC_ASSERT( _db.has_hardfork( STEEM_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", STEEM_SMT_HARDFORK) ); + FC_ASSERT( _db.has_hardfork( SOPHIATX_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", SOPHIATX_SMT_HARDFORK) ); const smt_token_object& smt = common_pre_setup_evaluation(_db, o.symbol, o.control_account); @@ -162,7 +161,7 @@ void smt_setup_emissions_evaluator::do_apply( const smt_setup_emissions_operatio void smt_set_setup_parameters_evaluator::do_apply( const smt_set_setup_parameters_operation& o ) { - FC_ASSERT( _db.has_hardfork( STEEM_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", STEEM_SMT_HARDFORK) ); + FC_ASSERT( _db.has_hardfork( SOPHIATX_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", SOPHIATX_SMT_HARDFORK) ); const smt_token_object& smt_token = common_pre_setup_evaluation(_db, o.symbol, o.control_account); @@ -217,7 +216,7 @@ struct smt_set_runtime_parameters_evaluator_visitor void smt_set_runtime_parameters_evaluator::do_apply( const smt_set_runtime_parameters_operation& o ) { - FC_ASSERT( _db.has_hardfork( STEEM_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", STEEM_SMT_HARDFORK) ); + FC_ASSERT( _db.has_hardfork( SOPHIATX_SMT_HARDFORK ), "SMT functionality not enabled until hardfork ${hf}", ("hf", SOPHIATX_SMT_HARDFORK) ); const smt_token_object& _token = common_pre_setup_evaluation(_db, o.symbol, o.control_account); @@ -228,4 +227,4 @@ void smt_set_runtime_parameters_evaluator::do_apply( const smt_set_runtime_param } } } -#endif \ No newline at end of file +#endif diff --git a/libraries/chain/sophiatx_evaluator.cpp b/libraries/chain/sophiatx_evaluator.cpp new file mode 100644 index 00000000..c2dd3301 --- /dev/null +++ b/libraries/chain/sophiatx_evaluator.cpp @@ -0,0 +1,1221 @@ +#include +#include +#include +#include +#include +#include +#include + +#include + +#ifndef IS_LOW_MEM +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-compare" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#include +#pragma GCC diagnostic pop +#pragma GCC diagnostic pop +#include + +using boost::locale::conv::utf_to_utf; + +std::wstring utf8_to_wstring(const std::string& str) +{ + return utf_to_utf(str.c_str(), str.c_str() + str.size()); +} + +std::string wstring_to_utf8(const std::wstring& str) +{ + return utf_to_utf(str.c_str(), str.c_str() + str.size()); +} + +#endif + +#include +#include + +#include +#include + +namespace sophiatx { namespace chain { + using fc::uint128_t; + +struct strcmp_equal +{ + bool operator()( const shared_string& a, const string& b ) + { + return a.size() == b.size() || std::strcmp( a.c_str(), b.c_str() ) == 0; + } +}; + + + +void witness_stop_evaluator::do_apply( const witness_stop_operation& o ){ + _db.get_account( o.owner ); + const auto& by_witness_name_idx = _db.get_index< witness_index >().indices().get< by_name >(); + auto wit_itr = by_witness_name_idx.find( o.owner ); + if( wit_itr != by_witness_name_idx.end() ) + { + _db.modify(*wit_itr, [&]( witness_object& w ) { + w.signing_key = public_key_type(); + }); + } +} + +void witness_update_evaluator::do_apply( const witness_update_operation& o ) +{ + const account_object& acn = _db.get_account( o.owner ); // verify owner exists + const auto& gpo = _db.get_dynamic_global_properties(); + FC_ASSERT( acn.vesting_shares >= gpo.witness_required_vesting , "witness requires at least ${a} of vested balance", ("a", gpo.witness_required_vesting) ); + + if( _db.is_producing() ) + { + FC_ASSERT( o.props.maximum_block_size <= SOPHIATX_MAX_BLOCK_SIZE ); + } + + const auto& by_witness_name_idx = _db.get_index< witness_index >().indices().get< by_name >(); + auto wit_itr = by_witness_name_idx.find( o.owner ); + if( wit_itr != by_witness_name_idx.end() ) + { + _db.modify( *wit_itr, [&]( witness_object& w ) { + from_string( w.url, o.url ); + w.signing_key = o.block_signing_key; + if(o.block_signing_key == public_key_type()) + w.stopped = true; + w.props = o.props; + w.props.price_feeds.clear(); + + if(o.props.price_feeds.size()){ + time_point_sec last_sbd_exchange_update = _db.head_block_time(); + for(auto r:o.props.price_feeds){ + price new_rate; + //ensure that base is always in SPHTX + if(r.second.base.symbol == SOPHIATX_SYMBOL) + new_rate = r.second; + else { + new_rate.base = r.second.quote; + new_rate.quote = r.second.base; + } + w.submitted_exchange_rates[r.first].rate = new_rate; + w.submitted_exchange_rates[r.first].last_change = last_sbd_exchange_update; + } + } + }); + } + else + { + _db.create< witness_object >( [&]( witness_object& w ) { + w.owner = o.owner; + from_string( w.url, o.url ); + w.signing_key = o.block_signing_key; + w.created = _db.head_block_time(); + w.props = o.props; + w.props.price_feeds.clear(); + }); + } +} + +void witness_set_properties_evaluator::do_apply( const witness_set_properties_operation& o ) +{ + const auto& witness = _db.get< witness_object, by_name >( o.owner ); // verifies witness exists; + + // Capture old properties. This allows only updating the object once. + chain_properties props; + public_key_type signing_key; + time_point_sec last_sbd_exchange_update; + string url; + + bool account_creation_changed = false; + bool max_block_changed = false; + bool key_changed = false; + bool sbd_exchange_changed = false; + bool url_changed = false; + std::vector new_rates; + + auto itr = o.props.find( "key" ); + + // This existence of 'key' is checked in witness_set_properties_operation::validate + fc::raw::unpack_from_vector( itr->second, signing_key ); + FC_ASSERT( signing_key == witness.signing_key, "'key' does not match witness signing key.", + ("key", signing_key)("signing_key", witness.signing_key) ); + + itr = o.props.find( "account_creation_fee" ); + if( itr != o.props.end() ) + { + fc::raw::unpack_from_vector( itr->second, props.account_creation_fee ); + account_creation_changed = true; + } + + itr = o.props.find( "maximum_block_size" ); + if( itr != o.props.end() ) + { + fc::raw::unpack_from_vector( itr->second, props.maximum_block_size ); + FC_ASSERT(props.maximum_block_size <= SOPHIATX_MAX_BLOCK_SIZE); + max_block_changed = true; + } + + itr = o.props.find( "new_signing_key" ); + if( itr != o.props.end() ) + { + fc::raw::unpack_from_vector( itr->second, signing_key ); + key_changed = true; + } + + itr = o.props.find( "exchange_rates" ); + if( itr != o.props.end() ) + { + std::vector exchange_rates; + fc::raw::unpack_from_vector( itr->second, exchange_rates ); + for(const auto & rate: exchange_rates){ + price new_rate; + //ensure that base is always in SPHTX + if(rate.base.symbol == SOPHIATX_SYMBOL) + new_rate = rate; + else { + new_rate.base = rate.quote; + new_rate.quote = rate.base; + } + new_rates.push_back(new_rate); + + } + last_sbd_exchange_update = _db.head_block_time(); + sbd_exchange_changed = true; + } + + itr = o.props.find( "url" ); + if( itr != o.props.end() ) + { + fc::raw::unpack_from_vector< std::string >( itr->second, url ); + url_changed = true; + } + + _db.modify( witness, [&]( witness_object& w ) + { + if( account_creation_changed ) + w.props.account_creation_fee = props.account_creation_fee; + + if( max_block_changed ) + w.props.maximum_block_size = props.maximum_block_size; + + if( key_changed ) + w.signing_key = signing_key; + + if( sbd_exchange_changed ) + { + for( auto r: new_rates){ + w.submitted_exchange_rates[r.quote.symbol].rate = r; + w.submitted_exchange_rates[r.quote.symbol].last_change = last_sbd_exchange_update; + } + } + + if( url_changed ) + from_string( w.url, url ); + }); +} + +void verify_authority_accounts_exist( + const database& db, + const authority& auth, + const account_name_type& auth_account, + authority::classification auth_class) +{ + for( const std::pair< account_name_type, weight_type >& aw : auth.account_auths ) + { + const account_object* a = db.find_account( aw.first ); + FC_ASSERT( a != nullptr, "New ${ac} authority on account ${aa} references non-existing account ${aref}", + ("aref", aw.first)("ac", auth_class)("aa", auth_account) ); + } +} + +void account_create_evaluator::do_apply( const account_create_operation& o ) +{ + const auto& creator = _db.get_account( o.creator ); + + std::string new_account_name_s = sophiatx::protocol::make_random_fixed_string(o.name_seed); + account_name_type new_account_name = new_account_name_s; + + const auto& props = _db.get_dynamic_global_properties(); + + FC_ASSERT( creator.balance >= o.fee, "Insufficient balance to create account.", ( "creator.balance", creator.balance )( "required", o.fee ) ); + + const witness_schedule_object& wso = _db.get_witness_schedule_object(); + asset required_fee = asset( wso.median_props.account_creation_fee.amount, SOPHIATX_SYMBOL ); + FC_ASSERT( o.fee >= required_fee, "Insufficient Fee: ${f} required, ${p} provided.", + ("f", required_fee ) ("p", o.fee) ); + + asset excess_fee = o.fee - required_fee; + verify_authority_accounts_exist( _db, o.owner, new_account_name, authority::owner ); + verify_authority_accounts_exist( _db, o.active, new_account_name, authority::active ); + + + const auto& new_account = _db.create< account_object >( [&]( account_object& acc ) + { + acc.name = new_account_name; + acc.memo_key = o.memo_key; + acc.created = props.time; + acc.mined = false; + + acc.recovery_account = o.creator; + + #ifndef IS_LOW_MEM + from_string( acc.json_metadata, o.json_metadata ); + #endif + }); + + + _db.create< account_authority_object >( [&]( account_authority_object& auth ) + { + auth.account = new_account_name; + auth.owner = o.owner; + auth.active = o.active; + auth.last_owner_update = fc::time_point_sec::min(); + }); + + if( required_fee.amount > 0 ) + _db.pay_fee( creator, required_fee ); + + if( excess_fee.amount > 0 ){ + _db.adjust_balance(new_account, excess_fee); + _db.adjust_balance(creator, -excess_fee); + } +} + + +void account_update_evaluator::do_apply( const account_update_operation& o ) +{ + FC_ASSERT( o.account != SOPHIATX_TEMP_ACCOUNT, "Cannot update temp account." ); + + const auto& account = _db.get_account( o.account ); + const auto& account_auth = _db.get< account_authority_object, by_account >( o.account ); + + if( o.owner ) + { +#ifndef IS_TEST_NET + FC_ASSERT( _db.head_block_time() - account_auth.last_owner_update > SOPHIATX_OWNER_UPDATE_LIMIT, "Owner authority can only be updated once an hour." ); +#endif + + verify_authority_accounts_exist( _db, *o.owner, o.account, authority::owner ); + + _db.update_owner_authority( account, *o.owner ); + } + if( o.active ) + verify_authority_accounts_exist( _db, *o.active, o.account, authority::active ); + + _db.modify( account, [&]( account_object& acc ) + { + if( o.memo_key != public_key_type() ) + acc.memo_key = o.memo_key; + + acc.last_account_update = _db.head_block_time(); + + #ifndef IS_LOW_MEM + if ( o.json_metadata.size() > 0 ) + from_string( acc.json_metadata, o.json_metadata ); + #endif + }); + + if( o.active ) + { + _db.modify( account_auth, [&]( account_authority_object& auth) + { + if( o.active ) auth.active = *o.active; + }); + } + +} + +void account_delete_evaluator::do_apply(const account_delete_operation& o) +{ + try + { + FC_ASSERT( o.account != SOPHIATX_TEMP_ACCOUNT, "Cannot update temp account." ); + + const auto& account = _db.get_account( o.account ); + const auto& account_auth = _db.get< account_authority_object, by_account >( o.account ); + + authority a(1, public_key_type(), 1); + +#ifndef IS_TEST_NET + FC_ASSERT( _db.head_block_time() - account_auth.last_owner_update > SOPHIATX_OWNER_UPDATE_LIMIT, "Owner authority can only be updated once an hour." ); +#endif + _db.update_owner_authority( account, a ); + + _db.modify( account, [&]( account_object& acc ) + { + + acc.memo_key = public_key_type(); + acc.last_account_update = _db.head_block_time(); + +#ifndef IS_LOW_MEM + from_string( acc.json_metadata, "{\"deleted_account\"}" ); +#endif + }); + + _db.modify( account_auth, [&]( account_authority_object& auth) + { + auth.active = a; + }); + + + } + FC_CAPTURE_AND_RETHROW( (o) ) +} + +void escrow_transfer_evaluator::do_apply( const escrow_transfer_operation& o ) +{ + try + { + const auto& from_account = _db.get_account(o.from); + _db.get_account(o.to); + _db.get_account(o.agent); + + FC_ASSERT( o.ratification_deadline > _db.head_block_time(), "The escorw ratification deadline must be after head block time." ); + FC_ASSERT( o.escrow_expiration > _db.head_block_time(), "The escrow expiration must be after head block time." ); + + asset sophiatx_spent = o.sophiatx_amount; + if( o.escrow_fee.symbol == SOPHIATX_SYMBOL ) + sophiatx_spent += o.escrow_fee; + + + FC_ASSERT( from_account.balance >= sophiatx_spent, "Account cannot cover SOPHIATX costs of escrow. Required: ${r} Available: ${a}", ("r",sophiatx_spent)("a",from_account.balance) ); + + _db.adjust_balance( from_account, -sophiatx_spent ); + + _db.create([&]( escrow_object& esc ) + { + esc.escrow_id = o.escrow_id; + esc.from = o.from; + esc.to = o.to; + esc.agent = o.agent; + esc.ratification_deadline = o.ratification_deadline; + esc.escrow_expiration = o.escrow_expiration; + esc.sophiatx_balance = o.sophiatx_amount; + esc.pending_fee = o.escrow_fee; + }); + } + FC_CAPTURE_AND_RETHROW( (o) ) +} + +void escrow_approve_evaluator::do_apply( const escrow_approve_operation& o ) +{ + try + { + + const auto& escrow = _db.get_escrow( o.from, o.escrow_id ); + + FC_ASSERT( escrow.to == o.to, "Operation 'to' (${o}) does not match escrow 'to' (${e}).", ("o", o.to)("e", escrow.to) ); + FC_ASSERT( escrow.agent == o.agent, "Operation 'agent' (${a}) does not match escrow 'agent' (${e}).", ("o", o.agent)("e", escrow.agent) ); + FC_ASSERT( escrow.ratification_deadline >= _db.head_block_time(), "The escrow ratification deadline has passed. Escrow can no longer be ratified." ); + + bool reject_escrow = !o.approve; + + if( o.who == o.to ) + { + FC_ASSERT( !escrow.to_approved, "Account 'to' (${t}) has already approved the escrow.", ("t", o.to) ); + + if( !reject_escrow ) + { + _db.modify( escrow, [&]( escrow_object& esc ) + { + esc.to_approved = true; + }); + } + } + if( o.who == o.agent ) + { + FC_ASSERT( !escrow.agent_approved, "Account 'agent' (${a}) has already approved the escrow.", ("a", o.agent) ); + + if( !reject_escrow ) + { + _db.modify( escrow, [&]( escrow_object& esc ) + { + esc.agent_approved = true; + }); + } + } + + if( reject_escrow ) + { + _db.adjust_balance( o.from, escrow.sophiatx_balance ); + _db.adjust_balance( o.from, escrow.pending_fee ); + + _db.remove( escrow ); + } + else if( escrow.to_approved && escrow.agent_approved ) + { + _db.adjust_balance( o.agent, escrow.pending_fee ); + + _db.modify( escrow, [&]( escrow_object& esc ) + { + esc.pending_fee.amount = 0; + }); + } + } + FC_CAPTURE_AND_RETHROW( (o) ) +} + +void escrow_dispute_evaluator::do_apply( const escrow_dispute_operation& o ) +{ + try + { + _db.get_account( o.from ); // Verify from account exists + + const auto& e = _db.get_escrow( o.from, o.escrow_id ); + FC_ASSERT( _db.head_block_time() < e.escrow_expiration, "Disputing the escrow must happen before expiration." ); + FC_ASSERT( e.to_approved && e.agent_approved, "The escrow must be approved by all parties before a dispute can be raised." ); + FC_ASSERT( !e.disputed, "The escrow is already under dispute." ); + FC_ASSERT( e.to == o.to, "Operation 'to' (${o}) does not match escrow 'to' (${e}).", ("o", o.to)("e", e.to) ); + FC_ASSERT( e.agent == o.agent, "Operation 'agent' (${a}) does not match escrow 'agent' (${e}).", ("o", o.agent)("e", e.agent) ); + + _db.modify( e, [&]( escrow_object& esc ) + { + esc.disputed = true; + }); + } + FC_CAPTURE_AND_RETHROW( (o) ) +} + +void escrow_release_evaluator::do_apply( const escrow_release_operation& o ) +{ + try + { + _db.get_account(o.from); // Verify from account exists + + const auto& e = _db.get_escrow( o.from, o.escrow_id ); + FC_ASSERT( e.sophiatx_balance >= o.sophiatx_amount, "Release amount exceeds escrow balance. Amount: ${a}, Balance: ${b}", ("a", o.sophiatx_amount)("b", e.sophiatx_balance) ); + FC_ASSERT( e.to == o.to, "Operation 'to' (${o}) does not match escrow 'to' (${e}).", ("o", o.to)("e", e.to) ); + FC_ASSERT( e.agent == o.agent, "Operation 'agent' (${a}) does not match escrow 'agent' (${e}).", ("o", o.agent)("e", e.agent) ); + FC_ASSERT( o.receiver == e.from || o.receiver == e.to, "Funds must be released to 'from' (${f}) or 'to' (${t})", ("f", e.from)("t", e.to) ); + FC_ASSERT( e.to_approved && e.agent_approved, "Funds cannot be released prior to escrow approval." ); + + // If there is a dispute regardless of expiration, the agent can release funds to either party + if( e.disputed ) + { + FC_ASSERT( o.who == e.agent, "Only 'agent' (${a}) can release funds in a disputed escrow.", ("a", e.agent) ); + } + else + { + FC_ASSERT( o.who == e.from || o.who == e.to, "Only 'from' (${f}) and 'to' (${t}) can release funds from a non-disputed escrow", ("f", e.from)("t", e.to) ); + + if( e.escrow_expiration > _db.head_block_time() ) + { + // If there is no dispute and escrow has not expired, either party can release funds to the other. + if( o.who == e.from ) + { + FC_ASSERT( o.receiver == e.to, "Only 'from' (${f}) can release funds to 'to' (${t}).", ("f", e.from)("t", e.to) ); + } + else if( o.who == e.to ) + { + FC_ASSERT( o.receiver == e.from, "Only 'to' (${t}) can release funds to 'from' (${t}).", ("f", e.from)("t", e.to) ); + } + } + } + // If escrow expires and there is no dispute, either party can release funds to either party. + + _db.adjust_balance( o.receiver, o.sophiatx_amount ); + + _db.modify( e, [&]( escrow_object& esc ) + { + esc.sophiatx_balance -= o.sophiatx_amount; + }); + + if( e.sophiatx_balance.amount == 0 ) + { + _db.remove( e ); + } + } + FC_CAPTURE_AND_RETHROW( (o) ) +} + +void transfer_evaluator::do_apply( const transfer_operation& o ) +{ + FC_ASSERT( _db.get_balance( o.from, o.amount.symbol ) >= o.amount, "Account does not have sufficient funds for transfer." ); + _db.adjust_balance( o.from, -o.amount ); + _db.adjust_balance( o.to, o.amount ); +} + +void transfer_to_vesting_evaluator::do_apply( const transfer_to_vesting_operation& o ) +{ + const auto& from_account = _db.get_account(o.from); + const auto& to_account = o.to.size() ? _db.get_account(o.to) : from_account; + + FC_ASSERT( _db.get_balance( from_account, SOPHIATX_SYMBOL) >= o.amount, "Account does not have sufficient SOPHIATX for transfer." ); + + if( from_account.id == to_account.id ) + _db.vest( from_account, o.amount.amount ); + else { + _db.adjust_balance(o.from, -o.amount); + _db.adjust_balance(o.to, o.amount); + _db.vest(to_account, o.amount.amount); + } + +} + +void withdraw_vesting_evaluator::do_apply( const withdraw_vesting_operation& o ) +{ + const auto& account = _db.get_account( o.account ); + const auto& gpo = _db.get_dynamic_global_properties(); + + FC_ASSERT( account.vesting_shares >= asset( 0, VESTS_SYMBOL ), "Account does not have sufficient SophiaTX Power for withdraw." ); + FC_ASSERT( account.vesting_shares >= o.vesting_shares, "Account does not have sufficient SophiaTX Power for withdraw." ); + + + if( o.vesting_shares.amount == 0 ) + { + FC_ASSERT( account.vesting_withdraw_rate.amount != 0, "This operation would not change the vesting withdraw rate." ); + + _db.modify( account, [&]( account_object& a ) { + a.vesting_withdraw_rate = asset( 0, VESTS_SYMBOL ); + a.next_vesting_withdrawal = time_point_sec::maximum(); + a.to_withdraw = 0; + a.withdrawn = 0; + }); + } + else + { + int vesting_withdraw_intervals = SOPHIATX_VESTING_WITHDRAW_INTERVALS; /// 13 weeks = 1 quarter of a year + + _db.modify( account, [&]( account_object& a ) + { + auto new_vesting_withdraw_rate = asset( o.vesting_shares.amount / vesting_withdraw_intervals, VESTS_SYMBOL ); + + if( new_vesting_withdraw_rate.amount == 0 ) + new_vesting_withdraw_rate.amount = 1; + + FC_ASSERT( account.vesting_withdraw_rate != new_vesting_withdraw_rate, "This operation would not change the vesting withdraw rate." ); + + a.vesting_withdraw_rate = new_vesting_withdraw_rate; + a.next_vesting_withdrawal = _db.head_block_time() + fc::seconds(SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS); + a.to_withdraw = o.vesting_shares.amount; + a.withdrawn = 0; + + auto wit = _db.find_witness( o. account ); + FC_ASSERT( wit == nullptr || wit->signing_key == public_key_type() || a.vesting_shares.amount - a.to_withdraw >= gpo.witness_required_vesting.amount ); + }); + } +} + + +void account_witness_proxy_evaluator::do_apply( const account_witness_proxy_operation& o ) +{ + const auto& account = _db.get_account( o.account ); + FC_ASSERT( account.proxy != o.proxy, "Proxy must change." ); + + /// remove all current votes + std::array delta; + delta[0] = -account.total_balance(); + for( int i = 0; i < SOPHIATX_MAX_PROXY_RECURSION_DEPTH; ++i ) + delta[i+1] = -account.proxied_vsf_votes[i]; + _db.adjust_proxied_witness_votes( account, delta ); + + if( o.proxy.size() ) { + const auto& new_proxy = _db.get_account( o.proxy ); + flat_set proxy_chain( { account.id, new_proxy.id } ); + proxy_chain.reserve( SOPHIATX_MAX_PROXY_RECURSION_DEPTH + 1 ); + + /// check for proxy loops and fail to update the proxy if it would create a loop + auto cprox = &new_proxy; + while( cprox->proxy.size() != 0 ) { + const auto next_proxy = _db.get_account( cprox->proxy ); + FC_ASSERT( proxy_chain.insert( next_proxy.id ).second, "This proxy would create a proxy loop." ); + cprox = &next_proxy; + FC_ASSERT( proxy_chain.size() <= SOPHIATX_MAX_PROXY_RECURSION_DEPTH, "Proxy chain is too long." ); + } + + /// clear all individual vote records + _db.clear_witness_votes( account ); + + _db.modify( account, [&]( account_object& a ) { + a.proxy = o.proxy; + }); + + /// add all new votes + for( int i = 0; i <= SOPHIATX_MAX_PROXY_RECURSION_DEPTH; ++i ) + delta[i] = -delta[i]; + _db.adjust_proxied_witness_votes( account, delta ); + } else { /// we are clearing the proxy which means we simply update the account + _db.modify( account, [&]( account_object& a ) { + a.proxy = o.proxy; + }); + } +} + + +void account_witness_vote_evaluator::do_apply( const account_witness_vote_operation& o ) +{ + const auto& voter = _db.get_account( o.account ); + FC_ASSERT( voter.proxy.size() == 0, "A proxy is currently set, please clear the proxy before voting for a witness." ); + + const auto& witness = _db.get_witness( o.witness ); + + const auto& by_account_witness_idx = _db.get_index< witness_vote_index >().indices().get< by_account_witness >(); + auto itr = by_account_witness_idx.find( boost::make_tuple( voter.name, witness.owner ) ); + + if( itr == by_account_witness_idx.end() ) { + FC_ASSERT( o.approve, "Vote doesn't exist, user must indicate a desire to approve witness." ); + + FC_ASSERT( voter.witnesses_voted_for < SOPHIATX_MAX_ACCOUNT_WITNESS_VOTES, "Account has voted for too many witnesses." ); // TODO: Remove after hardfork 2 + + _db.create( [&]( witness_vote_object& v ) { + v.witness = witness.owner; + v.account = voter.name; + }); + + _db.adjust_witness_vote( witness, voter.witness_vote_weight() ); + + _db.modify( voter, [&]( account_object& a ) { + a.witnesses_voted_for++; + }); + + } else { + FC_ASSERT( !o.approve, "Vote currently exists, user must indicate a desire to reject witness." ); + + _db.adjust_witness_vote( witness, -voter.witness_vote_weight() ); + + _db.modify( voter, [&]( account_object& a ) { + a.witnesses_voted_for--; + }); + _db.remove( *itr ); + } +} + +void custom_evaluator::do_apply( const custom_operation& o ){} + +void custom_json_evaluator::do_apply( const custom_json_operation& o ) +{ + database& d = db(); + + //TODO: move this to plugin + const auto& send_idx = d.get_index< custom_content_index >().indices().get< by_sender >(); + auto send_itr = send_idx.lower_bound( boost::make_tuple( o.sender, o.app_id, uint64_t(-1) ) ); + uint64_t sender_sequence = 1; + if( send_itr != send_idx.end() && send_itr->sender == o.sender && send_itr->app_id == o.app_id ) + sender_sequence = send_itr->sender_sequence + 1; + + for(const auto&r: o.recipients) { + uint64_t receiver_sequence = 1; + const auto& recv_idx = d.get_index< custom_content_index >().indices().get< by_recipient >(); + auto recv_itr = recv_idx.lower_bound( boost::make_tuple( r, o.app_id, uint64_t(-1) ) ); + if( recv_itr != recv_idx.end() && recv_itr->recipient == r && recv_itr->app_id == o.app_id ) + receiver_sequence = recv_itr->recipient_sequence + 1; + + d.create([ & ](custom_content_object &c) { + c.binary = false; + c.json = o.json; + c.app_id = o.app_id; + c.sender = o.sender; + c.recipient = r; + c.all_recipients = o.recipients; + c.sender_sequence = sender_sequence; + c.recipient_sequence = receiver_sequence; + c.received = d.head_block_time(); + }); + } + + std::shared_ptr< custom_operation_interpreter > eval = d.get_custom_json_evaluator( o.app_id ); + if( !eval ) + return; + + try + { + eval->apply( o ); + } + catch( const fc::exception& e ) + { + if( d.is_producing() ) + throw e; + } + catch(...) + { + elog( "Unexpected exception applying custom json evaluator." ); + } +} + + +void custom_binary_evaluator::do_apply( const custom_binary_operation& o ) +{ + database& d = db(); + + //TODO: move this to plugin + const auto& send_idx = d.get_index< custom_content_index >().indices().get< by_sender >(); + auto send_itr = send_idx.lower_bound( boost::make_tuple( o.sender, o.app_id, uint64_t(-1) ) ); + uint64_t sender_sequence = 1; + if( send_itr != send_idx.end() && send_itr->sender == o.sender && send_itr->app_id == o.app_id ) + sender_sequence = send_itr->sender_sequence + 1; + + for(const auto&r: o.recipients) { + uint64_t receiver_sequence = 1; + const auto& recv_idx = d.get_index< custom_content_index >().indices().get< by_recipient >(); + auto recv_itr = recv_idx.lower_bound( boost::make_tuple( r, o.app_id, uint64_t(-1) ) ); + if( recv_itr != recv_idx.end() && recv_itr->recipient == r && recv_itr->app_id == o.app_id ) + receiver_sequence = recv_itr->recipient_sequence + 1; + + d.create([ & ](custom_content_object &c) { + c.binary = true; + c.data = o.data; + c.app_id = o.app_id; + c.sender = o.sender; + c.recipient = r; + c.all_recipients = o.recipients; + c.sender_sequence = sender_sequence; + c.recipient_sequence = receiver_sequence; + c.received = d.head_block_time(); + }); + } + + std::shared_ptr< custom_operation_interpreter > eval = d.get_custom_json_evaluator( o.app_id ); + if( !eval ) + return; + + try + { + eval->apply( o ); + } + catch( const fc::exception& e ) + { + if( d.is_producing() ) + throw e; + } + catch(...) + { + elog( "Unexpected exception applying custom json evaluator." ); + } +} + + +void feed_publish_evaluator::do_apply( const feed_publish_operation& o ) +{ + price new_rate; + //ensure that base is always in SPHTX + if(o.exchange_rate.base.symbol == SOPHIATX_SYMBOL) + new_rate = o.exchange_rate; + else { + new_rate.base = o.exchange_rate.quote; + new_rate.quote = o.exchange_rate.base; + } + const auto& witness = _db.get_witness( o.publisher ); + _db.modify( witness, [&]( witness_object& w ) + { + w.submitted_exchange_rates[new_rate.quote.symbol].last_change = _db.head_block_time(); + w.submitted_exchange_rates[new_rate.quote.symbol].rate = new_rate; + }); +} + +void request_account_recovery_evaluator::do_apply( const request_account_recovery_operation& o ) +{ + const auto& account_to_recover = _db.get_account( o.account_to_recover ); + + if ( account_to_recover.recovery_account.length() ) // Make sure recovery matches expected recovery account + FC_ASSERT( account_to_recover.recovery_account == o.recovery_account, "Cannot recover an account that does not have you as there recovery partner." ); + else // Empty string recovery account defaults to top witness + FC_ASSERT( _db.get_index< witness_index >().indices().get< by_vote_name >().begin()->owner == o.recovery_account, "Top witness must recover an account with no recovery partner." ); + + const auto& recovery_request_idx = _db.get_index< account_recovery_request_index >().indices().get< by_account >(); + auto request = recovery_request_idx.find( o.account_to_recover ); + + if( request == recovery_request_idx.end() ) // New Request + { + FC_ASSERT( !o.new_owner_authority.is_impossible(), "Cannot recover using an impossible authority." ); + FC_ASSERT( o.new_owner_authority.weight_threshold, "Cannot recover using an open authority." ); + + // Check accounts in the new authority exist + for( auto& a : o.new_owner_authority.account_auths ) + { + _db.get_account( a.first ); + } + + _db.create< account_recovery_request_object >( [&]( account_recovery_request_object& req ) + { + req.account_to_recover = o.account_to_recover; + req.new_owner_authority = o.new_owner_authority; + req.expires = _db.head_block_time() + SOPHIATX_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD; + }); + } + else if( o.new_owner_authority.weight_threshold == 0 ) // Cancel Request if authority is open + { + _db.remove( *request ); + } + else // Change Request + { + FC_ASSERT( !o.new_owner_authority.is_impossible(), "Cannot recover using an impossible authority." ); + + // Check accounts in the new authority exist + + for( auto& a : o.new_owner_authority.account_auths ) + { + _db.get_account( a.first ); + } + + _db.modify( *request, [&]( account_recovery_request_object& req ) + { + req.new_owner_authority = o.new_owner_authority; + req.expires = _db.head_block_time() + SOPHIATX_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD; + }); + } +} + +void recover_account_evaluator::do_apply( const recover_account_operation& o ) +{ + const auto& account = _db.get_account( o.account_to_recover ); + + FC_ASSERT( _db.head_block_time() - account.last_account_recovery > SOPHIATX_OWNER_UPDATE_LIMIT, "Owner authority can only be updated once an hour." ); + + const auto& recovery_request_idx = _db.get_index< account_recovery_request_index >().indices().get< by_account >(); + auto request = recovery_request_idx.find( o.account_to_recover ); + + FC_ASSERT( request != recovery_request_idx.end(), "There are no active recovery requests for this account." ); + FC_ASSERT( request->new_owner_authority == o.new_owner_authority, "New owner authority does not match recovery request." ); + + const auto& recent_auth_idx = _db.get_index< owner_authority_history_index >().indices().get< by_account >(); + auto hist = recent_auth_idx.lower_bound( o.account_to_recover ); + bool found = false; + + while( hist != recent_auth_idx.end() && hist->account == o.account_to_recover && !found ) + { + found = hist->previous_owner_authority == o.recent_owner_authority; + if( found ) break; + ++hist; + } + + FC_ASSERT( found, "Recent authority not found in authority history." ); + + _db.remove( *request ); // Remove first, update_owner_authority may invalidate iterator + _db.update_owner_authority( account, o.new_owner_authority ); + _db.modify( account, [&]( account_object& a ) + { + a.last_account_recovery = _db.head_block_time(); + }); +} + +void change_recovery_account_evaluator::do_apply( const change_recovery_account_operation& o ) +{ + _db.get_account( o.new_recovery_account ); // Simply validate account exists + const auto& account_to_recover = _db.get_account( o.account_to_recover ); + + const auto& change_recovery_idx = _db.get_index< change_recovery_account_request_index >().indices().get< by_account >(); + auto request = change_recovery_idx.find( o.account_to_recover ); + + if( request == change_recovery_idx.end() ) // New request + { + _db.create< change_recovery_account_request_object >( [&]( change_recovery_account_request_object& req ) + { + req.account_to_recover = o.account_to_recover; + req.recovery_account = o.new_recovery_account; + req.effective_on = _db.head_block_time() + SOPHIATX_OWNER_AUTH_RECOVERY_PERIOD; + }); + } + else if( account_to_recover.recovery_account != o.new_recovery_account ) // Change existing request + { + _db.modify( *request, [&]( change_recovery_account_request_object& req ) + { + req.recovery_account = o.new_recovery_account; + req.effective_on = _db.head_block_time() + SOPHIATX_OWNER_AUTH_RECOVERY_PERIOD; + }); + } + else // Request exists and changing back to current recovery account + { + _db.remove( *request ); + } +} + +void reset_account_evaluator::do_apply( const reset_account_operation& op ) +{ + //FC_ASSERT( false, "Reset Account Operation is currently disabled." ); Temporarily enabled. + + const auto& acnt = _db.get_account( op.account_to_reset ); + FC_ASSERT( acnt.reset_account == op.reset_account, "Reset account does not match reset account on account." ); + + _db.update_owner_authority( acnt, op.new_owner_authority ); + +} + +void set_reset_account_evaluator::do_apply( const set_reset_account_operation& op ) +{ + //FC_ASSERT( false, "Set Reset Account Operation is currently disabled." ); + + const auto& acnt = _db.get_account( op.account ); + _db.get_account( op.reset_account ); + + FC_ASSERT( acnt.reset_account == op.current_reset_account, "Current reset account does not match reset account on account." ); + FC_ASSERT( acnt.reset_account != op.reset_account, "Reset account must change" ); + + _db.modify( acnt, [&]( account_object& a ) + { + a.reset_account = op.reset_account; + }); + +} + +void application_create_evaluator::do_apply( const application_create_operation& o ) +{ + _db.get_account( o.author ); + + _db.create< application_object >( [&]( application_object& app ) + { + app.name = o.name; + app.author = o.author; + app.price_param = static_cast(o.price_param); + app.url = o.url; +#ifndef IS_LOW_MEM + from_string( app.metadata, o.metadata ); +#endif + }); +} + + +void application_update_evaluator::do_apply( const application_update_operation& o ) +{ + const auto& application = _db.get_application( o.name ); + + if(o.new_author) + { + _db.get_account(*o.new_author); + const auto& account_auth = _db.get< account_authority_object, by_account >( *o.new_author ); + } + + FC_ASSERT(application.author == o.author, "Provided author is not this applcation author" ); + + _db.modify( application, [&]( application_object& app ) + { + if(o.new_author) + app.author = *o.new_author; + + if(o.price_param) + app.price_param = static_cast(*o.price_param); + +#ifndef IS_LOW_MEM + if ( o.metadata.size() > 0 ) + from_string( app.metadata, o.metadata ); + + if ( o.url.size() > 0 ) + app.url = o.url; +#endif + }); + + +} + +void application_delete_evaluator::do_apply( const application_delete_operation& o ) +{ + const auto& application = _db.get_application( o.name ); + + FC_ASSERT(application.author == o.author, "Provided author is not this applcation author" ); + + const auto& app_buy_idx = _db.get_index< application_buying_index >().indices().get< by_app_id >(); + auto itr = app_buy_idx.lower_bound( application.id ); + while( itr != app_buy_idx.end() && itr->app_id == application.id ) + { + const auto& current = *itr; + ++itr; + _db.remove(current); + } + + _db.remove(application); +} + +void buy_application_evaluator::do_apply( const buy_application_operation& o ) +{ + _db.get_application_by_id( o.app_id ); + + const auto& app_buy_idx = _db.get_index< application_buying_index >().indices().get< by_buyer_app >(); + auto request = app_buy_idx.find( boost::make_tuple(o.buyer, o.app_id) ); + FC_ASSERT(request == app_buy_idx.end(), "This buying already exisit" ); + + _db.create< application_buying_object >( [&]( application_buying_object& app_buy ) + { + app_buy.buyer = o.buyer; + app_buy.app_id = o.app_id; + app_buy.created = _db.head_block_time(); + }); +} + +void cancel_application_buying_evaluator::do_apply( const cancel_application_buying_operation& o ) +{ + const auto& application = _db.get_application_by_id( o.app_id ); + const auto& app_buying = _db.get_application_buying( o.buyer, o.app_id ); + + FC_ASSERT(application.author == o.app_owner, "Provided app author is not this applcation author" ); + + _db.remove(app_buying); +} + +void transfer_from_promotion_pool_evaluator::do_apply( const transfer_from_promotion_pool_operation& op){ + const auto& econ = _db.get_economic_model(); + const auto& acnt = _db.get_account( op.transfer_to ); + share_type withdrawn; + + FC_ASSERT(op.amount.amount >0 && op.amount.symbol == SOPHIATX_SYMBOL); + _db.modify( econ, [&](economic_model_object& eo){ + withdrawn = eo.withdraw_from_promotion_pool(op.amount.amount, _db.head_block_num()); + }); + _db.adjust_balance(acnt, asset(withdrawn, SOPHIATX_SYMBOL)); + _db.adjust_supply(asset(withdrawn, SOPHIATX_SYMBOL)); + + promotion_pool_withdraw_operation wop; + wop.to_account = op.transfer_to; + wop.withdrawn = asset(withdrawn, SOPHIATX_SYMBOL); + _db.push_virtual_operation(wop); +} + +void sponsor_fees_evaluator::do_apply( const sponsor_fees_operation& op) +{ + if( op.sponsor == account_name_type("") ){ + _db.remove(_db.get(op.sponsored)); + return; + } + + _db.get_account(op.sponsor); + _db.get_account(op.sponsored); + optional< account_name_type > existing_sponsor = _db.get_sponsor(op.sponsored); + if(op.is_sponsoring){ + FC_ASSERT(!existing_sponsor, "This account is already sponsored"); + _db.create([&](account_fee_sponsor_object& o){ + o.sponsor = op.sponsor; + o.sponsored = op.sponsored; + }); + }else{ + FC_ASSERT( existing_sponsor && *existing_sponsor == op.sponsor, "You are not sponsoring this account" ); + _db.remove(_db.get(op.sponsored)); + } +} + +#ifdef SOPHIATX_ENABLE_SMT +void claim_reward_balance2_evaluator::do_apply( const claim_reward_balance2_operation& op ) +{ + const account_object* a = nullptr; // Lazily initialized below because it may turn out unnecessary. + + for( const asset& token : op.reward_tokens ) + { + if( token.amount == 0 ) + continue; + + if( token.symbol.space() == asset_symbol_type::smt_nai_space ) + { + _db.adjust_reward_balance( op.account, -token ); + _db.adjust_balance( op.account, token ); + } + else + { + // Lazy init here. + if( a == nullptr ) + { + a = _db.find_account( op.account ); + FC_ASSERT( a != nullptr, "Could NOT find account ${a}", ("a", op.account) ); + } + + if( token.symbol == VESTS_SYMBOL) + { + FC_ASSERT( token <= a->reward_vesting_balance, "Cannot claim that much VESTS. Claim: ${c} Actual: ${a}", + ("c", token)("a", a->reward_vesting_balance) ); + + asset reward_vesting_sophiatx_to_move = asset( 0, SOPHIATX_SYMBOL ); + if( token == a->reward_vesting_balance ) + reward_vesting_sophiatx_to_move = a->reward_vesting_sophiatx; + else + reward_vesting_sophiatx_to_move = asset( ( ( uint128_t( token.amount.value ) * uint128_t( a->reward_vesting_sophiatx.amount.value ) ) + / uint128_t( a->reward_vesting_balance.amount.value ) ).to_uint64(), SOPHIATX_SYMBOL ); + + _db.modify( *a, [&]( account_object& a ) + { + a.vesting_shares += token; + a.reward_vesting_balance -= token; + a.reward_vesting_sophiatx -= reward_vesting_sophiatx_to_move; + }); + + _db.modify( _db.get_dynamic_global_properties(), [&]( dynamic_global_property_object& gpo ) + { + gpo.total_vesting_shares += token; + gpo.total_vesting_fund_sophiatx += reward_vesting_sophiatx_to_move; + + gpo.pending_rewarded_vesting_shares -= token; + gpo.pending_rewarded_vesting_sophiatx -= reward_vesting_sophiatx_to_move; + }); + + _db.adjust_proxied_witness_votes( *a, token.amount ); + } + else if( token.symbol == SOPHIATX_SYMBOL || token.symbol == SBD_SYMBOL ) + { + FC_ASSERT( is_asset_type( token, SOPHIATX_SYMBOL ) == false || token <= a->reward_sophiatx_balance, + "Cannot claim that much SOPHIATX. Claim: ${c} Actual: ${a}", ("c", token)("a", a->reward_sophiatx_balance) ); + FC_ASSERT( is_asset_type( token, SBD_SYMBOL ) == false || token <= a->reward_sbd_balance, + "Cannot claim that much SBD. Claim: ${c} Actual: ${a}", ("c", token)("a", a->reward_sbd_balance) ); + _db.adjust_reward_balance( *a, -token ); + _db.adjust_balance( *a, token ); + } + else + FC_ASSERT( false, "Unknown asset symbol" ); + } // non-SMT token + } // for( const auto& token : op.reward_tokens ) +} +void claim_reward_balance2_evaluator::do_apply( const claim_reward_balance2_operation& op ) +{ + const account_object* a = nullptr; // Lazily initialized below because it may turn out unnecessary. + + for( const asset& token : op.reward_tokens ) + { + if( token.amount == 0 ) + continue; + + if( token.symbol.space() == asset_symbol_type::smt_nai_space ) + { + _db.adjust_reward_balance( op.account, -token ); + _db.adjust_balance( op.account, token ); + } + else + { + // Lazy init here. + if( a == nullptr ) + { + a = _db.find_account( op.account ); + FC_ASSERT( a != nullptr, "Could NOT find account ${a}", ("a", op.account) ); + } + + if( token.symbol == VESTS_SYMBOL) + { + FC_ASSERT( token <= a->reward_vesting_balance, "Cannot claim that much VESTS. Claim: ${c} Actual: ${a}", + ("c", token)("a", a->reward_vesting_balance) ); + + asset reward_vesting_sophiatx_to_move = asset( 0, SOPHIATX_SYMBOL ); + if( token == a->reward_vesting_balance ) + reward_vesting_sophiatx_to_move = a->reward_vesting_sophiatx; + else + reward_vesting_sophiatx_to_move = asset( ( ( uint128_t( token.amount.value ) * uint128_t( a->reward_vesting_sophiatx.amount.value ) ) + / uint128_t( a->reward_vesting_balance.amount.value ) ).to_uint64(), SOPHIATX_SYMBOL ); + + _db.modify( *a, [&]( account_object& a ) + { + a.vesting_shares += token; + a.reward_vesting_balance -= token; + a.reward_vesting_sophiatx -= reward_vesting_sophiatx_to_move; + }); + + _db.modify( _db.get_dynamic_global_properties(), [&]( dynamic_global_property_object& gpo ) + { + gpo.total_vesting_shares += token; + gpo.total_vesting_fund_sophiatx += reward_vesting_sophiatx_to_move; + + gpo.pending_rewarded_vesting_shares -= token; + gpo.pending_rewarded_vesting_sophiatx -= reward_vesting_sophiatx_to_move; + }); + + _db.adjust_proxied_witness_votes( *a, token.amount ); + } + else if( token.symbol == SOPHIATX_SYMBOL || token.symbol == SBD_SYMBOL ) + { + FC_ASSERT( is_asset_type( token, SOPHIATX_SYMBOL ) == false || token <= a->reward_sophiatx_balance, + "Cannot claim that much SOPHIATX. Claim: ${c} Actual: ${a}", ("c", token)("a", a->reward_sophiatx_balance) ); + FC_ASSERT( is_asset_type( token, SBD_SYMBOL ) == false || token <= a->reward_sbd_balance, + "Cannot claim that much SBD. Claim: ${c} Actual: ${a}", ("c", token)("a", a->reward_sbd_balance) ); + _db.adjust_reward_balance( *a, -token ); + _db.adjust_balance( *a, token ); + } + else + FC_ASSERT( false, "Unknown asset symbol" ); + } // non-SMT token + } // for( const auto& token : op.reward_tokens ) +} +#endif + + +} } // sophiatx::chain diff --git a/libraries/chain/sophiatx_objects.cpp b/libraries/chain/sophiatx_objects.cpp new file mode 100644 index 00000000..bb89912c --- /dev/null +++ b/libraries/chain/sophiatx_objects.cpp @@ -0,0 +1,8 @@ + +#include + +#include + +namespace sophiatx { namespace chain { + +} } // sophiatx::chain diff --git a/libraries/chain/steem_evaluator.cpp b/libraries/chain/steem_evaluator.cpp deleted file mode 100644 index 5a6d41cc..00000000 --- a/libraries/chain/steem_evaluator.cpp +++ /dev/null @@ -1,2372 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include - -#include - -#ifndef IS_LOW_MEM -FC_TODO( "After we vendor fc, also vendor diff_match_patch and fix these warnings" ) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsign-compare" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" -#include -#pragma GCC diagnostic pop -#pragma GCC diagnostic pop -#include - -using boost::locale::conv::utf_to_utf; - -std::wstring utf8_to_wstring(const std::string& str) -{ - return utf_to_utf(str.c_str(), str.c_str() + str.size()); -} - -std::string wstring_to_utf8(const std::wstring& str) -{ - return utf_to_utf(str.c_str(), str.c_str() + str.size()); -} - -#endif - -#include -#include - -#include - -namespace steem { namespace chain { - using fc::uint128_t; - -inline void validate_permlink_0_1( const string& permlink ) -{ - FC_ASSERT( permlink.size() > STEEM_MIN_PERMLINK_LENGTH && permlink.size() < STEEM_MAX_PERMLINK_LENGTH, "Permlink is not a valid size." ); - - for( const auto& c : permlink ) - { - switch( c ) - { - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': - case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case '0': - case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': - case '-': - break; - default: - FC_ASSERT( false, "Invalid permlink character: ${s}", ("s", std::string() + c ) ); - } - } -} - -struct strcmp_equal -{ - bool operator()( const shared_string& a, const string& b ) - { - return a.size() == b.size() || std::strcmp( a.c_str(), b.c_str() ) == 0; - } -}; - -template< bool force_canon > -void copy_legacy_chain_properties( chain_properties& dest, const legacy_chain_properties& src ) -{ - dest.account_creation_fee = src.account_creation_fee.to_asset< force_canon >(); - dest.maximum_block_size = src.maximum_block_size; - dest.sbd_interest_rate = src.sbd_interest_rate; -} - -void witness_update_evaluator::do_apply( const witness_update_operation& o ) -{ - _db.get_account( o.owner ); // verify owner exists - - if ( _db.has_hardfork( STEEM_HARDFORK_0_14__410 ) ) - { - FC_ASSERT( o.props.account_creation_fee.symbol.is_canon() ); - } - else if( !o.props.account_creation_fee.symbol.is_canon() ) - { - // after HF, above check can be moved to validate() if reindex doesn't show this warning - wlog( "Wrong fee symbol in block ${b}", ("b", _db.head_block_num()+1) ); - } - - #pragma message( "TODO: This needs to be part of HF 20 and moved to validate if not triggered in previous blocks" ) - if( _db.is_producing() ) - { - FC_ASSERT( o.props.maximum_block_size <= STEEM_SOFT_MAX_BLOCK_SIZE, "Max block size cannot be more than 2MiB" ); - } - - #pragma message( "TODO: This needs to be part of HF 20 and moved to validate if not triggered in previous blocks" ) - if( _db.is_producing() ) - { - FC_ASSERT( o.props.maximum_block_size <= STEEM_SOFT_MAX_BLOCK_SIZE, "Max block size cannot be more than 2MiB" ); - } - - const auto& by_witness_name_idx = _db.get_index< witness_index >().indices().get< by_name >(); - auto wit_itr = by_witness_name_idx.find( o.owner ); - if( wit_itr != by_witness_name_idx.end() ) - { - _db.modify( *wit_itr, [&]( witness_object& w ) { - from_string( w.url, o.url ); - w.signing_key = o.block_signing_key; - copy_legacy_chain_properties< false >( w.props, o.props ); - }); - } - else - { - _db.create< witness_object >( [&]( witness_object& w ) { - w.owner = o.owner; - from_string( w.url, o.url ); - w.signing_key = o.block_signing_key; - w.created = _db.head_block_time(); - copy_legacy_chain_properties< false >( w.props, o.props ); - }); - } -} - -void witness_set_properties_evaluator::do_apply( const witness_set_properties_operation& o ) -{ - FC_ASSERT( _db.has_hardfork( STEEM_HARDFORK_0_20__1620 ), "witness_set_properties_evaluator not enabled until HF 20" ); - - const auto& witness = _db.get< witness_object, by_name >( o.owner ); // verifies witness exists; - - // Capture old properties. This allows only updating the object once. - chain_properties props; - public_key_type signing_key; - price sbd_exchange_rate; - time_point_sec last_sbd_exchange_update; - string url; - - bool account_creation_changed = false; - bool max_block_changed = false; - bool sbd_interest_changed = false; - bool account_subsidy_changed = false; - bool key_changed = false; - bool sbd_exchange_changed = false; - bool url_changed = false; - - auto itr = o.props.find( "key" ); - - // This existence of 'key' is checked in witness_set_properties_operation::validate - fc::raw::unpack_from_vector( itr->second, signing_key ); - FC_ASSERT( signing_key == witness.signing_key, "'key' does not match witness signing key.", - ("key", signing_key)("signing_key", witness.signing_key) ); - - itr = o.props.find( "account_creation_fee" ); - if( itr != o.props.end() ) - { - fc::raw::unpack_from_vector( itr->second, props.account_creation_fee ); - account_creation_changed = true; - } - - itr = o.props.find( "maximum_block_size" ); - if( itr != o.props.end() ) - { - fc::raw::unpack_from_vector( itr->second, props.maximum_block_size ); - max_block_changed = true; - } - - itr = o.props.find( "sbd_interest_rate" ); - if( itr != o.props.end() ) - { - fc::raw::unpack_from_vector( itr->second, props.sbd_interest_rate ); - sbd_interest_changed = true; - } - - itr = o.props.find( "account_subsidy_limit" ); - if( itr != o.props.end() ) - { - fc::raw::unpack_from_vector( itr->second, props.account_subsidy_limit ); - account_subsidy_changed = true; - } - - itr = o.props.find( "new_signing_key" ); - if( itr != o.props.end() ) - { - fc::raw::unpack_from_vector( itr->second, signing_key ); - key_changed = true; - } - - itr = o.props.find( "sbd_exchange_rate" ); - if( itr != o.props.end() ) - { - fc::raw::unpack_from_vector( itr->second, sbd_exchange_rate ); - last_sbd_exchange_update = _db.head_block_time(); - sbd_exchange_changed = true; - } - - itr = o.props.find( "url" ); - if( itr != o.props.end() ) - { - fc::raw::unpack_from_vector< std::string >( itr->second, url ); - url_changed = true; - } - - _db.modify( witness, [&]( witness_object& w ) - { - if( account_creation_changed ) - w.props.account_creation_fee = props.account_creation_fee; - - if( max_block_changed ) - w.props.maximum_block_size = props.maximum_block_size; - - if( sbd_interest_changed ) - w.props.sbd_interest_rate = props.sbd_interest_rate; - - if( account_subsidy_changed ) - w.props.account_subsidy_limit = props.account_subsidy_limit; - - if( key_changed ) - w.signing_key = signing_key; - - if( sbd_exchange_changed ) - { - w.sbd_exchange_rate = sbd_exchange_rate; - w.last_sbd_exchange_update = last_sbd_exchange_update; - } - - if( url_changed ) - from_string( w.url, url ); - }); -} - -void verify_authority_accounts_exist( - const database& db, - const authority& auth, - const account_name_type& auth_account, - authority::classification auth_class) -{ - for( const std::pair< account_name_type, weight_type >& aw : auth.account_auths ) - { - const account_object* a = db.find_account( aw.first ); - FC_ASSERT( a != nullptr, "New ${ac} authority on account ${aa} references non-existing account ${aref}", - ("aref", aw.first)("ac", auth_class)("aa", auth_account) ); - } -} - -void account_create_evaluator::do_apply( const account_create_operation& o ) -{ - const auto& creator = _db.get_account( o.creator ); - - const auto& props = _db.get_dynamic_global_properties(); - - FC_ASSERT( creator.balance >= o.fee, "Insufficient balance to create account.", ( "creator.balance", creator.balance )( "required", o.fee ) ); - - if( _db.has_hardfork( STEEM_HARDFORK_0_19__987) ) - { - const witness_schedule_object& wso = _db.get_witness_schedule_object(); - FC_ASSERT( o.fee >= asset( wso.median_props.account_creation_fee.amount * STEEM_CREATE_ACCOUNT_WITH_STEEM_MODIFIER, STEEM_SYMBOL ), "Insufficient Fee: ${f} required, ${p} provided.", - ("f", wso.median_props.account_creation_fee * asset( STEEM_CREATE_ACCOUNT_WITH_STEEM_MODIFIER, STEEM_SYMBOL ) ) - ("p", o.fee) ); - } - else if( _db.has_hardfork( STEEM_HARDFORK_0_1 ) ) - { - const witness_schedule_object& wso = _db.get_witness_schedule_object(); - FC_ASSERT( o.fee >= wso.median_props.account_creation_fee, "Insufficient Fee: ${f} required, ${p} provided.", - ("f", wso.median_props.account_creation_fee) - ("p", o.fee) ); - } - - if( _db.has_hardfork( STEEM_HARDFORK_0_15__465 ) ) - { - verify_authority_accounts_exist( _db, o.owner, o.new_account_name, authority::owner ); - verify_authority_accounts_exist( _db, o.active, o.new_account_name, authority::active ); - verify_authority_accounts_exist( _db, o.posting, o.new_account_name, authority::posting ); - } - - _db.modify( creator, [&]( account_object& c ){ - c.balance -= o.fee; - }); - - const auto& new_account = _db.create< account_object >( [&]( account_object& acc ) - { - acc.name = o.new_account_name; - acc.memo_key = o.memo_key; - acc.created = props.time; - acc.last_vote_time = props.time; - acc.mined = false; - - if( !_db.has_hardfork( STEEM_HARDFORK_0_11__169 ) ) - acc.recovery_account = "steem"; - else - acc.recovery_account = o.creator; - - - #ifndef IS_LOW_MEM - from_string( acc.json_metadata, o.json_metadata ); - #endif - }); - - _db.create< account_authority_object >( [&]( account_authority_object& auth ) - { - auth.account = o.new_account_name; - auth.owner = o.owner; - auth.active = o.active; - auth.posting = o.posting; - auth.last_owner_update = fc::time_point_sec::min(); - }); - - if( o.fee.amount > 0 ) - _db.create_vesting( new_account, o.fee ); -} - -void account_create_with_delegation_evaluator::do_apply( const account_create_with_delegation_operation& o ) -{ - FC_ASSERT( !_db.has_hardfork( STEEM_HARDFORK_0_20__1760 ), "Account creation with delegation is deprecated as of Hardfork 20" ); - - const auto& creator = _db.get_account( o.creator ); - const auto& props = _db.get_dynamic_global_properties(); - const witness_schedule_object& wso = _db.get_witness_schedule_object(); - - FC_ASSERT( creator.balance >= o.fee, "Insufficient balance to create account.", - ( "creator.balance", creator.balance ) - ( "required", o.fee ) ); - - FC_ASSERT( creator.vesting_shares - creator.delegated_vesting_shares - asset( creator.to_withdraw - creator.withdrawn, VESTS_SYMBOL ) >= o.delegation, "Insufficient vesting shares to delegate to new account.", - ( "creator.vesting_shares", creator.vesting_shares ) - ( "creator.delegated_vesting_shares", creator.delegated_vesting_shares )( "required", o.delegation ) ); - - auto target_delegation = asset( wso.median_props.account_creation_fee.amount * STEEM_CREATE_ACCOUNT_WITH_STEEM_MODIFIER * STEEM_CREATE_ACCOUNT_DELEGATION_RATIO, STEEM_SYMBOL ) * props.get_vesting_share_price(); - - auto current_delegation = asset( o.fee.amount * STEEM_CREATE_ACCOUNT_DELEGATION_RATIO, STEEM_SYMBOL ) * props.get_vesting_share_price() + o.delegation; - - FC_ASSERT( current_delegation >= target_delegation, "Inssufficient Delegation ${f} required, ${p} provided.", - ("f", target_delegation ) - ( "p", current_delegation ) - ( "account_creation_fee", wso.median_props.account_creation_fee ) - ( "o.fee", o.fee ) - ( "o.delegation", o.delegation ) ); - - FC_ASSERT( o.fee >= wso.median_props.account_creation_fee, "Insufficient Fee: ${f} required, ${p} provided.", - ("f", wso.median_props.account_creation_fee) - ("p", o.fee) ); - - for( const auto& a : o.owner.account_auths ) - { - _db.get_account( a.first ); - } - - for( const auto& a : o.active.account_auths ) - { - _db.get_account( a.first ); - } - - for( const auto& a : o.posting.account_auths ) - { - _db.get_account( a.first ); - } - - _db.modify( creator, [&]( account_object& c ) - { - c.balance -= o.fee; - c.delegated_vesting_shares += o.delegation; - }); - - const auto& new_account = _db.create< account_object >( [&]( account_object& acc ) - { - acc.name = o.new_account_name; - acc.memo_key = o.memo_key; - acc.created = props.time; - acc.last_vote_time = props.time; - acc.mined = false; - - acc.recovery_account = o.creator; - - acc.received_vesting_shares = o.delegation; - - #ifndef IS_LOW_MEM - from_string( acc.json_metadata, o.json_metadata ); - #endif - }); - - _db.create< account_authority_object >( [&]( account_authority_object& auth ) - { - auth.account = o.new_account_name; - auth.owner = o.owner; - auth.active = o.active; - auth.posting = o.posting; - auth.last_owner_update = fc::time_point_sec::min(); - }); - - if( o.delegation.amount > 0 || !_db.has_hardfork( STEEM_HARDFORK_0_19__997 ) ) - { - _db.create< vesting_delegation_object >( [&]( vesting_delegation_object& vdo ) - { - vdo.delegator = o.creator; - vdo.delegatee = o.new_account_name; - vdo.vesting_shares = o.delegation; - vdo.min_delegation_time = _db.head_block_time() + STEEM_CREATE_ACCOUNT_DELEGATION_TIME; - }); - } - - if( o.fee.amount > 0 ) - _db.create_vesting( new_account, o.fee ); -} - - -void account_update_evaluator::do_apply( const account_update_operation& o ) -{ - if( _db.has_hardfork( STEEM_HARDFORK_0_1 ) ) FC_ASSERT( o.account != STEEM_TEMP_ACCOUNT, "Cannot update temp account." ); - - if( ( _db.has_hardfork( STEEM_HARDFORK_0_15__465 ) ) && o.posting ) - o.posting->validate(); - - const auto& account = _db.get_account( o.account ); - const auto& account_auth = _db.get< account_authority_object, by_account >( o.account ); - - if( o.owner ) - { -#ifndef IS_TEST_NET - if( _db.has_hardfork( STEEM_HARDFORK_0_11 ) ) - FC_ASSERT( _db.head_block_time() - account_auth.last_owner_update > STEEM_OWNER_UPDATE_LIMIT, "Owner authority can only be updated once an hour." ); -#endif - - if( ( _db.has_hardfork( STEEM_HARDFORK_0_15__465 ) ) ) - verify_authority_accounts_exist( _db, *o.owner, o.account, authority::owner ); - - _db.update_owner_authority( account, *o.owner ); - } - if( o.active && ( _db.has_hardfork( STEEM_HARDFORK_0_15__465 ) ) ) - verify_authority_accounts_exist( _db, *o.active, o.account, authority::active ); - if( o.posting && ( _db.has_hardfork( STEEM_HARDFORK_0_15__465 ) ) ) - verify_authority_accounts_exist( _db, *o.posting, o.account, authority::posting ); - - _db.modify( account, [&]( account_object& acc ) - { - if( o.memo_key != public_key_type() ) - acc.memo_key = o.memo_key; - - acc.last_account_update = _db.head_block_time(); - - #ifndef IS_LOW_MEM - if ( o.json_metadata.size() > 0 ) - from_string( acc.json_metadata, o.json_metadata ); - #endif - }); - - if( o.active || o.posting ) - { - _db.modify( account_auth, [&]( account_authority_object& auth) - { - if( o.active ) auth.active = *o.active; - if( o.posting ) auth.posting = *o.posting; - }); - } - -} - - -/** - * Because net_rshares is 0 there is no need to update any pending payout calculations or parent posts. - */ -void delete_comment_evaluator::do_apply( const delete_comment_operation& o ) -{ - const auto& comment = _db.get_comment( o.author, o.permlink ); - FC_ASSERT( comment.children == 0, "Cannot delete a comment with replies." ); - - if( _db.has_hardfork( STEEM_HARDFORK_0_19__876 ) ) - FC_ASSERT( comment.cashout_time != fc::time_point_sec::maximum() ); - - if( _db.has_hardfork( STEEM_HARDFORK_0_19__977 ) ) - FC_ASSERT( comment.net_rshares <= 0, "Cannot delete a comment with net positive votes." ); - - if( comment.net_rshares > 0 ) return; - - const auto& vote_idx = _db.get_index().indices().get(); - - auto vote_itr = vote_idx.lower_bound( comment_id_type(comment.id) ); - while( vote_itr != vote_idx.end() && vote_itr->comment == comment.id ) { - const auto& cur_vote = *vote_itr; - ++vote_itr; - _db.remove(cur_vote); - } - - /// this loop can be skiped for validate-only nodes as it is merely gathering stats for indicies - if( _db.has_hardfork( STEEM_HARDFORK_0_6__80 ) && comment.parent_author != STEEM_ROOT_POST_PARENT ) - { - auto parent = &_db.get_comment( comment.parent_author, comment.parent_permlink ); - auto now = _db.head_block_time(); - while( parent ) - { - _db.modify( *parent, [&]( comment_object& p ){ - p.children--; - p.active = now; - }); - #ifndef IS_LOW_MEM - if( parent->parent_author != STEEM_ROOT_POST_PARENT ) - parent = &_db.get_comment( parent->parent_author, parent->parent_permlink ); - else - #endif - parent = nullptr; - } - } - - _db.remove( comment ); -} - -struct comment_options_extension_visitor -{ - comment_options_extension_visitor( const comment_object& c, database& db ) : _c( c ), _db( db ) {} - - typedef void result_type; - - const comment_object& _c; - database& _db; - -#ifdef STEEM_ENABLE_SMT - void operator()( const allowed_vote_assets& va) const - { - FC_TODO("To be implemented suppport for allowed_vote_assets"); - } -#endif - - void operator()( const comment_payout_beneficiaries& cpb ) const - { - FC_ASSERT( _c.beneficiaries.size() == 0, "Comment already has beneficiaries specified." ); - FC_ASSERT( _c.abs_rshares == 0, "Comment must not have been voted on before specifying beneficiaries." ); - - _db.modify( _c, [&]( comment_object& c ) - { - for( auto& b : cpb.beneficiaries ) - { - auto acc = _db.find< account_object, by_name >( b.account ); - FC_ASSERT( acc != nullptr, "Beneficiary \"${a}\" must exist.", ("a", b.account) ); - c.beneficiaries.push_back( b ); - } - }); - } -}; - -void comment_options_evaluator::do_apply( const comment_options_operation& o ) -{ - const auto& comment = _db.get_comment( o.author, o.permlink ); - if( !o.allow_curation_rewards || !o.allow_votes || o.max_accepted_payout < comment.max_accepted_payout ) - FC_ASSERT( comment.abs_rshares == 0, "One of the included comment options requires the comment to have no rshares allocated to it." ); - - FC_ASSERT( comment.allow_curation_rewards >= o.allow_curation_rewards, "Curation rewards cannot be re-enabled." ); - FC_ASSERT( comment.allow_votes >= o.allow_votes, "Voting cannot be re-enabled." ); - FC_ASSERT( comment.max_accepted_payout >= o.max_accepted_payout, "A comment cannot accept a greater payout." ); - FC_ASSERT( comment.percent_steem_dollars >= o.percent_steem_dollars, "A comment cannot accept a greater percent SBD." ); - - _db.modify( comment, [&]( comment_object& c ) { - c.max_accepted_payout = o.max_accepted_payout; - c.percent_steem_dollars = o.percent_steem_dollars; - c.allow_votes = o.allow_votes; - c.allow_curation_rewards = o.allow_curation_rewards; - }); - - for( auto& e : o.extensions ) - { - e.visit( comment_options_extension_visitor( comment, _db ) ); - } -} - -void comment_evaluator::do_apply( const comment_operation& o ) -{ try { - if( _db.has_hardfork( STEEM_HARDFORK_0_5__55 ) ) - FC_ASSERT( o.title.size() + o.body.size() + o.json_metadata.size(), "Cannot update comment because nothing appears to be changing." ); - - const auto& by_permlink_idx = _db.get_index< comment_index >().indices().get< by_permlink >(); - auto itr = by_permlink_idx.find( boost::make_tuple( o.author, o.permlink ) ); - - const auto& auth = _db.get_account( o.author ); /// prove it exists - - comment_id_type id; - - const comment_object* parent = nullptr; - if( o.parent_author != STEEM_ROOT_POST_PARENT ) - { - parent = &_db.get_comment( o.parent_author, o.parent_permlink ); - if( !_db.has_hardfork( STEEM_HARDFORK_0_17__767 ) ) - FC_ASSERT( parent->depth < STEEM_MAX_COMMENT_DEPTH_PRE_HF17, "Comment is nested ${x} posts deep, maximum depth is ${y}.", ("x",parent->depth)("y",STEEM_MAX_COMMENT_DEPTH_PRE_HF17) ); - else - FC_ASSERT( parent->depth < STEEM_MAX_COMMENT_DEPTH, "Comment is nested ${x} posts deep, maximum depth is ${y}.", ("x",parent->depth)("y",STEEM_MAX_COMMENT_DEPTH) ); - } - - FC_ASSERT( fc::is_utf8( o.json_metadata ), "JSON Metadata must be UTF-8" ); - - auto now = _db.head_block_time(); - - if ( itr == by_permlink_idx.end() ) - { - if( o.parent_author != STEEM_ROOT_POST_PARENT ) - { - FC_ASSERT( _db.get( parent->root_comment ).allow_replies, "The parent comment has disabled replies." ); - if( _db.has_hardfork( STEEM_HARDFORK_0_12__177 ) && !_db.has_hardfork( STEEM_HARDFORK_0_17__869 ) ) - FC_ASSERT( _db.calculate_discussion_payout_time( *parent ) != fc::time_point_sec::maximum(), "Discussion is frozen." ); - } - - if( _db.has_hardfork( STEEM_HARDFORK_0_12__176 ) ) - { - if( o.parent_author == STEEM_ROOT_POST_PARENT ) - FC_ASSERT( ( now - auth.last_root_post ) > STEEM_MIN_ROOT_COMMENT_INTERVAL, "You may only post once every 5 minutes.", ("now",now)("last_root_post", auth.last_root_post) ); - else - FC_ASSERT( (now - auth.last_post) > STEEM_MIN_REPLY_INTERVAL, "You may only comment once every 20 seconds.", ("now",now)("auth.last_post",auth.last_post) ); - } - else if( _db.has_hardfork( STEEM_HARDFORK_0_6__113 ) ) - { - if( o.parent_author == STEEM_ROOT_POST_PARENT ) - FC_ASSERT( (now - auth.last_post) > STEEM_MIN_ROOT_COMMENT_INTERVAL, "You may only post once every 5 minutes.", ("now",now)("auth.last_post",auth.last_post) ); - else - FC_ASSERT( (now - auth.last_post) > STEEM_MIN_REPLY_INTERVAL, "You may only comment once every 20 seconds.", ("now",now)("auth.last_post",auth.last_post) ); - } - else - { - FC_ASSERT( (now - auth.last_post) > fc::seconds(60), "You may only post once per minute.", ("now",now)("auth.last_post",auth.last_post) ); - } - - uint16_t reward_weight = STEEM_100_PERCENT; - uint64_t post_bandwidth = auth.post_bandwidth; - - if( _db.has_hardfork( STEEM_HARDFORK_0_12__176 ) && !_db.has_hardfork( STEEM_HARDFORK_0_17__733 ) && o.parent_author == STEEM_ROOT_POST_PARENT ) - { - uint64_t post_delta_time = std::min( _db.head_block_time().sec_since_epoch() - auth.last_root_post.sec_since_epoch(), STEEM_POST_AVERAGE_WINDOW ); - uint32_t old_weight = uint32_t( ( post_bandwidth * ( STEEM_POST_AVERAGE_WINDOW - post_delta_time ) ) / STEEM_POST_AVERAGE_WINDOW ); - post_bandwidth = ( old_weight + STEEM_100_PERCENT ); - reward_weight = uint16_t( std::min( ( STEEM_POST_WEIGHT_CONSTANT * STEEM_100_PERCENT ) / ( post_bandwidth * post_bandwidth ), uint64_t( STEEM_100_PERCENT ) ) ); - } - - _db.modify( auth, [&]( account_object& a ) { - if( o.parent_author == STEEM_ROOT_POST_PARENT ) - { - a.last_root_post = now; - a.post_bandwidth = uint32_t( post_bandwidth ); - } - a.last_post = now; - a.post_count++; - }); - - const auto& new_comment = _db.create< comment_object >( [&]( comment_object& com ) - { - if( _db.has_hardfork( STEEM_HARDFORK_0_1 ) ) - { - validate_permlink_0_1( o.parent_permlink ); - validate_permlink_0_1( o.permlink ); - } - - com.author = o.author; - from_string( com.permlink, o.permlink ); - com.last_update = _db.head_block_time(); - com.created = com.last_update; - com.active = com.last_update; - com.last_payout = fc::time_point_sec::min(); - com.max_cashout_time = fc::time_point_sec::maximum(); - com.reward_weight = reward_weight; - - if ( o.parent_author == STEEM_ROOT_POST_PARENT ) - { - com.parent_author = ""; - from_string( com.parent_permlink, o.parent_permlink ); - from_string( com.category, o.parent_permlink ); - com.root_comment = com.id; - com.cashout_time = _db.has_hardfork( STEEM_HARDFORK_0_12__177 ) ? - _db.head_block_time() + STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF17 : - fc::time_point_sec::maximum(); - } - else - { - com.parent_author = parent->author; - com.parent_permlink = parent->permlink; - com.depth = parent->depth + 1; - com.category = parent->category; - com.root_comment = parent->root_comment; - com.cashout_time = fc::time_point_sec::maximum(); - } - - if( _db.has_hardfork( STEEM_HARDFORK_0_17__769 ) ) - { - com.cashout_time = com.created + STEEM_CASHOUT_WINDOW_SECONDS; - } - }); - - id = new_comment.id; - - #ifndef IS_LOW_MEM - _db.create< comment_content_object >( [&]( comment_content_object& con ) - { - con.comment = id; - - from_string( con.title, o.title ); - if( o.body.size() < 1024*1024*128 ) - { - from_string( con.body, o.body ); - } - from_string( con.json_metadata, o.json_metadata ); - }); - #endif - - -/// this loop can be skiped for validate-only nodes as it is merely gathering stats for indicies - auto now = _db.head_block_time(); - while( parent ) { - _db.modify( *parent, [&]( comment_object& p ){ - p.children++; - p.active = now; - }); -#ifndef IS_LOW_MEM - if( parent->parent_author != STEEM_ROOT_POST_PARENT ) - parent = &_db.get_comment( parent->parent_author, parent->parent_permlink ); - else -#endif - parent = nullptr; - } - - } - else // start edit case - { - const auto& comment = *itr; - - if( !_db.has_hardfork( STEEM_HARDFORK_0_17__772 ) ) - { - if( _db.has_hardfork( STEEM_HARDFORK_0_14__306 ) ) - FC_ASSERT( _db.calculate_discussion_payout_time( comment ) != fc::time_point_sec::maximum(), "The comment is archived." ); - else if( _db.has_hardfork( STEEM_HARDFORK_0_10 ) ) - FC_ASSERT( comment.last_payout == fc::time_point_sec::min(), "Can only edit during the first 24 hours." ); - } - _db.modify( comment, [&]( comment_object& com ) - { - com.last_update = _db.head_block_time(); - com.active = com.last_update; - strcmp_equal equal; - - if( !parent ) - { - FC_ASSERT( com.parent_author == account_name_type(), "The parent of a comment cannot change." ); - FC_ASSERT( equal( com.parent_permlink, o.parent_permlink ), "The permlink of a comment cannot change." ); - } - else - { - FC_ASSERT( com.parent_author == o.parent_author, "The parent of a comment cannot change." ); - FC_ASSERT( equal( com.parent_permlink, o.parent_permlink ), "The permlink of a comment cannot change." ); - } - }); - #ifndef IS_LOW_MEM - _db.modify( _db.get< comment_content_object, by_comment >( comment.id ), [&]( comment_content_object& con ) - { - if( o.title.size() ) from_string( con.title, o.title ); - if( o.json_metadata.size() ) - from_string( con.json_metadata, o.json_metadata ); - - if( o.body.size() ) { - try { - diff_match_patch dmp; - auto patch = dmp.patch_fromText( utf8_to_wstring(o.body) ); - if( patch.size() ) { - auto result = dmp.patch_apply( patch, utf8_to_wstring( to_string( con.body ) ) ); - auto patched_body = wstring_to_utf8(result.first); - if( !fc::is_utf8( patched_body ) ) { - idump(("invalid utf8")(patched_body)); - from_string( con.body, fc::prune_invalid_utf8(patched_body) ); - } else { from_string( con.body, patched_body ); } - } - else { // replace - from_string( con.body, o.body ); - } - } catch ( ... ) { - from_string( con.body, o.body ); - } - } - }); - #endif - - - - } // end EDIT case - -} FC_CAPTURE_AND_RETHROW( (o) ) } - -void escrow_transfer_evaluator::do_apply( const escrow_transfer_operation& o ) -{ - try - { - const auto& from_account = _db.get_account(o.from); - _db.get_account(o.to); - _db.get_account(o.agent); - - FC_ASSERT( o.ratification_deadline > _db.head_block_time(), "The escorw ratification deadline must be after head block time." ); - FC_ASSERT( o.escrow_expiration > _db.head_block_time(), "The escrow expiration must be after head block time." ); - - asset steem_spent = o.steem_amount; - asset sbd_spent = o.sbd_amount; - if( o.fee.symbol == STEEM_SYMBOL ) - steem_spent += o.fee; - else - sbd_spent += o.fee; - - FC_ASSERT( from_account.balance >= steem_spent, "Account cannot cover STEEM costs of escrow. Required: ${r} Available: ${a}", ("r",steem_spent)("a",from_account.balance) ); - FC_ASSERT( from_account.sbd_balance >= sbd_spent, "Account cannot cover SBD costs of escrow. Required: ${r} Available: ${a}", ("r",sbd_spent)("a",from_account.sbd_balance) ); - - _db.adjust_balance( from_account, -steem_spent ); - _db.adjust_balance( from_account, -sbd_spent ); - - _db.create([&]( escrow_object& esc ) - { - esc.escrow_id = o.escrow_id; - esc.from = o.from; - esc.to = o.to; - esc.agent = o.agent; - esc.ratification_deadline = o.ratification_deadline; - esc.escrow_expiration = o.escrow_expiration; - esc.sbd_balance = o.sbd_amount; - esc.steem_balance = o.steem_amount; - esc.pending_fee = o.fee; - }); - } - FC_CAPTURE_AND_RETHROW( (o) ) -} - -void escrow_approve_evaluator::do_apply( const escrow_approve_operation& o ) -{ - try - { - - const auto& escrow = _db.get_escrow( o.from, o.escrow_id ); - - FC_ASSERT( escrow.to == o.to, "Operation 'to' (${o}) does not match escrow 'to' (${e}).", ("o", o.to)("e", escrow.to) ); - FC_ASSERT( escrow.agent == o.agent, "Operation 'agent' (${a}) does not match escrow 'agent' (${e}).", ("o", o.agent)("e", escrow.agent) ); - FC_ASSERT( escrow.ratification_deadline >= _db.head_block_time(), "The escrow ratification deadline has passed. Escrow can no longer be ratified." ); - - bool reject_escrow = !o.approve; - - if( o.who == o.to ) - { - FC_ASSERT( !escrow.to_approved, "Account 'to' (${t}) has already approved the escrow.", ("t", o.to) ); - - if( !reject_escrow ) - { - _db.modify( escrow, [&]( escrow_object& esc ) - { - esc.to_approved = true; - }); - } - } - if( o.who == o.agent ) - { - FC_ASSERT( !escrow.agent_approved, "Account 'agent' (${a}) has already approved the escrow.", ("a", o.agent) ); - - if( !reject_escrow ) - { - _db.modify( escrow, [&]( escrow_object& esc ) - { - esc.agent_approved = true; - }); - } - } - - if( reject_escrow ) - { - _db.adjust_balance( o.from, escrow.steem_balance ); - _db.adjust_balance( o.from, escrow.sbd_balance ); - _db.adjust_balance( o.from, escrow.pending_fee ); - - _db.remove( escrow ); - } - else if( escrow.to_approved && escrow.agent_approved ) - { - _db.adjust_balance( o.agent, escrow.pending_fee ); - - _db.modify( escrow, [&]( escrow_object& esc ) - { - esc.pending_fee.amount = 0; - }); - } - } - FC_CAPTURE_AND_RETHROW( (o) ) -} - -void escrow_dispute_evaluator::do_apply( const escrow_dispute_operation& o ) -{ - try - { - _db.get_account( o.from ); // Verify from account exists - - const auto& e = _db.get_escrow( o.from, o.escrow_id ); - FC_ASSERT( _db.head_block_time() < e.escrow_expiration, "Disputing the escrow must happen before expiration." ); - FC_ASSERT( e.to_approved && e.agent_approved, "The escrow must be approved by all parties before a dispute can be raised." ); - FC_ASSERT( !e.disputed, "The escrow is already under dispute." ); - FC_ASSERT( e.to == o.to, "Operation 'to' (${o}) does not match escrow 'to' (${e}).", ("o", o.to)("e", e.to) ); - FC_ASSERT( e.agent == o.agent, "Operation 'agent' (${a}) does not match escrow 'agent' (${e}).", ("o", o.agent)("e", e.agent) ); - - _db.modify( e, [&]( escrow_object& esc ) - { - esc.disputed = true; - }); - } - FC_CAPTURE_AND_RETHROW( (o) ) -} - -void escrow_release_evaluator::do_apply( const escrow_release_operation& o ) -{ - try - { - _db.get_account(o.from); // Verify from account exists - - const auto& e = _db.get_escrow( o.from, o.escrow_id ); - FC_ASSERT( e.steem_balance >= o.steem_amount, "Release amount exceeds escrow balance. Amount: ${a}, Balance: ${b}", ("a", o.steem_amount)("b", e.steem_balance) ); - FC_ASSERT( e.sbd_balance >= o.sbd_amount, "Release amount exceeds escrow balance. Amount: ${a}, Balance: ${b}", ("a", o.sbd_amount)("b", e.sbd_balance) ); - FC_ASSERT( e.to == o.to, "Operation 'to' (${o}) does not match escrow 'to' (${e}).", ("o", o.to)("e", e.to) ); - FC_ASSERT( e.agent == o.agent, "Operation 'agent' (${a}) does not match escrow 'agent' (${e}).", ("o", o.agent)("e", e.agent) ); - FC_ASSERT( o.receiver == e.from || o.receiver == e.to, "Funds must be released to 'from' (${f}) or 'to' (${t})", ("f", e.from)("t", e.to) ); - FC_ASSERT( e.to_approved && e.agent_approved, "Funds cannot be released prior to escrow approval." ); - - // If there is a dispute regardless of expiration, the agent can release funds to either party - if( e.disputed ) - { - FC_ASSERT( o.who == e.agent, "Only 'agent' (${a}) can release funds in a disputed escrow.", ("a", e.agent) ); - } - else - { - FC_ASSERT( o.who == e.from || o.who == e.to, "Only 'from' (${f}) and 'to' (${t}) can release funds from a non-disputed escrow", ("f", e.from)("t", e.to) ); - - if( e.escrow_expiration > _db.head_block_time() ) - { - // If there is no dispute and escrow has not expired, either party can release funds to the other. - if( o.who == e.from ) - { - FC_ASSERT( o.receiver == e.to, "Only 'from' (${f}) can release funds to 'to' (${t}).", ("f", e.from)("t", e.to) ); - } - else if( o.who == e.to ) - { - FC_ASSERT( o.receiver == e.from, "Only 'to' (${t}) can release funds to 'from' (${t}).", ("f", e.from)("t", e.to) ); - } - } - } - // If escrow expires and there is no dispute, either party can release funds to either party. - - _db.adjust_balance( o.receiver, o.steem_amount ); - _db.adjust_balance( o.receiver, o.sbd_amount ); - - _db.modify( e, [&]( escrow_object& esc ) - { - esc.steem_balance -= o.steem_amount; - esc.sbd_balance -= o.sbd_amount; - }); - - if( e.steem_balance.amount == 0 && e.sbd_balance.amount == 0 ) - { - _db.remove( e ); - } - } - FC_CAPTURE_AND_RETHROW( (o) ) -} - -void transfer_evaluator::do_apply( const transfer_operation& o ) -{ - FC_ASSERT( _db.get_balance( o.from, o.amount.symbol ) >= o.amount, "Account does not have sufficient funds for transfer." ); - _db.adjust_balance( o.from, -o.amount ); - _db.adjust_balance( o.to, o.amount ); -} - -void transfer_to_vesting_evaluator::do_apply( const transfer_to_vesting_operation& o ) -{ - const auto& from_account = _db.get_account(o.from); - const auto& to_account = o.to.size() ? _db.get_account(o.to) : from_account; - - FC_ASSERT( _db.get_balance( from_account, STEEM_SYMBOL) >= o.amount, "Account does not have sufficient STEEM for transfer." ); - _db.adjust_balance( from_account, -o.amount ); - _db.create_vesting( to_account, o.amount ); -} - -void withdraw_vesting_evaluator::do_apply( const withdraw_vesting_operation& o ) -{ - const auto& account = _db.get_account( o.account ); - - FC_ASSERT( account.vesting_shares >= asset( 0, VESTS_SYMBOL ), "Account does not have sufficient Steem Power for withdraw." ); - FC_ASSERT( account.vesting_shares - account.delegated_vesting_shares >= o.vesting_shares, "Account does not have sufficient Steem Power for withdraw." ); - - if( !account.mined && _db.has_hardfork( STEEM_HARDFORK_0_1 ) ) - { - const auto& props = _db.get_dynamic_global_properties(); - const witness_schedule_object& wso = _db.get_witness_schedule_object(); - - asset min_vests = wso.median_props.account_creation_fee * props.get_vesting_share_price(); - min_vests.amount.value *= 10; - - FC_ASSERT( account.vesting_shares > min_vests || ( _db.has_hardfork( STEEM_HARDFORK_0_16__562 ) && o.vesting_shares.amount == 0 ), - "Account registered by another account requires 10x account creation fee worth of Steem Power before it can be powered down." ); - } - - if( o.vesting_shares.amount == 0 ) - { - if( _db.has_hardfork( STEEM_HARDFORK_0_5__57 ) ) - FC_ASSERT( account.vesting_withdraw_rate.amount != 0, "This operation would not change the vesting withdraw rate." ); - - _db.modify( account, [&]( account_object& a ) { - a.vesting_withdraw_rate = asset( 0, VESTS_SYMBOL ); - a.next_vesting_withdrawal = time_point_sec::maximum(); - a.to_withdraw = 0; - a.withdrawn = 0; - }); - } - else - { - int vesting_withdraw_intervals = STEEM_VESTING_WITHDRAW_INTERVALS_PRE_HF_16; - if( _db.has_hardfork( STEEM_HARDFORK_0_16__551 ) ) - vesting_withdraw_intervals = STEEM_VESTING_WITHDRAW_INTERVALS; /// 13 weeks = 1 quarter of a year - - _db.modify( account, [&]( account_object& a ) - { - auto new_vesting_withdraw_rate = asset( o.vesting_shares.amount / vesting_withdraw_intervals, VESTS_SYMBOL ); - - if( new_vesting_withdraw_rate.amount == 0 ) - new_vesting_withdraw_rate.amount = 1; - - if( _db.has_hardfork( STEEM_HARDFORK_0_5__57 ) ) - FC_ASSERT( account.vesting_withdraw_rate != new_vesting_withdraw_rate, "This operation would not change the vesting withdraw rate." ); - - a.vesting_withdraw_rate = new_vesting_withdraw_rate; - a.next_vesting_withdrawal = _db.head_block_time() + fc::seconds(STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS); - a.to_withdraw = o.vesting_shares.amount; - a.withdrawn = 0; - }); - } -} - -void set_withdraw_vesting_route_evaluator::do_apply( const set_withdraw_vesting_route_operation& o ) -{ - try - { - const auto& from_account = _db.get_account( o.from_account ); - const auto& to_account = _db.get_account( o.to_account ); - const auto& wd_idx = _db.get_index< withdraw_vesting_route_index >().indices().get< by_withdraw_route >(); - auto itr = wd_idx.find( boost::make_tuple( from_account.name, to_account.name ) ); - - if( itr == wd_idx.end() ) - { - FC_ASSERT( o.percent != 0, "Cannot create a 0% destination." ); - FC_ASSERT( from_account.withdraw_routes < STEEM_MAX_WITHDRAW_ROUTES, "Account already has the maximum number of routes." ); - - _db.create< withdraw_vesting_route_object >( [&]( withdraw_vesting_route_object& wvdo ) - { - wvdo.from_account = from_account.name; - wvdo.to_account = to_account.name; - wvdo.percent = o.percent; - wvdo.auto_vest = o.auto_vest; - }); - - _db.modify( from_account, [&]( account_object& a ) - { - a.withdraw_routes++; - }); - } - else if( o.percent == 0 ) - { - _db.remove( *itr ); - - _db.modify( from_account, [&]( account_object& a ) - { - a.withdraw_routes--; - }); - } - else - { - _db.modify( *itr, [&]( withdraw_vesting_route_object& wvdo ) - { - wvdo.from_account = from_account.name; - wvdo.to_account = to_account.name; - wvdo.percent = o.percent; - wvdo.auto_vest = o.auto_vest; - }); - } - - itr = wd_idx.upper_bound( boost::make_tuple( from_account.name, account_name_type() ) ); - uint16_t total_percent = 0; - - while( itr->from_account == from_account.name && itr != wd_idx.end() ) - { - total_percent += itr->percent; - ++itr; - } - - FC_ASSERT( total_percent <= STEEM_100_PERCENT, "More than 100% of vesting withdrawals allocated to destinations." ); - } - FC_CAPTURE_AND_RETHROW() -} - -void account_witness_proxy_evaluator::do_apply( const account_witness_proxy_operation& o ) -{ - const auto& account = _db.get_account( o.account ); - FC_ASSERT( account.proxy != o.proxy, "Proxy must change." ); - - FC_ASSERT( account.can_vote, "Account has declined the ability to vote and cannot proxy votes." ); - - /// remove all current votes - std::array delta; - delta[0] = -account.vesting_shares.amount; - for( int i = 0; i < STEEM_MAX_PROXY_RECURSION_DEPTH; ++i ) - delta[i+1] = -account.proxied_vsf_votes[i]; - _db.adjust_proxied_witness_votes( account, delta ); - - if( o.proxy.size() ) { - const auto& new_proxy = _db.get_account( o.proxy ); - flat_set proxy_chain( { account.id, new_proxy.id } ); - proxy_chain.reserve( STEEM_MAX_PROXY_RECURSION_DEPTH + 1 ); - - /// check for proxy loops and fail to update the proxy if it would create a loop - auto cprox = &new_proxy; - while( cprox->proxy.size() != 0 ) { - const auto next_proxy = _db.get_account( cprox->proxy ); - FC_ASSERT( proxy_chain.insert( next_proxy.id ).second, "This proxy would create a proxy loop." ); - cprox = &next_proxy; - FC_ASSERT( proxy_chain.size() <= STEEM_MAX_PROXY_RECURSION_DEPTH, "Proxy chain is too long." ); - } - - /// clear all individual vote records - _db.clear_witness_votes( account ); - - _db.modify( account, [&]( account_object& a ) { - a.proxy = o.proxy; - }); - - /// add all new votes - for( int i = 0; i <= STEEM_MAX_PROXY_RECURSION_DEPTH; ++i ) - delta[i] = -delta[i]; - _db.adjust_proxied_witness_votes( account, delta ); - } else { /// we are clearing the proxy which means we simply update the account - _db.modify( account, [&]( account_object& a ) { - a.proxy = o.proxy; - }); - } -} - - -void account_witness_vote_evaluator::do_apply( const account_witness_vote_operation& o ) -{ - const auto& voter = _db.get_account( o.account ); - FC_ASSERT( voter.proxy.size() == 0, "A proxy is currently set, please clear the proxy before voting for a witness." ); - - if( o.approve ) - FC_ASSERT( voter.can_vote, "Account has declined its voting rights." ); - - const auto& witness = _db.get_witness( o.witness ); - - const auto& by_account_witness_idx = _db.get_index< witness_vote_index >().indices().get< by_account_witness >(); - auto itr = by_account_witness_idx.find( boost::make_tuple( voter.name, witness.owner ) ); - - if( itr == by_account_witness_idx.end() ) { - FC_ASSERT( o.approve, "Vote doesn't exist, user must indicate a desire to approve witness." ); - - if ( _db.has_hardfork( STEEM_HARDFORK_0_2 ) ) - { - FC_ASSERT( voter.witnesses_voted_for < STEEM_MAX_ACCOUNT_WITNESS_VOTES, "Account has voted for too many witnesses." ); // TODO: Remove after hardfork 2 - - _db.create( [&]( witness_vote_object& v ) { - v.witness = witness.owner; - v.account = voter.name; - }); - - if( _db.has_hardfork( STEEM_HARDFORK_0_3 ) ) { - _db.adjust_witness_vote( witness, voter.witness_vote_weight() ); - } - else { - _db.adjust_proxied_witness_votes( voter, voter.witness_vote_weight() ); - } - - } else { - - _db.create( [&]( witness_vote_object& v ) { - v.witness = witness.owner; - v.account = voter.name; - }); - _db.modify( witness, [&]( witness_object& w ) { - w.votes += voter.witness_vote_weight(); - }); - - } - _db.modify( voter, [&]( account_object& a ) { - a.witnesses_voted_for++; - }); - - } else { - FC_ASSERT( !o.approve, "Vote currently exists, user must indicate a desire to reject witness." ); - - if ( _db.has_hardfork( STEEM_HARDFORK_0_2 ) ) { - if( _db.has_hardfork( STEEM_HARDFORK_0_3 ) ) - _db.adjust_witness_vote( witness, -voter.witness_vote_weight() ); - else - _db.adjust_proxied_witness_votes( voter, -voter.witness_vote_weight() ); - } else { - _db.modify( witness, [&]( witness_object& w ) { - w.votes -= voter.witness_vote_weight(); - }); - } - _db.modify( voter, [&]( account_object& a ) { - a.witnesses_voted_for--; - }); - _db.remove( *itr ); - } -} - -void vote_evaluator::do_apply( const vote_operation& o ) -{ try { - const auto& comment = _db.get_comment( o.author, o.permlink ); - const auto& voter = _db.get_account( o.voter ); - - FC_ASSERT( voter.can_vote, "Voter has declined their voting rights." ); - - if( o.weight > 0 ) FC_ASSERT( comment.allow_votes, "Votes are not allowed on the comment." ); - - if( _db.has_hardfork( STEEM_HARDFORK_0_12__177 ) && _db.calculate_discussion_payout_time( comment ) == fc::time_point_sec::maximum() ) - { -#ifndef CLEAR_VOTES - const auto& comment_vote_idx = _db.get_index< comment_vote_index >().indices().get< by_comment_voter >(); - auto itr = comment_vote_idx.find( std::make_tuple( comment.id, voter.id ) ); - - if( itr == comment_vote_idx.end() ) - _db.create< comment_vote_object >( [&]( comment_vote_object& cvo ) - { - cvo.voter = voter.id; - cvo.comment = comment.id; - cvo.vote_percent = o.weight; - cvo.last_update = _db.head_block_time(); - }); - else - _db.modify( *itr, [&]( comment_vote_object& cvo ) - { - cvo.vote_percent = o.weight; - cvo.last_update = _db.head_block_time(); - }); -#endif - return; - } - - const auto& comment_vote_idx = _db.get_index< comment_vote_index >().indices().get< by_comment_voter >(); - auto itr = comment_vote_idx.find( std::make_tuple( comment.id, voter.id ) ); - - int64_t elapsed_seconds = (_db.head_block_time() - voter.last_vote_time).to_seconds(); - - if( _db.has_hardfork( STEEM_HARDFORK_0_11 ) ) - FC_ASSERT( elapsed_seconds >= STEEM_MIN_VOTE_INTERVAL_SEC, "Can only vote once every 3 seconds." ); - - int64_t regenerated_power = (STEEM_100_PERCENT * elapsed_seconds) / STEEM_VOTE_REGENERATION_SECONDS; - int64_t current_power = std::min( int64_t(voter.voting_power + regenerated_power), int64_t(STEEM_100_PERCENT) ); - FC_ASSERT( current_power > 0, "Account currently does not have voting power." ); - - int64_t abs_weight = abs(o.weight); - // Less rounding error would occur if we did the division last, but we need to maintain backward - // compatibility with the previous implementation which was replaced in #1285 - int64_t used_power = ((current_power * abs_weight) / STEEM_100_PERCENT) * (60*60*24); - - const dynamic_global_property_object& dgpo = _db.get_dynamic_global_properties(); - - // The second multiplication is rounded up as of HF 259 - int64_t max_vote_denom = dgpo.vote_power_reserve_rate * STEEM_VOTE_REGENERATION_SECONDS; - FC_ASSERT( max_vote_denom > 0 ); - - if( !_db.has_hardfork( STEEM_HARDFORK_0_14__259 ) ) - { - used_power = (used_power / max_vote_denom)+1; - } - else - { - used_power = (used_power + max_vote_denom - 1) / max_vote_denom; - } - FC_ASSERT( used_power <= current_power, "Account does not have enough power to vote." ); - - int64_t abs_rshares = ((uint128_t(voter.effective_vesting_shares().amount.value) * used_power) / (STEEM_100_PERCENT)).to_uint64(); - if( !_db.has_hardfork( STEEM_HARDFORK_0_14__259 ) && abs_rshares == 0 ) abs_rshares = 1; - - if( _db.has_hardfork( STEEM_HARDFORK_0_20__1764 ) ) - { - abs_rshares -= STEEM_VOTE_DUST_THRESHOLD; - abs_rshares = std::max( int64_t(0), abs_rshares ); - } - if( _db.has_hardfork( STEEM_HARDFORK_0_14__259 ) ) - { - FC_ASSERT( abs_rshares > STEEM_VOTE_DUST_THRESHOLD || o.weight == 0, "Voting weight is too small, please accumulate more voting power or steem power." ); - } - else if( _db.has_hardfork( STEEM_HARDFORK_0_13__248 ) ) - { - FC_ASSERT( abs_rshares > STEEM_VOTE_DUST_THRESHOLD || abs_rshares == 1, "Voting weight is too small, please accumulate more voting power or steem power." ); - } - - - - // Lazily delete vote - if( itr != comment_vote_idx.end() && itr->num_changes == -1 ) - { - if( _db.has_hardfork( STEEM_HARDFORK_0_12__177 ) ) - FC_ASSERT( false, "Cannot vote again on a comment after payout." ); - - _db.remove( *itr ); - itr = comment_vote_idx.end(); - } - - if( itr == comment_vote_idx.end() ) - { - FC_ASSERT( o.weight != 0, "Vote weight cannot be 0." ); - /// this is the rshares voting for or against the post - int64_t rshares = o.weight < 0 ? -abs_rshares : abs_rshares; - - if( rshares > 0 ) - { - if( _db.has_hardfork( STEEM_HARDFORK_0_17__900 ) ) - FC_ASSERT( _db.head_block_time() < comment.cashout_time - STEEM_UPVOTE_LOCKOUT_HF17, "Cannot increase payout within last twelve hours before payout." ); - else if( _db.has_hardfork( STEEM_HARDFORK_0_7 ) ) - FC_ASSERT( _db.head_block_time() < _db.calculate_discussion_payout_time( comment ) - STEEM_UPVOTE_LOCKOUT_HF7, "Cannot increase payout within last minute before payout." ); - } - - //used_power /= (50*7); /// a 100% vote means use .28% of voting power which should force users to spread their votes around over 50+ posts day for a week - //if( used_power == 0 ) used_power = 1; - - _db.modify( voter, [&]( account_object& a ){ - a.voting_power = current_power - used_power; - a.last_vote_time = _db.head_block_time(); - }); - - /// if the current net_rshares is less than 0, the post is getting 0 rewards so it is not factored into total rshares^2 - fc::uint128_t old_rshares = std::max(comment.net_rshares.value, int64_t(0)); - const auto& root = _db.get( comment.root_comment ); - auto old_root_abs_rshares = root.children_abs_rshares.value; - - fc::uint128_t avg_cashout_sec; - - if( !_db.has_hardfork( STEEM_HARDFORK_0_17__769 ) ) - { - fc::uint128_t cur_cashout_time_sec = _db.calculate_discussion_payout_time( comment ).sec_since_epoch(); - fc::uint128_t new_cashout_time_sec; - - if( _db.has_hardfork( STEEM_HARDFORK_0_12__177 ) && !_db.has_hardfork( STEEM_HARDFORK_0_13__257) ) - new_cashout_time_sec = _db.head_block_time().sec_since_epoch() + STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF17; - else - new_cashout_time_sec = _db.head_block_time().sec_since_epoch() + STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF12; - - avg_cashout_sec = ( cur_cashout_time_sec * old_root_abs_rshares + new_cashout_time_sec * abs_rshares ) / ( old_root_abs_rshares + abs_rshares ); - } - - FC_ASSERT( abs_rshares > 0, "Cannot vote with 0 rshares." ); - - auto old_vote_rshares = comment.vote_rshares; - - _db.modify( comment, [&]( comment_object& c ){ - c.net_rshares += rshares; - c.abs_rshares += abs_rshares; - if( rshares > 0 ) - c.vote_rshares += rshares; - if( rshares > 0 ) - c.net_votes++; - else - c.net_votes--; - if( !_db.has_hardfork( STEEM_HARDFORK_0_6__114 ) && c.net_rshares == -c.abs_rshares) FC_ASSERT( c.net_votes < 0, "Comment has negative net votes?" ); - }); - - _db.modify( root, [&]( comment_object& c ) - { - c.children_abs_rshares += abs_rshares; - - if( !_db.has_hardfork( STEEM_HARDFORK_0_17__769 ) ) - { - if( _db.has_hardfork( STEEM_HARDFORK_0_12__177 ) && c.last_payout > fc::time_point_sec::min() ) - c.cashout_time = c.last_payout + STEEM_SECOND_CASHOUT_WINDOW; - else - c.cashout_time = fc::time_point_sec( std::min( uint32_t( avg_cashout_sec.to_uint64() ), c.max_cashout_time.sec_since_epoch() ) ); - - if( c.max_cashout_time == fc::time_point_sec::maximum() ) - c.max_cashout_time = _db.head_block_time() + fc::seconds( STEEM_MAX_CASHOUT_WINDOW_SECONDS ); - } - }); - - fc::uint128_t new_rshares = std::max( comment.net_rshares.value, int64_t(0)); - - /// calculate rshares2 value - new_rshares = util::evaluate_reward_curve( new_rshares ); - old_rshares = util::evaluate_reward_curve( old_rshares ); - - uint64_t max_vote_weight = 0; - - /** this verifies uniqueness of voter - * - * cv.weight / c.total_vote_weight ==> % of rshares increase that is accounted for by the vote - * - * W(R) = B * R / ( R + 2S ) - * W(R) is bounded above by B. B is fixed at 2^64 - 1, so all weights fit in a 64 bit integer. - * - * The equation for an individual vote is: - * W(R_N) - W(R_N-1), which is the delta increase of proportional weight - * - * c.total_vote_weight = - * W(R_1) - W(R_0) + - * W(R_2) - W(R_1) + ... - * W(R_N) - W(R_N-1) = W(R_N) - W(R_0) - * - * Since W(R_0) = 0, c.total_vote_weight is also bounded above by B and will always fit in a 64 bit integer. - * - **/ - _db.create( [&]( comment_vote_object& cv ){ - cv.voter = voter.id; - cv.comment = comment.id; - cv.rshares = rshares; - cv.vote_percent = o.weight; - cv.last_update = _db.head_block_time(); - - bool curation_reward_eligible = rshares > 0 && (comment.last_payout == fc::time_point_sec()) && comment.allow_curation_rewards; - - if( curation_reward_eligible && _db.has_hardfork( STEEM_HARDFORK_0_17__774 ) ) - curation_reward_eligible = _db.get_curation_rewards_percent( comment ) > 0; - - if( curation_reward_eligible ) - { - if( comment.created < fc::time_point_sec(STEEM_HARDFORK_0_6_REVERSE_AUCTION_TIME) ) { - u512 rshares3(rshares); - u256 total2( comment.abs_rshares.value ); - - if( !_db.has_hardfork( STEEM_HARDFORK_0_1 ) ) - { - rshares3 *= 1000000; - total2 *= 1000000; - } - - rshares3 = rshares3 * rshares3 * rshares3; - - total2 *= total2; - cv.weight = static_cast( rshares3 / total2 ); - } else {// cv.weight = W(R_1) - W(R_0) - const uint128_t two_s = 2 * util::get_content_constant_s(); - if( _db.has_hardfork( STEEM_HARDFORK_0_17__774 ) ) - { - const auto& reward_fund = _db.get_reward_fund( comment ); - auto curve = !_db.has_hardfork( STEEM_HARDFORK_0_19__1052 ) && comment.created > STEEM_HF_19_SQRT_PRE_CALC - ? curve_id::square_root : reward_fund.curation_reward_curve; - uint64_t old_weight = util::evaluate_reward_curve( old_vote_rshares.value, curve, reward_fund.content_constant ).to_uint64(); - uint64_t new_weight = util::evaluate_reward_curve( comment.vote_rshares.value, curve, reward_fund.content_constant ).to_uint64(); - cv.weight = new_weight - old_weight; - } - else if ( _db.has_hardfork( STEEM_HARDFORK_0_1 ) ) - { - uint64_t old_weight = ( ( std::numeric_limits< uint64_t >::max() * fc::uint128_t( old_vote_rshares.value ) ) / ( two_s + old_vote_rshares.value ) ).to_uint64(); - uint64_t new_weight = ( ( std::numeric_limits< uint64_t >::max() * fc::uint128_t( comment.vote_rshares.value ) ) / ( two_s + comment.vote_rshares.value ) ).to_uint64(); - cv.weight = new_weight - old_weight; - } - else - { - uint64_t old_weight = ( ( std::numeric_limits< uint64_t >::max() * fc::uint128_t( 1000000 * old_vote_rshares.value ) ) / ( two_s + ( 1000000 * old_vote_rshares.value ) ) ).to_uint64(); - uint64_t new_weight = ( ( std::numeric_limits< uint64_t >::max() * fc::uint128_t( 1000000 * comment.vote_rshares.value ) ) / ( two_s + ( 1000000 * comment.vote_rshares.value ) ) ).to_uint64(); - cv.weight = new_weight - old_weight; - } - } - - max_vote_weight = cv.weight; - - if( _db.head_block_time() > fc::time_point_sec(STEEM_HARDFORK_0_6_REVERSE_AUCTION_TIME) ) /// start enforcing this prior to the hardfork - { - /// discount weight by time - uint128_t w(max_vote_weight); - uint64_t delta_t = std::min( uint64_t((cv.last_update - comment.created).to_seconds()), uint64_t(STEEM_REVERSE_AUCTION_WINDOW_SECONDS) ); - - w *= delta_t; - w /= STEEM_REVERSE_AUCTION_WINDOW_SECONDS; - cv.weight = w.to_uint64(); - } - } - else - { - cv.weight = 0; - } - }); - - if( max_vote_weight ) // Optimization - { - _db.modify( comment, [&]( comment_object& c ) - { - c.total_vote_weight += max_vote_weight; - }); - } - if( !_db.has_hardfork( STEEM_HARDFORK_0_17__774) ) - _db.adjust_rshares2( comment, old_rshares, new_rshares ); - } - else - { - FC_ASSERT( itr->num_changes < STEEM_MAX_VOTE_CHANGES, "Voter has used the maximum number of vote changes on this comment." ); - - if( _db.has_hardfork( STEEM_HARDFORK_0_6__112 ) ) - FC_ASSERT( itr->vote_percent != o.weight, "You have already voted in a similar way." ); - - /// this is the rshares voting for or against the post - int64_t rshares = o.weight < 0 ? -abs_rshares : abs_rshares; - - if( itr->rshares < rshares ) - { - if( _db.has_hardfork( STEEM_HARDFORK_0_17__900 ) ) - FC_ASSERT( _db.head_block_time() < comment.cashout_time - STEEM_UPVOTE_LOCKOUT_HF17, "Cannot increase payout within last twelve hours before payout." ); - else if( _db.has_hardfork( STEEM_HARDFORK_0_7 ) ) - FC_ASSERT( _db.head_block_time() < _db.calculate_discussion_payout_time( comment ) - STEEM_UPVOTE_LOCKOUT_HF7, "Cannot increase payout within last minute before payout." ); - } - - _db.modify( voter, [&]( account_object& a ){ - a.voting_power = current_power - used_power; - a.last_vote_time = _db.head_block_time(); - }); - - /// if the current net_rshares is less than 0, the post is getting 0 rewards so it is not factored into total rshares^2 - fc::uint128_t old_rshares = std::max(comment.net_rshares.value, int64_t(0)); - const auto& root = _db.get( comment.root_comment ); - auto old_root_abs_rshares = root.children_abs_rshares.value; - - fc::uint128_t avg_cashout_sec; - - if( !_db.has_hardfork( STEEM_HARDFORK_0_17__769 ) ) - { - fc::uint128_t cur_cashout_time_sec = _db.calculate_discussion_payout_time( comment ).sec_since_epoch(); - fc::uint128_t new_cashout_time_sec; - - if( _db.has_hardfork( STEEM_HARDFORK_0_12__177 ) && ! _db.has_hardfork( STEEM_HARDFORK_0_13__257 ) ) - new_cashout_time_sec = _db.head_block_time().sec_since_epoch() + STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF17; - else - new_cashout_time_sec = _db.head_block_time().sec_since_epoch() + STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF12; - - if( _db.has_hardfork( STEEM_HARDFORK_0_14__259 ) && abs_rshares == 0 ) - avg_cashout_sec = cur_cashout_time_sec; - else - avg_cashout_sec = ( cur_cashout_time_sec * old_root_abs_rshares + new_cashout_time_sec * abs_rshares ) / ( old_root_abs_rshares + abs_rshares ); - } - - _db.modify( comment, [&]( comment_object& c ) - { - c.net_rshares -= itr->rshares; - c.net_rshares += rshares; - c.abs_rshares += abs_rshares; - - /// TODO: figure out how to handle remove a vote (rshares == 0 ) - if( rshares > 0 && itr->rshares < 0 ) - c.net_votes += 2; - else if( rshares > 0 && itr->rshares == 0 ) - c.net_votes += 1; - else if( rshares == 0 && itr->rshares < 0 ) - c.net_votes += 1; - else if( rshares == 0 && itr->rshares > 0 ) - c.net_votes -= 1; - else if( rshares < 0 && itr->rshares == 0 ) - c.net_votes -= 1; - else if( rshares < 0 && itr->rshares > 0 ) - c.net_votes -= 2; - }); - - _db.modify( root, [&]( comment_object& c ) - { - c.children_abs_rshares += abs_rshares; - - if( !_db.has_hardfork( STEEM_HARDFORK_0_17__769 ) ) - { - if( _db.has_hardfork( STEEM_HARDFORK_0_12__177 ) && c.last_payout > fc::time_point_sec::min() ) - c.cashout_time = c.last_payout + STEEM_SECOND_CASHOUT_WINDOW; - else - c.cashout_time = fc::time_point_sec( std::min( uint32_t( avg_cashout_sec.to_uint64() ), c.max_cashout_time.sec_since_epoch() ) ); - - if( c.max_cashout_time == fc::time_point_sec::maximum() ) - c.max_cashout_time = _db.head_block_time() + fc::seconds( STEEM_MAX_CASHOUT_WINDOW_SECONDS ); - } - }); - - fc::uint128_t new_rshares = std::max( comment.net_rshares.value, int64_t(0)); - - /// calculate rshares2 value - new_rshares = util::evaluate_reward_curve( new_rshares ); - old_rshares = util::evaluate_reward_curve( old_rshares ); - - - _db.modify( comment, [&]( comment_object& c ) - { - c.total_vote_weight -= itr->weight; - }); - - _db.modify( *itr, [&]( comment_vote_object& cv ) - { - cv.rshares = rshares; - cv.vote_percent = o.weight; - cv.last_update = _db.head_block_time(); - cv.weight = 0; - cv.num_changes += 1; - }); - - if( !_db.has_hardfork( STEEM_HARDFORK_0_17__774) ) - _db.adjust_rshares2( comment, old_rshares, new_rshares ); - } - -} FC_CAPTURE_AND_RETHROW( (o)) } - -void custom_evaluator::do_apply( const custom_operation& o ){} - -void custom_json_evaluator::do_apply( const custom_json_operation& o ) -{ - database& d = db(); - std::shared_ptr< custom_operation_interpreter > eval = d.get_custom_json_evaluator( o.id ); - if( !eval ) - return; - - try - { - eval->apply( o ); - } - catch( const fc::exception& e ) - { - if( d.is_producing() ) - throw e; - } - catch(...) - { - elog( "Unexpected exception applying custom json evaluator." ); - } -} - - -void custom_binary_evaluator::do_apply( const custom_binary_operation& o ) -{ - database& d = db(); - FC_ASSERT( d.has_hardfork( STEEM_HARDFORK_0_14__317 ) ); - - std::shared_ptr< custom_operation_interpreter > eval = d.get_custom_json_evaluator( o.id ); - if( !eval ) - return; - - try - { - eval->apply( o ); - } - catch( const fc::exception& e ) - { - if( d.is_producing() ) - throw e; - } - catch(...) - { - elog( "Unexpected exception applying custom json evaluator." ); - } -} - - -template -void pow_apply( database& db, Operation o ) -{ - const auto& dgp = db.get_dynamic_global_properties(); - - if( db.has_hardfork( STEEM_HARDFORK_0_5__59 ) ) - { - const auto& witness_by_work = db.get_index().indices().get(); - auto work_itr = witness_by_work.find( o.work.work ); - if( work_itr != witness_by_work.end() ) - { - FC_ASSERT( !"DUPLICATE WORK DISCOVERED", "${w} ${witness}",("w",o)("wit",*work_itr) ); - } - } - - const auto& accounts_by_name = db.get_index().indices().get(); - - auto itr = accounts_by_name.find(o.get_worker_account()); - if(itr == accounts_by_name.end()) - { - db.create< account_object >( [&]( account_object& acc ) - { - acc.name = o.get_worker_account(); - acc.memo_key = o.work.worker; - acc.created = dgp.time; - acc.last_vote_time = dgp.time; - - if( !db.has_hardfork( STEEM_HARDFORK_0_11__169 ) ) - acc.recovery_account = "steem"; - else - acc.recovery_account = ""; /// highest voted witness at time of recovery - }); - - db.create< account_authority_object >( [&]( account_authority_object& auth ) - { - auth.account = o.get_worker_account(); - auth.owner = authority( 1, o.work.worker, 1); - auth.active = auth.owner; - auth.posting = auth.owner; - }); - } - - const auto& worker_account = db.get_account( o.get_worker_account() ); // verify it exists - const auto& worker_auth = db.get< account_authority_object, by_account >( o.get_worker_account() ); - FC_ASSERT( worker_auth.active.num_auths() == 1, "Miners can only have one key authority. ${a}", ("a",worker_auth.active) ); - FC_ASSERT( worker_auth.active.key_auths.size() == 1, "Miners may only have one key authority." ); - FC_ASSERT( worker_auth.active.key_auths.begin()->first == o.work.worker, "Work must be performed by key that signed the work." ); - FC_ASSERT( o.block_id == db.head_block_id(), "pow not for last block" ); - if( db.has_hardfork( STEEM_HARDFORK_0_13__256 ) ) - FC_ASSERT( worker_account.last_account_update < db.head_block_time(), "Worker account must not have updated their account this block." ); - - fc::sha256 target = db.get_pow_target(); - - FC_ASSERT( o.work.work < target, "Work lacks sufficient difficulty." ); - - db.modify( dgp, [&]( dynamic_global_property_object& p ) - { - p.total_pow++; // make sure this doesn't break anything... - p.num_pow_witnesses++; - }); - - - const witness_object* cur_witness = db.find_witness( worker_account.name ); - if( cur_witness ) { - FC_ASSERT( cur_witness->pow_worker == 0, "This account is already scheduled for pow block production." ); - db.modify(*cur_witness, [&]( witness_object& w ){ - copy_legacy_chain_properties< true >( w.props, o.props ); - w.pow_worker = dgp.total_pow; - w.last_work = o.work.work; - }); - } else { - db.create( [&]( witness_object& w ) - { - w.owner = o.get_worker_account(); - copy_legacy_chain_properties< true >( w.props, o.props ); - w.signing_key = o.work.worker; - w.pow_worker = dgp.total_pow; - w.last_work = o.work.work; - }); - } - /// POW reward depends upon whether we are before or after MINER_VOTING kicks in - asset pow_reward = db.get_pow_reward(); - if( db.head_block_num() < STEEM_START_MINER_VOTING_BLOCK ) - pow_reward.amount *= STEEM_MAX_WITNESSES; - db.adjust_supply( pow_reward, true ); - - /// pay the witness that includes this POW - const auto& inc_witness = db.get_account( dgp.current_witness ); - if( db.head_block_num() < STEEM_START_MINER_VOTING_BLOCK ) - db.adjust_balance( inc_witness, pow_reward ); - else - db.create_vesting( inc_witness, pow_reward ); -} - -void pow_evaluator::do_apply( const pow_operation& o ) { - FC_ASSERT( !db().has_hardfork( STEEM_HARDFORK_0_13__256 ), "pow is deprecated. Use pow2 instead" ); - pow_apply( db(), o ); -} - - -void pow2_evaluator::do_apply( const pow2_operation& o ) -{ - database& db = this->db(); - FC_ASSERT( !db.has_hardfork( STEEM_HARDFORK_0_17__770 ), "mining is now disabled" ); - - const auto& dgp = db.get_dynamic_global_properties(); - uint32_t target_pow = db.get_pow_summary_target(); - account_name_type worker_account; - - if( db.has_hardfork( STEEM_HARDFORK_0_16__551 ) ) - { - const auto& work = o.work.get< equihash_pow >(); - FC_ASSERT( work.prev_block == db.head_block_id(), "Equihash pow op not for last block" ); - auto recent_block_num = protocol::block_header::num_from_id( work.input.prev_block ); - FC_ASSERT( recent_block_num > dgp.last_irreversible_block_num, - "Equihash pow done for block older than last irreversible block num" ); - FC_ASSERT( work.pow_summary < target_pow, "Insufficient work difficulty. Work: ${w}, Target: ${t}", ("w",work.pow_summary)("t", target_pow) ); - worker_account = work.input.worker_account; - } - else - { - const auto& work = o.work.get< pow2 >(); - FC_ASSERT( work.input.prev_block == db.head_block_id(), "Work not for last block" ); - FC_ASSERT( work.pow_summary < target_pow, "Insufficient work difficulty. Work: ${w}, Target: ${t}", ("w",work.pow_summary)("t", target_pow) ); - worker_account = work.input.worker_account; - } - - FC_ASSERT( o.props.maximum_block_size >= STEEM_MIN_BLOCK_SIZE_LIMIT * 2, "Voted maximum block size is too small." ); - - db.modify( dgp, [&]( dynamic_global_property_object& p ) - { - p.total_pow++; - p.num_pow_witnesses++; - }); - - const auto& accounts_by_name = db.get_index().indices().get(); - auto itr = accounts_by_name.find( worker_account ); - if(itr == accounts_by_name.end()) - { - FC_ASSERT( o.new_owner_key.valid(), "New owner key is not valid." ); - db.create< account_object >( [&]( account_object& acc ) - { - acc.name = worker_account; - acc.memo_key = *o.new_owner_key; - acc.created = dgp.time; - acc.last_vote_time = dgp.time; - acc.recovery_account = ""; /// highest voted witness at time of recovery - }); - - db.create< account_authority_object >( [&]( account_authority_object& auth ) - { - auth.account = worker_account; - auth.owner = authority( 1, *o.new_owner_key, 1); - auth.active = auth.owner; - auth.posting = auth.owner; - }); - - db.create( [&]( witness_object& w ) - { - w.owner = worker_account; - copy_legacy_chain_properties< true >( w.props, o.props ); - w.signing_key = *o.new_owner_key; - w.pow_worker = dgp.total_pow; - }); - } - else - { - FC_ASSERT( !o.new_owner_key.valid(), "Cannot specify an owner key unless creating account." ); - const witness_object* cur_witness = db.find_witness( worker_account ); - FC_ASSERT( cur_witness, "Witness must be created for existing account before mining."); - FC_ASSERT( cur_witness->pow_worker == 0, "This account is already scheduled for pow block production." ); - db.modify(*cur_witness, [&]( witness_object& w ) - { - copy_legacy_chain_properties< true >( w.props, o.props ); - w.pow_worker = dgp.total_pow; - }); - } - - if( !db.has_hardfork( STEEM_HARDFORK_0_16__551) ) - { - /// pay the witness that includes this POW - asset inc_reward = db.get_pow_reward(); - db.adjust_supply( inc_reward, true ); - - const auto& inc_witness = db.get_account( dgp.current_witness ); - db.create_vesting( inc_witness, inc_reward ); - } -} - -void feed_publish_evaluator::do_apply( const feed_publish_operation& o ) -{ - if( _db.has_hardfork( STEEM_HARDFORK_0_20__409 ) ) - FC_ASSERT( is_asset_type( o.exchange_rate.base, SBD_SYMBOL ) && is_asset_type( o.exchange_rate.quote, STEEM_SYMBOL ), - "Price feed must be a SBD/STEEM price" ); - - const auto& witness = _db.get_witness( o.publisher ); - _db.modify( witness, [&]( witness_object& w ) - { - w.sbd_exchange_rate = o.exchange_rate; - w.last_sbd_exchange_update = _db.head_block_time(); - }); -} - -void convert_evaluator::do_apply( const convert_operation& o ) -{ - FC_ASSERT( _db.get_balance( o.owner, o.amount.symbol ) >= o.amount, "Account does not have sufficient balance for conversion." ); - - _db.adjust_balance( o.owner, -o.amount ); - - const auto& fhistory = _db.get_feed_history(); - FC_ASSERT( !fhistory.current_median_history.is_null(), "Cannot convert SBD because there is no price feed." ); - - auto steem_conversion_delay = STEEM_CONVERSION_DELAY_PRE_HF_16; - if( _db.has_hardfork( STEEM_HARDFORK_0_16__551) ) - steem_conversion_delay = STEEM_CONVERSION_DELAY; - - _db.create( [&]( convert_request_object& obj ) - { - obj.owner = o.owner; - obj.requestid = o.requestid; - obj.amount = o.amount; - obj.conversion_date = _db.head_block_time() + steem_conversion_delay; - }); - -} - -void limit_order_create_evaluator::do_apply( const limit_order_create_operation& o ) -{ - FC_ASSERT( o.expiration > _db.head_block_time(), "Limit order has to expire after head block time." ); - - FC_ASSERT( _db.get_balance( o.owner, o.amount_to_sell.symbol ) >= o.amount_to_sell, "Account does not have sufficient funds for limit order." ); - - _db.adjust_balance( o.owner, -o.amount_to_sell ); - - const auto& order = _db.create( [&]( limit_order_object& obj ) - { - obj.created = _db.head_block_time(); - obj.seller = o.owner; - obj.orderid = o.orderid; - obj.for_sale = o.amount_to_sell.amount; - obj.sell_price = o.get_price(); - obj.expiration = o.expiration; - }); - - bool filled = _db.apply_order( order ); - - if( o.fill_or_kill ) FC_ASSERT( filled, "Cancelling order because it was not filled." ); -} - -void limit_order_create2_evaluator::do_apply( const limit_order_create2_operation& o ) -{ - FC_ASSERT( o.expiration > _db.head_block_time(), "Limit order has to expire after head block time." ); - - FC_ASSERT( _db.get_balance( o.owner, o.amount_to_sell.symbol ) >= o.amount_to_sell, "Account does not have sufficient funds for limit order." ); - - _db.adjust_balance( o.owner, -o.amount_to_sell ); - - const auto& order = _db.create( [&]( limit_order_object& obj ) - { - obj.created = _db.head_block_time(); - obj.seller = o.owner; - obj.orderid = o.orderid; - obj.for_sale = o.amount_to_sell.amount; - obj.sell_price = o.exchange_rate; - obj.expiration = o.expiration; - }); - - bool filled = _db.apply_order( order ); - - if( o.fill_or_kill ) FC_ASSERT( filled, "Cancelling order because it was not filled." ); -} - -void limit_order_cancel_evaluator::do_apply( const limit_order_cancel_operation& o ) -{ - _db.cancel_order( _db.get_limit_order( o.owner, o.orderid ) ); -} - -void report_over_production_evaluator::do_apply( const report_over_production_operation& o ) -{ - FC_ASSERT( !_db.has_hardfork( STEEM_HARDFORK_0_4 ), "report_over_production_operation is disabled." ); -} - -void placeholder_a_evaluator::do_apply( const placeholder_a_operation& o ) -{ - FC_ASSERT( false, "This is not a valid op." ); -} - -void placeholder_b_evaluator::do_apply( const placeholder_b_operation& o ) -{ - FC_ASSERT( false, "This is not a valid op" ); -} - -void request_account_recovery_evaluator::do_apply( const request_account_recovery_operation& o ) -{ - const auto& account_to_recover = _db.get_account( o.account_to_recover ); - - if ( account_to_recover.recovery_account.length() ) // Make sure recovery matches expected recovery account - FC_ASSERT( account_to_recover.recovery_account == o.recovery_account, "Cannot recover an account that does not have you as there recovery partner." ); - else // Empty string recovery account defaults to top witness - FC_ASSERT( _db.get_index< witness_index >().indices().get< by_vote_name >().begin()->owner == o.recovery_account, "Top witness must recover an account with no recovery partner." ); - - const auto& recovery_request_idx = _db.get_index< account_recovery_request_index >().indices().get< by_account >(); - auto request = recovery_request_idx.find( o.account_to_recover ); - - if( request == recovery_request_idx.end() ) // New Request - { - FC_ASSERT( !o.new_owner_authority.is_impossible(), "Cannot recover using an impossible authority." ); - FC_ASSERT( o.new_owner_authority.weight_threshold, "Cannot recover using an open authority." ); - - // Check accounts in the new authority exist - if( ( _db.has_hardfork( STEEM_HARDFORK_0_15__465 ) ) ) - { - for( auto& a : o.new_owner_authority.account_auths ) - { - _db.get_account( a.first ); - } - } - - _db.create< account_recovery_request_object >( [&]( account_recovery_request_object& req ) - { - req.account_to_recover = o.account_to_recover; - req.new_owner_authority = o.new_owner_authority; - req.expires = _db.head_block_time() + STEEM_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD; - }); - } - else if( o.new_owner_authority.weight_threshold == 0 ) // Cancel Request if authority is open - { - _db.remove( *request ); - } - else // Change Request - { - FC_ASSERT( !o.new_owner_authority.is_impossible(), "Cannot recover using an impossible authority." ); - - // Check accounts in the new authority exist - if( ( _db.has_hardfork( STEEM_HARDFORK_0_15__465 ) ) ) - { - for( auto& a : o.new_owner_authority.account_auths ) - { - _db.get_account( a.first ); - } - } - - _db.modify( *request, [&]( account_recovery_request_object& req ) - { - req.new_owner_authority = o.new_owner_authority; - req.expires = _db.head_block_time() + STEEM_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD; - }); - } -} - -void recover_account_evaluator::do_apply( const recover_account_operation& o ) -{ - const auto& account = _db.get_account( o.account_to_recover ); - - if( _db.has_hardfork( STEEM_HARDFORK_0_12 ) ) - FC_ASSERT( _db.head_block_time() - account.last_account_recovery > STEEM_OWNER_UPDATE_LIMIT, "Owner authority can only be updated once an hour." ); - - const auto& recovery_request_idx = _db.get_index< account_recovery_request_index >().indices().get< by_account >(); - auto request = recovery_request_idx.find( o.account_to_recover ); - - FC_ASSERT( request != recovery_request_idx.end(), "There are no active recovery requests for this account." ); - FC_ASSERT( request->new_owner_authority == o.new_owner_authority, "New owner authority does not match recovery request." ); - - const auto& recent_auth_idx = _db.get_index< owner_authority_history_index >().indices().get< by_account >(); - auto hist = recent_auth_idx.lower_bound( o.account_to_recover ); - bool found = false; - - while( hist != recent_auth_idx.end() && hist->account == o.account_to_recover && !found ) - { - found = hist->previous_owner_authority == o.recent_owner_authority; - if( found ) break; - ++hist; - } - - FC_ASSERT( found, "Recent authority not found in authority history." ); - - _db.remove( *request ); // Remove first, update_owner_authority may invalidate iterator - _db.update_owner_authority( account, o.new_owner_authority ); - _db.modify( account, [&]( account_object& a ) - { - a.last_account_recovery = _db.head_block_time(); - }); -} - -void change_recovery_account_evaluator::do_apply( const change_recovery_account_operation& o ) -{ - _db.get_account( o.new_recovery_account ); // Simply validate account exists - const auto& account_to_recover = _db.get_account( o.account_to_recover ); - - const auto& change_recovery_idx = _db.get_index< change_recovery_account_request_index >().indices().get< by_account >(); - auto request = change_recovery_idx.find( o.account_to_recover ); - - if( request == change_recovery_idx.end() ) // New request - { - _db.create< change_recovery_account_request_object >( [&]( change_recovery_account_request_object& req ) - { - req.account_to_recover = o.account_to_recover; - req.recovery_account = o.new_recovery_account; - req.effective_on = _db.head_block_time() + STEEM_OWNER_AUTH_RECOVERY_PERIOD; - }); - } - else if( account_to_recover.recovery_account != o.new_recovery_account ) // Change existing request - { - _db.modify( *request, [&]( change_recovery_account_request_object& req ) - { - req.recovery_account = o.new_recovery_account; - req.effective_on = _db.head_block_time() + STEEM_OWNER_AUTH_RECOVERY_PERIOD; - }); - } - else // Request exists and changing back to current recovery account - { - _db.remove( *request ); - } -} - -void transfer_to_savings_evaluator::do_apply( const transfer_to_savings_operation& op ) -{ - const auto& from = _db.get_account( op.from ); - const auto& to = _db.get_account(op.to); - FC_ASSERT( _db.get_balance( from, op.amount.symbol ) >= op.amount, "Account does not have sufficient funds to transfer to savings." ); - - _db.adjust_balance( from, -op.amount ); - _db.adjust_savings_balance( to, op.amount ); -} - -void transfer_from_savings_evaluator::do_apply( const transfer_from_savings_operation& op ) -{ - const auto& from = _db.get_account( op.from ); - _db.get_account(op.to); // Verify to account exists - - FC_ASSERT( from.savings_withdraw_requests < STEEM_SAVINGS_WITHDRAW_REQUEST_LIMIT, "Account has reached limit for pending withdraw requests." ); - - FC_ASSERT( _db.get_savings_balance( from, op.amount.symbol ) >= op.amount ); - _db.adjust_savings_balance( from, -op.amount ); - _db.create( [&]( savings_withdraw_object& s ) { - s.from = op.from; - s.to = op.to; - s.amount = op.amount; -#ifndef IS_LOW_MEM - from_string( s.memo, op.memo ); -#endif - s.request_id = op.request_id; - s.complete = _db.head_block_time() + STEEM_SAVINGS_WITHDRAW_TIME; - }); - - _db.modify( from, [&]( account_object& a ) - { - a.savings_withdraw_requests++; - }); -} - -void cancel_transfer_from_savings_evaluator::do_apply( const cancel_transfer_from_savings_operation& op ) -{ - const auto& swo = _db.get_savings_withdraw( op.from, op.request_id ); - _db.adjust_savings_balance( _db.get_account( swo.from ), swo.amount ); - _db.remove( swo ); - - const auto& from = _db.get_account( op.from ); - _db.modify( from, [&]( account_object& a ) - { - a.savings_withdraw_requests--; - }); -} - -void decline_voting_rights_evaluator::do_apply( const decline_voting_rights_operation& o ) -{ - FC_ASSERT( _db.has_hardfork( STEEM_HARDFORK_0_14__324 ) ); - - const auto& account = _db.get_account( o.account ); - const auto& request_idx = _db.get_index< decline_voting_rights_request_index >().indices().get< by_account >(); - auto itr = request_idx.find( account.name ); - - if( o.decline ) - { - FC_ASSERT( itr == request_idx.end(), "Cannot create new request because one already exists." ); - - _db.create< decline_voting_rights_request_object >( [&]( decline_voting_rights_request_object& req ) - { - req.account = account.name; - req.effective_date = _db.head_block_time() + STEEM_OWNER_AUTH_RECOVERY_PERIOD; - }); - } - else - { - FC_ASSERT( itr != request_idx.end(), "Cannot cancel the request because it does not exist." ); - _db.remove( *itr ); - } -} - -void reset_account_evaluator::do_apply( const reset_account_operation& op ) -{ - FC_ASSERT( false, "Reset Account Operation is currently disabled." ); -/* - const auto& acnt = _db.get_account( op.account_to_reset ); - auto band = _db.find< account_bandwidth_object, by_account_bandwidth_type >( boost::make_tuple( op.account_to_reset, bandwidth_type::old_forum ) ); - if( band != nullptr ) - FC_ASSERT( ( _db.head_block_time() - band->last_bandwidth_update ) > fc::days(60), "Account must be inactive for 60 days to be eligible for reset" ); - FC_ASSERT( acnt.reset_account == op.reset_account, "Reset account does not match reset account on account." ); - - _db.update_owner_authority( acnt, op.new_owner_authority ); -*/ -} - -void set_reset_account_evaluator::do_apply( const set_reset_account_operation& op ) -{ - FC_ASSERT( false, "Set Reset Account Operation is currently disabled." ); -/* - const auto& acnt = _db.get_account( op.account ); - _db.get_account( op.reset_account ); - - FC_ASSERT( acnt.reset_account == op.current_reset_account, "Current reset account does not match reset account on account." ); - FC_ASSERT( acnt.reset_account != op.reset_account, "Reset account must change" ); - - _db.modify( acnt, [&]( account_object& a ) - { - a.reset_account = op.reset_account; - }); -*/ -} - -void claim_reward_balance_evaluator::do_apply( const claim_reward_balance_operation& op ) -{ - const auto& acnt = _db.get_account( op.account ); - - FC_ASSERT( op.reward_steem <= acnt.reward_steem_balance, "Cannot claim that much STEEM. Claim: ${c} Actual: ${a}", - ("c", op.reward_steem)("a", acnt.reward_steem_balance) ); - FC_ASSERT( op.reward_sbd <= acnt.reward_sbd_balance, "Cannot claim that much SBD. Claim: ${c} Actual: ${a}", - ("c", op.reward_sbd)("a", acnt.reward_sbd_balance) ); - FC_ASSERT( op.reward_vests <= acnt.reward_vesting_balance, "Cannot claim that much VESTS. Claim: ${c} Actual: ${a}", - ("c", op.reward_vests)("a", acnt.reward_vesting_balance) ); - - asset reward_vesting_steem_to_move = asset( 0, STEEM_SYMBOL ); - if( op.reward_vests == acnt.reward_vesting_balance ) - reward_vesting_steem_to_move = acnt.reward_vesting_steem; - else - reward_vesting_steem_to_move = asset( ( ( uint128_t( op.reward_vests.amount.value ) * uint128_t( acnt.reward_vesting_steem.amount.value ) ) - / uint128_t( acnt.reward_vesting_balance.amount.value ) ).to_uint64(), STEEM_SYMBOL ); - - _db.adjust_reward_balance( acnt, -op.reward_steem ); - _db.adjust_reward_balance( acnt, -op.reward_sbd ); - _db.adjust_balance( acnt, op.reward_steem ); - _db.adjust_balance( acnt, op.reward_sbd ); - - _db.modify( acnt, [&]( account_object& a ) - { - a.vesting_shares += op.reward_vests; - a.reward_vesting_balance -= op.reward_vests; - a.reward_vesting_steem -= reward_vesting_steem_to_move; - }); - - _db.modify( _db.get_dynamic_global_properties(), [&]( dynamic_global_property_object& gpo ) - { - gpo.total_vesting_shares += op.reward_vests; - gpo.total_vesting_fund_steem += reward_vesting_steem_to_move; - - gpo.pending_rewarded_vesting_shares -= op.reward_vests; - gpo.pending_rewarded_vesting_steem -= reward_vesting_steem_to_move; - }); - - _db.adjust_proxied_witness_votes( acnt, op.reward_vests.amount ); -} - -#ifdef STEEM_ENABLE_SMT -void claim_reward_balance2_evaluator::do_apply( const claim_reward_balance2_operation& op ) -{ - const account_object* a = nullptr; // Lazily initialized below because it may turn out unnecessary. - - for( const asset& token : op.reward_tokens ) - { - if( token.amount == 0 ) - continue; - - if( token.symbol.space() == asset_symbol_type::smt_nai_space ) - { - _db.adjust_reward_balance( op.account, -token ); - _db.adjust_balance( op.account, token ); - } - else - { - // Lazy init here. - if( a == nullptr ) - { - a = _db.find_account( op.account ); - FC_ASSERT( a != nullptr, "Could NOT find account ${a}", ("a", op.account) ); - } - - if( token.symbol == VESTS_SYMBOL) - { - FC_ASSERT( token <= a->reward_vesting_balance, "Cannot claim that much VESTS. Claim: ${c} Actual: ${a}", - ("c", token)("a", a->reward_vesting_balance) ); - - asset reward_vesting_steem_to_move = asset( 0, STEEM_SYMBOL ); - if( token == a->reward_vesting_balance ) - reward_vesting_steem_to_move = a->reward_vesting_steem; - else - reward_vesting_steem_to_move = asset( ( ( uint128_t( token.amount.value ) * uint128_t( a->reward_vesting_steem.amount.value ) ) - / uint128_t( a->reward_vesting_balance.amount.value ) ).to_uint64(), STEEM_SYMBOL ); - - _db.modify( *a, [&]( account_object& a ) - { - a.vesting_shares += token; - a.reward_vesting_balance -= token; - a.reward_vesting_steem -= reward_vesting_steem_to_move; - }); - - _db.modify( _db.get_dynamic_global_properties(), [&]( dynamic_global_property_object& gpo ) - { - gpo.total_vesting_shares += token; - gpo.total_vesting_fund_steem += reward_vesting_steem_to_move; - - gpo.pending_rewarded_vesting_shares -= token; - gpo.pending_rewarded_vesting_steem -= reward_vesting_steem_to_move; - }); - - _db.adjust_proxied_witness_votes( *a, token.amount ); - } - else if( token.symbol == STEEM_SYMBOL || token.symbol == SBD_SYMBOL ) - { - FC_ASSERT( is_asset_type( token, STEEM_SYMBOL ) == false || token <= a->reward_steem_balance, - "Cannot claim that much STEEM. Claim: ${c} Actual: ${a}", ("c", token)("a", a->reward_steem_balance) ); - FC_ASSERT( is_asset_type( token, SBD_SYMBOL ) == false || token <= a->reward_sbd_balance, - "Cannot claim that much SBD. Claim: ${c} Actual: ${a}", ("c", token)("a", a->reward_sbd_balance) ); - _db.adjust_reward_balance( *a, -token ); - _db.adjust_balance( *a, token ); - } - else - FC_ASSERT( false, "Unknown asset symbol" ); - } // non-SMT token - } // for( const auto& token : op.reward_tokens ) -} -#endif - -void delegate_vesting_shares_evaluator::do_apply( const delegate_vesting_shares_operation& op ) -{ - const auto& delegator = _db.get_account( op.delegator ); - const auto& delegatee = _db.get_account( op.delegatee ); - auto delegation = _db.find< vesting_delegation_object, by_delegation >( boost::make_tuple( op.delegator, op.delegatee ) ); - - auto available_shares = delegator.vesting_shares - delegator.delegated_vesting_shares - asset( delegator.to_withdraw - delegator.withdrawn, VESTS_SYMBOL ); - - const auto& wso = _db.get_witness_schedule_object(); - const auto& gpo = _db.get_dynamic_global_properties(); - auto min_delegation = asset( wso.median_props.account_creation_fee.amount * 10, STEEM_SYMBOL ) * gpo.get_vesting_share_price(); - auto min_update = wso.median_props.account_creation_fee * gpo.get_vesting_share_price(); - - // If delegation doesn't exist, create it - if( delegation == nullptr ) - { - FC_ASSERT( available_shares >= op.vesting_shares, "Account does not have enough vesting shares to delegate." ); - FC_ASSERT( op.vesting_shares >= min_delegation, "Account must delegate a minimum of ${v}", ("v", min_delegation) ); - - _db.create< vesting_delegation_object >( [&]( vesting_delegation_object& obj ) - { - obj.delegator = op.delegator; - obj.delegatee = op.delegatee; - obj.vesting_shares = op.vesting_shares; - obj.min_delegation_time = _db.head_block_time(); - }); - - _db.modify( delegator, [&]( account_object& a ) - { - a.delegated_vesting_shares += op.vesting_shares; - }); - - _db.modify( delegatee, [&]( account_object& a ) - { - a.received_vesting_shares += op.vesting_shares; - }); - } - // Else if the delegation is increasing - else if( op.vesting_shares >= delegation->vesting_shares ) - { - auto delta = op.vesting_shares - delegation->vesting_shares; - - FC_ASSERT( delta >= min_update, "Steem Power increase is not enough of a difference. min_update: ${min}", ("min", min_update) ); - FC_ASSERT( available_shares >= op.vesting_shares - delegation->vesting_shares, "Account does not have enough vesting shares to delegate." ); - - _db.modify( delegator, [&]( account_object& a ) - { - a.delegated_vesting_shares += delta; - }); - - _db.modify( delegatee, [&]( account_object& a ) - { - a.received_vesting_shares += delta; - }); - - _db.modify( *delegation, [&]( vesting_delegation_object& obj ) - { - obj.vesting_shares = op.vesting_shares; - }); - } - // Else the delegation is decreasing - else /* delegation->vesting_shares > op.vesting_shares */ - { - auto delta = delegation->vesting_shares - op.vesting_shares; - - if( op.vesting_shares.amount > 0 ) - { - FC_ASSERT( delta >= min_update, "Steem Power decrease is not enough of a difference. min_update: ${min}", ("min", min_update) ); - FC_ASSERT( op.vesting_shares >= min_delegation, "Delegation must be removed or leave minimum delegation amount of ${v}", ("v", min_delegation) ); - } - else - { - FC_ASSERT( delegation->vesting_shares.amount > 0, "Delegation would set vesting_shares to zero, but it is already zero"); - } - - _db.create< vesting_delegation_expiration_object >( [&]( vesting_delegation_expiration_object& obj ) - { - obj.delegator = op.delegator; - obj.vesting_shares = delta; - obj.expiration = std::max( _db.head_block_time() + STEEM_CASHOUT_WINDOW_SECONDS, delegation->min_delegation_time ); - }); - - _db.modify( delegatee, [&]( account_object& a ) - { - a.received_vesting_shares -= delta; - }); - - if( op.vesting_shares.amount > 0 ) - { - _db.modify( *delegation, [&]( vesting_delegation_object& obj ) - { - obj.vesting_shares = op.vesting_shares; - }); - } - else - { - _db.remove( *delegation ); - } - } -} - -} } // steem::chain diff --git a/libraries/chain/steem_objects.cpp b/libraries/chain/steem_objects.cpp deleted file mode 100644 index e6dcbd00..00000000 --- a/libraries/chain/steem_objects.cpp +++ /dev/null @@ -1,8 +0,0 @@ - -#include - -#include - -namespace steem { namespace chain { - -} } // steem::chain diff --git a/libraries/chain/transaction_object.cpp b/libraries/chain/transaction_object.cpp index 39b75a04..20e95264 100644 --- a/libraries/chain/transaction_object.cpp +++ b/libraries/chain/transaction_object.cpp @@ -1,6 +1,6 @@ -#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { const object* transaction_index::create(const std::function& constructor, object_id_type) { @@ -69,4 +69,4 @@ const object*transaction_index::get(object_id_type id) const return &*itr; } -} } // steem::chain +} } // sophiatx::chain diff --git a/libraries/chain/util/impacted.cpp b/libraries/chain/util/impacted.cpp index 179de98e..4b5421dd 100644 --- a/libraries/chain/util/impacted.cpp +++ b/libraries/chain/util/impacted.cpp @@ -1,13 +1,13 @@ -#include +#include -#include +#include #include -namespace steem { namespace app { +namespace sophiatx { namespace app { using namespace fc; -using namespace steem::protocol; +using namespace sophiatx::protocol; // TODO: Review all of these, especially no-ops struct get_impacted_account_visitor @@ -27,29 +27,11 @@ struct get_impacted_account_visitor // ops void operator()( const account_create_operation& op ) { - _impacted.insert( op.new_account_name ); + account_name_type new_account_name = make_random_fixed_string(op.name_seed); + _impacted.insert( new_account_name ); _impacted.insert( op.creator ); } - void operator()( const account_create_with_delegation_operation& op ) - { - _impacted.insert( op.new_account_name ); - _impacted.insert( op.creator ); - } - - void operator()( const comment_operation& op ) - { - _impacted.insert( op.author ); - if( op.parent_author.size() ) - _impacted.insert( op.parent_author ); - } - - void operator()( const vote_operation& op ) - { - _impacted.insert( op.voter ); - _impacted.insert( op.author ); - } - void operator()( const transfer_operation& op ) { _impacted.insert( op.from ); @@ -94,12 +76,6 @@ struct get_impacted_account_visitor } } - void operator()( const set_withdraw_vesting_route_operation& op ) - { - _impacted.insert( op.from_account ); - _impacted.insert( op.to_account ); - } - void operator()( const account_witness_vote_operation& op ) { _impacted.insert( op.account ); @@ -117,29 +93,6 @@ struct get_impacted_account_visitor _impacted.insert( op.publisher ); } - void operator()( const pow_operation& op ) - { - _impacted.insert( op.worker_account ); - } - - struct pow2_impacted_visitor - { - pow2_impacted_visitor(){} - - typedef const account_name_type& result_type; - - template< typename WorkType > - result_type operator()( const WorkType& work )const - { - return work.input.worker_account; - } - }; - - void operator()( const pow2_operation& op ) - { - _impacted.insert( op.work.visit( pow2_impacted_visitor() ) ); - } - void operator()( const request_account_recovery_operation& op ) { _impacted.insert( op.account_to_recover ); @@ -156,91 +109,69 @@ struct get_impacted_account_visitor _impacted.insert( op.account_to_recover ); } - void operator()( const transfer_to_savings_operation& op ) - { - _impacted.insert( op.from ); - _impacted.insert( op.to ); - } - - void operator()( const transfer_from_savings_operation& op ) - { - _impacted.insert( op.from ); - _impacted.insert( op.to ); - } - - void operator()( const delegate_vesting_shares_operation& op ) - { - _impacted.insert( op.delegator ); - _impacted.insert( op.delegatee ); - } - - - // vops - - void operator()( const author_reward_operation& op ) + void operator()( const interest_operation& op ) { - _impacted.insert( op.author ); + _impacted.insert( op.owner ); } - void operator()( const curation_reward_operation& op ) + void operator()( const fill_vesting_withdraw_operation& op ) { - _impacted.insert( op.curator ); + _impacted.insert( op.from_account ); + _impacted.insert( op.to_account ); } - void operator()( const liquidity_reward_operation& op ) + void operator()( const shutdown_witness_operation& op ) { _impacted.insert( op.owner ); } - void operator()( const interest_operation& op ) + void operator()( const producer_reward_operation& op ) { - _impacted.insert( op.owner ); + _impacted.insert( op.producer ); } - void operator()( const fill_convert_request_operation& op ) + void operator()( const promotion_pool_withdraw_operation& op ) { - _impacted.insert( op.owner ); + _impacted.insert( op.to_account ); } - void operator()( const fill_vesting_withdraw_operation& op ) + void operator()( const witness_update_operation& op) { - _impacted.insert( op.from_account ); - _impacted.insert( op.to_account ); + _impacted.insert( op.owner ); } - void operator()( const shutdown_witness_operation& op ) + void operator()( const witness_stop_operation& op) { _impacted.insert( op.owner ); } - void operator()( const fill_order_operation& op ) + void operator()( const sponsor_fees_operation& op) { - _impacted.insert( op.current_owner ); - _impacted.insert( op.open_owner ); + if(op.sponsor!="") + _impacted.insert( op.sponsor ); + _impacted.insert( op.sponsored ); } - void operator()( const fill_transfer_from_savings_operation& op ) + void operator() (const transfer_from_promotion_pool_operation& op) { - _impacted.insert( op.from ); - _impacted.insert( op.to ); + _impacted.insert(SOPHIATX_INIT_MINER_NAME); + _impacted.insert(op.transfer_to); } - void operator()( const return_vesting_delegation_operation& op ) + void operator() (const application_create_operation& op) { - _impacted.insert( op.account ); + _impacted.insert(op.author); } - void operator()( const comment_benefactor_reward_operation& op ) + void operator() (const application_update_operation& op) { - _impacted.insert( op.benefactor ); - _impacted.insert( op.author ); + _impacted.insert(op.author); } - void operator()( const producer_reward_operation& op ) + void operator() (const application_delete_operation& op) { - _impacted.insert( op.producer ); + _impacted.insert(op.author); } - //void operator()( const operation& op ){} }; diff --git a/libraries/chain/util/reward.cpp b/libraries/chain/util/reward.cpp deleted file mode 100644 index 7440ac38..00000000 --- a/libraries/chain/util/reward.cpp +++ /dev/null @@ -1,97 +0,0 @@ - -#include -#include - -namespace steem { namespace chain { namespace util { - -uint8_t find_msb( const uint128_t& u ) -{ - uint64_t x; - uint8_t places; - x = (u.lo ? u.lo : 1); - places = (u.hi ? 64 : 0); - x = (u.hi ? u.hi : x); - return uint8_t( boost::multiprecision::detail::find_msb(x) + places ); -} - -uint64_t approx_sqrt( const uint128_t& x ) -{ - if( (x.lo == 0) && (x.hi == 0) ) - return 0; - - uint8_t msb_x = find_msb(x); - uint8_t msb_z = msb_x >> 1; - - uint128_t msb_x_bit = uint128_t(1) << msb_x; - uint64_t msb_z_bit = uint64_t (1) << msb_z; - - uint128_t mantissa_mask = msb_x_bit - 1; - uint128_t mantissa_x = x & mantissa_mask; - uint64_t mantissa_z_hi = (msb_x & 1) ? msb_z_bit : 0; - uint64_t mantissa_z_lo = (mantissa_x >> (msb_x - msb_z)).lo; - uint64_t mantissa_z = (mantissa_z_hi | mantissa_z_lo) >> 1; - uint64_t result = msb_z_bit | mantissa_z; - - return result; -} - -uint64_t get_rshare_reward( const comment_reward_context& ctx ) -{ - try - { - FC_ASSERT( ctx.rshares > 0 ); - FC_ASSERT( ctx.total_reward_shares2 > 0 ); - - u256 rf(ctx.total_reward_fund_steem.amount.value); - u256 total_claims = to256( ctx.total_reward_shares2 ); - - //idump( (ctx) ); - - u256 claim = to256( evaluate_reward_curve( ctx.rshares.value, ctx.reward_curve, ctx.content_constant ) ); - claim = ( claim * ctx.reward_weight ) / STEEM_100_PERCENT; - - u256 payout_u256 = ( rf * claim ) / total_claims; - FC_ASSERT( payout_u256 <= u256( uint64_t( std::numeric_limits::max() ) ) ); - uint64_t payout = static_cast< uint64_t >( payout_u256 ); - - if( is_comment_payout_dust( ctx.current_steem_price, payout ) ) - payout = 0; - - asset max_steem = to_steem( ctx.current_steem_price, ctx.max_sbd ); - - payout = std::min( payout, uint64_t( max_steem.amount.value ) ); - - return payout; - } FC_CAPTURE_AND_RETHROW( (ctx) ) -} - -uint128_t evaluate_reward_curve( const uint128_t& rshares, const protocol::curve_id& curve, const uint128_t& content_constant ) -{ - uint128_t result = 0; - - switch( curve ) - { - case protocol::quadratic: - { - uint128_t rshares_plus_s = rshares + content_constant; - result = rshares_plus_s * rshares_plus_s - content_constant * content_constant; - } - break; - case protocol::quadratic_curation: - { - uint128_t two_alpha = content_constant * 2; - result = uint128_t( rshares.lo, 0 ) / ( two_alpha + rshares ); - } - break; - case protocol::linear: - result = rshares; - break; - case protocol::square_root: - result = approx_sqrt( rshares ); - break; - } - - return result; -} - -} } } // steem::chain::util diff --git a/libraries/chain/witness_schedule.cpp b/libraries/chain/witness_schedule.cpp index 393072d2..a37b9436 100644 --- a/libraries/chain/witness_schedule.cpp +++ b/libraries/chain/witness_schedule.cpp @@ -1,11 +1,12 @@ -#include -#include -#include +#include +#include +#include -#include +#include +#include -namespace steem { namespace chain { +namespace sophiatx { namespace chain { void reset_virtual_schedule_time( database& db ) { @@ -22,7 +23,7 @@ void reset_virtual_schedule_time( database& db ) { wobj.virtual_position = fc::uint128(); wobj.virtual_last_update = wso.current_virtual_time; - wobj.virtual_scheduled_time = STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH2 / (wobj.votes.value+1); + wobj.virtual_scheduled_time = SOPHIATX_VIRTUAL_SCHEDULE_LAP_LENGTH2 / (wobj.votes.value+1); } ); } } @@ -52,32 +53,15 @@ void update_median_witness_props( database& db ) } ); uint32_t median_maximum_block_size = active[active.size()/2]->props.maximum_block_size; - /// sort them by sbd_interest_rate - std::sort( active.begin(), active.end(), [&]( const witness_object* a, const witness_object* b ) - { - return a->props.sbd_interest_rate < b->props.sbd_interest_rate; - } ); - uint16_t median_sbd_interest_rate = active[active.size()/2]->props.sbd_interest_rate; - - /// sort them by account_subsidy_limit - std::sort( active.begin(), active.end(), [&]( const witness_object* a, const witness_object* b ) - { - return a->props.account_subsidy_limit < b->props.account_subsidy_limit; - } ); - uint32_t median_account_subsidy_limit = active[active.size()/2]->props.account_subsidy_limit; - db.modify( wso, [&]( witness_schedule_object& _wso ) { _wso.median_props.account_creation_fee = median_account_creation_fee; _wso.median_props.maximum_block_size = median_maximum_block_size; - _wso.median_props.sbd_interest_rate = median_sbd_interest_rate; - _wso.median_props.account_subsidy_limit = median_account_subsidy_limit; } ); db.modify( db.get_dynamic_global_properties(), [&]( dynamic_global_property_object& _dgpo ) { _dgpo.maximum_block_size = median_maximum_block_size; - _dgpo.sbd_interest_rate = median_sbd_interest_rate; } ); } @@ -85,7 +69,7 @@ void update_witness_schedule4( database& db ) { const witness_schedule_object& wso = db.get_witness_schedule_object(); vector< account_name_type > active_witnesses; - active_witnesses.reserve( STEEM_MAX_WITNESSES ); + uint32_t skipped_witnesses = 0; /// Add the highest voted witnesses flat_set< witness_id_type > selected_voted; @@ -96,8 +80,9 @@ void update_witness_schedule4( database& db ) itr != widx.end() && selected_voted.size() < wso.max_voted_witnesses; ++itr ) { - if( db.has_hardfork( STEEM_HARDFORK_0_14__278 ) && (itr->signing_key == public_key_type()) ) + if((itr->signing_key == public_key_type()) ) continue; + selected_voted.insert( itr->id ); active_witnesses.push_back( itr->owner) ; db.modify( *itr, [&]( witness_object& wo ) { wo.schedule = witness_object::top19; } ); @@ -105,57 +90,23 @@ void update_witness_schedule4( database& db ) auto num_elected = active_witnesses.size(); - /// Add miners from the top of the mining queue - flat_set< witness_id_type > selected_miners; - selected_miners.reserve( wso.max_miner_witnesses ); - const auto& gprops = db.get_dynamic_global_properties(); - const auto& pow_idx = db.get_index().indices().get(); - auto mitr = pow_idx.upper_bound(0); - while( mitr != pow_idx.end() && selected_miners.size() < wso.max_miner_witnesses ) - { - // Only consider a miner who is not a top voted witness - if( selected_voted.find(mitr->id) == selected_voted.end() ) - { - // Only consider a miner who has a valid block signing key - if( !( db.has_hardfork( STEEM_HARDFORK_0_14__278 ) && db.get_witness( mitr->owner ).signing_key == public_key_type() ) ) - { - selected_miners.insert(mitr->id); - active_witnesses.push_back(mitr->owner); - db.modify( *mitr, [&]( witness_object& wo ) { wo.schedule = witness_object::miner; } ); - } - } - // Remove processed miner from the queue - auto itr = mitr; - ++mitr; - db.modify( *itr, [&](witness_object& wit ) - { - wit.pow_worker = 0; - } ); - db.modify( gprops, [&]( dynamic_global_property_object& obj ) - { - obj.num_pow_witnesses--; - } ); - } - - auto num_miners = selected_miners.size(); - /// Add the running witnesses in the lead fc::uint128 new_virtual_time = wso.current_virtual_time; const auto& schedule_idx = db.get_index().indices().get(); auto sitr = schedule_idx.begin(); vector processed_witnesses; - for( auto witness_count = selected_voted.size() + selected_miners.size(); - sitr != schedule_idx.end() && witness_count < STEEM_MAX_WITNESSES; + for( auto witness_count = selected_voted.size() ; + sitr != schedule_idx.end() && witness_count < SOPHIATX_MAX_WITNESSES; ++sitr ) { new_virtual_time = sitr->virtual_scheduled_time; /// everyone advances to at least this time processed_witnesses.push_back(sitr); - if( db.has_hardfork( STEEM_HARDFORK_0_14__278 ) && sitr->signing_key == public_key_type() ) + if( sitr->signing_key == public_key_type() ) { + ++skipped_witnesses; continue; /// skip witnesses without a valid block signing key - - if( selected_miners.find(sitr->id) == selected_miners.end() - && selected_voted.find(sitr->id) == selected_voted.end() ) + } + if( selected_voted.find(sitr->id) == selected_voted.end() ) { active_witnesses.push_back(sitr->owner); db.modify( *sitr, [&]( witness_object& wo ) { wo.schedule = witness_object::timeshare; } ); @@ -163,13 +114,13 @@ void update_witness_schedule4( database& db ) } } - auto num_timeshare = active_witnesses.size() - num_miners - num_elected; + auto num_timeshare = active_witnesses.size() - num_elected; /// Update virtual schedule of processed witnesses bool reset_virtual_time = false; for( auto itr = processed_witnesses.begin(); itr != processed_witnesses.end(); ++itr ) { - auto new_virtual_scheduled_time = new_virtual_time + STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH2 / ((*itr)->votes.value+1); + auto new_virtual_scheduled_time = new_virtual_time + SOPHIATX_VIRTUAL_SCHEDULE_LAP_LENGTH2 / ((*itr)->votes.value+1); if( new_virtual_scheduled_time < new_virtual_time ) { reset_virtual_time = true; /// overflow @@ -188,13 +139,14 @@ void update_witness_schedule4( database& db ) reset_virtual_schedule_time(db); } - size_t expected_active_witnesses = std::min( size_t(STEEM_MAX_WITNESSES), widx.size() ); - FC_ASSERT( active_witnesses.size() == expected_active_witnesses, "number of active witnesses does not equal expected_active_witnesses=${expected_active_witnesses}", - ("active_witnesses.size()",active_witnesses.size()) ("STEEM_MAX_WITNESSES",STEEM_MAX_WITNESSES) ("expected_active_witnesses", expected_active_witnesses) ); + size_t expected_active_witnesses = std::min( size_t(SOPHIATX_MAX_WITNESSES), widx.size() - skipped_witnesses ); + FC_ASSERT( active_witnesses.size() == expected_active_witnesses, "number of active witnesses does not equal expected_active_witnesses=${expected_active_witnesses}, skipped_witnesses=${skipped}", + ("active_witnesses.size()",active_witnesses.size()) ("SOPHIATX_MAX_WITNESSES",SOPHIATX_MAX_WITNESSES) ("expected_active_witnesses", expected_active_witnesses) + ("skipped", skipped_witnesses)); auto majority_version = wso.majority_version; - if( db.has_hardfork( STEEM_HARDFORK_0_5__54 ) ) + { flat_map< version, uint32_t, std::greater< version > > witness_versions; flat_map< std::tuple< hardfork_version, time_point_sec >, uint32_t > hardfork_version_votes; @@ -263,7 +215,7 @@ void update_witness_schedule4( database& db ) } } - assert( num_elected + num_miners + num_timeshare == active_witnesses.size() ); + assert( num_elected + num_timeshare == active_witnesses.size() ); db.modify( wso, [&]( witness_schedule_object& _wso ) { @@ -272,16 +224,24 @@ void update_witness_schedule4( database& db ) _wso.current_shuffled_witnesses[i] = active_witnesses[i]; } - for( size_t i = active_witnesses.size(); i < STEEM_MAX_WITNESSES; i++ ) + for( size_t i = active_witnesses.size(); i < SOPHIATX_MAX_WITNESSES; i++ ) { _wso.current_shuffled_witnesses[i] = account_name_type(); } _wso.num_scheduled_witnesses = std::max< uint8_t >( active_witnesses.size(), 1 ); + + // (top19_weight * num_elected + timeshare_weight * num_timeshare)/witness_pay_normalization_factor = (num_elected + num_timeshare) + // (top19_weight * num_elected + timeshare_weight * num_timeshare) = (num_elected + num_timeshare) * witness_pay_normalization_factor + // (top19_weight * num_elected + top19_weight * 3 * num_timeshare) = (num_elected + num_timeshare) * witness_pay_normalization_factor + // top19_weight * (num_elected + 3*num_timeshare ) = (num_elected + num_timeshare) * witness_pay_normalization_factor + // top19_weight / witness_pay_normalization_factor = (num_elected + num_timeshare) / (num_elected + 3*num_timeshare ) + + _wso.top19_weight = (num_elected + num_timeshare); + _wso.timeshare_weight = 3 * _wso.top19_weight; + _wso.witness_pay_normalization_factor = - _wso.top19_weight * num_elected - + _wso.miner_weight * num_miners - + _wso.timeshare_weight * num_timeshare; + num_elected + 3 * num_timeshare; /// shuffle current shuffled witnesses auto now_hi = uint64_t(db.head_block_time().sec_since_epoch()) << 32; @@ -309,157 +269,15 @@ void update_witness_schedule4( database& db ) update_median_witness_props(db); } - /** * * See @ref witness_object::virtual_last_update */ void update_witness_schedule(database& db) { - if( (db.head_block_num() % STEEM_MAX_WITNESSES) == 0 ) //wso.next_shuffle_block_num ) + if( (db.head_block_num() % SOPHIATX_MAX_WITNESSES) == 0 ) //wso.next_shuffle_block_num ) { - if( db.has_hardfork(STEEM_HARDFORK_0_4) ) - { - update_witness_schedule4(db); - return; - } - - const auto& props = db.get_dynamic_global_properties(); - const witness_schedule_object& wso = db.get_witness_schedule_object(); - - - vector active_witnesses; - active_witnesses.reserve( STEEM_MAX_WITNESSES ); - - fc::uint128 new_virtual_time; - - /// only use vote based scheduling after the first 1M STEEM is created or if there is no POW queued - if( props.num_pow_witnesses == 0 || db.head_block_num() > STEEM_START_MINER_VOTING_BLOCK ) - { - const auto& widx = db.get_index().indices().get(); - - for( auto itr = widx.begin(); itr != widx.end() && (active_witnesses.size() < (STEEM_MAX_WITNESSES-2)); ++itr ) - { - if( itr->pow_worker ) - continue; - - active_witnesses.push_back(itr->owner); - - /// don't consider the top 19 for the purpose of virtual time scheduling - db.modify( *itr, [&]( witness_object& wo ) - { - wo.virtual_scheduled_time = fc::uint128::max_value(); - } ); - } - - /// add the virtual scheduled witness, reseeting their position to 0 and their time to completion - - const auto& schedule_idx = db.get_index().indices().get(); - auto sitr = schedule_idx.begin(); - while( sitr != schedule_idx.end() && sitr->pow_worker ) - ++sitr; - - if( sitr != schedule_idx.end() ) - { - active_witnesses.push_back(sitr->owner); - db.modify( *sitr, [&]( witness_object& wo ) - { - wo.virtual_position = fc::uint128(); - new_virtual_time = wo.virtual_scheduled_time; /// everyone advances to this time - - /// extra cautious sanity check... we should never end up here if witnesses are - /// properly voted on. TODO: remove this line if it is not triggered and therefore - /// the code path is unreachable. - if( new_virtual_time == fc::uint128::max_value() ) - new_virtual_time = fc::uint128(); - - /// this witness will produce again here - if( db.has_hardfork( STEEM_HARDFORK_0_2 ) ) - wo.virtual_scheduled_time += STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH2 / (wo.votes.value+1); - else - wo.virtual_scheduled_time += STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH / (wo.votes.value+1); - } ); - } - } - - /// Add the next POW witness to the active set if there is one... - const auto& pow_idx = db.get_index().indices().get(); - - auto itr = pow_idx.upper_bound(0); - /// if there is more than 1 POW witness, then pop the first one from the queue... - if( props.num_pow_witnesses > STEEM_MAX_WITNESSES ) - { - if( itr != pow_idx.end() ) - { - db.modify( *itr, [&](witness_object& wit ) - { - wit.pow_worker = 0; - } ); - db.modify( db.get_dynamic_global_properties(), [&]( dynamic_global_property_object& obj ) - { - obj.num_pow_witnesses--; - } ); - } - } - - /// add all of the pow witnesses to the round until voting takes over, then only add one per round - itr = pow_idx.upper_bound(0); - while( itr != pow_idx.end() ) - { - active_witnesses.push_back( itr->owner ); - - if( db.head_block_num() > STEEM_START_MINER_VOTING_BLOCK || active_witnesses.size() >= STEEM_MAX_WITNESSES ) - break; - ++itr; - } - - db.modify( wso, [&]( witness_schedule_object& _wso ) - { - /* - _wso.current_shuffled_witnesses.clear(); - _wso.current_shuffled_witnesses.reserve( active_witnesses.size() ); - - for( const string& w : active_witnesses ) - _wso.current_shuffled_witnesses.push_back( w ); - */ - // active witnesses has exactly STEEM_MAX_WITNESSES elements, asserted above - for( size_t i = 0; i < active_witnesses.size(); i++ ) - { - _wso.current_shuffled_witnesses[i] = active_witnesses[i]; - } - - for( size_t i = active_witnesses.size(); i < STEEM_MAX_WITNESSES; i++ ) - { - _wso.current_shuffled_witnesses[i] = account_name_type(); - } - - _wso.num_scheduled_witnesses = std::max< uint8_t >( active_witnesses.size(), 1 ); - - //idump( (_wso.current_shuffled_witnesses)(active_witnesses.size()) ); - - auto now_hi = uint64_t(db.head_block_time().sec_since_epoch()) << 32; - for( uint32_t i = 0; i < _wso.num_scheduled_witnesses; ++i ) - { - /// High performance random generator - /// http://xorshift.di.unimi.it/ - uint64_t k = now_hi + uint64_t(i)*2685821657736338717ULL; - k ^= (k >> 12); - k ^= (k << 25); - k ^= (k >> 27); - k *= 2685821657736338717ULL; - - uint32_t jmax = _wso.num_scheduled_witnesses - i; - uint32_t j = i + k%jmax; - std::swap( _wso.current_shuffled_witnesses[i], - _wso.current_shuffled_witnesses[j] ); - } - - if( props.num_pow_witnesses == 0 || db.head_block_num() > STEEM_START_MINER_VOTING_BLOCK ) - _wso.current_virtual_time = new_virtual_time; - - _wso.next_shuffle_block_num = db.head_block_num() + _wso.num_scheduled_witnesses; - } ); - update_median_witness_props(db); + update_witness_schedule4(db); } } diff --git a/libraries/chainbase/include/chainbase/chainbase.hpp b/libraries/chainbase/include/chainbase/chainbase.hpp index 55f01f7c..3910e289 100644 --- a/libraries/chainbase/include/chainbase/chainbase.hpp +++ b/libraries/chainbase/include/chainbase/chainbase.hpp @@ -976,6 +976,14 @@ namespace chainbase { return get_mutable_index().emplace( std::forward(con) ); } + + template< typename ObjectType > + size_t count()const + { + typedef typename get_index_type::type index_type; + return get_index< index_type >().indices().size(); + } + template< typename Lambda > auto with_read_lock( Lambda&& callback, uint64_t wait_micro = 1000000 ) -> decltype( (*(Lambda*)nullptr)() ) { @@ -1016,7 +1024,7 @@ namespace chainbase { while( !lock.timed_lock( boost::posix_time::microsec_clock::universal_time() + boost::posix_time::microseconds( wait_micro ) ) ) { _rw_manager.next_lock(); - std::cerr << "Lock timeout, moving to lock " << _rw_manager.current_lock_num() << std::endl; +// std::cerr << "Lock timeout, moving to lock " << _rw_manager.current_lock_num() << std::endl; lock = write_lock( _rw_manager.current_lock(), boost::defer_lock_t() ); } } diff --git a/libraries/chainbase/src/chainbase.cpp b/libraries/chainbase/src/chainbase.cpp index 7d99d7f4..e9de9d06 100644 --- a/libraries/chainbase/src/chainbase.cpp +++ b/libraries/chainbase/src/chainbase.cpp @@ -8,7 +8,13 @@ namespace chainbase { struct environment_check { environment_check() { memset( &compiler_version, 0, sizeof( compiler_version ) ); + +#ifdef _MSC_VER +#define STRING(x) #x + memcpy(&compiler_version, STRING(_MSC_VER), std::min(strlen(STRING(_MSC_VER)), 256)); +#else memcpy( &compiler_version, __VERSION__, std::min( strlen(__VERSION__), 256 ) ); +#endif #ifndef NDEBUG debug = true; #endif diff --git a/libraries/chainbase/test/test.cpp b/libraries/chainbase/test/test.cpp index 5068db94..c065b736 100644 --- a/libraries/chainbase/test/test.cpp +++ b/libraries/chainbase/test/test.cpp @@ -42,7 +42,7 @@ CHAINBASE_SET_INDEX_TYPE( book, book_index ) BOOST_AUTO_TEST_CASE( open_and_create ) { boost::filesystem::path temp = boost::filesystem::unique_path(); try { - std::cerr << temp.native() << " \n"; + std::cerr << temp.string() << " \n"; chainbase::database db; BOOST_CHECK_THROW( db.open( temp ), std::runtime_error ); /// temp does not exist diff --git a/libraries/egenesis/CMakeLists.txt b/libraries/egenesis/CMakeLists.txt new file mode 100644 index 00000000..b2de93b8 --- /dev/null +++ b/libraries/egenesis/CMakeLists.txt @@ -0,0 +1,47 @@ +#file(GLOB HEADERS "include/sophiatx/egenesis/*.hpp") + + +add_library( sophiatx_egenesis_none +egenesis_none.cpp +include/sophiatx/egenesis/egenesis.hpp +) + +target_link_libraries( sophiatx_egenesis_none sophiatx_protocol sophiatx_chain fc ) +target_include_directories( sophiatx_egenesis_none +PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) + +add_executable( embed_genesis +embed_genesis.cpp +) + +target_link_libraries( embed_genesis sophiatx_protocol sophiatx_chain sophiatx_egenesis_none fc ) + +set( embed_genesis_args +-t "${CMAKE_CURRENT_SOURCE_DIR}/egenesis_full.cpp.tmpl---${CMAKE_CURRENT_BINARY_DIR}/egenesis_full.cpp" +) + +if( SOPHIATX_EGENESIS_JSON ) +MESSAGE( STATUS "egenesis: " ${SOPHIATX_EGENESIS_JSON} ) +list( APPEND embed_genesis_args --genesis-json "${SOPHIATX_EGENESIS_JSON}" ) +else( SOPHIATX_EGENESIS_JSON ) +MESSAGE( STATUS "egenesis: none" ) +endif( SOPHIATX_EGENESIS_JSON ) + +MESSAGE( STATUS "embed_genesis_args: " ${embed_genesis_args} ) + +add_custom_command( +OUTPUT +"${CMAKE_CURRENT_BINARY_DIR}/egenesis_full.cpp" +WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +COMMAND embed_genesis ${embed_genesis_args} +DEPENDS +"${SOPHIATX_EGENESIS_JSON}" +"${CMAKE_CURRENT_SOURCE_DIR}/egenesis_full.cpp.tmpl" +embed_genesis ) + +add_library( sophiatx_egenesis_full "${CMAKE_CURRENT_BINARY_DIR}/egenesis_full.cpp" include/sophiatx/egenesis/egenesis.hpp ) + +target_link_libraries( sophiatx_egenesis_full sophiatx_protocol sophiatx_chain fc ) + +target_include_directories( sophiatx_egenesis_full PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) + diff --git a/libraries/egenesis/egenesis_full.cpp b/libraries/egenesis/egenesis_full.cpp new file mode 100644 index 00000000..a5121cc6 --- /dev/null +++ b/libraries/egenesis/egenesis_full.cpp @@ -0,0 +1,35546 @@ +// _ _ __ _ _ // +// | | | | / _(_) | // +// __ _ ___ _ __ ___ _ __ __ _| |_ ___ __| | | |_ _| | ___ // +// / _` |/ _ \ '_ \ / _ \ '__/ _` | __/ _ \/ _` | | _| | |/ _ \ // +// | (_| | __/ | | | __/ | | (_| | || __/ (_| | | | | | | __/ // +// \__, |\___|_| |_|\___|_| \__,_|\__\___|\__,_| |_| |_|_|\___| // +// __/ | // +// |___/ // +// // +// Generated by: libraries/chain_id/identify_chain.cpp // +// // +// Warning: This is a generated file, any changes made here will be // +// overwritten by the build process. If you need to change what // +// is generated here, you should use the CMake variable // +// SOPHIATX_EGENESIS_JSON to specify an embedded genesis state. // +// // + +/* + * Copyright (c) 2015, Cryptonomex, Inc. + * All rights reserved. + * + * This source code is provided for evaluation in private test networks only, until September 8, 2015. After this date, this license expires and + * the code may not be used, modified or distributed for any purpose. Redistribution and use in source and binary forms, with or without modification, + * are permitted until September 8, 2015, provided that the following conditions are met: + * + * 1. The code and/or derivative works are used only for private test networks consisting of no more than 10 P2P nodes. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +namespace sophiatx { namespace egenesis { + +using namespace sophiatx::chain; + +static const char genesis_json_array[35477][40+1] = +{ +"{\n \"initial_public_key\" : \"SPH7VNqGPfH", +"XVu7try6KqdxG1feVt3SDwgkXZYdw44jkWdrUNDB", +"hY\",\n \"initial_balace\" : 1000001363,\n ", +" \"initial_accounts\" : \n [\n{\n \"ETH_", +"account\" : \"0x7a7b6aafd46beb765848337568", +"b46fa9235bc78c\",\n \"name\" : \"lenaltman", +"\",\n \"publicKey\" : \"SPH7k5hcKq6Vm1uJAz", +"YkhtVHtWNmYdLzVz27zj7pi18jB2jSkQ8yL\",\n ", +" \"balance\" : 89141184764\n}, \n{\n \"ETH", +"_account\" : \"0xb9c88624c8b59990645b28fa3", +"4a18d551549f441\",\n \"name\" : \"0xb9c886", +"24c8b5999064\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 33\n}, \n{\n \"ETH_account", +"\" : \"0xfc9c1fc04b84875ef46fff184785478f0", +"51d5e30\",\n \"name\" : \"0xfc9c1fc04b8487", +"5ef4\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 2071986058\n}, \n{\n \"ETH_account", +"\" : \"0x57554746d78a31df22e5a9a57250a6882", +"7dfd504\",\n \"name\" : \"0x57554746d78a31", +"df22\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1568682797\n}, \n{\n \"ETH_account", +"\" : \"0x66efd6167021c9d1793d6ebac5068c7b9", +"6189dda\",\n \"name\" : \"0x66efd6167021c9", +"d179\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 6733\n}, \n{\n \"ETH_account\" : \"0", +"x8369dd6732fea921bdf6c92538abcbaa6c9be2c", +"6\",\n \"name\" : \"0x8369dd6732fea921bd\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 66\n}, \n{\n \"ETH_account\" : \"0xdd77c46", +"a6f39a7de6be5628d4d5af7523d76f771\",\n ", +"\"name\" : \"0xdd77c46a6f39a7de6b\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 7777605", +"386\n}, \n{\n \"ETH_account\" : \"0xbbf52f8", +"4df70c70d58b50b6bcf4ec90254d7eb13\",\n ", +"\"name\" : \"0xbbf52f84df70c70d58\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 19\n}, \n", +"{\n \"ETH_account\" : \"0x98cda62cb3e1b96", +"aae5ba5c4ed49ea7f7c384987\",\n \"name\" :", +" \"0x98cda62cb3e1b96aae\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 3366\n}, \n{\n ", +"\"ETH_account\" : \"0xd78a5c443c7c30b13d394", +"c1d8cbf48dfd93079e2\",\n \"name\" : \"mgin", +"eer\",\n \"publicKey\" : \"SPH53VVQnz4JL9V", +"G2n5ZroRJvynsedpFZjwcjHKCyQFkkSonevNBg\",", +"\n \"balance\" : 21945220653\n}, \n{\n \"", +"ETH_account\" : \"0x97d1063d58b9591cd6e2f6", +"11e8e1946dcbcbf93d\",\n \"name\" : \"0x97d", +"1063d58b9591cd6\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 3373536336\n}, \n{\n \"", +"ETH_account\" : \"0x0342d1a7e22baa5410ee8c", +"72873e7a67c7b20c77\",\n \"name\" : \"0x034", +"2d1a7e22baa5410\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 99\n}, \n{\n \"ETH_acco", +"unt\" : \"0x2f2e0f8678eda4babff95c341fd2ca", +"4793ccf76f\",\n \"name\" : \"0x2f2e0f8678e", +"da4babf\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 66\n}, \n{\n \"ETH_account\" : \"", +"0x8d12a197cb00d4747a1fe03395095ce2a5cc68", +"19\",\n \"name\" : \"0x8d12a197cb00d4747a\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1000762161981\n}, \n{\n \"ETH_account\" ", +": \"0x7eb39ba964132497b5e734a9f19352b7bf1", +"c1b2e\",\n \"name\" : \"0x7eb39ba964132497", +"b5\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 65\n}, \n{\n \"ETH_account\" : \"0xbf8", +"887fc01b2cb22dddf6129c7dc6302ca59a350\",\n", +" \"name\" : \"0xbf8887fc01b2cb22dd\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 93\n", +"}, \n{\n \"ETH_account\" : \"0x1c84eee83a2", +"6caf505e45f3736291365e77574f6\",\n \"nam", +"e\" : \"0x1c84eee83a26caf505\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 471240\n}, \n", +"{\n \"ETH_account\" : \"0x775d8bb769448c2", +"0a545c582088db5bff3751e84\",\n \"name\" :", +" \"0x775d8bb769448c20a5\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 14583010099\n}, ", +"\n{\n \"ETH_account\" : \"0x5cf35d539634ae", +"a83d494ec0dfdff9b2dbe8fc78\",\n \"name\" ", +": \"0x5cf35d539634aea83d\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 66\n}, \n{\n \"", +"ETH_account\" : \"0x18d7339d6f3ef1569c6910", +"19046ea54163eeccbc\",\n \"name\" : \"0x18d", +"7339d6f3ef1569c\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1190545349\n}, \n{\n \"", +"ETH_account\" : \"0x628658b52bd8ed4bb32788", +"b48604fd74cf2f640a\",\n \"name\" : \"0x628", +"658b52bd8ed4bb3\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 3\n}, \n{\n \"ETH_accou", +"nt\" : \"0xbc595da2877a258a431226ac8a337a8", +"0127b0856\",\n \"name\" : \"0xbc595da2877a", +"258a43\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 31983\n}, \n{\n \"ETH_account\" :", +" \"0xa07a9002a1be93301df889f1bd04b1904b24", +"762d\",\n \"name\" : \"0xa07a9002a1be93301", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 50000000020\n}, \n{\n \"ETH_account\" ", +": \"0x2abd16bc6a64fedfc221efb5950aef13fd3", +"98397\",\n \"name\" : \"0x2abd16bc6a64fedf", +"c2\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 41\n}, \n{\n \"ETH_account\" : \"0xa2a", +"826452cf39bfdd15086a7167f22a877f5048c\",\n", +" \"name\" : \"0xa2a826452cf39bfdd1\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 66\n", +"}, \n{\n \"ETH_account\" : \"0x6c6fa1938a0", +"3e41c8dd7af30384d21471becbce8\",\n \"nam", +"e\" : \"0x6c6fa1938a03e41c8d\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 3366\n}, \n{\n", +" \"ETH_account\" : \"0xb10d4d83491e7be1f", +"9451065c9dc5909b717a28c\",\n \"name\" : \"", +"0xb10d4d83491e7be1f9\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 6733\n}, \n{\n \"E", +"TH_account\" : \"0x635041f527accff7eac09bb", +"ac24605d5308717c1\",\n \"name\" : \"0x6350", +"41f527accff7ea\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 35\n}, \n{\n \"ETH_accou", +"nt\" : \"0x5b35061cc9891c3616ea05d1423e4cb", +"cfddf1829\",\n \"name\" : \"0x5b35061cc989", +"1c3616\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 4861003366\n}, \n{\n \"ETH_accou", +"nt\" : \"0x66fcb0b6d006d27748dd4087d9134eb", +"56e0946d1\",\n \"name\" : \"0x66fcb0b6d006", +"d27748\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 940200673\n}, \n{\n \"ETH_accoun", +"t\" : \"0x4f61101356f7a9fafaf67fcd5c3e11b6", +"58930e23\",\n \"name\" : \"0x4f61101356f7a", +"9fafa\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 32\n}, \n{\n \"ETH_account\" : \"0x", +"d22974164c9cf8c5267982d22c57a628340aec08", +"\",\n \"name\" : \"0xd22974164c9cf8c526\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"19\n}, \n{\n \"ETH_account\" : \"0x7ded6b31", +"e0198779cbac733150cd4bb446a64c14\",\n \"", +"name\" : \"0x7ded6b31e0198779cb\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 14583010", +"09\n}, \n{\n \"ETH_account\" : \"0xa3bf5537", +"7d46d1ddfce36092890d0ff8e3d88bbf\",\n \"", +"name\" : \"0xa3bf55377d46d1ddfc\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 16833\n},", +" \n{\n \"ETH_account\" : \"0xf38f2725310f2", +"66032d7bae522b2a2e053d6c2f0\",\n \"name\"", +" : \"0xf38f2725310f266032\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 673\n}, \n{\n ", +" \"ETH_account\" : \"0x6b3f661dd76c553471bd", +"c0f1d0aab31383eaa412\",\n \"name\" : \"0x6", +"b3f661dd76c553471\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 10099\n}, \n{\n \"ETH", +"_account\" : \"0x7feee4d29851b5839a62ef600", +"6ee43a037e98f84\",\n \"name\" : \"0x7feee4", +"d29851b5839a\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 30\n}, \n{\n \"ETH_account", +"\" : \"0x8bbcae3e2fbad85c061a9b8279793a1de", +"3e9deb3\",\n \"name\" : \"0x8bbcae3e2fbad8", +"5c06\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 44555733787\n}, \n{\n \"ETH_accoun", +"t\" : \"0x08206fb90e016610f9cde480a2ab13ad", +"171210b0\",\n \"name\" : \"0x08206fb90e016", +"610f9\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 34\n}, \n{\n \"ETH_account\" : \"0x", +"8b30a9c2de959bbd1904caf65c4065880918f987", +"\",\n \"name\" : \"0x8b30a9c2de959bbd19\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"623504419\n}, \n{\n \"ETH_account\" : \"0xf", +"237c7e52e7c0632f25c4ce0d2b632aa114f968b\"", +",\n \"name\" : \"0xf237c7e52e7c0632f2\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"655211108\n}, \n{\n \"ETH_account\" : \"0xc", +"2923d3bd296bba2ae298a0c70d727c82cda2ace\"", +",\n \"name\" : \"0xc2923d3bd296bba2ae\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"3\n}, \n{\n \"ETH_account\" : \"0x94ef53159", +"5ffe510f8dc92e0e07a987f57784338\",\n \"n", +"ame\" : \"0x94ef531595ffe510f8\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 486100336", +"6\n}, \n{\n \"ETH_account\" : \"0xdc2ebbce3", +"9063b7f41f563ce124bb42ebae0b194\",\n \"n", +"ame\" : \"0xdc2ebbce39063b7f41\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 500683346", +"7\n}, \n{\n \"ETH_account\" : \"0xdaefeb3cb", +"9c35729806dec893be6473cc99f7fda\",\n \"n", +"ame\" : \"0xdaefeb3cb9c3572980\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 413885263", +"8\n}, \n{\n \"ETH_account\" : \"0x64bfd0be8", +"4a48cb0a7bc662b6696461b7423953a\",\n \"n", +"ame\" : \"0x64bfd0be84a48cb0a7\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 972800673", +"33\n}, \n{\n \"ETH_account\" : \"0x1c8fb701", +"967baf8c588fa96748de289740a0d15f\",\n \"", +"name\" : \"0x1c8fb701967baf8c58\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 48610033", +"6\n}, \n{\n \"ETH_account\" : \"0x38b219710", +"6123387a0d4de368431a8bacdda30e2\",\n \"n", +"ame\" : \"0x38b2197106123387a0\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 267355185", +"166\n}, \n{\n \"ETH_account\" : \"0xf779939", +"ba353d1fd1c0bc91180bbca339ac9e9d1\",\n ", +"\"name\" : \"0xf779939ba353d1fd1c\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5467985", +"261\n}, \n{\n \"ETH_account\" : \"0xec0a9ff", +"d3c2ef5fc88166b655dbb821d801af328\",\n ", +"\"name\" : \"0xec0a9ffd3c2ef5fc88\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4032306", +"729\n}, \n{\n \"ETH_account\" : \"0x8ddac58", +"9d703e854e22f71b8f2fb6efce134e5c0\",\n ", +"\"name\" : \"0x8ddac589d703e854e2\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 81\n}, \n", +"{\n \"ETH_account\" : \"0xaafacad8450296e", +"02525baf1412ded16b7649bd4\",\n \"name\" :", +" \"0xaafacad8450296e025\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 9722006733\n}, \n", +"{\n \"ETH_account\" : \"0xd23f5e4b18a6062", +"c9b634466504d99436367b151\",\n \"name\" :", +" \"0xd23f5e4b18a6062c9b\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 596915901\n}, \n{", +"\n \"ETH_account\" : \"0xac5b785afa2b1345", +"6761a5224453327bbb6bc0e5\",\n \"name\" : ", +"\"0xac5b785afa2b134567\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 43689891046\n}, \n", +"{\n \"ETH_account\" : \"0x8b584cf38bfe7d5", +"0809bbc2a622c7bd118a82577\",\n \"name\" :", +" \"0x8b584cf38bfe7d5080\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 990000\n}, \n{\n ", +" \"ETH_account\" : \"0xb3564e977b2990eabec", +"176f26fd53b667745af7d\",\n \"name\" : \"0x", +"b3564e977b2990eabe\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 20000026933\n}, \n{\n ", +" \"ETH_account\" : \"0x7f4a382b254636dc9f", +"819abf4cc34f05b4733b13\",\n \"name\" : \"0", +"x7f4a382b254636dc9f\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 43749047133\n}, \n{\n", +" \"ETH_account\" : \"0x203e9cfd431db3ac1", +"c23f7267671522801ccdae9\",\n \"name\" : \"", +"0x203e9cfd431db3ac1c\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 5784594006\n}, \n{\n", +" \"ETH_account\" : \"0xc63146cd5330ae8bb", +"87eb912e77e57bf4b9c88ce\",\n \"name\" : \"", +"chinwaikong\",\n \"publicKey\" : \"SPH5mC4", +"UmPYsHWWk1RQa46dYb9htHzdBFdKNNvNy3WJmjEv", +"PtWd2w\",\n \"balance\" : 486100336\n}, \n{", +"\n \"ETH_account\" : \"0xb811c0ffcb586537", +"0a5ebb3ae98384bf0fde5ccc\",\n \"name\" : ", +"\"zoad\",\n \"publicKey\" : \"SPH82xvesCvbN", +"wHTS3CB7dNmiMLgYGfzGE7LHmKwKKZvZ4pUnhuY2", +"\",\n \"balance\" : 402123082673\n}, \n{\n ", +" \"ETH_account\" : \"0xb4cdc33562148e745c2", +"a7c8809735d23eb0cd3c3\",\n \"name\" : \"0x", +"b4cdc33562148e745c\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1999\n}, \n{\n \"ETH", +"_account\" : \"0x4daf690a5f8a466cb49b424a7", +"76ad505d2cd7b7d\",\n \"name\" : \"0x4daf69", +"0a5f8a466cb4\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 475299181799\n}, \n{\n \"E", +"TH_account\" : \"0x4e5663d2098ee3948199441", +"f74235b7ae75fafca\",\n \"name\" : \"0x4e56", +"63d2098ee39481\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 49\n}, \n{\n \"ETH_accou", +"nt\" : \"0xd1277ab154da1e77acf6498e4feb0e2", +"3dbf4e6be\",\n \"name\" : \"0xd1277ab154da", +"1e77ac\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 50168\n}, \n{\n \"ETH_account\" :", +" \"0x1fe31f397604f85e9b74aa5c99fed81ff808", +"4adf\",\n \"name\" : \"yabsilboy\",\n \"pu", +"blicKey\" : \"SPH8Q44jDVEVunJjT3HnFDbeVRKz", +"NiEUkBVF7EFFP4oGLa1anq6Tb\",\n \"balance", +"\" : 72785635221\n}, \n{\n \"ETH_account\" ", +": \"0x1499bb338d94c5bc2f1ae126db6c8d2fc50", +"0e7cf\",\n \"name\" : \"0x1499bb338d94c5bc", +"2f\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 20328109566\n}, \n{\n \"ETH_account\"", +" : \"0xc1c828de7733d6025200042783285a61b9", +"895eb2\",\n \"name\" : \"0xc1c828de7733d60", +"252\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 19444013466\n}, \n{\n \"ETH_account", +"\" : \"0x757ef533bc4169ec3fa9af673ef7d87c7", +"05a5e0a\",\n \"name\" : \"0x757ef533bc4169", +"ec3f\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 622538979\n}, \n{\n \"ETH_account\"", +" : \"0xe2076fc824e67b752f40b5a61b58def1e6", +"0b7e19\",\n \"name\" : \"sedex\",\n \"publ", +"icKey\" : \"SPH5oUKQ7yqRU49BGNsRLSfUWFjWqX", +"VhvczPeiKXk1fAi34T1HnWM\",\n \"balance\" ", +": 9722006733\n}, \n{\n \"ETH_account\" : \"", +"0xa7c95e8d8dbd108ce67550ce1bf60d6bdb3b70", +"5d\",\n \"name\" : \"0xa7c95e8d8dbd108ce6\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2423\n}, \n{\n \"ETH_account\" : \"0x7b98", +"cde1c2b21e753f90aefbdd02d764c80a4881\",\n ", +" \"name\" : \"0x7b98cde1c2b21e753f\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 4861", +"003366\n}, \n{\n \"ETH_account\" : \"0x751f", +"6102a51047d148e510c20ff88c60ec9a9d9f\",\n ", +" \"name\" : \"0x751f6102a51047d148\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 66\n}", +", \n{\n \"ETH_account\" : \"0xe9056ecfabea", +"d2dd16efae3215ed9da65bea6156\",\n \"name", +"\" : \"0xe9056ecfabead2dd16\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 66\n}, \n{\n ", +" \"ETH_account\" : \"0x27b24e69918c5a9636be", +"e45d6313dd22f406f873\",\n \"name\" : \"0x2", +"7b24e69918c5a9636\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 24305016833\n}, \n{\n ", +" \"ETH_account\" : \"0xa013ff8dca16219c125", +"eec19be3b2cc5a63d505c\",\n \"name\" : \"0x", +"a013ff8dca16219c12\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 8072500526\n}, \n{\n ", +" \"ETH_account\" : \"0xbfb0cece9e3bdc3af46", +"640ddc99c07f6c408e808\",\n \"name\" : \"0x", +"bfb0cece9e3bdc3af4\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 60\n}, \n{\n \"ETH_a", +"ccount\" : \"0xe5389809fedfb0225719d136d97", +"34845a7252542\",\n \"name\" : \"0xe5389809", +"fedfb02257\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 33\n}, \n{\n \"ETH_account\" ", +": \"0xddf11cad4d1ff8fb47b74e8828b7ba1f9c4", +"6f3d3\",\n \"name\" : \"0xddf11cad4d1ff8fb", +"47\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 2758619410\n}, \n{\n \"ETH_account\" ", +": \"0x5b3f79bd1805cfc7caade5535def734db18", +"39b68\",\n \"name\" : \"0x5b3f79bd1805cfc7", +"ca\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 700000000\n}, \n{\n \"ETH_account\" :", +" \"0xc57ea67750ded06a98763d5251f062785eab", +"f8f6\",\n \"name\" : \"0xc57ea67750ded06a9", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 3402702356\n}, \n{\n \"ETH_account\" :", +" \"0xc452b2cca2ee29fe5f65fae360294cb75063", +"7ed3\",\n \"name\" : \"0xc452b2cca2ee29fe5", +"f\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 99\n}, \n{\n \"ETH_account\" : \"0xc161", +"09b3ecf51dfa9a46461cef821ce1e2647e2a\",\n ", +" \"name\" : \"0xc16109b3ecf51dfa9a\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3366", +"\n}, \n{\n \"ETH_account\" : \"0x89aa2f6d12", +"9c1fe84fdcc6d8bc71f53808ee053b\",\n \"na", +"me\" : \"0x89aa2f6d129c1fe84f\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 534710370\n", +"}, \n{\n \"ETH_account\" : \"0xfb8de55bab1", +"a97da653dc7fd314e39d99564edcf\",\n \"nam", +"e\" : \"0xfb8de55bab1a97da65\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 7291505049\n", +"}, \n{\n \"ETH_account\" : \"0x8f197adf29e", +"d886321d981edebd2e8344a910341\",\n \"nam", +"e\" : \"0x8f197adf29ed886321\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 8752006733\n", +"}, \n{\n \"ETH_account\" : \"0xccb0279c61c", +"acbce92a11ddbac01781b183527d9\",\n \"nam", +"e\" : \"0xccb0279c61cacbce92\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 73525570696", +"\n}, \n{\n \"ETH_account\" : \"0x77c2c274b7", +"7613e8cbb96d6680eef8655d6ef7be\",\n \"na", +"me\" : \"georgi\",\n \"publicKey\" : \"SPH7w", +"jgXn3dusVa8f8ontCgSFAFK9cmsCWKehUZ96wJPf", +"5Q2t1Wnv\",\n \"balance\" : 70002159114\n}", +", \n{\n \"ETH_account\" : \"0x9e32271752ad", +"2cbd1f3f03980496c237686e64f7\",\n \"name", +"\" : \"0x9e32271752ad2cbd1f\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 22846715823\n", +"}, \n{\n \"ETH_account\" : \"0xed02d9831a5", +"6bfa997d8c071499b8af3fdff1052\",\n \"nam", +"e\" : \"0xed02d9831a56bfa997\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 4768644302\n", +"}, \n{\n \"ETH_account\" : \"0xb3cc7e75482", +"009842e3bae0a46624808276b9411\",\n \"nam", +"e\" : \"0xb3cc7e75482009842e\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 3888802693\n", +"}, \n{\n \"ETH_account\" : \"0x33918e5df85", +"241cd957b05b3d9f6910e314370d0\",\n \"nam", +"e\" : \"0x33918e5df85241cd95\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 4861003366\n", +"}, \n{\n \"ETH_account\" : \"0x6946e3998ae", +"c4bffe79f0621b475ac67d878d3fb\",\n \"nam", +"e\" : \"0x6946e3998aec4bffe7\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 49\n}, \n{\n ", +" \"ETH_account\" : \"0x95a0fa608563fcb2bfe", +"63b1ac5fa17b9c5a3d79f\",\n \"name\" : \"0x", +"95a0fa608563fcb2bf\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 28315028\n}, \n{\n ", +"\"ETH_account\" : \"0x3f7fb7bd171ea9804a05b", +"d8e3ceaae674cfc868e\",\n \"name\" : \"0x3f", +"7fb7bd171ea9804a\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 6733\n}, \n{\n \"ETH_a", +"ccount\" : \"0x7b4723ef3faa4748ae8d53c876a", +"68db0768d0e39\",\n \"name\" : \"0x7b4723ef", +"3faa4748ae\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1167117417\n}, \n{\n \"ETH_a", +"ccount\" : \"0xdf3fff1b9c9e8fcf6a37e84c921", +"8490689236f65\",\n \"name\" : \"pihugarnai", +"k\",\n \"publicKey\" : \"SPH5kFa3XkiPFZPxC", +"APNka8GdMcjP9PKQpPLMu89JAExayrDuApmt\",\n ", +" \"balance\" : 11666408079\n}, \n{\n \"ET", +"H_account\" : \"0x89a94b48b21d3b5f95930564", +"3d3c71dc88cc7fbc\",\n \"name\" : \"cryptog", +"en\",\n \"publicKey\" : \"SPH7KLwffZ6gUenv", +"qazsRxtP23nLth7xSDYwYr6xbraqFfML6QTQ9\",\n", +" \"balance\" : 9746000000\n}, \n{\n \"ET", +"H_account\" : \"0xdc65205f54c806535375d4ee", +"fded606cd957e66b\",\n \"name\" : \"0xdc652", +"05f54c8065353\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 91505049\n}, \n{\n \"ETH_", +"account\" : \"0x6014d4081cdff8aa2b29f24c10", +"af1b9f525110c5\",\n \"name\" : \"0x6014d40", +"81cdff8aa2b\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2328445841\n}, \n{\n \"ETH_", +"account\" : \"0xbd307baa0d36799cd7eaf27116", +"f85ca0de8e9bed\",\n \"name\" : \"0xbd307ba", +"a0d36799cd7\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 19438909413\n}, \n{\n \"ETH", +"_account\" : \"0xa1b312e9d21b9bf1f631e7a76", +"5223af4279c4c5a\",\n \"name\" : \"0xa1b312", +"e9d21b9bf1f6\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 79\n}, \n{\n \"ETH_account", +"\" : \"0xac1645891c54cd077dd07dacd7467ebb1", +"79127ed\",\n \"name\" : \"0xac1645891c54cd", +"077d\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1125341568\n}, \n{\n \"ETH_account", +"\" : \"0xe857a8b02babc4fe91f36fd20bd47ad63", +"a66a621\",\n \"name\" : \"0xe857a8b02babc4", +"fe91\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 70219997333\n}, \n{\n \"ETH_accoun", +"t\" : \"0x219ddaa7b4ccb914625e0ff61e414640", +"05c0e1d4\",\n \"name\" : \"pjsabje\",\n \"", +"publicKey\" : \"SPH6qRUbXoFv5HJCMN1X3Uc1cN", +"11j5ax4A2rSnUeUJ6pqqb3RRXz6\",\n \"balan", +"ce\" : 3675314288\n}, \n{\n \"ETH_account\"", +" : \"0x3fe666d86bb4b6cbfde503d4cda5fb18ee", +"ce0454\",\n \"name\" : \"0x3fe666d86bb4b6c", +"bfd\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1231505049\n}, \n{\n \"ETH_account\"", +" : \"0xaff9e02af272964b5d09788419a5afe722", +"b4a498\",\n \"name\" : \"0xaff9e02af272964", +"b5d\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 14587112487\n}, \n{\n \"ETH_account", +"\" : \"0xa6d0c02766c5153bdbaae14b598de237e", +"bd25ee7\",\n \"name\" : \"0xa6d0c02766c515", +"3bdb\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 3819542354\n}, \n{\n \"ETH_account", +"\" : \"0x8d87e5f50934931041b6d434bbd0b90b1", +"a6a11d0\",\n \"name\" : \"0x8d87e5f5093493", +"1041\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 66\n}, \n{\n \"ETH_account\" : \"0x6", +"b58ba57caec1b54ffac809bcb3cc82ceaadbe49\"", +",\n \"name\" : \"0x6b58ba57caec1b54ff\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 6", +"90134973\n}, \n{\n \"ETH_account\" : \"0x6e", +"7dbb450531914ae2e9f5e8fa022cc71d26aea9\",", +"\n \"name\" : \"0x6e7dbb450531914ae2\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 10", +"00000\n}, \n{\n \"ETH_account\" : \"0x9d17c", +"14a16dc04d2651fc087044eb86cafc2091c\",\n ", +" \"name\" : \"0x9d17c14a16dc04d265\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 90069", +"0\n}, \n{\n \"ETH_account\" : \"0x911023139", +"bc0f73060616a76138594cb0c93ffdc\",\n \"n", +"ame\" : \"ctrevos\",\n \"publicKey\" : \"SPH", +"8AkjqDV6aFWCChoJAM4ze7W17o37bwpLDZmubbPe", +"vJMGWkxzsB\",\n \"balance\" : 57798188781", +"21\n}, \n{\n \"ETH_account\" : \"0x16f47ce5", +"6ba90e12d6be71ec85093467a4aea367\",\n \"", +"name\" : \"0x16f47ce56ba90e12d6\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 69186084", +"54\n}, \n{\n \"ETH_account\" : \"0xb48eaf22", +"121c5090df38caa3150be0872b9de6ce\",\n \"", +"name\" : \"0xb48eaf22121c5090df\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 14\n}, \n{", +"\n \"ETH_account\" : \"0x283b5e9dbe16eae3", +"c7210a01fb35000732aaed9e\",\n \"name\" : ", +"\"esco\",\n \"publicKey\" : \"SPH5WQkcbhJo4", +"PCvQWruxEKX5jMUpSTvgdUtKbnEmTTyqKRqsJrwB", +"\",\n \"balance\" : 45997105296\n}, \n{\n ", +" \"ETH_account\" : \"0x08ef720ca2596bad5333", +"fedf818f1bc148d9b8c6\",\n \"name\" : \"0x0", +"8ef720ca2596bad53\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 496321\n}, \n{\n \"ET", +"H_account\" : \"0x60974faeb25f39e126f6b67c", +"a49d3a439ba50f23\",\n \"name\" : \"0x60974", +"faeb25f39e126\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1711526951\n}, \n{\n \"ET", +"H_account\" : \"0x00ec4388d27e0e8e4030c8b8", +"381cb858b389842a\",\n \"name\" : \"0x00ec4", +"388d27e0e8e40\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 79831272500\n}, \n{\n \"E", +"TH_account\" : \"0x4b88ffbc66fad86b3f626c4", +"659f63a30b6a3dda3\",\n \"name\" : \"sebast", +"ianr\",\n \"publicKey\" : \"SPH6iSBp4bMfk6", +"8tUNoh6r4nehrHA4phqqvXKsyhVA8XqFMrYR7v1\"", +",\n \"balance\" : 34040601007\n}, \n{\n ", +"\"ETH_account\" : \"0x9cc720a603045a5cd9c96", +"17956c5dd1928b22b1d\",\n \"name\" : \"cori", +"sophiatx\",\n \"publicKey\" : \"SPH5UqhU2q", +"CUCRzZ7UyKPPCsxKzW8RwsJ2XRfUGMcJDzwmKPjm", +"cQi\",\n \"balance\" : 11682795240\n}, \n{\n", +" \"ETH_account\" : \"0x7d212564df90ed03c", +"7008eeecde6f2f4881a9cd2\",\n \"name\" : \"", +"bobsaget7594\",\n \"publicKey\" : \"SPH5EJ", +"UJbd3ftGomGnLC8uMqWaZEgP5jHUZgpFeeV7SqS6", +"PNC7QVF\",\n \"balance\" : 8030130204\n}, ", +"\n{\n \"ETH_account\" : \"0x0b7819053e523c", +"47afee2656efe756a130d5a8e8\",\n \"name\" ", +": \"0x0b7819053e523c47af\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1685079808\n}, ", +"\n{\n \"ETH_account\" : \"0x3fa5fef6dec226", +"9504cd5f941159da2c494b4ba5\",\n \"name\" ", +": \"geezee\",\n \"publicKey\" : \"5J5MDaoMw", +"92szWqWd5yRU2YSopacaJYf98qdfmNTevdMjv2y4", +"v9\",\n \"balance\" : 212883535257\n}, \n{\n", +" \"ETH_account\" : \"0x6b97407dbfcb595ce", +"679b02dd104b263b5292a52\",\n \"name\" : \"", +"0x6b97407dbfcb595ce6\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1458301009\n}, \n{\n", +" \"ETH_account\" : \"0x6f1b78c66724c4051", +"e934e6157f191d8c1e65062\",\n \"name\" : \"", +"jongkwan\",\n \"publicKey\" : \"SPH65nzMXD", +"e34H8yQVB5b6asJmtgBNbNCvF5iZtXqH8QHAeoxs", +"Qti\",\n \"balance\" : 47896453714\n}, \n{\n", +" \"ETH_account\" : \"0xd0b2580057355e9a8", +"3b753cd2fbf8e3897ed4576\",\n \"name\" : \"", +"0xd0b2580057355e9a83\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 8000000000\n}, \n{\n", +" \"ETH_account\" : \"0xedf8c9afe494b39e5", +"bd60d24d13b42710354e540\",\n \"name\" : \"", +"0xedf8c9afe494b39e5b\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1149571090\n}, \n{\n", +" \"ETH_account\" : \"0xb90df25fb60922c20", +"1c01c9a1eac79c26d3ea22f\",\n \"name\" : \"", +"0xb90df25fb60922c201\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 2768582308\n}, \n{\n", +" \"ETH_account\" : \"0x038dc9e95c3e766f1", +"87af3569bb6d338071864f8\",\n \"name\" : \"", +"sopeli\",\n \"publicKey\" : \"SPH5ByihdwHS", +"aMoYGsNjeEqdSQRCW4B9sNX1thV6tKs2JbVXbC72", +"W\",\n \"balance\" : 10717305509\n}, \n{\n ", +" \"ETH_account\" : \"0x794d85bfede9c2ea7d2", +"6506dd3355df15eee2e00\",\n \"name\" : \"so", +"phiatxswapluke\",\n \"publicKey\" : \"SPH5", +"3rfKsZkvSDmpCnsNMUjdv8LrpaM4j1JF6nwHVimT", +"z7N3Magw8\",\n \"balance\" : 2192700413\n}", +", \n{\n \"ETH_account\" : \"0xc0c16e7240f6", +"fed4abedfedc66014031521807e7\",\n \"name", +"\" : \"0xc0c16e7240f6fed4ab\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 99\n}, \n{\n ", +" \"ETH_account\" : \"0x062011983059e4275ad0", +"9ca7872b4fcd806c0f4a\",\n \"name\" : \"sop", +"hiatxcom\",\n \"publicKey\" : \"SPH8T4XAD1", +"VbGpfLbkGkD9jREqHPWvjxionTZ3a6J5vE2J85p2", +"f4N\",\n \"balance\" : 38640124727\n}, \n{\n", +" \"ETH_account\" : \"0x5e7cfebd2c7d4ec77", +"34dbea41fc37f85871ee7c9\",\n \"name\" : \"", +"0x5e7cfebd2c7d4ec773\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 268669\n}, \n{\n ", +"\"ETH_account\" : \"0x9739b1310e6ed7cf91ad1", +"998f46e0a2c00ac1783\",\n \"name\" : \"0x97", +"39b1310e6ed7cf91\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 34189263684\n}, \n{\n ", +" \"ETH_account\" : \"0x4f2446915ec4f2f31af9", +"f46e098636eac9fd7885\",\n \"name\" : \"sop", +"hiardnldxxzm\",\n \"publicKey\" : \"SPH5Wv", +"4CrraThNRiDMV13jw6AmLkZo1VzCVwPDbZZYd5fU", +"5iKxwdx\",\n \"balance\" : 11767869198\n},", +" \n{\n \"ETH_account\" : \"0x3d615aa5caf59", +"655312f4b1b7619c43f4cfb96af\",\n \"name\"", +" : \"0x3d615aa5caf5965531\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 425767070514\n", +"}, \n{\n \"ETH_account\" : \"0x92283a01994", +"e0bf63f246e4bc4e093d195f1cdd4\",\n \"nam", +"e\" : \"0x92283a01994e0bf63f\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 105324129\n}", +", \n{\n \"ETH_account\" : \"0xb4450bc0c152", +"cb75045e06e72e70b3abdbc8399c\",\n \"name", +"\" : \"aursof\",\n \"publicKey\" : \"SPH7Ud8", +"NcatiS27NeFGjPmEZfz8gR4t4cjEabubMZEx4JEK", +"Djyupc\",\n \"balance\" : 1714107014\n}, \n", +"{\n \"ETH_account\" : \"0xf3a1f29a7c061d5", +"f5fc5581e068597b301cea594\",\n \"name\" :", +" \"0xf3a1f29a7c061d5f5f\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 106441767628\n},", +" \n{\n \"ETH_account\" : \"0xb8a96e91817af", +"db90f94012342ea6de5fe3bd54c\",\n \"name\"", +" : \"0xb8a96e91817afdb90f\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 143\n}, \n{\n ", +" \"ETH_account\" : \"0xa0a2051bd656fcb794b6", +"4c49c8adc9e69460364a\",\n \"name\" : \"ker", +"amkicvel\",\n \"publicKey\" : \"SPH73ZjiQY", +"L8DKnFPWFN43P5mUxyh7oL9EGosU6NytS521Mgdk", +"w77\",\n \"balance\" : 47318112764\n}, \n{\n", +" \"ETH_account\" : \"0xbf38f569d1cf1f635", +"ac4d9b5da29f06663110865\",\n \"name\" : \"", +"0xbf38f569d1cf1f635a\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 795432\n}, \n{\n ", +"\"ETH_account\" : \"0x112b5f9403285b32473e7", +"d83d289e17de2f20e3a\",\n \"name\" : \"0x11", +"2b5f9403285b3247\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 7000000000\n}, \n{\n ", +"\"ETH_account\" : \"0xb51af46f9fd962d8f78e2", +"f1b3e1fd1469a82778a\",\n \"name\" : \"0xb5", +"1af46f9fd962d8f7\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 730000\n}, \n{\n \"ETH", +"_account\" : \"0x3be48c6ebc235df52c3160bed", +"00f32f4014c8d70\",\n \"name\" : \"0x3be48c", +"6ebc235df52c\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2028859525\n}, \n{\n \"ETH", +"_account\" : \"0x0f6fb5fa1b960e1c3ac193732", +"db8fb40b2d02169\",\n \"name\" : \"0x0f6fb5", +"fa1b960e1c3a\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 33\n}, \n{\n \"ETH_account", +"\" : \"0x698455f2a26ca12f1941efc4e6a6af483", +"bb88842\",\n \"name\" : \"0x698455f2a26ca1", +"2f19\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 23\n}, \n{\n \"ETH_account\" : \"0x2", +"462e24574ec8471054b02d2bc175c921f21ce1f\"", +",\n \"name\" : \"0x2462e24574ec847105\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"8067984622\n}, \n{\n \"ETH_account\" : \"0x", +"0482617a7ea8ccf1bd61ee3d35b8d247e970e6e0", +"\",\n \"name\" : \"aydanlovesanimes\",\n ", +"\"publicKey\" : \"SPH6XDqjP1kd6sE6VHoCRAsyp", +"MtbRuaWJ65FMZR6gEhUSTRszriLP\",\n \"bala", +"nce\" : 10688006733\n}, \n{\n \"ETH_accoun", +"t\" : \"0xc2962211e0349ad7e5b0cb6c4d358c1f", +"bfaedae8\",\n \"name\" : \"jvper\",\n \"pu", +"blicKey\" : \"SPH7gremGs8FTrNWBKKzPN3wveGC", +"qYb5LGnKqfS1ZXHssn4xDqPdz\",\n \"balance", +"\" : 1300000000\n}, \n{\n \"ETH_account\" :", +" \"0xbe42c652cf7d1247d8045a8e0b25db49c6c0", +"afea\",\n \"name\" : \"0xbe42c652cf7d1247d", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 5000006733\n}, \n{\n \"ETH_account\" :", +" \"0xb12a380bb925f8e2a766a2d50b1b39d371fe", +"115b\",\n \"name\" : \"0xb12a380bb925f8e2a", +"7\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1370550365\n}, \n{\n \"ETH_account\" :", +" \"0xd78b56d3b1cc6c7638d6a9f67cebbb73f0a6", +"e52d\",\n \"name\" : \"0xd78b56d3b1cc6c763", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 16030253352\n}, \n{\n \"ETH_account\" ", +": \"0xb8e63a24dc898201867d251d93564a0caf2", +"d35e8\",\n \"name\" : \"0xb8e63a24dc898201", +"86\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 74\n}, \n{\n \"ETH_account\" : \"0x1aa", +"b05fc1dc2f20db03559496c2e96299ac3c545\",\n", +" \"name\" : \"gutielgrande\",\n \"public", +"Key\" : \"SPH71q9Duy1nGkWiKxkq9usMM7xfvcQS", +"ExSwyxZMbERAYJNvNZTU1\",\n \"balance\" : ", +"14079357911\n}, \n{\n \"ETH_account\" : \"0", +"x08e11b7ce4cbc246dd50d3904b37faa4e32d34c", +"8\",\n \"name\" : \"0x08e11b7ce4cbc246dd\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 53\n}, \n{\n \"ETH_account\" : \"0xf7c1140", +"da86eedae46d3eff0774402518bf3b0db\",\n ", +"\"name\" : \"0xf7c1140da86eedae46\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4719806", +"059\n}, \n{\n \"ETH_account\" : \"0x740197a", +"9555599d1760775d2420a78c74d01ccf2\",\n ", +"\"name\" : \"0x740197a9555599d176\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 3062432", +"1209\n}, \n{\n \"ETH_account\" : \"0x706bbd", +"2aac61e1ba8d0e60cba34f4be79bb2c74b\",\n ", +" \"name\" : \"0x706bbd2aac61e1ba8d\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 486100", +"336\n}, \n{\n \"ETH_account\" : \"0x8658065", +"866b052c2509e3b35986771aac11d40d0\",\n ", +"\"name\" : \"0x8658065866b052c250\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 6951234", +"814\n}, \n{\n \"ETH_account\" : \"0x2a53805", +"f560e4c8ee7da8e937476ac87fe73db8d\",\n ", +"\"name\" : \"0x2a53805f560e4c8ee7\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 6581384", +"442\n}, \n{\n \"ETH_account\" : \"0x4a36947", +"4f49688f71dc96aa1d200a78517558f2d\",\n ", +"\"name\" : \"0x4a369474f49688f71d\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 30\n}, \n", +"{\n \"ETH_account\" : \"0x01c08575d845acf", +"2bdd1df6b449afebe9e8910cf\",\n \"name\" :", +" \"0x01c08575d845acf2bd\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 66\n}, \n{\n \"E", +"TH_account\" : \"0x1db3f7a9f026e379b14afeb", +"ce2a0b47047e4d404\",\n \"name\" : \"0x1db3", +"f7a9f026e379b1\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 8400535824\n}, \n{\n \"E", +"TH_account\" : \"0x2abf8bb7037cd95c4a7779a", +"584a63b92ad0575dd\",\n \"name\" : \"0x2abf", +"8bb7037cd95c4a\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 28\n}, \n{\n \"ETH_accou", +"nt\" : \"0xff6e2d75027caa5e8e7ae5f4f3062fb", +"d14784655\",\n \"name\" : \"0xff6e2d75027c", +"aa5e8e\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 6500000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x6757f4569abb6e49d3a7b787ad5e373", +"0c416d668\",\n \"name\" : \"meacuna\",\n ", +"\"publicKey\" : \"SPH5SUNE3yp7XEKfNomctB1AE", +"nihNDcXMyiYB7hHR36G86gULAU3z\",\n \"bala", +"nce\" : 2998159934\n}, \n{\n \"ETH_account", +"\" : \"0x4a61c9f1bcd354d8349821391327e110b", +"79307fd\",\n \"name\" : \"0x4a61c9f1bcd354", +"d834\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 28\n}, \n{\n \"ETH_account\" : \"0x0", +"a2ec33ffdc1f4238cc95b4a382d5288b0258d83\"", +",\n \"name\" : \"0x0a2ec33ffdc1f4238c\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 6", +"717717026\n}, \n{\n \"ETH_account\" : \"0xb", +"c34b48e8df14bd4974a1dc021983fb61c72b911\"", +",\n \"name\" : \"0xbc34b48e8df14bd497\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"383497036\n}, \n{\n \"ETH_account\" : \"0xe", +"bafbf032c7967947ee9267e561d803d4871c45f\"", +",\n \"name\" : \"0xebafbf032c7967947e\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"000000000\n}, \n{\n \"ETH_account\" : \"0xd", +"44bebb45bf915930a203da2fbae854c2362eaee\"", +",\n \"name\" : \"0xd44bebb45bf915930a\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"031188694\n}, \n{\n \"ETH_account\" : \"0x2", +"b0d94f8acd29f55a39b283d9b5fc0b310adf1df\"", +",\n \"name\" : \"leodflho\",\n \"publicKe", +"y\" : \"SPH7v9KrwQ4zDsegqYtsgVeKBuZqUXveGh", +"jjnVmwE7zAWNmB1M4uy\",\n \"balance\" : 12", +"11514961\n}, \n{\n \"ETH_account\" : \"0x9f", +"db958883a858f87e6f2ee18057a27ee23b8d95\",", +"\n \"name\" : \"0x9fdb958883a858f87e\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 16", +"89552728\n}, \n{\n \"ETH_account\" : \"0x1d", +"741c6edc8a3216b28c0ff0182780f137f0b443\",", +"\n \"name\" : \"0x1d741c6edc8a3216b2\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 11", +"608707189\n}, \n{\n \"ETH_account\" : \"0x7", +"ed06e42f0e3367532533ae21ab2786f7e6a61e6\"", +",\n \"name\" : \"0x7ed06e42f0e3367532\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 7", +"138608753\n}, \n{\n \"ETH_account\" : \"0x3", +"96eb3a7dd841a1dacc884ab3f73bc8707f48b7d\"", +",\n \"name\" : \"0x396eb3a7dd841a1dac\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"3\n}, \n{\n \"ETH_account\" : \"0x746a0df3e", +"566b428f2e63e5985baffd59877dd00\",\n \"n", +"ame\" : \"0x746a0df3e566b428f2\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 243050168", +"3\n}, \n{\n \"ETH_account\" : \"0x735edd790", +"93e8f4799060134523ee0a8d1bda175\",\n \"n", +"ame\" : \"smajdalf\",\n \"publicKey\" : \"SP", +"H5LYFcUgUQD5xme8dXMWBW54XxN95wRjNENezw95", +"N3oh3aNLTvu\",\n \"balance\" : 5834120833", +"\n}, \n{\n \"ETH_account\" : \"0xb0a68077b5", +"6f07fc57958b9569f9f5eff1e1d57f\",\n \"na", +"me\" : \"0xb0a68077b56f07fc57\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 3402702356", +"\n}, \n{\n \"ETH_account\" : \"0xb1dd29ebd7", +"b7692998c6e6ef9987f22988fd9692\",\n \"na", +"me\" : \"0xb1dd29ebd7b7692998\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 66\n}, \n{\n ", +" \"ETH_account\" : \"0x36130eb7bd66329aa4", +"d81b759e75c7229e169d28\",\n \"name\" : \"0", +"x36130eb7bd66329aa4\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 65\n}, \n{\n \"ETH_", +"account\" : \"0x73c0ca323623b482bf69785427", +"15425a88193c25\",\n \"name\" : \"0x73c0ca3", +"23623b482bf\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 38\n}, \n{\n \"ETH_account\"", +" : \"0x2651177cc13cffe2658cb3a92c9e9516f8", +"0431ac\",\n \"name\" : \"0x2651177cc13cffe", +"265\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 21185537645\n}, \n{\n \"ETH_account", +"\" : \"0x40ed2cf7a19ed97f84a9ab28cab4c9fcc", +"2f366c4\",\n \"name\" : \"0x40ed2cf7a19ed9", +"7f84\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 11\n}, \n{\n \"ETH_account\" : \"0x8", +"b5347e12ece13475157b712ed601a7ec5962bb9\"", +",\n \"name\" : \"0x8b5347e12ece134751\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"490105248\n}, \n{\n \"ETH_account\" : \"0xb", +"7f0e6ec667118b548631ac68c1a0b682c0b60c8\"", +",\n \"name\" : \"0xb7f0e6ec667118b548\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"77077191\n}, \n{\n \"ETH_account\" : \"0x62", +"42b50797c79a87beafcd51a94df84f6d5d2e54\",", +"\n \"name\" : \"0x6242b50797c79a87be\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 17", +"007386919\n}, \n{\n \"ETH_account\" : \"0xb", +"6c478dcdf76e72079cbf7f0771d80b8ffe21303\"", +",\n \"name\" : \"neo\",\n \"publicKey\" : ", +"\"SPH8AJypEpi8KE4zviQeMTyMzFADvoAw7iVVxuG", +"YfYsvVdHhNbTms\",\n \"balance\" : 6583390", +"3339\n}, \n{\n \"ETH_account\" : \"0x7ab6c3", +"1747049bbe34a19253c0abe5001ccbe8c6\",\n ", +" \"name\" : \"0x7ab6c31747049bbe34\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 291660", +"2019\n}, \n{\n \"ETH_account\" : \"0x8ede59", +"94b122d0c946275b05965db17dccf6234e\",\n ", +" \"name\" : \"0x8ede5994b122d0c946\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 483369", +"7006\n}, \n{\n \"ETH_account\" : \"0xcb9afe", +"e59ce36bb79dceb5dc1644d275a91eb35f\",\n ", +" \"name\" : \"0xcb9afee59ce36bb79d\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 878256", +"9222\n}, \n{\n \"ETH_account\" : \"0xbd0133", +"899eb4d84f9daf46bc0b64d902aef7cccf\",\n ", +" \"name\" : \"0xbd0133899eb4d84f9d\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 486100", +"336\n}, \n{\n \"ETH_account\" : \"0x46233b5", +"760e95b803916723daee3775dfa4abe2d\",\n ", +"\"name\" : \"0x46233b5760e95b8039\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1955865", +"439\n}, \n{\n \"ETH_account\" : \"0x5c749e3", +"a8c9d6e42917bb32a2e0cca4118acebbc\",\n ", +"\"name\" : \"0x5c749e3a8c9d6e4291\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 8000000", +"773\n}, \n{\n \"ETH_account\" : \"0xd32aaa0", +"8c368e6b7d751da157a6715780d40829f\",\n ", +"\"name\" : \"0xd32aaa08c368e6b7d7\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4571518", +"3523\n}, \n{\n \"ETH_account\" : \"0x954ba5", +"74eef07cf4d7f5ac244b43ed86aa5c23f6\",\n ", +" \"name\" : \"0x954ba574eef07cf4d7\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 580043", +"6407\n}, \n{\n \"ETH_account\" : \"0xe1898f", +"4e7c193e153374ddcecfa0a1f3a781b862\",\n ", +" \"name\" : \"0xe1898f4e7c193e1533\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 972200", +"6733\n}, \n{\n \"ETH_account\" : \"0x1c0324", +"08c5b3f48488a8d261bedaebdce1e78ddb\",\n ", +" \"name\" : \"0x1c032408c5b3f48488\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 154724", +"861\n}, \n{\n \"ETH_account\" : \"0xce6e6b3", +"61c7a6947bccefcf6cd14729e8e357035\",\n ", +"\"name\" : \"0xce6e6b361c7a6947bc\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2000842", +"202\n}, \n{\n \"ETH_account\" : \"0xc790dff", +"7e79c9a7b0f386461c3c6e62dc588f8d2\",\n ", +"\"name\" : \"0xc790dff7e79c9a7b0f\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5507095", +"448\n}, \n{\n \"ETH_account\" : \"0x0ae8441", +"d900bdbcd11753fae2c176c2e8c3fd3b6\",\n ", +"\"name\" : \"0x0ae8441d900bdbcd11\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1943972", +"6061\n}, \n{\n \"ETH_account\" : \"0xd4c940", +"cdc62f0f7fd17fdbf2ad70ebf421f77e5b\",\n ", +" \"name\" : \"0xd4c940cdc62f0f7fd1\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 442\n},", +" \n{\n \"ETH_account\" : \"0x542d489c68431", +"a93604551b9b7e2e30e381f301a\",\n \"name\"", +" : \"0x542d489c68431a9360\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 60577\n}, \n{\n ", +" \"ETH_account\" : \"0xed59a6875cab3367b6", +"2aeb0bad55ccd45817c727\",\n \"name\" : \"s", +"oopersophiatx\",\n \"publicKey\" : \"SPH7k", +"ewB44ZySFVBtx7936rTnPsNAdWVgvmM837BHh5PW", +"LXWwxuBx\",\n \"balance\" : 2796798892\n},", +" \n{\n \"ETH_account\" : \"0xddeac0907a6b1", +"9cd591c29fa4a93f4be2dcaeaa4\",\n \"name\"", +" : \"0xddeac0907a6b19cd59\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 2253737924\n},", +" \n{\n \"ETH_account\" : \"0x1dc022cf6b276", +"56edc2b8214f7600909f2e60250\",\n \"name\"", +" : \"0x1dc022cf6b27656edc\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 8904\n}, \n{\n ", +" \"ETH_account\" : \"0x88c81ab04acaa6c71d6", +"3fe681b9163029d051b10\",\n \"name\" : \"0x", +"88c81ab04acaa6c71d\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1020810706\n}, \n{\n ", +" \"ETH_account\" : \"0xa1658175cfaf408e7b7", +"541493246676ddadc6582\",\n \"name\" : \"0x", +"a1658175cfaf408e7b\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 9722006733\n}, \n{\n ", +" \"ETH_account\" : \"0x81f647f6c532fa41289", +"2ee237bf24e730b7dff22\",\n \"name\" : \"0x", +"81f647f6c532fa4128\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 75676033643\n}, \n{\n ", +" \"ETH_account\" : \"0xfec619d9ee26ee4983", +"935cf613564f19e1ed661d\",\n \"name\" : \"a", +"mbconitsult\",\n \"publicKey\" : \"SPH5dRB", +"pRxC3p5otMRwffQSs7zv7R8ikYW6gXSQ2sDSAS6L", +"WypzL8\",\n \"balance\" : 12438297352\n}, ", +"\n{\n \"ETH_account\" : \"0x0b6c0c6b6e049f", +"567e9f7aa4ca04add4cd022abc\",\n \"name\" ", +": \"0x0b6c0c6b6e049f567e\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 9722006733\n}, ", +"\n{\n \"ETH_account\" : \"0x48c92910da5d71", +"3fb8b1e1e6b397ebae3ea73211\",\n \"name\" ", +": \"0x48c92910da5d713fb8\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3858257365\n}, ", +"\n{\n \"ETH_account\" : \"0x5c2e883b16d731", +"80f60febf687b74ec615d1d544\",\n \"name\" ", +": \"andy\",\n \"publicKey\" : \"SPH6t6SbNxz", +"PcxTJDEwgUXL9fRaP6B28JX3t8wbnk1mdiXzuKHF", +"Wz\",\n \"balance\" : 34770428699\n}, \n{\n ", +" \"ETH_account\" : \"0x8d0abd7c2d92744699", +"8b5598fd30d171700dedd8\",\n \"name\" : \"0", +"x8d0abd7c2d92744699\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1862035137\n}, \n{\n ", +" \"ETH_account\" : \"0x1d3e92732bd502e65c", +"04ff1cfb6e8384a7d18238\",\n \"name\" : \"0", +"x1d3e92732bd502e65c\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 3402702356\n}, \n{\n ", +" \"ETH_account\" : \"0x0a50bf8557efca9bf1", +"79727c88f4bddaeaae94d5\",\n \"name\" : \"0", +"x0a50bf8557efca9bf1\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 486100336\n}, \n{\n ", +" \"ETH_account\" : \"0x9a28b3e23f10ed0140b", +"33f794216fadbf43de394\",\n \"name\" : \"0x", +"9a28b3e23f10ed0140\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 6600000000\n}, \n{\n ", +" \"ETH_account\" : \"0xc4b80f353b373e624a3", +"c55fc36bd15076b49a6d1\",\n \"name\" : \"0x", +"c4b80f353b373e624a\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 2430501683\n}, \n{\n ", +" \"ETH_account\" : \"0x4ee7eb3eb6aa34e70ac", +"761496c6fe79b10a098e3\",\n \"name\" : \"0x", +"4ee7eb3eb6aa34e70a\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 890589385\n}, \n{\n ", +" \"ETH_account\" : \"0x95dfe0137b85b94a503d", +"05a3fc460360b888c307\",\n \"name\" : \"0x9", +"5dfe0137b85b94a50\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 7025156663\n}, \n{\n ", +" \"ETH_account\" : \"0x4f5c8dc1db877e2fccc6", +"1c8d4851cad50878106b\",\n \"name\" : \"pet", +"erchmelar\",\n \"publicKey\" : \"SPH6zW4a2", +"QbBATBUZmDW7NawCFMEDiiSbW65i2531LqXiCwpC", +"SHgv\",\n \"balance\" : 33997002280\n}, \n{", +"\n \"ETH_account\" : \"0x0bc7ebca23bde439", +"fec9791e2a245a440e24d0fd\",\n \"name\" : ", +"\"0x0bc7ebca23bde439fe\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 9722006733\n}, \n{", +"\n \"ETH_account\" : \"0x197e4c5994f23b8c", +"058386a8b908ef0269133258\",\n \"name\" : ", +"\"0x197e4c5994f23b8c05\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1336775925\n}, \n{", +"\n \"ETH_account\" : \"0x3e0b67ad58fa57e0", +"b08ff27ee3d75492c660ac9e\",\n \"name\" : ", +"\"0x3e0b67ad58fa57e0b0\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 9706159862\n}, \n{", +"\n \"ETH_account\" : \"0xed7a7564c9ade3ce", +"2c621ded4f4214ab08826d91\",\n \"name\" : ", +"\"0xed7a7564c9ade3ce2c\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1323005\n}, \n{\n ", +" \"ETH_account\" : \"0x02e9f69682bfa36698b", +"6aecf261531552003b1ad\",\n \"name\" : \"cr", +"ifernandez\",\n \"publicKey\" : \"SPH5LJcs", +"EuugpaGFCGKVo8CM6FinD9KuJVTbPHgFzGYv7AhE", +"jzF52\",\n \"balance\" : 1277301211\n}, \n{", +"\n \"ETH_account\" : \"0x9be66b84e33fe92f", +"9140571ada03fbc911014600\",\n \"name\" : ", +"\"0x9be66b84e33fe92f91\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 16833\n}, \n{\n ", +"\"ETH_account\" : \"0x39c4b9637461cc310aead", +"667680c8e59f7f421cc\",\n \"name\" : \"0x39", +"c4b9637461cc310a\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 2061003366\n}, \n{\n ", +"\"ETH_account\" : \"0xedcd5d2eea5ef9d2c4152", +"8355b85cb87ba981e91\",\n \"name\" : \"0xed", +"cd5d2eea5ef9d2c4\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 486100336\n}, \n{\n \"", +"ETH_account\" : \"0x56be952f6717fed69e3c14", +"05ecd650a0b32e9806\",\n \"name\" : \"0x56b", +"e952f6717fed69e\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2489\n}, \n{\n \"ETH_ac", +"count\" : \"0xa520cab3360abaa83eec9b7e98c8", +"94bdab34a718\",\n \"name\" : \"softy\",\n ", +" \"publicKey\" : \"SPH634thLXAaK63qnE77LB1K", +"zHBTbXNfjBdnmLbS2ZtRobcLreB1a\",\n \"bal", +"ance\" : 25726511500\n}, \n{\n \"ETH_accou", +"nt\" : \"0x25c6ac44cf400776e075439931aad97", +"5a197d613\",\n \"name\" : \"0x25c6ac44cf40", +"0776e0\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1611232335\n}, \n{\n \"ETH_accou", +"nt\" : \"0xb1053587b28c0f13f0089f05d1cf1f5", +"e35fbb369\",\n \"name\" : \"0xb1053587b28c", +"0f13f0\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1083874380\n}, \n{\n \"ETH_accou", +"nt\" : \"0xe484a9951cf5a3ade3cac1b37c1c0d4", +"517f6954c\",\n \"name\" : \"0xe484a9951cf5", +"a3ade3\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 10208107069\n}, \n{\n \"ETH_acco", +"unt\" : \"0x8d25f564b59eb49173f5574c5ad548", +"56f5a31e7a\",\n \"name\" : \"0x8d25f564b59", +"eb49173\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 4861003366\n}, \n{\n \"ETH_acco", +"unt\" : \"0x91a635d2262cfd566518576116c294", +"5d9e3c9531\",\n \"name\" : \"0x91a635d2262", +"cfd5665\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 2241658921\n}, \n{\n \"ETH_acco", +"unt\" : \"0x1e38aa9db32313030cecb2328bbd2e", +"683afc8218\",\n \"name\" : \"lukehrowland\"", +",\n \"publicKey\" : \"SPH73ACu3HjXxEbikrJ", +"xjNjogiijCVnDM1EU2rSygRK6JP9obYXpi\",\n ", +" \"balance\" : 7000224114\n}, \n{\n \"ETH_a", +"ccount\" : \"0x2c29739ab9e4753d59790795e42", +"b75b9f3c758d5\",\n \"name\" : \"gainnear\",", +"\n \"publicKey\" : \"SPH7jJrTPxs7gHbQtwXn", +"9TCn7VmoUDXNneqky8JyaxmEEmGqTqVsM\",\n ", +"\"balance\" : 5598040700\n}, \n{\n \"ETH_ac", +"count\" : \"0x4fa071a3a314e62db19aba34f79c", +"231ebedb512e\",\n \"name\" : \"0x4fa071a3a", +"314e62db1\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 2916451766\n}, \n{\n \"ETH_ac", +"count\" : \"0x017be8169866e9be5ce3beaa09e7", +"8c7695563e38\",\n \"name\" : \"0x017be8169", +"866e9be5c\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 587020984\n}, \n{\n \"ETH_acc", +"ount\" : \"0xa33c5f802c7433647b5cc6be5886d", +"a28a9226926\",\n \"name\" : \"invoice\",\n ", +" \"publicKey\" : \"SPH79agjmEFFzMPvvwpcCDT", +"NpZHvNJ6CvSZqFxuvSqT34zL5wgtQh\",\n \"ba", +"lance\" : 110000000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xf0af6d449b06b1299d2ab0d85120c", +"75064407d19\",\n \"name\" : \"0xf0af6d449b", +"06b1299d\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 10099\n}, \n{\n \"ETH_account\"", +" : \"0x1b20935dc9db5601cf7574edc68bd8f613", +"b8fe7a\",\n \"name\" : \"0x1b20935dc9db560", +"1cf\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 9\n}, \n{\n \"ETH_account\" : \"0xe20", +"c48d408cab179736cfaac4dd12d8bba444020\",\n", +" \"name\" : \"0xe20c48d408cab17973\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 33\n", +"}, \n{\n \"ETH_account\" : \"0x73344a7a6f5", +"15b82f774050e99abe22dd532b011\",\n \"nam", +"e\" : \"0x73344a7a6f515b82f7\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 73\n}, \n{\n ", +" \"ETH_account\" : \"0x820350229bc38faf288", +"5ce9a2968e61b7cb1dd8e\",\n \"name\" : \"et", +"hsophiatx\",\n \"publicKey\" : \"SPH7Dpx1e", +"9SjPQUn9iCrMjnq292egnTgjwgpPZvDS7Hom2GiE", +"6375\",\n \"balance\" : 4854802693\n}, \n{\n", +" \"ETH_account\" : \"0xb8552c3459ed89f08", +"7d1f9fb53d568b725ca0d9d\",\n \"name\" : \"", +"0xb8552c3459ed89f087\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 30\n}, \n{\n \"ETH", +"_account\" : \"0xf3be742cd890946dbd0e99958", +"2d8b52d95189efb\",\n \"name\" : \"0xf3be74", +"2cd890946dbd\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 99\n}, \n{\n \"ETH_account", +"\" : \"0x72b3ae408ffdeea6f59d3dd071b2f1619", +"7d2de1a\",\n \"name\" : \"0x72b3ae408ffdee", +"a6f5\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 22\n}, \n{\n \"ETH_account\" : \"0x2", +"747c74a20acc2d1637f10b291de9da41be2e494\"", +",\n \"name\" : \"0x2747c74a20acc2d163\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"430501683\n}, \n{\n \"ETH_account\" : \"0xc", +"f8917e502309070b57d30f7d8f01236958b8c01\"", +",\n \"name\" : \"0xcf8917e502309070b5\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 8", +"067668087\n}, \n{\n \"ETH_account\" : \"0x0", +"a9847f217364b7a410a9b089ae774492c9bfcc6\"", +",\n \"name\" : \"0x0a9847f217364b7a41\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"667847994\n}, \n{\n \"ETH_account\" : \"0x0", +"e4762495fafe9c39f2d0d0e5eacec2d6be00b96\"", +",\n \"name\" : \"0x0e4762495fafe9c39f\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"366\n}, \n{\n \"ETH_account\" : \"0x94264e0", +"32a759660e8221aae42a0e9b42a5f33cf\",\n ", +"\"name\" : \"0x94264e032a759660e8\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1783501", +"074\n}, \n{\n \"ETH_account\" : \"0x3b86283", +"430dc4ddb0acb87c87e70ba7ce8da7e7e\",\n ", +"\"name\" : \"0x3b86283430dc4ddb0a\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1506911", +"043\n}, \n{\n \"ETH_account\" : \"0xcb9a734", +"47e8abbb8e90db808b3169287c9bdbad1\",\n ", +"\"name\" : \"0xcb9a73447e8abbb8e9\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1500051", +"8516\n}, \n{\n \"ETH_account\" : \"0xc391cb", +"1d2bd298a599ba24cb9f56ffdfcce7624f\",\n ", +" \"name\" : \"0xc391cb1d2bd298a599\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 395938", +"446\n}, \n{\n \"ETH_account\" : \"0xc2e439b", +"425b44f9167f06d88c0ffa1bb399b5a19\",\n ", +"\"name\" : \"0xc2e439b425b44f9167\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 66\n}, \n", +"{\n \"ETH_account\" : \"0xc0077e847bf25e9", +"a09ac0c0960661e8faea3dc8e\",\n \"name\" :", +" \"0xc0077e847bf25e9a09\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 25121063966\n}, ", +"\n{\n \"ETH_account\" : \"0x5acde36a900f9e", +"9e4689c894ba9e914c64661b07\",\n \"name\" ", +": \"0x5acde36a900f9e9e46\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 729150504\n}, \n", +"{\n \"ETH_account\" : \"0xc1af025c5fff49f", +"4f0129d5770bbe9d94e40bbd9\",\n \"name\" :", +" \"0xc1af025c5fff49f4f0\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 639798025\n}, \n{", +"\n \"ETH_account\" : \"0x3cd0e4dd3dfa09c7", +"5cac82da75c45a12adb8df2c\",\n \"name\" : ", +"\"0x3cd0e4dd3dfa09c75c\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 24154325728\n}, \n", +"{\n \"ETH_account\" : \"0xf287fce23ed23d8", +"386bd96a32f3d36d85272b3b0\",\n \"name\" :", +" \"0xf287fce23ed23d8386\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 7163717552\n}, \n", +"{\n \"ETH_account\" : \"0xe354300ceb44491", +"1e130293bc5837cf4d558ca5e\",\n \"name\" :", +" \"0xe354300ceb444911e1\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1161026349\n}, \n", +"{\n \"ETH_account\" : \"0x858255a23f52513", +"731a73220adb57c7f32b3c5e3\",\n \"name\" :", +" \"tibrah\",\n \"publicKey\" : \"SPH8XKXD8D", +"Qx9h4cfhcu8zWVv1nExcUT8RGvxiWuSnQ4LF5v55", +"jUX\",\n \"balance\" : 2674829743\n}, \n{\n ", +" \"ETH_account\" : \"0xae4237ab3d2368230c", +"9104563ba25fddb24529f7\",\n \"name\" : \"0", +"xae4237ab3d2368230c\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 66\n}, \n{\n \"ETH_", +"account\" : \"0x0074eadfff4c1ee38d88f19428", +"2b83d0273fc6e9\",\n \"name\" : \"0x0074ead", +"fff4c1ee38d\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 5293632666\n}, \n{\n \"ETH_", +"account\" : \"0x9b6a557b8bd169ab9699a81fbd", +"f6dbf9d84d7d00\",\n \"name\" : \"0x9b6a557", +"b8bd169ab96\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 243050168\n}, \n{\n \"ETH_a", +"ccount\" : \"0x92a4f58009df9eac5f2af6d0597", +"7683639f0060e\",\n \"name\" : \"0x92a4f580", +"09df9eac5f\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 306502\n}, \n{\n \"ETH_accou", +"nt\" : \"0x4b11f86a69ed65e8e2266d936c55dc6", +"6f43da055\",\n \"name\" : \"0x4b11f86a69ed", +"65e8e2\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 894266\n}, \n{\n \"ETH_account\" ", +": \"0x1ca3c61f3d2ebcf5ce63de0234b974a3857", +"2f527\",\n \"name\" : \"0x1ca3c61f3d2ebcf5", +"ce\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 9552\n}, \n{\n \"ETH_account\" : \"0x0", +"2edeb4b0549e0679726efd1d88afcf9bd92b1ac\"", +",\n \"name\" : \"panda\",\n \"publicKey\" ", +": \"SPH8eMWExNiZFTvFxvvoSQqhY6kkNC556K5GB", +"hEXGtTpMgfkZJ2Wz\",\n \"balance\" : 79238", +"937886\n}, \n{\n \"ETH_account\" : \"0x9982", +"aa853ecc2f0f5811842ef71acfd46e60e533\",\n ", +" \"name\" : \"ejossev\",\n \"publicKey\" :", +" \"SPH5Me5WbKPagTkRUDWWwL7tMi9gsUTqn4owYC", +"uEdpTxDYguSEgk5\",\n \"balance\" : 184662", +"651443\n}, \n{\n \"ETH_account\" : \"0x3141", +"06933f094cd3140c874709add9939d4c1f62\",\n ", +" \"name\" : \"0x314106933f094cd314\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 4861", +"00336\n}, \n{\n \"ETH_account\" : \"0xdbd9f", +"022b5085db853c9fbc2d3edbfd0c1859aad\",\n ", +" \"name\" : \"0xdbd9f022b5085db853\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 24305", +"01683\n}, \n{\n \"ETH_account\" : \"0xb540f", +"ed15578331134b3a510cc140e9c407de3dd\",\n ", +" \"name\" : \"srisophiatxlit\",\n \"public", +"Key\" : \"SPH66aCW4r8aQ1UeEDTJ1cmC2kuipfF2", +"9UgkmLjNGMWjGqncAVh6z\",\n \"balance\" : ", +"413079269222\n}, \n{\n \"ETH_account\" : \"", +"0x594ffffed6836d2112cb9a4dfc186c87c5dc55", +"0d\",\n \"name\" : \"0x594ffffed6836d2112\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 956572525\n}, \n{\n \"ETH_account\" : \"0", +"xfa52dce19fb1f058bb771b6fda58a92b4131928", +"1\",\n \"name\" : \"0xfa52dce19fb1f058bb\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1612843567\n}, \n{\n \"ETH_account\" : \"0", +"x73ec5b3f53ea5bedb702f9d84559ea8376f64fb", +"0\",\n \"name\" : \"0x73ec5b3f53ea5bedb7\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 7228160245\n}, \n{\n \"ETH_account\" : \"0", +"x15bd486228318c503729eb80ef3e157ea4b63e9", +"a\",\n \"name\" : \"0x15bd486228318c5037\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 529973561\n}, \n{\n \"ETH_account\" : \"0x", +"0d5037886b34f0a389000c246a0dd256f8e5e2d4", +"\",\n \"name\" : \"0x0d5037886b34f0a389\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"3366\n}, \n{\n \"ETH_account\" : \"0x84d7a3", +"202156e57b98cf4685c5cda2a27bba1097\",\n ", +" \"name\" : \"0x84d7a3202156e57b98\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 204039", +"\n}, \n{\n \"ETH_account\" : \"0x000a74ae93", +"990325a443d4255a55b134a3bbc731\",\n \"na", +"me\" : \"0x000a74ae93990325a4\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 3366\n}, \n{", +"\n \"ETH_account\" : \"0x9e94e7002cd23480", +"5f85ea0fcaa273725f14f654\",\n \"name\" : ", +"\"pelssersdavy\",\n \"publicKey\" : \"SPH6p", +"Xwttt2ChqKfRTf8L7xC6jB4eg5MFxRv7qjHwfTHn", +"htFt4mCX\",\n \"balance\" : 179857124566\n", +"}, \n{\n \"ETH_account\" : \"0xd11e34f77e3", +"f82f165fe96fc3c3f6de309ee9b38\",\n \"nam", +"e\" : \"meto\",\n \"publicKey\" : \"SPH8PZjc", +"UQq5LggghdBKmX1kPrYjtpwQ3JwEzDsJ6KZbqJx8", +"4NoRK\",\n \"balance\" : 121525084166\n}, ", +"\n{\n \"ETH_account\" : \"0x66fdeddb02de60", +"acfd9630344f7a2278a26f86fb\",\n \"name\" ", +": \"0x66fdeddb02de60acfd\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 29282520\n}, \n{", +"\n \"ETH_account\" : \"0x490ce4234e096fcd", +"bc88ed7e5434686a3ea16909\",\n \"name\" : ", +"\"0x490ce4234e096fcdbc\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 6154722261\n}, \n{", +"\n \"ETH_account\" : \"0x8ce04751c61bcd84", +"45531988ea02af31d3381d19\",\n \"name\" : ", +"\"0x8ce04751c61bcd8445\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1486070044\n}, \n{", +"\n \"ETH_account\" : \"0x7557a26fe18f5a0f", +"cd3849a926176b9a47fc7e01\",\n \"name\" : ", +"\"mysophiatx\",\n \"publicKey\" : \"SPH66sV", +"F8NJNx5HSWxg7pVVDVXY5suRGKeJ2MJHEEEyLbiY", +"VgLQxu\",\n \"balance\" : 286556148\n}, \n{", +"\n \"ETH_account\" : \"0x6c43c8de503701df", +"63069177e9f4f2c49cad7fcd\",\n \"name\" : ", +"\"0x6c43c8de503701df63\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 534710370\n}, \n{\n", +" \"ETH_account\" : \"0xef69281de58df9e73", +"26b8c06f24ac69a746bd2cc\",\n \"name\" : \"", +"0xef69281de58df9e732\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 33\n}, \n{\n \"ETH", +"_account\" : \"0x242cb5b0b7a72021b74369eb8", +"2e1896b5ebd5c08\",\n \"name\" : \"0x242cb5", +"b0b7a72021b7\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 60646538930\n}, \n{\n \"ET", +"H_account\" : \"0xf003e39ca527964b3a3b7ccc", +"ee62ad4b2fa74e48\",\n \"name\" : \"0xf003e", +"39ca527964b3a\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 143164177\n}, \n{\n \"ETH", +"_account\" : \"0x305d04989d2ed971f6fdcb264", +"51065c6335b8649\",\n \"name\" : \"minjinnh", +"o\",\n \"publicKey\" : \"SPH6WEkdankja5o2b", +"xfK2Kn4f3hwtS7wr7gxVG1H6ay88y9rAuNkX\",\n ", +" \"balance\" : 8092636504\n}, \n{\n \"ETH", +"_account\" : \"0x9eac6d7e9d97ffcad2d2c1134", +"b7d885e8aeb0438\",\n \"name\" : \"myfortun", +"e\",\n \"publicKey\" : \"SPH8c6yQ3tiTKtBbd", +"xDUnM66JF8Ecmu1PjVNuonXmuJnkjMxSei1X\",\n ", +" \"balance\" : 38813210209\n}, \n{\n \"ET", +"H_account\" : \"0xd5e006e40ba90c3ffdf2bcf2", +"fc8a1e75ed5fe6bd\",\n \"name\" : \"0xd5e00", +"6e40ba90c3ffd\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 13518239295\n}, \n{\n \"E", +"TH_account\" : \"0x257bdffeab9ed25e41a2163", +"f138249ad1c1b15c7\",\n \"name\" : \"0x257b", +"dffeab9ed25e41\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 4861003366\n}, \n{\n \"E", +"TH_account\" : \"0x0e3e0c29e6bb917f0b6d117", +"e6b97369c5220d4ef\",\n \"name\" : \"0x0e3e", +"0c29e6bb917f0b\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 4947348334\n}, \n{\n \"E", +"TH_account\" : \"0x3ad70fbeb2de752cab6bf4b", +"619a1c69f69d08475\",\n \"name\" : \"0x3ad7", +"0fbeb2de752cab\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 154977873\n}, \n{\n \"ET", +"H_account\" : \"0xe4cac770860d2feed6bcc2a5", +"044010768db1f6a1\",\n \"name\" : \"0xe4cac", +"770860d2feed6\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 6602019\n}, \n{\n \"ETH_a", +"ccount\" : \"0x5cf2c668cb50a3d7b5f766a3798", +"42c41935fc829\",\n \"name\" : \"0x5cf2c668", +"cb50a3d7b5\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 87439131299\n}, \n{\n \"ETH_", +"account\" : \"0x726664263ff0605f46ae6a57d2", +"a6e5bbadfa4545\",\n \"name\" : \"0x7266642", +"63ff0605f46\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 972200673\n}, \n{\n \"ETH_a", +"ccount\" : \"0x261a6b5188c5561e02c004c3562", +"48b40d2b75371\",\n \"name\" : \"0x261a6b51", +"88c5561e02\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 33\n}, \n{\n \"ETH_account\" ", +": \"0x7cf1e475384bb7393a209edccf89ca5aad5", +"243f1\",\n \"name\" : \"0x7cf1e475384bb739", +"3a\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 7766376468\n}, \n{\n \"ETH_account\" ", +": \"0xffe20923b9ea4ea59eeb4f97f979ccd437b", +"49248\",\n \"name\" : \"0xffe20923b9ea4ea5", +"9e\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 903029\n}, \n{\n \"ETH_account\" : \"0", +"xdad98953131f58912f87df33932e02dbadd05a3", +"1\",\n \"name\" : \"0xdad98953131f58912f\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 46725737731\n}, \n{\n \"ETH_account\" : \"", +"0xc2c1f924c5c3dc5b562dec1b968464d78641ed", +"8d\",\n \"name\" : \"0xc2c1f924c5c3dc5b56\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 33\n}, \n{\n \"ETH_account\" : \"0xaf3081", +"56c2a172747592111dd4c01fd1c739d9ab\",\n ", +" \"name\" : \"0xaf308156c2a1727475\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 65\n}, ", +"\n{\n \"ETH_account\" : \"0x9a7a9580394d42", +"762fbac0fd3ad1cdd9f260c065\",\n \"name\" ", +": \"0x9a7a9580394d42762f\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1611232335\n}, ", +"\n{\n \"ETH_account\" : \"0x7d452d834ceed8", +"ffb2a34904e1a9043ab2b2658d\",\n \"name\" ", +": \"0x7d452d834ceed8ffb2\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 9498475897\n}, ", +"\n{\n \"ETH_account\" : \"0x30940e443c86d3", +"f315190e921c06804150407803\",\n \"name\" ", +": \"0x30940e443c86d3f315\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 12018151693\n},", +" \n{\n \"ETH_account\" : \"0xe4fbeebea7680", +"1d9710f19843fd47040fd39d5f6\",\n \"name\"", +" : \"0xe4fbeebea76801d971\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 6624528433\n},", +" \n{\n \"ETH_account\" : \"0x18dfcbae9c122", +"847ab33ed92bb52ef93b32d8ff8\",\n \"name\"", +" : \"0x18dfcbae9c122847ab\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 4778366309\n},", +" \n{\n \"ETH_account\" : \"0xfd8d9ff1a9167", +"8e2959a235b2c9739dd70c5bd7a\",\n \"name\"", +" : \"0xfd8d9ff1a91678e295\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 2661044190\n},", +" \n{\n \"ETH_account\" : \"0x016325836efd7", +"b473ef02df02b57082c20f55121\",\n \"name\"", +" : \"0x016325836efd7b473e\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 13655000366\n}", +", \n{\n \"ETH_account\" : \"0x48c6feb76b71", +"a5bac4b7af58e1671e56616e93dd\",\n \"name", +"\" : \"0x48c6feb76b71a5bac4\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 657806\n}, \n{", +"\n \"ETH_account\" : \"0xb7ea301e43cc6c92", +"6dbbcbf63c5eb0bf54983790\",\n \"name\" : ", +"\"0xb7ea301e43cc6c926d\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1377451514\n}, \n{", +"\n \"ETH_account\" : \"0xf54036a07cdfc8e8", +"5daa92171fa3f82cc8d5326d\",\n \"name\" : ", +"\"azn\",\n \"publicKey\" : \"SPH8mk2YvPBiyM", +"EqCnJcsdt4ggzU8bL83DvibEARjFjFykoE1uf9T\"", +",\n \"balance\" : 12645281994\n}, \n{\n ", +"\"ETH_account\" : \"0x9013974d74ab770556e67", +"bec9878deb4897b0ac7\",\n \"name\" : \"0x90", +"13974d74ab770556\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 10996144476\n}, \n{\n ", +" \"ETH_account\" : \"0xd1931c8949f4225a1a3d", +"7c718a3c8056c8964692\",\n \"name\" : \"0xd", +"1931c8949f4225a1a\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 604150504\n}, \n{\n ", +"\"ETH_account\" : \"0xd75d331d776da13ae2942", +"5412606c0ff41c139c0\",\n \"name\" : \"0xd7", +"5d331d776da13ae2\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 237150059\n}, \n{\n \"", +"ETH_account\" : \"0x1d284e7678cb48ae641695", +"d43c1ef25ac3a139bd\",\n \"name\" : \"0x1d2", +"84e7678cb48ae64\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 99270922\n}, \n{\n \"ET", +"H_account\" : \"0xeb2cade3635074502a5a61c5", +"70469033431ebf89\",\n \"name\" : \"0xeb2ca", +"de3635074502a\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 441909396\n}, \n{\n \"ETH", +"_account\" : \"0x0e394c38e97f05b2bc657951e", +"f39adac7e188a32\",\n \"name\" : \"0x0e394c", +"38e97f05b2bc\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3314320477\n}, \n{\n \"ETH", +"_account\" : \"0x59e74c79a20d0be97eab855c3", +"0f4d85a2dc0cbc6\",\n \"name\" : \"0x59e74c", +"79a20d0be97e\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 8838187939\n}, \n{\n \"ETH", +"_account\" : \"0x12ecb2a699e92fe2ff63a5a9f", +"be566abb231d7b8\",\n \"name\" : \"0x12ecb2", +"a699e92fe2ff\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3212708214\n}, \n{\n \"ETH", +"_account\" : \"0x62035cff209b75774595a00ef", +"067eb0ad25684e5\",\n \"name\" : \"0x62035c", +"ff209b757745\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 10080755758\n}, \n{\n \"ET", +"H_account\" : \"0x1047ffce44931bb2b7f03166", +"7834fdaa37236339\",\n \"name\" : \"0x1047f", +"fce44931bb2b7\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 575278865\n}, \n{\n \"ETH", +"_account\" : \"0xfcbf16e91c8a6777cb09e101a", +"883ebb6a188c5f8\",\n \"name\" : \"0xfcbf16", +"e91c8a6777cb\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 145830100\n}, \n{\n \"ETH_", +"account\" : \"0x0c2ce00e722bd42048c429842f", +"9e1aaf42590140\",\n \"name\" : \"roootbox\"", +",\n \"publicKey\" : \"SPH6aD5sbBivQG4Bsry", +"VvQQdopi9yTBrQdBiSYFThxAdcUnTwyCrw\",\n ", +" \"balance\" : 8838187939\n}, \n{\n \"ETH_a", +"ccount\" : \"0x72d825da79f2041b67709850411", +"63fb8843bca4f\",\n \"name\" : \"0x72d825da", +"79f2041b67\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 4772621487\n}, \n{\n \"ETH_a", +"ccount\" : \"0x540f856a7ebd537891067c98e61", +"d70d235257e5d\",\n \"name\" : \"0x540f856a", +"7ebd537891\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 9696\n}, \n{\n \"ETH_account", +"\" : \"0x5a60357a85b440d77a9881eeb8d660d71", +"42049ac\",\n \"name\" : \"0x5a60357a85b440", +"d77a\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 945362985\n}, \n{\n \"ETH_account\"", +" : \"0xfbf7731253485701f79e5fc705a758ead1", +"9c7aa8\",\n \"name\" : \"0xfbf773125348570", +"1f7\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 5744822160\n}, \n{\n \"ETH_account\"", +" : \"0x4f3247dd6804ef2d80018fae40f3e368b3", +"c6cb98\",\n \"name\" : \"0x4f3247dd6804ef2", +"d80\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 750627715\n}, \n{\n \"ETH_account\" ", +": \"0x3f8d267d3dc6e3f0648a33d1901d9db4391", +"264b7\",\n \"name\" : \"0x3f8d267d3dc6e3f0", +"64\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 22095469848\n}, \n{\n \"ETH_account\"", +" : \"0x24773f5941ebc851860bd8b737ab08860b", +"d77f4e\",\n \"name\" : \"gumaser\",\n \"pu", +"blicKey\" : \"SPH5mGGfvZ6NnZQcp42M5affgjyh", +"S4std95Yi5FqMuvfmwbrU2dTH\",\n \"balance", +"\" : 12855545564\n}, \n{\n \"ETH_account\" ", +": \"0xbdf447585d7d31e12896033616391fa5c9e", +"8cfa0\",\n \"name\" : \"0xbdf447585d7d31e1", +"28\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 957540019\n}, \n{\n \"ETH_account\" :", +" \"0x16eab4b3d8ac152b24cc9693d3fa14210ca5", +"7a36\",\n \"name\" : \"0x16eab4b3d8ac152b2", +"4\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 522690434\n}, \n{\n \"ETH_account\" : ", +"\"0xd24837f7f25164e13730af7b5460d96df616a", +"06a\",\n \"name\" : \"0xd24837f7f25164e137", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 191583749\n}, \n{\n \"ETH_account\" : \"", +"0xa8e7022a6aa7a9cb9dd865e791941a4dff576f", +"36\",\n \"name\" : \"aristipsedixit\",\n ", +"\"publicKey\" : \"SPH7atb4jd6CwvH6AmvZm4qYD", +"z6JVqD5afPashCaBgbf4Pm9T6YCD\",\n \"bala", +"nce\" : 4419093969\n}, \n{\n \"ETH_account", +"\" : \"0x530f30d091cb0c07faa620c7d1496e241", +"3f00690\",\n \"name\" : \"0x530f30d091cb0c", +"07fa\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 411065310\n}, \n{\n \"ETH_account\"", +" : \"0x32acda52db68d1f5797e732ba0499279d6", +"23fd60\",\n \"name\" : \"0x32acda52db68d1f", +"579\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 2210099769\n}, \n{\n \"ETH_account\"", +" : \"0x33fadbf5576d5723a5ad355bfb682a8d41", +"74c449\",\n \"name\" : \"0x33fadbf5576d572", +"3a5\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 4419093969\n}, \n{\n \"ETH_account\"", +" : \"0xde970034543f0be2bf3a6880d620890e14", +"083915\",\n \"name\" : \"0xde970034543f0be", +"2bf\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 7733414446\n}, \n{\n \"ETH_account\"", +" : \"0x019ca8184121a6ec921c8c0d333d9e751f", +"92424a\",\n \"name\" : \"0x019ca8184121a6e", +"c92\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 10095359043\n}, \n{\n \"ETH_account", +"\" : \"0xd314f5851f0b4701b5932edb910c33f8f", +"fb73efd\",\n \"name\" : \"0xd314f5851f0b47", +"01b5\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 4419093969\n}, \n{\n \"ETH_account", +"\" : \"0x7ecfbc79f6bbacb1b1540a59a5527dffe", +"957ed3d\",\n \"name\" : \"0x7ecfbc79f6bbac", +"b1b1\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 4602954241\n}, \n{\n \"ETH_account", +"\" : \"0x3fa1b28e276a73e780d858be0ccfe6bc3", +"e98bed5\",\n \"name\" : \"0x3fa1b28e276a73", +"e780\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 36\n}, \n{\n \"ETH_account\" : \"0x7", +"673ce0f8edf9001d997e33390b9dc9b43ef79da\"", +",\n \"name\" : \"0x7673ce0f8edf9001d9\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"4\n}, \n{\n \"ETH_account\" : \"0xa7f2cd495", +"8dc6b8861b54a764029eb30e9e23511\",\n \"n", +"ame\" : \"0xa7f2cd4958dc6b8861\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 916588343", +"\n}, \n{\n \"ETH_account\" : \"0x4c7a2b7153", +"6651459d308d9fa59613395bf8e25e\",\n \"na", +"me\" : \"0x4c7a2b71536651459d\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 86\n}, \n{\n ", +" \"ETH_account\" : \"0x35278c9b572b9f95cc", +"294709e1d386509227a236\",\n \"name\" : \"0", +"x35278c9b572b9f95cc\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 47439810\n}, \n{\n ", +" \"ETH_account\" : \"0xf9466f91712b5b0b1e70", +"429913e09a7ae34f85dd\",\n \"name\" : \"0xf", +"9466f91712b5b0b1e\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 335\n}, \n{\n \"ETH_a", +"ccount\" : \"0xc2d73a45088e8760b71dcba88d0", +"46e5656e712c9\",\n \"name\" : \"0xc2d73a45", +"088e8760b7\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 544\n}, \n{\n \"ETH_account\"", +" : \"0xfa6416f670c60c29b813609a14a7b9901c", +"3846c6\",\n \"name\" : \"0xfa6416f670c60c2", +"9b8\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 974\n}, \n{\n \"ETH_account\" : \"0x8", +"8cb1afaeb4c1bcb78a4908f5240938c4a427ccc\"", +",\n \"name\" : \"0x88cb1afaeb4c1bcb78\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"413989916\n}, \n{\n \"ETH_account\" : \"0xd", +"5430b3f79b0146f4881a6078a8cd553114d58df\"", +",\n \"name\" : \"0xd5430b3f79b0146f48\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"99\n}, \n{\n \"ETH_account\" : \"0xcc4b6dfd", +"760ff1eec953ae994ef35e43ab79d6f7\",\n \"", +"name\" : \"0xcc4b6dfd760ff1eec9\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 20010000", +"000\n}, \n{\n \"ETH_account\" : \"0xd0e991d", +"2c27fb6bf9f0b3495316f331d9ac5a663\",\n ", +"\"name\" : \"0xd0e991d2c27fb6bf9f\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4419093", +"969\n}, \n{\n \"ETH_account\" : \"0xfa6d746", +"003230377fce651d69652b76890b5bf3c\",\n ", +"\"name\" : \"0xfa6d746003230377fc\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1084728", +"1463\n}, \n{\n \"ETH_account\" : \"0x3aab27", +"309c2ea55600c3fa08e43df2945869fd81\",\n ", +" \"name\" : \"0x3aab27309c2ea55600\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 24\n}, ", +"\n{\n \"ETH_account\" : \"0x42bb5c66bb3363", +"64d63176395c95301c5796dca4\",\n \"name\" ", +": \"0x42bb5c66bb336364d6\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 14578370051\n},", +" \n{\n \"ETH_account\" : \"0xd0e78a9f15dfd", +"295061b89ec6e7e86b4a4496f4d\",\n \"name\"", +" : \"0xd0e78a9f15dfd29506\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 651474129\n}, ", +"\n{\n \"ETH_account\" : \"0x53f2bca8a994e6", +"8937240b66af960294e74c66c8\",\n \"name\" ", +": \"0x53f2bca8a994e68937\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 6186731557\n}, ", +"\n{\n \"ETH_account\" : \"0x7ad8d3e3dc3881", +"8004042a08b5c3abbe00a383b3\",\n \"name\" ", +": \"0x7ad8d3e3dc38818004\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 441909396\n}, \n", +"{\n \"ETH_account\" : \"0xc6a5a5879343ae5", +"2c4e40a10ebaad19f4311804d\",\n \"name\" :", +" \"kwakuabebrese\",\n \"publicKey\" : \"SPH", +"6XyJje3FspYajpzByFJcjiSYVkVxroPL65MGUjJH", +"Y6r3XQKcyq\",\n \"balance\" : 1000875171\n", +"}, \n{\n \"ETH_account\" : \"0xa6031aa7a61", +"e246e41bf5bcd9410103c6acad9df\",\n \"nam", +"e\" : \"0xa6031aa7a61e246e41\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 48\n}, \n{\n ", +" \"ETH_account\" : \"0xdee73fc21f9dc19cead", +"ec9c155ba12758a7a1ec1\",\n \"name\" : \"0x", +"dee73fc21f9dc19cea\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 6\n}, \n{\n \"ETH_ac", +"count\" : \"0x54dd344be176621bd3fa50dc12ae", +"26a583fe7220\",\n \"name\" : \"amirruss\",\n", +" \"publicKey\" : \"SPH5nVjSCLgCmR8oWrSGb", +"R7qWimNjAYr1uQJ3mpC2bvpH3psyR2rK\",\n \"", +"balance\" : 374734882\n}, \n{\n \"ETH_acco", +"unt\" : \"0x1eea537b3cc42db38aa388ea46e83e", +"50085ba77f\",\n \"name\" : \"0x1eea537b3cc", +"42db38a\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 18274690580\n}, \n{\n \"ETH_acc", +"ount\" : \"0xde46dd5a7ec68ddedd876b3799748", +"5f89ba459b6\",\n \"name\" : \"0xde46dd5a7e", +"c68ddedd\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 4035187939\n}, \n{\n \"ETH_acc", +"ount\" : \"0x213a7f0491638131184c46baafa06", +"ed540ffde28\",\n \"name\" : \"0x213a7f0491", +"63813118\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 12\n}, \n{\n \"ETH_account\" : ", +"\"0xeb0d1ec4d5118af05878e029714f0424b7076", +"b52\",\n \"name\" : \"0xeb0d1ec4d5118af058", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 4628883000\n}, \n{\n \"ETH_account\" : ", +"\"0x901e45ebb4f308b6eae2054de14d324abc37c", +"8f1\",\n \"name\" : \"ljqlwx2005\",\n \"pu", +"blicKey\" : \"SPH4tk2zzurswLHmvmjShRQ3ywkT", +"BJjPizLcvMPbCj1hjwmCBJ13C\",\n \"balance", +"\" : 24100493413\n}, \n{\n \"ETH_account\" ", +": \"0xd1556b40b94f82a9198fcd252d39061147d", +"2beb8\",\n \"name\" : \"0xd1556b40b94f82a9", +"19\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 1000096\n}, \n{\n \"ETH_account\" : \"", +"0xa2563fd5c32e34155fd412b9307635e3f432fa", +"b5\",\n \"name\" : \"0xa2563fd5c32e34155f\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 3095787442\n}, \n{\n \"ETH_account\" : \"", +"0x69c8485de24c22889c23a34f80d99093ae2a9e", +"12\",\n \"name\" : \"0x69c8485de24c22889c\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 17676375878\n}, \n{\n \"ETH_account\" : ", +"\"0xcfaa4f1a3537733349ad582a435caf67e05ec", +"fd3\",\n \"name\" : \"0xcfaa4f1a3537733349", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 4419093969\n}, \n{\n \"ETH_account\" : ", +"\"0x279afc9899672214ab49f15ca774402081819", +"132\",\n \"name\" : \"0x279afc9899672214ab", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 3969\n}, \n{\n \"ETH_account\" : \"0x553", +"6dd39f322da174313d5ad29610ecaccd325b8\",\n", +" \"name\" : \"0x5536dd39f322da1743\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 449", +"310297\n}, \n{\n \"ETH_account\" : \"0x99c8", +"b7ec221aba816c4ca1f3585ed6159bbe2a70\",\n ", +" \"name\" : \"0x99c8b7ec221aba816c\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 9877", +"057455\n}, \n{\n \"ETH_account\" : \"0xa3e3", +"b898f7d7c103ab93abf5395dff213b234692\",\n ", +" \"name\" : \"0xa3e3b898f7d7c103ab\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 8838", +"18793\n}, \n{\n \"ETH_account\" : \"0xfac4b", +"bb8cee19af403e94a0aba788c1fb4e47390\",\n ", +" \"name\" : \"0xfac4bbb8cee19af403\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 28311", +"9728\n}, \n{\n \"ETH_account\" : \"0xeb7b0c", +"9e60d4f2330fa768041f74b04f53fec5fc\",\n ", +" \"name\" : \"0xeb7b0c9e60d4f2330f\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 162870", +"3785\n}, \n{\n \"ETH_account\" : \"0x60c8bb", +"91cef937281c3665c53e59d52ec574a56c\",\n ", +" \"name\" : \"0x60c8bb91cef937281c\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 505765", +"30\n}, \n{\n \"ETH_account\" : \"0x23b076ea", +"39dc76855cf3001ea8f27494f350eff4\",\n \"", +"name\" : \"0x23b076ea39dc76855c\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 12994518", +"60\n}, \n{\n \"ETH_account\" : \"0x9da94f8d", +"bac30cb7c0d1e72b1f4bc4a94e1e4b25\",\n \"", +"name\" : \"lsvoboda\",\n \"publicKey\" : \"S", +"PH7U8a5GX6KRuYRtdRCMLBGVdcq4icdYRhgvdhcW", +"u8sBU9jZCG6i\",\n \"balance\" : 315336577", +"8\n}, \n{\n \"ETH_account\" : \"0x39a117779", +"8613751316b36032c9acfbc55baf479\",\n \"n", +"ame\" : \"0x39a117779861375131\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 41421\n}, ", +"\n{\n \"ETH_account\" : \"0x32a901800edc15", +"df241f6d4680a6bd3ed21e2dcf\",\n \"name\" ", +": \"0x32a901800edc15df24\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3000558519\n}, ", +"\n{\n \"ETH_account\" : \"0x3c21aa88a4dc3d", +"facc68d33c5b00de004b895450\",\n \"name\" ", +": \"0x3c21aa88a4dc3dfacc\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3\n}, \n{\n \"E", +"TH_account\" : \"0x1e79d95afc6d79bb194d2d1", +"1f9f4c92234ec7afe\",\n \"name\" : \"0x1e79", +"d95afc6d79bb19\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1000626182\n}, \n{\n \"E", +"TH_account\" : \"0x87e2de948eb819f8ef0ad42", +"607b8e19f9e51e556\",\n \"name\" : \"0x87e2", +"de948eb819f8ef\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 618673155\n}, \n{\n \"ET", +"H_account\" : \"0xab880991f2ec6ba0763d5c57", +"9d65d4f22e634b71\",\n \"name\" : \"0xab880", +"991f2ec6ba076\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1644931029\n}, \n{\n \"ET", +"H_account\" : \"0x2ab84cc51293ccd340a0c2b2", +"9e056e137181eddd\",\n \"name\" : \"0x2ab84", +"cc51293ccd340\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 260854807\n}, \n{\n \"ETH", +"_account\" : \"0x8f52c47c8e51fc6a66991a9cd", +"9d6e9f3ace662f0\",\n \"name\" : \"nighthaw", +"k\",\n \"publicKey\" : \"SPH5TfCZ6zNV3z7HE", +"d8ETWcVh3tmJ2QD1AZ4kps2ZKccUoBH98Lsz\",\n ", +" \"balance\" : 1562684478\n}, \n{\n \"ETH", +"_account\" : \"0x518591b505a71a52f2b85aeb1", +"9dfc2030ef445d0\",\n \"name\" : \"sophiast", +"ring\",\n \"publicKey\" : \"SPH4vRcdxaqGjL", +"NRgmXitKUpxogDJYMEQwFhopXK8c2cpD8fXxzKo\"", +",\n \"balance\" : 10955839826\n}, \n{\n ", +"\"ETH_account\" : \"0xf4c722c68e53eaeb5d8c4", +"a712b37209d66889f91\",\n \"name\" : \"0xf4", +"c722c68e53eaeb5d\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 69\n}, \n{\n \"ETH_acc", +"ount\" : \"0xb66250002d07b1f897f3165745500", +"ac555839743\",\n \"name\" : \"0xb66250002d", +"07b1f897\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 4419093969\n}, \n{\n \"ETH_acc", +"ount\" : \"0xccd785bcd117a33a7133fde7fd068", +"262de295f64\",\n \"name\" : \"0xccd785bcd1", +"17a33a71\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 751757\n}, \n{\n \"ETH_account", +"\" : \"0x88abcf8c98bba299f77b48ea75fe2d2fd", +"a2eb596\",\n \"name\" : \"0x88abcf8c98bba2", +"99f7\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 38\n}, \n{\n \"ETH_account\" : \"0x7", +"fd185e8fb350895126a03f48c9724d3910a3429\"", +",\n \"name\" : \"0x7fd185e8fb35089512\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 9", +"496\n}, \n{\n \"ETH_account\" : \"0x255ae1b", +"7ea3e90a693c577116a9a6b9e8ad9d7a0\",\n ", +"\"name\" : \"0x255ae1b7ea3e90a693\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 691019\n", +"}, \n{\n \"ETH_account\" : \"0x0b7920d5c82", +"c65ee2aeba20d7c1458b0dffe2c7f\",\n \"nam", +"e\" : \"0x0b7920d5c82c65ee2a\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 22095469848", +"\n}, \n{\n \"ETH_account\" : \"0x961b2b150d", +"2722e2813e86b955472f2b85d9ee7c\",\n \"na", +"me\" : \"0x961b2b150d2722e281\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 187939\n}, ", +"\n{\n \"ETH_account\" : \"0x9ba7e78aa57c79", +"83d0412b16fe64842d1b736833\",\n \"name\" ", +": \"0x9ba7e78aa57c7983d0\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 67001\n}, \n{\n ", +" \"ETH_account\" : \"0x6b292f7c55ac17c7173", +"b878d9a4e0e8ccc22838d\",\n \"name\" : \"0x", +"6b292f7c55ac17c717\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 5000006733\n}, \n{\n ", +" \"ETH_account\" : \"0x04afe1d4eebb77448e2", +"ee114988306c94c1e1f5f\",\n \"name\" : \"0x", +"04afe1d4eebb77448e\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 255708\n}, \n{\n \"E", +"TH_account\" : \"0x818797f572f64a012658135", +"817be8ac86b9217be\",\n \"name\" : \"0x8187", +"97f572f64a0126\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 69\n}, \n{\n \"ETH_accou", +"nt\" : \"0x2a90e92ab57fc73e92f0471ab9e20ca", +"e55fd7384\",\n \"name\" : \"0x2a90e92ab57f", +"c73e92\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 8838187939\n}, \n{\n \"ETH_accou", +"nt\" : \"0x329f4435e0f22899b733756c71aa12c", +"1004146b1\",\n \"name\" : \"artem77777\",\n ", +" \"publicKey\" : \"SPH8BXMRsBKAEDQkvLhZ2f", +"xeeEYwNzFNi9u7uUxtQA2ZTPwMAadXE\",\n \"b", +"alance\" : 265145638\n}, \n{\n \"ETH_accou", +"nt\" : \"0x81ccb6457120ead2f9e1bb91916ffb9", +"d892b9550\",\n \"name\" : \"xujian\",\n \"", +"publicKey\" : \"SPH8Z632pn8YkaR9DR77DZbTNR", +"BJUEsrdgHLVruwQuHyfbhzViKPu\",\n \"balan", +"ce\" : 44190939696\n}, \n{\n \"ETH_account", +"\" : \"0x5a18f3dd180ddef602695f264ed7f1903", +"0de5a88\",\n \"name\" : \"mysophiatokens\",", +"\n \"publicKey\" : \"SPH6MkZZVHP8T2sg6pJo", +"ZW2KAJyvd5LgjHd5YRWf25es1F4QC5mnn\",\n ", +"\"balance\" : 4912138899\n}, \n{\n \"ETH_ac", +"count\" : \"0xc071e6410a1db79b66068ed69666", +"8442702555f9\",\n \"name\" : \"0xc071e6410", +"a1db79b66\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1763218493\n}, \n{\n \"ETH_ac", +"count\" : \"0xfec499f4ffc2dd8cfae13de1976c", +"f558600f035a\",\n \"name\" : \"0xfec499f4f", +"fc2dd8cfa\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1400000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x81c86225293fc7b2a2688e7c812447d", +"8b84eb249\",\n \"name\" : \"0x81c86225293f", +"c7b2a2\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 8838187939\n}, \n{\n \"ETH_accou", +"nt\" : \"0x37855a7a0dabecbdabbfecebdd7f186", +"fafda025b\",\n \"name\" : \"0x37855a7a0dab", +"ecbdab\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 296630823\n}, \n{\n \"ETH_accoun", +"t\" : \"0xf3a9c5d5d5109f999f80ae5a9dd177df", +"a9bc3e25\",\n \"name\" : \"0xf3a9c5d5d5109", +"f999f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 170070814065\n}, \n{\n \"ETH_acco", +"unt\" : \"0xfadf2dfe5087306c5b5fe7272ee3d1", +"a5a1417287\",\n \"name\" : \"0xfadf2dfe508", +"7306c5b\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 363\n}, \n{\n \"ETH_account\" : ", +"\"0x1dcf47ea9bb82f232d3f39e9ed86c9327974a", +"9ca\",\n \"name\" : \"0x1dcf47ea9bb82f232d", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 574482216\n}, \n{\n \"ETH_account\" : \"", +"0x1f115ff300a71b9e6a74376a5b01a71ca946ad", +"d7\",\n \"name\" : \"0x1f115ff300a71b9e6a\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1100968652\n}, \n{\n \"ETH_account\" : \"", +"0x42866464dc64c2dd3bb16e09d700c759645e9f", +"f7\",\n \"name\" : \"0x42866464dc64c2dd3b\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 37\n}, \n{\n \"ETH_account\" : \"0x5dab73", +"c044ec6f29a55d9da0a64511840575986e\",\n ", +" \"name\" : \"0x5dab73c044ec6f29a5\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 220954", +"6984\n}, \n{\n \"ETH_account\" : \"0x024440", +"024666feb3ab591a421cf72a97ed77e050\",\n ", +" \"name\" : \"0x024440024666feb3ab\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 879393", +"\n}, \n{\n \"ETH_account\" : \"0x6d4790116e", +"afff2f11e7d6c47db708bfc26eb571\",\n \"na", +"me\" : \"0x6d4790116eafff2f11\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 203527517\n", +"}, \n{\n \"ETH_account\" : \"0x06a01f01e7c", +"3f4d7a2012cc2d29af10c52d4ffe9\",\n \"nam", +"e\" : \"0x06a01f01e7c3f4d7a2\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1679469870\n", +"}, \n{\n \"ETH_account\" : \"0x152c0652f37", +"3ecafd3eb73a153ac329b1f1c3fe7\",\n \"nam", +"e\" : \"0x152c0652f373ecafd3\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 349108423\n}", +", \n{\n \"ETH_account\" : \"0xbeb262064750", +"9b6142658d9085e4ff20d4dd75c0\",\n \"name", +"\" : \"0xbeb2620647509b6142\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 30122759427\n", +"}, \n{\n \"ETH_account\" : \"0xbcad5ab0f8a", +"da4434a0a419502b6d7044f40c496\",\n \"nam", +"e\" : \"0xbcad5ab0f8ada4434a\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1315944823\n", +"}, \n{\n \"ETH_account\" : \"0x1d0f613af72", +"38735e1b4697a40fd5abb3bfd0f8d\",\n \"nam", +"e\" : \"0x1d0f613af7238735e1\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 43\n}, \n{\n ", +" \"ETH_account\" : \"0xa2cf9b3e261b11a9083", +"1b754d2329fef00db63e7\",\n \"name\" : \"0x", +"a2cf9b3e261b11a908\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 4595857728\n}, \n{\n ", +" \"ETH_account\" : \"0x6e2d06b3dc255356a24", +"8e190e973ee3bf00d91a2\",\n \"name\" : \"0x", +"6e2d06b3dc255356a2\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 2319352751\n}, \n{\n ", +" \"ETH_account\" : \"0xfe5129477a3ce88fbbe", +"443ab0fb720c43205ddac\",\n \"name\" : \"0x", +"fe5129477a3ce88fbb\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1644931029\n}, \n{\n ", +" \"ETH_account\" : \"0x6f98763ff5f6ca0aff9", +"1acddf8b85032fe62f704\",\n \"name\" : \"ra", +"spo\",\n \"publicKey\" : \"SPH7YX9FmMgpdSP", +"ikV7GwX59iqACJX68Mw4mhnq1e28coNWC1Zzk2\",", +"\n \"balance\" : 4419093969\n}, \n{\n \"E", +"TH_account\" : \"0x6abade04ba0fd02ff82c5d9", +"be5795a028b797271\",\n \"name\" : \"0x6aba", +"de04ba0fd02ff8\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1186950977\n}, \n{\n \"E", +"TH_account\" : \"0x10b439d14ad4331caf92d17", +"56da7d46dea403240\",\n \"name\" : \"0x10b4", +"39d14ad4331caf\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 4802401761\n}, \n{\n \"E", +"TH_account\" : \"0xfdef95c7343db913e1b4e24", +"bac2d292746ad44f8\",\n \"name\" : \"288228", +"82\",\n \"publicKey\" : \"5KVqatfNAMeVHQKq", +"AoBNxV1mXkbEX6apYzWKyY1UejhDNGQCvuz\",\n ", +" \"balance\" : 4398420529\n}, \n{\n \"ETH_", +"account\" : \"0xce74252990f1e176042563a02f", +"4cdcb5c1e395d6\",\n \"name\" : \"0xce74252", +"990f1e17604\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 39\n}, \n{\n \"ETH_account\"", +" : \"0x4aeeb1c0181ff4252467612408a70e3e7c", +"6974ce\",\n \"name\" : \"cryptowenger\",\n ", +" \"publicKey\" : \"SPH5rvjAiJF3VsABYFXgJKU", +"oJwC62qGj1tXKB67SFaG8wdCN7BhbK\",\n \"ba", +"lance\" : 55238674621\n}, \n{\n \"ETH_acco", +"unt\" : \"0x9e24ee4b4239134e77ab3c4d1cd6df", +"f4efa345bd\",\n \"name\" : \"0x9e24ee4b423", +"9134e77\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 2209546984\n}, \n{\n \"ETH_acco", +"unt\" : \"0x09de857cb747c297205da1a8481eb7", +"fcc5413f66\",\n \"name\" : \"0x09de857cb74", +"7c29720\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1710030094\n}, \n{\n \"ETH_acco", +"unt\" : \"0x129f09a95e9751ac327a4fd7710787", +"6bf6835b7a\",\n \"name\" : \"0x129f09a95e9", +"751ac32\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 13257281909\n}, \n{\n \"ETH_acc", +"ount\" : \"0x36b6db0422ec971445c054e965b98", +"c004ac7ea15\",\n \"name\" : \"0x36b6db0422", +"ec971445\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1195139271\n}, \n{\n \"ETH_acc", +"ount\" : \"0x9a3c4de10190a0e903f9a6c7cc33a", +"7475081b7b1\",\n \"name\" : \"0x9a3c4de101", +"90a0e903\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1060582552\n}, \n{\n \"ETH_acc", +"ount\" : \"0x605c376002b4300de4d5be3345d3e", +"c35783ae315\",\n \"name\" : \"0x605c376002", +"b4300de4\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 8000003843\n}, \n{\n \"ETH_acc", +"ount\" : \"0x19a4334f017b7bff6154dd329c5b2", +"dcb3daf666b\",\n \"name\" : \"0x19a4334f01", +"7b7bff61\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 795436914\n}, \n{\n \"ETH_acco", +"unt\" : \"0x364d4c87c3077a54bf568bcf881efa", +"29481228c4\",\n \"name\" : \"0x364d4c87c30", +"77a54bf\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 14190939696\n}, \n{\n \"ETH_acc", +"ount\" : \"0xdf9a75f48c89955f8f6ecb41aaffd", +"0fc4a1e6eb2\",\n \"name\" : \"0xdf9a75f48c", +"89955f8f\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 9\n}, \n{\n \"ETH_account\" : \"", +"0x94475db5acac3019a11b91bca38aa4fd2161b2", +"d5\",\n \"name\" : \"0x94475db5acac3019a1\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 96660201999\n}, \n{\n \"ETH_account\" : ", +"\"0x081c74509f5690a94eabb1474c050f5279ae2", +"e33\",\n \"name\" : \"0x081c74509f5690a94e", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 19\n}, \n{\n \"ETH_account\" : \"0xb9384", +"1b8e5d902eca54c7821d872d310e1adaa0a\",\n ", +" \"name\" : \"0xb93841b8e5d902eca5\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 65797", +"2411\n}, \n{\n \"ETH_account\" : \"0x91a66d", +"32bc5927805519b072491061da1c604134\",\n ", +" \"name\" : \"0x91a66d32bc59278055\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 178121", +"3565\n}, \n{\n \"ETH_account\" : \"0x49e478", +"0933c5626bf33ca4d7839264ebfc4ef2b4\",\n ", +" \"name\" : \"0x49e4780933c5626bf3\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 160694", +"3050\n}, \n{\n \"ETH_account\" : \"0x357b48", +"395747aaf8f74b8c9cbfaa3364b91f03fd\",\n ", +" \"name\" : \"0x357b48395747aaf8f7\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 200000", +"0000\n}, \n{\n \"ETH_account\" : \"0x04dc24", +"a99df7b0582e9c6b5dd23f558ab949b4fc\",\n ", +" \"name\" : \"0x04dc24a99df7b0582e\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 740402", +"789\n}, \n{\n \"ETH_account\" : \"0xdd2dfd5", +"3ac6d66969cef784c7fb911d5c45da285\",\n ", +"\"name\" : \"0xdd2dfd53ac6d66969c\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5086788", +"127\n}, \n{\n \"ETH_account\" : \"0xc15dea2", +"6fedeee37ccef2f248442f5611775500b\",\n ", +"\"name\" : \"0xc15dea26fedeee37cc\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4002942", +"701\n}, \n{\n \"ETH_account\" : \"0x4aaf221", +"da70e796eb7d7835e8d1eb0598c45bb42\",\n ", +"\"name\" : \"0x4aaf221da70e796eb7\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1187577", +"278\n}, \n{\n \"ETH_account\" : \"0xee56aee", +"4bc70413d2c8f9d06b03302eef3047690\",\n ", +"\"name\" : \"0xee56aee4bc70413d2c\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1121997", +"96\n}, \n{\n \"ETH_account\" : \"0x254efae1", +"d14de3cf218d081c53d30eb768f6b330\",\n \"", +"name\" : \"sophiatxnew\",\n \"publicKey\" :", +" \"SPH7aKmxhbGZ6Ae4Nx7KvwhNz2PjgDys6NSSxG", +"phWsJ2jYXwr9CR4\",\n \"balance\" : 803471", +"52509\n}, \n{\n \"ETH_account\" : \"0xacc9b", +"372dc231de4f5711d3277e34fe97e1a92ed\",\n ", +" \"name\" : \"0xacc9b372dc231de4f5\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 40173", +"57625\n}, \n{\n \"ETH_account\" : \"0x43f27", +"b17325d11a4740583a6038eabefebb430c8\",\n ", +" \"name\" : \"0x43f27b17325d11a474\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 14060", +"75168\n}, \n{\n \"ETH_account\" : \"0xe8621", +"c864f58f5244944f78ed61c0d5b033574c8\",\n ", +" \"name\" : \"0xe8621c864f58f52449\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 79633", +"\n}, \n{\n \"ETH_account\" : \"0xc4c0ef8eb9", +"96e7dfad69ba77a4aba7b64e60b1fc\",\n \"na", +"me\" : \"droppedstar\",\n \"publicKey\" : \"", +"SPH6YArr2HKs42BRqUPqx3L4TVBNJcwHQTrYZSrT", +"Cag2Wm9Q12571\",\n \"balance\" : 40367378", +"85\n}, \n{\n \"ETH_account\" : \"0x98d77b16", +"54b632f55d68039372650d98df7e3baf\",\n \"", +"name\" : \"0x98d77b1654b632f55d\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 44046788", +"27\n}, \n{\n \"ETH_account\" : \"0x8d00785d", +"77495e33a4334829027c0d2c74ce4fbe\",\n \"", +"name\" : \"0x8d00785d77495e33a4\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10043394", +"06\n}, \n{\n \"ETH_account\" : \"0x68fb50e8", +"a1a2f65cac870bcdd2394c05c2715723\",\n \"", +"name\" : \"0x68fb50e8a1a2f65cac\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 27025852", +"13\n}, \n{\n \"ETH_account\" : \"0x1cf791fa", +"c023e3c2f867e91176afbf1053ebd56c\",\n \"", +"name\" : \"0x1cf791fac023e3c2f8\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 18072485", +"01\n}, \n{\n \"ETH_account\" : \"0xf8ad360e", +"a80cb75499cc0d59b8220d6ec1fc87cc\",\n \"", +"name\" : \"0xf8ad360ea80cb75499\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 40173576", +"25\n}, \n{\n \"ETH_account\" : \"0xc07885b8", +"aa1892c5ce7c1019bb69dcd6986627fa\",\n \"", +"name\" : \"0xc07885b8aa1892c5ce\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 80330279", +"60\n}, \n{\n \"ETH_account\" : \"0x187bf453", +"3c9fc19c9fb7439cbcfe6a5315021026\",\n \"", +"name\" : \"0x187bf4533c9fc19c9f\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 12593983", +"16\n}, \n{\n \"ETH_account\" : \"0xd5525df1", +"2e7b64fee6ff52b3a1d159bf33177ccc\",\n \"", +"name\" : \"0xd5525df12e7b64fee6\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 56310580", +"6806\n}, \n{\n \"ETH_account\" : \"0x56983f", +"4e60b41fe6fead0dd65c2084214fb50487\",\n ", +" \"name\" : \"0x56983f4e60b41fe6fe\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 407042", +"2741\n}, \n{\n \"ETH_account\" : \"0xce3946", +"315016e6e1d6786a6a8b15e90bfd8fd70b\",\n ", +" \"name\" : \"0xce3946315016e6e1d6\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 128555", +"4440\n}, \n{\n \"ETH_account\" : \"0x40d3e4", +"7b08f2f3aa1796f559d7f53f13bd49594c\",\n ", +" \"name\" : \"0x40d3e47b08f2f3aa17\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 227658", +"9000\n}, \n{\n \"ETH_account\" : \"0x88238a", +"5f5a46011dcfe22a31038801c00f153891\",\n ", +" \"name\" : \"0x88238a5f5a46011dcf\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 275808", +"2314\n}, \n{\n \"ETH_account\" : \"0x3b65ab", +"ee5b7308090232d6f0ae1b5a38aa59b4b2\",\n ", +" \"name\" : \"0x3b65abee5b73080902\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 120520", +"72876\n}, \n{\n \"ETH_account\" : \"0x11b07", +"596390d6943da972b99a24d2b758223967c\",\n ", +" \"name\" : \"0x11b07596390d6943da\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 97623", +"57625\n}, \n{\n \"ETH_account\" : \"0xdfaff", +"e587cae7a227d30d476ed23523efcd954ce\",\n ", +" \"name\" : \"0xdfaffe587cae7a227d\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 24104", +"14575\n}, \n{\n \"ETH_account\" : \"0x6537b", +"96c6b549c728ba21ae2db3177a104a64b22\",\n ", +" \"name\" : \"0x6537b96c6b549c728b\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 38968", +"3689\n}, \n{\n \"ETH_account\" : \"0x400754", +"e3c8ff982ab671631f82dde4cd0badbdfd\",\n ", +" \"name\" : \"0x400754e3c8ff982ab6\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 200867", +"8812\n}, \n{\n \"ETH_account\" : \"0x4efcf1", +"740291f44c5fffdc4b3e05b3e359e7265e\",\n ", +" \"name\" : \"0x4efcf1740291f44c5f\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 200867", +"8812\n}, \n{\n \"ETH_account\" : \"0x4fd765", +"70818641e54247c2587141033ca5507bc5\",\n ", +" \"name\" : \"0x4fd76570818641e542\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 204022", +"5273\n}, \n{\n \"ETH_account\" : \"0x6cf617", +"14f75249042fb5fc8048b79d700247c4fe\",\n ", +" \"name\" : \"serdardulger\",\n \"publicKey", +"\" : \"SPH7vVwDZg9sE9CxRFqWA6APseLzwvGp8sb", +"8xepSETaFFKSFFNU9V\",\n \"balance\" : 226", +"6916970\n}, \n{\n \"ETH_account\" : \"0x909", +"baa25fcb5dee8584752285322b71c9be86409\",\n", +" \"name\" : \"0x909baa25fcb5dee858\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 803", +"4715250\n}, \n{\n \"ETH_account\" : \"0x1f2", +"52bff5da6741447601140680b2a33ffca0f67\",\n", +" \"name\" : \"0x1f252bff5da6741447\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 365", +"9812796\n}, \n{\n \"ETH_account\" : \"0x354", +"62e405580e26f219e16115836f09e5adbb90e\",\n", +" \"name\" : \"0x35462e405580e26f21\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 548", +"428925\n}, \n{\n \"ETH_account\" : \"0xa9ce", +"ba48d60f441f61829d5daf84793acdd90c53\",\n ", +" \"name\" : \"0xa9ceba48d60f441f61\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2008", +"678812\n}, \n{\n \"ETH_account\" : \"0xc85c", +"ac15972733da051cdc6342aa55c092add7dc\",\n ", +" \"name\" : \"massomie\",\n \"publicKey\" ", +": \"SPH6L4rihb7kHhjWDCuFZtuNmNTAbKkZAfmAg", +"YLdDiZr23PePraau\",\n \"balance\" : 16069", +"43050\n}, \n{\n \"ETH_account\" : \"0x50eec", +"14fbe6db11a2d35409e04c0b80ce176814d\",\n ", +" \"name\" : \"0x50eec14fbe6db11a2d\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 70009", +"99382\n}, \n{\n \"ETH_account\" : \"0xf4e01", +"f703f71c7a27c7dde295ca5b760dedcbcc1\",\n ", +" \"name\" : \"0xf4e01f703f71c7a27c\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 40173", +"57625\n}, \n{\n \"ETH_account\" : \"0x57f07", +"75191bea044366c56d36e0a6531ac07ecef\",\n ", +" \"name\" : \"0x57f0775191bea04436\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 13117", +"81345\n}, \n{\n \"ETH_account\" : \"0x3b7b6", +"b0a1fa87bca740c7df110d73f40c6077d66\",\n ", +" \"name\" : \"0x3b7b6b0a1fa87bca74\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 15265", +"958976\n}, \n{\n \"ETH_account\" : \"0x2dbb", +"440af3b93119ba47ac3e7cf3256252b830ef\",\n ", +" \"name\" : \"fetrati\",\n \"publicKey\" :", +" \"SPH6UESPanptwFYbS8hBZL3h9t8XKhdtj8oUKW", +"rymtZAuzXcPZd1W\",\n \"balance\" : 156477", +"7191\n}, \n{\n \"ETH_account\" : \"0xfd83c9", +"1bc172af1e57766e10c1335fbe6763e501\",\n ", +" \"name\" : \"0xfd83c91bc172af1e57\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 401735", +"7625\n}, \n{\n \"ETH_account\" : \"0xd54b39", +"bdd5fc3d23c32a01789a343972565a3711\",\n ", +" \"name\" : \"sandra\",\n \"publicKey\" : \"S", +"PH67BMMyfuWbST5TY4mNcS75xnmmX5fDcAxY9UDt", +"B3tkd9rPPAsa\",\n \"balance\" : 536299530", +"4\n}, \n{\n \"ETH_account\" : \"0x2015957e5", +"85847d4b6adac3cbb1ddca9b89a7d9b\",\n \"n", +"ame\" : \"0x2015957e585847d4b6\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 208861860", +"\n}, \n{\n \"ETH_account\" : \"0x644c2c9871", +"171e50e2bf6abead487ef1f88bb30a\",\n \"na", +"me\" : \"javid\",\n \"publicKey\" : \"SPH5TD", +"oTpyTaiuJuqT9GtPaUn2g7F4MrEXSLCmE8TT1mT6", +"iRpwiuK\",\n \"balance\" : 1627029838\n}, ", +"\n{\n \"ETH_account\" : \"0x67b995355458d7", +"7498fc9622c2d654848cb59133\",\n \"name\" ", +": \"0x67b995355458d77498\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 867881\n}, \n{\n ", +" \"ETH_account\" : \"0x5ba27425b0c1028469", +"4d352b979f916908c7e18f\",\n \"name\" : \"0", +"x5ba27425b0c1028469\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 6715994269\n}, \n{\n ", +" \"ETH_account\" : \"0xe509d0afe3cc21c617", +"7fb3a0773e2101279de6c5\",\n \"name\" : \"0", +"xe509d0afe3cc21c617\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1004339406\n}, \n{\n ", +" \"ETH_account\" : \"0x3a719965b9109a9edf", +"c920264ad588a34d6d9965\",\n \"name\" : \"0", +"x3a719965b9109a9edf\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 2556322925\n}, \n{\n ", +" \"ETH_account\" : \"0xfd56418c7a2b1dfeda", +"f8d7b10673dd57161cad47\",\n \"name\" : \"0", +"xfd56418c7a2b1dfeda\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 29\n}, \n{\n \"ETH_", +"account\" : \"0x46c9eaad8df2b45eb0dce7b472", +"10bf6c514f756d\",\n \"name\" : \"thucungcu", +"atoi\",\n \"publicKey\" : \"SPH6LWBi9dEW1e", +"96RreCPsUgadGqHDtTfTzJW4Zrwkhu3EC1YeSrm\"", +",\n \"balance\" : 1807810931\n}, \n{\n \"", +"ETH_account\" : \"0x827dd875ed12287d74ffc1", +"cbbedfe585b8a1798d\",\n \"name\" : \"0x827", +"dd875ed12287d74\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 840186156\n}, \n{\n \"E", +"TH_account\" : \"0x2bacd2f6334348a1d944110", +"6ece9c7f397c7383d\",\n \"name\" : \"0x2bac", +"d2f6334348a1d9\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 50\n}, \n{\n \"ETH_accou", +"nt\" : \"0x69aa1f76a72b0475d0cdd625634fbec", +"86f986ee8\",\n \"name\" : \"0x69aa1f76a72b", +"0475d0\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 40173576254\n}, \n{\n \"ETH_acco", +"unt\" : \"0x0027d60244f1452c1ed39dabfe4cad", +"886b8b4aac\",\n \"name\" : \"0x0027d60244f", +"1452c1e\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1995415\n}, \n{\n \"ETH_account", +"\" : \"0x207a34260cf4afbe6df2b51d5e61ce7d6", +"db45641\",\n \"name\" : \"0x207a34260cf4af", +"be6d\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 999999812\n}, \n{\n \"ETH_account\"", +" : \"0x1b553ff2c7fd2b0158ddf4caa441b7f2db", +"dd46d3\",\n \"name\" : \"0x1b553ff2c7fd2b0", +"158\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 25\n}, \n{\n \"ETH_account\" : \"0x91", +"a61e2acf6b153fd8a5483040ba3397578f3283\",", +"\n \"name\" : \"ehsanmasoomi\",\n \"publi", +"cKey\" : \"SPH7bRWQFPkuvMSu1ttJ78WHrM1KFqk", +"QDQ5DUbwZGLP9C2Gzzq9Ld\",\n \"balance\" :", +" 5712682543\n}, \n{\n \"ETH_account\" : \"0", +"x33389eaf2c1f9f5099dc27f304e23f2a232e1a3", +"b\",\n \"name\" : \"0x33389eaf2c1f9f5099\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1888158083\n}, \n{\n \"ETH_account\" : \"0", +"x3821edb6207a657b0ab460562b5cc69b5a786ed", +"0\",\n \"name\" : \"0x3821edb6207a657b0a\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 3323304547\n}, \n{\n \"ETH_account\" : \"0", +"xd9b33d7ee43eb56b10a8b1a68dc54ecc5705054", +"3\",\n \"name\" : \"nessgorsphtx\",\n \"pu", +"blicKey\" : \"SPH7g7DmcXkoHmG2iQaCgk32G4FH", +"yab5BAMqWhRxakjmhZXZ5SktZ\",\n \"balance", +"\" : 13000930000\n}, \n{\n \"ETH_account\" ", +": \"0xd1c2abac8dbdd1f87476acda91842312990", +"d8f97\",\n \"name\" : \"0xd1c2abac8dbdd1f8", +"74\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 72299\n}, \n{\n \"ETH_account\" : \"0x", +"915e3e236b1dcd759759437bbb2876e811565942", +"\",\n \"name\" : \"0x915e3e236b1dcd7597\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"832111267\n}, \n{\n \"ETH_account\" : \"0x1", +"0f32ad771a8d0cf148f2970690137eae017462b\"", +",\n \"name\" : \"kenchung\",\n \"publicKe", +"y\" : \"SPH8KtYjoZcVXKwSq7Se9TLkXA3PH6yDxa", +"ngnTvHnMmBvVANttnju\",\n \"balance\" : 40", +"17357625\n}, \n{\n \"ETH_account\" : \"0x7a", +"d4e1c9c32093db22f83f83e1ec88284650364f\",", +"\n \"name\" : \"0x7ad4e1c9c32093db22\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 35", +"9562186\n}, \n{\n \"ETH_account\" : \"0x386", +"57d2eebe4e6c3c63dc9f6394feb5df77138d7\",\n", +" \"name\" : \"u3500690\",\n \"publicKey\"", +" : \"SPH7o4i7ZzfNVth6TtZ1EvPyAzosaME7nkhU", +"fx4nM18Ev1ooVBEkZ\",\n \"balance\" : 4017", +"1804600\n}, \n{\n \"ETH_account\" : \"0x4c4", +"1c6f7dd50a4233dced6f834aa40c5a92e527c\",\n", +" \"name\" : \"0x4c41c6f7dd50a4233d\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 401", +"7357625\n}, \n{\n \"ETH_account\" : \"0x4a0", +"1c9e4decc09831cf81fd82f17b29f2b35012d\",\n", +" \"name\" : \"0x4a01c9e4decc09831c\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 723", +"1243725\n}, \n{\n \"ETH_account\" : \"0x5e1", +"cc15f9346614e44e73996b22faab45a7f1d89\",\n", +" \"name\" : \"0x5e1cc15f9346614e44\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 27\n", +"}, \n{\n \"ETH_account\" : \"0x5fbda2a0ea5", +"80e46210730a925ca2cb2ea4c6136\",\n \"nam", +"e\" : \"0x5fbda2a0ea580e4621\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 36156218\n},", +" \n{\n \"ETH_account\" : \"0xf8f813ff7983d", +"bb83d5e457d107c78cf868fb9ca\",\n \"name\"", +" : \"0xf8f813ff7983dbb83d\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1017357625\n},", +" \n{\n \"ETH_account\" : \"0xab5d7f9ec4d86", +"a5840563e0b041874cb035fcbe8\",\n \"name\"", +" : \"0xab5d7f9ec4d86a5840\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1198795584\n},", +" \n{\n \"ETH_account\" : \"0x546dde5940349", +"7691fa105852054728325c5d9d7\",\n \"name\"", +" : \"manosophiatx\",\n \"publicKey\" : \"SP", +"H5L9tLv4RyVGLVUZYLmRxwEetxmZJKxAvgE9CsNp", +"eLA3xoKHnp4\",\n \"balance\" : 1161864016", +"\n}, \n{\n \"ETH_account\" : \"0xce7625779e", +"d6fbb67e162e6abb341a58c29c9b4a\",\n \"na", +"me\" : \"kzyz\",\n \"publicKey\" : \"SPH7p7v", +"k87YSN7xysCE2ViSNUJTydRSYNbtaDTqx1pq5bhk", +"YdXZWR\",\n \"balance\" : 20083329182\n}, ", +"\n{\n \"ETH_account\" : \"0xce1c1e0cb722e3", +"927e611683bb755f3be06f0072\",\n \"name\" ", +": \"0xce1c1e0cb722e3927e\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 2330067422\n}, ", +"\n{\n \"ETH_account\" : \"0x1059fffeec64a6", +"610b46117b5337535e0f07e63e\",\n \"name\" ", +": \"0x1059fffeec64a6610b\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 803471525\n}, \n", +"{\n \"ETH_account\" : \"0x52005ccbf21b32f", +"2bb14ca3faea4a6e42402bc30\",\n \"name\" :", +" \"0x52005ccbf21b32f2bb\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 482247\n}, \n{\n ", +" \"ETH_account\" : \"0xbc2f4ebe5e6647bf61c", +"27bbbfd988a25316a335d\",\n \"name\" : \"kr", +"isterrumi\",\n \"publicKey\" : \"SPH6GH2Wh", +"6gWTJnGP4UR7CcaFR9vbqF7xa5qqdDAVPj8HDzEs", +"Ne2E\",\n \"balance\" : 4017357625\n}, \n{\n", +" \"ETH_account\" : \"0x109d4ac55464fe809", +"2c790611c425b86a76c91ff\",\n \"name\" : \"", +"0x109d4ac55464fe8092\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 250897482\n}, \n{\n ", +" \"ETH_account\" : \"0x323438d3998b81f3be", +"ffa2ebc6a7f676eab7cdb5\",\n \"name\" : \"l", +"lpg\",\n \"publicKey\" : \"SPH56oqfrg4XRdB", +"xC9y6DPjWMkXhLcyWbdt4PUcLjAg37tKfmnaCk\",", +"\n \"balance\" : 13455815260\n}, \n{\n \"", +"ETH_account\" : \"0x78aa2849d0c9cafabd13fc", +"4e3a0d0def13b8dc6b\",\n \"name\" : \"0x78a", +"a2849d0c9cafabd\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 401735762\n}, \n{\n \"E", +"TH_account\" : \"0xdacd25555513c10994727df", +"a340ac20712412f92\",\n \"name\" : \"0xdacd", +"25555513c10994\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 4017020167\n}, \n{\n \"E", +"TH_account\" : \"0x5ef52addae0120144daf733", +"ca640042a0b76d368\",\n \"name\" : \"0x5ef5", +"2addae0120144d\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 88\n}, \n{\n \"ETH_accou", +"nt\" : \"0xddee5153cfbe97377ea9ada7565b094", +"486d9913b\",\n \"name\" : \"0xddee5153cfbe", +"97377e\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 20086788127\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa9cf5288f5c1f113bb1a0b234b3463", +"c17c77bcbd\",\n \"name\" : \"0xa9cf5288f5c", +"1f113bb\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 7231763330\n}, \n{\n \"ETH_acco", +"unt\" : \"0xfd8d47c1eb534d25914e46c812890b", +"6f1d78f3e7\",\n \"name\" : \"0xfd8d47c1eb5", +"34d2591\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 15250\n}, \n{\n \"ETH_account\" ", +": \"0xf44d42f0fef5322e69962f11be27bbec8dd", +"5f61a\",\n \"name\" : \"winahyos\",\n \"pu", +"blicKey\" : \"SPH6mq8hq7rpXX4CKM2wUVJiso1y", +"zEE5J7rcDEW99YZPWaWoxStwR\",\n \"balance", +"\" : 112357220\n}, \n{\n \"ETH_account\" : ", +"\"0xd34c34d3d36e24ee6d96ab061385a373c1e67", +"be1\",\n \"name\" : \"0xd34c34d3d36e24ee6d", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 75200435\n}, \n{\n \"ETH_account\" : \"0", +"xb262526e5b62e6dc6b982c51047681bd1b5969c", +"7\",\n \"name\" : \"wenfufeng\",\n \"publi", +"cKey\" : \"SPH6trxZ1ManHqLm4Skmoake9CPCM3E", +"n1Qs5u2w3s7CYj8B9RoHwt\",\n \"balance\" :", +" 31345496941\n}, \n{\n \"ETH_account\" : \"", +"0x929dbeced5ecbdcf55a1bae440cc873d12f1c0", +"e9\",\n \"name\" : \"0x929dbeced5ecbdcf55\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 16\n}, \n{\n \"ETH_account\" : \"0x4cfffc", +"22881bad8e9f4be94f575417a29a38f1ac\",\n ", +" \"name\" : \"0x4cfffc22881bad8e9f\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 637355", +"\n}, \n{\n \"ETH_account\" : \"0x3630a288dc", +"3bdde084191df831d7d7d03e106579\",\n \"na", +"me\" : \"myantonsophiatx\",\n \"publicKey\"", +" : \"SPH6AxytkbiHjkEYkdRmChw3tsQGWNw5xnNo", +"GDJt8QHfGLWtAtg5q\",\n \"balance\" : 1129", +"783768\n}, \n{\n \"ETH_account\" : \"0xc5e7", +"2f32f729db3059195dd9d642cd726eddf050\",\n ", +" \"name\" : \"0xc5e72f32f729db3059\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 9641", +"65830\n}, \n{\n \"ETH_account\" : \"0x95553", +"ead0d95385019ad532ddf3d1a88cc45d3c3\",\n ", +" \"name\" : \"0x95553ead0d95385019\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 18479", +"8450\n}, \n{\n \"ETH_account\" : \"0x8b8d90", +"6faa6a8a303f3b4badf2459af94d695eb8\",\n ", +" \"name\" : \"0x8b8d906faa6a8a303f\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 401735", +"7625\n}, \n{\n \"ETH_account\" : \"0x8aed64", +"6717d779d7e6a22c8b233b72ce893f7d8b\",\n ", +" \"name\" : \"0x8aed646717d779d7e6\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 803218", +"4315\n}, \n{\n \"ETH_account\" : \"0x573bc3", +"a0a4fa3d5ce890ac65a991f717a1180c5f\",\n ", +" \"name\" : \"0x573bc3a0a4fa3d5ce8\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 301735", +"7625\n}, \n{\n \"ETH_account\" : \"0xc7d7ee", +"a2fc7ad4455c0c3c7c3624086c43f56ae8\",\n ", +" \"name\" : \"0xc7d7eea2fc7ad4455c\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 455902", +"190\n}, \n{\n \"ETH_account\" : \"0xf1256a8", +"32b5e26857bcaca05d6f5ea563ff4e6fa\",\n ", +"\"name\" : \"0xf1256a832b5e26857b\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 8016998", +"70\n}, \n{\n \"ETH_account\" : \"0x5381c450", +"1e2588fc4986035b277f458ee0f11384\",\n \"", +"name\" : \"0x5381c4501e2588fc49\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 49414119", +"5\n}, \n{\n \"ETH_account\" : \"0x0f4ee46bc", +"16c19d366e53a5f3b7625e657563cae\",\n \"n", +"ame\" : \"dillon\",\n \"publicKey\" : \"SPH8", +"N6kZUfzB2nQnT2wJAkKoPafTqWtt9c5TciF5QJuA", +"5rLrhh7iD\",\n \"balance\" : 197408936\n},", +" \n{\n \"ETH_account\" : \"0x58d5ebb5a7667", +"feb53e676efcb60e2a1acd1a669\",\n \"name\"", +" : \"0x58d5ebb5a7667feb53\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 72\n}, \n{\n ", +"\"ETH_account\" : \"0x247a810717aa2eb8c91e9", +"3135dd511fdc1a3b28b\",\n \"name\" : \"0x24", +"7a810717aa2eb8c9\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 339537023\n}, \n{\n \"", +"ETH_account\" : \"0xb7ac3070addf2b0c99dd78", +"661fc9ad89b50d4cdc\",\n \"name\" : \"0xb7a", +"c3070addf2b0c99\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1473599704\n}, \n{\n \"", +"ETH_account\" : \"0x1e6f9bcce4a58f82027ce5", +"9575d02835fe313b96\",\n \"name\" : \"0x1e6", +"f9bcce4a58f8202\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 515417\n}, \n{\n \"ETH_", +"account\" : \"0x40d44b8e53d6e461a56aaf7b9d", +"366b1e6fb88bae\",\n \"name\" : \"0x40d44b8", +"e53d6e461a5\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1642476578\n}, \n{\n \"ETH_", +"account\" : \"0xc81b2245f25110bbf606233922", +"0b826d68c11d5a\",\n \"name\" : \"0xc81b224", +"5f25110bbf6\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 222780675\n}, \n{\n \"ETH_a", +"ccount\" : \"0x3d09d00304fc20288ea53fcf0f9", +"11136537d24db\",\n \"name\" : \"garylee\",\n", +" \"publicKey\" : \"SPH5c1EZh5LVP7rRY8tfp", +"sTgPwBwmVCYbAzFfKCpjGjq3JjeZuZEY\",\n \"", +"balance\" : 126111074175\n}, \n{\n \"ETH_a", +"ccount\" : \"0xbbee9cbc5d518db71cf081c8cf5", +"3f1d0756a5465\",\n \"name\" : \"sophiatxnm", +"s\",\n \"publicKey\" : \"SPH8i5b75Kzuhukya", +"Apud7uW8qTHNArhRDNrTss743pMYVdNt1XEd\",\n ", +" \"balance\" : 274224309455\n}, \n{\n \"E", +"TH_account\" : \"0x87b1f9d53fdb8694bd94a41", +"104e81a00058d8a18\",\n \"name\" : \"0x87b1", +"f9d53fdb8694bd\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 87651422\n}, \n{\n \"ETH", +"_account\" : \"0x350a85ea9f5c3ea3615dd52c6", +"843362db45727e3\",\n \"name\" : \"0x350a85", +"ea9f5c3ea361\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2008678812\n}, \n{\n \"ETH", +"_account\" : \"0xda18a7d2ed13a004ef11588c1", +"44bb3fe63804535\",\n \"name\" : \"0xda18a7", +"d2ed13a004ef\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 47\n}, \n{\n \"ETH_account", +"\" : \"0x0c723d0735176ec4965597e3effb65d62", +"e388478\",\n \"name\" : \"karimpour\",\n ", +"\"publicKey\" : \"SPH8NeeKsxYsydWtfBaZEVnx2", +"tphQThSk7w5CA6jxPExADoKgNLxz\",\n \"bala", +"nce\" : 4017357625\n}, \n{\n \"ETH_account", +"\" : \"0x5bd26c411125f92e1ef8b172144aefe6c", +"84d79d4\",\n \"name\" : \"0x5bd26c411125f9", +"2e1e\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1012403202\n}, \n{\n \"ETH_account", +"\" : \"0x8fb0c5879187a1ed2c6145f29f9dc14dd", +"47303f0\",\n \"name\" : \"0x8fb0c5879187a1", +"ed2c\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 2506522799\n}, \n{\n \"ETH_account", +"\" : \"0x6bc5876e59cc642863609e9c3b64dbfad", +"46efb57\",\n \"name\" : \"0x6bc5876e59cc64", +"2863\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 6245162794\n}, \n{\n \"ETH_account", +"\" : \"0xce7b17b57300cdc8b4c4b25fd0fc16d28", +"5df6ebc\",\n \"name\" : \"pourya71\",\n \"", +"publicKey\" : \"SPH7HyZUdj1mLHKeERgqaNbw4X", +"igkz4mwnV7FbnUh7CTBXJB96tDA\",\n \"balan", +"ce\" : 520246469\n}, \n{\n \"ETH_account\" ", +": \"0x7bcf8246e5c233e83b5b348dec0ae765dc5", +"908f0\",\n \"name\" : \"ppc1301\",\n \"pub", +"licKey\" : \"SPH875XMaVF7ZBgc3PdhEXADVA9bQ", +"Dca6uuzAR2vaGFNJQGNCPZhb\",\n \"balance\"", +" : 1862592412\n}, \n{\n \"ETH_account\" : ", +"\"0xf309601c5e8eb9bb663ecb2b50b5184712609", +"ac9\",\n \"name\" : \"0xf309601c5e8eb9bb66", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1702869000\n}, \n{\n \"ETH_account\" : ", +"\"0x12d8d0b6760401c5390d86cdcedde2ef0823a", +"475\",\n \"name\" : \"0x12d8d0b6760401c539", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 2556499389\n}, \n{\n \"ETH_account\" : ", +"\"0xfa2d3f4368c878caf8ad217aa4455b0fe3734", +"63e\",\n \"name\" : \"0xfa2d3f4368c878caf8", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 365214198\n}, \n{\n \"ETH_account\" : \"", +"0x45454c2fc50a1e2753b0357e6645df700285ad", +"58\",\n \"name\" : \"0x45454c2fc50a1e2753\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 165656531\n}, \n{\n \"ETH_account\" : \"0", +"x632404aa642910a2f096550e83b520b118125cd", +"1\",\n \"name\" : \"0x632404aa642910a2f0\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 611079354\n}, \n{\n \"ETH_account\" : \"0x", +"e21a2f8b80d4a24ac732311324e50e4b0ac9faf6", +"\",\n \"name\" : \"0xe21a2f8b80d4a24ac7\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"24\n}, \n{\n \"ETH_account\" : \"0x324f1ece", +"068828347e001dc79688a6dd08093e4a\",\n \"", +"name\" : \"0x324f1ece068828347e\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10956425", +"95\n}, \n{\n \"ETH_account\" : \"0x3143c836", +"36530025d64d669ec4fdcd1cfd28b28b\",\n \"", +"name\" : \"0x3143c83636530025d6\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 70935978", +"4\n}, \n{\n \"ETH_account\" : \"0x68e2d56d6", +"20a65c09603a75806df37202501d54a\",\n \"n", +"ame\" : \"0x68e2d56d620a65c096\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 100015348", +"5\n}, \n{\n \"ETH_account\" : \"0xa513022e3", +"963daed3fb83561ecfcf3dd591f83f8\",\n \"n", +"ame\" : \"0xa513022e3963daed3f\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 175302815", +"27\n}, \n{\n \"ETH_account\" : \"0x9f4c5f48", +"d960a6637b99ac231cfbd5121d956704\",\n \"", +"name\" : \"0x9f4c5f48d960a6637b\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 43058754", +"0\n}, \n{\n \"ETH_account\" : \"0x860bedb7a", +"af3d9624f187ce7fd24a355db8f8638\",\n \"n", +"ame\" : \"0x860bedb7aaf3d9624f\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 657869670", +"6\n}, \n{\n \"ETH_account\" : \"0x8cd536277", +"78b24322041faeb2ece9f24f2bf3e15\",\n \"n", +"ame\" : \"0x8cd53627778b243220\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 620312663", +"\n}, \n{\n \"ETH_account\" : \"0x022911823f", +"964a5d49fd234635afb015fe9d9c3f\",\n \"na", +"me\" : \"0x022911823f964a5d49\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 50074452\n}", +", \n{\n \"ETH_account\" : \"0xaaf811854213", +"142d3bdb95176742166f9be99c44\",\n \"name", +"\" : \"0xaaf811854213142d3b\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 9755\n}, \n{\n ", +" \"ETH_account\" : \"0x7cac0310673822c834", +"4271d491db1310b177f3fd\",\n \"name\" : \"0", +"x7cac0310673822c834\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 691034656\n}, \n{\n ", +" \"ETH_account\" : \"0x4af257455b70e759de7", +"3f504e17ace8b24958a21\",\n \"name\" : \"0x", +"4af257455b70e759de\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 70992\n}, \n{\n \"ET", +"H_account\" : \"0xd71688e2a2fdd18c18ae969a", +"b87fc595dc583863\",\n \"name\" : \"0xd7168", +"8e2a2fdd18c18\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 300930477\n}, \n{\n \"ETH", +"_account\" : \"0x9cb089e1884de6fe12db7e455", +"1cf356eef4bea6b\",\n \"name\" : \"0x9cb089", +"e1884de6fe12\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 179539299\n}, \n{\n \"ETH_", +"account\" : \"0x79aabe30c1c84c78b1c6df4000", +"8c93c4a3178666\",\n \"name\" : \"marcusvas", +"soler\",\n \"publicKey\" : \"SPH685Bhnr34J", +"vKh7MPCreocnT5wMz2ztyDZxGvG8vcf3NaaZDVDM", +"\",\n \"balance\" : 7093649867\n}, \n{\n ", +"\"ETH_account\" : \"0x7a2564b32ff55824a2abc", +"17f31ddc0383689eda0\",\n \"name\" : \"0x7a", +"2564b32ff55824a2\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 18260709924\n}, \n{\n ", +" \"ETH_account\" : \"0xdf4f6a14cdb4f0f9201f", +"b11ada95d72aa6e92608\",\n \"name\" : \"0xd", +"f4f6a14cdb4f0f920\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1826070992\n}, \n{\n ", +" \"ETH_account\" : \"0x44eff33ae7020e90b8e6", +"824753c12dc76dfe3f9c\",\n \"name\" : \"0x4", +"4eff33ae7020e90b8\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 372186486\n}, \n{\n ", +"\"ETH_account\" : \"0x8d0cc78fbe728bd85df37", +"3e8ad28daa979e009ca\",\n \"name\" : \"0x8d", +"0cc78fbe728bd85d\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 2885192168\n}, \n{\n ", +"\"ETH_account\" : \"0x86fb451ebe709a3cb0c10", +"a2e14f77009e51e24db\",\n \"name\" : \"0x86", +"fb451ebe709a3cb0\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 6059977\n}, \n{\n \"ET", +"H_account\" : \"0x10d90f7da166c9a5a77421ba", +"02dfe6d1af4388fd\",\n \"name\" : \"0x10d90", +"f7da166c9a5a7\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 56614226\n}, \n{\n \"ETH_", +"account\" : \"0xad2bdcbf2e572a5a6b45d7942c", +"846b6419892ea3\",\n \"name\" : \"0xad2bdcb", +"f2e572a5a6b\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1384197393\n}, \n{\n \"ETH_", +"account\" : \"0x41f82a696e5a58eed682473e55", +"91c31653aac1c6\",\n \"name\" : \"0x41f82a6", +"96e5a58eed6\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 495380005\n}, \n{\n \"ETH_a", +"ccount\" : \"0x28270f6010913b8c978b377aa94", +"59e67704b59f4\",\n \"name\" : \"0x28270f60", +"10913b8c97\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 155946462\n}, \n{\n \"ETH_ac", +"count\" : \"0x392c86d8d08730044a2eafad41f1", +"a512f83b1f25\",\n \"name\" : \"0x392c86d8d", +"08730044a\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 155946462\n}, \n{\n \"ETH_acc", +"ount\" : \"0x4c9d9f9c59cb427414bf71d0e9e54", +"a26250391eb\",\n \"name\" : \"0x4c9d9f9c59", +"cb427414\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2921713587\n}, \n{\n \"ETH_acc", +"ount\" : \"0x16ca350d0082222bbe3704260c762", +"1ba65840ff2\",\n \"name\" : \"0x16ca350d00", +"82222bbe\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 182607099\n}, \n{\n \"ETH_acco", +"unt\" : \"0xb4ceabd6d7836752b03d6782e9b8fc", +"bc726f3d4a\",\n \"name\" : \"0xb4ceabd6d78", +"36752b0\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 102734754\n}, \n{\n \"ETH_accou", +"nt\" : \"0x5dd203a6e4bc4ca2de0cf632982c922", +"b398839a4\",\n \"name\" : \"0x5dd203a6e4bc", +"4ca2de\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 444342534\n}, \n{\n \"ETH_accoun", +"t\" : \"0x37fadc021e3b802e0bf1cea00d9ef398", +"6c00cb3f\",\n \"name\" : \"0x37fadc021e3b8", +"02e0b\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 50600997\n}, \n{\n \"ETH_account\"", +" : \"0xd3723938455aebbc0cbde03fc9d2ddc8d6", +"6f32b0\",\n \"name\" : \"0xd3723938455aebb", +"c0c\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 5450130576\n}, \n{\n \"ETH_account\"", +" : \"0x75b0b366564bbbb8e3557c2eec98d1dbfd", +"8b55b0\",\n \"name\" : \"0x75b0b366564bbbb", +"8e3\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 39\n}, \n{\n \"ETH_account\" : \"0x21", +"e4e13dc6a0acd80f4a353d908b38e813762dd9\",", +"\n \"name\" : \"0x21e4e13dc6a0acd80f\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 36", +"5214198\n}, \n{\n \"ETH_account\" : \"0x5a1", +"c24acfd993887ccb80c77bb745ebac4c130e9\",\n", +" \"name\" : \"0x5a1c24acfd993887cc\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 438", +"2570381\n}, \n{\n \"ETH_account\" : \"0x958", +"faf3216fb1b5bb32da2735c03d51497458122\",\n", +" \"name\" : \"0x958faf3216fb1b5bb3\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 255", +"9244960\n}, \n{\n \"ETH_account\" : \"0xf3d", +"e217e1273d2aa02b2ed118df055a3d82d249e\",\n", +" \"name\" : \"0xf3de217e1273d2aa02\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 321", +"379782\n}, \n{\n \"ETH_account\" : \"0x326f", +"26930deceaa749bde8dc758a426b87c58b95\",\n ", +" \"name\" : \"0x326f26930deceaa749\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 6146", +"992782\n}, \n{\n \"ETH_account\" : \"0x500e", +"e9968020d68468e42bd54b71bb909b6258d2\",\n ", +" \"name\" : \"0x500ee9968020d68468\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 7304", +"283969\n}, \n{\n \"ETH_account\" : \"0xdf9f", +"ae86457c9c16105d10361799783a97be8852\",\n ", +" \"name\" : \"tobechi\",\n \"publicKey\" :", +" \"SPH793VGTK1jeNMzH6g9WRiuWGAVHUzesKM7yU", +"wn4aaWsy7PEiDWZ\",\n \"balance\" : 175009", +"2348\n}, \n{\n \"ETH_account\" : \"0xc20e46", +"f7b682cfbb59bab468adb88cafdd1a9abe\",\n ", +" \"name\" : \"0xc20e46f7b682cfbb59\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 730428", +"3969\n}, \n{\n \"ETH_account\" : \"0x49180a", +"d60f358f1c793870e361b68802c83f86ff\",\n ", +" \"name\" : \"0x49180ad60f358f1c79\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 709359", +"784\n}, \n{\n \"ETH_account\" : \"0x16cd457", +"45e5d715ff80e0fdd844a9987db57910b\",\n ", +"\"name\" : \"0x16cd45745e5d715ff8\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1460856", +"793\n}, \n{\n \"ETH_account\" : \"0x2e9896c", +"4ba908bfe5b1f97d75ad30fc56d0b8c33\",\n ", +"\"name\" : \"0x2e9896c4ba908bfe5b\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5921108", +"23\n}, \n{\n \"ETH_account\" : \"0xdf75a702", +"4dae19b3a23d59baad58542d3848ac4b\",\n \"", +"name\" : \"0xdf75a7024dae19b3a2\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 27717051", +"32\n}, \n{\n \"ETH_account\" : \"0x0026a454", +"2223d3ffac4fbd70a5d9757726b5b2b8\",\n \"", +"name\" : \"0x0026a4542223d3ffac\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 12317356", +"68\n}, \n{\n \"ETH_account\" : \"0xd977a87b", +"88cdcc6cd432b7e930e31fd074e05a6a\",\n \"", +"name\" : \"0xd977a87b88cdcc6cd4\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 43095275", +"4\n}, \n{\n \"ETH_account\" : \"0x724c104ca", +"e8c00f35b30fd577baf6d263da06bd8\",\n \"n", +"ame\" : \"0x724c104cae8c00f35b\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 6793\n}, \n", +"{\n \"ETH_account\" : \"0x137232586ce9941", +"04e5c74ad449885e7e8ec32f0\",\n \"name\" :", +" \"0x137232586ce994104e\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 10004690372\n}, ", +"\n{\n \"ETH_account\" : \"0xb95b6a95c82f87", +"2334ae43c41ee3917f0908c291\",\n \"name\" ", +": \"0xb95b6a95c82f872334\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 96\n}, \n{\n \"", +"ETH_account\" : \"0x87c48d39126d606ccda4ed", +"39bbe59d8c48cba2db\",\n \"name\" : \"0x87c", +"48d39126d606ccd\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1660064899\n}, \n{\n \"", +"ETH_account\" : \"0x4e237c67815e9b44ddaf33", +"f86bf5cb7f32c453b6\",\n \"name\" : \"0x4e2", +"37c67815e9b44dd\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 498019469\n}, \n{\n \"E", +"TH_account\" : \"0x8c8ce7abc24cf957bb7e91b", +"166de32bcfbcb6d89\",\n \"name\" : \"0x8c8c", +"e7abc24cf957bb\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1677957079\n}, \n{\n \"E", +"TH_account\" : \"0x8f8e116667f710e33f6bc50", +"ec69e98679f89e960\",\n \"name\" : \"0x8f8e", +"116667f710e33f\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 228414984\n}, \n{\n \"ET", +"H_account\" : \"0x684f6185238c57068f5ecfa7", +"56ba6b02a84ec0a9\",\n \"name\" : \"0x684f6", +"185238c57068f\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 84369\n}, \n{\n \"ETH_acc", +"ount\" : \"0xa9629caf7e7b3821b7edf6c3e1d2c", +"a896d6bff04\",\n \"name\" : \"kieran\",\n ", +" \"publicKey\" : \"SPH6A5vb3mc4v6gSVSEr61cU", +"Uek6JFFYiSyMo2Bd1amZfEHwwst4u\",\n \"bal", +"ance\" : 539620792\n}, \n{\n \"ETH_account", +"\" : \"0xbf320f572a10254cc40d1f8522886a19e", +"3605326\",\n \"name\" : \"0xbf320f572a1025", +"4cc4\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 3320129799\n}, \n{\n \"ETH_account", +"\" : \"0xb131564129edd1ee77a82b7ed8b344e1d", +"45f6f3f\",\n \"name\" : \"0xb131564129edd1", +"ee77\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 531220767\n}, \n{\n \"ETH_account\"", +" : \"0x366793b71fdf50d6214bf6f21059522777", +"752093\",\n \"name\" : \"0x366793b71fdf50d", +"621\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 2024999759\n}, \n{\n \"ETH_account\"", +" : \"0x7db7b0706dc3aeda691db85ecf0993699e", +"6034b5\",\n \"name\" : \"0x7db7b0706dc3aed", +"a69\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 3320129799\n}, \n{\n \"ETH_account\"", +" : \"0x5f4a99fb03f01f61f40c964039427d37ea", +"318f2f\",\n \"name\" : \"0x5f4a99fb03f01f6", +"1f4\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 5340663304\n}, \n{\n \"ETH_account\"", +" : \"0xa69d9bd21c88869a8bc46f2e0d0893d0f1", +"393505\",\n \"name\" : \"0xa69d9bd21c88869", +"a8b\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 143823673\n}, \n{\n \"ETH_account\" ", +": \"0x30f9a84f78d4d791fee4ef805e4440de832", +"8b30d\",\n \"name\" : \"0x30f9a84f78d4d791", +"fe\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 642607802\n}, \n{\n \"ETH_account\" :", +" \"0xc2809eb85fac3cab3c6dec274f6844298091", +"520f\",\n \"name\" : \"0xc2809eb85fac3cab3", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 244282578\n}, \n{\n \"ETH_account\" : ", +"\"0xac397b37f5437d8b92fcd02416bd4e5f2faa6", +"120\",\n \"name\" : \"mlab\",\n \"publicKe", +"y\" : \"SPH5vE1c6MQosA4SUTyYPSP8UZwqSZTCd6", +"P6prp5zxp3gvYHwa8bG\",\n \"balance\" : 15", +"270443469\n}, \n{\n \"ETH_account\" : \"0x4", +"db690a81f4a1e4ba0e576ac2cbab76dfc917aa7\"", +",\n \"name\" : \"0x4db690a81f4a1e4ba0\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"605000000\n}, \n{\n \"ETH_account\" : \"0x9", +"01c017d5af99174529c995a4dfcb9a790ff7ff7\"", +",\n \"name\" : \"0x901c017d5af9917452\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 8", +"87234360\n}, \n{\n \"ETH_account\" : \"0x79", +"7e316b322a4590bed7f0aaf0d61b6542812b58\",", +"\n \"name\" : \"0x797e316b322a4590be\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 40", +"7880983\n}, \n{\n \"ETH_account\" : \"0x303", +"2c8826871b59c7ed7e3c9d7888fbdd4fdaa47\",\n", +" \"name\" : \"fredswap\",\n \"publicKey\"", +" : \"SPH86i9JamWaWtjcnXv9oPt9CMBHX5uEdsRV", +"BXXNGXhoopuUzQgFa\",\n \"balance\" : 1297", +"8934581\n}, \n{\n \"ETH_account\" : \"0xdb4", +"153c2bdac713b04b3fe95349307435baa3396\",\n", +" \"name\" : \"0xdb4153c2bdac713b04\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 500", +"000000\n}, \n{\n \"ETH_account\" : \"0xc61d", +"95ea44d907700f8ee01b3a6a9ed8a1a14bd4\",\n ", +" \"name\" : \"0xc61d95ea44d907700f\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3662", +"0\n}, \n{\n \"ETH_account\" : \"0x03ab5125f", +"d7b73548426aad157c0955d150246d0\",\n \"n", +"ame\" : \"0x03ab5125fd7b735484\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 332012979", +"9\n}, \n{\n \"ETH_account\" : \"0x2eeb5a382", +"65d802bee17f0f8ec57d5a26216ec90\",\n \"n", +"ame\" : \"0x2eeb5a38265d802bee\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 644105181", +"\n}, \n{\n \"ETH_account\" : \"0xb812f4af48", +"70756e8c82fd3108644e0d5a87e9a8\",\n \"na", +"me\" : \"0xb812f4af4870756e8c\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 551639566\n", +"}, \n{\n \"ETH_account\" : \"0x5cf8dae9365", +"111f003228c3c65dd5c7bf1bd8a7d\",\n \"nam", +"e\" : \"marcinkreft11\",\n \"publicKey\" : ", +"\"SPH8ZBmHd2qD5AMMEjpbDPpo2LMNxgLjLgpG5QB", +"2vnZeS8tLSqdSV\",\n \"balance\" : 5162801", +"8382\n}, \n{\n \"ETH_account\" : \"0xfc2fa8", +"6a6c2b333bfe9e376fa632492e098b9836\",\n ", +" \"name\" : \"0xfc2fa86a6c2b333bfe\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 642777", +"12\n}, \n{\n \"ETH_account\" : \"0xbe5ab2e5", +"9810dc2563c68848e54978ccd49bd309\",\n \"", +"name\" : \"0xbe5ab2e59810dc2563\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 55349113", +"6\n}, \n{\n \"ETH_account\" : \"0x46348295d", +"ae30a96bb5c31f3c9bc0213ffdf2a1b\",\n \"n", +"ame\" : \"0x46348295dae30a96bb\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 470235275", +"7\n}, \n{\n \"ETH_account\" : \"0xaed0001be", +"7c153ca734a16117f8f9dce4fb7c344\",\n \"n", +"ame\" : \"cochiece\",\n \"publicKey\" : \"SP", +"H6oqTTvtnf5RonWC2Qd2gRQhnniErhT46ZGZJSd6", +"D1Nuz7SnMek\",\n \"balance\" : 1140333573", +"\n}, \n{\n \"ETH_account\" : \"0x87b2090adf", +"fb102aaf52944de545894189954327\",\n \"na", +"me\" : \"0x87b2090adffb102aaf\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 996038939\n", +"}, \n{\n \"ETH_account\" : \"0x1ba6db6dbb9", +"4629a39db5cdb9b82e25bab5e81b6\",\n \"nam", +"e\" : \"0x1ba6db6dbb94629a39\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 228006489\n}", +", \n{\n \"ETH_account\" : \"0x2cbdc160ea5c", +"1ce0721de1fb00d238f998c87ab6\",\n \"name", +"\" : \"0x2cbdc160ea5c1ce072\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 25959\n}, \n{\n", +" \"ETH_account\" : \"0xd692a39ad70184f2c", +"e63044d3902d0195fb6e002\",\n \"name\" : \"", +"0xd692a39ad70184f2ce\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 665458161\n}, \n{\n ", +" \"ETH_account\" : \"0x08cd3b3bf00032602e", +"1bbc5d077c351566cc0d1c\",\n \"name\" : \"0", +"x08cd3b3bf00032602e\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 704030685\n}, \n{\n ", +" \"ETH_account\" : \"0x5b7ee2c5c46eec1eb0f", +"f4a7abb4e6ea4f371caee\",\n \"name\" : \"0x", +"5b7ee2c5c46eec1eb0\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 6640259598\n}, \n{\n ", +" \"ETH_account\" : \"0x90baf1f015f730b3368", +"e02422ab1e300a6e73d80\",\n \"name\" : \"0x", +"90baf1f015f730b336\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 9960389398\n}, \n{\n ", +" \"ETH_account\" : \"0x60f52798a12eb2b41c3", +"7e0f9bf3922d0823d0728\",\n \"name\" : \"0x", +"60f52798a12eb2b41c\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1651731373\n}, \n{\n ", +" \"ETH_account\" : \"0x7e31c95dcc74e32337d", +"786905d2b779db70c711f\",\n \"name\" : \"0x", +"7e31c95dcc74e32337\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 3338510520\n}, \n{\n ", +" \"ETH_account\" : \"0xd5abf07705461645b09", +"74b89b03103990e5e72e4\",\n \"name\" : \"0x", +"d5abf07705461645b0\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 2198814223\n}, \n{\n ", +" \"ETH_account\" : \"0xa986183c417e58b744a", +"7aa2282261919e73a3b64\",\n \"name\" : \"0x", +"a986183c417e58b744\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 265808031\n}, \n{\n ", +" \"ETH_account\" : \"0xdc176ee1573d8385654d", +"89ad7d9ddda0365b47f8\",\n \"name\" : \"0xd", +"c176ee1573d838565\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1328051919\n}, \n{\n ", +" \"ETH_account\" : \"0x40cafc3daa5eb3342e4e", +"8450ba4863b7afd053d9\",\n \"name\" : \"0x4", +"0cafc3daa5eb3342e\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 44277344\n}, \n{\n \"", +"ETH_account\" : \"0x9522f0dc76dc01d6921cb8", +"f1e69c2b8ef63d6ae2\",\n \"name\" : \"0x952", +"2f0dc76dc01d692\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 265610383\n}, \n{\n \"E", +"TH_account\" : \"0xec0d7d3fa552193f09f4714", +"f7e637d04a59ac51a\",\n \"name\" : \"0xec0d", +"7d3fa552193f09\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1005999329\n}, \n{\n \"E", +"TH_account\" : \"0x93bddf4abf119059039c10c", +"6bbdb0f3f8fe4e815\",\n \"name\" : \"0x93bd", +"df4abf11905903\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 4790636399\n}, \n{\n \"E", +"TH_account\" : \"0x30385cca00fbfbe151196a2", +"547da4d442f2e12ea\",\n \"name\" : \"0x3038", +"5cca00fbfbe151\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 996038939\n}, \n{\n \"ET", +"H_account\" : \"0x83f12b36471d19d4bc4ca8e8", +"2293a6c3fdbfc34e\",\n \"name\" : \"0x83f12", +"b36471d19d4bc\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 3239585\n}, \n{\n \"ETH_a", +"ccount\" : \"0x03097a46ffb4d9f5291e1975a76", +"f7bb9926b2a1f\",\n \"name\" : \"0x03097a46", +"ffb4d9f529\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 9960389398\n}, \n{\n \"ETH_a", +"ccount\" : \"0x084dc49dc3f78d70affe6ec5b16", +"a9e1bb7a78067\",\n \"name\" : \"0x084dc49d", +"c3f78d70af\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 99\n}, \n{\n \"ETH_account\" ", +": \"0x2f35237dc15d4cbb679ca004d21a558b6a5", +"7f6c1\",\n \"name\" : \"0x2f35237dc15d4cbb", +"67\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 13596462749\n}, \n{\n \"ETH_account\"", +" : \"0x05ea96be25dd15bf599f7ef2ca2dbcce9d", +"d39707\",\n \"name\" : \"0x05ea96be25dd15b", +"f59\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 3318665622\n}, \n{\n \"ETH_account\"", +" : \"0x6b081b11fb1e8139853f8f06ac4fe3bfe4", +"ee7950\",\n \"name\" : \"0x6b081b11fb1e813", +"985\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 103839\n}, \n{\n \"ETH_account\" : \"", +"0x45870841d6c51c13b1d5fe77376fc9f01e0736", +"84\",\n \"name\" : \"0x45870841d6c51c13b1\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 39841557\n}, \n{\n \"ETH_account\" : \"0x", +"f5bebb7cde9ca7f72bf2fa5bd0a1414a204bfafb", +"\",\n \"name\" : \"0xf5bebb7cde9ca7f72b\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"3320129799\n}, \n{\n \"ETH_account\" : \"0x", +"77a01d50749c67aea1283633c3d487e0fa8f2c95", +"\",\n \"name\" : \"0x77a01d50749c67aea1\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"3320129799\n}, \n{\n \"ETH_account\" : \"0x", +"644fd6fc0952c2d969e713d687765898e60dfc61", +"\",\n \"name\" : \"0x644fd6fc0952c2d969\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"5000000000\n}, \n{\n \"ETH_account\" : \"0x", +"9a9a27fac1a02caa939ea63a6513d926aff2fa7c", +"\",\n \"name\" : \"0x9a9a27fac1a02caa93\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"648997\n}, \n{\n \"ETH_account\" : \"0x4a00", +"f3aaf333d57550a9a422ac7912e5d904a0d7\",\n ", +" \"name\" : \"0x4a00f3aaf333d57550\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 9944", +"35317\n}, \n{\n \"ETH_account\" : \"0x6c250", +"c8dc6920522d9d17f10f629f9265fa34295\",\n ", +" \"name\" : \"freiburggingin\",\n \"public", +"Key\" : \"SPH71GaTMZLP3KDkRDyEyueguFGURgWw", +"UnDVuuVNKzDAXgRZDs8vn\",\n \"balance\" : ", +"3652142779\n}, \n{\n \"ETH_account\" : \"0x", +"b9f50045cf31db49dedae524d81100b4bdd07b37", +"\",\n \"name\" : \"0xb9f50045cf31db49de\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"13280519197\n}, \n{\n \"ETH_account\" : \"0", +"xfc88584d56f0f1d81b929e626c71dda0507f8e2", +"b\",\n \"name\" : \"alfredospata\",\n \"pu", +"blicKey\" : \"SPH65xwoxs8CyBT4oSyTUPaC98Fm", +"45LHXm4AVybYTXUA6mMZMS1Hp\",\n \"balance", +"\" : 458333396\n}, \n{\n \"ETH_account\" : ", +"\"0x5133b8b4d35b30c90004516d3be53ff02fe4f", +"821\",\n \"name\" : \"0x5133b8b4d35b30c900", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 237971897\n}, \n{\n \"ETH_account\" : \"", +"0x464f4fea381094aacaea439575ae18189cfaa6", +"8c\",\n \"name\" : \"0x464f4fea381094aaca\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2625075699\n}, \n{\n \"ETH_account\" : \"", +"0x935e20f129d3a014c0d3af8ca807a5a7bc99f6", +"df\",\n \"name\" : \"0x935e20f129d3a014c0\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2986652642\n}, \n{\n \"ETH_account\" : \"", +"0x090ebce18d30d4c52c50517bb1f4b4cd167e95", +"73\",\n \"name\" : \"0x090ebce18d30d4c52c\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 166006489\n}, \n{\n \"ETH_account\" : \"0", +"x9ddfe61813ecdf6bf53a12f3075fde08a05a4a6", +"5\",\n \"name\" : \"0x9ddfe61813ecdf6bf5\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1400000000\n}, \n{\n \"ETH_account\" : \"0", +"x854e8bb82e0b491f49bbe1b01059d0cef6d9be7", +"f\",\n \"name\" : \"0x854e8bb82e0b491f49\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1660064899\n}, \n{\n \"ETH_account\" : \"0", +"x9177ce62785d981561846411c917f5ba50e947d", +"a\",\n \"name\" : \"0x9177ce62785d981561\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 4018541326\n}, \n{\n \"ETH_account\" : \"0", +"x977e1a5d94cd7dd6dc17dae0b9cc2a9fc9e1715", +"8\",\n \"name\" : \"0x977e1a5d94cd7dd6dc\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 3479164016\n}, \n{\n \"ETH_account\" : \"0", +"xb9704f77315560d312940aa32e39de1a08c9d8f", +"6\",\n \"name\" : \"0xb9704f77315560d312\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 578034598\n}, \n{\n \"ETH_account\" : \"0x", +"b1f71c3ad449752c28f8d81070207eff3fe024b0", +"\",\n \"name\" : \"0xb1f71c3ad449752c28\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"297776797\n}, \n{\n \"ETH_account\" : \"0x2", +"ef1268d8c324c9d95bf7f942af796a8c0574882\"", +",\n \"name\" : \"0x2ef1268d8c324c9d95\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 6", +"45961133\n}, \n{\n \"ETH_account\" : \"0xb4", +"ffb523fbeec0761a6ba907fc7cc40a6d83cee7\",", +"\n \"name\" : \"0xb4ffb523fbeec0761a\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 26", +"5610383\n}, \n{\n \"ETH_account\" : \"0x324", +"a21787ddf7e9b92dfa07c2c76e5ef9b9c0486\",\n", +" \"name\" : \"0x324a21787ddf7e9b92\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 136", +"125321779\n}, \n{\n \"ETH_account\" : \"0x1", +"b47c8f3edf7c54aa4bc2af062224e361d927e07\"", +",\n \"name\" : \"0x1b47c8f3edf7c54aa4\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"201246057\n}, \n{\n \"ETH_account\" : \"0xa", +"c554259350b7e6a4b08e5e0d6f90f86a4c163dd\"", +",\n \"name\" : \"0xac554259350b7e6a4b\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"65214277\n}, \n{\n \"ETH_account\" : \"0xde", +"eb963f7ba5687c703680a8bc55e036deba3d9f\",", +"\n \"name\" : \"0xdeeb963f7ba5687c70\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 18", +"0681463\n}, \n{\n \"ETH_account\" : \"0x694", +"ab34f40611469706d2ff1ac4b430f431e5b05\",\n", +" \"name\" : \"0x694ab34f4061146970\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 285", +"165948\n}, \n{\n \"ETH_account\" : \"0x7845", +"a5e518c7d7fcf49eff1ea576698e677c1a24\",\n ", +" \"name\" : \"0x7845a5e518c7d7fcf4\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 9960", +"389398\n}, \n{\n \"ETH_account\" : \"0x9e4a", +"44d2ed58e40ec5f57942d026ec3cfeb4f1eb\",\n ", +" \"name\" : \"0x9e4a44d2ed58e40ec5\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1\n},", +" \n{\n \"ETH_account\" : \"0x38c14342b2148", +"7cebfeb4cea8ad6365574f9719f\",\n \"name\"", +" : \"0x38c14342b21487cebf\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 335698324\n}, ", +"\n{\n \"ETH_account\" : \"0x455349fd75fe8d", +"fb91d6ab2939aa6ce757ba526b\",\n \"name\" ", +": \"0x455349fd75fe8dfb91\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 504659729\n}, \n", +"{\n \"ETH_account\" : \"0x0e05f225c558b19", +"b2eeeb6e9b3e204409ae503c8\",\n \"name\" :", +" \"0x0e05f225c558b19b2e\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 3320129799\n}, \n", +"{\n \"ETH_account\" : \"0x190f185ffa8fb45", +"5dad81dd541cb49da422d996d\",\n \"name\" :", +" \"0x190f185ffa8fb455da\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 63\n}, \n{\n \"E", +"TH_account\" : \"0x5d4b80d592bd5bca22a9589", +"0c8482268eac21c25\",\n \"name\" : \"0x5d4b", +"80d592bd5bca22\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1351314708\n}, \n{\n \"E", +"TH_account\" : \"0xc26bff640cfc1f8bc87c413", +"426a4e78e3474c929\",\n \"name\" : \"0xc26b", +"ff640cfc1f8bc8\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 548469737\n}, \n{\n \"ET", +"H_account\" : \"0xad98dc3365be0708c8a10cfe", +"46bdba7fe22eab52\",\n \"name\" : \"mysphtx", +"wlt\",\n \"publicKey\" : \"SPH7SkTMTVrS5i2", +"fwggMXLhauNFnMkJzL23zZLRxTyZQgtGiQRTKH\",", +"\n \"balance\" : 1377193479\n}, \n{\n \"E", +"TH_account\" : \"0xe377b7d984a023effb197d0", +"8562c9381e59c32f1\",\n \"name\" : \"0xe377", +"b7d984a023effb\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 3023545994\n}, \n{\n \"E", +"TH_account\" : \"0x2d01568d468b9f99ea39bba", +"476a3be1ff4ef6543\",\n \"name\" : \"0x2d01", +"568d468b9f99ea\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 3000630908\n}, \n{\n \"E", +"TH_account\" : \"0x8fd551fd8335f581490bab4", +"1f45a2e58bbe8464e\",\n \"name\" : \"0x8fd5", +"51fd8335f58149\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 670047347\n}, \n{\n \"ET", +"H_account\" : \"0xe37652f26988a587d4966ef1", +"f83c77236bfe3319\",\n \"name\" : \"0xe3765", +"2f26988a587d4\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 99999979\n}, \n{\n \"ETH_", +"account\" : \"0xc787ce2bfae07ad014d63306aa", +"38b8353ea09f85\",\n \"name\" : \"0xc787ce2", +"bfae07ad014\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 419009\n}, \n{\n \"ETH_acco", +"unt\" : \"0xc63f6d12674bc241f55ac49672eb8a", +"1e37097c45\",\n \"name\" : \"0xc63f6d12674", +"bc241f5\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1492752697\n}, \n{\n \"ETH_acco", +"unt\" : \"0x03c047d4eaf7768e9db3f3faf4fcab", +"ca1fa77795\",\n \"name\" : \"0x03c047d4eaf", +"7768e9d\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 498019469\n}, \n{\n \"ETH_accou", +"nt\" : \"0x7de0564766e116dcb3a527782ae4bb6", +"824ec3132\",\n \"name\" : \"0x7de0564766e1", +"16dcb3\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 30001297994\n}, \n{\n \"ETH_acco", +"unt\" : \"0xbe66cc6c0467fbc67bcce2ae02fb11", +"d150423828\",\n \"name\" : \"0xbe66cc6c046", +"7fbc67b\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 498019469\n}, \n{\n \"ETH_accou", +"nt\" : \"0xfbdbdbcd65bf497e874a1a6351c5c21", +"7776c1046\",\n \"name\" : \"0xfbdbdbcd65bf", +"497e87\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 6092752697\n}, \n{\n \"ETH_accou", +"nt\" : \"0xfcea74d50d29c376826dfa11ce5771c", +"49fa7f54f\",\n \"name\" : \"0xfcea74d50d29", +"c37682\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 664025959\n}, \n{\n \"ETH_accoun", +"t\" : \"0x5db9630da2b6caa34d5af1e90b720d26", +"3cd5bdf1\",\n \"name\" : \"0x5db9630da2b6c", +"aa34d\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 5288269487\n}, \n{\n \"ETH_accoun", +"t\" : \"0x767f4fe69e051c88ae9f8e40dd55adc5", +"4d7e63ad\",\n \"name\" : \"0x767f4fe69e051", +"c88ae\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 30079670672\n}, \n{\n \"ETH_accou", +"nt\" : \"0xc99f0e56acce1bbee66e6cad641f08d", +"07cbeb282\",\n \"name\" : \"0xc99f0e56acce", +"1bbee6\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 796831151\n}, \n{\n \"ETH_accoun", +"t\" : \"0x241457a01e891b7a5708ff2a2f803d46", +"a633e0a0\",\n \"name\" : \"0x241457a01e891", +"b7a57\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 236693215\n}, \n{\n \"ETH_account", +"\" : \"0x5b9ed8566bf6f9d5301ac5f9c240219c6", +"fbe475d\",\n \"name\" : \"0x5b9ed8566bf6f9", +"d530\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 263\n}, \n{\n \"ETH_account\" : \"0x", +"dd46b3ed8748ccc5cc9f23dc490f3a7feffdf1d5", +"\",\n \"name\" : \"sphtxedlom\",\n \"publi", +"cKey\" : \"SPH6UkBNXk9MWPde8oiuaWL6SjmcG65", +"sKbLpvGGzHo9JXzwF9cSug\",\n \"balance\" :", +" 3533511186\n}, \n{\n \"ETH_account\" : \"0", +"xfdd03042371c064146bd4eea7790c2fb4e564ed", +"5\",\n \"name\" : \"0xfdd03042371c064146\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 99\n}, \n{\n \"ETH_account\" : \"0x9696000", +"16abf67b4f4c6b9075cf2948a348f74f4\",\n ", +"\"name\" : \"0x969600016abf67b4f4\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 582\n}, ", +"\n{\n \"ETH_account\" : \"0x47d2270b03c38c", +"4130a3e6e11cfe6756731cdfe2\",\n \"name\" ", +": \"0x47d2270b03c38c4130\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1626863601\n}, ", +"\n{\n \"ETH_account\" : \"0x192336e9bd74ef", +"2e584e8dfdd6189fe0506c29d7\",\n \"name\" ", +": \"0x192336e9bd74ef2e58\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 664084369\n}, \n", +"{\n \"ETH_account\" : \"0xbd49c00ce5ab442", +"c7a3d154131191ae918353c61\",\n \"name\" :", +" \"0xbd49c00ce5ab442c7a\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 241263872\n}, \n{", +"\n \"ETH_account\" : \"0x1b60f0993008f064", +"63ccaea2440fd00a98875a35\",\n \"name\" : ", +"\"0x1b60f0993008f06463\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 4637912868\n}, \n{", +"\n \"ETH_account\" : \"0x7fc1d33d7e0a711e", +"ed679f55e9defea3d57b0a58\",\n \"name\" : ", +"\"0x7fc1d33d7e0a711eed\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 66438776413\n}, \n", +"{\n \"ETH_account\" : \"0xcb9bc49dfaa8821", +"46e43cfc6e44abbb0ffc71f6c\",\n \"name\" :", +" \"0xcb9bc49dfaa882146e\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 98\n}, \n{\n \"E", +"TH_account\" : \"0x01445f576a798f58aeb2992", +"f5d78f4d319a8f1d4\",\n \"name\" : \"gordon", +"swap\",\n \"publicKey\" : \"SPH6zGdN1VB4tu", +"wJ6bmxVTqXFXTgKQHoJ3TYtBrH4AatGgLfgo3t9\"", +",\n \"balance\" : 10981583401\n}, \n{\n ", +"\"ETH_account\" : \"0x344a5f7f9e3105754b305", +"6868c932c55eab3a642\",\n \"name\" : \"0x34", +"4a5f7f9e3105754b\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 964544\n}, \n{\n \"ETH", +"_account\" : \"0xdd5a5de29765ff37ba3b0a3ed", +"3106741e244f07a\",\n \"name\" : \"0xdd5a5d", +"e29765ff37ba\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 19197\n}, \n{\n \"ETH_acco", +"unt\" : \"0xcb9939297bb29d0acf8af3d2e045d4", +"de10f48d5a\",\n \"name\" : \"0xcb9939297bb", +"29d0acf\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 2218000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x78c5b8b44adc0e50e03860d88c74e3", +"b92622e51c\",\n \"name\" : \"themayurchava", +"n\",\n \"publicKey\" : \"SPH5V2gjVr6aKaYab", +"FuALamvCJrbVfkzKqy4gkTG3NV98oAankvCG\",\n ", +" \"balance\" : 231805191\n}, \n{\n \"ETH_", +"account\" : \"0x96afb29cae2925a74297ec619d", +"1681c9e51bf195\",\n \"name\" : \"0x96afb29", +"cae2925a742\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 249009734\n}, \n{\n \"ETH_a", +"ccount\" : \"0xd31bf290ca2e6e75ed22a90aa01", +"8e677e68eb52f\",\n \"name\" : \"0xd31bf290", +"ca2e6e75ed\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 603893\n}, \n{\n \"ETH_accou", +"nt\" : \"0xabb3eed090a40395bded18f655ddc24", +"7b3707ac7\",\n \"name\" : \"0xabb3eed090a4", +"0395bd\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 4635039682\n}, \n{\n \"ETH_accou", +"nt\" : \"0xe0d6e881f308f6de799854259260b76", +"df6d84cdb\",\n \"name\" : \"0xe0d6e881f308", +"f6de79\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 2490097349\n}, \n{\n \"ETH_accou", +"nt\" : \"0x9044a8f287faf4530eaf8ec07661df8", +"b068e6469\",\n \"name\" : \"0x9044a8f287fa", +"f4530e\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 166006489\n}, \n{\n \"ETH_accoun", +"t\" : \"0x70afca297d2d48705fa3029d1861fdfd", +"a7eccfc6\",\n \"name\" : \"0x70afca297d2d4", +"8705f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 80371228\n}, \n{\n \"ETH_account\"", +" : \"0x3709c12cfbfc910421441cb945ea740985", +"48cb81\",\n \"name\" : \"0x3709c12cfbfc910", +"421\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 564422065\n}, \n{\n \"ETH_account\" ", +": \"0x8cf3827d2d8eee0b474211a299ca51765d8", +"adc02\",\n \"name\" : \"0x8cf3827d2d8eee0b", +"47\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 1058885676\n}, \n{\n \"ETH_account\" ", +": \"0xb6dea7002bd6dbac9a8bdc2f8e337b67d5d", +"f6dd1\",\n \"name\" : \"0xb6dea7002bd6dbac", +"9a\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 46643360\n}, \n{\n \"ETH_account\" : ", +"\"0x5718732c2691a13456e0aefc4f5b5698c876c", +"d78\",\n \"name\" : \"0x5718732c2691a13456", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 661237050\n}, \n{\n \"ETH_account\" : \"", +"0x63d0345a991229c6e8f52d81fa81a4b1ddcec6", +"a5\",\n \"name\" : \"0x63d0345a991229c6e8\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1169061962\n}, \n{\n \"ETH_account\" : \"", +"0x19e300e8bf9fb66a0450036bbdcf367a8a2fd1", +"6b\",\n \"name\" : \"0x19e300e8bf9fb66a04\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 8199256427\n}, \n{\n \"ETH_account\" : \"", +"0xfbaf292cac6f2e58de69fdaa0393c8b9195535", +"e8\",\n \"name\" : \"0xfbaf292cac6f2e58de\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 129799\n}, \n{\n \"ETH_account\" : \"0x47", +"6a02d39fbdd66ae703d33f47de3840e940a9d8\",", +"\n \"name\" : \"0x476a02d39fbdd66ae7\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 79", +"9\n}, \n{\n \"ETH_account\" : \"0xf50bdd5e7", +"e9b3496ea5403bc4000a37e9dae8dc2\",\n \"n", +"ame\" : \"0xf50bdd5e7e9b3496ea\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 332012979", +"9\n}, \n{\n \"ETH_account\" : \"0x79b05bbeb", +"6c73a03a02c61c762da8fb6c437bb10\",\n \"n", +"ame\" : \"0x79b05bbeb6c73a03a0\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 584515282", +"3\n}, \n{\n \"ETH_account\" : \"0x5e5cf0ac6", +"7f833c8215542347b6b201a5171cbcc\",\n \"n", +"ame\" : \"0x5e5cf0ac67f833c821\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 376834732", +"2\n}, \n{\n \"ETH_account\" : \"0x4a39913f3", +"eb7e3c1a85691728c7bd9a2cae29750\",\n \"n", +"ame\" : \"leo\",\n \"publicKey\" : \"SPH7W67", +"fvG1q59R2vtF9oH2XM4Kstaw8fT34iEBfATz8QAy", +"QJFKvq\",\n \"balance\" : 5245805083\n}, \n", +"{\n \"ETH_account\" : \"0x3efb9e2ac2f1b15", +"33c7c4330230dc38beb03b2b3\",\n \"name\" :", +" \"0x3efb9e2ac2f1b1533c\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 36521427794\n}, ", +"\n{\n \"ETH_account\" : \"0x750fc69ffa6802", +"1a4fb94493aebb569641c439cc\",\n \"name\" ", +": \"0x750fc69ffa68021a4f\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1998174399\n}, ", +"\n{\n \"ETH_account\" : \"0x2ddb82717da372", +"87a64913c121a726946ded7e46\",\n \"name\" ", +": \"0x2ddb82717da37287a6\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 76362985\n}, \n{", +"\n \"ETH_account\" : \"0x419643b2ac87f06f", +"a00c78bddef4ea8cbb4d5d1c\",\n \"name\" : ", +"\"jalex\",\n \"publicKey\" : \"SPH6GT8gza9q", +"9hMEpnMjJvfuoeJ3dAxpFjF466MvHs4MfwnZWpys", +"d\",\n \"balance\" : 7712345186\n}, \n{\n ", +" \"ETH_account\" : \"0x49fb4692f1a0b315e830", +"91d1f07c09978637757f\",\n \"name\" : \"0x4", +"9fb4692f1a0b315e8\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 292643212\n}, \n{\n ", +"\"ETH_account\" : \"0x94d4a093ce8cbe788c6c6", +"1ec1beece02c1b0cd56\",\n \"name\" : \"dont", +"eee\",\n \"publicKey\" : \"SPH7DsShngy33TN", +"6HkkvsCGRQV7vVQoACQ6UDwYzdFdLmVGZ8muHg\",", +"\n \"balance\" : 10230129799\n}, \n{\n \"", +"ETH_account\" : \"0x574b4e64d23ab7ec3b223a", +"47f84bd972a062b545\",\n \"name\" : \"0x574", +"b4e64d23ab7ec3b\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 45782631\n}, \n{\n \"ET", +"H_account\" : \"0x729a76162903abb7ebde443f", +"745cfe04a19b20cf\",\n \"name\" : \"0x729a7", +"6162903abb7eb\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 3418106829\n}, \n{\n \"ET", +"H_account\" : \"0x34850771ccba747b16867808", +"e2801af252c7ff3f\",\n \"name\" : \"0x34850", +"771ccba747b16\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 196418878\n}, \n{\n \"ETH", +"_account\" : \"0x78f30784af7edcc494972b547", +"1eda979d46754aa\",\n \"name\" : \"sophiais", +"leofman\",\n \"publicKey\" : \"SPH7nKVisuD", +"8HyRYGsd4A3rUFq6GQ8Q9wG2d1VuJpM6AN7vhyoL", +"5z\",\n \"balance\" : 1005744769\n}, \n{\n ", +" \"ETH_account\" : \"0x57e974eabd223817095", +"d1432cf5c9bf5125ad4aa\",\n \"name\" : \"0x", +"57e974eabd22381709\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1156851777\n}, \n{\n ", +" \"ETH_account\" : \"0xa0d9f41c0646fed104d", +"617f89867c09c78e75485\",\n \"name\" : \"0x", +"a0d9f41c0646fed104\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 306\n}, \n{\n \"ETH_", +"account\" : \"0xba3672d5a9d19874d178ae0dfc", +"d6f9c3a3ea1205\",\n \"name\" : \"muhammadd", +"anish\",\n \"publicKey\" : \"SPH88MQQGZBjr", +"UbadtQrKfGGMn7iGgo3UNc7W9iDhiBEzMKMZptJt", +"\",\n \"balance\" : 68435030546\n}, \n{\n ", +" \"ETH_account\" : \"0xbaf0dd0eba521606c8f6", +"5c22b7de201b81000854\",\n \"name\" : \"0xb", +"af0dd0eba521606c8\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 382\n}, \n{\n \"ETH_a", +"ccount\" : \"0xab3eeec42b2fbbcc23ccba5439a", +"2dd6e965b6ef6\",\n \"name\" : \"0xab3eeec4", +"2b2fbbcc23\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3320000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x42b52cda226b1d8ac36128aa17a", +"0b1b4a81a5ee9\",\n \"name\" : \"0x42b52cda", +"226b1d8ac3\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 75000000000\n}, \n{\n \"ETH_", +"account\" : \"0xdb5863c6b0e3b17b437b568d5f", +"1aa2b53e10d78f\",\n \"name\" : \"0xdb5863c", +"6b0e3b17b43\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 70000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xb43c0ca43c9b526dd548d166c3fa594", +"2d5ae91bd\",\n \"name\" : \"0xb43c0ca43c9b", +"526dd5\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 265972\n}, \n{\n \"ETH_account\" ", +": \"0x29d21f38c8994ff170dee24b651c112ccee", +"bb336\",\n \"name\" : \"0x29d21f38c8994ff1", +"70\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 799813\n}, \n{\n \"ETH_account\" : \"0", +"xb85fb49ef9a4ee697c51764f99bd70501c52e33", +"d\",\n \"name\" : \"0xb85fb49ef9a4ee697c\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1115000000\n}, \n{\n \"ETH_account\" : \"0", +"xfce7bba19238fe7ef2ca24421fad9ab29f442e2", +"d\",\n \"name\" : \"0xfce7bba19238fe7ef2\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 6074000000\n}, \n{\n \"ETH_account\" : \"0", +"xf3c119548d62b7e9a4e578aa8620dd046202c4d", +"a\",\n \"name\" : \"0xf3c119548d62b7e9a4\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 30000000000\n}, \n{\n \"ETH_account\" : \"", +"0xf7bfa4b01e508cf0e1ea8c650be9bcb69f88f4", +"5e\",\n \"name\" : \"0xf7bfa4b01e508cf0e1\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2410414575\n}, \n{\n \"ETH_account\" : \"", +"0x21c8f8642ee6a317ce9b02e026dbbc100f9015", +"46\",\n \"name\" : \"jfarah519\",\n \"publ", +"icKey\" : \"SPH56GWsQT2yEQkqBhapuuVsPP6h1B", +"5LiHHMiVJjaejJuxFV6fjAd\",\n \"balance\" ", +": 10660829923\n}, \n{\n \"ETH_account\" : ", +"\"0x3d26b369e7f2f7c4514d27221d9944dabce4e", +"f2a\",\n \"name\" : \"americacagle\",\n \"", +"publicKey\" : \"SPH7x5YVqAyiupkTCuxuCYr1ov", +"sYPMPQU4D5EGeNXUEZJ1yuMKYqD\",\n \"balan", +"ce\" : 9268433350055\n}, \n{\n \"ETH_accou", +"nt\" : \"0x73a4ecd0d30ea32710ad7f9ce2111bf", +"a856eff83\",\n \"name\" : \"0x73a4ecd0d30e", +"a32710\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 500000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x59066889711e2a020b892721ece70e1d", +"bf2b04af\",\n \"name\" : \"0x59066889711e2", +"a020b\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 2008678812\n}, \n{\n \"ETH_accoun", +"t\" : \"0x91364516d3cad16e1666261dbdbb39c8", +"81dbe9ee\",\n \"name\" : \"0x91364516d3cad", +"16e16\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 407248217061\n}, \n{\n \"ETH_acco", +"unt\" : \"0x229c5620230026a87392d086a2174d", +"ebb88642f7\",\n \"name\" : \"0x229c5620230", +"026a873\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 7007000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x435229d6124aa7a1d78c04fd7d60e3", +"6e121b1380\",\n \"name\" : \"zhenghy\",\n ", +" \"publicKey\" : \"SPH6Fof8wJNjnkyAh26Q3uWt", +"cYnKpHjPAqbJtT1fyPvdGipekySMS\",\n \"bal", +"ance\" : 48610033600\n}, \n{\n \"ETH_accou", +"nt\" : \"0xff7d769d7dfe65c3d6e2bd16bf05cf7", +"fecefb52e\",\n \"name\" : \"0xff7d769d7dfe", +"65c3d6\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 6640389398\n}, \n{\n \"ETH_accou", +"nt\" : \"0xf7a574a4e6c5cf74242d587eb57f3e8", +"4c8f153af\",\n \"name\" : \"0xf7a574a4e6c5", +"cf7424\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 7500000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xb3132f025031ebbe174c12a6309e485", +"3678cda32\",\n \"name\" : \"0xb3132f025031", +"ebbe17\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 91\n}, \n{\n \"ETH_account\" : \"0", +"xbdee76356f9cb0a9735eef234583fff4eb0e977", +"d\",\n \"name\" : \"0xbdee76356f9cb0a973\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 7301000000\n}, \n{\n \"ETH_account\" : \"0", +"xe701d6bb1a514b0d9c85f8b9f8e30adec3d90af", +"d\",\n \"name\" : \"0xe701d6bb1a514b0d9c\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 33833000000\n}, \n{\n \"ETH_account\" : \"", +"0x70c0e3106c8353172af5f64be50129cf8335bd", +"57\",\n \"name\" : \"0x70c0e3106c8353172a\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 200000\n}, \n{\n \"ETH_account\" : \"0x77", +"3b522680761199384d2cba1d2593127235b884\",", +"\n \"name\" : \"0x773b52268076119938\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 70", +"0000\n}, \n{\n \"ETH_account\" : \"0x70b8d1", +"96b9c4cc757c73ba8b004e35e03de1ca9f\",\n ", +" \"name\" : \"0x70b8d196b9c4cc757c\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 806967", +"00000\n}, \n{\n \"ETH_account\" : \"0x3c80e", +"15223b97012de2c62bb070dd8ed0f1386d4\",\n ", +" \"name\" : \"lucisommers\",\n \"publicKey", +"\" : \"SPH88PjvMr4ABh5hSFcdsb7PwTEeEBntRQ2", +"qnenNX6DFE4ym6tTGf\",\n \"balance\" : 122", +"500000000000\n}, \n{\n \"ETH_account\" : \"", +"0x761e6b7227ad98ec3280520cfbff35a81be504", +"7d\",\n \"name\" : \"garypelletier\",\n \"", +"publicKey\" : \"SPH61g8BWEA3F1nx8jaFF3mMix", +"ih2eTLzHapVEfyrtrStUgYLpp4n\",\n \"balan", +"ce\" : 25000000000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x5a027df0edb8c281d58e78075ac9db", +"018daa812c\",\n \"name\" : \"0x5a027df0edb", +"8c281d5\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 6149162069654\n}, \n{\n \"ETH_a", +"ccount\" : \"0x92732996d0ce133aa560043cab9", +"6a1f252bc0ee0\",\n \"name\" : \"0x92732996", +"d0ce133aa5\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 19444013466\n}, \n{\n \"ETH_", +"account\" : \"0x8c31a5f49c1f363fde4dfd9e2b", +"6bea13975e3677\",\n \"name\" : \"0x8c31a5f", +"49c1f363fde\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1674552466\n}, \n{\n \"ETH_", +"account\" : \"0x2c9f083cc86360da32234cfd12", +"9958817f175a59\",\n \"name\" : \"gisilarhe", +"a\",\n \"publicKey\" : \"SPH56bkZRKSUksivi", +"TDV488MCeAKWeJkyS8tEWJxTLgoxwhmx7ZHq\",\n ", +" \"balance\" : 38370598764\n}, \n{\n \"ET", +"H_account\" : \"0xcbf8a15e7a0c614aa016230d", +"5d5cc5a5f1642856\",\n \"name\" : \"ckm\",\n ", +" \"publicKey\" : \"SPH69fu2nGHBHNm7SDwQGX", +"e5jX8YA3n61XEyAeT9CcW9B4y12Ck8U\",\n \"b", +"alance\" : 23089998893\n}, \n{\n \"ETH_acc", +"ount\" : \"0x52dbb4620843b07b76e2058b7b4e3", +"cad9fbec2ea\",\n \"name\" : \"sofia\",\n ", +"\"publicKey\" : \"SPH6fnjKG1raXDuoEQ9WAZh9B", +"4EuToroxrbuJwYQBfpWKGkcREaiG\",\n \"bala", +"nce\" : 27946865187\n}, \n{\n \"ETH_accoun", +"t\" : \"0xfaccf4d8457bd56450023c11bdcba771", +"8873c9f7\",\n \"name\" : \"0xfaccf4d8457bd", +"56450\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1409690976\n}, \n{\n \"ETH_accoun", +"t\" : \"0x079aa05780a3ed87ba222dac21df653e", +"5356c1b3\",\n \"name\" : \"0x079aa05780a3e", +"d87ba\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 4850000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xcad19b9fd25cfc240772bc3e2c308dc5", +"eb9915ad\",\n \"name\" : \"0xcad19b9fd25cf", +"c2407\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 5684194990\n}, \n{\n \"ETH_accoun", +"t\" : \"0xdb5c121df460c928165e2fb326ca96d5", +"ef45254c\",\n \"name\" : \"0xdb5c121df460c", +"92816\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 45153770\n}, \n{\n \"ETH_account\"", +" : \"0xd77b16cd250c19fdc86c36a503f4ab4864", +"405ae0\",\n \"name\" : \"0xd77b16cd250c19f", +"dc8\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 826712320\n}, \n{\n \"ETH_account\" ", +": \"0x9320eb35a83b584066847d940eea56462b3", +"04603\",\n \"name\" : \"0x9320eb35a83b5840", +"66\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 40000000\n}, \n{\n \"ETH_account\" : ", +"\"0xc0bc87316c28c3d70512c6e4049613adb31e4", +"0f1\",\n \"name\" : \"0xc0bc87316c28c3d705", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 13466\n}, \n{\n \"ETH_account\" : \"0x4d", +"cb3a07f58e789e479f92c9db41dc3e0e629e3e\",", +"\n \"name\" : \"idahosk\",\n \"publicKey\"", +" : \"SPH7x42qKPxwSyKjB9vDoR9fDngbkUzVaR2v", +"FbYDdLhwVw5SS8to8\",\n \"balance\" : 7939", +"54119323\n}, \n{\n \"ETH_account\" : \"0xf8", +"b81cb87155c00129a91af9e5f458d46f6936dd\",", +"\n \"name\" : \"0xf8b81cb87155c00129\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 33", +"\n}, \n{\n \"ETH_account\" : \"0x666049249f", +"ebc6a4df5752253edfcbabb3598c4d\",\n \"na", +"me\" : \"0x666049249febc6a4df\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 699\n}, \n{\n", +" \"ETH_account\" : \"0xfee2437e6f15a42e2", +"5176e86660b9f4d2d872575\",\n \"name\" : \"", +"0xfee2437e6f15a42e25\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 98\n}, \n{\n \"ETH", +"_account\" : \"0xc834395315ff25140d18cfd1f", +"df146363217bc60\",\n \"name\" : \"0xc83439", +"5315ff25140d\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 834251000\n}, \n{\n \"ETH_", +"account\" : \"0x03615b8463938b67bb2c3cfd3c", +"5f65b35042869a\",\n \"name\" : \"tommyxz\",", +"\n \"publicKey\" : \"SPH4wTWNQNzPXF42rEhY", +"i1BfsZYwabPAcjNocZnZWKvdh8dZDTPaB\",\n ", +"\"balance\" : 1789721691\n}, \n{\n \"ETH_ac", +"count\" : \"0x0bc3db8b71af759af7a3e0adffdf", +"39de8c78d2e4\",\n \"name\" : \"0x0bc3db8b7", +"1af759af7\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 425000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x1280ad41d8d80b16c3868c06ee8e0", +"7a4217e2380\",\n \"name\" : \"teclabolesla", +"v\",\n \"publicKey\" : \"SPH8H3VNF2L3CbAm6", +"hzczSPD47zm4YK3HsvyqGsqfZhNkiQ75GNMk\",\n ", +" \"balance\" : 55990932020\n}, \n{\n \"ET", +"H_account\" : \"0x172b4883dafa04a26790954d", +"0e9610bf1c2cf611\",\n \"name\" : \"0x172b4", +"883dafa04a267\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 4017113797780\n}, \n{\n ", +"\"ETH_account\" : \"0xede47fcbb7372ce1282f9", +"ebe5f7f50727579e45f\",\n \"name\" : \"0xed", +"e47fcbb7372ce128\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 43883\n}, \n{\n \"ETH_", +"account\" : \"0x3c8e484d2d87a6c95b3dbb8ec8", +"1f701a765810ef\",\n \"name\" : \"0x3c8e484", +"d2d87a6c95b\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 81000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xca324431af6d3585013dc26b2a66", +"0f8a1e713e39\",\n \"name\" : \"0xca324431a", +"f6d358501\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 33\n}, \n{\n \"ETH_account\" :", +" \"0x44c611886f63f208f17d9282a9bd74f54988", +"3110\",\n \"name\" : \"ailwen\",\n \"publi", +"cKey\" : \"SPH6w2sHn4YCcpdWMeRmML3CaxxWQJk", +"U28z9XZXmjbD9XS68VwpsA\",\n \"balance\" :", +" 3026266140000\n}, \n{\n \"ETH_account\" :", +" \"0xe0d24eb59fa449f5d16290803125b8f0eef3", +"e9f3\",\n \"name\" : \"0xe0d24eb59fa449f5d", +"1\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 310984\n}, \n{\n \"ETH_account\" : \"0x", +"f6c74696bc25293e5fd156e8f5777ee2564cdb93", +"\",\n \"name\" : \"0xf6c74696bc25293e5f\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"99\n}, \n{\n \"ETH_account\" : \"0xd427149e", +"9b5edb86753332622e28ecf6f5066702\",\n \"", +"name\" : \"0xd427149e9b5edb8675\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 39771840", +"49\n}, \n{\n \"ETH_account\" : \"0x08f0677c", +"b42efcb31e82f06ec66afe121c1e4702\",\n \"", +"name\" : \"0x08f0677cb42efcb31e\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 90703360", +"473\n}, \n{\n \"ETH_account\" : \"0x1499493", +"fd2fdb2c6d536569322fe37f5da24a5c9\",\n ", +"\"name\" : \"0x1499493fd2fdb2c6d5\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 58\n}, \n", +"{\n \"ETH_account\" : \"0xd38e09bd8be587a", +"ef164f963ab66499e1d1ff5e3\",\n \"name\" :", +" \"0xd38e09bd8be587aef1\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 23428000000\n}, ", +"\n{\n \"ETH_account\" : \"0x3dc34069e9bde3", +"3f8254eeabef59642a3a1be249\",\n \"name\" ", +": \"0x3dc34069e9bde33f82\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 370000\n}, \n{\n ", +" \"ETH_account\" : \"0xf6b49109d320c8f7f2", +"2b4d44b4666a4f431bb6df\",\n \"name\" : \"0", +"xf6b49109d320c8f7f2\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1500000000\n}, \n{\n ", +" \"ETH_account\" : \"0xbbbf096e48ae4fa2a2", +"a7d185d79fa272396f2a11\",\n \"name\" : \"0", +"xbbbf096e48ae4fa2a2\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 3120000000\n}, \n{\n ", +" \"ETH_account\" : \"0x1aa88dca2f93e3bd0d", +"beb580cc75b50a1d5d229f\",\n \"name\" : \"0", +"x1aa88dca2f93e3bd0d\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 100000000000\n}, \n{", +"\n \"ETH_account\" : \"0x8662bfe5ab7f2265", +"6c976140f8a706dc46f6a057\",\n \"name\" : ", +"\"0x8662bfe5ab7f22656c\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1000000\n}, \n{\n ", +" \"ETH_account\" : \"0xb44c16f914a6fc44712", +"c2d53eb1ce1ba65445774\",\n \"name\" : \"0x", +"b44c16f914a6fc4471\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 83400000000\n}, \n{\n ", +" \"ETH_account\" : \"0xf05b72e70042d5a6fd", +"151056f4af24ae7f7eada0\",\n \"name\" : \"0", +"xf05b72e70042d5a6fd\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 619000\n}, \n{\n \"", +"ETH_account\" : \"0x3b4135bc77b5436b4c955d", +"aac227415886bc5799\",\n \"name\" : \"0x3b4", +"135bc77b5436b4c\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 282000\n}, \n{\n \"ETH_", +"account\" : \"0xf045c32cbe34e0bd3d3cb32608", +"356a401d61c365\",\n \"name\" : \"0xf045c32", +"cbe34e0bd3d\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 400000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa41b2ac8ca10e8164fb23ef388688d", +"b469820694\",\n \"name\" : \"0xa41b2ac8ca1", +"0e8164f\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 100000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x44714d5e4cd64069a39aeb2a59252d1", +"ce60c3a3c\",\n \"name\" : \"0x44714d5e4cd6", +"4069a3\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 50229857000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xddc18dadbc975db18b8e0794a89e1d", +"e51170ccd5\",\n \"name\" : \"0xddc18dadbc9", +"75db18b\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 2216452000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xe19a761e77141742cf38d0802113ec", +"c656bded01\",\n \"name\" : \"0xe19a761e771", +"41742cf\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 76500000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xc8bab9b8e4ff783900d75d639ef7f093", +"7aec53a5\",\n \"name\" : \"0xc8bab9b8e4ff7", +"83900\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 894600\n}, \n{\n \"ETH_account\" :", +" \"0xd918219fd9be2de265438128988a0716c2be", +"1236\",\n \"name\" : \"0xd918219fd9be2de26", +"5\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 928500\n}, \n{\n \"ETH_account\" : \"0x", +"63a4d46fcc8debec6baa2e9c1f8da2e6be1612ed", +"\",\n \"name\" : \"0x63a4d46fcc8debec6b\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"250000\n}, \n{\n \"ETH_account\" : \"0xc31b", +"894d585986075a9f39a8d73ee424eedc6041\",\n ", +" \"name\" : \"0xc31b894d585986075a\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 9500", +"000\n}, \n{\n \"ETH_account\" : \"0x1609481", +"dd1981f382db6060d07fc296d0dac0b7d\",\n ", +"\"name\" : \"0x1609481dd1981f382d\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 290500\n", +"}, \n{\n \"ETH_account\" : \"0x07e51017944", +"8d1e83d4cfd603530366af249d96e\",\n \"nam", +"e\" : \"0x07e510179448d1e83d\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 5038100000\n", +"}, \n{\n \"ETH_account\" : \"0x548bc3cb7ca", +"9d6e149dc44e6b4ec6204cac1f2d7\",\n \"nam", +"e\" : \"0x548bc3cb7ca9d6e149\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 556200000\n}", +", \n{\n \"ETH_account\" : \"0xc21336ae66d0", +"dd4a76fec4fdfc7bc48e76846ea2\",\n \"name", +"\" : \"0xc21336ae66d0dd4a76\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 20000000000\n", +"}, \n{\n \"ETH_account\" : \"0xfe29bf27e9b", +"e6df5d31f39522c661c8a9957cc45\",\n \"nam", +"e\" : \"0xfe29bf27e9be6df5d3\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 400\n}, \n{\n ", +" \"ETH_account\" : \"0x182f7369b2dd69908a", +"d7374f29b8f4b74460c132\",\n \"name\" : \"0", +"x182f7369b2dd69908a\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 120000\n}, \n{\n \"", +"ETH_account\" : \"0xb6ce6309989da5f24502da", +"5956ba77ba1ae5f046\",\n \"name\" : \"0xb6c", +"e6309989da5f245\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 200000\n}, \n{\n \"ETH_", +"account\" : \"0x94730f83ebbd3988b6c611dc4e", +"d5b73dd9dc8bb3\",\n \"name\" : \"0x94730f8", +"3ebbd3988b6\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 122652\n}, \n{\n \"ETH_acco", +"unt\" : \"0x4c9760843846f6b0372bcae11c6d7d", +"400058bcdf\",\n \"name\" : \"0x4c976084384", +"6f6b037\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 2300000\n}, \n{\n \"ETH_account", +"\" : \"0x687a67c0bc1901d6104c22e61614b9abe", +"c42b61b\",\n \"name\" : \"0x687a67c0bc1901", +"d610\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 90685800000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x8cb8175385bba618e1a8476b64a1f394", +"856ad9d9\",\n \"name\" : \"0x8cb8175385bba", +"618e1\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 4800000\n}, \n{\n \"ETH_account\" ", +": \"0xb517821bc4bd7c99a998b066c70e685ccc0", +"0958c\",\n \"name\" : \"0xb517821bc4bd7c99", +"a9\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 190500000\n}, \n{\n \"ETH_account\" :", +" \"0x0c94e7f6464a43a02f0005dc01cb3c96bc05", +"32b1\",\n \"name\" : \"morena\",\n \"publi", +"cKey\" : \"SPH7d9Y4cHeQjYnimtE3TFC6KvFBeSH", +"sV5J7xjMUzojrMh4Np3m4S\",\n \"balance\" :", +" 9900500000\n}, \n{\n \"ETH_account\" : \"0", +"x812c770e706a6ea0f8500ba230d6ef766d74f17", +"c\",\n \"name\" : \"0x812c770e706a6ea0f8\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 5038100000\n}, \n{\n \"ETH_account\" : \"0", +"x4992a4705bc9079fc3ce17a6b0ff20a972beaef", +"c\",\n \"name\" : \"0x4992a4705bc9079fc3\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 500000\n}, \n{\n \"ETH_account\" : \"0x1b2", +"903b54fa14442ad3461a254220370a4cb2a33\",\n", +" \"name\" : \"0x1b2903b54fa14442ad\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 140", +"00\n}, \n{\n \"ETH_account\" : \"0x529dc9f0", +"817deb35986d1afd93b751c68b1dbe9a\",\n \"", +"name\" : \"0x529dc9f0817deb3598\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 50381000", +"00\n}, \n{\n \"ETH_account\" : \"0x68f0becd", +"d1958592e320ce7b372718c37cd23399\",\n \"", +"name\" : \"0x68f0becdd1958592e3\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 200000\n}", +", \n{\n \"ETH_account\" : \"0x571e9296f415", +"6bbb0c85e5bc00e9cb396f0fc219\",\n \"name", +"\" : \"0x571e9296f4156bbb0c\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 300000\n}, \n{", +"\n \"ETH_account\" : \"0x540c208386292b27", +"f2a9bce7147f09b27c71dab0\",\n \"name\" : ", +"\"0x540c208386292b27f2\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 538100000\n}, \n{\n", +" \"ETH_account\" : \"0x35d9eaf8461037501", +"8076fbd52b57aa3ff996f3f\",\n \"name\" : \"", +"0x35d9eaf84610375018\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 600000\n}, \n{\n ", +"\"ETH_account\" : \"0x9f7322f2ba52ff6f9f497", +"411b39a1baf60ac84f7\",\n \"name\" : \"0x9f", +"7322f2ba52ff6f9f\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 38100000\n}, \n{\n \"E", +"TH_account\" : \"0xf22a00197de8dd42851fd07", +"4fec0040cbe0c5558\",\n \"name\" : \"0xf22a", +"00197de8dd4285\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1\n}, \n{\n \"ETH_accoun", +"t\" : \"0x5f148b4b0b396e01fc10b1b7f8b92999", +"29f95042\",\n \"name\" : \"0x5f148b4b0b396", +"e01fc\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 38000000\n}, \n{\n \"ETH_account\"", +" : \"0x68c89c1f1b01d22efb8bf937cab4182f6d", +"d9cd8b\",\n \"name\" : \"0x68c89c1f1b01d22", +"efb\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 488000\n}, \n{\n \"ETH_account\" : \"", +"0x0ce35434fa54e9475dde065fdb75d42869d02c", +"fd\",\n \"name\" : \"0x0ce35434fa54e9475d\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 900000\n}, \n{\n \"ETH_account\" : \"0x80", +"c67d467aa348e9b7d125e25f0735310850e68e\",", +"\n \"name\" : \"0x80c67d467aa348e9b7\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 50", +"6596513\n}, \n{\n \"ETH_account\" : \"0xc70", +"b894a68013986465ae3370ceb76af38af5638\",\n", +" \"name\" : \"0xc70b894a6801398646\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 799", +"6938897\n}, \n{\n \"ETH_account\" : \"0x2ad", +"58bc169f317fbc3d8b2caf503a617454e85cc\",\n", +" \"name\" : \"0x2ad58bc169f317fbc3\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 762", +"00000\n}, \n{\n \"ETH_account\" : \"0x93379", +"b816e2048e965d57c5ac278f55c030f6034\",\n ", +" \"name\" : \"0x93379b816e2048e965\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 50180", +"00000\n}, \n{\n \"ETH_account\" : \"0x690b0", +"9fe1ff7541b7ef739608db4daff272529d4\",\n ", +" \"name\" : \"0x690b09fe1ff7541b7e\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 55762", +"00000\n}, \n{\n \"ETH_account\" : \"0x74351", +"6c90b4a06ae5407acc1c7454826858fa0eb\",\n ", +" \"name\" : \"0x743516c90b4a06ae54\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 68266", +"25500\n}, \n{\n \"ETH_account\" : \"0xd2734", +"9f762fa5fdbafe37684918b4036ffa2bd32\",\n ", +" \"name\" : \"0xd27349f762fa5fdbaf\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 25684", +"00000\n}, \n{\n \"ETH_account\" : \"0xd5150", +"2d6c130de11081a0552864d35a5751a0a67\",\n ", +" \"name\" : \"0xd51502d6c130de1108\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10100", +"0000\n}, \n{\n \"ETH_account\" : \"0xabb8cd", +"d71ffca5d9607f8cc56c1aa8b1ed135f37\",\n ", +" \"name\" : \"0xabb8cdd71ffca5d960\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 302650", +"00000\n}, \n{\n \"ETH_account\" : \"0x12b9c", +"bd7f269ea488ac348c5b56d88af246cfe85\",\n ", +" \"name\" : \"0x12b9cbd7f269ea488a\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10003", +"00000\n}, \n{\n \"ETH_account\" : \"0x80212", +"553c79ab9613f66f4f0abe0a3365b01e3a0\",\n ", +" \"name\" : \"0x80212553c79ab9613f\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 14760", +"00000\n}, \n{\n \"ETH_account\" : \"0x35752", +"8abf7fe167aab6c231b4282b8d3f549ffec\",\n ", +" \"name\" : \"0x357528abf7fe167aab\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 88800", +"0000\n}, \n{\n \"ETH_account\" : \"0x005a7c", +"986ad3fdf3fdb2fe4c72f35943c3a2f0ab\",\n ", +" \"name\" : \"0x005a7c986ad3fdf3fd\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 15500\n", +"}, \n{\n \"ETH_account\" : \"0x53f3fb819e3", +"ec5758c7969874bf6b2e79ea9d0ea\",\n \"nam", +"e\" : \"0x53f3fb819e3ec5758c\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 10076200000", +"\n}, \n{\n \"ETH_account\" : \"0x7820489209", +"7517fcd54eda526c7aac58e1aa20cc\",\n \"na", +"me\" : \"0x78204892097517fcd5\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2633350000", +"\n}, \n{\n \"ETH_account\" : \"0xd0442d66b6", +"9deee46ed236d642eaa00fa533c049\",\n \"na", +"me\" : \"0xd0442d66b69deee46e\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 99\n}, \n{\n ", +" \"ETH_account\" : \"0x7bf5ada4c8bad2a42a", +"bb009823b925ec41295bf1\",\n \"name\" : \"0", +"x7bf5ada4c8bad2a42a\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 28658000000\n}, \n{\n", +" \"ETH_account\" : \"0x8aae50113d811edf6", +"653ee28a779cdbd2a783707\",\n \"name\" : \"", +"0x8aae50113d811edf66\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 42587000000\n}, \n{", +"\n \"ETH_account\" : \"0xa1c9a1105f5cdae1", +"a6850c8eb6e151016a1df8c0\",\n \"name\" : ", +"\"0xa1c9a1105f5cdae1a6\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 8515000000\n}, \n{", +"\n \"ETH_account\" : \"0x5c452683aba1d601", +"e5eb0fce034120cd93473563\",\n \"name\" : ", +"\"0x5c452683aba1d601e5\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 76\n}, \n{\n \"ET", +"H_account\" : \"0xdc1019c8f392df3b7b76bad3", +"705a1b22968424fb\",\n \"name\" : \"0xdc101", +"9c8f392df3b7b\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 69000000\n}, \n{\n \"ETH_", +"account\" : \"0x9d859d895d9f3336f8abd1c258", +"3d4efa15fc5281\",\n \"name\" : \"0x9d859d8", +"95d9f3336f8\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 56200000\n}, \n{\n \"ETH_ac", +"count\" : \"0xe7d7cd7f64b56633028eb32b62d8", +"ae017054ae33\",\n \"name\" : \"0xe7d7cd7f6", +"4b5663302\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 113710000000\n}, \n{\n \"ETH_", +"account\" : \"0x7feb907bde9be3cbfd0a1d676e", +"75ab5bd9c82e37\",\n \"name\" : \"0x7feb907", +"bde9be3cbfd\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 500000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x4abdbe3beb76f416999b5e7271999a", +"a6487e62fb\",\n \"name\" : \"0x4abdbe3beb7", +"6f41699\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 800200\n}, \n{\n \"ETH_account\"", +" : \"0xdcb7e18b7cc581881500baf4b9c8bdb988", +"73a70a\",\n \"name\" : \"0xdcb7e18b7cc5818", +"815\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 5038200000\n}, \n{\n \"ETH_account\"", +" : \"0xac020608f3bdd22d442e646c5f930f35c0", +"542960\",\n \"name\" : \"0xac020608f3bdd22", +"d44\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 5038000000\n}, \n{\n \"ETH_account\"", +" : \"0x0e9b99e7bec7d8258f554dcebaab934513", +"394890\",\n \"name\" : \"0x0e9b99e7bec7d82", +"58f\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 60000000\n}, \n{\n \"ETH_account\" :", +" \"0xfbb3a753f1d9e43f58f79cba7ae303fb4e21", +"afdf\",\n \"name\" : \"matts\",\n \"public", +"Key\" : \"SPH5FBNGZSYkQ7yjEyURqsqqZEhqGD9b", +"nCWjgVHELPznFsVDaXnjY\",\n \"balance\" : ", +"17779579\n}, \n{\n \"ETH_account\" : \"0xfe", +"0add7ac1e287958c0bb0b8f91d40d34ceb23d3\",", +"\n \"name\" : \"0xfe0add7ac1e287958c\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 10", +"000000000\n}, \n{\n \"ETH_account\" : \"0x6", +"91302c0a6d0b4d9b8ca90d4ee443dc058e9344f\"", +",\n \"name\" : \"0x691302c0a6d0b4d9b8\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"10381\n}, \n{\n \"ETH_account\" : \"0x8a55c", +"9bd8c40058ec4448e4cc29d3bc62ba16041\",\n ", +" \"name\" : \"0x8a55c9bd8c40058ec4\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 24310", +"00000\n}, \n{\n \"ETH_account\" : \"0x563ae", +"d3199f264c6410b7e6f9b9e7d269865ce61\",\n ", +" \"name\" : \"cryptonit\",\n \"publicKey\" ", +": \"SPH69RppRp3pA1264PouimgAzx98khDFJKnCu", +"hjNNYF1eNnZ4kYne\",\n \"balance\" : 18650", +"000000\n}, \n{\n \"ETH_account\" : \"0xe24d", +"33f027be90eb2c355c77d37dac2b4d0a2f65\",\n ", +" \"name\" : \"0xe24d33f027be90eb2c\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2160", +"00\n}, \n{\n \"ETH_account\" : \"0xe26152e4", +"4016ed72923b6821e262ef0070767a47\",\n \"", +"name\" : \"0xe26152e44016ed7292\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10950000", +"0\n}, \n{\n \"ETH_account\" : \"0x54bbf603a", +"f39b028da873caa1218a220e07d65e6\",\n \"n", +"ame\" : \"0x54bbf603af39b028da\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 405500000", +"0\n}, \n{\n \"ETH_account\" : \"0x8c131e27b", +"56883606cbe762b37be1f96e654264f\",\n \"n", +"ame\" : \"0x8c131e27b56883606c\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 40600\n}, ", +"\n{\n \"ETH_account\" : \"0xd129b1e65261ac", +"c0d064e161ef942a3fc0650d91\",\n \"name\" ", +": \"0xd129b1e65261acc0d0\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 11900\n}, \n{\n ", +" \"ETH_account\" : \"0x962a82b1f6ce57c7ec6", +"2b0f17f7caf3638406c40\",\n \"name\" : \"0x", +"962a82b1f6ce57c7ec\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 200000\n}, \n{\n \"E", +"TH_account\" : \"0x7c92ef916672f86e60557ef", +"cee366a65af905249\",\n \"name\" : \"0x7c92", +"ef916672f86e60\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 23428000000\n}, \n{\n \"", +"ETH_account\" : \"0x4db6137656bdc1371b6f4d", +"340ad4df59c933fac2\",\n \"name\" : \"0x4db", +"6137656bdc1371b\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 15104300000\n}, \n{\n ", +"\"ETH_account\" : \"0xb4bca49c0d69a71895477", +"61bebd0852001b93e6f\",\n \"name\" : \"0xb4", +"bca49c0d69a71895\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 981000\n}, \n{\n \"ETH", +"_account\" : \"0x58c1c0291dc693cfb4f477480", +"98a4965c7d84396\",\n \"name\" : \"0x58c1c0", +"291dc693cfb4\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 114300000\n}, \n{\n \"ETH_", +"account\" : \"0x3deae74d220a49a3a9b7c2983f", +"ec126a43e80d34\",\n \"name\" : \"sophiatx1", +"\",\n \"publicKey\" : \"SPH5tEiAcZixiBCKHa", +"H3YQeCDq7VXyvCm8pgYM7vzBYZNa9K5GrTe\",\n ", +" \"balance\" : 35372580000\n}, \n{\n \"ETH", +"_account\" : \"0xbfd3169d2e44de7e9dee09b87", +"3fb7ed5c9bb5dba\",\n \"name\" : \"0xbfd316", +"9d2e44de7e9d\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 40571500000\n}, \n{\n \"ET", +"H_account\" : \"0xc36ab79178785c0418e31d4d", +"245e9f37de9e4b61\",\n \"name\" : \"0xc36ab", +"79178785c0418\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 10076200000\n}, \n{\n \"E", +"TH_account\" : \"0xb80900e2ae8eafb0aad237a", +"de6fea5582ec85bdc\",\n \"name\" : \"0xb809", +"00e2ae8eafb0aa\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 5000000000\n}, \n{\n \"E", +"TH_account\" : \"0xaf4d15aefec2e6c723e5633", +"7d104bde35dd49f32\",\n \"name\" : \"0xaf4d", +"15aefec2e6c723\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 200000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x719542cb503c31b0d9886593951", +"adcf872139519\",\n \"name\" : \"0x719542cb", +"503c31b0d9\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2000\n}, \n{\n \"ETH_account", +"\" : \"0xcc7367a815ca4ac5aa26b916ea0332042", +"ed2e65d\",\n \"name\" : \"0xcc7367a815ca4a", +"c5aa\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 25190500000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x0dee0cefd2e05ae7d8c1f3c65d1920ec", +"3b1beff6\",\n \"name\" : \"0x0dee0cefd2e05", +"ae7d8\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 95700\n}, \n{\n \"ETH_account\" : ", +"\"0xdac073bf7ab0ff2d1df7383be6ae36b9185af", +"59a\",\n \"name\" : \"0xdac073bf7ab0ff2d1d", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 5083250000\n}, \n{\n \"ETH_account\" : ", +"\"0xf12876577804daa4515c2732bc952b986404c", +"417\",\n \"name\" : \"0xf12876577804daa451", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 357223000\n}, \n{\n \"ETH_account\" : \"", +"0xc86e5b3f4baa7cc4eb62f5e0e1b19e74f25587", +"86\",\n \"name\" : \"0xc86e5b3f4baa7cc4eb\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 5038100000\n}, \n{\n \"ETH_account\" : \"", +"0x721b99d6ffbf3e46786ccc0ffda2b08c76f0fb", +"6e\",\n \"name\" : \"0x721b99d6ffbf3e4678\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 100000\n}, \n{\n \"ETH_account\" : \"0x0e", +"77a07524ba2dfc5f16824a1d2b431e1ceff782\",", +"\n \"name\" : \"0x0e77a07524ba2dfc5f\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 18", +"9243000\n}, \n{\n \"ETH_account\" : \"0xf65", +"bd790ea9fd496b22fe715b063c8cb624f90ac\",\n", +" \"name\" : \"0xf65bd790ea9fd496b2\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 270", +"594000\n}, \n{\n \"ETH_account\" : \"0x92e1", +"c72463e0b35e94961a47343b5c3be9558c85\",\n ", +" \"name\" : \"0x92e1c72463e0b35e94\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1430", +"4832900\n}, \n{\n \"ETH_account\" : \"0xf15", +"b043cc667e4e020af7f8f0966dd88d0599ef8\",\n", +" \"name\" : \"0xf15b043cc667e4e020\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 100", +"000000000\n}, \n{\n \"ETH_account\" : \"0xe", +"1e32091041c114d1d772812d4325b64c95f3d56\"", +",\n \"name\" : \"0xe1e32091041c114d1d\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"6232792226\n}, \n{\n \"ETH_account\" : \"0x", +"00310f80232fc6e491bd5fa7545302ab08c9b1dd", +"\",\n \"name\" : \"0x00310f80232fc6e491\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"10076200000\n}, \n{\n \"ETH_account\" : \"0", +"xabf929115b7abd885ae6a2ec8030ec8ba49a943", +"7\",\n \"name\" : \"0xabf929115b7abd885a\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 110000000\n}, \n{\n \"ETH_account\" : \"0x", +"30cbf66f4563384979cf16275fb4d046cf17ec89", +"\",\n \"name\" : \"0x30cbf66f4563384979\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"339000\n}, \n{\n \"ETH_account\" : \"0x2693", +"44d6417cbbfea7ad57fbea8af16b6afa8909\",\n ", +" \"name\" : \"0x269344d6417cbbfea7\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 8000", +"0000\n}, \n{\n \"ETH_account\" : \"0x1d7bcb", +"f7e727f94998c21b7e3da1f20839c1ef04\",\n ", +" \"name\" : \"0x1d7bcbf7e727f94998\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 395000", +"00000\n}, \n{\n \"ETH_account\" : \"0xe4a34", +"09cfc09521c61b0928b83b62edd501a2b66\",\n ", +" \"name\" : \"0xe4a3409cfc09521c61\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 73554", +"1196400\n}, \n{\n \"ETH_account\" : \"0x56c", +"07a29a18af40b0813668a000e9e2542788a50\",\n", +" \"name\" : \"0x56c07a29a18af40b08\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 381", +"00000\n}, \n{\n \"ETH_account\" : \"0x6f16e", +"7a9b6ca2e405a7fad34fa00c24ffab9335a\",\n ", +" \"name\" : \"0x6f16e7a9b6ca2e405a\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 51148", +"690223\n}, \n{\n \"ETH_account\" : \"0xca21", +"8f461153d9118240c97ae9563461844517f6\",\n ", +" \"name\" : \"0xca218f461153d91182\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5258", +"8150000\n}, \n{\n \"ETH_account\" : \"0xc42", +"cad227dcaad85a1f4943b5e1a971c9323ede5\",\n", +" \"name\" : \"0xc42cad227dcaad85a1\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 300", +"0200000\n}, \n{\n \"ETH_account\" : \"0x0f0", +"825a27a5e3b8d10cbd59e7ed4096c3af0f1ea\",\n", +" \"name\" : \"0x0f0825a27a5e3b8d10\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 600", +"00\n}, \n{\n \"ETH_account\" : \"0x8829883d", +"878282c111319ee0a5e172faa4e7b4c1\",\n \"", +"name\" : \"0x8829883d878282c111\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 15114300", +"000\n}, \n{\n \"ETH_account\" : \"0xf36195d", +"23c5c27eeafe738c92a56b5835391d6a2\",\n ", +"\"name\" : \"0xf36195d23c5c27eeaf\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2209546", +"9848\n}, \n{\n \"ETH_account\" : \"0x4eedf7", +"9769c3eecb9d0a22c8b9abc8262b0dcb7c\",\n ", +" \"name\" : \"0x4eedf79769c3eecb9d\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 841892", +"5790\n}, \n{\n \"ETH_account\" : \"0x63420f", +"4bf6a216ce6cc200871c26ce2d4e78ac46\",\n ", +" \"name\" : \"0x63420f4bf6a216ce6c\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 166006", +"4899\n}, \n{\n \"ETH_account\" : \"0xf4dc69", +"b03b667d7072dca721301d7328a49a1fab\",\n ", +" \"name\" : \"0xf4dc69b03b667d7072\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 486100", +"3370\n}, \n{\n \"ETH_account\" : \"0x5ef9e2", +"c1a7e40909756f0aba86fc82798960333b\",\n ", +" \"name\" : \"0x5ef9e2c1a7e4090975\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 107376", +"622880\n}, \n{\n \"ETH_account\" : \"0x1b34", +"3504856e9a2d0e7d43a5483b2efedf0694af\",\n ", +" \"name\" : \"0x1b343504856e9a2d0e\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 30\n}", +", \n{\n \"ETH_account\" : \"0x71186aa61dd7", +"19d66fa9b47fe21fd0d9ef654510\",\n \"name", +"\" : \"0x71186aa61dd719d66f\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 363172853030", +"\n}, \n{\n \"ETH_account\" : \"0x1af6c0f7b2", +"f618a1f194722cf230909c96f145df\",\n \"na", +"me\" : \"hhassko\",\n \"publicKey\" : \"SPH5", +"uFjeaw97zCrwZPPVwphKC6Mw2nSFNgLJuGJPg368", +"8nZ6vxEUf\",\n \"balance\" : 54159652190\n", +"}, \n{\n \"ETH_account\" : \"0xb284bd39c9f", +"22b327c04d8e3eafa73c6100aa82c\",\n \"nam", +"e\" : \"0xb284bd39c9f22b327c\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 63000000000", +"\n}, \n{\n \"ETH_account\" : \"0xeaa122a5c7", +"04f0e5e4fb0ba4373ea5e242c278d7\",\n \"na", +"me\" : \"0xeaa122a5c704f0e5e4\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 4090566583", +"\n}, \n{\n \"ETH_account\" : \"0x4af76730bd", +"f3262f62f1f1c0c26141b6ef6d775e\",\n \"na", +"me\" : \"0x4af76730bdf3262f62\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 4582000000", +"\n}, \n{\n \"ETH_account\" : \"0x17c1c12ff6", +"195970b03a72cd20319373735c9af9\",\n \"na", +"me\" : \"0x17c1c12ff6195970b0\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1000000\n},", +" \n{\n \"ETH_account\" : \"0x83e800b78a036", +"1e56966ec80bc69fb989c281835\",\n \"name\"", +" : \"0x83e800b78a0361e569\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1761000000\n},", +" \n{\n \"ETH_account\" : \"0xe3a26f493f50e", +"78f5df6b2807c06a27f57c6e9a7\",\n \"name\"", +" : \"0xe3a26f493f50e78f5d\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 132386023\n}, ", +"\n{\n \"ETH_account\" : \"0x5ec6af4759ad9a", +"1011cfd29244165d0e385b748c\",\n \"name\" ", +": \"0x5ec6af4759ad9a1011\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 5721000000\n}, ", +"\n{\n \"ETH_account\" : \"0x424235b24b5e1d", +"aa498a0089ffac3898ee35a55c\",\n \"name\" ", +": \"0x424235b24b5e1daa49\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 47389000000\n},", +" \n{\n \"ETH_account\" : \"0xbfd83c36d9fd4", +"cf4366965889d059307c75733fd\",\n \"name\"", +" : \"0xbfd83c36d9fd4cf436\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 36314000000\n}", +", \n{\n \"ETH_account\" : \"0xec598fc0d657", +"37b3f2ee79a1d791b4fb0f08772e\",\n \"name", +"\" : \"0xec598fc0d65737b3f2\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 40420196236\n", +"}, \n{\n \"ETH_account\" : \"0x9af1670018a", +"7d60a96da3b849e37e041a2e1f787\",\n \"nam", +"e\" : \"0x9af1670018a7d60a96\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 9721000000\n", +"}, \n{\n \"ETH_account\" : \"0xafc1ff5fb4c", +"d70f909a38d19f574fc2fc5180fbc\",\n \"nam", +"e\" : \"0xafc1ff5fb4cd70f909\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 3990000000\n", +"}, \n{\n \"ETH_account\" : \"0xcf824aa715d", +"ec3d79ab8db33fd63ae0ba06d77dd\",\n \"nam", +"e\" : \"0xcf824aa715dec3d79a\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 3461000000\n", +"}, \n{\n \"ETH_account\" : \"0xade142b9a31", +"3a6b905b4d4431724363f2c6c2df8\",\n \"nam", +"e\" : \"0xade142b9a313a6b905\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1721000000\n", +"}, \n{\n \"ETH_account\" : \"0x8cc52511857", +"8ab2554fe00c256e2318a12d2c892\",\n \"nam", +"e\" : \"0x8cc525118578ab2554\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 2988595999\n", +"}, \n{\n \"ETH_account\" : \"0x2b91a9450a1", +"226cb1ea912961372f405001381a2\",\n \"nam", +"e\" : \"0x2b91a9450a1226cb1e\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1396087\n}, ", +"\n{\n \"ETH_account\" : \"0x772691c319bfee", +"b08f3912b90a04a85f9f1407b0\",\n \"name\" ", +": \"somelemons\",\n \"publicKey\" : \"SPH7D", +"mxSHuGEdjxyK8VKWn9pku41qM1E8bKWmWpGu2P9M", +"STBLsijL\",\n \"balance\" : 368565918\n}, ", +"\n{\n \"ETH_account\" : \"0xaf00793f908648", +"478c43c3ccbcf1604b165c5f39\",\n \"name\" ", +": \"0xaf00793f908648478c\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 30000000\n}, \n{", +"\n \"ETH_account\" : \"0xf5bd4d941d504a31", +"88aef9c07091502d5eba547c\",\n \"name\" : ", +"\"0xf5bd4d941d504a3188\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 840000000\n}, \n{\n", +" \"ETH_account\" : \"0xca15caa73fd305b08", +"7b076171dd20a650f2d9217\",\n \"name\" : \"", +"0xca15caa73fd305b087\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 15114000000\n}, \n{", +"\n \"ETH_account\" : \"0x255b5fdafcff23ac", +"9730faeaaa5c047e88e2f479\",\n \"name\" : ", +"\"0x255b5fdafcff23ac97\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 5097650000\n}, \n{", +"\n \"ETH_account\" : \"0x45b3adeb9fdce000", +"f7617352354e1e76592fd68b\",\n \"name\" : ", +"\"0x45b3adeb9fdce000f7\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 10190000000\n}, \n", +"{\n \"ETH_account\" : \"0xfdefb9e82171c75", +"179697dc849129fae11611eae\",\n \"name\" :", +" \"0xfdefb9e82171c75179\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 50000000000\n}, ", +"\n{\n \"ETH_account\" : \"0x65bbd789ca121a", +"247da1de3b14e55f4133e83367\",\n \"name\" ", +": \"0x65bbd789ca121a247d\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 12000000\n}, \n{", +"\n \"ETH_account\" : \"0x962f68f4bd7fa688", +"76fe07233586c5d05882fcec\",\n \"name\" : ", +"\"0x962f68f4bd7fa68876\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 97220067333\n}, \n", +"{\n \"ETH_account\" : \"0xefe066f9111f849", +"0ee8f7320f82435387e608728\",\n \"name\" :", +" \"0xefe066f9111f8490ee\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 2560000000\n}, \n", +"{\n \"ETH_account\" : \"0xedbd43a50a24f24", +"3cc3fef31f21718edffe3569e\",\n \"name\" :", +" \"0xedbd43a50a24f243cc\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 47800000000\n}, ", +"\n{\n \"ETH_account\" : \"0xd49eaad408dd89", +"bd5e90f8eb994eb17cdcac3f02\",\n \"name\" ", +": \"0xd49eaad408dd89bd5e\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 12773000000\n},", +" \n{\n \"ETH_account\" : \"0xae0e8e7e8f43f", +"c6dee23b09ac4243bbf155ad30b\",\n \"name\"", +" : \"0xae0e8e7e8f43fc6dee\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 9637000000\n},", +" \n{\n \"ETH_account\" : \"0xc76ccf2a4da08", +"217dfa18b33e5c20c728ec53656\",\n \"name\"", +" : \"0xc76ccf2a4da08217df\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 657382792\n}, ", +"\n{\n \"ETH_account\" : \"0xb7f674eb6a3f22", +"3f3819637f1c24289077c3cfed\",\n \"name\" ", +": \"0xb7f674eb6a3f223f38\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 10076200000\n},", +" \n{\n \"ETH_account\" : \"0x4066c46014ad4", +"5045aa52330b2c88f2cc7ef5e17\",\n \"name\"", +" : \"jackschitt\",\n \"publicKey\" : \"SPH5", +"TdQXDxeraVEEe8sfQrSpdXCxFkH7D4QnaUXvLaPE", +"QM3xVLQuu\",\n \"balance\" : 539620600\n},", +" \n{\n \"ETH_account\" : \"0x7d2ad5a82e104", +"1b79c526acb01a8f372919867ab\",\n \"name\"", +" : \"0x7d2ad5a82e1041b79c\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 7000000000\n},", +" \n{\n \"ETH_account\" : \"0x3e06abda099da", +"965190d0502b03729602788c9ba\",\n \"name\"", +" : \"0x3e06abda099da96519\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 82337470600\n}", +", \n{\n \"ETH_account\" : \"0xee4d7ce0c362", +"75a36a571ac1743e9b0b8cb31c9a\",\n \"name", +"\" : \"0xee4d7ce0c36275a36a\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1861000000\n}", +", \n{\n \"ETH_account\" : \"0x806838212dd2", +"8fa0ccfca98d7e83d8b0dbcbe18c\",\n \"name", +"\" : \"0x806838212dd28fa0cc\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 2000000\n}, \n", +"{\n \"ETH_account\" : \"0xc2202862bb9ab4b", +"7ffe4b1c795584491ba36888f\",\n \"name\" :", +" \"0xc2202862bb9ab4b7ff\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1550125363\n}, \n", +"{\n \"ETH_account\" : \"0x18798f08950da70", +"2c6ea9dc282183771d58d6e67\",\n \"name\" :", +" \"0x18798f08950da702c6\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 2361000000\n}, \n", +"{\n \"ETH_account\" : \"0xd7304a17c54359b", +"23e66a0641d4bb1922b5b177a\",\n \"name\" :", +" \"thefizzler\",\n \"publicKey\" : \"SPH6qm", +"MW9UR6WmQ9qPMYihACezw1dMiGR5dquoe8oM6spp", +"tpFYR65\",\n \"balance\" : 16530030998\n},", +" \n{\n \"ETH_account\" : \"0xc04df21fd4b1a", +"dab67399976046ae63553ebb48d\",\n \"name\"", +" : \"0xc04df21fd4b1adab67\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 20000\n}, \n{\n ", +" \"ETH_account\" : \"0x5fdefceb802b71736a", +"33287bce6d163e89132d2c\",\n \"name\" : \"0", +"x5fdefceb802b71736a\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 31173680798\n}, \n{\n", +" \"ETH_account\" : \"0x72ca1d12ff9929838", +"377bafd7586258ddda349eb\",\n \"name\" : \"", +"0x72ca1d12ff99298383\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 27177027021\n}, \n{", +"\n \"ETH_account\" : \"0xf746410e5bd8c221", +"950812d0094493745cb93df0\",\n \"name\" : ", +"\"0xf746410e5bd8c22195\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1300000000\n}, \n{", +"\n \"ETH_account\" : \"0x07af33077433d586", +"409a93b7f5b14117de72465e\",\n \"name\" : ", +"\"0x07af33077433d58640\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1190000000\n}, \n{", +"\n \"ETH_account\" : \"0x64f2e89554c226a6", +"340b12dc5f3126318783ba05\",\n \"name\" : ", +"\"0x64f2e89554c226a634\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 23832311772\n}, \n", +"{\n \"ETH_account\" : \"0x0952bcb4b35cbcf", +"cd08fdc75b581abeb84199ead\",\n \"name\" :", +" \"0x0952bcb4b35cbcfcd0\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1592761727\n}, \n", +"{\n \"ETH_account\" : \"0x535f6b9910db6a0", +"bc488e1289f38280403ed2e46\",\n \"name\" :", +" \"levyashin\",\n \"publicKey\" : \"SPH6qKF", +"muJKrKRCrFLJR5Kvi6E7wMbiN81pgLgRBRX8pkmv", +"8nmj59\",\n \"balance\" : 28307486435\n}, ", +"\n{\n \"ETH_account\" : \"0xde579306607c07", +"1254d88e4646ee25e0483d9c00\",\n \"name\" ", +": \"0xde579306607c071254\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 966000000\n}, \n", +"{\n \"ETH_account\" : \"0xbd185a16be20ba3", +"c7495f732d5af30d8f1b6e74b\",\n \"name\" :", +" \"0xbd185a16be20ba3c74\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 341000000\n}, \n{", +"\n \"ETH_account\" : \"0x31c533127068634d", +"1ab618917a501efb8fa18e7d\",\n \"name\" : ", +"\"0x31c533127068634d1a\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 158000000\n}, \n{\n", +" \"ETH_account\" : \"0x0aa0d3c6e2d24c4fb", +"37447c89612bbca6a687bd0\",\n \"name\" : \"", +"0x0aa0d3c6e2d24c4fb3\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 90000000\n}, \n{\n ", +" \"ETH_account\" : \"0x298fba3a8ad01afe85d", +"65e38036f696483a018cb\",\n \"name\" : \"0x", +"298fba3a8ad01afe85\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 942000000\n}, \n{\n ", +" \"ETH_account\" : \"0xecf3928a6d5a31258613", +"d761d9f32a4c272e4628\",\n \"name\" : \"0xe", +"cf3928a6d5a312586\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 966000000\n}, \n{\n ", +"\"ETH_account\" : \"0x1cd26ed114e0201df444c", +"e7d74020e7b0ddd4edc\",\n \"name\" : \"0x1c", +"d26ed114e0201df4\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 90000000\n}, \n{\n \"E", +"TH_account\" : \"0x25094891e5b99c803820f8d", +"39df616f9e8ebaaf7\",\n \"name\" : \"frank\"", +",\n \"publicKey\" : \"SPH7RqUF6sJfkrmnPyP", +"phTV3aQjhTPtYVSY1au3NZA6BNpXJ5JwsW\",\n ", +" \"balance\" : 404000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x2e6a4dc0031b5edb6e65ee4aa885", +"d59e95049c91\",\n \"name\" : \"0x2e6a4dc00", +"31b5edb6e\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 38888026933\n}, \n{\n \"ETH_a", +"ccount\" : \"0x2e6f75cbbe2bf7f9713301e85ce", +"5a1ff43ed52b0\",\n \"name\" : \"0x2e6f75cb", +"be2bf7f971\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 853000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x0fde94dcef2c3badd597223109f2", +"0db44cc82118\",\n \"name\" : \"0x0fde94dce", +"f2c3badd5\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 207000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x6d17ffb1b3a369cf0dc9203c90e01", +"9830a258a76\",\n \"name\" : \"0x6d17ffb1b3", +"a369cf0d\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 942000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xd83ad53c3930fc964efb12367c4681", +"5068d38118\",\n \"name\" : \"0xd83ad53c393", +"0fc964e\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 318000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x9481898b9bb13d523ba8296d90dece7", +"a955f92d1\",\n \"name\" : \"sophiassister\"", +",\n \"publicKey\" : \"SPH7qjp3vzfjsihiMzH", +"uQiXVVWaBV73VKQ66icUaK5ekAPhiDDTkf\",\n ", +" \"balance\" : 388000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x6aa2f76271304a0f590fa2e0396c", +"0c6b81729149\",\n \"name\" : \"0x6aa2f7627", +"1304a0f59\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 549000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x71301f6dcd1165cdb639acb4ce329", +"cf464977fd5\",\n \"name\" : \"0x71301f6dcd", +"1165cdb6\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 917000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x440c7efe7fdd489c39b12ad0fb8a82", +"63c062ca72\",\n \"name\" : \"0x440c7efe7fd", +"d489c39\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 506000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xc4997a42bb6965391aef468f7975fe2", +"424ac4762\",\n \"name\" : \"pynetx\",\n \"", +"publicKey\" : \"SPH6EH7xZxM3yt8anepqDw6CdV", +"jjbQVh5Y2f4s3mTAcmrs3hAVmsC\",\n \"balan", +"ce\" : 605000000\n}, \n{\n \"ETH_account\" ", +": \"0x7529e91ed76bdedff47ac323c85b09ef867", +"d0371\",\n \"name\" : \"turnstile\",\n \"p", +"ublicKey\" : \"SPH651xxw1mX61gbefDJ7Z4xkdt", +"ob6pXsPMTRyoCrfjkp2YUbWTaM\",\n \"balanc", +"e\" : 808000000\n}, \n{\n \"ETH_account\" :", +" \"0x75ada2f2490c5583ac3d4384724e18df46b1", +"92df\",\n \"name\" : \"seanb\",\n \"public", +"Key\" : \"SPH7SWby9D9pJnvC4EM4jUfjFrtT22JX", +"8tFQBFhZrNWD4zCb8JTkY\",\n \"balance\" : ", +"779000000\n}, \n{\n \"ETH_account\" : \"0xf", +"7f0d95da8a07ecbfbfc67661c3ee1a38fc18293\"", +",\n \"name\" : \"0xf7f0d95da8a07ecbfb\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"72000000\n}, \n{\n \"ETH_account\" : \"0x79", +"4fdd14ca79ac06123f8daac7cb13154819bf0e\",", +"\n \"name\" : \"0x794fdd14ca79ac0612\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 13", +"5000000\n}, \n{\n \"ETH_account\" : \"0x185", +"e04bf6f3e6df52355012fd17492986e83cbc8\",\n", +" \"name\" : \"0x185e04bf6f3e6df523\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 500", +"00000\n}, \n{\n \"ETH_account\" : \"0x1e09a", +"8dd32b029f14d286be864f0d358cb8c3977\",\n ", +" \"name\" : \"0x1e09a8dd32b029f14d\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 24700", +"0000\n}, \n{\n \"ETH_account\" : \"0x488fa7", +"51cf31050b4db0bcfae25447afa7ee98b3\",\n ", +" \"name\" : \"0x488fa751cf31050b4d\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 237000", +"000\n}, \n{\n \"ETH_account\" : \"0x885f239", +"94876dc0fbcb4c9855b1ef086d3baf07d\",\n ", +"\"name\" : \"huehuehue\",\n \"publicKey\" : ", +"\"SPH5bXPEWhNmcksXwQoaHcsfPw2C195etCejKi2", +"EA4NxPCf7NPLCb\",\n \"balance\" : 9170000", +"00\n}, \n{\n \"ETH_account\" : \"0x2038cecc", +"4a8c9b7b064a6a27f4369afcad191e51\",\n \"", +"name\" : \"0x2038cecc4a8c9b7b06\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 23000000", +"\n}, \n{\n \"ETH_account\" : \"0x795bd67f69", +"0f7a09aa6354416e2520af4235dc3e\",\n \"na", +"me\" : \"0x795bd67f690f7a09aa\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 5932378368", +"3\n}, \n{\n \"ETH_account\" : \"0xb44172eb7", +"ef330b3bebda2d9167b3a23e84b271f\",\n \"n", +"ame\" : \"0xb44172eb7ef330b3be\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 129999413", +"173\n}, \n{\n \"ETH_account\" : \"0xad468ec", +"723599917a4945624bd6216853dcae8cf\",\n ", +"\"name\" : \"0xad468ec723599917a4\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2850952", +"9976\n}, \n{\n \"ETH_account\" : \"0x307951", +"ac7bee494e71d88b37a2dc393830ede8bf\",\n ", +" \"name\" : \"0x307951ac7bee494e71\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 108335", +"58690\n}, \n{\n \"ETH_account\" : \"0x4910f", +"1047251a747ddb5d47370ac1751a7075d1d\",\n ", +" \"name\" : \"0x4910f1047251a747dd\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 16492", +"1000000\n}, \n{\n \"ETH_account\" : \"0x1a9", +"89ae02dd9a3910123b433491bbe701b875e8e\",\n", +" \"name\" : \"0x1a989ae02dd9a39101\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 133", +"775611000\n}, \n{\n \"ETH_account\" : \"0xd", +"256f0c2111c0f11f98e6477a912dd7de63c3827\"", +",\n \"name\" : \"0xd256f0c2111c0f11f9\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 8", +"000000000\n}, \n{\n \"ETH_account\" : \"0xd", +"0e81b52f633bd6ea3d85ba45cf014d5e115f0e8\"", +",\n \"name\" : \"0xd0e81b52f633bd6ea3\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 7", +"38480\n}, \n{\n \"ETH_account\" : \"0x3760a", +"24b81d6db6e44bd2eb36b532e664a660a3d\",\n ", +" \"name\" : \"ayrtonsphtx\",\n \"publicKey", +"\" : \"SPH7egcqjkzPcSyqhC2ficvus9MJcfjzRZU", +"4mDJHzpheH4PJ3oshu\",\n \"balance\" : 157", +"76891585\n}, \n{\n \"ETH_account\" : \"0x69", +"dbff4aac90d897ad02e080fce06baea78fcd0a\",", +"\n \"name\" : \"0x69dbff4aac90d897ad\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 10", +"0175783000\n}, \n{\n \"ETH_account\" : \"0x", +"224120d13c1d953d17187d76bec30b9a68c90f1a", +"\",\n \"name\" : \"0x224120d13c1d953d17\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"7600000\n}, \n{\n \"ETH_account\" : \"0xf69", +"b630c48f109d108a6305d1c350e59cd853138\",\n", +" \"name\" : \"0xf69b630c48f109d108\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 340", +"27023567\n}, \n{\n \"ETH_account\" : \"0xf7", +"a1874b132b44b4743894b7f1b1a1790b0d20de\",", +"\n \"name\" : \"0xf7a1874b132b44b474\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 10", +"00000000\n}, \n{\n \"ETH_account\" : \"0x59", +"13357900fd0208cc8ae5b6c3ae3166bb01af7e\",", +"\n \"name\" : \"0x5913357900fd0208cc\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 55", +"29\n}, \n{\n \"ETH_account\" : \"0x742d2eed", +"80286ae91264a92479e6818beb686dc7\",\n \"", +"name\" : \"0x742d2eed80286ae912\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 84158783", +"1\n}, \n{\n \"ETH_account\" : \"0x5ab6993f0", +"428275c8591a4b8338920c01e61080d\",\n \"n", +"ame\" : \"colortones\",\n \"publicKey\" : \"", +"SPH5Ri6958p4ZwwwSiYgbvxQAQUMtfokpdDYjTsw", +"BaHb8xKRRcf4b\",\n \"balance\" : 43852410", +"809\n}, \n{\n \"ETH_account\" : \"0x656c6c3", +"131bbccffe1f89863ac7e078ff893a545\",\n ", +"\"name\" : \"0x656c6c3131bbccffe1\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5020000", +"000\n}, \n{\n \"ETH_account\" : \"0xc9a195e", +"839148672c046e6f59b40cb611abe9473\",\n ", +"\"name\" : \"lanzarote\",\n \"publicKey\" : ", +"\"SPH76jCofzcTk6AEHsvticiNm9wGHoebi7PTuZd", +"pRicvQcQfgRcU1\",\n \"balance\" : 8730000", +"00\n}, \n{\n \"ETH_account\" : \"0x47dd6bfd", +"6fdf48e3b5206b42e73a159fea4cf6ca\",\n \"", +"name\" : \"0x47dd6bfd6fdf48e3b5\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 43235958", +"75\n}, \n{\n \"ETH_account\" : \"0xac97176a", +"9a94e1bc68e211402bfa6f8ea707b588\",\n \"", +"name\" : \"0xac97176a9a94e1bc68\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 29230000", +"00\n}, \n{\n \"ETH_account\" : \"0x616de584", +"4cba33d4b7c7fd2eb6009923cfe324ac\",\n \"", +"name\" : \"0x616de5844cba33d4b7\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 31840000", +"00\n}, \n{\n \"ETH_account\" : \"0x1979d05d", +"68ac05cd6104192b1ed95b7fdd91cb1b\",\n \"", +"name\" : \"0x1979d05d68ac05cd61\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 2000000\n", +"}, \n{\n \"ETH_account\" : \"0x72b65f88445", +"2f5ed444382a372674b645f5bec0e\",\n \"nam", +"e\" : \"0x72b65f884452f5ed44\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 3024\n}, \n{\n", +" \"ETH_account\" : \"0xe2d48c34d287189da", +"ba240cab3864c4f3c8e06d7\",\n \"name\" : \"", +"0xe2d48c34d287189dab\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 157\n}, \n{\n \"ET", +"H_account\" : \"0x58b6384afe02e3f84896450c", +"321edbb71aad6456\",\n \"name\" : \"0x58b63", +"84afe02e3f848\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 480000\n}, \n{\n \"ETH_ac", +"count\" : \"0x2787fc0574cc0dc26d73273dc105", +"3e42e20ce73e\",\n \"name\" : \"0x2787fc057", +"4cc0dc26d\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 8300324498\n}, \n{\n \"ETH_ac", +"count\" : \"0x2c048836e5c05b09c368dacc5fec", +"a76ccd2a1481\",\n \"name\" : \"0x2c048836e", +"5c05b09c3\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 11653533973\n}, \n{\n \"ETH_a", +"ccount\" : \"0xce5cd2f6a1a11c99fd9cd46482a", +"53c57781081fc\",\n \"name\" : \"maxb2903\",", +"\n \"publicKey\" : \"SPH7J5izWNBigXx2SfiS", +"T7mAFJbDzmEjyoXiUFi7z5B3yqyiDPbEk\",\n ", +"\"balance\" : 658089050590\n}, \n{\n \"ETH_", +"account\" : \"0x8a5df1dffc516fdb7212320f94", +"343542240c403b\",\n \"name\" : \"0x8a5df1d", +"ffc516fdb72\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1677000000\n}, \n{\n \"ETH_", +"account\" : \"0xcd5126a560e8c9d40a719e2a4d", +"c1e1a97b1a2bcc\",\n \"name\" : \"0xcd5126a", +"560e8c9d40a\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 15381000000\n}, \n{\n \"ETH", +"_account\" : \"0x15cf81d52ed94f2b5658bbb6c", +"911fca5bac7aefc\",\n \"name\" : \"0x15cf81", +"d52ed94f2b56\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 147291000000\n}, \n{\n \"E", +"TH_account\" : \"0xe4f7dac76dfef5a50f7301c", +"08a20e09aeff03d2a\",\n \"name\" : \"0xe4f7", +"dac76dfef5a50f\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1592000000\n}, \n{\n \"E", +"TH_account\" : \"0x07c87828ef36c23dc60fe3d", +"28fc22ac57d109990\",\n \"name\" : \"0x07c8", +"7828ef36c23dc6\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1592000000\n}, \n{\n \"E", +"TH_account\" : \"0xcc5f333cfab8501623f8a8c", +"a2d535ffdbdf273ab\",\n \"name\" : \"0xcc5f", +"333cfab8501623\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 38000000\n}, \n{\n \"ETH", +"_account\" : \"0xb6e6d045e2cf6131ff6e17c73", +"5a777c80146a003\",\n \"name\" : \"0xb6e6d0", +"45e2cf6131ff\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 8000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x761f0c8f8bf79a6230312c3b83e8", +"173645a5ef51\",\n \"name\" : \"0x761f0c8f8", +"bf79a6230\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 523000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xc8d3524844f31bd8e5f91236fe08c", +"1909b03a390\",\n \"name\" : \"0xc8d3524844", +"f31bd8e5\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 624325858765\n}, \n{\n \"ETH_a", +"ccount\" : \"0xdba9e4a4ddb38fa6fb05ed4584f", +"bf9587eacec7d\",\n \"name\" : \"0xdba9e4a4", +"ddb38fa6fb\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 650000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x184f6a3655b7a4e7cea9568fff393b7", +"e2d5c7a09\",\n \"name\" : \"0x184f6a3655b7", +"a4e7ce\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 276344000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x453fc2ffb0084b20f023e56b661b4ff4", +"b266f84e\",\n \"name\" : \"0x453fc2ffb0084", +"b20f0\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 115369076802\n}, \n{\n \"ETH_acco", +"unt\" : \"0x67c57c24e34d77c6a37a08b3d478cc", +"731c027229\",\n \"name\" : \"0x67c57c24e34", +"d77c6a3\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 484\n}, \n{\n \"ETH_account\" : ", +"\"0x331c3be58d38923b18d6a94af987981d79ce5", +"cb5\",\n \"name\" : \"0x331c3be58d38923b18", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 10000000000\n}, \n{\n \"ETH_account\" :", +" \"0x575cfc8b184005283ff4a0ce23ff6572596e", +"6d01\",\n \"name\" : \"reumailya\",\n \"pu", +"blicKey\" : \"SPH5JoLXpUbLTSR8NuH7XTdycknJ", +"whHyBYYhomc5gejV6kDVcivWP\",\n \"balance", +"\" : 1772283698\n}, \n{\n \"ETH_account\" :", +" \"0xe535e5bed7fde75d0c351f87c54c526e28ad", +"24a0\",\n \"name\" : \"0xe535e5bed7fde75d0", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 2220969590\n}, \n{\n \"ETH_account\" :", +" \"0x304c2fbaefa1b713d8e0ecb93f5ee5ec1966", +"fc12\",\n \"name\" : \"0x304c2fbaefa1b713d", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 2300000\n}, \n{\n \"ETH_account\" : \"0", +"xdc09d500230169cf53c1a5b9ddb6f412be95f64", +"c\",\n \"name\" : \"0xdc09d500230169cf53\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1124307195\n}, \n{\n \"ETH_account\" : \"0", +"xc1da781f9452ca9ef9a2ad53f63f0f1b2607b3d", +"b\",\n \"name\" : \"0xc1da781f9452ca9ef9\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 15190000000\n}, \n{\n \"ETH_account\" : \"", +"0x3d1dfb69de395ee6d40b629fa7e525e7d586db", +"90\",\n \"name\" : \"0x3d1dfb69de395ee6d4\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 4190360000\n}, \n{\n \"ETH_account\" : \"", +"0x48ff97d9d738c199c916b920fbc1a9cb801c09", +"7d\",\n \"name\" : \"0x48ff97d9d738c199c9\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 400000000\n}, \n{\n \"ETH_account\" : \"0", +"x9b42384cc5b66693cf85b2ed82cb713af22a166", +"a\",\n \"name\" : \"0x9b42384cc5b66693cf\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 2762588000\n}, \n{\n \"ETH_account\" : \"0", +"xaf86f8705e1d183a778577fd131529d55f860db", +"6\",\n \"name\" : \"0xaf86f8705e1d183a77\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 8188000000\n}, \n{\n \"ETH_account\" : \"0", +"x5d0a49f0869c1b31263aca2056963d824b10547", +"2\",\n \"name\" : \"0x5d0a49f0869c1b3126\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 10096916546\n}, \n{\n \"ETH_account\" : \"", +"0x60d74978b0bc2e374a53d4f9d15759a7bf7ef6", +"6c\",\n \"name\" : \"0x60d74978b0bc2e374a\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 88772610\n}, \n{\n \"ETH_account\" : \"0x", +"8dfac94eefffaccd10b2b89ebeeaa64979c5c57d", +"\",\n \"name\" : \"0x8dfac94eefffaccd10\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"331\n}, \n{\n \"ETH_account\" : \"0x89e58f9", +"35e54d44764eebae1e262835c73fdb9f0\",\n ", +"\"name\" : \"0x89e58f935e54d44764\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 3291921", +"3873\n}, \n{\n \"ETH_account\" : \"0x0bfbff", +"b96750a32424dcb22e8b3835bd6a211dc7\",\n ", +" \"name\" : \"0x0bfbffb96750a32424\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 337000", +"\n}, \n{\n \"ETH_account\" : \"0x9abc8d0ed6", +"80689ff34b24274680838f7f5961b8\",\n \"na", +"me\" : \"0x9abc8d0ed680689ff3\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1500894991", +"8\n}, \n{\n \"ETH_account\" : \"0x3ce93805c", +"837920212cbcdc119ee2bca4f86e1f6\",\n \"n", +"ame\" : \"0x3ce93805c837920212\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 249542514", +"0\n}, \n{\n \"ETH_account\" : \"0xbbda5f2d8", +"3dc72dad51097f1b5938fe51878b379\",\n \"n", +"ame\" : \"microyard\",\n \"publicKey\" : \"S", +"PH5zvYJkT7AnsUeUhSksP34S5Sxbn46mJWKwejf4", +"vk5euwT2DFts\",\n \"balance\" : 202000000", +"0\n}, \n{\n \"ETH_account\" : \"0x35555a2aa", +"6be5b1a391bd28f59290826e9fbc1e3\",\n \"n", +"ame\" : \"0x35555a2aa6be5b1a39\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 250000000", +"\n}, \n{\n \"ETH_account\" : \"0x57866bcae3", +"17b90c91f8b69c830d355e9e5951ee\",\n \"na", +"me\" : \"nocoiner\",\n \"publicKey\" : \"SPH", +"8WM2VhDKRQTeJQZKHhd7j2gAkPRco5wkrYJ4vHUn", +"ZdnGu5GJrY\",\n \"balance\" : 6954858270\n", +"}, \n{\n \"ETH_account\" : \"0x0fa39b3146a", +"63549cfba97dc466626fd173fc691\",\n \"nam", +"e\" : \"0x0fa39b3146a63549cf\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 2600078637\n", +"}, \n{\n \"ETH_account\" : \"0x688232820cd", +"bd9d3d009e8c4cbd0d8fa58588ee4\",\n \"nam", +"e\" : \"kasa\",\n \"publicKey\" : \"SPH5xnUf", +"BhCKKw7xPrw2BYeft4N5RgpE4g7YS6TVWpzhqN5U", +"8xVwE\",\n \"balance\" : 1500000000\n}, \n{", +"\n \"ETH_account\" : \"0xe10879308e6c6284", +"a60ff60ab09720c3cf5f5a1b\",\n \"name\" : ", +"\"0xe10879308e6c6284a6\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 4707000000\n}, \n{", +"\n \"ETH_account\" : \"0xa98c7ec4e9145ad1", +"95c0398c4343a2972808741d\",\n \"name\" : ", +"\"0xa98c7ec4e9145ad195\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 999728\n}, \n{\n ", +" \"ETH_account\" : \"0x882140fb9f927427f0a6", +"f996a689046d2c7fc284\",\n \"name\" : \"0x8", +"82140fb9f927427f0\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 900000000\n}, \n{\n ", +"\"ETH_account\" : \"0x2f4efbc7e38088a54f2e5", +"360aa3d27ee1dc67f84\",\n \"name\" : \"0x2f", +"4efbc7e38088a54f\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 10445668000\n}, \n{\n ", +" \"ETH_account\" : \"0xb27ded47ea0d0877915f", +"2ad81e31fdb2098283b2\",\n \"name\" : \"0xb", +"27ded47ea0d087791\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 4189981086\n}, \n{\n ", +" \"ETH_account\" : \"0x5191675b92afb4542989", +"71d34e4eff63cab531f1\",\n \"name\" : \"0x5", +"191675b92afb45429\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 3220000000\n}, \n{\n ", +" \"ETH_account\" : \"0x8c1d700bfb2a3e604c3c", +"6c42db52e77cdf71e2c0\",\n \"name\" : \"kha", +"zouk\",\n \"publicKey\" : \"SPH7WArVtqRddt", +"yNmueezBbbQ7ufXxWQr7pAZsvVe6TxQ4rnWRGj1\"", +",\n \"balance\" : 13095828100\n}, \n{\n ", +"\"ETH_account\" : \"0xa376c383024e86e48aa20", +"87afc9c7aa0cd285945\",\n \"name\" : \"jase", +"pi\",\n \"publicKey\" : \"SPH6Kb5xfXJd9xwX", +"LkYqMzfbMAKoDDciEG2q6UH7j4t1D56sHRwxv\",\n", +" \"balance\" : 5983708000\n}, \n{\n \"ET", +"H_account\" : \"0x93c6a864c150ce1b0c10bae4", +"361fc9d1f2cf1315\",\n \"name\" : \"0x93c6a", +"864c150ce1b0c\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 639995000\n}, \n{\n \"ETH", +"_account\" : \"0x1f42bd1ffa4c8dcab7777710c", +"b9b12fdace3963c\",\n \"name\" : \"0x1f42bd", +"1ffa4c8dcab7\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2630900000\n}, \n{\n \"ETH", +"_account\" : \"0x36eba6492de1fb5b27db1ea8d", +"5d124bec37843da\",\n \"name\" : \"0x36eba6", +"492de1fb5b27\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 6440317000\n}, \n{\n \"ETH", +"_account\" : \"0x88855c588d751a75894c7ad7a", +"c48e1b2b94c1529\",\n \"name\" : \"0x88855c", +"588d751a7589\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 4150000000\n}, \n{\n \"ETH", +"_account\" : \"0xd5fcd4aeee58782781977eff3", +"6c86d8f69346b87\",\n \"name\" : \"0xd5fcd4", +"aeee58782781\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2084351510\n}, \n{\n \"ETH", +"_account\" : \"0x6ed54bc56b72f1b7806ee6d46", +"a50f55f636cfbd7\",\n \"name\" : \"0x6ed54b", +"c56b72f1b780\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 427000000\n}, \n{\n \"ETH_", +"account\" : \"0xe00c87258804b45936b1f29a1c", +"b240c0482a9acb\",\n \"name\" : \"jkim\",\n ", +" \"publicKey\" : \"SPH5UcmFHCb9QiR24LJkDvL", +"BxRWAy121P2aCihhJx1UmTuu4RXnJk\",\n \"ba", +"lance\" : 500000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xc19d97336c8e7fdc1930c5e36e37c43e", +"930cd403\",\n \"name\" : \"0xc19d97336c8e7", +"fdc19\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 10197365822\n}, \n{\n \"ETH_accou", +"nt\" : \"0x3e9d5c39833fbab2bc3183d01e35707", +"882ebe306\",\n \"name\" : \"junyagi\",\n ", +"\"publicKey\" : \"SPH51SEN4D8hfqQHLukW2yNNG", +"N2wdDL4sk7C3rTECRmvuQ1At9zxi\",\n \"bala", +"nce\" : 1000000000\n}, \n{\n \"ETH_account", +"\" : \"0xc4d2836a21f036f3ca0d563c6d3f559be", +"09540bf\",\n \"name\" : \"0xc4d2836a21f036", +"f3ca\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 370790\n}, \n{\n \"ETH_account\" : ", +"\"0xf45d70f20c3ca657aa0871e856a78c5ef88c9", +"ffe\",\n \"name\" : \"0xf45d70f20c3ca657aa", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 566585\n}, \n{\n \"ETH_account\" : \"0x9", +"adde78a48f54720e321d581a79f433a5b62bba5\"", +",\n \"name\" : \"0x9adde78a48f54720e3\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 9", +"99999962\n}, \n{\n \"ETH_account\" : \"0xd5", +"88433083a771c435c3c2ea7159adb53c64f4ca\",", +"\n \"name\" : \"0xd588433083a771c435\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 40", +"0000000\n}, \n{\n \"ETH_account\" : \"0xc35", +"56557cd4edb39a2bb23311909c3d69c792790\",\n", +" \"name\" : \"0xc3556557cd4edb39a2\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 370", +"00000\n}, \n{\n \"ETH_account\" : \"0xf5ee9", +"cd2cdfbf45cbdb0c75eb253e2585787c2a2\",\n ", +" \"name\" : \"0xf5ee9cd2cdfbf45cbd\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 20600", +"00000\n}, \n{\n \"ETH_account\" : \"0x4b52e", +"3df846da006cee250ee44fad744f278f37f\",\n ", +" \"name\" : \"0x4b52e3df846da006ce\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 48001", +"18872\n}, \n{\n \"ETH_account\" : \"0x30435", +"e7d70122e2c2974e8f335030fc3fe45ba99\",\n ", +" \"name\" : \"0x30435e7d70122e2c29\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 30430", +"00000\n}, \n{\n \"ETH_account\" : \"0xe0994", +"727e1f026b4b4faeb3691f6c16f47e85e8e\",\n ", +" \"name\" : \"0xe0994727e1f026b4b4\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 75000", +"028\n}, \n{\n \"ETH_account\" : \"0xa3e36de", +"e9f3cc74b5d6f9d10fba0072dee47a074\",\n ", +"\"name\" : \"0xa3e36dee9f3cc74b5d\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1844167", +"616\n}, \n{\n \"ETH_account\" : \"0x614e153", +"b5c5a1356a6fac2606a8fb438692d77fc\",\n ", +"\"name\" : \"0x614e153b5c5a1356a6\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1960000", +"00\n}, \n{\n \"ETH_account\" : \"0x6f31bbeb", +"19ecfe8c6f26f85dea1c65844dca2ca3\",\n \"", +"name\" : \"sodakhul\",\n \"publicKey\" : \"S", +"PH8bYYJNRpyJ9snFz3NKJ3cvokiAA8aWbnjyDCpn", +"ttPaMkesVggU\",\n \"balance\" : 374008858", +"0\n}, \n{\n \"ETH_account\" : \"0xa1a7a343c", +"fdbea2fe660a057edf647f6a3a69ba1\",\n \"n", +"ame\" : \"0xa1a7a343cfdbea2fe6\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 322985998", +"34\n}, \n{\n \"ETH_account\" : \"0xc326e9f5", +"476f71c687951493b4cc27314fddda9a\",\n \"", +"name\" : \"0xc326e9f5476f71c687\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 9000000\n", +"}, \n{\n \"ETH_account\" : \"0x9ef14629381", +"d7692578b18376fd581a9dba2ca8a\",\n \"nam", +"e\" : \"0x9ef14629381d769257\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 330000000\n}", +", \n{\n \"ETH_account\" : \"0xfb3f9639cf32", +"579463eb3bc06db466639fe7cf8c\",\n \"name", +"\" : \"0xfb3f9639cf32579463\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1338250832\n}", +", \n{\n \"ETH_account\" : \"0x800b77af73c0", +"bb38184b2506a0c28743d1ac05ec\",\n \"name", +"\" : \"0x800b77af73c0bb3818\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 390051725\n},", +" \n{\n \"ETH_account\" : \"0xa6797ca5c5c44", +"818168cab11ba7fd60da4c6e7a2\",\n \"name\"", +" : \"0xa6797ca5c5c4481816\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 300000000\n}, ", +"\n{\n \"ETH_account\" : \"0xffe6d5b8fd4816", +"01f54b981e87a15edfb81e4cdc\",\n \"name\" ", +": \"zani\",\n \"publicKey\" : \"SPH5PADvjJG", +"yyTqfbNWJ56dqR37JHze7h5teeYiHqXRfaHWmUAd", +"d2\",\n \"balance\" : 4609451706\n}, \n{\n ", +" \"ETH_account\" : \"0xf0d805fe8e5005c8546", +"e6f317db1f2282b599f1c\",\n \"name\" : \"0x", +"f0d805fe8e5005c854\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 4100000000\n}, \n{\n ", +" \"ETH_account\" : \"0xceceaa548a1d18e3360", +"379b4c1f94e0202299029\",\n \"name\" : \"0x", +"ceceaa548a1d18e336\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 434000\n}, \n{\n \"E", +"TH_account\" : \"0x62809026f6a3870336db9e0", +"3210cd3bcdfdc6772\",\n \"name\" : \"beast4", +"53sphtx\",\n \"publicKey\" : \"SPH7m9XfxNw", +"sfZNUqrtCWxm6BY91UR8ARpGLu3nrBmxHmDifX2u", +"Dm\",\n \"balance\" : 478000000\n}, \n{\n ", +" \"ETH_account\" : \"0x1ce251fb7ef02e215290", +"8c1c69b4711b735fd188\",\n \"name\" : \"0x1", +"ce251fb7ef02e2152\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 6\n}, \n{\n \"ETH_acc", +"ount\" : \"0xacc2fc552147379167722f5d33271", +"c2cdf8ac352\",\n \"name\" : \"0xacc2fc5521", +"47379167\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 335000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xdf90d6940ce5811fbf53a06c142961", +"584904af7f\",\n \"name\" : \"0xdf90d6940ce", +"5811fbf\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 53502\n}, \n{\n \"ETH_account\" ", +": \"0x57db24ceec940249dc19d4f3dfb186f910b", +"99cb5\",\n \"name\" : \"0x57db24ceec940249", +"dc\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 29478939000\n}, \n{\n \"ETH_account\"", +" : \"0x70f253973c753b47a9c14ef33b31d21f3f", +"f837be\",\n \"name\" : \"0x70f253973c753b4", +"7a9\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 2412000000\n}, \n{\n \"ETH_account\"", +" : \"0x56d7f7afc8f1ca890a8b0a72043108c224", +"0e6fee\",\n \"name\" : \"0x56d7f7afc8f1ca8", +"90a\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 700000000\n}, \n{\n \"ETH_account\" ", +": \"0x6bf15fe15b94cc9e324d0e61daaeb9b25f8", +"60f62\",\n \"name\" : \"0x6bf15fe15b94cc9e", +"32\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 15813610871\n}, \n{\n \"ETH_account\"", +" : \"0x02e7847d410e59e3fddac715be2fa17b6c", +"21fa58\",\n \"name\" : \"0x02e7847d410e59e", +"3fd\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1200000000\n}, \n{\n \"ETH_account\"", +" : \"0xe1b31ecf372c5f96921478d7067da38034", +"c099ef\",\n \"name\" : \"0xe1b31ecf372c5f9", +"692\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 300000000\n}, \n{\n \"ETH_account\" ", +": \"0x0e23bac9e32bdb97eebb8aa69779cfbb9e6", +"936a5\",\n \"name\" : \"0x0e23bac9e32bdb97", +"ee\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 78833971897\n}, \n{\n \"ETH_account\"", +" : \"0x5c56241d00aaf98cd9c3f64856305bcc2d", +"261151\",\n \"name\" : \"0x5c56241d00aaf98", +"cd9\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 7707\n}, \n{\n \"ETH_account\" : \"0x", +"9a3ffd77aaf9c3cedad07c735a32ccea2ca8e63d", +"\",\n \"name\" : \"0x9a3ffd77aaf9c3ceda\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"39218670000\n}, \n{\n \"ETH_account\" : \"0", +"x5e9bf9ac68471622ed41f99293ffb907bbbab93", +"5\",\n \"name\" : \"0x5e9bf9ac68471622ed\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 466\n}, \n{\n \"ETH_account\" : \"0x5b6d9d", +"663b0c8bcf1835b8110ef3ebf476b4a382\",\n ", +" \"name\" : \"0x5b6d9d663b0c8bcf18\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 260775", +"81865\n}, \n{\n \"ETH_account\" : \"0xe2708", +"a64b111004356c3468c10cd7eecdb417b6b\",\n ", +" \"name\" : \"0xe2708a64b111004356\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 90000", +"0000\n}, \n{\n \"ETH_account\" : \"0x75c7c4", +"60097efae6993a18cd2a0b9a2f447e2985\",\n ", +" \"name\" : \"renuplex\",\n \"publicKey\" : ", +"\"SPH6xwKH74vzs9uAsHfP53kjkCLhK9tqG82K8vb", +"k7oPAWQugihTSu\",\n \"balance\" : 6000000", +"000\n}, \n{\n \"ETH_account\" : \"0x4a4e870", +"951fdf73cc48d3aab61130967e41b927f\",\n ", +"\"name\" : \"0x4a4e870951fdf73cc4\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1600000", +"00\n}, \n{\n \"ETH_account\" : \"0xb620022d", +"b191d3520a818b21da0cb2ca0e0e2d32\",\n \"", +"name\" : \"0xb620022db191d3520a\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10000000", +"0\n}, \n{\n \"ETH_account\" : \"0x6701bce31", +"5bb3a740e3e5bdc383af4e492187e44\",\n \"n", +"ame\" : \"0x6701bce315bb3a740e\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 132609000", +"\n}, \n{\n \"ETH_account\" : \"0x553e96041d", +"dd401635ea21ac6aa06ad134cdf4a3\",\n \"na", +"me\" : \"0x553e96041ddd401635\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 670000000\n", +"}, \n{\n \"ETH_account\" : \"0xadd85e7c60a", +"bf04b8ee3893c8f3c551881113350\",\n \"nam", +"e\" : \"0xadd85e7c60abf04b8e\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 183\n}, \n{\n ", +" \"ETH_account\" : \"0xedd2f4c34e65fa7c04", +"05a9b6f389169ffdb1b464\",\n \"name\" : \"0", +"xedd2f4c34e65fa7c04\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1990939195\n}, \n{\n ", +" \"ETH_account\" : \"0x11cc50e0a5509f1a8b", +"55655f633fc3ee9c9a715b\",\n \"name\" : \"0", +"x11cc50e0a5509f1a8b\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 100999999\n}, \n{\n ", +" \"ETH_account\" : \"0x257bc0e3fa17809d7ba", +"310ae6b11de9c789905f9\",\n \"name\" : \"0x", +"257bc0e3fa17809d7b\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 804071000\n}, \n{\n ", +" \"ETH_account\" : \"0x406ee2fea103fb1ed05c", +"6373ab43f9f84afe4c87\",\n \"name\" : \"0x4", +"06ee2fea103fb1ed0\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 134000000\n}, \n{\n ", +"\"ETH_account\" : \"0xa5a041823bc35f46dc1e6", +"6198559c1174780159e\",\n \"name\" : \"wiet", +"skevdw\",\n \"publicKey\" : \"SPH8Jycjf8xB", +"Svadoht746maEE3nMs1f8QTQ1wJcmaqsmEhEpXDe", +"W\",\n \"balance\" : 11046869942\n}, \n{\n ", +" \"ETH_account\" : \"0x9f3721a197df455120a", +"a8ae087282dd24c6da0e1\",\n \"name\" : \"0x", +"9f3721a197df455120\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 350000000\n}, \n{\n ", +" \"ETH_account\" : \"0x3353ca67561e53e8ee50", +"9b9350280122efc8dba9\",\n \"name\" : \"0x3", +"353ca67561e53e8ee\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1027587606\n}, \n{\n ", +" \"ETH_account\" : \"0x61cdcb509c9d07a436bb", +"d86047f131f744302f16\",\n \"name\" : \"tob", +"ias\",\n \"publicKey\" : \"SPH7tVfa83DXP5n", +"LzxqHSnwF7beVuBtxATfbAaZq77vwZBbCQYRzn\",", +"\n \"balance\" : 5146338801\n}, \n{\n \"E", +"TH_account\" : \"0x15e72c4f04c66630ce5202e", +"0fb85b9a1e20ee728\",\n \"name\" : \"0x15e7", +"2c4f04c66630ce\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 302527\n}, \n{\n \"ETH_a", +"ccount\" : \"0xeec52a7db6b7da9e0394019872b", +"63d2df86db31e\",\n \"name\" : \"0xeec52a7d", +"b6b7da9e03\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 170000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x4ae86d5420315b54cfce519e1df3", +"55a5c5a8ed16\",\n \"name\" : \"0x4ae86d542", +"0315b54cf\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 5550000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xd55ae3f2def0f44bd6f1975ea904", +"e6aa89580aa8\",\n \"name\" : \"0xd55ae3f2d", +"ef0f44bd6\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1575779716\n}, \n{\n \"ETH_ac", +"count\" : \"0x47a7b093f22dacbdebc39a42f8ca", +"f4dc6ad071a4\",\n \"name\" : \"josip\",\n ", +" \"publicKey\" : \"SPH5pygoj6XXKQVYG6N9hMzL", +"7e1WxiwzPkkENqaQDNoVE8i5sad3B\",\n \"bal", +"ance\" : 310151596\n}, \n{\n \"ETH_account", +"\" : \"0x82e392fdd15ad51595c91db8ffa3f70f2", +"ec44d7d\",\n \"name\" : \"neoanderson\",\n ", +" \"publicKey\" : \"SPH4uRfW1EP3rAPN3QuF8Gt", +"jiMq9j6KerVYaGDWx38yxj41SawjuD\",\n \"ba", +"lance\" : 800195000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x523d2e112e983ed1a0009317651385e8", +"3d4fca8f\",\n \"name\" : \"0x523d2e112e983", +"ed1a0\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 9707036387\n}, \n{\n \"ETH_accoun", +"t\" : \"0x8862d35221da83c3f97c8f58f825fa60", +"3074d289\",\n \"name\" : \"0x8862d35221da8", +"3c3f9\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 160000000\n}, \n{\n \"ETH_account", +"\" : \"0xf46793032804ec2978d761b7986b90b30", +"166a659\",\n \"name\" : \"0xf46793032804ec", +"2978\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 50920000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x7ccad5cd2d653ba8dc19d5692ea19357", +"a52bbf99\",\n \"name\" : \"0x7ccad5cd2d653", +"ba8dc\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 3641118905\n}, \n{\n \"ETH_accoun", +"t\" : \"0x4340603e964ff773479b35e2745bb85b", +"78aaf2f9\",\n \"name\" : \"0x4340603e964ff", +"77347\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1249999580\n}, \n{\n \"ETH_accoun", +"t\" : \"0x3e512407bb50223e7436825c526a766c", +"f2587de6\",\n \"name\" : \"0x3e512407bb502", +"23e74\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1449483455\n}, \n{\n \"ETH_accoun", +"t\" : \"0x9dc0a2225bd353caec1dc888a173f2b8", +"2e898dc6\",\n \"name\" : \"0x9dc0a2225bd35", +"3caec\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 3948338000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xf0ba4b6ccb316148e15d6b7fa7099afc", +"b3da30df\",\n \"name\" : \"0xf0ba4b6ccb316", +"148e1\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 4190552000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xdfefb9e5e3cd5c09a177a26563963847", +"030c018d\",\n \"name\" : \"cryptodeek\",\n ", +" \"publicKey\" : \"SPH5HxaybmPC2A8KTTCd7Fd", +"R428ikncGy9b1toZAmDvk1pRMaWUzX\",\n \"ba", +"lance\" : 1606716371\n}, \n{\n \"ETH_accou", +"nt\" : \"0x469ed7a58a5441ccacb12b8be141912", +"cba136ed8\",\n \"name\" : \"0x469ed7a58a54", +"41ccac\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 5202594\n}, \n{\n \"ETH_account\"", +" : \"0x6d5d07fb300555404bf951a9497d862bb7", +"400e28\",\n \"name\" : \"0x6d5d07fb3005554", +"04b\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1035000000\n}, \n{\n \"ETH_account\"", +" : \"0xcd6bdd30781a6bf9bda8e45b0ef4ace998", +"018c10\",\n \"name\" : \"0xcd6bdd30781a6bf", +"9bd\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 6699\n}, \n{\n \"ETH_account\" : \"0x", +"7379ab33a4b0cd4368646f0961fdf3de775cb312", +"\",\n \"name\" : \"0x7379ab33a4b0cd4368\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1155994600\n}, \n{\n \"ETH_account\" : \"0x", +"5060e44fba63708c3c557fe2e006b5a6f19fbcde", +"\",\n \"name\" : \"0x5060e44fba63708c3c\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"10190000000\n}, \n{\n \"ETH_account\" : \"0", +"x11225d3635f283256c55929f4864ef7f54ee85c", +"b\",\n \"name\" : \"0x11225d3635f283256c\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1237881\n}, \n{\n \"ETH_account\" : \"0xd9", +"ad92fac58fd51d42f44629e79ebec956a6a948\",", +"\n \"name\" : \"0xd9ad92fac58fd51d42\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 92", +"00000\n}, \n{\n \"ETH_account\" : \"0xb05ee", +"6c1842a8f3a08180f97d8704204cf02ae5f\",\n ", +" \"name\" : \"0xb05ee6c1842a8f3a08\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 12492", +"92821\n}, \n{\n \"ETH_account\" : \"0x608cb", +"60905efc0b59ebad8a9c650a410fead95a0\",\n ", +" \"name\" : \"sphtxcontract\",\n \"publicK", +"ey\" : \"SPH8f2f36GgwXs58G6LKUDVwiLfPSM15L", +"qR3Y2KCjgTAnTwXBEr6Y\",\n \"balance\" : 3", +"16422586362\n}, \n{\n \"ETH_account\" : \"0", +"x7b0840e7933ef2f8ab8779280c6dd5a54bcc8bb", +"e\",\n \"name\" : \"0x7b0840e7933ef2f8ab\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1718809621\n}, \n{\n \"ETH_account\" : \"0", +"xa240e0ffa7471ed3eef737e4cfa33ccc91e5d02", +"c\",\n \"name\" : \"0xa240e0ffa7471ed3ee\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 21560000000\n}, \n{\n \"ETH_account\" : \"", +"0x771f27c0b04ffcaf019b7b09adc8450964b508", +"16\",\n \"name\" : \"0x771f27c0b04ffcaf01\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 320000\n}, \n{\n \"ETH_account\" : \"0x49", +"d617a3696fb59d77efa8519fb13464298eebf7\",", +"\n \"name\" : \"nuevosphtxagus\",\n \"pub", +"licKey\" : \"SPH6czk7RGquYB3A8An2JtoKvzn4h", +"A19vpqe2dYzuTp55XiwB5FoK\",\n \"balance\"", +" : 834303000\n}, \n{\n \"ETH_account\" : \"", +"0x96e12b01e3d61dcac6a8867736db1c59eb3946", +"64\",\n \"name\" : \"0x96e12b01e3d61dcac6\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 187000000\n}, \n{\n \"ETH_account\" : \"0", +"xeaf8cd4be966ce89e7aaa3a8c29827c02cbafba", +"6\",\n \"name\" : \"0xeaf8cd4be966ce89e7\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 528000000\n}, \n{\n \"ETH_account\" : \"0x", +"16d5a9a34e93577b8247f03a60985d7c0dc69a65", +"\",\n \"name\" : \"0x16d5a9a34e93577b82\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"200000000\n}, \n{\n \"ETH_account\" : \"0x9", +"8ee52aef4c1a2bf16a84fc205ce96b8af50cb9a\"", +",\n \"name\" : \"0x98ee52aef4c1a2bf16\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"00000000\n}, \n{\n \"ETH_account\" : \"0xeb", +"029304318426c37e2a8ea25af527a2e69c385d\",", +"\n \"name\" : \"0xeb029304318426c37e\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 19", +"00000000\n}, \n{\n \"ETH_account\" : \"0xc7", +"e6f881d9ce2f5e75fc393ca51668d10a1da3d9\",", +"\n \"name\" : \"0xc7e6f881d9ce2f5e75\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 10", +"0\n}, \n{\n \"ETH_account\" : \"0xd030afdca", +"8820d8290970f2de9a6c0acd789767a\",\n \"n", +"ame\" : \"jaguarftype\",\n \"publicKey\" : ", +"\"SPH5SG8GfBuHWbWh8yiet7ckhN4K9PUahHgjW1D", +"m5UPLFnoV7hrge\",\n \"balance\" : 2963000", +"0000\n}, \n{\n \"ETH_account\" : \"0xf1b1eb", +"06cba11daf50f254508dec5702604efdf2\",\n ", +" \"name\" : \"0xf1b1eb06cba11daf50\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 118632", +"47668\n}, \n{\n \"ETH_account\" : \"0x4a23f", +"429782cda1431a46a9447bc1ae879fec1a8\",\n ", +" \"name\" : \"0x4a23f429782cda1431\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 15920", +"000000\n}, \n{\n \"ETH_account\" : \"0xa186", +"607d3ff30b843c146895f397d505570ae8b3\",\n ", +" \"name\" : \"0xa186607d3ff30b843c\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1468", +"000000\n}, \n{\n \"ETH_account\" : \"0x56a6", +"d2233d4ae1ea8f7aea3f9563cbe6b8d5716d\",\n ", +" \"name\" : \"0x56a6d2233d4ae1ea8f\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3087", +"48755\n}, \n{\n \"ETH_account\" : \"0x14b61", +"96578dc1df30d9561ba49d34d2b9ad41d04\",\n ", +" \"name\" : \"0x14b6196578dc1df30d\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 2000\n", +"}, \n{\n \"ETH_account\" : \"0x37686889fa0", +"ab45af5d0045763333128f7c1d352\",\n \"nam", +"e\" : \"0x37686889fa0ab45af5\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 15168853933", +"9\n}, \n{\n \"ETH_account\" : \"0x3ee6405f2", +"01aef10845408f680cb2459f9111e01\",\n \"n", +"ame\" : \"0x3ee6405f201aef1084\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 320000000", +"0\n}, \n{\n \"ETH_account\" : \"0xa373b4000", +"a9918bd34c5b90999f6197f9fcfb80f\",\n \"n", +"ame\" : \"0xa373b4000a9918bd34\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 380000000", +"0\n}, \n{\n \"ETH_account\" : \"0xb0486ed0f", +"ff380da568f3434e7ad00833505252e\",\n \"n", +"ame\" : \"0xb0486ed0fff380da56\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 150658895", +"7\n}, \n{\n \"ETH_account\" : \"0x537ed40b8", +"3fa6cb21b3d0e9c8cbd8df44efaf019\",\n \"n", +"ame\" : \"0x537ed40b83fa6cb21b\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 457572000", +"\n}, \n{\n \"ETH_account\" : \"0x774698b2ae", +"12f43f14340ecb04507bbcc06ba773\",\n \"na", +"me\" : \"0x774698b2ae12f43f14\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 5000000000", +"\n}, \n{\n \"ETH_account\" : \"0xe9229dcb3c", +"e019eb8ffa3580e0774c5f407307e7\",\n \"na", +"me\" : \"0xe9229dcb3ce019eb8f\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1103000000", +"\n}, \n{\n \"ETH_account\" : \"0x454f2f38ea", +"de8d8ee9933036907012834e0aec53\",\n \"na", +"me\" : \"0x454f2f38eade8d8ee9\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 800000000\n", +"}, \n{\n \"ETH_account\" : \"0x1d72565f93e", +"446901eab03492272c290106c78e2\",\n \"nam", +"e\" : \"0x1d72565f93e446901e\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 10000000000", +"\n}, \n{\n \"ETH_account\" : \"0x338e4c1089", +"490667365b2729553abefe7d9adf8f\",\n \"na", +"me\" : \"0x338e4c108949066736\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1689677000", +"\n}, \n{\n \"ETH_account\" : \"0x00c36d99f0", +"7e4ca185113ee2c2f49010e775bb6a\",\n \"na", +"me\" : \"0x00c36d99f07e4ca185\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 881000\n}, ", +"\n{\n \"ETH_account\" : \"0x578051d9eb7153", +"19f40e8d875ea04759e694f589\",\n \"name\" ", +": \"0x578051d9eb715319f4\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 360000000\n}, \n", +"{\n \"ETH_account\" : \"0x512a2e2ccc216b2", +"ffd5df47f528aedfaad93ff5d\",\n \"name\" :", +" \"0x512a2e2ccc216b2ffd\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 547497787\n}, \n{", +"\n \"ETH_account\" : \"0x51aa0eaed9eb53a2", +"d4ab898092f48ebbe9e46695\",\n \"name\" : ", +"\"0x51aa0eaed9eb53a2d4\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 250000000\n}, \n{\n", +" \"ETH_account\" : \"0x04e4830d1121362e3", +"9f8dbf6d6c4732214252bf1\",\n \"name\" : \"", +"0x04e4830d1121362e39\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 79581541\n}, \n{\n ", +" \"ETH_account\" : \"0x2db9492eaae4204ab24", +"a2b34691a72e964eca626\",\n \"name\" : \"0x", +"2db9492eaae4204ab2\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 910489000\n}, \n{\n ", +" \"ETH_account\" : \"0xa07a7f8c1ed3cfe904cb", +"f35122f4b318a7844714\",\n \"name\" : \"0xa", +"07a7f8c1ed3cfe904\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 4838396699\n}, \n{\n ", +" \"ETH_account\" : \"0x6316543c8e4bfad63b55", +"d98d37c8181a82961004\",\n \"name\" : \"0x6", +"316543c8e4bfad63b\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 316215000\n}, \n{\n ", +"\"ETH_account\" : \"0xee6db5689496980aa57e5", +"7a04df6b562bf42c146\",\n \"name\" : \"cole", +"ystokens\",\n \"publicKey\" : \"SPH7VZDy9W", +"oxs6AZa4VNAWPkktpWJnwZbpyrh9RN3NxmS8NPHb", +"6My\",\n \"balance\" : 105550897\n}, \n{\n ", +" \"ETH_account\" : \"0x27ffaed18b237f5b915", +"f3a16d42490883a116690\",\n \"name\" : \"0x", +"27ffaed18b237f5b91\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 36515845012\n}, \n{\n ", +" \"ETH_account\" : \"0x5a27df861901fe1017", +"9465031365520800617146\",\n \"name\" : \"0", +"x5a27df861901fe1017\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 227\n}, \n{\n \"ETH", +"_account\" : \"0xa45b4521d5372ec95b55f0c3d", +"aebc02b605c055d\",\n \"name\" : \"sphtxtie", +"s\",\n \"publicKey\" : \"SPH8P7eDppjYHRzP8", +"Rx221C2v28ZNj5wBNq8QsDiidHGhfwG5SBtY\",\n ", +" \"balance\" : 17152000000\n}, \n{\n \"ET", +"H_account\" : \"0x4297075be13f90a4e53fee1a", +"a75e085e5c9cfa8f\",\n \"name\" : \"0x42970", +"75be13f90a4e5\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 130000000\n}, \n{\n \"ETH", +"_account\" : \"0xc72618db426e4f5d9eef4ef17", +"3fad1cc9623ab61\",\n \"name\" : \"0xc72618", +"db426e4f5d9e\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 5483123521\n}, \n{\n \"ETH", +"_account\" : \"0x4210532e10693b9e2b6b293ba", +"410bdb5bc756bcb\",\n \"name\" : \"0x421053", +"2e10693b9e2b\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xd633cc44039508d8b5f75dd46803", +"bed366f43878\",\n \"name\" : \"0xd633cc440", +"39508d8b5\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 468000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xeced8d321efedee2a4e2dc3e1df1f", +"48936c693af\",\n \"name\" : \"0xeced8d321e", +"fedee2a4\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 8091572876\n}, \n{\n \"ETH_acc", +"ount\" : \"0x23b22838a286a0fb3a8533084eb08", +"934371fdb06\",\n \"name\" : \"0x23b22838a2", +"86a0fb3a\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 6615\n}, \n{\n \"ETH_account\" ", +": \"0xb202d9572061479227ed5f81e60fea6d742", +"bb515\",\n \"name\" : \"0xb202d95720614792", +"27\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 355000000\n}, \n{\n \"ETH_account\" :", +" \"0x1e7ff1b31586d44b69cbde9bd859ab060e91", +"2217\",\n \"name\" : \"0x1e7ff1b31586d44b6", +"9\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1599514000\n}, \n{\n \"ETH_account\" :", +" \"0x481ac7ebbad3c827ace622e73d2ed9277984", +"91ad\",\n \"name\" : \"0x481ac7ebbad3c827a", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 6293051600\n}, \n{\n \"ETH_account\" :", +" \"0xee4c44c7c07de2291163918b672c1658e18a", +"0173\",\n \"name\" : \"richardmast\",\n \"", +"publicKey\" : \"SPH5fenke31jKciDoC5zaK91PP", +"U3D2GwgwNsKHoWrnHKdpDTVecFw\",\n \"balan", +"ce\" : 2875000000\n}, \n{\n \"ETH_account\"", +" : \"0x41893f963ee0b3b061b9f49c549dfab921", +"133397\",\n \"name\" : \"0x41893f963ee0b3b", +"061\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 3700000000\n}, \n{\n \"ETH_account\"", +" : \"0x512dfdd124871b87232d8d58a065175657", +"2e7a34\",\n \"name\" : \"0x512dfdd124871b8", +"723\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 719999532\n}, \n{\n \"ETH_account\" ", +": \"0x1915727079bf924d0945c640bd992119c4e", +"64653\",\n \"name\" : \"0x1915727079bf924d", +"09\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 100000000\n}, \n{\n \"ETH_account\" :", +" \"0xfc89b52b09d30cb61d9907c9d7b0af27c49b", +"1ba1\",\n \"name\" : \"0xfc89b52b09d30cb61", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 3936663974\n}, \n{\n \"ETH_account\" :", +" \"0xbc2beaca444af161d19e5f9c441c934ccf18", +"4633\",\n \"name\" : \"0xbc2beaca444af161d", +"1\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 326792\n}, \n{\n \"ETH_account\" : \"0x", +"b3096dfe05877ce1d2d96fa0a579ec9c13f1553a", +"\",\n \"name\" : \"proxyeaaah\",\n \"publi", +"cKey\" : \"SPH69Aqb1DiaY7Bu3XMbHHT7CsmBP36", +"fu3tGMRosP6LCZG4Pc8nXi\",\n \"balance\" :", +" 922424817\n}, \n{\n \"ETH_account\" : \"0x", +"cfe4d8e9120d9b4b72fbdce947544c869e15e38a", +"\",\n \"name\" : \"cryptospecter\",\n \"pu", +"blicKey\" : \"SPH6VEU5yCBF245YPZM3NcPwC48T", +"1BCfZPZcrJon1HDCnbLk8WR88\",\n \"balance", +"\" : 10450285900\n}, \n{\n \"ETH_account\" ", +": \"0xa03d290463622a3d538f467fd945c4586c0", +"08f46\",\n \"name\" : \"smtsphtx\",\n \"pu", +"blicKey\" : \"SPH8ARDvtf4DboexdoYYUL4QVkmL", +"586Xu8r6oXQo2vKCgasA6AQwv\",\n \"balance", +"\" : 14587290000\n}, \n{\n \"ETH_account\" ", +": \"0x49244d8fb0470ea053a31fd1ab758701f14", +"66a01\",\n \"name\" : \"0x49244d8fb0470ea0", +"53\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 3133410893\n}, \n{\n \"ETH_account\" ", +": \"0x5dcf4010ad5141bc8490a287f2d9823bceb", +"5994b\",\n \"name\" : \"0x5dcf4010ad5141bc", +"84\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 257615000\n}, \n{\n \"ETH_account\" :", +" \"0x13f561307999b796c234b0cace1722d16fcd", +"9198\",\n \"name\" : \"0x13f561307999b796c", +"2\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 986000000\n}, \n{\n \"ETH_account\" : ", +"\"0x53e1b4d37903b6bbd9c0bfa9046492af94911", +"849\",\n \"name\" : \"0x53e1b4d37903b6bbd9", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1818000000\n}, \n{\n \"ETH_account\" : ", +"\"0x5182531e3ebeb35af19e00fa5de03a12d46eb", +"a72\",\n \"name\" : \"0x5182531e3ebeb35af1", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1253025910000\n}, \n{\n \"ETH_account\"", +" : \"0x822e0195e1281cedd71721bf6ea27fadd1", +"bc4232\",\n \"name\" : \"0x822e0195e1281ce", +"dd7\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 6671512873\n}, \n{\n \"ETH_account\"", +" : \"0xa8214a241156bcc4f4ff0cb6ed7c0f3882", +"f01a81\",\n \"name\" : \"0xa8214a241156bcc", +"4f4\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 300000000\n}, \n{\n \"ETH_account\" ", +": \"0x9cd6d787c0576192c7b5d9101b729cf03fb", +"c7489\",\n \"name\" : \"0x9cd6d787c0576192", +"c7\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 2026237766\n}, \n{\n \"ETH_account\" ", +": \"0x2f1029d0ab3c2a6051d9045116071abbe83", +"34e02\",\n \"name\" : \"0x2f1029d0ab3c2a60", +"51\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 2109016724\n}, \n{\n \"ETH_account\" ", +": \"0x3d5cbfaed73f610cd268155c3e93b0ef622", +"f3e02\",\n \"name\" : \"0x3d5cbfaed73f610c", +"d2\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 253494553\n}, \n{\n \"ETH_account\" :", +" \"0xf26f9daafc7d0a0c239bb85dd13a59e5820f", +"7b76\",\n \"name\" : \"0xf26f9daafc7d0a0c2", +"3\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 922000000\n}, \n{\n \"ETH_account\" : ", +"\"0x984285d141a268d29a4eb519523700b02093f", +"0bf\",\n \"name\" : \"0x984285d141a268d29a", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 50000000\n}, \n{\n \"ETH_account\" : \"0", +"x1c5dc633dae4ef6cb2fc9661030a89c185d715f", +"4\",\n \"name\" : \"0x1c5dc633dae4ef6cb2\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 3157191000\n}, \n{\n \"ETH_account\" : \"0", +"xd475f759797bd5814623e5039b0e14e633172f4", +"7\",\n \"name\" : \"0xd475f759797bd58146\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1620000000\n}, \n{\n \"ETH_account\" : \"0", +"x61c025c2b428106f2fe9664ac593fcca17adef6", +"1\",\n \"name\" : \"0x61c025c2b428106f2f\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 2570000\n}, \n{\n \"ETH_account\" : \"0x92", +"1eae66ed72868617c81212e6948484dad5542f\",", +"\n \"name\" : \"0x921eae66ed72868617\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 45", +"0000\n}, \n{\n \"ETH_account\" : \"0x4d42d9", +"352702c9731509bdbc14c00e7a0337d0cd\",\n ", +" \"name\" : \"0x4d42d9352702c97315\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 300353", +"7000\n}, \n{\n \"ETH_account\" : \"0x4dac26", +"2d9cd09e20743cd3fc1ba9bc9985703feb\",\n ", +" \"name\" : \"0x4dac262d9cd09e2074\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 168372", +"23908\n}, \n{\n \"ETH_account\" : \"0x60b7d", +"f1a2fcba4b58fbd312a168832450b6118aa\",\n ", +" \"name\" : \"0x60b7df1a2fcba4b58f\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 40400", +"000\n}, \n{\n \"ETH_account\" : \"0xf491f97", +"32157b008c3d8cc4711bd8dc3299e32ca\",\n ", +"\"name\" : \"0xf491f9732157b008c3\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 7681106", +"60\n}, \n{\n \"ETH_account\" : \"0x8e314df7", +"be0c8f63c89ca4c15d7d460885023e82\",\n \"", +"name\" : \"0x8e314df7be0c8f63c8\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 70100000", +"0\n}, \n{\n \"ETH_account\" : \"0x1d044e17b", +"50664d1e0a50b979ea5fdaa9ce7c57e\",\n \"n", +"ame\" : \"ouanling\",\n \"publicKey\" : \"SP", +"H8Ah98kKytad2BUikwPAzzyR1EVPACDR2vY7fZrs", +"v2YTChQvwpj\",\n \"balance\" : 1594422267", +"1\n}, \n{\n \"ETH_account\" : \"0x074911916", +"aeef483e1e19b84c1ae17c1a4bcfcf7\",\n \"n", +"ame\" : \"0x074911916aeef483e1\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 732200673", +"3\n}, \n{\n \"ETH_account\" : \"0xd336c0c7c", +"d8387beec4619afce12a386f0083b8e\",\n \"n", +"ame\" : \"0xd336c0c7cd8387beec\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 550000000", +"0\n}, \n{\n \"ETH_account\" : \"0xdd2dacb04", +"8b77b357bfba739719c624ab12f296a\",\n \"n", +"ame\" : \"0xdd2dacb048b77b357b\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 320001000", +"\n}, \n{\n \"ETH_account\" : \"0x07adfccd49", +"6ce8bf558920fefa7ad2f72b38a022\",\n \"na", +"me\" : \"0x07adfccd496ce8bf55\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 315000000\n", +"}, \n{\n \"ETH_account\" : \"0x8a672a65e41", +"414be2b923b995604ca4815cabd91\",\n \"nam", +"e\" : \"0x8a672a65e41414be2b\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 3600151636\n", +"}, \n{\n \"ETH_account\" : \"0x41da359c643", +"e96605b2786cc23bf7c6fc66502ef\",\n \"nam", +"e\" : \"0x41da359c643e96605b\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 60062\n}, \n{", +"\n \"ETH_account\" : \"0xfb39189af876e762", +"c71d6c3e741893df226cedd6\",\n \"name\" : ", +"\"0xfb39189af876e762c7\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 532228000\n}, \n{\n", +" \"ETH_account\" : \"0xe6e73949d498ffee5", +"08876f916b61da705da38e7\",\n \"name\" : \"", +"0xe6e73949d498ffee50\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 330000000\n}, \n{\n ", +" \"ETH_account\" : \"0x867a689e5851807660", +"3cc018832d81c1ceff2d08\",\n \"name\" : \"0", +"x867a689e5851807660\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 323041000\n}, \n{\n ", +" \"ETH_account\" : \"0x327b15f7e7af17e689f", +"dafa0a33930cc3bc83f9e\",\n \"name\" : \"0x", +"327b15f7e7af17e689\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1533730642\n}, \n{\n ", +" \"ETH_account\" : \"0xd0b4e7af96d5ff1b819", +"2880d2eb944e31e894b60\",\n \"name\" : \"0x", +"d0b4e7af96d5ff1b81\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 97031000000\n}, \n{\n ", +" \"ETH_account\" : \"0xea7ba83434907f1272", +"9e0e315a8921ac1d3b6761\",\n \"name\" : \"0", +"xea7ba83434907f1272\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 900000\n}, \n{\n \"", +"ETH_account\" : \"0xcf1a0cf865af1859da476d", +"9573dd834febe9fb95\",\n \"name\" : \"0xcf1", +"a0cf865af1859da\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 8134999644\n}, \n{\n \"", +"ETH_account\" : \"0x7c847caaa4275e24c4bfa0", +"ec3d39580a45f51f21\",\n \"name\" : \"0x7c8", +"47caaa4275e24c4\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1463143000\n}, \n{\n \"", +"ETH_account\" : \"0x04117b61a6f5b9e1ce0caf", +"4144d7ff78822bc8df\",\n \"name\" : \"0x041", +"17b61a6f5b9e1ce\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2069000000\n}, \n{\n \"", +"ETH_account\" : \"0xceb7c70882f5ed95262e93", +"89cccd1372687fb91c\",\n \"name\" : \"0xceb", +"7c70882f5ed9526\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 919116988\n}, \n{\n \"E", +"TH_account\" : \"0x50adc911a97e2044f8feb04", +"f23e4ea3c58bab524\",\n \"name\" : \"0x50ad", +"c911a97e2044f8\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 934699\n}, \n{\n \"ETH_a", +"ccount\" : \"0xf6e43ac99b8c6cd4fc192792b7c", +"11a4a1c3be518\",\n \"name\" : \"0xf6e43ac9", +"9b8c6cd4fc\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 4000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x2da0501411ee854a581b54257e21f3", +"1f447292a7\",\n \"name\" : \"0x2da0501411e", +"e854a58\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 53333498000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x3833dda0aeb6947b98ce454d89366", +"cba8cc55528\",\n \"name\" : \"0x3833dda0ae", +"b6947b98\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 26645626266\n}, \n{\n \"ETH_ac", +"count\" : \"0xcfcddd5ff45ccde7ff152dcd295a", +"f98736fdd060\",\n \"name\" : \"0xcfcddd5ff", +"45ccde7ff\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1619\n}, \n{\n \"ETH_account\"", +" : \"0xe912c6fcfa0617fd15d91d3d587ce24709", +"de2584\",\n \"name\" : \"0xe912c6fcfa0617f", +"d15\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 2056074000\n}, \n{\n \"ETH_account\"", +" : \"0x23e7cdb7f0e299cef3d13393746c0078b8", +"8b197f\",\n \"name\" : \"0x23e7cdb7f0e299c", +"ef3\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 52000000\n}, \n{\n \"ETH_account\" :", +" \"0x28a9e094100c2c597ce92c121e7683e0958b", +"2b3f\",\n \"name\" : \"0x28a9e094100c2c597", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 410000000\n}, \n{\n \"ETH_account\" : ", +"\"0x6164c37069f523fc5eea77d07abc8e97eb886", +"851\",\n \"name\" : \"0x6164c37069f523fc5e", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 10000000\n}, \n{\n \"ETH_account\" : \"0", +"x7071ff266f4fa5fa88494c459982a082d390602", +"d\",\n \"name\" : \"0x7071ff266f4fa5fa88\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 649772821\n}, \n{\n \"ETH_account\" : \"0x", +"be1f2da702edf011532bdc4964ee2605048c638a", +"\",\n \"name\" : \"0xbe1f2da702edf01153\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"477540000\n}, \n{\n \"ETH_account\" : \"0xe", +"777efc0d0e0200a1e8db5e7f58fc683abb6d551\"", +",\n \"name\" : \"0xe777efc0d0e0200a1e\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"644000000\n}, \n{\n \"ETH_account\" : \"0xc", +"12013552f0a14d536c27ad62b00637a3f197d22\"", +",\n \"name\" : \"0xc12013552f0a14d536\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"8200000000\n}, \n{\n \"ETH_account\" : \"0x", +"75314dcf8353dc82b16eb69f8abeacf0ff5a8a05", +"\",\n \"name\" : \"0x75314dcf8353dc82b1\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"499997231\n}, \n{\n \"ETH_account\" : \"0x3", +"333ba9b876edaf7a650c292661557dc2eda6885\"", +",\n \"name\" : \"0x3333ba9b876edaf7a6\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"000000000\n}, \n{\n \"ETH_account\" : \"0x0", +"a2278692568548a46dad23705f41fba42e64be8\"", +",\n \"name\" : \"0x0a2278692568548a46\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"0571000000\n}, \n{\n \"ETH_account\" : \"0x", +"7c1b602846df472db01f444bf10b39d0e378d7ea", +"\",\n \"name\" : \"kohlwitmer\",\n \"publi", +"cKey\" : \"SPH6izPyBruPnqDUGCLd4LWYDoztr4R", +"ugNh5A3TA7ww1bBeRqbsCs\",\n \"balance\" :", +" 10618724800\n}, \n{\n \"ETH_account\" : \"", +"0x7bf416e73901a8d7b61c3b3a6dc659920e2333", +"0c\",\n \"name\" : \"0x7bf416e73901a8d7b6\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 11766187400\n}, \n{\n \"ETH_account\" : ", +"\"0x8b40bf369446ab4fe70b118af2183b52cb71e", +"c48\",\n \"name\" : \"0x8b40bf369446ab4fe7", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 10577189730\n}, \n{\n \"ETH_account\" :", +" \"0xfd3b1c7b54c76e2e5848a6470f29f9ab9e5e", +"f359\",\n \"name\" : \"0xfd3b1c7b54c76e2e5", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1160000000\n}, \n{\n \"ETH_account\" :", +" \"0x4c0be4475d9786f0fe2f1fc725b86e04767b", +"1156\",\n \"name\" : \"0x4c0be4475d9786f0f", +"e\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 20\n}, \n{\n \"ETH_account\" : \"0x34e1", +"b6221e54e63148567b704e9a1e9d74eca501\",\n ", +" \"name\" : \"0x34e1b6221e54e63148\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1200", +"00000\n}, \n{\n \"ETH_account\" : \"0x4642e", +"d78aca2d7f291772dafcfa86916228dba27\",\n ", +" \"name\" : \"0x4642ed78aca2d7f291\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 95\n},", +" \n{\n \"ETH_account\" : \"0x54a452d20d94a", +"d661387f9b3be4f2f8a24fbde0b\",\n \"name\"", +" : \"0x54a452d20d94ad6613\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 255000000\n}, ", +"\n{\n \"ETH_account\" : \"0x0e365a583d35e2", +"a522080ea50a5fb10358b133cd\",\n \"name\" ", +": \"0x0e365a583d35e2a522\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1000000\n}, \n{\n", +" \"ETH_account\" : \"0x3490585faff0484f8", +"d258ffbb3482a4d80fe1a37\",\n \"name\" : \"", +"0x3490585faff0484f8d\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 221045140\n}, \n{\n ", +" \"ETH_account\" : \"0x73a6439e7d2cab7d20", +"61f4dc3d3a1e9e7a75f317\",\n \"name\" : \"0", +"x73a6439e7d2cab7d20\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 6450000000\n}, \n{\n ", +" \"ETH_account\" : \"0x2b583c58ad85d341e5", +"9e45852444b07d0a37ae19\",\n \"name\" : \"0", +"x2b583c58ad85d341e5\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 29154379460\n}, \n{\n", +" \"ETH_account\" : \"0x7d9ea8b4e0131bbec", +"131ff427a31ece82bfd9e08\",\n \"name\" : \"", +"0x7d9ea8b4e0131bbec1\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 100\n}, \n{\n \"ET", +"H_account\" : \"0xa01fa1ca52c4323d9bbed950", +"76cb2b2999849d3f\",\n \"name\" : \"0xa01fa", +"1ca52c4323d9b\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 67380000000\n}, \n{\n \"E", +"TH_account\" : \"0x390973067a20d3e377a4099", +"9f0ae559a0ee3db50\",\n \"name\" : \"0x3909", +"73067a20d3e377\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 600000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xb50d8e9f25922e9f4100fa221c2", +"6734c3ea3abb5\",\n \"name\" : \"0xb50d8e9f", +"25922e9f41\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 11220057532\n}, \n{\n \"ETH_", +"account\" : \"0x050f6efda4a2978777e0489427", +"0f92b6c6da4da1\",\n \"name\" : \"0x050f6ef", +"da4a2978777\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 10000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xe5d33397125315795cf62e572286", +"4b6e4caa9e34\",\n \"name\" : \"0xe5d333971", +"25315795c\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 100000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xb494dad6857a9e330563d1018398e", +"2b79a5dddf1\",\n \"name\" : \"0xb494dad685", +"7a9e3305\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1000000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x484b0bfce8ffe920ab1deffeda0a8", +"a4e6ae994c2\",\n \"name\" : \"wqnirztvwazy", +"mwn\",\n \"publicKey\" : \"SPH59Awf2mzbZz6", +"uKLLA5BpDchDWxPLLtppvvh4w6WHQzEzhojga2\",", +"\n \"balance\" : 50001397000\n}, \n{\n \"", +"ETH_account\" : \"0xa39a2073cd0ce7c027d676", +"6bd00a09699d08b412\",\n \"name\" : \"jatrn", +"\",\n \"publicKey\" : \"SPH51Yu57cfakwyg83", +"WhSqN3tTbYJuZiRFY4BbGYGguYWsDXSLp31\",\n ", +" \"balance\" : 500000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x5ab64fdb3e404489d31cd742685", +"f0b50cc8e1194\",\n \"name\" : \"0x5ab64fdb", +"3e404489d3\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 56060846658\n}, \n{\n \"ETH_", +"account\" : \"0x8929e7cd7dc368661250b8dee0", +"f20b17fc8ff877\",\n \"name\" : \"0x8929e7c", +"d7dc3686612\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 240000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x6c9fedcf61f8589354af50a0a0d", +"a6076347a3c0d\",\n \"name\" : \"0x6c9fedcf", +"61f8589354\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 279290000\n}, \n{\n \"ETH_ac", +"count\" : \"0x4d5864db503fb7775e88a4c56611", +"8f5ea31d9227\",\n \"name\" : \"0x4d5864db5", +"03fb7775e\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 13851355000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xc2f833639b69d46422db24000d8", +"1ae3ab49f2bb4\",\n \"name\" : \"0xc2f83363", +"9b69d46422\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1035717940\n}, \n{\n \"ETH_a", +"ccount\" : \"0x5ee89c67b31c6324172cd5e5dc9", +"0e2f1d63b4bd4\",\n \"name\" : \"0x5ee89c67", +"b31c632417\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1630501683\n}, \n{\n \"ETH_a", +"ccount\" : \"0xef6438ef3a89b86c8d299c3952b", +"2564887c03cc4\",\n \"name\" : \"0xef6438ef", +"3a89b86c8d\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 170000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x40e1373e63b4d2005d2b3aa21559", +"50599ec443bf\",\n \"name\" : \"0x40e1373e6", +"3b4d2005d\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 300815695\n}, \n{\n \"ETH_acc", +"ount\" : \"0x007017bea522334c3771e77df5715", +"39b2e2e6d29\",\n \"name\" : \"0x007017bea5", +"22334c37\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 3200000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xad8e85f169a4e622c94a3573dddf4", +"9a731a5cb4e\",\n \"name\" : \"0xad8e85f169", +"a4e622c9\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 4400000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x0b7dfb921363c1f44012b6f8b261d", +"8612ddd1178\",\n \"name\" : \"0x0b7dfb9213", +"63c1f440\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 244\n}, \n{\n \"ETH_account\" :", +" \"0x12af5989821f722384e8d142fac326524085", +"db8c\",\n \"name\" : \"0x12af5989821f72238", +"4\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 200\n}, \n{\n \"ETH_account\" : \"0x0aa", +"d2c14074a260ec6087c31eaac54e1c9cab5bd\",\n", +" \"name\" : \"0x0aad2c14074a260ec6\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 448", +"000000\n}, \n{\n \"ETH_account\" : \"0x6914", +"36d3754259fb9688efc5f2078514c4232964\",\n ", +" \"name\" : \"0x691436d3754259fb96\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 6292", +"569101\n}, \n{\n \"ETH_account\" : \"0x28eb", +"5d77ce1e2b91a640b2357c087635a1494e9d\",\n ", +" \"name\" : \"0x28eb5d77ce1e2b91a6\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2500", +"00000\n}, \n{\n \"ETH_account\" : \"0x9461d", +"3d18506693d8094544edf23dc516e6a1007\",\n ", +" \"name\" : \"0x9461d3d18506693d80\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 81835", +"6067121\n}, \n{\n \"ETH_account\" : \"0x2d5", +"64d978700958250669fcf33490c6bdb958d3d\",\n", +" \"name\" : \"0x2d564d978700958250\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 840", +"000000\n}, \n{\n \"ETH_account\" : \"0x0c29", +"6a43fbbdb77503d10feccebbd1210d68e336\",\n ", +" \"name\" : \"0x0c296a43fbbdb77503\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2424", +"376819\n}, \n{\n \"ETH_account\" : \"0x862f", +"c219b51401dda88d54152a14e123efbc2a85\",\n ", +" \"name\" : \"0x862fc219b51401dda8\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5900", +"00000\n}, \n{\n \"ETH_account\" : \"0xadfeb", +"ccca8d3d3c7688a518910ccb43d956178b3\",\n ", +" \"name\" : \"0xadfebccca8d3d3c768\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10000", +"00000\n}, \n{\n \"ETH_account\" : \"0xb9d3e", +"1a9f8d040ca2f5d47b6cc2937bb60d88cc2\",\n ", +" \"name\" : \"jacquotsophiatx\",\n \"publi", +"cKey\" : \"SPH63jn3VC237z7geNMFMXuPcnLz9ZN", +"PFXLJjrJDiMLLrNXBg8mhW\",\n \"balance\" :", +" 2132000000\n}, \n{\n \"ETH_account\" : \"0", +"x4df2cf9cf9c2669746a90f1f1043005d300739c", +"a\",\n \"name\" : \"gillybrah\",\n \"publi", +"cKey\" : \"SPH55UmSg4nse5AcwCvKACEZ2pJrVuy", +"x3NT44PfaTQSycQ88cLcj7\",\n \"balance\" :", +" 4596484300\n}, \n{\n \"ETH_account\" : \"0", +"x420cc937b75c268df2c3e533e7ca5fb5e13c8f5", +"3\",\n \"name\" : \"0x420cc937b75c268df2\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 420000000\n}, \n{\n \"ETH_account\" : \"0x", +"56dfcd32d39543946691e4fefb4f454c4169b87b", +"\",\n \"name\" : \"0x56dfcd32d395439466\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"123258505\n}, \n{\n \"ETH_account\" : \"0x8", +"af5130529f0e332e5416aeb60a8f3fc7acf029c\"", +",\n \"name\" : \"0x8af5130529f0e332e5\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"0000000\n}, \n{\n \"ETH_account\" : \"0x19d", +"2bb5598c1af4c97a8931fe551ec2f6b6b8feb\",\n", +" \"name\" : \"0x19d2bb5598c1af4c97\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 200", +"0000000\n}, \n{\n \"ETH_account\" : \"0x200", +"7e670e0722871c73dd3f1eeea2cf326100db7\",\n", +" \"name\" : \"0x2007e670e0722871c7\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 390", +"00000\n}, \n{\n \"ETH_account\" : \"0xaf11c", +"c4e35d6e8053fb6b3992c0010ecc8574835\",\n ", +" \"name\" : \"0xaf11cc4e35d6e8053f\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 12461", +"73000\n}, \n{\n \"ETH_account\" : \"0x061a6", +"663b0ca6c87f76c2839df53eb4e88d8345a\",\n ", +" \"name\" : \"0x061a6663b0ca6c87f7\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 50529", +"0431\n}, \n{\n \"ETH_account\" : \"0x3737a3", +"4463afafb55e0f014768758fb756c0da7d\",\n ", +" \"name\" : \"0x3737a34463afafb55e\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 277129", +"000\n}, \n{\n \"ETH_account\" : \"0xfc162d0", +"d40f4266f65f9c131d945ce8c68ef0d61\",\n ", +"\"name\" : \"0xfc162d0d40f4266f65\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 291\n}, ", +"\n{\n \"ETH_account\" : \"0x966b6448b1ce88", +"b5ab0ce680fb56db3888e92a33\",\n \"name\" ", +": \"akakabuto\",\n \"publicKey\" : \"SPH5NB", +"1yyhPeo3vtzvMHpz7uMtqnWei19BgSHCvou2ptFM", +"SsA11BV\",\n \"balance\" : 3353414991\n}, ", +"\n{\n \"ETH_account\" : \"0xcdd3f4e94ada4c", +"7255fbdee9abff4a8903df223f\",\n \"name\" ", +": \"0xcdd3f4e94ada4c7255\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3782389548\n}, ", +"\n{\n \"ETH_account\" : \"0x6daae8b4f29f79", +"653043fb3533dcf34a3e506dda\",\n \"name\" ", +": \"0x6daae8b4f29f796530\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 576000000\n}, \n", +"{\n \"ETH_account\" : \"0x440dfee0f062c7d", +"25f35a7df7a815f0e886666b1\",\n \"name\" :", +" \"leviathan\",\n \"publicKey\" : \"SPH8VZS", +"nHdaW85QxwYEcy5V7x1aa73rMphjAFDYnHFUvDiz", +"RdmThT\",\n \"balance\" : 98975789653\n}, ", +"\n{\n \"ETH_account\" : \"0x07194186a65bf9", +"a3e3374cf802e135918eaa118a\",\n \"name\" ", +": \"0x07194186a65bf9a3e3\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 293000000\n}, \n", +"{\n \"ETH_account\" : \"0x434c11fc1993097", +"61d9ef3cc6ea65cbf5d693799\",\n \"name\" :", +" \"0x434c11fc199309761d\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1001662845\n}, \n", +"{\n \"ETH_account\" : \"0x42c05e4704e5e0e", +"93d73e4a22b4e635325209e65\",\n \"name\" :", +" \"0x42c05e4704e5e0e93d\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1917110957\n}, \n", +"{\n \"ETH_account\" : \"0xfc860e03992661b", +"a08ede69dd666e016f721b430\",\n \"name\" :", +" \"coreylavish\",\n \"publicKey\" : \"SPH7m", +"xfeG4SiHKtavWer9hVw5Y756AKSA8vtSeXf1PVvZ", +"pFfCiCsB\",\n \"balance\" : 2675000000\n},", +" \n{\n \"ETH_account\" : \"0xdc4e13d9e55a4", +"2b8d2f6a41cab13a68410253269\",\n \"name\"", +" : \"0xdc4e13d9e55a42b8d2\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 3398000000\n},", +" \n{\n \"ETH_account\" : \"0x5ef0501109e36", +"0693698f9aa47b23b946a562f23\",\n \"name\"", +" : \"0x5ef0501109e3606936\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 13000000000\n}", +", \n{\n \"ETH_account\" : \"0xbd0da5c54e0d", +"a65af7eddac692cd03f6d57382a0\",\n \"name", +"\" : \"0xbd0da5c54e0da65af7\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 921000\n}, \n{", +"\n \"ETH_account\" : \"0xde3270049c833ff2", +"a52f18c7718227eb36a92323\",\n \"name\" : ", +"\"cryptox1\",\n \"publicKey\" : \"SPH5NPCHz", +"Bkywv3Y2dkk26RbQ3F4JvbfrUifTXScaaGadah4y", +"EZW4\",\n \"balance\" : 30165705244\n}, \n{", +"\n \"ETH_account\" : \"0x1e12ebff22756a70", +"8c59d378825e14cabd183558\",\n \"name\" : ", +"\"0x1e12ebff22756a708c\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 63000\n}, \n{\n ", +"\"ETH_account\" : \"0x6007a0437f46ee4215ebc", +"9076f64f19dd6a3bab3\",\n \"name\" : \"0x60", +"07a0437f46ee4215\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 276990000\n}, \n{\n \"", +"ETH_account\" : \"0x3ed54ac39681d7a8e24726", +"8f2cbb43d84f85e1aa\",\n \"name\" : \"0x3ed", +"54ac39681d7a8e2\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1300000000\n}, \n{\n \"", +"ETH_account\" : \"0x3709e2a9bbe3193e87a9d2", +"91a4067d0a7eb21f46\",\n \"name\" : \"0x370", +"9e2a9bbe3193e87\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 9112420936\n}, \n{\n \"", +"ETH_account\" : \"0xbf7dc0111aa9f421a92802", +"b0779b6ddf30b07166\",\n \"name\" : \"0xbf7", +"dc0111aa9f421a9\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1600902000\n}, \n{\n \"", +"ETH_account\" : \"0x52d5110aab99a5753ba8c4", +"9ab9b374e197114a9f\",\n \"name\" : \"sphtx", +"kja\",\n \"publicKey\" : \"SPH7JUpbBTgHeTG", +"KanXTfpsVmzd481vM39fzPYvRLpxs224S5WFtD\",", +"\n \"balance\" : 2970068570\n}, \n{\n \"E", +"TH_account\" : \"0xe548d944827fa4a5195a7ad", +"371fba38d904c9f5d\",\n \"name\" : \"0xe548", +"d944827fa4a519\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 100000000\n}, \n{\n \"ET", +"H_account\" : \"0xfea812c33d6dc54f8bbbc2d5", +"070b2d6bf270597e\",\n \"name\" : \"0xfea81", +"2c33d6dc54f8b\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 3249458000\n}, \n{\n \"ET", +"H_account\" : \"0xbb28aec0fe5439af6f7b1ad0", +"c11959e065c97c6d\",\n \"name\" : \"0xbb28a", +"ec0fe5439af6f\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 496466906\n}, \n{\n \"ETH", +"_account\" : \"0x429537fdf32d46c295c66ad9a", +"8856c49e2e601b5\",\n \"name\" : \"0x429537", +"fdf32d46c295\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 200000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x4b4a41543b8aed4ae095a18b23f5c", +"491c5ae8aa9\",\n \"name\" : \"0x4b4a41543b", +"8aed4ae0\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2105999900\n}, \n{\n \"ETH_acc", +"ount\" : \"0xa84091fad32c49c8c646fec29fe0e", +"deedd4083f9\",\n \"name\" : \"0xa84091fad3", +"2c49c8c6\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 524999999\n}, \n{\n \"ETH_acco", +"unt\" : \"0x29cf8e81d57b51be6be273a53739de", +"be0ae10f84\",\n \"name\" : \"0x29cf8e81d57", +"b51be6b\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 67084\n}, \n{\n \"ETH_account\" ", +": \"0xbcd46d430bc50a04b649e4334bd44a95b06", +"d0a80\",\n \"name\" : \"0xbcd46d430bc50a04", +"b6\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 1417275000\n}, \n{\n \"ETH_account\" ", +": \"0xf2081bfe08adc35f4b3dc41244474e77cb2", +"fb13d\",\n \"name\" : \"0xf2081bfe08adc35f", +"4b\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 91\n}, \n{\n \"ETH_account\" : \"0x9a4", +"4a0adc51886332fd12c88cd1fe2aa7a456bd6\",\n", +" \"name\" : \"sphtxwally\",\n \"publicKe", +"y\" : \"SPH6XbWdnEj4HNBTe9czQUvEyoytnLJbXb", +"aNYwAVDAbRAxC4T2d7W\",\n \"balance\" : 47", +"21309537\n}, \n{\n \"ETH_account\" : \"0xc8", +"718fc1c4b30ab10c0db693cd9f9efb02c762c6\",", +"\n \"name\" : \"0xc8718fc1c4b30ab10c\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 49", +"928693\n}, \n{\n \"ETH_account\" : \"0x4c0d", +"e26c7ebd6e37b5c1dc8cf243cf6b36a8e0f1\",\n ", +" \"name\" : \"0x4c0de26c7ebd6e37b5\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1846", +"906864\n}, \n{\n \"ETH_account\" : \"0x9a1f", +"06a2bff9d99b41534ddb4a85f09f20a17c35\",\n ", +" \"name\" : \"0x9a1f06a2bff9d99b41\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 6820", +"000000\n}, \n{\n \"ETH_account\" : \"0xc4b6", +"95d03cb1ff1560c44af2168f896537aac1bf\",\n ", +" \"name\" : \"0xc4b695d03cb1ff1560\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2500", +"00000\n}, \n{\n \"ETH_account\" : \"0xc2722", +"48022b4c6aae1825ef6dfc081041133d99c\",\n ", +" \"name\" : \"0xc272248022b4c6aae1\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 28000", +"00000\n}, \n{\n \"ETH_account\" : \"0x27725", +"7fccbf0c95b1422f2b58d447cd6fe8213da\",\n ", +" \"name\" : \"0x277257fccbf0c95b14\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 34611", +"1634\n}, \n{\n \"ETH_account\" : \"0x3b7c5f", +"b2697de52750ceabc4450c6e92875618ec\",\n ", +" \"name\" : \"0x3b7c5fb2697de52750\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 220000", +"000\n}, \n{\n \"ETH_account\" : \"0x5fb1178", +"eb6ad6d209ae213aa629e0a06b0f53802\",\n ", +"\"name\" : \"0x5fb1178eb6ad6d209a\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1000000", +"00\n}, \n{\n \"ETH_account\" : \"0x87e725b7", +"d0cb9f8f997f5e04cd7acb3e68b691a5\",\n \"", +"name\" : \"0x87e725b7d0cb9f8f99\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 33340000", +"00\n}, \n{\n \"ETH_account\" : \"0xa6288d3c", +"c9bb4fffb5637f04b54b902916446d75\",\n \"", +"name\" : \"qkzkqkzk\",\n \"publicKey\" : \"S", +"PH5EAiJjqv1xPT5CjTAaN9Har3EoB3BAUVGVEUcr", +"YWpgX2gncrXd\",\n \"balance\" : 103938191", +"6\n}, \n{\n \"ETH_account\" : \"0x4c82bcc23", +"485f7ec5afc37354edaccaa15b0b758\",\n \"n", +"ame\" : \"0x4c82bcc23485f7ec5a\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 100000000", +"\n}, \n{\n \"ETH_account\" : \"0xb52b8b4e9c", +"5c624d04a271c4dd42c71496ee75e4\",\n \"na", +"me\" : \"0xb52b8b4e9c5c624d04\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 533037974\n", +"}, \n{\n \"ETH_account\" : \"0x129e0131ea3", +"cc16fe5252d7280bd1258f629f20f\",\n \"nam", +"e\" : \"0x129e0131ea3cc16fe5\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 584319000\n}", +", \n{\n \"ETH_account\" : \"0x61d299ef8ea7", +"e4e0a69f7db15bb36289297becd7\",\n \"name", +"\" : \"izzsophiatx\",\n \"publicKey\" : \"SP", +"H7jt4UiScXM63ccvscZZS7YVfvMqeCKEu7ih6sJ3", +"y3pU5wJfyty\",\n \"balance\" : 1100000000", +"\n}, \n{\n \"ETH_account\" : \"0xb74e9c38b5", +"877af52b241d7c8695cec55471e96f\",\n \"na", +"me\" : \"0xb74e9c38b5877af52b\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 112000000\n", +"}, \n{\n \"ETH_account\" : \"0x5250c8a7cdd", +"9f7d931560438ea367fa823a5b078\",\n \"nam", +"e\" : \"0x5250c8a7cdd9f7d931\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 600000000\n}", +", \n{\n \"ETH_account\" : \"0xe7125ff086fd", +"316a8c84da84f1ab500f0471e969\",\n \"name", +"\" : \"0xe7125ff086fd316a8c\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 5011893000\n}", +", \n{\n \"ETH_account\" : \"0xa5a3a027724d", +"7559a5221766ad9ef39376a42a25\",\n \"name", +"\" : \"0xa5a3a027724d7559a5\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 82000000\n}, ", +"\n{\n \"ETH_account\" : \"0x78dd6764d56cf3", +"a90abcbca097e3d315d0471d3d\",\n \"name\" ", +": \"0x78dd6764d56cf3a90a\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 100000000\n}, \n", +"{\n \"ETH_account\" : \"0x1cb8de51ca4c2f0", +"bac44efd71c3994e62922dbbc\",\n \"name\" :", +" \"0x1cb8de51ca4c2f0bac\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1322345767\n}, \n", +"{\n \"ETH_account\" : \"0xe9fd42bc77c2e58", +"aaa123dbe700f2071fd9e6601\",\n \"name\" :", +" \"0xe9fd42bc77c2e58aaa\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 5945689285\n}, \n", +"{\n \"ETH_account\" : \"0x3fb997e70d7f607", +"e6c066253a204b3881de998e4\",\n \"name\" :", +" \"0x3fb997e70d7f607e6c\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 29161900281\n}, ", +"\n{\n \"ETH_account\" : \"0x6bb8bdb6722d75", +"4536c2207c1062344a7d7c9527\",\n \"name\" ", +": \"0x6bb8bdb6722d754536\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 25000000\n}, \n{", +"\n \"ETH_account\" : \"0xb618b119268b594f", +"1aab218a621a9f7bef27b42f\",\n \"name\" : ", +"\"0xb618b119268b594f1a\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 407\n}, \n{\n \"E", +"TH_account\" : \"0x02d55a29766a3e63f4b459e", +"57c6054e8b4359867\",\n \"name\" : \"0x02d5", +"5a29766a3e63f4\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 5000000\n}, \n{\n \"ETH_", +"account\" : \"0x8625bea630f9aa26f76fad49e5", +"deb6d2dc7cde50\",\n \"name\" : \"0x8625bea", +"630f9aa26f7\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 5000000000\n}, \n{\n \"ETH_", +"account\" : \"0x1ea0d7561c8369e33f6a326826", +"a3681fcc945351\",\n \"name\" : \"0x1ea0d75", +"61c8369e33f\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1011190000\n}, \n{\n \"ETH_", +"account\" : \"0x85600cafb853f67dff7ad646fc", +"9b78e0deb1575d\",\n \"name\" : \"0x85600ca", +"fb853f67dff\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2411189528\n}, \n{\n \"ETH_", +"account\" : \"0xa5c68f4df4c8dab51d975dbe9d", +"af1d5528b357fe\",\n \"name\" : \"0xa5c68f4", +"df4c8dab51d\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 319587\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa1f5c8f8cc6551f8f0f3252847f29d", +"f64841e7a4\",\n \"name\" : \"0xa1f5c8f8cc6", +"551f8f0\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 376741697\n}, \n{\n \"ETH_accou", +"nt\" : \"0xe7a71da491f685a47298a3f8ca40eac", +"5e8d72f3e\",\n \"name\" : \"0xe7a71da491f6", +"85a472\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 221000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x41d5233f434d98b73f22ce664d48be06", +"f4eb073f\",\n \"name\" : \"0x41d5233f434d9", +"8b73f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1983303800518\n}, \n{\n \"ETH_acc", +"ount\" : \"0x0a997396a52cb27fa2acaf028e50b", +"5e772aef939\",\n \"name\" : \"0x0a997396a5", +"2cb27fa2\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2001000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x3964f8b8470b87ca35254cbcfdea8", +"ba0fa0e9846\",\n \"name\" : \"0x3964f8b847", +"0b87ca35\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 6300000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xfcded7e973d163d11181849ec08bc", +"792997418ac\",\n \"name\" : \"0xfcded7e973", +"d163d111\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2572\n}, \n{\n \"ETH_account\" ", +": \"0x1df58d084f62482f7dc9a8404fd8705878d", +"15232\",\n \"name\" : \"0x1df58d084f62482f", +"7d\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 660285106\n}, \n{\n \"ETH_account\" :", +" \"0x3749bb841d47ca007ef70580a5e836839c01", +"58c0\",\n \"name\" : \"0x3749bb841d47ca007", +"e\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 596313000\n}, \n{\n \"ETH_account\" : ", +"\"0x6b488c6f5c2800c7071fec6730e8c547b6576", +"10a\",\n \"name\" : \"0x6b488c6f5c2800c707", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 265267000\n}, \n{\n \"ETH_account\" : \"", +"0x1ba9d8936755cbb9afa0adaf9fc5f20376dd4e", +"90\",\n \"name\" : \"0x1ba9d8936755cbb9af\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2800000000\n}, \n{\n \"ETH_account\" : \"", +"0x3aa88fa08b06baeb70bf78b102e7b71f0996fb", +"a5\",\n \"name\" : \"0x3aa88fa08b06baeb70\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 250000000\n}, \n{\n \"ETH_account\" : \"0", +"x2e919ccee2383fe0c5e5da77a2083796de3175b", +"b\",\n \"name\" : \"0x2e919ccee2383fe0c5\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 615000000\n}, \n{\n \"ETH_account\" : \"0x", +"def0083fea701af025c19bdf0d328d5a44eac384", +"\",\n \"name\" : \"0xdef0083fea701af025\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1876745000\n}, \n{\n \"ETH_account\" : \"0x", +"2352edb7092477e6d7a76551ae21ce36d3398ade", +"\",\n \"name\" : \"0x2352edb7092477e6d7\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"390000000\n}, \n{\n \"ETH_account\" : \"0x1", +"310472921cb61391da6bb0e3f79d03c975c8ca3\"", +",\n \"name\" : \"0x1310472921cb61391d\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"62000000\n}, \n{\n \"ETH_account\" : \"0xc2", +"0bb51b7564caa84a3ba1713f6d0106febbd66f\",", +"\n \"name\" : \"wasserboxer\",\n \"public", +"Key\" : \"SPH7NCSydDBtnwvnGNSCNahUh1TGgb7N", +"8vs9bATPYVjNZJ76MLnGB\",\n \"balance\" : ", +"3945351000\n}, \n{\n \"ETH_account\" : \"0x", +"71c39125034c8d0467a4710edadd638db0d128c2", +"\",\n \"name\" : \"0x71c39125034c8d0467\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1526000000\n}, \n{\n \"ETH_account\" : \"0x", +"e96d2fee911dff1ee43d58ee1639a9fa09777680", +"\",\n \"name\" : \"0xe96d2fee911dff1ee4\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"25194883\n}, \n{\n \"ETH_account\" : \"0xb2", +"4835d833392351ef03822daf5af3daa5bc23a4\",", +"\n \"name\" : \"0xb24835d833392351ef\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 33", +"00000000\n}, \n{\n \"ETH_account\" : \"0x00", +"0a6d64eb61744ca00a3da5cda0cdfa4e42e31a\",", +"\n \"name\" : \"0x000a6d64eb61744ca0\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 10", +"000000\n}, \n{\n \"ETH_account\" : \"0x6301", +"cb64e15e6c9304e5af72acd4a325c2e9ee89\",\n ", +" \"name\" : \"0x6301cb64e15e6c9304\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 4850", +"00000\n}, \n{\n \"ETH_account\" : \"0x00c81", +"9e22c8838e801f6436e6ecd6ad1e9aa245d\",\n ", +" \"name\" : \"nos\",\n \"publicKey\" : \"SPH", +"6jEdMiNNM8pg1UeBhvwQ3PL5yaMuLrC2KTo73fFa", +"xv2iE24Q5u\",\n \"balance\" : 494930245\n}", +", \n{\n \"ETH_account\" : \"0xb5a019b35f05", +"9e783b4e40b172c94d6cd4dd3fa6\",\n \"name", +"\" : \"0xb5a019b35f059e783b\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 28431000000\n", +"}, \n{\n \"ETH_account\" : \"0xfb0f16663c7", +"1a2f92bf009c7dc7b401ad372b6de\",\n \"nam", +"e\" : \"0xfb0f16663c71a2f92b\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 24131337000", +"\n}, \n{\n \"ETH_account\" : \"0x688096e4f9", +"f692a6e18be2a5bca85acad0025a20\",\n \"na", +"me\" : \"0x688096e4f9f692a6e1\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1047880968", +"9\n}, \n{\n \"ETH_account\" : \"0x8b5bb0eaa", +"6d6f07d1cb01a53798d4f36017ef252\",\n \"n", +"ame\" : \"0x8b5bb0eaa6d6f07d1c\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 224326485", +"1\n}, \n{\n \"ETH_account\" : \"0xf314ddb74", +"39ecc6291d7a3f291a9d6abb8e09560\",\n \"n", +"ame\" : \"0xf314ddb7439ecc6291\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 407905600", +"0\n}, \n{\n \"ETH_account\" : \"0x792035d37", +"54bb82f8f545ae1d6226dc495e3297d\",\n \"n", +"ame\" : \"0x792035d3754bb82f8f\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 833000000", +"\n}, \n{\n \"ETH_account\" : \"0x925ccef8bb", +"e7a7e0b473ce561f5a120d5cece459\",\n \"na", +"me\" : \"0x925ccef8bbe7a7e0b4\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1007479801", +"\n}, \n{\n \"ETH_account\" : \"0x702fc68470", +"bf7d0a2d5a38cfe01d415ccd4aca42\",\n \"na", +"me\" : \"0x702fc68470bf7d0a2d\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 3788000000", +"\n}, \n{\n \"ETH_account\" : \"0xec7afcc4c7", +"1eb8b9f166fd66c4f59d461311dc30\",\n \"na", +"me\" : \"0xec7afcc4c71eb8b9f1\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1883562873", +"\n}, \n{\n \"ETH_account\" : \"0x466cd318f8", +"f8e534371a602d04e51ee6c50590ab\",\n \"na", +"me\" : \"0x466cd318f8f8e53437\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1288904796", +"94\n}, \n{\n \"ETH_account\" : \"0xee90c8f0", +"54b354e04ae26907db7435fe905eac44\",\n \"", +"name\" : \"0xee90c8f054b354e04a\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 5981\n}, ", +"\n{\n \"ETH_account\" : \"0xd9c1186fdd41b8", +"ae45fa4fea03788696847c986d\",\n \"name\" ", +": \"0xd9c1186fdd41b8ae45\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 587110727\n}, \n", +"{\n \"ETH_account\" : \"0xa05c3027a663b58", +"dca247fee39432f20511f7a0b\",\n \"name\" :", +" \"0xa05c3027a663b58dca\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 200000000\n}, \n{", +"\n \"ETH_account\" : \"0x853ba5ec8f827fba", +"6edecad5e2aeab211453ee43\",\n \"name\" : ", +"\"ezekweij\",\n \"publicKey\" : \"SPH59BFpm", +"if2aPin2CMxNctmgqLPXbBP3vPSJy3jYuqUbiekw", +"N6zb\",\n \"balance\" : 1320000000\n}, \n{\n", +" \"ETH_account\" : \"0xdae7cd644ef1b6128", +"40ecffb4fa0ed4abcfbcd75\",\n \"name\" : \"", +"0xdae7cd644ef1b61284\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1570000000\n}, \n{\n", +" \"ETH_account\" : \"0xea79387e9b31af0db", +"484fc574fa638a31dc4b704\",\n \"name\" : \"", +"0xea79387e9b31af0db4\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 940000000\n}, \n{\n ", +" \"ETH_account\" : \"0x5c165c586c76662295", +"0276b61b3f76ed804533d9\",\n \"name\" : \"0", +"x5c165c586c76662295\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1570000000\n}, \n{\n ", +" \"ETH_account\" : \"0x3faf4fa9cac5cabc36", +"d7e5570f1a384532d76f6d\",\n \"name\" : \"0", +"x3faf4fa9cac5cabc36\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 3920000000\n}, \n{\n ", +" \"ETH_account\" : \"0xed1b97c2ca2f0fa412", +"b4c394ae9bbd209fe7ca4b\",\n \"name\" : \"0", +"xed1b97c2ca2f0fa412\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 257152000\n}, \n{\n ", +" \"ETH_account\" : \"0xb6a0388d90e5ae86934", +"0f097c3685525fce3b86a\",\n \"name\" : \"0x", +"b6a0388d90e5ae8693\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 396000000\n}, \n{\n ", +" \"ETH_account\" : \"0x6d3f04551783da6ace3d", +"5767c6b1ae029ce86b76\",\n \"name\" : \"0x6", +"d3f04551783da6ace\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 3920000000\n}, \n{\n ", +" \"ETH_account\" : \"0xc1db683fd38f8270bc24", +"681c7cf69c3ff2bb31d7\",\n \"name\" : \"0xc", +"1db683fd38f8270bc\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 324799572\n}, \n{\n ", +"\"ETH_account\" : \"0xe586dbb6a309051277172", +"752d69d4d5d2eb46622\",\n \"name\" : \"0xe5", +"86dbb6a309051277\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 2685053000\n}, \n{\n ", +"\"ETH_account\" : \"0x1aafa724e117c115eaee0", +"31490b1731058796c63\",\n \"name\" : \"0x1a", +"afa724e117c115ea\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 2000000\n}, \n{\n \"ET", +"H_account\" : \"0x1b4eeecdcba3f5d969ccb42c", +"4c801218ac3b382f\",\n \"name\" : \"0x1b4ee", +"ecdcba3f5d969\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1061000000\n}, \n{\n \"ET", +"H_account\" : \"0x23b360c17cdc0912c4d51a9f", +"fde4d81e38e66318\",\n \"name\" : \"0x23b36", +"0c17cdc0912c4\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 2378035743\n}, \n{\n \"ET", +"H_account\" : \"0x796b332006948417e0ee009f", +"a9a27699bd18574f\",\n \"name\" : \"0x796b3", +"32006948417e0\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 3920000000\n}, \n{\n \"ET", +"H_account\" : \"0x4b46e48be29505c6a8f7429f", +"4a8f21a329542dfc\",\n \"name\" : \"0x4b46e", +"48be29505c6a8\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 9815000000\n}, \n{\n \"ET", +"H_account\" : \"0x3935b232fca6af5f1180c45d", +"5319c72b79204df9\",\n \"name\" : \"0x3935b", +"232fca6af5f11\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 15220964000\n}, \n{\n \"E", +"TH_account\" : \"0x3cff4a4c041b4c71cec2a24", +"11c3744a9aa1dcec1\",\n \"name\" : \"0x3cff", +"4a4c041b4c71ce\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 3920000000\n}, \n{\n \"E", +"TH_account\" : \"0xd2fd00999005929be5e3983", +"c74c196e029cee5a2\",\n \"name\" : \"0xd2fd", +"00999005929be5\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1000000\n}, \n{\n \"ETH_", +"account\" : \"0x7dc78e4091f20c9ee3d77bffd7", +"44dc437de49021\",\n \"name\" : \"0x7dc78e4", +"091f20c9ee3\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2161000000\n}, \n{\n \"ETH_", +"account\" : \"0x2fcc020f72e5d2edd2a24d04f3", +"dc90d7fdfbd1dd\",\n \"name\" : \"0x2fcc020", +"f72e5d2edd2\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 4000000000\n}, \n{\n \"ETH_", +"account\" : \"0x55a281e88402113d77b0bc2e67", +"c27dfc8eaac7fd\",\n \"name\" : \"domsphtx\"", +",\n \"publicKey\" : \"SPH7ruNjhVMVAjj46xz", +"L9fL8nHrA9spkfmx9VFZ1xnkaeGNcdo7JL\",\n ", +" \"balance\" : 83024250000\n}, \n{\n \"ETH_", +"account\" : \"0xd4f38f7ef62760dfe9db08b9ba", +"a686a3e17324ac\",\n \"name\" : \"0xd4f38f7", +"ef62760dfe9\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 24305016833\n}, \n{\n \"ETH", +"_account\" : \"0x1c9fbb6564610b3b277642008", +"1e9b328967a01ef\",\n \"name\" : \"0x1c9fbb", +"6564610b3b27\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3235505793\n}, \n{\n \"ETH", +"_account\" : \"0x3e7dd7df9c1ffd12b8ecd94a2", +"7472bdc4d87ab7e\",\n \"name\" : \"0x3e7dd7", +"df9c1ffd12b8\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1500000000\n}, \n{\n \"ETH", +"_account\" : \"0x94b0ec0d3738aaf5c328916b1", +"e2ca788145da3d2\",\n \"name\" : \"yxcvbnm\"", +",\n \"publicKey\" : \"SPH7YUwJ9mP5gMFQRmQ", +"RuNcw9iJKvPb51KAdRJyD8dRqya8G75MZG\",\n ", +" \"balance\" : 7980426829\n}, \n{\n \"ETH_a", +"ccount\" : \"0xb5a5112a20620579121d64cf14e", +"dbc7c743b7180\",\n \"name\" : \"0xb5a5112a", +"2062057912\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1910000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x68326a1e28314602f5a53f877dd", +"37e99d111744a\",\n \"name\" : \"0x68326a1e", +"28314602f5\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1850000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xc33e88249b5c037d5d7ec70806c", +"afe5b1906d1e9\",\n \"name\" : \"0xc33e8824", +"9b5c037d5d\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 386872394\n}, \n{\n \"ETH_ac", +"count\" : \"0x44c51816d2b75cbd5cf63b2c8107", +"e6f8d9a39529\",\n \"name\" : \"0x44c51816d", +"2b75cbd5c\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 232000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x16e110bed33c0445be68b957cbbef", +"5cd7e1bbd4f\",\n \"name\" : \"trustrade\",\n", +" \"publicKey\" : \"SPH54fgPNHZnh5p2B8J4P", +"NB4RHU3fRgBiGpDTJYGRAFN2JrHrX7hY\",\n \"", +"balance\" : 4752875000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x6f10475f694d59b31146b37a03df2", +"71ed6030c3f\",\n \"name\" : \"0x6f10475f69", +"4d59b311\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 741465000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa66165ef44ec2144cc1230ee6e88e8", +"5a0ed9e0aa\",\n \"name\" : \"0xa66165ef44e", +"c2144cc\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 10000000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xa0940a664ef5d9d6e7c887353088d", +"451154a239c\",\n \"name\" : \"0xa0940a664e", +"f5d9d6e7\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1298812000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x2051dc3da0f08d813e85005681a0c", +"fa08915fc87\",\n \"name\" : \"0x2051dc3da0", +"f08d813e\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 800000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x7e42b29409bb6d974867c2d133408c", +"67b3c8566b\",\n \"name\" : \"0x7e42b29409b", +"b6d9748\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 571273590\n}, \n{\n \"ETH_accou", +"nt\" : \"0x68aff7e0cacc0dd7dc4f75a72b538a6", +"3d8febf6e\",\n \"name\" : \"0x68aff7e0cacc", +"0dd7dc\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 490859\n}, \n{\n \"ETH_account\" ", +": \"0x6d2a01956074a1c5c40b17b5336ef109b6e", +"fbb18\",\n \"name\" : \"0x6d2a01956074a1c5", +"c4\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 24113470000\n}, \n{\n \"ETH_account\"", +" : \"0xc2df66e4c45e0772738b52dfa4c5fba838", +"ed8bc0\",\n \"name\" : \"0xc2df66e4c45e077", +"273\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1001000000\n}, \n{\n \"ETH_account\"", +" : \"0xa630bcb8e2370e700c6b530cb4aef60960", +"2fedf8\",\n \"name\" : \"0xa630bcb8e2370e7", +"00c\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 847239509\n}, \n{\n \"ETH_account\" ", +": \"0xb50fa18c58ca7f28f9a67f685e3e53affa0", +"94ef2\",\n \"name\" : \"0xb50fa18c58ca7f28", +"f9\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 373818793\n}, \n{\n \"ETH_account\" :", +" \"0x2761b3923958c5e36d0ce35438803dd2d1df", +"fdd3\",\n \"name\" : \"0x2761b3923958c5e36", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 5605000000\n}, \n{\n \"ETH_account\" :", +" \"0xcfa46613fef09ae7cfa623203100c860d16f", +"6a6e\",\n \"name\" : \"0xcfa46613fef09ae7c", +"f\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 13999999637\n}, \n{\n \"ETH_account\" ", +": \"0xb7daecedd3a20fbba23a4fa531bafe26368", +"0eee2\",\n \"name\" : \"0xb7daecedd3a20fbb", +"a2\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 757\n}, \n{\n \"ETH_account\" : \"0xfe", +"8048bc739e7b8eb39b548661461e188e97db89\",", +"\n \"name\" : \"wildsphtx\",\n \"publicKe", +"y\" : \"SPH85BqpNWq6hFNTzbFxcaVBZmbJaPFRMF", +"aURAHYtAj1hiPngJLK8\",\n \"balance\" : 53", +"83169408\n}, \n{\n \"ETH_account\" : \"0x78", +"2dd81060bc85bddb0ce7b2a53eaddd9f1f6aa0\",", +"\n \"name\" : \"0x782dd81060bc85bddb\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 83", +"00000000\n}, \n{\n \"ETH_account\" : \"0xd3", +"29842c297bdeb97b6df2b06c636673a64aac1d\",", +"\n \"name\" : \"0xd329842c297bdeb97b\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 51", +"5149\n}, \n{\n \"ETH_account\" : \"0x0fc3d8", +"e6ca08f594f39989d9c6ee8856a048b8f2\",\n ", +" \"name\" : \"0x0fc3d8e6ca08f594f3\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 600000", +"00\n}, \n{\n \"ETH_account\" : \"0xf51b17b2", +"b5762465df7fa462ab5a85fc60bcda56\",\n \"", +"name\" : \"0xf51b17b2b5762465df\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 4000000\n", +"}, \n{\n \"ETH_account\" : \"0xbb6cd5b2620", +"aca9840648981ca74b7d5c50d74f9\",\n \"nam", +"e\" : \"0xbb6cd5b2620aca9840\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1166509000\n", +"}, \n{\n \"ETH_account\" : \"0xb1235d2827a", +"ebfebee8abdc896844efb9808b749\",\n \"nam", +"e\" : \"0xb1235d2827aebfebee\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 469000000\n}", +", \n{\n \"ETH_account\" : \"0x9aa3db8bb2f2", +"5d4c7579e6938a27eca0dda661f0\",\n \"name", +"\" : \"soph873jds99ss\",\n \"publicKey\" : ", +"\"SPH7zVGAS6xEeB5C3BEqWqCW2z6VLCwexBhZtq1", +"DR8r12ou2nLPcr\",\n \"balance\" : 2967403", +"5300\n}, \n{\n \"ETH_account\" : \"0x98bed1", +"8b9b183920037d5cc49f2ae7bd09d52e18\",\n ", +" \"name\" : \"0x98bed18b9b18392003\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 238230", +"15984\n}, \n{\n \"ETH_account\" : \"0x54b06", +"d8a28c258dfe2e0ad8606da5bf1688ac537\",\n ", +" \"name\" : \"0x54b06d8a28c258dfe2\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 50901", +"54000\n}, \n{\n \"ETH_account\" : \"0x41439", +"180ef03fa5962be5dae2055b548e1c771d9\",\n ", +" \"name\" : \"0x41439180ef03fa5962\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 68756", +"60000\n}, \n{\n \"ETH_account\" : \"0x4368d", +"a9bc48067977084e0937e7402c3c653dd82\",\n ", +" \"name\" : \"0x4368da9bc480679770\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 61760", +"12258\n}, \n{\n \"ETH_account\" : \"0xd8435", +"98a965b7ba6288199fa3a7b26d6df7d827b\",\n ", +" \"name\" : \"0xd843598a965b7ba628\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 55039", +"4000\n}, \n{\n \"ETH_account\" : \"0xa03c1a", +"96b96cc151771398593aeb444d71ab5bae\",\n ", +" \"name\" : \"0xa03c1a96b96cc15177\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 380000", +"\n}, \n{\n \"ETH_account\" : \"0xc2dcb22c9b", +"9b96e04157e56ca8c07670c1c48ecc\",\n \"na", +"me\" : \"avalanche\",\n \"publicKey\" : \"SP", +"H7dka5pQcTswiLmy4z9b78ucCz9Ho5Hkjz1dfWoR", +"gsAhtaXvQFY\",\n \"balance\" : 1139814600", +"0\n}, \n{\n \"ETH_account\" : \"0xb220e9639", +"79b52cb177e8435b8b2e4b3af6a16c4\",\n \"n", +"ame\" : \"0xb220e963979b52cb17\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 165\n}, \n{", +"\n \"ETH_account\" : \"0x17baddea4109f011", +"ee5b697e929b63dd5477874d\",\n \"name\" : ", +"\"0x17baddea4109f011ee\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 13\n}, \n{\n \"ET", +"H_account\" : \"0x0b2ac2dd832c920a74334fda", +"14d53d5743336faa\",\n \"name\" : \"0x0b2ac", +"2dd832c920a74\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 2900000000\n}, \n{\n \"ET", +"H_account\" : \"0x383150f50ada35b0ceb89b66", +"b1ca625cdb7eba57\",\n \"name\" : \"0x38315", +"0f50ada35b0ce\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 425000000\n}, \n{\n \"ETH", +"_account\" : \"0x0498d5b87bff4e96980f4f38f", +"1900e62fa267025\",\n \"name\" : \"0x0498d5", +"b87bff4e9698\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 6000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x2a689f10c38964b9d18614395533", +"390ebb1aaa70\",\n \"name\" : \"cyless\",\n ", +" \"publicKey\" : \"SPH6XtSgCpAHNuMrbdgm9M3", +"GcV9LMVuYPyoxNiF54WCbyygoQQyUg\",\n \"ba", +"lance\" : 568063802\n}, \n{\n \"ETH_accoun", +"t\" : \"0xa03d28ce7ab73900604dfa48876b4e48", +"4dd68b07\",\n \"name\" : \"bigtuna\",\n \"", +"publicKey\" : \"SPH5rN21uP4NVJm1s5U8GC4bkk", +"RvQY9woFS3r2ncxbZ1YjvPSBaz3\",\n \"balan", +"ce\" : 19155752000\n}, \n{\n \"ETH_account", +"\" : \"0x7e60ac0214484db7a25b98848319db060", +"0546cec\",\n \"name\" : \"0x7e60ac0214484d", +"b7a2\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 20105647649\n}, \n{\n \"ETH_accoun", +"t\" : \"0x6682987032d400c2c169f0afa15a030b", +"01012276\",\n \"name\" : \"0x6682987032d40", +"0c2c1\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 853060000\n}, \n{\n \"ETH_account", +"\" : \"0x8b19b51cd40707b23dcbf47c2ecd7ed72", +"af87534\",\n \"name\" : \"0x8b19b51cd40707", +"b23d\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 68363253\n}, \n{\n \"ETH_account\" ", +": \"0x1056766b471f076e925f8193cf7a79fd940", +"5bf90\",\n \"name\" : \"0x1056766b471f076e", +"92\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 259\n}, \n{\n \"ETH_account\" : \"0xab", +"fc9e574e04ec06b601a7162c21ead3331b9b7a\",", +"\n \"name\" : \"0xabfc9e574e04ec06b6\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 18", +"8869653\n}, \n{\n \"ETH_account\" : \"0x236", +"e7f408e80ead0b26067ece4ba198583412735\",\n", +" \"name\" : \"0x236e7f408e80ead0b2\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 8\n}", +", \n{\n \"ETH_account\" : \"0xdf5fe56e7754", +"569ec1b9ee167d0cca0bcbe80f88\",\n \"name", +"\" : \"0xdf5fe56e7754569ec1\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 10486311000\n", +"}, \n{\n \"ETH_account\" : \"0x53fc8271f2a", +"d7680781f072a78280c9ccacb84a8\",\n \"nam", +"e\" : \"0x53fc8271f2ad768078\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 16010775455", +"\n}, \n{\n \"ETH_account\" : \"0x3783433348", +"3c803fd8e91725cd589860dd264997\",\n \"na", +"me\" : \"0x37834333483c803fd8\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 500000000\n", +"}, \n{\n \"ETH_account\" : \"0x9cf5a128ef4", +"79ba12c35f5f9c6b614da4a25f357\",\n \"nam", +"e\" : \"0x9cf5a128ef479ba12c\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 3600000000\n", +"}, \n{\n \"ETH_account\" : \"0xc980afe02dd", +"2aa47bdbe435ba7a1c6862428fcf3\",\n \"nam", +"e\" : \"0xc980afe02dd2aa47bd\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 784000000\n}", +", \n{\n \"ETH_account\" : \"0x7d5ff13242a1", +"3a1eca4b748366c3d794c1b3b3ec\",\n \"name", +"\" : \"0x7d5ff13242a13a1eca\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 750000000\n},", +" \n{\n \"ETH_account\" : \"0x7d14744332a55", +"cceebb5495321c0355389515c00\",\n \"name\"", +" : \"0x7d14744332a55cceeb\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 6000000000\n},", +" \n{\n \"ETH_account\" : \"0x31bbe5428685b", +"cef6ac7593a5230dec5633c4735\",\n \"name\"", +" : \"0x31bbe5428685bcef6a\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1415296000\n},", +" \n{\n \"ETH_account\" : \"0x5cb0d785b4ca3", +"410da39a1872b90dc076c0037e2\",\n \"name\"", +" : \"0x5cb0d785b4ca3410da\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 5212800000\n},", +" \n{\n \"ETH_account\" : \"0x496b7356eff38", +"a569c77d1f7cfc247fb0daa6fa5\",\n \"name\"", +" : \"0x496b7356eff38a569c\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 28279334\n}, \n", +"{\n \"ETH_account\" : \"0x7ab38aa5b88e8c6", +"48833d41edf879a61f0726751\",\n \"name\" :", +" \"0x7ab38aa5b88e8c6488\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1900000000\n}, \n", +"{\n \"ETH_account\" : \"0x40b1441f2190ded", +"c9eb4252dea7ed64ba081a60a\",\n \"name\" :", +" \"0x40b1441f2190dedc9e\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 934476695\n}, \n{", +"\n \"ETH_account\" : \"0x0e1c5e19ffae741d", +"d4f0a65efe3f289f27176f0d\",\n \"name\" : ", +"\"0x0e1c5e19ffae741dd4\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 8121000791\n}, \n{", +"\n \"ETH_account\" : \"0xb0845159b64e66df", +"d8ce840031ede8d63ce9dcc8\",\n \"name\" : ", +"\"0xb0845159b64e66dfd8\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 789620000\n}, \n{\n", +" \"ETH_account\" : \"0x29f6a572b19b64586", +"0ccb6504fc733af07683e76\",\n \"name\" : \"", +"0x29f6a572b19b645860\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 93000000\n}, \n{\n ", +" \"ETH_account\" : \"0x33547540b00df37cb53", +"21b22e9bd722f1c313766\",\n \"name\" : \"0x", +"33547540b00df37cb5\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 10032000000\n}, \n{\n ", +" \"ETH_account\" : \"0xbe2e00f4996de351a7", +"e2ba2669131f610b65b45f\",\n \"name\" : \"0", +"xbe2e00f4996de351a7\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 806349\n}, \n{\n \"", +"ETH_account\" : \"0x3cb2d9820ed9da044d4f11", +"89472ca292a94fecea\",\n \"name\" : \"0x3cb", +"2d9820ed9da044d\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 859870116\n}, \n{\n \"E", +"TH_account\" : \"0x10e5aeb356e2f2b9da45839", +"b6aeed21dbe041f67\",\n \"name\" : \"0x10e5", +"aeb356e2f2b9da\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 374309000\n}, \n{\n \"ET", +"H_account\" : \"0x27a22cb5867a9f9243ff49b2", +"6ccacb6513b881ba\",\n \"name\" : \"pwsphtx", +"july\",\n \"publicKey\" : \"SPH5UTuxUmd1mn", +"wwoXNKN8ZuXGPPjQwshkWLU3AE96JYswh7pLPFm\"", +",\n \"balance\" : 6099999642\n}, \n{\n \"", +"ETH_account\" : \"0xa797239a63bac0edd8e151", +"67a184cd03721fb73a\",\n \"name\" : \"0xa79", +"7239a63bac0edd8\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 250000000\n}, \n{\n \"E", +"TH_account\" : \"0x9a947be5112d4f086fbb282", +"62f3b33b80f93b904\",\n \"name\" : \"0x9a94", +"7be5112d4f086f\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 195151799\n}, \n{\n \"ET", +"H_account\" : \"0x9fb010f02f2964405f124a76", +"69416c46930c5eab\",\n \"name\" : \"0x9fb01", +"0f02f2964405f\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 426000000\n}, \n{\n \"ETH", +"_account\" : \"0x889169f317739dea03bb9bc0f", +"191c0007ab13d72\",\n \"name\" : \"0x889169", +"f317739dea03\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 188096000\n}, \n{\n \"ETH_", +"account\" : \"0x720e765b4dff4740a879127ebe", +"822cdb66ec628e\",\n \"name\" : \"ishwar\",\n", +" \"publicKey\" : \"SPH81yVjruVauLVjhgL9E", +"tjeLYxPP1GSXe8C2MSpgKLuz3EjrAB6A\",\n \"", +"balance\" : 2430501683\n}, \n{\n \"ETH_acc", +"ount\" : \"0xfda7ecb65c813683baeab1cc3ba91", +"10398e9f9ef\",\n \"name\" : \"petersen\",\n ", +" \"publicKey\" : \"SPH5sGvfMyBbhvX8a4f87x", +"1Zmoj9ak7cFwNfi2Yb32gLJd3AEZMwM\",\n \"b", +"alance\" : 17676375878\n}, \n{\n \"ETH_acc", +"ount\" : \"0x1b42b54857d244478e9999141be2e", +"f8f98749e0c\",\n \"name\" : \"0x1b42b54857", +"d244478e\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 76519\n}, \n{\n \"ETH_account\"", +" : \"0x0634020e126bf51aba32020ba01015f776", +"912b4a\",\n \"name\" : \"0x0634020e126bf51", +"aba\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 850000\n}, \n{\n \"ETH_account\" : \"", +"0xe54f3737734bd718d95f272479030686d182c9", +"87\",\n \"name\" : \"0xe54f3737734bd718d9\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 27\n}, \n{\n \"ETH_account\" : \"0x5c859a", +"68caf3e6ddb84c9f39c8358348550243ee\",\n ", +" \"name\" : \"0x5c859a68caf3e6ddb8\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 125157", +"2330\n}, \n{\n \"ETH_account\" : \"0xb5d7fb", +"9820753789a1f3a4b1c7675c6b2bcae4f6\",\n ", +" \"name\" : \"0xb5d7fb9820753789a1\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 110000", +"0000\n}, \n{\n \"ETH_account\" : \"0x4e0fda", +"f6003d0793965d10101351fcfd64faf930\",\n ", +" \"name\" : \"0x4e0fdaf6003d079396\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 836551", +"08748\n}, \n{\n \"ETH_account\" : \"0x09bf5", +"9982a7633b8a3b251daa0500e0aad095328\",\n ", +" \"name\" : \"0x09bf59982a7633b8a3\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 20699", +"9999649\n}, \n{\n \"ETH_account\" : \"0x393", +"66e12ccbe3100c8eaf465835a6ad16b4b2ed6\",\n", +" \"name\" : \"0x39366e12ccbe3100c8\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 200", +"000000\n}, \n{\n \"ETH_account\" : \"0xeb96", +"cba5aacb3d3f871bb7af12b9fa34d213fc81\",\n ", +" \"name\" : \"0xeb96cba5aacb3d3f87\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 7720", +"87725\n}, \n{\n \"ETH_account\" : \"0xf296a", +"5fafff0afd6c06df68eccbf0bc0a1b294ae\",\n ", +" \"name\" : \"0xf296a5fafff0afd6c0\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 63002", +"29000\n}, \n{\n \"ETH_account\" : \"0x3c3a6", +"ad8dc01d92908fcd14b225251c8b174ac3a\",\n ", +" \"name\" : \"dapvqykpfrmqder\",\n \"publi", +"cKey\" : \"SPH6WTiAqP1A9L529f5xoX1qtTDiq1N", +"KTwAR1tFNwrcocvntxL6Kv\",\n \"balance\" :", +" 586417000\n}, \n{\n \"ETH_account\" : \"0x", +"92c10dfa7e3a19c2265d8998f74f2738833cd58d", +"\",\n \"name\" : \"0x92c10dfa7e3a19c226\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"203161708\n}, \n{\n \"ETH_account\" : \"0x2", +"e3b368bf5952ae0e3cb606ea8e0ef8cec53adc5\"", +",\n \"name\" : \"0x2e3b368bf5952ae0e3\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 7", +"516\n}, \n{\n \"ETH_account\" : \"0xf3baa89", +"519b174a273dce579b3ad80e975da7ad3\",\n ", +"\"name\" : \"0xf3baa89519b174a273\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2400000", +"000\n}, \n{\n \"ETH_account\" : \"0x17e0e32", +"e2dcc804c06d3903b28a71d82eb188bf2\",\n ", +"\"name\" : \"0x17e0e32e2dcc804c06\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 7870013", +"32519\n}, \n{\n \"ETH_account\" : \"0x690b7", +"49f7ab54d141227868691d34dd5ac4517fa\",\n ", +" \"name\" : \"0x690b749f7ab54d1412\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10000", +"000\n}, \n{\n \"ETH_account\" : \"0x31af23f", +"e42aadee374c480275923a84a92c839f4\",\n ", +"\"name\" : \"0x31af23fe42aadee374\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4612000", +"000\n}, \n{\n \"ETH_account\" : \"0xcc6e034", +"8016e9a0e7d02f400f0832d00698f0b65\",\n ", +"\"name\" : \"0xcc6e0348016e9a0e7d\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1503524", +"000\n}, \n{\n \"ETH_account\" : \"0x34d8dd1", +"4e13d4d6c7cd8a21b4c7ca045890a965e\",\n ", +"\"name\" : \"0x34d8dd14e13d4d6c7c\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 3000000", +"000\n}, \n{\n \"ETH_account\" : \"0xc864051", +"3a0ff3e964e295b4a510f71be16c1ddf9\",\n ", +"\"name\" : \"0xc8640513a0ff3e964e\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 3319304", +"376\n}, \n{\n \"ETH_account\" : \"0xa61b448", +"1a176d4e53068a9db3e129456f6091af0\",\n ", +"\"name\" : \"0xa61b4481a176d4e530\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 9000000", +"0000\n}, \n{\n \"ETH_account\" : \"0x8fdd43", +"41fdb50376fd87ab2aa3ee3afad1294847\",\n ", +" \"name\" : \"0x8fdd4341fdb50376fd\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 111947", +"\n}, \n{\n \"ETH_account\" : \"0x6894e62220", +"1e0eaf0ed4fc7b3e35a6e5ccbbe092\",\n \"na", +"me\" : \"cryptostratego\",\n \"publicKey\" ", +": \"SPH6ELKuuUYxtGTxenzFHku6stNL1Yb8a9ked", +"bfPwx7DctSyZyijc\",\n \"balance\" : 30970", +"000000\n}, \n{\n \"ETH_account\" : \"0xf089", +"9374e56c818e459f939f14a942a2d7aa6630\",\n ", +" \"name\" : \"0xf0899374e56c818e45\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1337", +"00\n}, \n{\n \"ETH_account\" : \"0x1068813d", +"c4c370dc89cfd0843da01a1cc6a4c9a5\",\n \"", +"name\" : \"0x1068813dc4c370dc89\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 12990000", +"00\n}, \n{\n \"ETH_account\" : \"0xf1c4f0cc", +"d9cd1e3b7dee7c13705fdddc6c7f291f\",\n \"", +"name\" : \"grujmh\",\n \"publicKey\" : \"SPH", +"7PSqoZ69iCpNr6kgnDYNzfnRioayTUUzTjE656ku", +"u3P9As283a\",\n \"balance\" : 25033724462", +"\n}, \n{\n \"ETH_account\" : \"0x4d7547581f", +"e42271b69495792de202bed9452e77\",\n \"na", +"me\" : \"0x4d7547581fe42271b6\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1439600000", +"0\n}, \n{\n \"ETH_account\" : \"0x97d3064ad", +"55d683017ad1ddf2b2a9c367141855d\",\n \"n", +"ame\" : \"0x97d3064ad55d683017\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 340000000", +"0\n}, \n{\n \"ETH_account\" : \"0x0a9347ebf", +"0cd8af6cba7e10385bc1226170c40c0\",\n \"n", +"ame\" : \"0x0a9347ebf0cd8af6cb\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 279740000", +"0\n}, \n{\n \"ETH_account\" : \"0xc941c9f3b", +"6b50a1cd0d95e39d80f87504bbf4a43\",\n \"n", +"ame\" : \"0xc941c9f3b6b50a1cd0\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 330000000", +"\n}, \n{\n \"ETH_account\" : \"0x3e733bc34e", +"102d6d4b1c5860318d17960c9ceda1\",\n \"na", +"me\" : \"0x3e733bc34e102d6d4b\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 3084000000", +"\n}, \n{\n \"ETH_account\" : \"0x0601285552", +"c72ee4aac4da0e588b8c84be4cc4fe\",\n \"na", +"me\" : \"0x0601285552c72ee4aa\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 212\n}, \n{\n", +" \"ETH_account\" : \"0xdbc52b447bfc3aafb", +"ca292a70f607470c34c819b\",\n \"name\" : \"", +"0xdbc52b447bfc3aafbc\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 295346996\n}, \n{\n ", +" \"ETH_account\" : \"0xd40c771213816b6d9d", +"3efb0a1694774c1fdf6f7e\",\n \"name\" : \"0", +"xd40c771213816b6d9d\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 240000000\n}, \n{\n ", +" \"ETH_account\" : \"0xf67882f06d25a631ce4", +"853217330c3bbf67e5d08\",\n \"name\" : \"0x", +"f67882f06d25a631ce\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 6243463883\n}, \n{\n ", +" \"ETH_account\" : \"0x1f67b4c8192adae330c", +"d1724bb0374e39fe80530\",\n \"name\" : \"0x", +"1f67b4c8192adae330\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 9619\n}, \n{\n \"ETH", +"_account\" : \"0x1020f4012dfa3e7d5f3af16cb", +"7cf50b7be581adb\",\n \"name\" : \"0x1020f4", +"012dfa3e7d5f\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1000000000\n}, \n{\n \"ETH", +"_account\" : \"0xdacbf961bca3ff1d0acbf8a22", +"d2b4ce9d5361d48\",\n \"name\" : \"0xdacbf9", +"61bca3ff1d0a\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1520967000\n}, \n{\n \"ETH", +"_account\" : \"0xc7f8847c08e98ba745f34b919", +"ed02efab30c9f48\",\n \"name\" : \"0xc7f884", +"7c08e98ba745\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 800000000\n}, \n{\n \"ETH_", +"account\" : \"0x3aafdaad368f2343f7fe996aac", +"01e9413be63e69\",\n \"name\" : \"0x3aafdaa", +"d368f2343f7\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1800000000\n}, \n{\n \"ETH_", +"account\" : \"0x227924715a4fb162b2c92bbfee", +"f223299e7e8d81\",\n \"name\" : \"0x2279247", +"15a4fb162b2\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 8000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xfedd96261c5ec21058b19ed06ebf2", +"e2df3f06c75\",\n \"name\" : \"0xfedd96261c", +"5ec21058\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1650000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xc9034dc83418b26785afe70c09fd6", +"8231269c683\",\n \"name\" : \"0xc9034dc834", +"18b26785\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 157000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x28615671d1ceaa38a5bd3a9718bab4", +"31ede4af71\",\n \"name\" : \"deckard\",\n ", +" \"publicKey\" : \"SPH5Xj8ceinPSRW8JFgQJ9ay", +"RSGxYwsszh7uNm4uoASYAYviEfaoG\",\n \"bal", +"ance\" : 574999947\n}, \n{\n \"ETH_account", +"\" : \"0x91700ec3744ce5898521776233b0c5df2", +"91daf54\",\n \"name\" : \"0x91700ec3744ce5", +"8985\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 11518587534\n}, \n{\n \"ETH_accoun", +"t\" : \"0xcbdec550ae9354a78fa91a16599ea8c1", +"b1aabb7e\",\n \"name\" : \"0xcbdec550ae935", +"4a78f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1600000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xb122bf325e1d0d4433e47365b98889cd", +"7558e652\",\n \"name\" : \"0xb122bf325e1d0", +"d4433\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 213742000\n}, \n{\n \"ETH_account", +"\" : \"0x22c576c3742173018958b44f558b58a0c", +"7188117\",\n \"name\" : \"0x22c576c3742173", +"0189\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 598328515\n}, \n{\n \"ETH_account\"", +" : \"0x82a4c420b30881b122cc0e59e06ac2c7bf", +"ff465a\",\n \"name\" : \"0x82a4c420b30881b", +"122\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 781802\n}, \n{\n \"ETH_account\" : \"", +"0x5706e95097de90304fa86bb1cfcb946d7da560", +"2b\",\n \"name\" : \"0x5706e95097de90304f\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1196657030\n}, \n{\n \"ETH_account\" : \"", +"0x4c2f0637182d602782b2f76e8b0c2de5af641e", +"19\",\n \"name\" : \"sirdaf\",\n \"publicK", +"ey\" : \"SPH5Uj4m4pZZWCAv7ZjmKK3f4H5cUCAR7", +"DqkBaSDLC6W5Mo9xBcoT\",\n \"balance\" : 7", +"02283580\n}, \n{\n \"ETH_account\" : \"0x60", +"07cabc84c61596567e2495fe50a014dad00ed9\",", +"\n \"name\" : \"0x6007cabc84c6159656\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 69", +"7900000\n}, \n{\n \"ETH_account\" : \"0x6de", +"6fd99c36b2ba83ebc5020dcab04ade0be3601\",\n", +" \"name\" : \"0x6de6fd99c36b2ba83e\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 164", +"4931029\n}, \n{\n \"ETH_account\" : \"0x67c", +"557caea794361dfbf517339c55ddaf7b63f0b\",\n", +" \"name\" : \"0x67c557caea794361df\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 310", +"0310644\n}, \n{\n \"ETH_account\" : \"0x71c", +"82eefe62be800c618e390fa089e78e1896619\",\n", +" \"name\" : \"0x71c82eefe62be800c6\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 319", +"0162954\n}, \n{\n \"ETH_account\" : \"0xd61", +"40ebce749fa95f5b04b40d06b9df50d66db31\",\n", +" \"name\" : \"0xd6140ebce749fa95f5\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 348", +"4040000\n}, \n{\n \"ETH_account\" : \"0xe61", +"d0e36d0aeb6d493f19f400528b07b8c9e7b8c\",\n", +" \"name\" : \"0xe61d0e36d0aeb6d493\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 337", +"9354509\n}, \n{\n \"ETH_account\" : \"0x1cc", +"c8800cbf87955ed6faffa5233f6e42af6bfab\",\n", +" \"name\" : \"0x1ccc8800cbf87955ed\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 220", +"0000000\n}, \n{\n \"ETH_account\" : \"0x61d", +"f902b7d8895116d810b2308365e93db8a29fb\",\n", +" \"name\" : \"0x61df902b7d8895116d\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 418", +"879000\n}, \n{\n \"ETH_account\" : \"0x973e", +"1e040762d754cb3edec86deb3e147bb68035\",\n ", +" \"name\" : \"0x973e1e040762d754cb\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3950", +"00000\n}, \n{\n \"ETH_account\" : \"0xf30eb", +"fb7f65e3993e9537fdb783c7b9f089074d6\",\n ", +" \"name\" : \"nelmeco\",\n \"publicKey\" : ", +"\"SPH68w2VP8LJftQGJB21osoBdU3maCK3hh1K39E", +"KVKoUG6qcQb49D\",\n \"balance\" : 1690808", +"4452\n}, \n{\n \"ETH_account\" : \"0x8a96df", +"a09e8f4e76ab8aca330b444a64097d3e8b\",\n ", +" \"name\" : \"asdfghjkl\",\n \"publicKey\" :", +" \"SPH5rUTvgoWg8bY6SLjzM7fgkXbsqZvy4xaCiW", +"PqT7GGDa6cJh4nC\",\n \"balance\" : 324000", +"0000\n}, \n{\n \"ETH_account\" : \"0xffa52d", +"cbdfa9d8f4ee16492f5a096237279ebea0\",\n ", +" \"name\" : \"0xffa52dcbdfa9d8f4ee\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 632770", +"1046\n}, \n{\n \"ETH_account\" : \"0x59a3fc", +"d881396e99fa5250df7b095f8be3469f3d\",\n ", +" \"name\" : \"0x59a3fcd881396e99fa\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 100495", +"4966\n}, \n{\n \"ETH_account\" : \"0xb2083d", +"709e8f4184c4d14452d3549bbcc0dc52ef\",\n ", +" \"name\" : \"0xb2083d709e8f4184c4\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 300000", +"0000\n}, \n{\n \"ETH_account\" : \"0xa073df", +"6b0eefb91cb0e0ff847073f7675365fc16\",\n ", +" \"name\" : \"0xa073df6b0eefb91cb0\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 484100", +"0000\n}, \n{\n \"ETH_account\" : \"0x5b9dce", +"54e15bb0a8715c8f56e087c9d2ff11b311\",\n ", +" \"name\" : \"0x5b9dce54e15bb0a871\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 110429", +"7000\n}, \n{\n \"ETH_account\" : \"0xc2d2fd", +"68d1db60e70f5832a77de561947428523f\",\n ", +" \"name\" : \"0xc2d2fd68d1db60e70f\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 1000\n}", +", \n{\n \"ETH_account\" : \"0x0c529e586109", +"b23479511a82c70c1f7c32526d51\",\n \"name", +"\" : \"0x0c529e586109b23479\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 600000000\n},", +" \n{\n \"ETH_account\" : \"0x030e63772aca1", +"22248a1edd296b290e74e33221b\",\n \"name\"", +" : \"0x030e63772aca122248\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 500656312\n}, ", +"\n{\n \"ETH_account\" : \"0x19870abccfde4f", +"4780d89d82fa858fb88bce474b\",\n \"name\" ", +": \"0x19870abccfde4f4780\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 550999547\n}, \n", +"{\n \"ETH_account\" : \"0x002b040d1dd53c9", +"b737fafb2069217e8ea8c3683\",\n \"name\" :", +" \"0x002b040d1dd53c9b73\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 764031000\n}, \n{", +"\n \"ETH_account\" : \"0x3faba2afe97f4887", +"8f74418865555f0693e28518\",\n \"name\" : ", +"\"0x3faba2afe97f48878f\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 7355000000\n}, \n{", +"\n \"ETH_account\" : \"0xb9505ceae606e446", +"d3fea91179211757eb0d4741\",\n \"name\" : ", +"\"0xb9505ceae606e446d3\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 700000000\n}, \n{\n", +" \"ETH_account\" : \"0x4f882194021467550", +"43db8170c64d5f4da23ef0a\",\n \"name\" : \"", +"0x4f8821940214675504\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 3196062796\n}, \n{\n", +" \"ETH_account\" : \"0x23ae0c6a34b18d8f0", +"ace998cdd424a70097c8c14\",\n \"name\" : \"", +"0x23ae0c6a34b18d8f0a\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 2220000000\n}, \n{\n", +" \"ETH_account\" : \"0x21a3e2428424b1d23", +"0b75cafa45f43d9cf5a4d50\",\n \"name\" : \"", +"0x21a3e2428424b1d230\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 3380327822\n}, \n{\n", +" \"ETH_account\" : \"0xcfebe5f0aaf261384", +"1aa0131c813edbcadf9a89c\",\n \"name\" : \"", +"0xcfebe5f0aaf2613841\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 4731364516\n}, \n{\n", +" \"ETH_account\" : \"0x46a0b0e934e176493", +"ce57be2904fa6a2984b1ed4\",\n \"name\" : \"", +"babbafdfr42\",\n \"publicKey\" : \"SPH6q2A", +"tv9SPKxXEDoiD5KLugJgNWPaWikmwSxkrbKgeeK3", +"gUkBUM\",\n \"balance\" : 12286523676\n}, ", +"\n{\n \"ETH_account\" : \"0x7d1375eec52502", +"dc7203ccea395e6bb9afb43005\",\n \"name\" ", +": \"0x7d1375eec52502dc72\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3107000000\n}, ", +"\n{\n \"ETH_account\" : \"0xef6f7bd185f2bd", +"479870a560f54ed2109db23a20\",\n \"name\" ", +": \"0xef6f7bd185f2bd4798\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 700000000\n}, \n", +"{\n \"ETH_account\" : \"0x2872f2ffdd297c2", +"583199b023c77c1212df308a9\",\n \"name\" :", +" \"0x2872f2ffdd297c2583\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1500000000\n}, \n", +"{\n \"ETH_account\" : \"0x6b8f546926d84de", +"6a9d25eafc153c5a4f04b3a05\",\n \"name\" :", +" \"0x6b8f546926d84de6a9\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 41000000\n}, \n{\n", +" \"ETH_account\" : \"0xc61463c8b749f3f00", +"7cb77b4b175d85b9f35d29d\",\n \"name\" : \"", +"0xc61463c8b749f3f007\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 125000000\n}, \n{\n ", +" \"ETH_account\" : \"0x1701fdc0516f5dd696", +"245c53dbaf37af51381cf8\",\n \"name\" : \"0", +"x1701fdc0516f5dd696\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 24739999680\n}, \n{\n", +" \"ETH_account\" : \"0x93488e0ff0ff66893", +"becddd74b0037fdc677da5f\",\n \"name\" : \"", +"0x93488e0ff0ff66893b\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 802\n}, \n{\n \"ET", +"H_account\" : \"0xb945c972d5074f6fa3e16ac1", +"7c5244131b03f693\",\n \"name\" : \"0xb945c", +"972d5074f6fa3\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 2000000000\n}, \n{\n \"ET", +"H_account\" : \"0xb7f477d1cd02e052f4346789", +"a494ef2bf05a6bc2\",\n \"name\" : \"0xb7f47", +"7d1cd02e052f4\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1216000000\n}, \n{\n \"ET", +"H_account\" : \"0xeaf0bcdf7686d99d843b2fb4", +"1e498f539c2ec9bb\",\n \"name\" : \"0xeaf0b", +"cdf7686d99d84\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 3922560842\n}, \n{\n \"ET", +"H_account\" : \"0x5c0e8c3780de4d4a49d7def0", +"e70960fd32abc62a\",\n \"name\" : \"0x5c0e8", +"c3780de4d4a49\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1215000000\n}, \n{\n \"ET", +"H_account\" : \"0x97f3c5fe7c948baba308319b", +"fc03abfe2ea4879b\",\n \"name\" : \"0x97f3c", +"5fe7c948baba3\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1215000000\n}, \n{\n \"ET", +"H_account\" : \"0x9ffaa21675ce316467fb9d89", +"c0fbd0e422b150bd\",\n \"name\" : \"0x9ffaa", +"21675ce316467\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1215003366\n}, \n{\n \"ET", +"H_account\" : \"0x1e1d1d6648778d1983d65075", +"e6b5bb62d4d31ef8\",\n \"name\" : \"0x1e1d1", +"d6648778d1983\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 3250000000\n}, \n{\n \"ET", +"H_account\" : \"0x93abcdf77dd9b1f22efe9519", +"616d4604a7c416a7\",\n \"name\" : \"0x93abc", +"df77dd9b1f22e\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 3281111800\n}, \n{\n \"ET", +"H_account\" : \"0xe7d062f4a219ffeb0b1eb929", +"688173e204b41fc1\",\n \"name\" : \"0xe7d06", +"2f4a219ffeb0b\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1500000000\n}, \n{\n \"ET", +"H_account\" : \"0x75df5ba66b341afaada0e4e1", +"abc0a3d4245615c2\",\n \"name\" : \"0x75df5", +"ba66b341afaad\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 888000000\n}, \n{\n \"ETH", +"_account\" : \"0x903a51cad745e1dc171b07170", +"46b2055650c715e\",\n \"name\" : \"0x903a51", +"cad745e1dc17\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 671804612\n}, \n{\n \"ETH_", +"account\" : \"0xf27411ff167ae8694dcf9f6f92", +"9b501a3d4f98e4\",\n \"name\" : \"0xf27411f", +"f167ae8694d\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 888000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x23eb609c51462c201a4a71203bc", +"061f1e0750ac8\",\n \"name\" : \"0x23eb609c", +"51462c201a\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 276000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x7458ce221e05ffee27eb7dba0984", +"c6ca63a780cb\",\n \"name\" : \"0x7458ce221", +"e05ffee27\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 888000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x74bcd64f0332678b9828232baca7a", +"ea88a3175f0\",\n \"name\" : \"0x74bcd64f03", +"32678b98\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 888000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x46574b3eee60467f047ed853ff68ff", +"d83e7fe26c\",\n \"name\" : \"0x46574b3eee6", +"0467f04\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 247245834\n}, \n{\n \"ETH_accou", +"nt\" : \"0xcd1c4adff1e48c27cce1c7039e8f5f5", +"c0269c9f0\",\n \"name\" : \"0xcd1c4adff1e4", +"8c27cc\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 50000000\n}, \n{\n \"ETH_account", +"\" : \"0x941569ce496b7aefa449e2bba9055e776", +"38a8587\",\n \"name\" : \"0x941569ce496b7a", +"efa4\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 225000000\n}, \n{\n \"ETH_account\"", +" : \"0x4154947fcf9f6b4eb6598f9d14b8b0ff6b", +"7793c2\",\n \"name\" : \"sophiatxdavid\",\n ", +" \"publicKey\" : \"SPH5FY5eBzYY794Uwx716s", +"1z9Li2zUajCJMoLL5mUjg6irLybKzXg\",\n \"b", +"alance\" : 15247830815\n}, \n{\n \"ETH_acc", +"ount\" : \"0xfa5868aa500122e78851dca785867", +"d3357328e91\",\n \"name\" : \"0xfa5868aa50", +"0122e788\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 888000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa369d5026865d345184ff86caed29c", +"118a1566a4\",\n \"name\" : \"0xa369d502686", +"5d34518\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 888000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xd74064e6a31532c6f2f0066944eb3c2", +"4d48e35a3\",\n \"name\" : \"0xd74064e6a315", +"32c6f2\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 11593550000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x788a38c4f97f43a65affef38a47827", +"ccded610ee\",\n \"name\" : \"0x788a38c4f97", +"f43a65a\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 888000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x55f6032023b31d9eb361be4382791a6", +"d5e9add17\",\n \"name\" : \"0x55f6032023b3", +"1d9eb3\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 3734532134\n}, \n{\n \"ETH_accou", +"nt\" : \"0x1b1724a1c65943218581950dd470374", +"cb7f7dfc0\",\n \"name\" : \"0x1b1724a1c659", +"432185\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 100730000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x07f3c5f5f60edd9d966b382d4af84eef", +"6904881e\",\n \"name\" : \"0x07f3c5f5f60ed", +"d9d96\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 500000000\n}, \n{\n \"ETH_account", +"\" : \"0xe9bbebdc0f1f386ff1c12269e7cda9beb", +"391370b\",\n \"name\" : \"0xe9bbebdc0f1f38", +"6ff1\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 542000000\n}, \n{\n \"ETH_account\"", +" : \"0xb546389b51162199a3ddbc658d22bad3fe", +"62d44f\",\n \"name\" : \"0xb546389b5116219", +"9a3\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 3263000000\n}, \n{\n \"ETH_account\"", +" : \"0xfe6c152a5b3d47174d60a87895da06971c", +"844918\",\n \"name\" : \"0xfe6c152a5b3d471", +"74d\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 543000000\n}, \n{\n \"ETH_account\" ", +": \"0x0257564dee167a82334a7bdd09150b637aa", +"6da38\",\n \"name\" : \"0x0257564dee167a82", +"33\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 149999999\n}, \n{\n \"ETH_account\" :", +" \"0xaa39128ab181c3ff9b5cf27d197f7c196aee", +"f7ac\",\n \"name\" : \"0xaa39128ab181c3ff9", +"b\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 300000000\n}, \n{\n \"ETH_account\" : ", +"\"0xd26e6a1e53a25ee30e2dc5e8ca3aa2f06c330", +"9bb\",\n \"name\" : \"frankgadea\",\n \"pu", +"blicKey\" : \"SPH7RV4wU2GnSdtsMzWAxVMeHdM4", +"v33mshhfZcdW3Hf96DvLHaeaA\",\n \"balance", +"\" : 50038181502\n}, \n{\n \"ETH_account\" ", +": \"0x92ae6d5148a9057fd834f65255130a86caa", +"e0825\",\n \"name\" : \"0x92ae6d5148a9057f", +"d8\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 888000000\n}, \n{\n \"ETH_account\" :", +" \"0xe6c8847f60c54f0ab450fa30c2deadc715f4", +"9db3\",\n \"name\" : \"0xe6c8847f60c54f0ab", +"4\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 765000000\n}, \n{\n \"ETH_account\" : ", +"\"0x9e160b5df64d7567c9ef0989f203ede18ab72", +"7c6\",\n \"name\" : \"0x9e160b5df64d7567c9", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 888000000\n}, \n{\n \"ETH_account\" : \"", +"0xb688f534ee0d640993d6694162bafb37e88fa6", +"55\",\n \"name\" : \"baldrickstx\",\n \"pu", +"blicKey\" : \"SPH5mqLZEYUkX7qjLV9w2XLNP7RM", +"hHGgEErcFj6z1kJyB3sAe3YZT\",\n \"balance", +"\" : 4543660216\n}, \n{\n \"ETH_account\" :", +" \"0x0347991ace9375425c7592bd3b34559c895d", +"bfdd\",\n \"name\" : \"0x0347991ace9375425", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 2501856000\n}, \n{\n \"ETH_account\" :", +" \"0x59c9ddc066099596caa05545fa055ea8142c", +"72dd\",\n \"name\" : \"0x59c9ddc066099596c", +"a\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 112000000\n}, \n{\n \"ETH_account\" : ", +"\"0x8f0be6db8d7d2506bb4d9aa141dcd41ba43e7", +"d07\",\n \"name\" : \"0x8f0be6db8d7d2506bb", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 335000000\n}, \n{\n \"ETH_account\" : \"", +"0xfb7841ac011090acd01aff299582c09079fffb", +"1b\",\n \"name\" : \"0xfb7841ac011090acd0\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1000000000\n}, \n{\n \"ETH_account\" : \"", +"0xb93727624334d96240f3fad171a07a42ec943c", +"64\",\n \"name\" : \"0xb93727624334d96240\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 16000000\n}, \n{\n \"ETH_account\" : \"0x", +"b9a095be4ce8a007eb32bbca4f5361fa670ce352", +"\",\n \"name\" : \"0xb9a095be4ce8a007eb\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"3035000000\n}, \n{\n \"ETH_account\" : \"0x", +"3f0a2494f67c06dce9f30b343ce77a970c1f6a6a", +"\",\n \"name\" : \"0x3f0a2494f67c06dce9\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1080048000\n}, \n{\n \"ETH_account\" : \"0x", +"4b912af55985f926d3bb258d7fc268b8a3bd66bf", +"\",\n \"name\" : \"0x4b912af55985f926d3\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"7606000000\n}, \n{\n \"ETH_account\" : \"0x", +"f8c4719498b0956ec87c2e11848ac3862276c460", +"\",\n \"name\" : \"sducoulombier\",\n \"pu", +"blicKey\" : \"SPH7mXXXjoC6gtfq7QGDvzVmBSx7", +"Fmr8Z4JPFzxXTbCiBiAZhJVoe\",\n \"balance", +"\" : 1220000000\n}, \n{\n \"ETH_account\" :", +" \"0x307f4063768dcd047745746cb2b4467d626d", +"d779\",\n \"name\" : \"0x307f4063768dcd047", +"7\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 170000000\n}, \n{\n \"ETH_account\" : ", +"\"0x6ec59425a6427d567756829c55f71a87b4285", +"219\",\n \"name\" : \"0x6ec59425a6427d5677", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 200000000\n}, \n{\n \"ETH_account\" : \"", +"0xe6f37cfc7abd85d4cf97dfb9c274a1860bc14e", +"c5\",\n \"name\" : \"0xe6f37cfc7abd85d4cf\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 5144000000\n}, \n{\n \"ETH_account\" : \"", +"0x2879148fd153f0e9768c430c7bee6ffdd21ca5", +"44\",\n \"name\" : \"0x2879148fd153f0e976\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2400000000\n}, \n{\n \"ETH_account\" : \"", +"0x6a164f948c8d3834a9dd2afedb7798f3401353", +"02\",\n \"name\" : \"0x6a164f948c8d3834a9\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 92\n}, \n{\n \"ETH_account\" : \"0xafd485", +"0c3a0c9157b076381bf1e1d5fc06a7baf7\",\n ", +" \"name\" : \"0xafd4850c3a0c9157b0\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 900000", +"00\n}, \n{\n \"ETH_account\" : \"0x79e161ea", +"7ac5d88040bc6564b9fafcbd11bcca38\",\n \"", +"name\" : \"0x79e161ea7ac5d88040\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 45000000", +"0\n}, \n{\n \"ETH_account\" : \"0x2f8b4dcfa", +"700fbc9d2ad1b81eefa4e30970b069c\",\n \"n", +"ame\" : \"jensschneider\",\n \"publicKey\" ", +": \"SPH7hqqx6uzXL5RQZsDm6Ekhgh1Sdm9ZS9PoT", +"wB3o64CHW6Ad1Fbg\",\n \"balance\" : 27187", +"50718\n}, \n{\n \"ETH_account\" : \"0x9b9fe", +"21f4c4ba2f8d6115ea0506c743e1d05d24a\",\n ", +" \"name\" : \"0x9b9fe21f4c4ba2f8d6\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 31720", +"00000\n}, \n{\n \"ETH_account\" : \"0x3a08f", +"d108c27a7b094d03cac41d17310dfdeb028\",\n ", +" \"name\" : \"0x3a08fd108c27a7b094\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 88800", +"0000\n}, \n{\n \"ETH_account\" : \"0x60b470", +"812b36d7090bb77f9267c7778cbee92ee4\",\n ", +" \"name\" : \"0x60b470812b36d7090b\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 100500", +"0000\n}, \n{\n \"ETH_account\" : \"0xb97404", +"caca27d3935ba43fea004227f1ef4d0977\",\n ", +" \"name\" : \"0xb97404caca27d3935b\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 118955", +"4731\n}, \n{\n \"ETH_account\" : \"0xb9619f", +"2876a09dd7f9ba52edf2c283adf95d4cc6\",\n ", +" \"name\" : \"bitbiker\",\n \"publicKey\" : ", +"\"SPH6bi3MpavaxL3RwpCTmvzyFDQiwcxKNEMxxaX", +"GZvstF3qHdzXzb\",\n \"balance\" : 9538792", +"711\n}, \n{\n \"ETH_account\" : \"0x65b0fa6", +"4e349979399c7cf2771c7b385ecc60bec\",\n ", +"\"name\" : \"0x65b0fa64e349979399\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5422958", +"000\n}, \n{\n \"ETH_account\" : \"0xc884d28", +"0e21fcb2d9c04f7dfd78d469f56980952\",\n ", +"\"name\" : \"0xc884d280e21fcb2d9c\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 7223649", +"000\n}, \n{\n \"ETH_account\" : \"0x57a6d06", +"2c1bd4982c90b109a896073e1c3ae985f\",\n ", +"\"name\" : \"0x57a6d062c1bd4982c9\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 6649222", +"0252\n}, \n{\n \"ETH_account\" : \"0xa0b0a8", +"ef935c7d34c9f94367c44a6c0d0cd3bf3c\",\n ", +" \"name\" : \"0xa0b0a8ef935c7d34c9\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 168001", +"15033\n}, \n{\n \"ETH_account\" : \"0x1a4fe", +"705a2cbff3b32ca9c15ba2d36bfefdc427b\",\n ", +" \"name\" : \"0x1a4fe705a2cbff3b32\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 17254", +"741\n}, \n{\n \"ETH_account\" : \"0xa521f89", +"4a03e12324c604cfab1b81fce78a9bed9\",\n ", +"\"name\" : \"lounmdid\",\n \"publicKey\" : \"", +"SPH6xGvZ7Yo2t6deKLipLxgXAnSGcLyGUgDNsJrK", +"bTk9G5abHhNJw\",\n \"balance\" : 27451130", +"00\n}, \n{\n \"ETH_account\" : \"0x34dc2222", +"a9dec1e7248a2593a23b2574b8625b9b\",\n \"", +"name\" : \"0x34dc2222a9dec1e724\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 55500000", +"0\n}, \n{\n \"ETH_account\" : \"0xdf7c92176", +"4361b1b6a2c9f1bfc35c193dae1cd22\",\n \"n", +"ame\" : \"0xdf7c921764361b1b6a\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 528729\n},", +" \n{\n \"ETH_account\" : \"0x3ad0e31e0f38f", +"e1ef5189df3b45f93f5fc2fa1e2\",\n \"name\"", +" : \"0x3ad0e31e0f38fe1ef5\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 280000000\n}, ", +"\n{\n \"ETH_account\" : \"0x26761da968ec96", +"f31ed5a7bd5b90841007adbb7d\",\n \"name\" ", +": \"0x26761da968ec96f31e\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 10000000\n}, \n{", +"\n \"ETH_account\" : \"0xf4381d04158f4809", +"ce2324f48c465fe2ba79a884\",\n \"name\" : ", +"\"0xf4381d04158f4809ce\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 3135860137\n}, \n{", +"\n \"ETH_account\" : \"0x9fb64d675d4ed9e4", +"c6507312ba955423884b17a0\",\n \"name\" : ", +"\"0x9fb64d675d4ed9e4c6\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 24444085000\n}, \n", +"{\n \"ETH_account\" : \"0xd8de1df5795ebda", +"7e3a7dc6cd24764a8aaf5b93b\",\n \"name\" :", +" \"0xd8de1df5795ebda7e3\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1221096000\n}, \n", +"{\n \"ETH_account\" : \"0x6a755da866e1e94", +"e5afa68103ea6396f8e496a01\",\n \"name\" :", +" \"0x6a755da866e1e94e5a\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 366000000\n}, \n{", +"\n \"ETH_account\" : \"0x6dd2505c4d9dcae8", +"bdf6503964af4c65de6815d9\",\n \"name\" : ", +"\"0x6dd2505c4d9dcae8bd\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 409186239\n}, \n{\n", +" \"ETH_account\" : \"0x7e5235fdc908aa99f", +"c6ac1173a5f746ff00d5d2f\",\n \"name\" : \"", +"0x7e5235fdc908aa99fc\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 760000000\n}, \n{\n ", +" \"ETH_account\" : \"0x8d7853b777947a18cb", +"493f3f129a199d84803623\",\n \"name\" : \"0", +"x8d7853b777947a18cb\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1201000000\n}, \n{\n ", +" \"ETH_account\" : \"0x0098336cf7c2266a61", +"45ef3d6eaf82634049d979\",\n \"name\" : \"0", +"x0098336cf7c2266a61\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x69bd53d34dfb8479a0", +"78d1b3def7085188ab07ee\",\n \"name\" : \"0", +"x69bd53d34dfb8479a0\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 28835765620\n}, \n{\n", +" \"ETH_account\" : \"0x89c3b752e71c446bf", +"4a7c413884be02a15e56ef8\",\n \"name\" : \"", +"0x89c3b752e71c446bf4\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 28835400000\n}, \n{", +"\n \"ETH_account\" : \"0x5882830359854149", +"a68cfcf9c6e0bb182b995e9d\",\n \"name\" : ", +"\"0x5882830359854149a6\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 3267080000\n}, \n{", +"\n \"ETH_account\" : \"0x7292975c1820ea93", +"6a06d8a72d334eb7e8b23143\",\n \"name\" : ", +"\"wallet\",\n \"publicKey\" : \"SPH8LyfNzL1", +"vAVUdbkbQ5p2cQ5gy4e7r8DdJfaKCMhSjsNNazNe", +"a9\",\n \"balance\" : 519403142423\n}, \n{\n", +" \"ETH_account\" : \"0x5d7e6cfc5edf8978a", +"05ccc58e8372956603fe99a\",\n \"name\" : \"", +"0x5d7e6cfc5edf8978a0\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 7556\n}, \n{\n \"E", +"TH_account\" : \"0x26c032b50a6d5d5ae3b6c49", +"291a1837cb4c6fe3d\",\n \"name\" : \"0x26c0", +"32b50a6d5d5ae3\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1916522710\n}, \n{\n \"E", +"TH_account\" : \"0x3e07bd77763b9ea56ce9f3f", +"b561d275a7c7d40c5\",\n \"name\" : \"0x3e07", +"bd77763b9ea56c\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 778966645\n}, \n{\n \"ET", +"H_account\" : \"0x19e92176ebc4318e7041e9d0", +"aad4d1a8eda14f72\",\n \"name\" : \"0x19e92", +"176ebc4318e70\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 510194000\n}, \n{\n \"ETH", +"_account\" : \"0x23a803d1e17053824792444fa", +"980cc31c341e124\",\n \"name\" : \"0x23a803", +"d1e170538247\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2014007273\n}, \n{\n \"ETH", +"_account\" : \"0xed994f817dea32223c816c2d3", +"d99c72db1a5d8ec\",\n \"name\" : \"0xed994f", +"817dea32223c\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 587768653\n}, \n{\n \"ETH_", +"account\" : \"0x34f25b47ec8d1d8d523d4a6287", +"b659e7c640f0b0\",\n \"name\" : \"0x34f25b4", +"7ec8d1d8d52\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 4900000000\n}, \n{\n \"ETH_", +"account\" : \"0x9f35a9f83bfdb097c116196730", +"9085d168345b9b\",\n \"name\" : \"0x9f35a9f", +"83bfdb097c1\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1877950913\n}, \n{\n \"ETH_", +"account\" : \"0xc6d54a93dc4e2bfabdbae4b8f9", +"9355be5c968f99\",\n \"name\" : \"0xc6d54a9", +"3dc4e2bfabd\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 380000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x188e38b94048b1999b082b91912", +"31f2cddc3589b\",\n \"name\" : \"0x188e38b9", +"4048b1999b\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 54507000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x6147056e29c147f801db37477cb61", +"482a0adf088\",\n \"name\" : \"0x6147056e29", +"c147f801\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 331000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa6221682cf4dd31ea747f547112b6f", +"181c9cdf7d\",\n \"name\" : \"0xa6221682cf4", +"dd31ea7\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 918562\n}, \n{\n \"ETH_account\"", +" : \"0xa2cc76db0672ccdb41ae51ff423d830f6f", +"05e46e\",\n \"name\" : \"0xa2cc76db0672ccd", +"b41\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 479554000\n}, \n{\n \"ETH_account\" ", +": \"0xd7891f4f74dbff04f9f5720e5f0cb04f5f7", +"95351\",\n \"name\" : \"0xd7891f4f74dbff04", +"f9\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 220000\n}, \n{\n \"ETH_account\" : \"0", +"xba7c2a47abb9b4a65d3d986187fabda13e5a0aa", +"b\",\n \"name\" : \"0xba7c2a47abb9b4a65d\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 120572819090\n}, \n{\n \"ETH_account\" : ", +"\"0xfb746cd9499e0aa4986caac9f8a1239a35b69", +"1d0\",\n \"name\" : \"0xfb746cd9499e0aa498", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 4038100000\n}, \n{\n \"ETH_account\" : ", +"\"0xbe17f74824e45b74127116a186200962b7546", +"86c\",\n \"name\" : \"0xbe17f74824e45b7412", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 888000000\n}, \n{\n \"ETH_account\" : \"", +"0xbebca907e201675792c809e2fa109f2f31c1cd", +"06\",\n \"name\" : \"0xbebca907e201675792\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 360000000\n}, \n{\n \"ETH_account\" : \"0", +"x545e1b7b26c826f91e3ccf3ed04357d3cbbc889", +"5\",\n \"name\" : \"0x545e1b7b26c826f91e\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 888000000\n}, \n{\n \"ETH_account\" : \"0x", +"cc9c1818a8de032145ba1ecc36b7693cfab79857", +"\",\n \"name\" : \"0xcc9c1818a8de032145\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"888000000\n}, \n{\n \"ETH_account\" : \"0x5", +"866c98a466c7ff469e36d97db5cb1bebf05ac09\"", +",\n \"name\" : \"0x5866c98a466c7ff469\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 8", +"88000000\n}, \n{\n \"ETH_account\" : \"0xb9", +"32ea5132add3af06cf64a4b876192925d047db\",", +"\n \"name\" : \"0xb932ea5132add3af06\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 15", +"3679\n}, \n{\n \"ETH_account\" : \"0x494cba", +"e2654d1eda14d725627b1b3b1973a107c9\",\n ", +" \"name\" : \"0x494cbae2654d1eda14\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 371000", +"000\n}, \n{\n \"ETH_account\" : \"0xd399d79", +"5f218275b73429d696ecc20b40a0dda1f\",\n ", +"\"name\" : \"0xd399d795f218275b73\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2728\n},", +" \n{\n \"ETH_account\" : \"0x36a1139de495d", +"9ff5e6404c733fd92b7d24dc9a2\",\n \"name\"", +" : \"0x36a1139de495d9ff5e\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 300000000\n}, ", +"\n{\n \"ETH_account\" : \"0xe7d7bfc9153193", +"2eb57457b9e727d969931a4633\",\n \"name\" ", +": \"0xe7d7bfc91531932eb5\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3404000000\n}, ", +"\n{\n \"ETH_account\" : \"0xf69767d9825e75", +"732cb8449215ab2f1724a7c03c\",\n \"name\" ", +": \"0xf69767d9825e75732c\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3827386000\n}, ", +"\n{\n \"ETH_account\" : \"0xc8f5aa89720dbd", +"05ea78f3f45697699841f0b35e\",\n \"name\" ", +": \"0xc8f5aa89720dbd05ea\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 888000000\n}, \n", +"{\n \"ETH_account\" : \"0x2750c6c62dee19b", +"01b718c7e7cbf94305aee7864\",\n \"name\" :", +" \"0x2750c6c62dee19b01b\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 8500000000\n}, \n", +"{\n \"ETH_account\" : \"0xdcbc23809eb774d", +"fed5be5e9ee2b380cda1e300f\",\n \"name\" :", +" \"0xdcbc23809eb774dfed\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 419\n}, \n{\n \"", +"ETH_account\" : \"0x31210e0f0709fd4ac8a7cc", +"0e712dbd893216e566\",\n \"name\" : \"0x312", +"10e0f0709fd4ac8\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 4861003366\n}, \n{\n \"", +"ETH_account\" : \"0x229ff289b1cdf9b72305d8", +"9c402739356e354da7\",\n \"name\" : \"0x229", +"ff289b1cdf9b723\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 266000\n}, \n{\n \"ETH_", +"account\" : \"0x17e31bf839acb700e0f5847975", +"74a2c1fde46d0b\",\n \"name\" : \"gosophiat", +"x\",\n \"publicKey\" : \"SPH5i4YEFqubARwoV", +"coGrqej7PaYSJu1383oa6jjkGFb5kQ4Fmm42\",\n ", +" \"balance\" : 1008339381\n}, \n{\n \"ETH", +"_account\" : \"0xd89f43cc48b9c11c111a34143", +"e5ea4a051d33f99\",\n \"name\" : \"0xd89f43", +"cc48b9c11c11\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1000000000\n}, \n{\n \"ETH", +"_account\" : \"0xc3d3ccecf1c95d67b0a919f80", +"1736a58b5a89e41\",\n \"name\" : \"0xc3d3cc", +"ecf1c95d67b0\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 91552920\n}, \n{\n \"ETH_a", +"ccount\" : \"0x7635023a4ebdf251f2ef171d8c3", +"89cbbcb9f1e17\",\n \"name\" : \"0x7635023a", +"4ebdf251f2\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2482000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x06984541e06df0cfb98a50e7278803", +"76eba551fd\",\n \"name\" : \"0x06984541e06", +"df0cfb9\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 316479000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xfb9938b35fc18b6193e7457db53a390", +"c9cc1e3cd\",\n \"name\" : \"0xfb9938b35fc1", +"8b6193\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 3617079685\n}, \n{\n \"ETH_accou", +"nt\" : \"0x6f002996c194a1b3adc00f40b4854d0", +"ec4c56925\",\n \"name\" : \"test\",\n \"pu", +"blicKey\" : \"SPH7XdURLfZ581rkG8dovPpwZBzK", +"JaD9nHyMpuZBHPmSZcCRHucZw\",\n \"balance", +"\" : 1066849880\n}, \n{\n \"ETH_account\" :", +" \"0x6957997bc37b1edfd2fc5dde5f35a3503e90", +"f39e\",\n \"name\" : \"robert\",\n \"publi", +"cKey\" : \"SPH5JxaD3CZYTNEP4qiwFtkmmqHPNMT", +"sf3poTehfgasMuANgcA56f\",\n \"balance\" :", +" 649080038\n}, \n{\n \"ETH_account\" : \"0x", +"a01a0ff9fda97eb43067edc7bbb9ea63d4de22bd", +"\",\n \"name\" : \"0xa01a0ff9fda97eb430\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"170000000\n}, \n{\n \"ETH_account\" : \"0xe", +"3c8662618aaf33c6677843d69ab042313f34d31\"", +",\n \"name\" : \"0xe3c8662618aaf33c66\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"01693000\n}, \n{\n \"ETH_account\" : \"0x55", +"93d96086acecd4341a97709fc3b1a86694f0b8\",", +"\n \"name\" : \"0x5593d96086acecd434\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 11", +"25000000\n}, \n{\n \"ETH_account\" : \"0xbe", +"cc06630c323e32a081a612d6324342980f2c74\",", +"\n \"name\" : \"0xbecc06630c323e32a0\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 25", +"0000000\n}, \n{\n \"ETH_account\" : \"0xd32", +"0869ab292ca9d02a4b57c0ffbd796313a79d0\",\n", +" \"name\" : \"0xd320869ab292ca9d02\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 542", +"761957\n}, \n{\n \"ETH_account\" : \"0x281c", +"53f171a2257403b5b5a3a2ad4598274c5b8d\",\n ", +" \"name\" : \"0x281c53f171a2257403\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 6428", +"53167\n}, \n{\n \"ETH_account\" : \"0x4298b", +"c13fe7e92ceb9722cf182273661fc9b4cee\",\n ", +" \"name\" : \"0x4298bc13fe7e92ceb9\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 266\n}", +", \n{\n \"ETH_account\" : \"0x12b08d4ff482", +"4e0ca9e802a607ebac0e6c36f75b\",\n \"name", +"\" : \"0x12b08d4ff4824e0ca9\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 61725000\n}, ", +"\n{\n \"ETH_account\" : \"0x34f1426ed4f795", +"5594a5e5dcc3ffec0604805d78\",\n \"name\" ", +": \"faridsa\",\n \"publicKey\" : \"SPH7tU1r", +"GrdP7YkfWccrgDD7CX95qojJqQqHm18k1WGLLL77", +"z7gGL\",\n \"balance\" : 20005000000\n}, \n", +"{\n \"ETH_account\" : \"0x241d21c80f5b85b", +"0d63aeafd069555efd23413e0\",\n \"name\" :", +" \"0x241d21c80f5b85b0d6\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1260000000\n}, \n", +"{\n \"ETH_account\" : \"0xa6ce28fcf07af19", +"801c9acdfa2ab2f0f72cdf53a\",\n \"name\" :", +" \"0xa6ce28fcf07af19801\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 420000000\n}, \n{", +"\n \"ETH_account\" : \"0xfc1e74a4c1bc9df5", +"171e28c06787777d00282e03\",\n \"name\" : ", +"\"0xfc1e74a4c1bc9df517\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1100000000\n}, \n{", +"\n \"ETH_account\" : \"0xb2676b51c834dec8", +"be28eb709f0a9522f82ef288\",\n \"name\" : ", +"\"0xb2676b51c834dec8be\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 100000000\n}, \n{\n", +" \"ETH_account\" : \"0xd96ce638daa98178b", +"fe54b4bfea4a75040be6ed4\",\n \"name\" : \"", +"0xd96ce638daa98178bf\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 200000000\n}, \n{\n ", +" \"ETH_account\" : \"0x7d68806f4070e6656d", +"90b76e355f51b8a9e4fe39\",\n \"name\" : \"0", +"x7d68806f4070e6656d\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 500000000\n}, \n{\n ", +" \"ETH_account\" : \"0x1e650a3e347a732b0e6", +"f92a69fdcb6c36edd6ced\",\n \"name\" : \"sc", +"hmu\",\n \"publicKey\" : \"SPH4x4M4Jkrvh2q", +"z7iZszWPqmt53rU8GRzsMXLYkKUQf3BnGCKheh\",", +"\n \"balance\" : 14100000000\n}, \n{\n \"", +"ETH_account\" : \"0x29a1712ff77598dfaa8817", +"1e36ba47db3a70731a\",\n \"name\" : \"0x29a", +"1712ff77598dfaa\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 3250000000\n}, \n{\n \"", +"ETH_account\" : \"0x748e47ba602c3c15b0b813", +"779ef6f4e8d2cb158d\",\n \"name\" : \"hecto", +"rrescuesoph\",\n \"publicKey\" : \"SPH7XaJ", +"cMK7Gnc1BaXxn9y5dCv4csDn4QRn9tWrZw9S5tnW", +"WJPh8y\",\n \"balance\" : 4107400000\n}, \n", +"{\n \"ETH_account\" : \"0x61e4bdb9449ce8f", +"e96cbab160b25a119d2282e43\",\n \"name\" :", +" \"allenboss\",\n \"publicKey\" : \"SPH7Gix", +"r6cinLoUgaprtSDbo8oQTC2c6oi3qYSGhn9hhbEf", +"BrxNd8\",\n \"balance\" : 758540582\n}, \n{", +"\n \"ETH_account\" : \"0x84c8118e1ab03224", +"a734432d0968b6ad1511e211\",\n \"name\" : ", +"\"0x84c8118e1ab03224a7\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 459999863\n}, \n{\n", +" \"ETH_account\" : \"0x086f51fced9ff6c74", +"2d706c319112359e3658b08\",\n \"name\" : \"", +"ilveronico\",\n \"publicKey\" : \"SPH6sctj", +"jUi3F3FY7DMbjtRBx44TetXuJfTe1E9jdEVstv6Z", +"4a7WT\",\n \"balance\" : 1263153000\n}, \n{", +"\n \"ETH_account\" : \"0x5045b2f70f96a1bd", +"17f7db747be068e221284ab9\",\n \"name\" : ", +"\"aleksandartodor\",\n \"publicKey\" : \"SP", +"H6x45go9pVp6Gf5ScQbTRC96Mg8LqwqdkoCaRmCT", +"PCrixYSmwwd\",\n \"balance\" : 429999965\n", +"}, \n{\n \"ETH_account\" : \"0xca694dc9dee", +"58a1cbacdf7ef145c29564bbda377\",\n \"nam", +"e\" : \"shenlolsophia\",\n \"publicKey\" : ", +"\"SPH5KdvVq5MMJpRPqTmDHGkE72CrodyJdZhFpa8", +"bRVh6kiM9xXhMU\",\n \"balance\" : 2100000", +"000\n}, \n{\n \"ETH_account\" : \"0x0a16b06", +"f71cbd7ae5a1728a7417da2791a65705e\",\n ", +"\"name\" : \"0x0a16b06f71cbd7ae5a\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2172639", +"884\n}, \n{\n \"ETH_account\" : \"0x29503a1", +"9b689bbce713358da1ebd880936818239\",\n ", +"\"name\" : \"0x29503a19b689bbce71\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 3425000", +"000\n}, \n{\n \"ETH_account\" : \"0x9bedfcf", +"b2d32e029e67f79adc4999eda829747db\",\n ", +"\"name\" : \"rohitsphtx\",\n \"publicKey\" :", +" \"SPH5eeov9GqWs5oMafstz3G3ajJ71K8WHnvEKD", +"3oTJAR58xkZMzyt\",\n \"balance\" : 201475", +"2272\n}, \n{\n \"ETH_account\" : \"0x678047", +"cae374401fd4a193a5cfe9e8343c97d0c1\",\n ", +" \"name\" : \"0x678047cae374401fd4\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 130733", +"3606\n}, \n{\n \"ETH_account\" : \"0x57f5e9", +"38781f298aae386528d101bfe3998a141e\",\n ", +" \"name\" : \"0x57f5e938781f298aae\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 200000", +"0\n}, \n{\n \"ETH_account\" : \"0xd171ac2c3", +"9f09c712fe8f0aa5e4a52c3696b82ba\",\n \"n", +"ame\" : \"0xd171ac2c39f09c712f\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 918\n}, \n{", +"\n \"ETH_account\" : \"0x85ffde9ca8c90a03", +"7c28054f64ebb6cc8680c3d6\",\n \"name\" : ", +"\"0x85ffde9ca8c90a037c\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1000000\n}, \n{\n ", +" \"ETH_account\" : \"0x8f29dbbcfdeaa3b02cf", +"e92c186b6a6311e2fb99f\",\n \"name\" : \"0x", +"8f29dbbcfdeaa3b02c\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1824592129600\n}, \n{", +"\n \"ETH_account\" : \"0xc16f8834d4a38ebd", +"7d38f30d42c6147828661dbe\",\n \"name\" : ", +"\"0xc16f8834d4a38ebd7d\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1189145000\n}, \n{", +"\n \"ETH_account\" : \"0x69ecf75aa4cff60d", +"9021932f517327276d6931d0\",\n \"name\" : ", +"\"0x69ecf75aa4cff60d90\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1000000000\n}, \n{", +"\n \"ETH_account\" : \"0x90b501708e2afc87", +"c8fbbad3ff23435258250557\",\n \"name\" : ", +"\"0x90b501708e2afc87c8\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 5037146000\n}, \n{", +"\n \"ETH_account\" : \"0xe4686841ce6498b6", +"428ff600f2fda1b04c39ba7f\",\n \"name\" : ", +"\"0xe4686841ce6498b642\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1100000000\n}, \n{", +"\n \"ETH_account\" : \"0x2613244e49082636", +"953774118b89caff67809de4\",\n \"name\" : ", +"\"0x2613244e4908263695\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 100000000\n}, \n{\n", +" \"ETH_account\" : \"0x125045d69207e1f82", +"57139c1232ed5a6186fe767\",\n \"name\" : \"", +"0x125045d69207e1f825\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 4212000000\n}, \n{\n", +" \"ETH_account\" : \"0xf991052e52bedcf68", +"73cc99327aa92ed673c5297\",\n \"name\" : \"", +"0xf991052e52bedcf687\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 835000000\n}, \n{\n ", +" \"ETH_account\" : \"0x3e2dd16f1ab10bfde8", +"aaf789dac2a1eee66e5b47\",\n \"name\" : \"y", +"oungsandwich\",\n \"publicKey\" : \"SPH6nr", +"J6mSypKhs6YA2BJHJFdrCnxJFVjRJPc2xFhQtC1n", +"R8mEnLV\",\n \"balance\" : 3246990209\n}, ", +"\n{\n \"ETH_account\" : \"0xe11acbbd777fc7", +"170077cf7732ed7197d5133cbe\",\n \"name\" ", +": \"0xe11acbbd777fc71700\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1920000000\n}, ", +"\n{\n \"ETH_account\" : \"0xa5f5368a107abe", +"de525b89d69b9f3560bd8cf9fe\",\n \"name\" ", +": \"0xa5f5368a107abede52\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 4383010099\n}, ", +"\n{\n \"ETH_account\" : \"0x795d748d9850da", +"c723baf2b49f857b6fe7ee4cf3\",\n \"name\" ", +": \"0x795d748d9850dac723\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1635000000\n}, ", +"\n{\n \"ETH_account\" : \"0x5580b352cc8f04", +"66f7e3419f7760e4ed151f5ea9\",\n \"name\" ", +": \"0x5580b352cc8f0466f7\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 441635742\n}, \n", +"{\n \"ETH_account\" : \"0x47590e87b48f491", +"49e8cdb934605617a42c38dcf\",\n \"name\" :", +" \"0x47590e87b48f49149e\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 53888892100\n}, ", +"\n{\n \"ETH_account\" : \"0xb528d2cafd2cc9", +"9fde613088fc7a7bde1cf3cb45\",\n \"name\" ", +": \"0xb528d2cafd2cc99fde\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 13983000000\n},", +" \n{\n \"ETH_account\" : \"0x90f080ae4218a", +"4c088bbf00a74af9850d1773366\",\n \"name\"", +" : \"tothemoon\",\n \"publicKey\" : \"SPH6j", +"CXBqNBBULcFcVTx3ESz2SMHbGj43k4YvB7BQz9zS", +"RePTY2b4\",\n \"balance\" : 2601000000\n},", +" \n{\n \"ETH_account\" : \"0xf9d6f1d6b0d8a", +"b30a78057c52badebc87cc4342d\",\n \"name\"", +" : \"0xf9d6f1d6b0d8ab30a7\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 20000000\n}, \n", +"{\n \"ETH_account\" : \"0x194685be538a05a", +"da38ce2bb2c1e70c605cea9cb\",\n \"name\" :", +" \"0x194685be538a05ada3\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 3760088800\n}, \n", +"{\n \"ETH_account\" : \"0x17c6895fe8987ee", +"19c28e864e099c21f9ef4b43c\",\n \"name\" :", +" \"0x17c6895fe8987ee19c\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1000000000\n}, \n", +"{\n \"ETH_account\" : \"0x40f69e9a17f633e", +"c4e941c2edbf6176cabf8acda\",\n \"name\" :", +" \"0x40f69e9a17f633ec4e\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 40777412\n}, \n{\n", +" \"ETH_account\" : \"0x495ea1204dbdfa612", +"9beb12678563929734b6e05\",\n \"name\" : \"", +"0x495ea1204dbdfa6129\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 321166893\n}, \n{\n ", +" \"ETH_account\" : \"0x181232ea6fa4a4d268", +"3eafeda6abf39498cd2da9\",\n \"name\" : \"0", +"x181232ea6fa4a4d268\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 95000000\n}, \n{\n ", +" \"ETH_account\" : \"0x7b4fc488eda7d83548da", +"acda783327630bb6fc33\",\n \"name\" : \"0x7", +"b4fc488eda7d83548\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1077741000\n}, \n{\n ", +" \"ETH_account\" : \"0x2f1df99050876ccf5eb5", +"33f9b03e195a69636e12\",\n \"name\" : \"0x2", +"f1df99050876ccf5e\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 200000000\n}, \n{\n ", +"\"ETH_account\" : \"0xec8d98579bd032df76cd7", +"80da9246b6bce2cdf66\",\n \"name\" : \"0xec", +"8d98579bd032df76\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 720000000\n}, \n{\n \"", +"ETH_account\" : \"0xbcb55f1e8ce368119b2c35", +"39beb9cfe9833cc688\",\n \"name\" : \"0xbcb", +"55f1e8ce368119b\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 50653838\n}, \n{\n \"ET", +"H_account\" : \"0x72705657a219aaa87e5b7223", +"cc79cd15e33e18af\",\n \"name\" : \"vsh\",\n ", +" \"publicKey\" : \"SPH7JqowWR8bvLz6UaDXLr", +"zjfD4n2JAwyv5n7ct7ivX7o57wefHav\",\n \"b", +"alance\" : 540000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x6b6ca7b163414ea50c39c44bbbdf4ad", +"bbe7ac881\",\n \"name\" : \"0x6b6ca7b16341", +"4ea50c\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 2154404762\n}, \n{\n \"ETH_accou", +"nt\" : \"0xbf14b39c54206f73d1601ca454ca223", +"9866f7659\",\n \"name\" : \"0xbf14b39c5420", +"6f73d1\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 4459457000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x1e6dbe2011b853d681672e1db9125ae", +"a6dbb349a\",\n \"name\" : \"0x1e6dbe2011b8", +"53d681\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 743701000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x06e79b78c62fa2c36fa7d0a5c0c57275", +"0a4f79e7\",\n \"name\" : \"0x06e79b78c62fa", +"2c36f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1000000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xea70a023c553ae129b5674cc99de7939", +"1a40971c\",\n \"name\" : \"mimisophrick\",\n", +" \"publicKey\" : \"SPH5sE3MjNX5obv7QRXae", +"Y7csGeB56ndwjqNExHZD7d9Cqp7gCAik\",\n \"", +"balance\" : 2840626130\n}, \n{\n \"ETH_acc", +"ount\" : \"0xbd3a140b8177ae302c7e9d783d658", +"f1d9b38f5ea\",\n \"name\" : \"0xbd3a140b81", +"77ae302c\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 629627103\n}, \n{\n \"ETH_acco", +"unt\" : \"0xd09085d4b57eeacd02b14f9f3a1cec", +"349af9a8ff\",\n \"name\" : \"0xd09085d4b57", +"eeacd02\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 10248790660\n}, \n{\n \"ETH_acc", +"ount\" : \"0x3ca47678a0413a5aebeb765870d7a", +"9c8152b8b47\",\n \"name\" : \"0x3ca47678a0", +"413a5aeb\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1238765000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x35a969811646c597fce040b03a7df", +"802b7b0d6a5\",\n \"name\" : \"0x35a9698116", +"46c597fc\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 225000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xd8e1cb737bd1608ec9ee19e8d00f2d", +"9e020fa6d3\",\n \"name\" : \"0xd8e1cb737bd", +"1608ec9\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 160000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x6043475cfb8c7fecdc2bb4584dd69aa", +"c042ae502\",\n \"name\" : \"0x6043475cfb8c", +"7fecdc\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 538870625\n}, \n{\n \"ETH_accoun", +"t\" : \"0x2a574c2cdbd3371b77d206d8e7808a7d", +"5eaf496c\",\n \"name\" : \"0x2a574c2cdbd33", +"71b77\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 12000000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x3b1eb6f763825c4c8d678ae1b0b4dd5", +"d3c9c6899\",\n \"name\" : \"0x3b1eb6f76382", +"5c4c8d\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 8623000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x02c6d6c7f8e3f7ebcf98765eea3e763", +"6d63ad096\",\n \"name\" : \"0x02c6d6c7f8e3", +"f7ebcf\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 539225878\n}, \n{\n \"ETH_accoun", +"t\" : \"0x5480fe6990197149670d8d28095b676e", +"9e2bafa4\",\n \"name\" : \"0x5480fe6990197", +"14967\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 102000000\n}, \n{\n \"ETH_account", +"\" : \"0xd8b80e7880a8eaf30adf87952067b56e3", +"b65d21e\",\n \"name\" : \"0xd8b80e7880a8ea", +"f30a\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 120000000\n}, \n{\n \"ETH_account\"", +" : \"0x77be4c2d06449004ee06ec1e80129084de", +"84865e\",\n \"name\" : \"0x77be4c2d0644900", +"4ee\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 127000000\n}, \n{\n \"ETH_account\" ", +": \"0x03c833e6113c218f9fb31938ad2ac90279d", +"87b25\",\n \"name\" : \"0x03c833e6113c218f", +"9f\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 25088572000\n}, \n{\n \"ETH_account\"", +" : \"0x7b74c19124a9ca92c6141a2ed5f92130fc", +"2791f2\",\n \"name\" : \"0x7b74c19124a9ca9", +"2c6\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 86017515400\n}, \n{\n \"ETH_account", +"\" : \"0xf81a4bb27bdd365587582e302515d5a23", +"5d20112\",\n \"name\" : \"0xf81a4bb27bdd36", +"5587\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 8518000\n}, \n{\n \"ETH_account\" :", +" \"0x4474903499247f7615c685548abb1e01250e", +"03db\",\n \"name\" : \"0x4474903499247f761", +"5\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 30000000000\n}, \n{\n \"ETH_account\" ", +": \"0x46278c9b4c17af0d1fe976f148f40292def", +"e2f5a\",\n \"name\" : \"0x46278c9b4c17af0d", +"1f\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 432000000\n}, \n{\n \"ETH_account\" :", +" \"0x5ab4f29e658ecbb57cefbeecde0a725d6a16", +"6040\",\n \"name\" : \"0x5ab4f29e658ecbb57", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1500000000\n}, \n{\n \"ETH_account\" :", +" \"0x4b6f01ec0211ef5f0a9990397cd966bc565c", +"b77f\",\n \"name\" : \"0x4b6f01ec0211ef5f0", +"a\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 212040000\n}, \n{\n \"ETH_account\" : ", +"\"0x5070f9e31e779b24ce4e4839bd79a43be48ec", +"910\",\n \"name\" : \"sophiasun\",\n \"pub", +"licKey\" : \"SPH4zuZ4yt15Tc1QQ9hocjeXLWrMR", +"amzrtMGhNooTs4ABA8uDeh1k\",\n \"balance\"", +" : 282000000\n}, \n{\n \"ETH_account\" : \"", +"0xf3b0f8dd6f2edbfe72de48f5eab850770322fe", +"d4\",\n \"name\" : \"0xf3b0f8dd6f2edbfe72\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1300000000\n}, \n{\n \"ETH_account\" : \"", +"0x18252dcf25d21e5d25aacfe312ff5355804355", +"75\",\n \"name\" : \"0x18252dcf25d21e5d25\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 285000000\n}, \n{\n \"ETH_account\" : \"0", +"xfcacd5e2f1f5eda8c9fc7b3046fa6ae5124422f", +"7\",\n \"name\" : \"polish\",\n \"publicKe", +"y\" : \"SPH5bM5Sdzv4X7uNwrAWNtiSusdgyxydGU", +"oFDqyPUQw1196fzS3vZ\",\n \"balance\" : 20", +"000000\n}, \n{\n \"ETH_account\" : \"0x0253", +"74004f1b658b56c0036178f8c7daa7373a7e\",\n ", +" \"name\" : \"0x025374004f1b658b56\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 9433", +"97969\n}, \n{\n \"ETH_account\" : \"0x58c19", +"0927305d718ba8099486640d24479cc7602\",\n ", +" \"name\" : \"0x58c190927305d718ba\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 400\n}", +", \n{\n \"ETH_account\" : \"0x4131cd53fd51", +"62f7ca9fb5715b7cfaa8a2d366f8\",\n \"name", +"\" : \"0x4131cd53fd5162f7ca\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1000000\n}, \n", +"{\n \"ETH_account\" : \"0xf0769f107af6034", +"901df8dfd5d37cdffdfd86d52\",\n \"name\" :", +" \"0xf0769f107af6034901\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 555000000\n}, \n{", +"\n \"ETH_account\" : \"0x695a22a9d2ea4ce7", +"e7ac0a6a59bbb9459277a069\",\n \"name\" : ", +"\"0x695a22a9d2ea4ce7e7\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 10547430000\n}, \n", +"{\n \"ETH_account\" : \"0x624ff7e352bc8f6", +"4b197aea5329495a211efe3da\",\n \"name\" :", +" \"0x624ff7e352bc8f64b1\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 51000000\n}, \n{\n", +" \"ETH_account\" : \"0x8428af22798b093d6", +"f8786c02402d9cb229b694b\",\n \"name\" : \"", +"0x8428af22798b093d6f\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 10000000000\n}, \n{", +"\n \"ETH_account\" : \"0x4a12ff9f2352ec0b", +"1c35042f92fa5cc62bfd6f32\",\n \"name\" : ", +"\"0x4a12ff9f2352ec0b1c\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 22000000\n}, \n{\n ", +" \"ETH_account\" : \"0xdb021c2ef3143d552a", +"e2d56cf5071c5c77908912\",\n \"name\" : \"0", +"xdb021c2ef3143d552a\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 113875000000\n}, \n{", +"\n \"ETH_account\" : \"0x479ecdfe166ad9f2", +"8014e31df1c753fb52d55595\",\n \"name\" : ", +"\"0x479ecdfe166ad9f280\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 4193331146\n}, \n{", +"\n \"ETH_account\" : \"0x1b1163656f9e861b", +"8ebf25a2c548f332ad5e4158\",\n \"name\" : ", +"\"0x1b1163656f9e861b8e\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 66268143\n}, \n{\n ", +" \"ETH_account\" : \"0x599de8999945129bca", +"b8fc79cf17c9568c8e5ffa\",\n \"name\" : \"0", +"x599de8999945129bca\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1167000000\n}, \n{\n ", +" \"ETH_account\" : \"0x3a3fe1cb6672828211", +"6802306093e327477cbbf1\",\n \"name\" : \"0", +"x3a3fe1cb6672828211\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 6074\n}, \n{\n \"ET", +"H_account\" : \"0x0014af65d276040675dd2c65", +"d2058be2b6da19ac\",\n \"name\" : \"0x0014a", +"f65d276040675\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 105000000\n}, \n{\n \"ETH", +"_account\" : \"0xaf37358631bfd150a9ab19d31", +"84986b6357de5ba\",\n \"name\" : \"0xaf3735", +"8631bfd150a9\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 6671859566\n}, \n{\n \"ETH", +"_account\" : \"0x1d596211f1d37eed1d4464713", +"1e29ab7339a9154\",\n \"name\" : \"0x1d5962", +"11f1d37eed1d\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2422640699\n}, \n{\n \"ETH", +"_account\" : \"0x20455387da5167441597db67f", +"65746ea31ed9713\",\n \"name\" : \"0x204553", +"87da51674415\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 5665000000\n}, \n{\n \"ETH", +"_account\" : \"0x06fada3f9f6d944b36dbb6d3c", +"3b32a4db4691d89\",\n \"name\" : \"0x06fada", +"3f9f6d944b36\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 320000000\n}, \n{\n \"ETH_", +"account\" : \"0x2400b95fafc6460bab54da8a6d", +"17f0d45fd9997c\",\n \"name\" : \"0x2400b95", +"fafc6460bab\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 21180000000\n}, \n{\n \"ETH", +"_account\" : \"0x1e468d22bab0a9235d473b920", +"0941b907355907d\",\n \"name\" : \"0x1e468d", +"22bab0a9235d\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 456460\n}, \n{\n \"ETH_acc", +"ount\" : \"0x91cc5d40c1b025f33083500723e2f", +"ae40c3b2b99\",\n \"name\" : \"0x91cc5d40c1", +"b025f330\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 11283475977\n}, \n{\n \"ETH_ac", +"count\" : \"0x55c08d095a75e028beca730a78b6", +"c8a450c176ae\",\n \"name\" : \"0x55c08d095", +"a75e028be\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 10000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xb747330b56012fdda47adeda2b20ae", +"88a0a7c6ba\",\n \"name\" : \"0xb747330b560", +"12fdda4\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 4246862867\n}, \n{\n \"ETH_acco", +"unt\" : \"0x546b6f0a90b4645a205c4911230b53", +"8fc2e4d286\",\n \"name\" : \"0x546b6f0a90b", +"4645a20\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 246161924\n}, \n{\n \"ETH_accou", +"nt\" : \"0xe62fd17f46920ca9f80ce3828bc4d77", +"b24eaa643\",\n \"name\" : \"0xe62fd17f4692", +"0ca9f8\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 23000000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x08716f7516d2a8945f0cd05f385646", +"50fadfbadd\",\n \"name\" : \"0x08716f7516d", +"2a8945f\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1126322747\n}, \n{\n \"ETH_acco", +"unt\" : \"0x27f254e349ee93ba6ecf6b6033de17", +"b76e2aaa1b\",\n \"name\" : \"namestring\",\n", +" \"publicKey\" : \"SPH8Mh76cbiDGdXzzQvj8", +"w2pt7Gt3S7tW2D4csqkCW3XMULDEgrUN\",\n \"", +"balance\" : 2650000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x1eeb706b5750c892987a9c19d34af", +"565540dd2dd\",\n \"name\" : \"0x1eeb706b57", +"50c89298\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1311723000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xbf5de22150f5e4dfe5f22717f0f47", +"58839ffa753\",\n \"name\" : \"0xbf5de22150", +"f5e4dfe5\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 20000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x65e939dd82d0e12dbbb7c1d358d7999", +"0232bafa3\",\n \"name\" : \"0x65e939dd82d0", +"e12dbb\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 5000000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x29286427292766d33c1a06edc7e711a", +"7ed74b9b1\",\n \"name\" : \"0x292864272927", +"66d33c\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 300000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x708e56ba6764d438a1065d635bded114", +"545222e3\",\n \"name\" : \"lightning\",\n ", +" \"publicKey\" : \"SPH7uiqJMs3urZYGMQKZe7wL", +"6AiFdwGMMW86jKK15vbaNWmHkmmTv\",\n \"bal", +"ance\" : 200000000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x1994531fa9c128f1c50fa1e5b36a7d", +"351a1cc07d\",\n \"name\" : \"0x1994531fa9c", +"128f1c5\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1730356000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x43564c14f29cbc81894b5e8ab35202", +"36ffa62268\",\n \"name\" : \"0x43564c14f29", +"cbc8189\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1041000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x4b06e6a5bcc9d442f28368aefedd09", +"47bd99b2ec\",\n \"name\" : \"0x4b06e6a5bcc", +"9d442f2\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 450000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x695ef80d104f471f9809258d0153471", +"739a48330\",\n \"name\" : \"0x695ef80d104f", +"471f98\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 4706572000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x41a1a6786aff5eb2ed2321dd178803a", +"f085162f1\",\n \"name\" : \"0x41a1a6786aff", +"5eb2ed\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 46000000\n}, \n{\n \"ETH_account", +"\" : \"0x4932ef3525276663e99a2051c9f76e3eb", +"169f773\",\n \"name\" : \"0x4932ef35252766", +"63e9\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 471000\n}, \n{\n \"ETH_account\" : ", +"\"0x3d0076656e0005054d93df4f1812cf9464604", +"251\",\n \"name\" : \"0x3d0076656e0005054d", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1804681000\n}, \n{\n \"ETH_account\" : ", +"\"0x846a652adab3901fce86ca9ee8ce46fbcc809", +"42c\",\n \"name\" : \"0x846a652adab3901fce", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 310000000\n}, \n{\n \"ETH_account\" : \"", +"0x9f2190329655c49189155ff21938231ef7ef96", +"16\",\n \"name\" : \"0x9f2190329655c49189\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 10000000\n}, \n{\n \"ETH_account\" : \"0x", +"34f7cb954c17f72b22cbd15fb31fae86d95eb437", +"\",\n \"name\" : \"0x34f7cb954c17f72b22\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"500000000\n}, \n{\n \"ETH_account\" : \"0x6", +"9b5c539a7a40e1caaf26b3c8a54513b2c2be76e\"", +",\n \"name\" : \"0x69b5c539a7a40e1caa\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"0000000\n}, \n{\n \"ETH_account\" : \"0x655", +"1f0b4907f136baaafd6b7637b44897ff8355b\",\n", +" \"name\" : \"0x6551f0b4907f136baa\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 504", +"2600000\n}, \n{\n \"ETH_account\" : \"0x99a", +"6dcca6e3ce54d9830c9bee16660ac19d01e23\",\n", +" \"name\" : \"0x99a6dcca6e3ce54d98\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 400", +"000000\n}, \n{\n \"ETH_account\" : \"0x9cbb", +"ef814bdc979bb116a65be0ddb1d5af679625\",\n ", +" \"name\" : \"0x9cbbef814bdc979bb1\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 6478", +"210000\n}, \n{\n \"ETH_account\" : \"0x794e", +"25f2a2c64bf3a7c4f260328b68add6102f2c\",\n ", +" \"name\" : \"denis\",\n \"publicKey\" : \"", +"SPH6aNKR34f5RJDMSW6SG7zfDGrh5vLuzbrYAWEd", +"4jbBtxD3eNzes\",\n \"balance\" : 66200000", +"0\n}, \n{\n \"ETH_account\" : \"0x8d0a7906c", +"309f7a0a42daf04fe1d49329ba44b33\",\n \"n", +"ame\" : \"0x8d0a7906c309f7a0a4\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 703000000", +"\n}, \n{\n \"ETH_account\" : \"0xdcbb341053", +"1f092b7cb368e09ac779cc1b29dbf8\",\n \"na", +"me\" : \"0xdcbb3410531f092b7c\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2401882739", +"\n}, \n{\n \"ETH_account\" : \"0x48457be395", +"7f084b5dc8e504356dd0c1760411d9\",\n \"na", +"me\" : \"0x48457be3957f084b5d\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 8116000000", +"\n}, \n{\n \"ETH_account\" : \"0xe424e600d8", +"f488d684afe35d7d606ffe706a56ee\",\n \"na", +"me\" : \"0xe424e600d8f488d684\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 166000000\n", +"}, \n{\n \"ETH_account\" : \"0xe4ba1c4ac56", +"6a049429432cc11f4724a4e394538\",\n \"nam", +"e\" : \"0xe4ba1c4ac566a04942\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1\n}, \n{\n ", +" \"ETH_account\" : \"0xcd0b973902f98b11eed8", +"114ef17f605d1a1352e2\",\n \"name\" : \"0xc", +"d0b973902f98b11ee\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1034799000\n}, \n{\n ", +" \"ETH_account\" : \"0xcda45e9ece56de92b9ef", +"8910e4a9619759ed529c\",\n \"name\" : \"0xc", +"da45e9ece56de92b9\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 7345701842\n}, \n{\n ", +" \"ETH_account\" : \"0xbc6db97bd71b48685580", +"64a0dd488f1b529b87c5\",\n \"name\" : \"0xb", +"c6db97bd71b486855\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 474000000\n}, \n{\n ", +"\"ETH_account\" : \"0x837cdecb0a4407c20c0c6", +"5c54c3dfe6e678dec17\",\n \"name\" : \"0x83", +"7cdecb0a4407c20c\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 200000\n}, \n{\n \"ETH", +"_account\" : \"0xb118ca39651f17c6418683df8", +"22af855db605084\",\n \"name\" : \"0xb118ca", +"39651f17c641\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1565000000\n}, \n{\n \"ETH", +"_account\" : \"0x6c403185ef8c02f27edf02826", +"551a1622e372a8b\",\n \"name\" : \"0x6c4031", +"85ef8c02f27e\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1885000000\n}, \n{\n \"ETH", +"_account\" : \"0x9e4699f49e127684345fa66df", +"2475ef5cf9d9de2\",\n \"name\" : \"0x9e4699", +"f49e12768434\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 7000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x39df683d4bb85f05aae04fd61a91f84", +"e57826e2d\",\n \"name\" : \"0x39df683d4bb8", +"5f05aa\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 2241425931\n}, \n{\n \"ETH_accou", +"nt\" : \"0x8f216213f48e01adff9f9da6a994e87", +"624a81e09\",\n \"name\" : \"0x8f216213f48e", +"01adff\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 898131000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x47d05e6f6cf0f00f68828d122a798add", +"3cfb2b7a\",\n \"name\" : \"0x47d05e6f6cf0f", +"00f68\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 4088000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x3140b3f0918fdb1d39723f80084ac752", +"9ee3bdc5\",\n \"name\" : \"0x3140b3f0918fd", +"b1d39\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 9000000\n}, \n{\n \"ETH_account\" ", +": \"0xf88e9995560bf88941d9056ca31c964cf91", +"05106\",\n \"name\" : \"0xf88e9995560bf889", +"41\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 229000000\n}, \n{\n \"ETH_account\" :", +" \"0x1f144b331d52e264ee7c7df4e3114fac4fdb", +"4804\",\n \"name\" : \"0x1f144b331d52e264e", +"e\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 352129512\n}, \n{\n \"ETH_account\" : ", +"\"0xb0dd55a0f7a03644406869b930f58afec2324", +"51c\",\n \"name\" : \"phinx\",\n \"publicK", +"ey\" : \"SPH7TMU3C9uhuvadU1PCRfU7EZCUTPpfs", +"cCBbdvQAGSP4jYsD5huj\",\n \"balance\" : 2", +"87855000000\n}, \n{\n \"ETH_account\" : \"0", +"x63c5c80324953f11327177dcdd7ca214db8d3e3", +"6\",\n \"name\" : \"0x63c5c80324953f1132\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 559000000\n}, \n{\n \"ETH_account\" : \"0x", +"59b9a0a36ab3825790eb0fde75bfd10c04167bf4", +"\",\n \"name\" : \"samsamyeah\",\n \"publi", +"cKey\" : \"SPH82uXkxNxpMrJCi7RPTySkmgyeS2u", +"jkBZwzUxbvzopN1YzN9aHc\",\n \"balance\" :", +" 66123354300\n}, \n{\n \"ETH_account\" : \"", +"0x89cbd1adf22354bcdcf82b14a4cb83cbf4772f", +"84\",\n \"name\" : \"0x89cbd1adf22354bcdc\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 4861000000\n}, \n{\n \"ETH_account\" : \"", +"0x792d9d64fcdf25275cec5582e75a6f6479014a", +"d6\",\n \"name\" : \"0x792d9d64fcdf25275c\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 20000000\n}, \n{\n \"ETH_account\" : \"0x", +"019c5f75f200183acb587bc0f1da9d6a3563c5ae", +"\",\n \"name\" : \"0x019c5f75f200183acb\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1\n}, \n{\n \"ETH_account\" : \"0x64f3903e1", +"2c45a4942e05241c122c85aa5586955\",\n \"n", +"ame\" : \"masterger\",\n \"publicKey\" : \"S", +"PH7gZZf6KS37Lp7dLaeyiwNSpzikjpSjzAtprDPA", +"7Rwxx6NTqRUe\",\n \"balance\" : 162000000", +"\n}, \n{\n \"ETH_account\" : \"0x4eb527975c", +"4374201a019f588f97d138816810a9\",\n \"na", +"me\" : \"0x4eb527975c4374201a\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 800000000\n", +"}, \n{\n \"ETH_account\" : \"0x89966c544b6", +"33abcc37d3efb414191bdb4cd7f35\",\n \"nam", +"e\" : \"0x89966c544b633abcc3\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 5400627000\n", +"}, \n{\n \"ETH_account\" : \"0x8764444145d", +"99f1ea490dd106a53f12f19218e3e\",\n \"nam", +"e\" : \"0x8764444145d99f1ea4\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 536\n}, \n{\n ", +" \"ETH_account\" : \"0xf671cbea41f77a994e", +"001556eac4af2e59f2bf19\",\n \"name\" : \"0", +"xf671cbea41f77a994e\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1325303324\n}, \n{\n ", +" \"ETH_account\" : \"0xa9cb03737f8efb3ccc", +"a8358bf75a4267b2457b79\",\n \"name\" : \"r", +"oflysophia\",\n \"publicKey\" : \"SPH5nNbq", +"eRMdFxQcCybT6p6CTTbGCCt3smS4WhDfG5u9zXwi", +"AN4ks\",\n \"balance\" : 4633550000\n}, \n{", +"\n \"ETH_account\" : \"0x2dbbe9521b294e7c", +"307cd9ad7696d166ff05092a\",\n \"name\" : ", +"\"0x2dbbe9521b294e7c30\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 498454790\n}, \n{\n", +" \"ETH_account\" : \"0xd2869032e6723eb3a", +"7d9bea9ec4d3b41d88435f9\",\n \"name\" : \"", +"0xd2869032e6723eb3a7\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 6058850000\n}, \n{\n", +" \"ETH_account\" : \"0xeddedf7c3f7cf3371", +"38898f6c2761497beb3f8c6\",\n \"name\" : \"", +"0xeddedf7c3f7cf33713\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 65000000\n}, \n{\n ", +" \"ETH_account\" : \"0x5b662a3e5aa1deb631a", +"3fe94ed742b1c22ed3b1f\",\n \"name\" : \"0x", +"5b662a3e5aa1deb631\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 329483000\n}, \n{\n ", +" \"ETH_account\" : \"0xab18913e732754d29773", +"48f2c824f6bc32b216e4\",\n \"name\" : \"0xa", +"b18913e732754d297\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 11480975874\n}, \n{\n ", +" \"ETH_account\" : \"0x423c3d92a91eccde95e", +"4dba35082567bbec8ddf7\",\n \"name\" : \"0x", +"423c3d92a91eccde95\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1183000000\n}, \n{\n ", +" \"ETH_account\" : \"0xd30928309218c0b8bbe", +"510b663e3f2505e807b45\",\n \"name\" : \"0x", +"d30928309218c0b8bb\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1763000000\n}, \n{\n ", +" \"ETH_account\" : \"0x753db239628772bd75a", +"4275ef06c7806d533e032\",\n \"name\" : \"0x", +"753db239628772bd75\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 234316000\n}, \n{\n ", +" \"ETH_account\" : \"0xfb32c09652636e750bdf", +"01eead9dca9ff306886b\",\n \"name\" : \"0xf", +"b32c09652636e750b\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 2943321000\n}, \n{\n ", +" \"ETH_account\" : \"0x8549e8bf7178f9b901e2", +"ed8dcc734876d93f1db7\",\n \"name\" : \"0x8", +"549e8bf7178f9b901\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 2885430131\n}, \n{\n ", +" \"ETH_account\" : \"0x78b741fd0816d2cae1fe", +"3f00e24041b987d34214\",\n \"name\" : \"0x7", +"8b741fd0816d2cae1\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 210000000\n}, \n{\n ", +"\"ETH_account\" : \"0x34b136e19f26b376f752e", +"68320f23319fcea80f6\",\n \"name\" : \"0x34", +"b136e19f26b376f7\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 750000000\n}, \n{\n \"", +"ETH_account\" : \"0x9bc1b796d9384c9de4af42", +"a85cf964b7db6ae8b4\",\n \"name\" : \"0x9bc", +"1b796d9384c9de4\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2359000000\n}, \n{\n \"", +"ETH_account\" : \"0x754a111f672e05e60d4f02", +"490a02415d989453ec\",\n \"name\" : \"0x754", +"a111f672e05e60d\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2450000000\n}, \n{\n \"", +"ETH_account\" : \"0x49e01ca79d207ac9a24c39", +"57c1e8c82e4f342d6f\",\n \"name\" : \"0x49e", +"01ca79d207ac9a2\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 220000000\n}, \n{\n \"E", +"TH_account\" : \"0x285479066580b7e4644c5e2", +"6bb822824078da63a\",\n \"name\" : \"0x2854", +"79066580b7e464\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 330000000\n}, \n{\n \"ET", +"H_account\" : \"0x877839c347676490b35ea534", +"93394cbfe537fe56\",\n \"name\" : \"0x87783", +"9c347676490b3\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 665000000\n}, \n{\n \"ETH", +"_account\" : \"0xb4c52c762ca6b56e4dc290cb8", +"7952bc8f49d0aa1\",\n \"name\" : \"derk\",\n ", +" \"publicKey\" : \"SPH6RZPpwm9F2HPrsnoREf", +"iL1oftkH16rCwBMQ1DnWTMmNYDJX36V\",\n \"b", +"alance\" : 2975436628\n}, \n{\n \"ETH_acco", +"unt\" : \"0xb750da824ef90362cd6b8be51e2126", +"7d84ce783f\",\n \"name\" : \"0xb750da824ef", +"90362cd\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 74000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x81937f2693be2f504ed61dc7b385f708", +"1eb10c90\",\n \"name\" : \"0x81937f2693be2", +"f504e\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 262000000\n}, \n{\n \"ETH_account", +"\" : \"0x24c35befe2ef047b55b65280f57a7a2cb", +"120af14\",\n \"name\" : \"0x24c35befe2ef04", +"7b55\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 673000000\n}, \n{\n \"ETH_account\"", +" : \"0x15ebf0706eb9edf5d89b39e80ba06754fb", +"552544\",\n \"name\" : \"0x15ebf0706eb9edf", +"5d8\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 220964000\n}, \n{\n \"ETH_account\" ", +": \"0xebeb817214e18ae7dc4d30333a9a0d8e710", +"c16d4\",\n \"name\" : \"0xebeb817214e18ae7", +"dc\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 508745000\n}, \n{\n \"ETH_account\" :", +" \"0x41f142d54de5522606252fa098f6f502a74d", +"c5fa\",\n \"name\" : \"0x41f142d54de552260", +"6\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1633540000\n}, \n{\n \"ETH_account\" :", +" \"0x9c41ea58c73b62418d4e432e242956338891", +"1c45\",\n \"name\" : \"0x9c41ea58c73b62418", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1760540000\n}, \n{\n \"ETH_account\" :", +" \"0xc8459f5ab6733c6c6accda51fa859d8172fc", +"926f\",\n \"name\" : \"0xc8459f5ab6733c6c6", +"a\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 541426000\n}, \n{\n \"ETH_account\" : ", +"\"0x4fc244aedc6a344d5e7e9e9edf82b412531c4", +"160\",\n \"name\" : \"0x4fc244aedc6a344d5e", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 159\n}, \n{\n \"ETH_account\" : \"0x5e62", +"47d71e905b5bbfd8eab658d7e8975c8003cb\",\n ", +" \"name\" : \"0x5e6247d71e905b5bbf\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 4000", +"00000\n}, \n{\n \"ETH_account\" : \"0x2f005", +"dc7081dbe3bfeece943c193b073409ff1f3\",\n ", +" \"name\" : \"0x2f005dc7081dbe3bfe\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10000", +"00000\n}, \n{\n \"ETH_account\" : \"0xd2030", +"5701dcdc8ced4d64b8491a5d21edbde70e2\",\n ", +" \"name\" : \"0xd20305701dcdc8ced4\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10000", +"00\n}, \n{\n \"ETH_account\" : \"0xdc1c0c79", +"92a1148eecdcbfe8e3065edc918a5f68\",\n \"", +"name\" : \"0xdc1c0c7992a1148eec\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 96300000", +"0\n}, \n{\n \"ETH_account\" : \"0xbd4ff64f0", +"0ae828216c64341c400f6d920e20a90\",\n \"n", +"ame\" : \"0xbd4ff64f00ae828216\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 65000000\n", +"}, \n{\n \"ETH_account\" : \"0x11289ec5254", +"1e53a9e5d89d0282142d7348cdb02\",\n \"nam", +"e\" : \"0x11289ec52541e53a9e\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 90000000000", +"\n}, \n{\n \"ETH_account\" : \"0x8ed94e1b17", +"46334d1c64cbc4b8b691ab1abe2922\",\n \"na", +"me\" : \"frippertronics\",\n \"publicKey\" ", +": \"SPH5LzsP1YcUgC1UDSZ5p2tjrtNkdoWGTA2ad", +"PTCBhrDCZGaY4R3u\",\n \"balance\" : 60020", +"00000\n}, \n{\n \"ETH_account\" : \"0x2b724", +"b9df855b156c3674d959ff06680b2118042\",\n ", +" \"name\" : \"0x2b724b9df855b156c3\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 74500", +"0000\n}, \n{\n \"ETH_account\" : \"0x3afb16", +"92adcb3e7ac81c77173d41b16829fb4ac2\",\n ", +" \"name\" : \"0x3afb1692adcb3e7ac8\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 105000", +"0000\n}, \n{\n \"ETH_account\" : \"0x4eebb3", +"12855a12cb8e5ee892271808b28c99324b\",\n ", +" \"name\" : \"0x4eebb312855a12cb8e\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 670000", +"00\n}, \n{\n \"ETH_account\" : \"0x0ab7cded", +"1c9b139c19a549a1163ee8a5bf72d246\",\n \"", +"name\" : \"0x0ab7cded1c9b139c19\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 27951562", +"4\n}, \n{\n \"ETH_account\" : \"0xb30d4b06f", +"dc2a603cd649eefaa3be3ca5f86e931\",\n \"n", +"ame\" : \"0xb30d4b06fdc2a603cd\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 755000000", +"\n}, \n{\n \"ETH_account\" : \"0xd4d283347b", +"8351398ff2f459d791b732b68d6b79\",\n \"na", +"me\" : \"0xd4d283347b8351398f\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 588000000\n", +"}, \n{\n \"ETH_account\" : \"0x1dc5f9092f2", +"0173adea78c36a3b42c405924e261\",\n \"nam", +"e\" : \"0x1dc5f9092f20173ade\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1094000000\n", +"}, \n{\n \"ETH_account\" : \"0x8bda861b310", +"f2d8bc6e56c350d26a3d3ee56cb1c\",\n \"nam", +"e\" : \"0x8bda861b310f2d8bc6\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 190000000\n}", +", \n{\n \"ETH_account\" : \"0xcabd98b2d36f", +"63b32141bd2e60bdbc221cb2efeb\",\n \"name", +"\" : \"0xcabd98b2d36f63b321\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 107000000\n},", +" \n{\n \"ETH_account\" : \"0xc284738a4e4cc", +"ca50f80e2f9a3d9e595cc255eb6\",\n \"name\"", +" : \"0xc284738a4e4ccca50f\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 769000000\n}, ", +"\n{\n \"ETH_account\" : \"0xe4ef71d98c05ee", +"fa68def5bfa5e2292fb74da74c\",\n \"name\" ", +": \"0xe4ef71d98c05eefa68\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 500000000\n}, \n", +"{\n \"ETH_account\" : \"0x53e554f80ca6647", +"47ec2755732fc5477db6fc50a\",\n \"name\" :", +" \"0x53e554f80ca664747e\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 2453875780\n}, \n", +"{\n \"ETH_account\" : \"0x9f711ed2ea95fef", +"a86f73e4c362ba456892408bd\",\n \"name\" :", +" \"0x9f711ed2ea95fefa86\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 810000000\n}, \n{", +"\n \"ETH_account\" : \"0x0c676d0b06695a62", +"a17307e77311d7495a98f3fe\",\n \"name\" : ", +"\"0x0c676d0b06695a62a1\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 118000000\n}, \n{\n", +" \"ETH_account\" : \"0x017610251a405e413", +"b57636a8e7e2d9eb341649d\",\n \"name\" : \"", +"0x017610251a405e413b\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 46\n}, \n{\n \"ETH", +"_account\" : \"0x5e98444ecefbea708e9465399", +"cfa5c4943fa0efe\",\n \"name\" : \"0x5e9844", +"4ecefbea708e\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1209592535\n}, \n{\n \"ETH", +"_account\" : \"0xdc54e681ab6892b7840ba07c7", +"f92d461b5a61bf7\",\n \"name\" : \"0xdc54e6", +"81ab6892b784\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2021165843\n}, \n{\n \"ETH", +"_account\" : \"0x5e9593174c09e39aa7df29924", +"5c494beb730c7f8\",\n \"name\" : \"wongkwok", +"yiew\",\n \"publicKey\" : \"SPH8YbuYiQ2DwT", +"x7RgfE3HSofMQM4dQFDYYd2ATm4x2Ffd8ka9wpi\"", +",\n \"balance\" : 55743241752\n}, \n{\n ", +"\"ETH_account\" : \"0x9aa615a1916507a58907c", +"e8d969939d5cba41aa8\",\n \"name\" : \"0x9a", +"a615a1916507a589\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 5867340665\n}, \n{\n ", +"\"ETH_account\" : \"0x5a972ddc9bc5c47a119b7", +"1bd2690ec348d147d7a\",\n \"name\" : \"0x5a", +"972ddc9bc5c47a11\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 729500000\n}, \n{\n \"", +"ETH_account\" : \"0x4ab8b5ed46a502e96081dd", +"d88b61892fd8a8dd06\",\n \"name\" : \"0x4ab", +"8b5ed46a502e960\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 92000000\n}, \n{\n \"ET", +"H_account\" : \"0x1b7ad65c538e4403fe50b0dc", +"f52f8badc0c05fb8\",\n \"name\" : \"0x1b7ad", +"65c538e4403fe\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 257000000\n}, \n{\n \"ETH", +"_account\" : \"0xf69de7108e2bfce995d768ada", +"20de181a2df1df2\",\n \"name\" : \"0xf69de7", +"108e2bfce995\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 50000000000\n}, \n{\n \"ET", +"H_account\" : \"0x5a00aa7a84cc58c7f0d88381", +"3ac94e70c3a1c4f3\",\n \"name\" : \"0x5a00a", +"a7a84cc58c7f0\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 39696\n}, \n{\n \"ETH_acc", +"ount\" : \"0x187b8f5d6231a808c49a9088b7e31", +"600d50ad914\",\n \"name\" : \"0x187b8f5d62", +"31a808c4\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 600\n}, \n{\n \"ETH_account\" :", +" \"0x8d1941ffc3fc6a9842ece7a69ae13f04e9e5", +"02b9\",\n \"name\" : \"0x8d1941ffc3fc6a984", +"2\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 113444000\n}, \n{\n \"ETH_account\" : ", +"\"0xe077190a88f0ea9effddebc0a73401b7e6974", +"92e\",\n \"name\" : \"0xe077190a88f0ea9eff", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 50000000\n}, \n{\n \"ETH_account\" : \"0", +"x8322490264ce51f1957b964babc07561a2a34b6", +"1\",\n \"name\" : \"0x8322490264ce51f195\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 441\n}, \n{\n \"ETH_account\" : \"0x25259b", +"01b0d6f5880db953ca27ab6d949752f604\",\n ", +" \"name\" : \"0x25259b01b0d6f5880d\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 116000", +"0000\n}, \n{\n \"ETH_account\" : \"0x2e9319", +"0a3ee0c440833bc9e0954e32ccc49575e8\",\n ", +" \"name\" : \"0x2e93190a3ee0c44083\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 321960", +"200\n}, \n{\n \"ETH_account\" : \"0x6fe90fa", +"2b8ee53044ae8397b1b3b21d34d87dae4\",\n ", +"\"name\" : \"0x6fe90fa2b8ee53044a\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2960757", +"40\n}, \n{\n \"ETH_account\" : \"0x676e7684", +"f5a0d88168eef88c38ec77669dec1c4b\",\n \"", +"name\" : \"benflex\",\n \"publicKey\" : \"SP", +"H6UN7ArnxTrpDXEcg5aEhgLiWepYnUfCzxLBvZWL", +"45Db8J5Hxqo\",\n \"balance\" : 5000000000", +"0\n}, \n{\n \"ETH_account\" : \"0x0187fb5b4", +"28213402d9fdc966d365a1f0ca66b90\",\n \"n", +"ame\" : \"0x0187fb5b428213402d\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 200000000", +"\n}, \n{\n \"ETH_account\" : \"0x42e8b2ffd1", +"535231a44481260ccba4844f2f1cf2\",\n \"na", +"me\" : \"0x42e8b2ffd1535231a4\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 3703122506", +"\n}, \n{\n \"ETH_account\" : \"0x41e9c1d767", +"16b6532450ba51b51d39fe62d1abe2\",\n \"na", +"me\" : \"mastakhra\",\n \"publicKey\" : \"SP", +"H6bxLLoWoK1S5oBjLrJ5Nbtt3ecLhAY2wv91xkSp", +"rwPMjTKvySK\",\n \"balance\" : 7459633756", +"\n}, \n{\n \"ETH_account\" : \"0xbd3ce1dd18", +"8cd59972c5d66a79c3a09d038bbfd1\",\n \"na", +"me\" : \"0xbd3ce1dd188cd59972\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 128000000\n", +"}, \n{\n \"ETH_account\" : \"0xa764505d2ea", +"e26b516aed37fc9cb221b3d75aac7\",\n \"nam", +"e\" : \"0xa764505d2eae26b516\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 911000\n}, \n", +"{\n \"ETH_account\" : \"0x2cd404e97110dc4", +"437112936d9a597fff0744fcc\",\n \"name\" :", +" \"0x2cd404e97110dc4437\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 72572313440\n}, ", +"\n{\n \"ETH_account\" : \"0x55a1fdefc6f7b3", +"76ec38143a86b73072face7904\",\n \"name\" ", +": \"0x55a1fdefc6f7b376ec\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 996038939\n}, \n", +"{\n \"ETH_account\" : \"0xc8983dbc28537f8", +"10f9712b9bae3076789dc96b9\",\n \"name\" :", +" \"lindagem\",\n \"publicKey\" : \"SPH83sdF", +"z245T1es4tp8ZvMgszkK4yFCQoLpt4g1er8chaiC", +"aMFSP\",\n \"balance\" : 147686915910\n}, ", +"\n{\n \"ETH_account\" : \"0x7ad378ca30de62", +"f87fe456fb8f88291ae15a7e80\",\n \"name\" ", +": \"mariabuch\",\n \"publicKey\" : \"SPH7M6", +"JjuC6ZBMEVyMAHwysE7AjvSeEnkfPS8SgoW5c2YB", +"TCHBZ9j\",\n \"balance\" : 125055107160\n}", +", \n{\n \"ETH_account\" : \"0x354dc3995f0a", +"57cf2e5d3e33c64e451494bab160\",\n \"name", +"\" : \"swan\",\n \"publicKey\" : \"SPH514WH8", +"XiEC7paF3bknUj7UYNABsN6E3Ko42gUUHgvVcxev", +"JjBf\",\n \"balance\" : 55280808390\n}, \n{", +"\n \"ETH_account\" : \"0x534792840efb94f0", +"4262bac34e53c3cf4e572f5f\",\n \"name\" : ", +"\"richard\",\n \"publicKey\" : \"SPH7jgesUx", +"FYsChZZ9w2aHzpoVrLwZ7ttEHscHUQFNn3WUa51A", +"gpV\",\n \"balance\" : 49168485030\n}, \n{\n", +" \"ETH_account\" : \"0xbc75b86f3c96aec93", +"9ead532c51caacdb9a30d10\",\n \"name\" : \"", +"nattom\",\n \"publicKey\" : \"SPH5QtRHtRFE", +"CNhkR8TuaMJ2SXS2xSxd4oQwb1e7g1FLzJ28d1G6", +"H\",\n \"balance\" : 113951303550\n}, \n{\n ", +" \"ETH_account\" : \"0x6cdee3f0c711aace5b", +"a6d7d85bf30c05a4b37e91\",\n \"name\" : \"0", +"x6cdee3f0c711aace5b\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 2014040419440\n}, \n", +"{\n \"ETH_account\" : \"0xaeb40b03c9e52b9", +"4ed3ac4b3b2210c11decc7015\",\n \"name\" :", +" \"marhulak\",\n \"publicKey\" : \"SPH83ZBN", +"XYyN6G6G7Br4TSQESXBkhbmW7Q9SghnuA9pgQuUn", +"eo5km\",\n \"balance\" : 4714040419440\n},", +" \n{\n \"ETH_account\" : \"0xfe00ed16676b6", +"d1c7e92391658ccc5d2bee1ea0c\",\n \"name\"", +" : \"0xfe00ed16676b6d1c7e\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 3000000000\n},", +" \n{\n \"ETH_account\" : \"0x76564d72198b4", +"8e1c948166b833f6cb90d1d3a93\",\n \"name\"", +" : \"0x76564d72198b48e1c9\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 186000000\n}, ", +"\n{\n \"ETH_account\" : \"0x94e5e9f807f206", +"97efb4801324f4a60abdfc459c\",\n \"name\" ", +": \"0x94e5e9f807f20697ef\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 76786964\n}, \n{", +"\n \"ETH_account\" : \"0x3b5368cdda27a2a0", +"e954efa2eae8f1ba1a68ab02\",\n \"name\" : ", +"\"0x3b5368cdda27a2a0e9\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 753000000\n}, \n{\n", +" \"ETH_account\" : \"0x98d1bc9b8137b1bbd", +"74094133e4d7b7922d4b5b2\",\n \"name\" : \"", +"taconito\",\n \"publicKey\" : \"SPH5PdtuNN", +"EaMVo4yTRrtH54ihmfsZEVj5VSB8HN29fAKGtssb", +"sAd\",\n \"balance\" : 618127828\n}, \n{\n ", +" \"ETH_account\" : \"0xb9fc13b94341e7d01bd", +"4b74d3e95ccafbfa28d23\",\n \"name\" : \"0x", +"b9fc13b94341e7d01b\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 750000000\n}, \n{\n ", +" \"ETH_account\" : \"0xe854132d601a45da70e0", +"643ea70955e104063eda\",\n \"name\" : \"sop", +"hiatxkuba\",\n \"publicKey\" : \"SPH85EWeG", +"wvURkzeNFM6FfmQkeG2297DTxdTgBWrNXWB3ZtjH", +"BKRD\",\n \"balance\" : 10781817006\n}, \n{", +"\n \"ETH_account\" : \"0x8bd79b1577d5ea4f", +"0cafc8e6cf008122b0498eb9\",\n \"name\" : ", +"\"0x8bd79b1577d5ea4f0c\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 50000000\n}, \n{\n ", +" \"ETH_account\" : \"0x78ee144dea0a03dd9b", +"6f1863834ffdfb22368762\",\n \"name\" : \"0", +"x78ee144dea0a03dd9b\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 58000000\n}, \n{\n ", +" \"ETH_account\" : \"0xe665cb8ad8a4f5b9b66b", +"48993ab21d0d1e88d899\",\n \"name\" : \"0xe", +"665cb8ad8a4f5b9b6\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 3455421180\n}, \n{\n ", +" \"ETH_account\" : \"0xf37c139ce503404f9b69", +"b610a468b887fb3ecd46\",\n \"name\" : \"0xf", +"37c139ce503404f9b\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 115000000\n}, \n{\n ", +"\"ETH_account\" : \"0x4e4e6f5c813e8869c8c5d", +"66718cab863bb407e6c\",\n \"name\" : \"0x4e", +"4e6f5c813e8869c8\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1745999902\n}, \n{\n ", +"\"ETH_account\" : \"0x34194069ba3b4f30c1d4a", +"09da249ec5c1e6df75b\",\n \"name\" : \"0x34", +"194069ba3b4f30c1\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 119999999739\n}, \n{\n ", +" \"ETH_account\" : \"0x6d6ecc96876bcb06fbd", +"b81aad75744c937acbe92\",\n \"name\" : \"0x", +"6d6ecc96876bcb06fb\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 12528000000\n}, \n{\n ", +" \"ETH_account\" : \"0xf2b5a7bca9c21c9390", +"c0a6643985be74c4da2a8c\",\n \"name\" : \"0", +"xf2b5a7bca9c21c9390\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 19000000\n}, \n{\n ", +" \"ETH_account\" : \"0x9672f18cbc8f9fed16fb", +"7354d077ad374d32164b\",\n \"name\" : \"pow", +"erbahr\",\n \"publicKey\" : \"SPH5Jr3mHHUJ", +"6619ZPJFDePFMAmt9XATVBJosjyaPhTEfK1oGfHk", +"n\",\n \"balance\" : 591174175\n}, \n{\n ", +"\"ETH_account\" : \"0xfbdeb24fdca695d585585", +"e6de98ac1737e0d267d\",\n \"name\" : \"0xfb", +"deb24fdca695d585\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 3500000000\n}, \n{\n ", +"\"ETH_account\" : \"0xd47fab6693d2bdca9ecc3", +"5741b543c26c6fd95d7\",\n \"name\" : \"0xd4", +"7fab6693d2bdca9e\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 900000000\n}, \n{\n \"", +"ETH_account\" : \"0x8cf8be432d0e94d5a5f4b4", +"cf56b7427e49f28447\",\n \"name\" : \"0x8cf", +"8be432d0e94d5a5\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1000000\n}, \n{\n \"ETH", +"_account\" : \"0xed8df8c552a44328d5e74b61e", +"b5346b5f65236ed\",\n \"name\" : \"0xed8df8", +"c552a44328d5\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 400000000\n}, \n{\n \"ETH_", +"account\" : \"0xb0c5c70e9da2e90e2ac6e03400", +"52b84d79972f29\",\n \"name\" : \"0xb0c5c70", +"e9da2e90e2a\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1800000000\n}, \n{\n \"ETH_", +"account\" : \"0x244e2cae27a1b7a9f5473d8849", +"b2062ce636cf93\",\n \"name\" : \"0x244e2ca", +"e27a1b7a9f5\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 330000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x6eafcad44986e8fc3d1e49e0cae", +"f465783652e62\",\n \"name\" : \"0x6eafcad4", +"4986e8fc3d\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 49259235\n}, \n{\n \"ETH_acc", +"ount\" : \"0x08bb7f11e8fcfcf971948facc8902", +"2206e13f79f\",\n \"name\" : \"0x08bb7f11e8", +"fcfcf971\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x6da76411385932624e8727d45418146a", +"4fcb7a6b\",\n \"name\" : \"0x6da7641138593", +"2624e\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 7229826470\n}, \n{\n \"ETH_accoun", +"t\" : \"0x4f3f44324298c6f55cc1e3fa00eb95ca", +"8dc3a811\",\n \"name\" : \"lylo\",\n \"pub", +"licKey\" : \"SPH5k341NExTBNFgNxGfbGTBzaUfk", +"6ggxaNzE9Tq5t5hMoBn3rWBL\",\n \"balance\"", +" : 120000000\n}, \n{\n \"ETH_account\" : \"", +"0xbc8da288c106d83588751e30b45493a9ac7751", +"61\",\n \"name\" : \"0xbc8da288c106d83588\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 11276999979\n}, \n{\n \"ETH_account\" : ", +"\"0xfded32c098a363a07604af2a67c799a166c8e", +"c01\",\n \"name\" : \"0xfded32c098a363a076", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 245000000\n}, \n{\n \"ETH_account\" : \"", +"0x95dc13cb5bb99fb2f1705e7d70ffa1f9e25736", +"41\",\n \"name\" : \"0x95dc13cb5bb99fb2f1\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1504637300\n}, \n{\n \"ETH_account\" : \"", +"0x2eb30ba075bde793bbc48f10ce868f232a2566", +"15\",\n \"name\" : \"0x2eb30ba075bde793bb\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1575000000\n}, \n{\n \"ETH_account\" : \"", +"0xb424fe40a56cb518dd308ffa1ca1874295a334", +"7c\",\n \"name\" : \"0xb424fe40a56cb518dd\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 139307600000\n}, \n{\n \"ETH_account\" :", +" \"0x4377f0787428d47c675640ac8ee17f77b2e4", +"1303\",\n \"name\" : \"0x4377f0787428d47c6", +"7\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1300000000\n}, \n{\n \"ETH_account\" :", +" \"0xeb1387345e0d6df1c80b8eb057ebec101e82", +"919b\",\n \"name\" : \"0xeb1387345e0d6df1c", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 249000000\n}, \n{\n \"ETH_account\" : ", +"\"0x1e7c6e93ba312f10ce6421328d50ec13d44ff", +"c7e\",\n \"name\" : \"0x1e7c6e93ba312f10ce", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 139307600000\n}, \n{\n \"ETH_account\" ", +": \"0xf6f8b764f163fdc6f2cbcba19cdf7a56f5e", +"81b79\",\n \"name\" : \"0xf6f8b764f163fdc6", +"f2\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 150000000\n}, \n{\n \"ETH_account\" :", +" \"0x246bbe4b716961ed935789e2369628618aee", +"73b5\",\n \"name\" : \"0x246bbe4b716961ed9", +"3\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 154000000\n}, \n{\n \"ETH_account\" : ", +"\"0xf5a42683d4458ba74a0829e1e6e04612422f9", +"ba1\",\n \"name\" : \"0xf5a42683d4458ba74a", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 380000000\n}, \n{\n \"ETH_account\" : \"", +"0xf9bb806edbf0059cf74c48805ccda77009ea2f", +"ea\",\n \"name\" : \"0xf9bb806edbf0059cf7\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1131541715\n}, \n{\n \"ETH_account\" : \"", +"0x3e9df5e6c6149352d47daa44b873231ffd3f7a", +"13\",\n \"name\" : \"0x3e9df5e6c6149352d4\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 520000000\n}, \n{\n \"ETH_account\" : \"0", +"x14ebc6805a3dc432695fb7ab146d0290dd1d1b6", +"0\",\n \"name\" : \"0x14ebc6805a3dc43269\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1499999999\n}, \n{\n \"ETH_account\" : \"0", +"x5695a2601faf05473e9566105f1074da2202c75", +"6\",\n \"name\" : \"0x5695a2601faf05473e\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 4107000000\n}, \n{\n \"ETH_account\" : \"0", +"x15c68122daf868eb124044e5f2aaa41b040dabe", +"7\",\n \"name\" : \"0x15c68122daf868eb12\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 38059178\n}, \n{\n \"ETH_account\" : \"0x3", +"14e25682848267ae8c96e901434bfc5dc597c10\"", +",\n \"name\" : \"0x314e25682848267ae8\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 6", +"16626545\n}, \n{\n \"ETH_account\" : \"0x08", +"ee18cbe00b2ca13f64dedadb108633e874d0e6\",", +"\n \"name\" : \"sophiacoinswap\",\n \"pub", +"licKey\" : \"SPH7kBtUwySTNoDhfU1JDmLVP6q8T", +"Ujjmvoz3iJEk4teeyF2bhSYe\",\n \"balance\"", +" : 166000701900\n}, \n{\n \"ETH_account\" ", +": \"0xe54862299a152e3affd7b00838d20e36456", +"8d842\",\n \"name\" : \"0xe54862299a152e3a", +"ff\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 59\n}, \n{\n \"ETH_account\" : \"0x03b", +"b822c4c4fd9858708dbcad8f338fac3d21376\",\n", +" \"name\" : \"0x03bb822c4c4fd98587\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 110", +"0000000\n}, \n{\n \"ETH_account\" : \"0xfdc", +"fd35ff7ca08a04e9a109ba995f9011bc643cc\",\n", +" \"name\" : \"0xfdcfd35ff7ca08a04e\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 570", +"000000\n}, \n{\n \"ETH_account\" : \"0xb86b", +"104d253565505c1df4b7566b68f413681390\",\n ", +" \"name\" : \"0xb86b104d253565505c\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1000", +"000000\n}, \n{\n \"ETH_account\" : \"0x6377", +"a04c4279157c3a3d490963503abd4029cb3c\",\n ", +" \"name\" : \"0x6377a04c4279157c3a\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2609", +"128548\n}, \n{\n \"ETH_account\" : \"0x5968", +"81a32eb316c0d72aaf135766fa0ce50b76d1\",\n ", +" \"name\" : \"0x596881a32eb316c0d7\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2000", +"103839\n}, \n{\n \"ETH_account\" : \"0x2594", +"cbcb188fd91a1bc9918034d75978b2efb0aa\",\n ", +" \"name\" : \"0x2594cbcb188fd91a1b\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 9146", +"\n}, \n{\n \"ETH_account\" : \"0x3f65c8d6f2", +"016677e3f0dd90a331719d2d8f0298\",\n \"na", +"me\" : \"0x3f65c8d6f2016677e3\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2000000000", +"\n}, \n{\n \"ETH_account\" : \"0x6bc43d04eb", +"7249e8706e11a6424049b492918d1e\",\n \"na", +"me\" : \"0x6bc43d04eb7249e870\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1797715000", +"\n}, \n{\n \"ETH_account\" : \"0xb04ec66395", +"e1fd1a5cd27bebb5c3e96efe887cc6\",\n \"na", +"me\" : \"0xb04ec66395e1fd1a5c\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 100000000\n", +"}, \n{\n \"ETH_account\" : \"0xbee43e315be", +"90b034c378894b16ec3eceb6818d0\",\n \"nam", +"e\" : \"tercis\",\n \"publicKey\" : \"SPH6rz", +"C89vkB9fYP1n2C6ACeSLf92wzRqZ74FA7bLMnYt4", +"NdYMgeX\",\n \"balance\" : 5500000000\n}, ", +"\n{\n \"ETH_account\" : \"0x70366d00ead55f", +"33a2ed49fe2d7ad157916c8449\",\n \"name\" ", +": \"0x70366d00ead55f33a2\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 2548728777\n}, ", +"\n{\n \"ETH_account\" : \"0xd5a8433783e00f", +"45c538219b0f491278c191e320\",\n \"name\" ", +": \"0xd5a8433783e00f45c5\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 100000000\n}, \n", +"{\n \"ETH_account\" : \"0xc717f4a45ac2468", +"d6eafcbed1356c20f1d16bb63\",\n \"name\" :", +" \"0xc717f4a45ac2468d6e\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 6249718405\n}, \n", +"{\n \"ETH_account\" : \"0x578910893387973", +"dab40d5dfd1794ae953c67db1\",\n \"name\" :", +" \"onnovanvelzen\",\n \"publicKey\" : \"SPH", +"7CR58u7svhdJxTpZ2oK9FPEY6KvneTZST8Ji5WCU", +"GQfXbT3ZnL\",\n \"balance\" : 1053883148\n", +"}, \n{\n \"ETH_account\" : \"0x4bdfc44bfb2", +"f5329cd1647002cbb664a43dcf945\",\n \"nam", +"e\" : \"0x4bdfc44bfb2f5329cd\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 200000000\n}", +", \n{\n \"ETH_account\" : \"0x18bc4a50ff57", +"8f5d583c3ccdcd1600a106532408\",\n \"name", +"\" : \"desphtx\",\n \"publicKey\" : \"SPH8EZ", +"PCJHaT31cHnD76kHMgNC7PcKjGSWfpbdWPXj6aBg", +"cZrsnhy\",\n \"balance\" : 1743579473\n}, ", +"\n{\n \"ETH_account\" : \"0x833618c99e943d", +"5580365ef22b3686bfb0211272\",\n \"name\" ", +": \"0x833618c99e943d5580\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 22576378000\n},", +" \n{\n \"ETH_account\" : \"0xa9486e378f72d", +"7edbfe349b602e254b3dc61ad13\",\n \"name\"", +" : \"0xa9486e378f72d7edbf\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 30000\n}, \n{\n ", +" \"ETH_account\" : \"0x4fcd4d73e330b5ff7a", +"4204adc6783b43efed4ce1\",\n \"name\" : \"0", +"x4fcd4d73e330b5ff7a\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1000000\n}, \n{\n ", +"\"ETH_account\" : \"0x9381d3efaffef651c6a0c", +"407603ab41963ca0093\",\n \"name\" : \"0x93", +"81d3efaffef651c6\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 101609965\n}, \n{\n \"", +"ETH_account\" : \"0x5436986264a43b58cb201f", +"c5a2e8bb2abcb7fb56\",\n \"name\" : \"0x543", +"6986264a43b58cb\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 4371479169\n}, \n{\n \"", +"ETH_account\" : \"0xdbdec5938da5c542e2a84b", +"ea8eda35817d7bb73c\",\n \"name\" : \"0xdbd", +"ec5938da5c542e2\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 192808629\n}, \n{\n \"E", +"TH_account\" : \"0x45d0d860c34d0d3da310f20", +"3616bc5cd0f904209\",\n \"name\" : \"0x45d0", +"d860c34d0d3da3\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1304688000\n}, \n{\n \"E", +"TH_account\" : \"0xa02b66b3878e5a269ba246e", +"2ad7740bc4496bac9\",\n \"name\" : \"0xa02b", +"66b3878e5a269b\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 38000\n}, \n{\n \"ETH_ac", +"count\" : \"0x3036c30fda13780c40e94701fa9d", +"03a4efcd1092\",\n \"name\" : \"0x3036c30fd", +"a13780c40\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 760000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x0077ed663ed37933bf82da1b042c9", +"3f4beb2e0f8\",\n \"name\" : \"0x0077ed663e", +"d37933bf\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 370000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xf5b4805d2a5eb912e0214ec9f34291", +"916e28b97d\",\n \"name\" : \"0xf5b4805d2a5", +"eb912e0\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 871000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x0ffacb425a42f4fac414740c1c8a1c3", +"18ca80830\",\n \"name\" : \"0x0ffacb425a42", +"f4fac4\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1891000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x61c8656d0fe21d17037783224c52602", +"5b8a5d29a\",\n \"name\" : \"0x61c8656d0fe2", +"1d1703\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1288372000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x298015d7b583927496f6efad9aac2cd", +"a754ea701\",\n \"name\" : \"0x298015d7b583", +"927496\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 350428000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x18f3eb33092242b83b503ab2b5e07672", +"debe4aa8\",\n \"name\" : \"0x18f3eb3309224", +"2b83b\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 304000000\n}, \n{\n \"ETH_account", +"\" : \"0x8768b5d6cb67e613a5a379b91fb644658", +"b6c1fec\",\n \"name\" : \"0x8768b5d6cb67e6", +"13a5\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 672000000\n}, \n{\n \"ETH_account\"", +" : \"0x104f67145d563c19499291bf0d6845b4cf", +"633e0d\",\n \"name\" : \"0x104f67145d563c1", +"949\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 802541000\n}, \n{\n \"ETH_account\" ", +": \"0xc4959e19275064d1feaccbdd5a46f303cab", +"ad5ec\",\n \"name\" : \"0xc4959e19275064d1", +"fe\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 4063981124\n}, \n{\n \"ETH_account\" ", +": \"0x917dd8bbe7f643fa6512e38fa37b874d18e", +"dbd51\",\n \"name\" : \"0x917dd8bbe7f643fa", +"65\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 70000000\n}, \n{\n \"ETH_account\" : ", +"\"0x4af01a2bb515ac95e8592c8d7efbf7a3ae304", +"51b\",\n \"name\" : \"0x4af01a2bb515ac95e8", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 253000000\n}, \n{\n \"ETH_account\" : \"", +"0x89cccfdb5274d71ab3acd3324e810ee38fc71f", +"de\",\n \"name\" : \"0x89cccfdb5274d71ab3\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 63000000\n}, \n{\n \"ETH_account\" : \"0x", +"55471814fdebdbbbd96739dbab17c8d0a030348f", +"\",\n \"name\" : \"0x55471814fdebdbbbd9\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"2500000000\n}, \n{\n \"ETH_account\" : \"0x", +"cc738268a077d22648558d56334696ddf3dba02a", +"\",\n \"name\" : \"0xcc738268a077d22648\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"230000000\n}, \n{\n \"ETH_account\" : \"0x4", +"526c54b065dddd6b1044bf696c5068b491716a9\"", +",\n \"name\" : \"0x4526c54b065dddd6b1\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"10000000\n}, \n{\n \"ETH_account\" : \"0x03", +"3373ef576a8833c9d45ff4d5d049398f6ae487\",", +"\n \"name\" : \"0x033373ef576a8833c9\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 50", +"0000\n}, \n{\n \"ETH_account\" : \"0x966b73", +"f567717587a4ad56f4e4dc68c289bc0690\",\n ", +" \"name\" : \"0x966b73f567717587a4\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 285874", +"30868\n}, \n{\n \"ETH_account\" : \"0x6692c", +"2eee6a373e10c625ae97725cf1169da6517\",\n ", +" \"name\" : \"0x6692c2eee6a373e10c\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 59410", +"5828\n}, \n{\n \"ETH_account\" : \"0xa970d1", +"75e16b74c868b9a25657da9b2385dd1320\",\n ", +" \"name\" : \"0xa970d175e16b74c868\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 23\n}, ", +"\n{\n \"ETH_account\" : \"0x00c4d5b808f32b", +"25a7a17d4f25c91ec2b1afd50d\",\n \"name\" ", +": \"0x00c4d5b808f32b25a7\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 2463064000\n}, ", +"\n{\n \"ETH_account\" : \"0x925149adc729a6", +"03cd45a2b3574fb6a03c174d5f\",\n \"name\" ", +": \"optometrix\",\n \"publicKey\" : \"SPH6i", +"bap9KC9C9yYQHAAXGk4ZJarTYqFvxwmexU8mGBeX", +"kuy7NSTw\",\n \"balance\" : 179382700\n}, ", +"\n{\n \"ETH_account\" : \"0x22a70ffd5d1a12", +"4815f515eacb807b2c3891e1ec\",\n \"name\" ", +": \"0x22a70ffd5d1a124815\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 992000\n}, \n{\n ", +" \"ETH_account\" : \"0xa1463ba6f076341b5a", +"4698b37a10b83fcf2e0232\",\n \"name\" : \"0", +"xa1463ba6f076341b5a\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 54000000\n}, \n{\n ", +" \"ETH_account\" : \"0xf4a45a1b88f7a1635582", +"8948ea43d27eaf7c5eb4\",\n \"name\" : \"0xf", +"4a45a1b88f7a16355\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 211000000\n}, \n{\n ", +"\"ETH_account\" : \"0x04d976927def641d85bcc", +"53a35c321f066ee110f\",\n \"name\" : \"0x04", +"d976927def641d85\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1585000000\n}, \n{\n ", +"\"ETH_account\" : \"0xae9863ccd4fd5db7e5460", +"4b40425edb2124f967e\",\n \"name\" : \"bem0", +"20\",\n \"publicKey\" : \"SPH558NwSv4kQwS6", +"9ykwB9PQgrRUnJmv54eeT87z4F7DUzsSfTaV4\",\n", +" \"balance\" : 9407828000\n}, \n{\n \"ET", +"H_account\" : \"0x094d2bd7287189b66b8e391b", +"3b1912ac9db632d3\",\n \"name\" : \"0x094d2", +"bd7287189b66b\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 20000000\n}, \n{\n \"ETH_", +"account\" : \"0x59f5023021b07bcd5c60944f31", +"9739b63aa4dbd3\",\n \"name\" : \"0x59f5023", +"021b07bcd5c\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 9999999999\n}, \n{\n \"ETH_", +"account\" : \"0x02175b8d1673ba861b1b97929d", +"0aad5639cb8f69\",\n \"name\" : \"0x02175b8", +"d1673ba861b\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2687277037\n}, \n{\n \"ETH_", +"account\" : \"0x70239c769a5a4c0b9f4d5081fc", +"b6ae05b016a268\",\n \"name\" : \"andrewbdr", +"r\",\n \"publicKey\" : \"SPH8fwxdoBueFAMem", +"UGDQNLq75nLoRpAnA7pHQEgJxQZA6Dsgd6ja\",\n ", +" \"balance\" : 7027644174\n}, \n{\n \"ETH", +"_account\" : \"0x35bd1f8bfc9c9ad3b5f7233c6", +"55aefaa78ae5ee2\",\n \"name\" : \"0x35bd1f", +"8bfc9c9ad3b5\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2138058000\n}, \n{\n \"ETH", +"_account\" : \"0x31e982d2fde760a0780e246e6", +"479608d838db27b\",\n \"name\" : \"winkbuul", +"\",\n \"publicKey\" : \"SPH6u7wd5kLqWqb8cS", +"yRijkUVxfUXefgBai89ZuFkvdWf2cuGGXFP\",\n ", +" \"balance\" : 820000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x357678fc349f9081b4be5d22217", +"107e18836f3e4\",\n \"name\" : \"larahilleb", +"rants\",\n \"publicKey\" : \"SPH6rp4JKLwEo", +"kn9J8AEfiTnSUmz6X7sPz2w1PNX1gPVnP2P2xLC7", +"\",\n \"balance\" : 930000000\n}, \n{\n \"", +"ETH_account\" : \"0x9bc95a8b3f059be2b4add9", +"bc9cf242cc6a51d913\",\n \"name\" : \"0x9bc", +"95a8b3f059be2b4\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 750345000\n}, \n{\n \"E", +"TH_account\" : \"0xee71f72bb9bd8e333b89766", +"1dd14ae643248dbc7\",\n \"name\" : \"0xee71", +"f72bb9bd8e333b\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 300000000\n}, \n{\n \"ET", +"H_account\" : \"0x41e622c06d6ba2e9b5998a4a", +"aea242931693da3c\",\n \"name\" : \"0x41e62", +"2c06d6ba2e9b5\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 8624850000\n}, \n{\n \"ET", +"H_account\" : \"0x5311790a04a6e0e370e2c05f", +"81026513fbadc796\",\n \"name\" : \"0x53117", +"90a04a6e0e370\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 4386353653\n}, \n{\n \"ET", +"H_account\" : \"0x5d641032c7bc6285c1a077a4", +"aaadc939c4bd1d7e\",\n \"name\" : \"0x5d641", +"032c7bc6285c1\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 6026036438\n}, \n{\n \"ET", +"H_account\" : \"0x368dba549f3403888ed5c1f6", +"033f6094923d5e92\",\n \"name\" : \"0x368db", +"a549f3403888e\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 3650315913\n}, \n{\n \"ET", +"H_account\" : \"0x91312a61853ebe3bee178231", +"f20446462daf4532\",\n \"name\" : \"0x91312", +"a61853ebe3bee\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 11972773946\n}, \n{\n \"E", +"TH_account\" : \"0xacbd034ac9c29320295b0e2", +"359408c968d0f8d17\",\n \"name\" : \"0xacbd", +"034ac9c2932029\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 5211951200\n}, \n{\n \"E", +"TH_account\" : \"0x5ac8f8605414188e0699764", +"417b8b1ce32a0b6dd\",\n \"name\" : \"0x5ac8", +"f8605414188e06\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 5121256300\n}, \n{\n \"E", +"TH_account\" : \"0x4698fa832130d06d9ad3138", +"1fd6e8826c0db07fa\",\n \"name\" : \"0x4698", +"fa832130d06d9a\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 200000000\n}, \n{\n \"ET", +"H_account\" : \"0xaab0f0b4c5a97e7add2c0bc1", +"b3d6234699e3cc1e\",\n \"name\" : \"0xaab0f", +"0b4c5a97e7add\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1276476871\n}, \n{\n \"ET", +"H_account\" : \"0xc5b6a594801c3f1ecd22d33d", +"3c36fa9c2fdb7f3e\",\n \"name\" : \"0xc5b6a", +"594801c3f1ecd\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 299000000\n}, \n{\n \"ETH", +"_account\" : \"0x2a8a53ac21be68c99dd0cb622", +"0004c8feda5b952\",\n \"name\" : \"0x2a8a53", +"ac21be68c99d\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 30000000000\n}, \n{\n \"ET", +"H_account\" : \"0x4d933f494524347a83833227", +"99adb82de36091b1\",\n \"name\" : \"0x4d933", +"f494524347a83\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 265000000\n}, \n{\n \"ETH", +"_account\" : \"0x25167a959c5fdf1a61e09bafa", +"e8b785121ef132b\",\n \"name\" : \"0x25167a", +"959c5fdf1a61\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 850665000\n}, \n{\n \"ETH_", +"account\" : \"0x3d21c0cfcc3c7a2a5729a8ed5a", +"678dd404a83b80\",\n \"name\" : \"0x3d21c0c", +"fcc3c7a2a57\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1471173900\n}, \n{\n \"ETH_", +"account\" : \"0x0f3a708703ed6d7e7f8416d41f", +"15a9d6efb301f2\",\n \"name\" : \"0x0f3a708", +"703ed6d7e7f\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 908960832\n}, \n{\n \"ETH_a", +"ccount\" : \"0x82c5ed10f9f4c1f0e5e36fc0a89", +"c56f4331bd104\",\n \"name\" : \"0x82c5ed10", +"f9f4c1f0e5\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2220410963\n}, \n{\n \"ETH_a", +"ccount\" : \"0x2722bb433ad155c0c732446bafb", +"86aef1e2634d9\",\n \"name\" : \"0x2722bb43", +"3ad155c0c7\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 790539000\n}, \n{\n \"ETH_ac", +"count\" : \"0xc936c28629fbfd9b67f4cd588f77", +"fa853b6669b0\",\n \"name\" : \"0xc936c2862", +"9fbfd9b67\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 800000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x78f818752748a1322cf40a91c13ee", +"a3c012f81e3\",\n \"name\" : \"0x78f8187527", +"48a1322c\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x965ee99d880c4aae4fbef0383b5098b6", +"3007857a\",\n \"name\" : \"0x965ee99d880c4", +"aae4f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 831439000\n}, \n{\n \"ETH_account", +"\" : \"0x1d2e6ac802d0aa0278c933bd45c05ac71", +"b2feb7c\",\n \"name\" : \"0x1d2e6ac802d0aa", +"0278\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 56199000\n}, \n{\n \"ETH_account\" ", +": \"0xff957402d567ad8ea5b4d5baa03ca7cf987", +"aed00\",\n \"name\" : \"0xff957402d567ad8e", +"a5\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 626019623\n}, \n{\n \"ETH_account\" :", +" \"0x33834df0d50a6f912b62d5c30b42818b9045", +"db66\",\n \"name\" : \"0x33834df0d50a6f912", +"b\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 249000000\n}, \n{\n \"ETH_account\" : ", +"\"0x2075bd9ec2c6d03d019b397be55e33a593de3", +"021\",\n \"name\" : \"0x2075bd9ec2c6d03d01", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 345999000\n}, \n{\n \"ETH_account\" : \"", +"0x46f21b7d4a0998dab2f25dab59e12dadfec1cc", +"4d\",\n \"name\" : \"0x46f21b7d4a0998dab2\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2782831519\n}, \n{\n \"ETH_account\" : \"", +"0x4af3789e443fb30f6ada00bf00af6938d61bd9", +"56\",\n \"name\" : \"0x4af3789e443fb30f6a\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 267353000\n}, \n{\n \"ETH_account\" : \"0", +"x4d51927fde086c386a7f093d1c28b46d88aebbf", +"0\",\n \"name\" : \"0x4d51927fde086c386a\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 362751\n}, \n{\n \"ETH_account\" : \"0x178", +"6204d03e4586d50a8c429ad181aecbfe29931\",\n", +" \"name\" : \"0x1786204d03e4586d50\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 177", +"4641794\n}, \n{\n \"ETH_account\" : \"0x7ca", +"489445465d83eb4efaf666658fdd6768155ef\",\n", +" \"name\" : \"0x7ca489445465d83eb4\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 253", +"0000000\n}, \n{\n \"ETH_account\" : \"0xb5c", +"c3a2ec83be6b6155d33f4c4ddf62be8e3e115\",\n", +" \"name\" : \"0xb5cc3a2ec83be6b615\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 600", +"000000\n}, \n{\n \"ETH_account\" : \"0xb678", +"49e9a30f72ed3a176ac5743d97a1bbec291c\",\n ", +" \"name\" : \"0xb67849e9a30f72ed3a\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2500", +"000000\n}, \n{\n \"ETH_account\" : \"0x5682", +"2a69bf5dd4e330e787f6aad48ed7e9fdc010\",\n ", +" \"name\" : \"0x56822a69bf5dd4e330\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 7827", +"52000\n}, \n{\n \"ETH_account\" : \"0x1fb5a", +"b02b67be98f78506dc3f9de32c81a447307\",\n ", +" \"name\" : \"0x1fb5ab02b67be98f78\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 70841", +"9888\n}, \n{\n \"ETH_account\" : \"0x083c6e", +"7be9a3985e890bee68a71f94bcfa71a093\",\n ", +" \"name\" : \"0x083c6e7be9a3985e89\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 145539", +"0000\n}, \n{\n \"ETH_account\" : \"0x11880d", +"483638c5718c77851ed4a86be4b266e6ed\",\n ", +" \"name\" : \"0x11880d483638c5718c\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 584347", +"858\n}, \n{\n \"ETH_account\" : \"0xf0095ee", +"49d7b8f1c2b105a04343012067e6063fe\",\n ", +"\"name\" : \"0xf0095ee49d7b8f1c2b\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5985800", +"0000\n}, \n{\n \"ETH_account\" : \"0xaba159", +"a11ac8542254ecc312485d46b4646b77b4\",\n ", +" \"name\" : \"0xaba159a11ac8542254\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 267408", +"4921\n}, \n{\n \"ETH_account\" : \"0x8d091d", +"768fb4ff30771de9ff3ea7da47557a3fba\",\n ", +" \"name\" : \"0x8d091d768fb4ff3077\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 967300", +"0000\n}, \n{\n \"ETH_account\" : \"0xe45fc5", +"a596719d513b8858c4a2f08435d7cb20f6\",\n ", +" \"name\" : \"0xe45fc5a596719d513b\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 25\n}, ", +"\n{\n \"ETH_account\" : \"0xe7d7c988a8591b", +"e724c94da6339c4debd64667ab\",\n \"name\" ", +": \"0xe7d7c988a8591be724\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 157933776\n}, \n", +"{\n \"ETH_account\" : \"0x3d429f8e88144aa", +"6a2857c7e2629215f6307fc06\",\n \"name\" :", +" \"0x3d429f8e88144aa6a2\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 4976000000\n}, \n", +"{\n \"ETH_account\" : \"0x37fd4bcbaa040b7", +"77a4f82b1955401d7b2dbc99b\",\n \"name\" :", +" \"0x37fd4bcbaa040b777a\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 2131399682\n}, \n", +"{\n \"ETH_account\" : \"0xaaa0e8d86f09826", +"8a340e4fcd5a9ffdd2db24b4b\",\n \"name\" :", +" \"0xaaa0e8d86f098268a3\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1000000000\n}, \n", +"{\n \"ETH_account\" : \"0x23b04a12f197f2e", +"6cca8d318720e2bb7846e7821\",\n \"name\" :", +" \"0x23b04a12f197f2e6cc\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1000000000\n}, \n", +"{\n \"ETH_account\" : \"0x76d3ee7b87b9643", +"419f14f78ddd10a5458e6e4cb\",\n \"name\" :", +" \"0x76d3ee7b87b9643419\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 422000000\n}, \n{", +"\n \"ETH_account\" : \"0x5697495903a240cd", +"f6d1d50529c15d23b42fbe36\",\n \"name\" : ", +"\"0x5697495903a240cdf6\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 2500000000\n}, \n{", +"\n \"ETH_account\" : \"0xf457805b3edc34f2", +"40b598a06b346d8af6958fb1\",\n \"name\" : ", +"\"0xf457805b3edc34f240\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 3588697699\n}, \n{", +"\n \"ETH_account\" : \"0x755b13d51b8605cd", +"44bc207f23bbdf2addbd7521\",\n \"name\" : ", +"\"0x755b13d51b8605cd44\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 4302939619\n}, \n{", +"\n \"ETH_account\" : \"0x003be6d4f336d1ef", +"260088754176510d8c8e00cf\",\n \"name\" : ", +"\"0x003be6d4f336d1ef26\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1050000000\n}, \n{", +"\n \"ETH_account\" : \"0xbb6fe6d0803e0d8b", +"3b1e29064389ec97fe047795\",\n \"name\" : ", +"\"0xbb6fe6d0803e0d8b3b\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1599000000\n}, \n{", +"\n \"ETH_account\" : \"0x856ab07bf2d2cc65", +"7cee49395e791c8962a66eff\",\n \"name\" : ", +"\"0x856ab07bf2d2cc657c\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 449719847\n}, \n{\n", +" \"ETH_account\" : \"0x4f59c8d4b24effddb", +"c3693216b0dfecddc8ff753\",\n \"name\" : \"", +"0x4f59c8d4b24effddbc\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1700000000\n}, \n{\n", +" \"ETH_account\" : \"0xbabe7d6cf27201fe2", +"0e0109b3eaa34e2f0602801\",\n \"name\" : \"", +"0xbabe7d6cf27201fe20\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 2301691425\n}, \n{\n", +" \"ETH_account\" : \"0x0fa54986b7bb4d608", +"e1bd20d32d9e7388bf02f3f\",\n \"name\" : \"", +"0x0fa54986b7bb4d608e\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 500000000\n}, \n{\n ", +" \"ETH_account\" : \"0xa8ca4fc4300c8fc806", +"043e1d73df6dbdef0d7981\",\n \"name\" : \"0", +"xa8ca4fc4300c8fc806\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 416000000\n}, \n{\n ", +" \"ETH_account\" : \"0xb5adabfe1b77e0c3652", +"85dddb5c35caf8cded7eb\",\n \"name\" : \"0x", +"b5adabfe1b77e0c365\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1194610000\n}, \n{\n ", +" \"ETH_account\" : \"0x1746d2856a649ef6c33", +"afcce942a29f61178373d\",\n \"name\" : \"0x", +"1746d2856a649ef6c3\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1028000000\n}, \n{\n ", +" \"ETH_account\" : \"0x4b7c6f40fcdd459e661", +"f32333a77b7ee156c972c\",\n \"name\" : \"0x", +"4b7c6f40fcdd459e66\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1545627142\n}, \n{\n ", +" \"ETH_account\" : \"0x0f644133c38f8af5e14", +"95a4e1df9c8a68475b607\",\n \"name\" : \"0x", +"0f644133c38f8af5e1\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 270000000\n}, \n{\n ", +" \"ETH_account\" : \"0x82dea6e139657092bc51", +"c4da24dd1d08e4b1c383\",\n \"name\" : \"0x8", +"2dea6e139657092bc\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1159892685\n}, \n{\n ", +" \"ETH_account\" : \"0x7f1ce16d0199740f1180", +"a159ac9e72bd528c3027\",\n \"name\" : \"0x7", +"f1ce16d0199740f11\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1173000000\n}, \n{\n ", +" \"ETH_account\" : \"0x77286818de07f5b1380f", +"9ec26e00f653470398f3\",\n \"name\" : \"0x7", +"7286818de07f5b138\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 3423194000\n}, \n{\n ", +" \"ETH_account\" : \"0x2e629cae8f5f9f1b1f52", +"928b1c9f092eb228498b\",\n \"name\" : \"0x2", +"e629cae8f5f9f1b1f\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 165000000\n}, \n{\n ", +"\"ETH_account\" : \"0x8ebc101794f8cb350a6bb", +"d1b731c1ff56c7687f6\",\n \"name\" : \"joey", +"sphtx\",\n \"publicKey\" : \"SPH86FifHQven", +"HgYYZNwEhsaAhNDngHtatRRWabSnd1Bvh35Uurak", +"\",\n \"balance\" : 2551967836\n}, \n{\n ", +"\"ETH_account\" : \"0xe0d72b268aede0c5b22ee", +"4601054475b867fbe33\",\n \"name\" : \"0xe0", +"d72b268aede0c5b2\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1230000000\n}, \n{\n ", +"\"ETH_account\" : \"0x117264dd65f550c7a3842", +"fa2cec07057db753c16\",\n \"name\" : \"kire", +"\",\n \"publicKey\" : \"SPH4wnYpbPts3Ndurj", +"XxVz87KuRaGfuMiGF63EPG3vgahTJk3fRAz\",\n ", +" \"balance\" : 12790199588\n}, \n{\n \"ETH", +"_account\" : \"0x33ef84746a28d538a958d3d8c", +"a9c9a656d00b2c0\",\n \"name\" : \"0x33ef84", +"746a28d538a9\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2200000000\n}, \n{\n \"ETH", +"_account\" : \"0x2c7da7b16e235c89ecf866aa3", +"2e5604eaa75bc16\",\n \"name\" : \"0x2c7da7", +"b16e235c89ec\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 600000000\n}, \n{\n \"ETH_", +"account\" : \"0x4238bc5ee729ca4fe3bbf6ac2a", +"9615ece29608fe\",\n \"name\" : \"0x4238bc5", +"ee729ca4fe3\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1428000000\n}, \n{\n \"ETH_", +"account\" : \"0x67037a400660212ef4c63b267b", +"a9a15fa51d0a40\",\n \"name\" : \"0x67037a4", +"00660212ef4\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 250000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x9fce06628587137447dca45b582", +"7fd01a88719ff\",\n \"name\" : \"0x9fce0662", +"8587137447\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 944596794\n}, \n{\n \"ETH_ac", +"count\" : \"0xd27be219d7281c06d2fb4ec038eb", +"457f9fc4eb04\",\n \"name\" : \"0xd27be219d", +"7281c06d2\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 95000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x7ea6ef427904620c05f88215bda009", +"3bd67d5d75\",\n \"name\" : \"0x7ea6ef42790", +"4620c05\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 669999875\n}, \n{\n \"ETH_accou", +"nt\" : \"0xdd2ca76c83efb5183923265e37c55b0", +"a2011decd\",\n \"name\" : \"0xdd2ca76c83ef", +"b51839\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 11182077818\n}, \n{\n \"ETH_acco", +"unt\" : \"0xc1ca3b64ee375cdc7419013d0971f3", +"1d10822a53\",\n \"name\" : \"0xc1ca3b64ee3", +"75cdc74\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 835000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x3bc41f90875161e472eba51c1ebcf7b", +"7c5513105\",\n \"name\" : \"0x3bc41f908751", +"61e472\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 282000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xd75fb3436b386da14fc807d4623d6231", +"aa3d0179\",\n \"name\" : \"0xd75fb3436b386", +"da14f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 10822990000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xeb415f4ffc883ba6f90df29d1ac2483", +"e22c6d1e8\",\n \"name\" : \"0xeb415f4ffc88", +"3ba6f9\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 450000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xdbb0d75b8f30914229600e450cc22556", +"140532c6\",\n \"name\" : \"0xdbb0d75b8f309", +"14229\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 9704254832\n}, \n{\n \"ETH_accoun", +"t\" : \"0x753aada580e54ddaca97ceaaed2ca0ef", +"998345aa\",\n \"name\" : \"0x753aada580e54", +"ddaca\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 215560000\n}, \n{\n \"ETH_account", +"\" : \"0x87b8f3d486c7fe3376f68c9b05b56173d", +"3d8f038\",\n \"name\" : \"0x87b8f3d486c7fe", +"3376\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 791\n}, \n{\n \"ETH_account\" : \"0x", +"44766a95b5419dc130b85940b688a4aeb8a8d52f", +"\",\n \"name\" : \"nathsphtx\",\n \"public", +"Key\" : \"SPH8KQdsmAeV8EvYhs4UUSr2H8nrqbJe", +"iiXmaYZDjeGijwTPqLhbK\",\n \"balance\" : ", +"6503128300\n}, \n{\n \"ETH_account\" : \"0x", +"3acfd694a2fcbf7dedb68439ac986587e673861e", +"\",\n \"name\" : \"0x3acfd694a2fcbf7ded\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"2024000000\n}, \n{\n \"ETH_account\" : \"0x", +"8417e34fa28171e87ee9b28190a72ea10405830f", +"\",\n \"name\" : \"0x8417e34fa28171e87e\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"7138451743\n}, \n{\n \"ETH_account\" : \"0x", +"dc93af272bf75e5d7071d6059ceb79efafb4bd83", +"\",\n \"name\" : \"0xdc93af272bf75e5d70\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"3718305608\n}, \n{\n \"ETH_account\" : \"0x", +"0ee843d36f008e96cecbd59ebfcd996215c3333d", +"\",\n \"name\" : \"0x0ee843d36f008e96ce\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"15808944000\n}, \n{\n \"ETH_account\" : \"0", +"x0a40aff7a9e20664239ecfe27468be399d06622", +"d\",\n \"name\" : \"0x0a40aff7a9e2066423\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1928419512\n}, \n{\n \"ETH_account\" : \"0", +"x545fa3370002690fa21469b929a0fd57099a11b", +"b\",\n \"name\" : \"endorsevven\",\n \"pub", +"licKey\" : \"SPH6QMLcAj37V9s9Eqgk75dgAWH9f", +"5NmHdEqAwrCH4X1aRY8En7Vy\",\n \"balance\"", +" : 24305016833\n}, \n{\n \"ETH_account\" :", +" \"0x80f6760f0103d552b86366c43bdc7c8e61a5", +"cfc9\",\n \"name\" : \"0x80f6760f0103d552b", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 385000000\n}, \n{\n \"ETH_account\" : ", +"\"0xf8c8fe4ba23fc2abb02ce48cf1a1b50f1fbbc", +"0ee\",\n \"name\" : \"0xf8c8fe4ba23fc2abb0", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 830194521\n}, \n{\n \"ETH_account\" : \"", +"0xba6cad38b6fd11b7d14b6e4fb95b4bff07531b", +"cb\",\n \"name\" : \"0xba6cad38b6fd11b7d1\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 570114675\n}, \n{\n \"ETH_account\" : \"0", +"xcb440a750eb4c70d5bce58bde4289e97fc12f89", +"9\",\n \"name\" : \"0xcb440a750eb4c70d5b\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 12464999631\n}, \n{\n \"ETH_account\" : \"", +"0x86d2e923a7ea0c53f86a9ef303b70adeacc762", +"21\",\n \"name\" : \"0x86d2e923a7ea0c53f8\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 496\n}, \n{\n \"ETH_account\" : \"0x39836", +"92423daaed3f0ac63646f6ecbbb33fdfb71\",\n ", +" \"name\" : \"0x3983692423daaed3f0\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 17844", +"56000\n}, \n{\n \"ETH_account\" : \"0x63770", +"5dde1d1bb91aaca0df7a7e581406cc178fe\",\n ", +" \"name\" : \"jianxia\",\n \"publicKey\" : ", +"\"SPH8E4ceRpYwB3E8bi4YcxKGSZZhJybgLjUSSqU", +"D9Ao1AhTNwCYQx\",\n \"balance\" : 1409690", +"97633\n}, \n{\n \"ETH_account\" : \"0x18e74", +"edc8667988d479e446251928358caf26b61\",\n ", +" \"name\" : \"0x18e74edc8667988d47\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 21386", +"999993\n}, \n{\n \"ETH_account\" : \"0x7134", +"00d6e2bb27f40e47c877bd72f922da56c3a5\",\n ", +" \"name\" : \"0x713400d6e2bb27f40e\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1750", +"000000\n}, \n{\n \"ETH_account\" : \"0x05a9", +"c3a3565973fea47a46232bd3bbb62cc7f793\",\n ", +" \"name\" : \"0x05a9c3a3565973fea4\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 7600", +"00000\n}, \n{\n \"ETH_account\" : \"0xd43c7", +"b960f175d554ecb7831c3efa01be531b653\",\n ", +" \"name\" : \"0xd43c7b960f175d554e\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 19100", +"00000\n}, \n{\n \"ETH_account\" : \"0x4427f", +"39ccba2c2ecede1e71f896978b8835ccd10\",\n ", +" \"name\" : \"0x4427f39ccba2c2eced\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 52956", +"05878\n}, \n{\n \"ETH_account\" : \"0xf6b74", +"9baf3daaddf55fd423891dee2c3ed197db7\",\n ", +" \"name\" : \"0xf6b749baf3daaddf55\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 80000", +"000\n}, \n{\n \"ETH_account\" : \"0x2ac1457", +"2bacfd491408306db6c6cf544cbe94687\",\n ", +"\"name\" : \"0x2ac14572bacfd49140\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 6080000", +"00\n}, \n{\n \"ETH_account\" : \"0x6d3e480d", +"317d146b6002bf29c77bb44a43bd99df\",\n \"", +"name\" : \"derada\",\n \"publicKey\" : \"SPH", +"6XXC22qYR9QnQKkruMc5NbAQQfjxX44sjuQUMfdS", +"XTWBCtEz5S\",\n \"balance\" : 4732349209\n", +"}, \n{\n \"ETH_account\" : \"0xd2bb32bd1dc", +"40cd26f1309a5e916d70fe3b89bf9\",\n \"nam", +"e\" : \"0xd2bb32bd1dc40cd26f\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1000000\n}, ", +"\n{\n \"ETH_account\" : \"0x31d9e8f78fcf1b", +"7af862ed290f4324ef1f1c05e3\",\n \"name\" ", +": \"0x31d9e8f78fcf1b7af8\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 242000000\n}, \n", +"{\n \"ETH_account\" : \"0x047c484a2fdb438", +"0430dfdf23987ac866667d532\",\n \"name\" :", +" \"0x047c484a2fdb438043\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 8510000000\n}, \n", +"{\n \"ETH_account\" : \"0xec1352fbf83fee0", +"bd71de3565b2a909241b95773\",\n \"name\" :", +" \"0xec1352fbf83fee0bd7\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 605000000\n}, \n{", +"\n \"ETH_account\" : \"0x4082a34aa780e015", +"a49020a1319e3c9be007fcb1\",\n \"name\" : ", +"\"0x4082a34aa780e015a4\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 2356000000\n}, \n{", +"\n \"ETH_account\" : \"0x0d7decb271e11221", +"bf471009e535cba8fb78cbd1\",\n \"name\" : ", +"\"0x0d7decb271e11221bf\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 168438733\n}, \n{\n", +" \"ETH_account\" : \"0x09d25353150d86b78", +"ca38812f7748d4fd6d5a1de\",\n \"name\" : \"", +"0x09d25353150d86b78c\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 14212494988\n}, \n{", +"\n \"ETH_account\" : \"0x6a18bbfed999f7d3", +"ab98abc0c050be86a592e2d1\",\n \"name\" : ", +"\"0x6a18bbfed999f7d3ab\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1300000000\n}, \n{", +"\n \"ETH_account\" : \"0x1601e879792f1abe", +"e5db3ba68b286258bffeba24\",\n \"name\" : ", +"\"0x1601e879792f1abee5\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 79104305\n}, \n{\n ", +" \"ETH_account\" : \"0x1b84713f28d60db58d", +"eb2e6f67b8afc5b37e2bfe\",\n \"name\" : \"0", +"x1b84713f28d60db58d\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1475000000\n}, \n{\n ", +" \"ETH_account\" : \"0xa38f9b134867822ce9", +"9bcc88dafce39ea158fe3b\",\n \"name\" : \"0", +"xa38f9b134867822ce9\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 168000000\n}, \n{\n ", +" \"ETH_account\" : \"0x7fa7c0d9e5e5941de7f", +"49447c2710fdc88e95da8\",\n \"name\" : \"0x", +"7fa7c0d9e5e5941de7\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 320000000\n}, \n{\n ", +" \"ETH_account\" : \"0xfa590f7852a5352a3c34", +"a4226ca418a2b433b65f\",\n \"name\" : \"0xf", +"a590f7852a5352a3c\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 2000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x0d94d1c18d4ed2bfe1e9", +"3fd6517993e32a453fe1\",\n \"name\" : \"0x0", +"d94d1c18d4ed2bfe1\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 369000000\n}, \n{\n ", +"\"ETH_account\" : \"0x44500255f153f016ed797", +"1ac8e260b0ebf6a0a95\",\n \"name\" : \"0x44", +"500255f153f016ed\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 956118643\n}, \n{\n \"", +"ETH_account\" : \"0x292320bf072a45c45e1007", +"c60ce8166fdb5ee535\",\n \"name\" : \"0x292", +"320bf072a45c45e\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 300000000\n}, \n{\n \"E", +"TH_account\" : \"0xd8966fe106fb51082867590", +"c43acffaf1934d875\",\n \"name\" : \"0xd896", +"6fe106fb510828\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 4570398000\n}, \n{\n \"E", +"TH_account\" : \"0x3b8c13aab93e0fb69c9fc52", +"b51645499769659c9\",\n \"name\" : \"0x3b8c", +"13aab93e0fb69c\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 550000000\n}, \n{\n \"ET", +"H_account\" : \"0x862e0ec57d660144b7fb3f40", +"abd108c7a77c3710\",\n \"name\" : \"0x862e0", +"ec57d660144b7\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1500000000\n}, \n{\n \"ET", +"H_account\" : \"0x2a557cd0a7bdcd646c6f224c", +"617b4a21d54ade5c\",\n \"name\" : \"0x2a557", +"cd0a7bdcd646c\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1656821472\n}, \n{\n \"ET", +"H_account\" : \"0xe5eb4f45f2f4c52010c2292c", +"cfbfe95e23b6447a\",\n \"name\" : \"0xe5eb4", +"f45f2f4c52010\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1925000000\n}, \n{\n \"ET", +"H_account\" : \"0xb862730c85a6641deb5e29f6", +"733a63c17bc81ef9\",\n \"name\" : \"nyjek\",", +"\n \"publicKey\" : \"SPH78NbDEdZ6np3hqoVP", +"8jw5tnqoeCPgmjNP1942AVShie4FPdw5d\",\n ", +"\"balance\" : 4607000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x8a1788a19110275b06a2a7734146", +"f42fbb1862b4\",\n \"name\" : \"0x8a1788a19", +"110275b06\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 824000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x971c40dfe63def358cf2e6c01d5d1", +"fde7108f965\",\n \"name\" : \"0x971c40dfe6", +"3def358c\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 123000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x88a0896f3181408722111b6dcb9e5d", +"38f571f0f9\",\n \"name\" : \"0x88a0896f318", +"1408722\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 175000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x418eba649d9488781bee4ad38fa6ca3", +"45d181951\",\n \"name\" : \"0x418eba649d94", +"88781b\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 999999\n}, \n{\n \"ETH_account\" ", +": \"0x6648b5554632ed5d6ec27ec6737e98a0a3d", +"bbc94\",\n \"name\" : \"0x6648b5554632ed5d", +"6e\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 392581000\n}, \n{\n \"ETH_account\" :", +" \"0xa155e9ff60208102f01d6a388daf13e968b8", +"15da\",\n \"name\" : \"0xa155e9ff60208102f", +"0\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 470\n}, \n{\n \"ETH_account\" : \"0x2d3", +"3fc25468724c498a107d0583dfe532f4c5b32\",\n", +" \"name\" : \"sphtxman\",\n \"publicKey\"", +" : \"SPH7gx1aHuzQz6WKKJAwH12KreLxtvjiYJF6", +"uMfTap9PE1o36PGEA\",\n \"balance\" : 3955", +"503377\n}, \n{\n \"ETH_account\" : \"0x9507", +"3aa4b0a9b5b676d4f6dc74e0c9777161a9b8\",\n ", +" \"name\" : \"0x95073aa4b0a9b5b676\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1200", +"000000\n}, \n{\n \"ETH_account\" : \"0x64f8", +"4548fc815ca1e8f2a72a073f5b7a273d162b\",\n ", +" \"name\" : \"0x64f84548fc815ca1e8\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2902", +"581203\n}, \n{\n \"ETH_account\" : \"0xb61c", +"6908ae368dc4d1535a91bba410c1724a6a62\",\n ", +" \"name\" : \"0xb61c6908ae368dc4d1\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 7024", +"78900\n}, \n{\n \"ETH_account\" : \"0xeb1af", +"a846fff3cf7676100fc0e5f0a3af495aabc\",\n ", +" \"name\" : \"0xeb1afa846fff3cf767\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 17814", +"60835\n}, \n{\n \"ETH_account\" : \"0x0bad9", +"6aa404beb3f21002ec2ce0bcb20413b66ca\",\n ", +" \"name\" : \"0x0bad96aa404beb3f21\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10849", +"3000\n}, \n{\n \"ETH_account\" : \"0x658f3a", +"453dee59856939046da0cf2608067e8fd1\",\n ", +" \"name\" : \"0x658f3a453dee598569\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 999790", +"\n}, \n{\n \"ETH_account\" : \"0x5fde47636a", +"107d0b427eabb3de1966c1eeb848dc\",\n \"na", +"me\" : \"0x5fde47636a107d0b42\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 33000000\n}", +", \n{\n \"ETH_account\" : \"0x2bbf719b599e", +"fe344063a557dc9d470998430162\",\n \"name", +"\" : \"0x2bbf719b599efe3440\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 2532000000\n}", +", \n{\n \"ETH_account\" : \"0x66808d55eb48", +"e4e3725679aa1c915a75573b0a11\",\n \"name", +"\" : \"0x66808d55eb48e4e372\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 200000000\n},", +" \n{\n \"ETH_account\" : \"0x2e2d915f03299", +"99cf7823b5d5621b61e1848c755\",\n \"name\"", +" : \"0x2e2d915f0329999cf7\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 2841189609\n},", +" \n{\n \"ETH_account\" : \"0xd3fa77b362856", +"d28e5ab9ad44062fa622b9925a3\",\n \"name\"", +" : \"0xd3fa77b362856d28e5\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 330000000\n}, ", +"\n{\n \"ETH_account\" : \"0x7b9159c7e921c5", +"a50acc240af056ff1c7fbb0b4f\",\n \"name\" ", +": \"0x7b9159c7e921c5a50a\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 447000000\n}, \n", +"{\n \"ETH_account\" : \"0x909f78e0a5eef54", +"fa9369ef4924fe0c46c45870c\",\n \"name\" :", +" \"0x909f78e0a5eef54fa9\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 666000000\n}, \n{", +"\n \"ETH_account\" : \"0xb710dd12060429bf", +"51020d0fb25c33f3b0f45378\",\n \"name\" : ", +"\"0xb710dd12060429bf51\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1000000000\n}, \n{", +"\n \"ETH_account\" : \"0xad91994eb71a811d", +"dfd16cd27acbf9792db07399\",\n \"name\" : ", +"\"0xad91994eb71a811ddf\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1282000000\n}, \n{", +"\n \"ETH_account\" : \"0xf3249e77d48d7062", +"7b7361ce7dac6787709cd3a1\",\n \"name\" : ", +"\"0xf3249e77d48d70627b\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 19580\n}, \n{\n ", +"\"ETH_account\" : \"0x8ea8522e5ec6d7c72b478", +"590aaac1bee52925bb0\",\n \"name\" : \"0x8e", +"a8522e5ec6d7c72b\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 3169762200\n}, \n{\n ", +"\"ETH_account\" : \"0x147a31e063b5c91a7cb5b", +"7534aaeb6371baf21c2\",\n \"name\" : \"0x14", +"7a31e063b5c91a7c\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 2069178000\n}, \n{\n ", +"\"ETH_account\" : \"0xf47d1ab8754e1976af4bc", +"6b0ca4f912602ce748b\",\n \"name\" : \"0xf4", +"7d1ab8754e1976af\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 300000000\n}, \n{\n \"", +"ETH_account\" : \"0x2f4a91720cccc79cd95019", +"f94e6f5e4266c35c0d\",\n \"name\" : \"0x2f4", +"a91720cccc79cd9\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 318000000\n}, \n{\n \"E", +"TH_account\" : \"0xfefbed5866d0c741b4c8a69", +"a7e215c869ac6c2cc\",\n \"name\" : \"0xfefb", +"ed5866d0c741b4\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 549754000\n}, \n{\n \"ET", +"H_account\" : \"0x0d26d227db9ccfcd9c7d65c9", +"8435971102e23e46\",\n \"name\" : \"0x0d26d", +"227db9ccfcd9c\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 819681000\n}, \n{\n \"ETH", +"_account\" : \"0x5af2b9f1e7d060788f223642c", +"27a93185063a158\",\n \"name\" : \"0x5af2b9", +"f1e7d060788f\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1700000000\n}, \n{\n \"ETH", +"_account\" : \"0x138aa8616cb740abd232b5984", +"99fd99a02f553e1\",\n \"name\" : \"0x138aa8", +"616cb740abd2\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 132000000\n}, \n{\n \"ETH_", +"account\" : \"0xf5490f4e055aacad9f0d51a168", +"38788078686082\",\n \"name\" : \"0xf5490f4", +"e055aacad9f\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 956727000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x83049b20dce492af94d8ff5b832", +"4078f4ef3ac5d\",\n \"name\" : \"0x83049b20", +"dce492af94\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 5865250000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x2fde89b21c09dc73b3fe32eebd4", +"fd67bb4d84b0a\",\n \"name\" : \"0x2fde89b2", +"1c09dc73b3\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3659722000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xd069aafc48af5a9e054cb05c6a5", +"4c1c9e6c3be6f\",\n \"name\" : \"0xd069aafc", +"48af5a9e05\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 108000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x1bf38b62c051530b7e10a65c0e49", +"8cc82a6d3ddf\",\n \"name\" : \"0x1bf38b62c", +"051530b7e\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 5\n}, \n{\n \"ETH_account\" : ", +"\"0x30424d836fcaad30d8ed3ffa50c4c9b1164e9", +"916\",\n \"name\" : \"0x30424d836fcaad30d8", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 5597697750\n}, \n{\n \"ETH_account\" : ", +"\"0x77a7b8fcc69215794ea55cbb00504366d8ab2", +"2ae\",\n \"name\" : \"0x77a7b8fcc69215794e", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 178000\n}, \n{\n \"ETH_account\" : \"0x9", +"b918d33c5b462a2505ad3a2061e25e75a7af1a8\"", +",\n \"name\" : \"0x9b918d33c5b462a250\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"44738\n}, \n{\n \"ETH_account\" : \"0x0fada", +"0c486e0d7c024bb39333c2bfc0c16bf7881\",\n ", +" \"name\" : \"0x0fada0c486e0d7c024\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 13242", +"7927\n}, \n{\n \"ETH_account\" : \"0xb8ae86", +"0c0f2044f57b9bdec052bff267fe254c4f\",\n ", +" \"name\" : \"0xb8ae860c0f2044f57b\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 410000", +"0000\n}, \n{\n \"ETH_account\" : \"0x2edd20", +"2696e98803f55836bc8d5f10825252b3ff\",\n ", +" \"name\" : \"0x2edd202696e98803f5\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 946000", +"000\n}, \n{\n \"ETH_account\" : \"0xb6afd73", +"afdf9cf7eef8dc45a1cb7f95ef8a0d002\",\n ", +"\"name\" : \"0xb6afd73afdf9cf7eef\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5399671", +"82\n}, \n{\n \"ETH_account\" : \"0xc98eab91", +"ea9f9ec63952ac012d269f2c91fc5b58\",\n \"", +"name\" : \"0xc98eab91ea9f9ec639\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 29550119", +"4\n}, \n{\n \"ETH_account\" : \"0x49e80b920", +"b8e26b816fa94b5b24884e29a39df7f\",\n \"n", +"ame\" : \"enivien\",\n \"publicKey\" : \"SPH", +"53JEkSMnkrjmMjCtL6TjmLGLxojjgiyHA4gADxC8", +"borh2EWJPZ\",\n \"balance\" : 2500000000\n", +"}, \n{\n \"ETH_account\" : \"0xff244b19292", +"7167dd36eee83fb62184f9297127b\",\n \"nam", +"e\" : \"0xff244b192927167dd3\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 84942000\n},", +" \n{\n \"ETH_account\" : \"0x9a1c1b5554dbc", +"42f6c07a2208c57925fc25c67a2\",\n \"name\"", +" : \"0x9a1c1b5554dbc42f6c\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1096000000\n},", +" \n{\n \"ETH_account\" : \"0x2ac91860c86d1", +"7cc1b6f8962691037fa501815de\",\n \"name\"", +" : \"0x2ac91860c86d17cc1b\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 119\n}, \n{\n ", +" \"ETH_account\" : \"0x307fc8a92ea1060dc025", +"f2d704e657ab2f38c3d4\",\n \"name\" : \"0x3", +"07fc8a92ea1060dc0\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 830881\n}, \n{\n \"ET", +"H_account\" : \"0xe4e94e46259a1cb9e7b4471d", +"70e9f8069fd4603e\",\n \"name\" : \"0xe4e94", +"e46259a1cb9e7\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 97380\n}, \n{\n \"ETH_acc", +"ount\" : \"0xb7ce337ef4edaf1b0eca6f617330e", +"1fad590b761\",\n \"name\" : \"0xb7ce337ef4", +"edaf1b0e\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 476213899\n}, \n{\n \"ETH_acco", +"unt\" : \"0x0b4661ad27e0c98e80a36a8b4f5785", +"37fc302f0c\",\n \"name\" : \"0x0b4661ad27e", +"0c98e80\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 472644581\n}, \n{\n \"ETH_accou", +"nt\" : \"0xfd33d858f9350cf7f58ed7826e74315", +"126d78f8b\",\n \"name\" : \"0xfd33d858f935", +"0cf7f5\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 3684000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x157a01978944ebd5f546da0663299fd", +"9d2f77a7d\",\n \"name\" : \"0x157a01978944", +"ebd5f5\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 3317000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x774e96d6b2b44e23de41d88b9ae9d66", +"963da11cb\",\n \"name\" : \"0x774e96d6b2b4", +"4e23de\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 602401000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xb8f3f38f2803c5e0820f3ad6c2f196f8", +"ded270ab\",\n \"name\" : \"0xb8f3f38f2803c", +"5e082\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 5500000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x94c1544afd1a5dfa147159629cfdb5ab", +"a1d298eb\",\n \"name\" : \"0x94c1544afd1a5", +"dfa14\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 3536153000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x42571c41073342a33dc441338d843d93", +"45a42fae\",\n \"name\" : \"0x42571c4107334", +"2a33d\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 276000000\n}, \n{\n \"ETH_account", +"\" : \"0xdaca7d611df2e707888b4f3d0341873be", +"afd6cee\",\n \"name\" : \"0xdaca7d611df2e7", +"0788\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 218516000\n}, \n{\n \"ETH_account\"", +" : \"0xcddf0c3a765615db8a125876bca2e6bb61", +"22ee84\",\n \"name\" : \"0xcddf0c3a765615d", +"b8a\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1794454432\n}, \n{\n \"ETH_account\"", +" : \"0x620d8e91c682deb1e6bd226093eb946615", +"8a0782\",\n \"name\" : \"0x620d8e91c682deb", +"1e6\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1000000000\n}, \n{\n \"ETH_account\"", +" : \"0xc625ab000fe195f31c306cce37adfb57fb", +"d295d8\",\n \"name\" : \"samssopie\",\n \"", +"publicKey\" : \"SPH6nYvdkKyrcpTB8n5zHx2G52", +"MuYxyY7w5Zjn2P5Lx9myzGMYd6T\",\n \"balan", +"ce\" : 5000000000\n}, \n{\n \"ETH_account\"", +" : \"0x82b8f2b767668ed10dbd86766f3ba905c8", +"8a9e35\",\n \"name\" : \"0x82b8f2b767668ed", +"10d\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 73222000\n}, \n{\n \"ETH_account\" :", +" \"0xc4cd394728f78af7c1cc1e356c129add9c40", +"6d2b\",\n \"name\" : \"0xc4cd394728f78af7c", +"1\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 271666666\n}, \n{\n \"ETH_account\" : ", +"\"0x431b74861b42cca144a90b521b716882d9c98", +"640\",\n \"name\" : \"0x431b74861b42cca144", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 493416776\n}, \n{\n \"ETH_account\" : \"", +"0x8d64c91f7a2e84975cfd8931e170f067a4419c", +"79\",\n \"name\" : \"0x8d64c91f7a2e84975c\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1122402903\n}, \n{\n \"ETH_account\" : \"", +"0x3c8a682d7ee19aa75ed9b8170e645d1f8bfa86", +"d7\",\n \"name\" : \"0x3c8a682d7ee19aa75e\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 928398742\n}, \n{\n \"ETH_account\" : \"0", +"xdf4584b4d814fc75779c2f5e1c4d791561bec17", +"b\",\n \"name\" : \"0xdf4584b4d814fc7577\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1635260000\n}, \n{\n \"ETH_account\" : \"0", +"x7bf6983e96993553e1021ecb02f5418052104ff", +"2\",\n \"name\" : \"0x7bf6983e96993553e1\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 4039000000\n}, \n{\n \"ETH_account\" : \"0", +"x92b2fdbee84d34586b27f8dd9d9863eca0db2ea", +"d\",\n \"name\" : \"0x92b2fdbee84d34586b\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1271557000\n}, \n{\n \"ETH_account\" : \"0", +"x74a1f8da47bb4a5da5a9f61f9db1599775dfc9e", +"8\",\n \"name\" : \"0x74a1f8da47bb4a5da5\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 19200000000\n}, \n{\n \"ETH_account\" : \"", +"0xf327ed0f4a4585363ee4bebb27c20acaf00550", +"27\",\n \"name\" : \"0xf327ed0f4a4585363e\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 116000000\n}, \n{\n \"ETH_account\" : \"0", +"x0efec106cd69fc2d73451fffe58298eaccfddd4", +"9\",\n \"name\" : \"0x0efec106cd69fc2d73\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 600000000\n}, \n{\n \"ETH_account\" : \"0x", +"9af249b9daa4d6e745905d5d7837eae4f9a29c27", +"\",\n \"name\" : \"0x9af249b9daa4d6e745\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"3000000000\n}, \n{\n \"ETH_account\" : \"0x", +"d067434f2fee4c4f3ce904115f5f356dbef4f060", +"\",\n \"name\" : \"0xd067434f2fee4c4f3c\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1000000000\n}, \n{\n \"ETH_account\" : \"0x", +"4b064388f61a74ca692e37bf871cb0609f8fa9d8", +"\",\n \"name\" : \"0x4b064388f61a74ca69\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"3000000000\n}, \n{\n \"ETH_account\" : \"0x", +"f5d64d673cf306d47de04cebffee7bcc8962cd75", +"\",\n \"name\" : \"0xf5d64d673cf306d47d\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"21823954000\n}, \n{\n \"ETH_account\" : \"0", +"x0d8297e6f723a449dcaf1f097fc098448073780", +"3\",\n \"name\" : \"0x0d8297e6f723a449dc\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 299315806\n}, \n{\n \"ETH_account\" : \"0x", +"839c87289f92307677b21e58d0bffd139baaf489", +"\",\n \"name\" : \"0x839c87289f92307677\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"2812636583\n}, \n{\n \"ETH_account\" : \"0x", +"4bb6925c04a2602a8f4ab8d2a4c908814f4067b4", +"\",\n \"name\" : \"0x4bb6925c04a2602a8f\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"337000000\n}, \n{\n \"ETH_account\" : \"0xb", +"8e89a97014f0b98b746c47dc0be64f6b33bbc5a\"", +",\n \"name\" : \"0xb8e89a97014f0b98b7\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"05000000\n}, \n{\n \"ETH_account\" : \"0x59", +"5f46012a3e4eab4bfafbdef5a8edad6122e4e3\",", +"\n \"name\" : \"0x595f46012a3e4eab4b\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 20", +"0000000\n}, \n{\n \"ETH_account\" : \"0x251", +"932ce9d5c3f44f0cc34b23093ca95c2536c5f\",\n", +" \"name\" : \"0x251932ce9d5c3f44f0\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 640", +"00000\n}, \n{\n \"ETH_account\" : \"0x55607", +"85f12f78f551ef0dfffca12cc0aa1504a9e\",\n ", +" \"name\" : \"0x5560785f12f78f551e\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 5734\n", +"}, \n{\n \"ETH_account\" : \"0x18b09ab91b7", +"7ccd4b2e3e48d85d92befeeb071ac\",\n \"nam", +"e\" : \"0x18b09ab91b77ccd4b2\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 248000000\n}", +", \n{\n \"ETH_account\" : \"0xb0504044d571", +"d378234d8006066a77fe39fa17dd\",\n \"name", +"\" : \"0xb0504044d571d37823\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 35000000\n}, ", +"\n{\n \"ETH_account\" : \"0x3308b3fed7f28c", +"a553b4df63f512dc76d2ca19d4\",\n \"name\" ", +": \"0x3308b3fed7f28ca553\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 50000000\n}, \n{", +"\n \"ETH_account\" : \"0x3fda8e599cfdc05d", +"fa49e031c1a6a17b68236c93\",\n \"name\" : ", +"\"0x3fda8e599cfdc05dfa\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 3657999653\n}, \n{", +"\n \"ETH_account\" : \"0xb0ab05f8beba695e", +"a4b724c3a1dc3a290f81a85d\",\n \"name\" : ", +"\"koalid\",\n \"publicKey\" : \"SPH614nrc8S", +"zW8bqbE2WMjTRTuJrU7yyFsAdDAg6E9L8bWdWmdm", +"iW\",\n \"balance\" : 400000000\n}, \n{\n ", +" \"ETH_account\" : \"0x29a746d92e6d955c317b", +"d51df3cd00deb1f99230\",\n \"name\" : \"pie", +"kesophia\",\n \"publicKey\" : \"SPH6vT79PF", +"wJZX3uWYP7cCKM1AnNANuJnWi6H84UYdKcFXzSzH", +"yrT\",\n \"balance\" : 105381506\n}, \n{\n ", +" \"ETH_account\" : \"0x1237505e1e8420dec10", +"75ba6b65b17532474f017\",\n \"name\" : \"0x", +"1237505e1e8420dec1\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 211000000\n}, \n{\n ", +" \"ETH_account\" : \"0xaa0e6ca7ae50ffa94d02", +"c3ceabdbca01a10fe17a\",\n \"name\" : \"0xa", +"a0e6ca7ae50ffa94d\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 802000000\n}, \n{\n ", +"\"ETH_account\" : \"0xb08507ac82ba4f9c35139", +"e3bc3db8b1476560bc9\",\n \"name\" : \"0xb0", +"8507ac82ba4f9c35\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 323000000\n}, \n{\n \"", +"ETH_account\" : \"0x92923aaef2231eb62867d1", +"0299219f1308ef8afa\",\n \"name\" : \"0x929", +"23aaef2231eb628\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 5000000\n}, \n{\n \"ETH", +"_account\" : \"0x59b23033d4ccc6beb4b377bec", +"f55ebe540c5e797\",\n \"name\" : \"0x59b230", +"33d4ccc6beb4\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 891212000\n}, \n{\n \"ETH_", +"account\" : \"0x8a8a6b1ed9fe4327380f8e8e7c", +"254580d741ccf7\",\n \"name\" : \"0x8a8a6b1", +"ed9fe432738\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 109996424560\n}, \n{\n \"ET", +"H_account\" : \"0x5e4262b55598f93602ec9cb0", +"2af573c0f82438aa\",\n \"name\" : \"0x5e426", +"2b55598f93602\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 25656000000\n}, \n{\n \"E", +"TH_account\" : \"0xc1ec8373685ece896635eb6", +"73b108dca6cd04c53\",\n \"name\" : \"0xc1ec", +"8373685ece8966\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 2180000000\n}, \n{\n \"E", +"TH_account\" : \"0x091db484d7b1649e3aed3fc", +"4aaa709a0dc181e39\",\n \"name\" : \"0x091d", +"b484d7b1649e3a\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 6663354976\n}, \n{\n \"E", +"TH_account\" : \"0x44afdfdd7a0a8429f34de1b", +"a9b5ccce631916e17\",\n \"name\" : \"0x44af", +"dfdd7a0a8429f3\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1157902573\n}, \n{\n \"E", +"TH_account\" : \"0x941b1a53b7fbe701146affc", +"32f488839c10b828e\",\n \"name\" : \"0x941b", +"1a53b7fbe70114\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 457808000\n}, \n{\n \"ET", +"H_account\" : \"0xe2c1f93debd44a6386e37e6f", +"8bfc9e5f81ebbcad\",\n \"name\" : \"0xe2c1f", +"93debd44a6386\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1165801668\n}, \n{\n \"ET", +"H_account\" : \"0xff1bf78d7d9ffed59ff87c98", +"e41d599364379543\",\n \"name\" : \"0xff1bf", +"78d7d9ffed59f\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 4000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xba0f5d63cc9c74248eb6282fd5b42b", +"3206966353\",\n \"name\" : \"0xba0f5d63cc9", +"c74248e\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 3750790000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x25254785890e2cf80b54a96a7f06aa", +"ad194509d2\",\n \"name\" : \"0x25254785890", +"e2cf80b\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 255000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x25a70bc6edd6488702e9af6fbccad0d", +"90696181b\",\n \"name\" : \"0x25a70bc6edd6", +"488702\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 690000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xe5f92c9d2e4accf80ca8b0d1f26eaa6e", +"f3f2e354\",\n \"name\" : \"0xe5f92c9d2e4ac", +"cf80c\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 300000000\n}, \n{\n \"ETH_account", +"\" : \"0x84def6c3d2de4465b39bcb545d3dd0dd4", +"f56aa4c\",\n \"name\" : \"0x84def6c3d2de44", +"65b3\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 888000000\n}, \n{\n \"ETH_account\"", +" : \"0x008a59c3dfc3fba03ebdb84b5f3d73e75e", +"1c48c9\",\n \"name\" : \"0x008a59c3dfc3fba", +"03e\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 430000000\n}, \n{\n \"ETH_account\" ", +": \"0xdd358784f44f62491c93af1b66eecb3517e", +"cd0fd\",\n \"name\" : \"0xdd358784f44f6249", +"1c\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 695000000\n}, \n{\n \"ETH_account\" :", +" \"0x4937f97073153301b3efc75ffec8da8e188c", +"f275\",\n \"name\" : \"0x4937f97073153301b", +"3\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 955000000\n}, \n{\n \"ETH_account\" : ", +"\"0x0c6dafc018b85774cb4fbe495a9327d5ef278", +"386\",\n \"name\" : \"0x0c6dafc018b85774cb", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 595000000\n}, \n{\n \"ETH_account\" : \"", +"0x57255cc26e1cbdcf3b801cb5a73f5e58e1273e", +"04\",\n \"name\" : \"0x57255cc26e1cbdcf3b\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 665000\n}, \n{\n \"ETH_account\" : \"0x07", +"bc2b59c2e1a71815e17e83d0976de94cea4d8a\",", +"\n \"name\" : \"mynameisgeoff\",\n \"publ", +"icKey\" : \"SPH4upHvfC4LEaroYNAxbeGQCms9fM", +"c1WNYhTciaZKywAW8R3kjEY\",\n \"balance\" ", +": 3125718553\n}, \n{\n \"ETH_account\" : \"", +"0x18f77bdc7c5171f56f5a1b9db071a2e741a69b", +"b8\",\n \"name\" : \"0x18f77bdc7c5171f56f\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1410000000\n}, \n{\n \"ETH_account\" : \"", +"0x903e6e90ccc203fa7618a5e51efc484a00f8f6", +"88\",\n \"name\" : \"ssdssphtxswap\",\n \"", +"publicKey\" : \"SPH5k1WJeApr4KqzUmGCayYf84", +"TvZFCZAuVMYj6Fkip5PKrCK8XA2\",\n \"balan", +"ce\" : 1500000000\n}, \n{\n \"ETH_account\"", +" : \"0xaaeecbc107da03dca37020be3adf42d306", +"de35c0\",\n \"name\" : \"jfreemann1337\",\n ", +" \"publicKey\" : \"SPH7iGRgJ2dgsYFscXYS19", +"GwHXep9uy1rsMQChUZdd9kWqZyyHi7P\",\n \"b", +"alance\" : 2000000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x5a752ce872eac9df2bd53f4dbafa87", +"555a4e7810\",\n \"name\" : \"0x5a752ce872e", +"ac9df2b\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 762898687\n}, \n{\n \"ETH_accou", +"nt\" : \"0x38b5369ec31b36bbf87e348616a463f", +"ae1635019\",\n \"name\" : \"0x38b5369ec31b", +"36bbf8\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 533000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xb89898a9e0dbda15bf03b6c245c58f47", +"aea007e9\",\n \"name\" : \"0xb89898a9e0dbd", +"a15bf\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 919340000\n}, \n{\n \"ETH_account", +"\" : \"0x439fe0919fd952daf95d7c68d08210747", +"0c771c2\",\n \"name\" : \"0x439fe0919fd952", +"daf9\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1000707000\n}, \n{\n \"ETH_account", +"\" : \"0x83a4999089bf8fb5131bf722d15a85ed0", +"5808329\",\n \"name\" : \"0x83a4999089bf8f", +"b513\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 42000000\n}, \n{\n \"ETH_account\" ", +": \"0x0be3b8fe90f666c1e7fd679338325002e26", +"210fd\",\n \"name\" : \"0x0be3b8fe90f666c1", +"e7\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 190\n}, \n{\n \"ETH_account\" : \"0x4f", +"60afd048b3036c5654cbd8a8ea317191c9d70a\",", +"\n \"name\" : \"0x4f60afd048b3036c56\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 47", +"7098023\n}, \n{\n \"ETH_account\" : \"0x737", +"52bfbfc6c1ba92950bfb1616d3a7099880846\",\n", +" \"name\" : \"0x73752bfbfc6c1ba929\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 504", +"7189774\n}, \n{\n \"ETH_account\" : \"0xc05", +"88830924e7977a26622a7485a660f809c0939\",\n", +" \"name\" : \"0xc0588830924e7977a2\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 374", +"583000\n}, \n{\n \"ETH_account\" : \"0xcd20", +"6946627f0774bf3cae471e39e12fb13c3944\",\n ", +" \"name\" : \"ryansophiatx\",\n \"publicK", +"ey\" : \"SPH8YUc4BM9KUrc5vpahhnndyEdSMWNuU", +"XiDsWy1pt1rc6yUm6V1R\",\n \"balance\" : 3", +"6549770320\n}, \n{\n \"ETH_account\" : \"0x", +"a5803e0f2944862efbd7a7df5343029fc1431b01", +"\",\n \"name\" : \"0xa5803e0f2944862efb\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"111000000\n}, \n{\n \"ETH_account\" : \"0x7", +"33ada1fa9ae3aa35d54f533797b6778ae455694\"", +",\n \"name\" : \"0x733ada1fa9ae3aa35d\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"55746000\n}, \n{\n \"ETH_account\" : \"0x0b", +"df207024aa7c83be12ef633313c03dc06285dc\",", +"\n \"name\" : \"olifea\",\n \"publicKey\" ", +": \"SPH6bqtWz123ZCq2Z6eSxYR7tXt2us4RrUeJd", +"eArj8VmkHNkAAqpv\",\n \"balance\" : 30246", +"17000\n}, \n{\n \"ETH_account\" : \"0xf24a3", +"c425f7629c301deba4a54e10eca9578bcbf\",\n ", +" \"name\" : \"0xf24a3c425f7629c301\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 25971", +"5922\n}, \n{\n \"ETH_account\" : \"0xde0f12", +"2b55ff4615f267132fa5f60d967aaa6a2f\",\n ", +" \"name\" : \"popeye\",\n \"publicKey\" : \"S", +"PH7mTRVN6ibqgFxMaAa2g1gp6vEcKgUSYarKDnbk", +"D6FUsBvEbXQM\",\n \"balance\" : 175076337", +"99\n}, \n{\n \"ETH_account\" : \"0x6d004e7a", +"f12041cf7cf17a8353da58ece7e1e4cd\",\n \"", +"name\" : \"0x6d004e7af12041cf7c\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 25000000", +"0\n}, \n{\n \"ETH_account\" : \"0x5b9e851db", +"48dfa3cf541d1d452a1afdfd3046882\",\n \"n", +"ame\" : \"0x5b9e851db48dfa3cf5\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 5000000\n}", +", \n{\n \"ETH_account\" : \"0x915b51d2528d", +"aa06c4b7d13f548b61401750b8ef\",\n \"name", +"\" : \"0x915b51d2528daa06c4\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 319454704\n},", +" \n{\n \"ETH_account\" : \"0x6dcb68c8ba961", +"4210f0c7c2db2d8bdfc6a54d439\",\n \"name\"", +" : \"0x6dcb68c8ba9614210f\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 185321666\n}, ", +"\n{\n \"ETH_account\" : \"0xcbe3a8a733a569", +"9e1a2c5691d5953ff999a8c63a\",\n \"name\" ", +": \"0xcbe3a8a733a5699e1a\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 442930000\n}, \n", +"{\n \"ETH_account\" : \"0x58e2eba7a551e55", +"84da4ce2c5296d2db56dea318\",\n \"name\" :", +" \"0x58e2eba7a551e5584d\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 950681000\n}, \n{", +"\n \"ETH_account\" : \"0x5b8b9792da82bc33", +"49e01d0bd4a4db87a40537de\",\n \"name\" : ", +"\"0x5b8b9792da82bc3349\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 500000000\n}, \n{\n", +" \"ETH_account\" : \"0x58ddb88ebca5f1315", +"04babe82e5c515964c4b90d\",\n \"name\" : \"", +"0x58ddb88ebca5f13150\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 849477943\n}, \n{\n ", +" \"ETH_account\" : \"0x30be4c2a35f7c7ac68", +"474d42fd1d8fdb19520ab7\",\n \"name\" : \"0", +"x30be4c2a35f7c7ac68\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 445026000\n}, \n{\n ", +" \"ETH_account\" : \"0xe45c549e9ec29bb55f7", +"4622916ae1a4891c0d660\",\n \"name\" : \"0x", +"e45c549e9ec29bb55f\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 628000000\n}, \n{\n ", +" \"ETH_account\" : \"0xa4038725b85d228ef272", +"7e2b0729fa7ca617930d\",\n \"name\" : \"0xa", +"4038725b85d228ef2\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 192\n}, \n{\n \"ETH_a", +"ccount\" : \"0x382fc61a9e2b665e85249e34bd6", +"b909a4ddcf851\",\n \"name\" : \"0x382fc61a", +"9e2b665e85\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 366576000\n}, \n{\n \"ETH_ac", +"count\" : \"0x1a7861a39e74d93c8eb883d774f1", +"68be46f81228\",\n \"name\" : \"0x1a7861a39", +"e74d93c8e\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 3657000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x20863352e9bf354060ae1486f002", +"9e2cef485bf1\",\n \"name\" : \"0x20863352e", +"9bf354060\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 918704\n}, \n{\n \"ETH_accoun", +"t\" : \"0x3bb29ee888680bdb3b4e406290d07b29", +"d6f57ebc\",\n \"name\" : \"0x3bb29ee888680", +"bdb3b\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1598286793\n}, \n{\n \"ETH_accoun", +"t\" : \"0xa852520c15441bbb95157b4bbd64f8e5", +"15a2811a\",\n \"name\" : \"0xa852520c15441", +"bbb95\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 194929558\n}, \n{\n \"ETH_account", +"\" : \"0xd79d12733986e695ec987f004e843d30a", +"8dfd472\",\n \"name\" : \"0xd79d12733986e6", +"95ec\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 289500000\n}, \n{\n \"ETH_account\"", +" : \"0x38233c3b664512f89b546e11511e0d7728", +"6a408d\",\n \"name\" : \"0x38233c3b664512f", +"89b\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 80000000\n}, \n{\n \"ETH_account\" :", +" \"0x2affba2c4885933b2fdd726162b4ec4d8400", +"0499\",\n \"name\" : \"0x2affba2c4885933b2", +"f\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 49351959\n}, \n{\n \"ETH_account\" : \"", +"0x62ec1ddce54c6f3fab9e35fab2c9a9881c1545", +"bf\",\n \"name\" : \"0x62ec1ddce54c6f3fab\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1507000000\n}, \n{\n \"ETH_account\" : \"", +"0xb7a2422b771d5ccf425f6101d389703a653fcd", +"ab\",\n \"name\" : \"0xb7a2422b771d5ccf42\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 3200000000\n}, \n{\n \"ETH_account\" : \"", +"0xe81ca4930e0b90db3184389ec3769ac7ccf786", +"ab\",\n \"name\" : \"0xe81ca4930e0b90db31\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 6705472000\n}, \n{\n \"ETH_account\" : \"", +"0x1c376277c80e8e760a5ab04fbfb12c2603f1d5", +"de\",\n \"name\" : \"0x1c376277c80e8e760a\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 333713\n}, \n{\n \"ETH_account\" : \"0x74", +"821b3199b536fa33e46ac5f55194f32e1f297d\",", +"\n \"name\" : \"0x74821b3199b536fa33\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 10", +"0000000000\n}, \n{\n \"ETH_account\" : \"0x", +"5c780834ccc91160cff9f7c11e52543eb5547e35", +"\",\n \"name\" : \"0x5c780834ccc91160cf\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"776\n}, \n{\n \"ETH_account\" : \"0xb5e2c98", +"cf2879bd017fafb56a196da0770a2473f\",\n ", +"\"name\" : \"0xb5e2c98cf2879bd017\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1300000", +"00\n}, \n{\n \"ETH_account\" : \"0x83a3956b", +"57b66af6faf288761a9a1a59d8384e85\",\n \"", +"name\" : \"0x83a3956b57b66af6fa\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 50500000", +"\n}, \n{\n \"ETH_account\" : \"0x43c6ce4a85", +"d723bcac650570c36793168e44dec2\",\n \"na", +"me\" : \"0x43c6ce4a85d723bcac\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 243000000\n", +"}, \n{\n \"ETH_account\" : \"0x3ff68c0574a", +"830211e47fe7adb46c943a4c64623\",\n \"nam", +"e\" : \"0x3ff68c0574a830211e\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 900000000\n}", +", \n{\n \"ETH_account\" : \"0x4cc94bb152c6", +"fe358494d24b1528f8815cdf192d\",\n \"name", +"\" : \"0x4cc94bb152c6fe3584\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1700000000\n}", +", \n{\n \"ETH_account\" : \"0x78e8d3ba4016", +"571658ae26178a9ccd6b87f9fec7\",\n \"name", +"\" : \"0x78e8d3ba4016571658\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 43000000\n}, ", +"\n{\n \"ETH_account\" : \"0xf570baa5b24195", +"51603218a6446c65db37e8f5d6\",\n \"name\" ", +": \"0xf570baa5b241955160\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 290926920\n}, \n", +"{\n \"ETH_account\" : \"0x88e3747986cb89f", +"89bfd931dde946efd9cc029ef\",\n \"name\" :", +" \"0x88e3747986cb89f89b\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 4302294533\n}, \n", +"{\n \"ETH_account\" : \"0xb68b9bee427be97", +"f76bbbb25eb23dd5d93a68bb9\",\n \"name\" :", +" \"0xb68b9bee427be97f76\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 250000000\n}, \n{", +"\n \"ETH_account\" : \"0x9b4b5eb69fafad55", +"299aa43173e21e191023501a\",\n \"name\" : ", +"\"0x9b4b5eb69fafad5529\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 283932319\n}, \n{\n", +" \"ETH_account\" : \"0x5f2c3fba30bbc0d20", +"0f6927ae1b36f349d03b282\",\n \"name\" : \"", +"0x5f2c3fba30bbc0d200\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 125000000\n}, \n{\n ", +" \"ETH_account\" : \"0xebb39e19f916bc58ca", +"12be2400dfb863ac20549c\",\n \"name\" : \"0", +"xebb39e19f916bc58ca\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 4265000000\n}, \n{\n ", +" \"ETH_account\" : \"0xc96f37a5b0aa16dcd3", +"2d5a4be2648fc495ede2a3\",\n \"name\" : \"0", +"xc96f37a5b0aa16dcd3\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 102035000\n}, \n{\n ", +" \"ETH_account\" : \"0xc30adcf3da566a898cd", +"03d359af1ba94948001ac\",\n \"name\" : \"0x", +"c30adcf3da566a898c\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 2141390000\n}, \n{\n ", +" \"ETH_account\" : \"0x3fd99764ec3758b2d16", +"fac74f7a3362c09e3993f\",\n \"name\" : \"0x", +"3fd99764ec3758b2d1\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 87533\n}, \n{\n \"ET", +"H_account\" : \"0xaf11af61bd1e605ed31fa5cb", +"91799b092a9a58e5\",\n \"name\" : \"0xaf11a", +"f61bd1e605ed3\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 535000000\n}, \n{\n \"ETH", +"_account\" : \"0xc3fbf8ed3cd9d437e74625a2d", +"83b71ab3ecd44d0\",\n \"name\" : \"0xc3fbf8", +"ed3cd9d437e7\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 10030000000\n}, \n{\n \"ET", +"H_account\" : \"0x7bf4829413518829458adb4e", +"3ed17815b50b7ece\",\n \"name\" : \"0x7bf48", +"2941351882945\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 2550000000\n}, \n{\n \"ET", +"H_account\" : \"0xe6051de84ac4b51655449345", +"02f418930d6ebb39\",\n \"name\" : \"0xe6051", +"de84ac4b51655\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 403000\n}, \n{\n \"ETH_ac", +"count\" : \"0x670e994b0739fcb193549688c630", +"0f76e23bb4e4\",\n \"name\" : \"0x670e994b0", +"739fcb193\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 390247000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xc09898326e274b9196bfb20b3e5bb", +"3813c914c60\",\n \"name\" : \"0xc09898326e", +"274b9196\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2521541000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x58c219b9f9ca7098cc52f5ad45f45", +"53cc2c14f32\",\n \"name\" : \"0x58c219b9f9", +"ca7098cc\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 100000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x33d0ed45ff8198ef5aec738fa4802e", +"cb23e138df\",\n \"name\" : \"0x33d0ed45ff8", +"198ef5a\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 2723000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x7e46594603505ee1fe6cd639f6cfa6", +"0f8e2d7f57\",\n \"name\" : \"0x7e465946035", +"05ee1fe\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 3998971865\n}, \n{\n \"ETH_acco", +"unt\" : \"0x0c4300ac9f09a858418f45c8bf1fa0", +"1437ade1ef\",\n \"name\" : \"0x0c4300ac9f0", +"9a85841\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1150000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x59b2d3f708521d6b630284a25e031a", +"b63de874c2\",\n \"name\" : \"0x59b2d3f7085", +"21d6b63\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 87512822\n}, \n{\n \"ETH_accoun", +"t\" : \"0xd3a986cc4327c5c25e07d7f8a6b31034", +"011f6cd4\",\n \"name\" : \"stoner\",\n \"p", +"ublicKey\" : \"SPH5D7stUqHiAhQR96vmeA7FZyA", +"TvTFo9Vm48TxCECwHaQDrMERYc\",\n \"balanc", +"e\" : 277067629\n}, \n{\n \"ETH_account\" :", +" \"0xf6bcd4eb5070312be2f03dfaa63ff6b52cf2", +"cd2e\",\n \"name\" : \"0xf6bcd4eb5070312be", +"2\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 8087071000\n}, \n{\n \"ETH_account\" :", +" \"0xcc4683cbbf00890857e4ff51e25c26b46538", +"fcb2\",\n \"name\" : \"0xcc4683cbbf0089085", +"7\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 475000000\n}, \n{\n \"ETH_account\" : ", +"\"0x71acaf6e6a472b55983a5cf8ea8b05e3bcdae", +"55c\",\n \"name\" : \"0x71acaf6e6a472b5598", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 5899841000\n}, \n{\n \"ETH_account\" : ", +"\"0xf4fca18db3398289d114d1f4f5a8273c3153e", +"96a\",\n \"name\" : \"0xf4fca18db3398289d1", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 11544699999\n}, \n{\n \"ETH_account\" :", +" \"0x631a1789cee1bbd57f8a32240f880d3a67c1", +"64aa\",\n \"name\" : \"0x631a1789cee1bbd57", +"f\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1000000000\n}, \n{\n \"ETH_account\" :", +" \"0xff33946ac0fd67639459fdab21771fb28dc7", +"6982\",\n \"name\" : \"0xff33946ac0fd67639", +"4\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 89626\n}, \n{\n \"ETH_account\" : \"0xb", +"717885257c186b62ec524f526bb7de6c5951ff5\"", +",\n \"name\" : \"0xb717885257c186b62e\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 7", +"30000000\n}, \n{\n \"ETH_account\" : \"0x34", +"b07fa22aa7b140d9d038150ded2404b50e36df\",", +"\n \"name\" : \"0x34b07fa22aa7b140d9\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 19", +"11141554\n}, \n{\n \"ETH_account\" : \"0x2f", +"250ce353c409c515febeb87a955bed329bacef\",", +"\n \"name\" : \"0x2f250ce353c409c515\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 19", +"99790000\n}, \n{\n \"ETH_account\" : \"0x04", +"4b53a2d235159946493f140b8560927a44388f\",", +"\n \"name\" : \"0x044b53a2d235159946\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 39", +"000000\n}, \n{\n \"ETH_account\" : \"0xaf96", +"cbe1971e7a02e8da495ec32847e5f200d6f6\",\n ", +" \"name\" : \"0xaf96cbe1971e7a02e8\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 4000", +"00000\n}, \n{\n \"ETH_account\" : \"0xe2058", +"aecb060bfaf71a951f97eb60d75d045ba16\",\n ", +" \"name\" : \"0xe2058aecb060bfaf71\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 75796", +"\n}, \n{\n \"ETH_account\" : \"0xe4041e69e0", +"bb34c194e4cc274b99acb267307f0a\",\n \"na", +"me\" : \"0xe4041e69e0bb34c194\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 89899000\n}", +", \n{\n \"ETH_account\" : \"0x4602a64c442b", +"b3f52883f6349e1e16cb9b304faf\",\n \"name", +"\" : \"0x4602a64c442bb3f528\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 240279692\n},", +" \n{\n \"ETH_account\" : \"0x562ca8b5550ef", +"827b8f9b329ff42fcbee602f164\",\n \"name\"", +" : \"0x562ca8b5550ef827b8\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1960438000\n},", +" \n{\n \"ETH_account\" : \"0x7b5722fd441a9", +"e0ca28f848e37499b1ab5eeaab5\",\n \"name\"", +" : \"0x7b5722fd441a9e0ca2\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1049436914\n},", +" \n{\n \"ETH_account\" : \"0xf02d1f1562a5b", +"5b6a85201ce4e1f0ee0b95c6217\",\n \"name\"", +" : \"0xf02d1f1562a5b5b6a8\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 71000000\n}, \n", +"{\n \"ETH_account\" : \"0xbd0ec8a0ef90fe2", +"7dbdacbb86b34743b09c7f13c\",\n \"name\" :", +" \"0xbd0ec8a0ef90fe27db\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 9000\n}, \n{\n ", +"\"ETH_account\" : \"0x8dd1463a8035c2b8e7d9e", +"b2496bbdaca3ca6e510\",\n \"name\" : \"0x8d", +"d1463a8035c2b8e7\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 84392000\n}, \n{\n \"E", +"TH_account\" : \"0xcc4ea1e31fa090ed2bf5425", +"9286b65341ff4f3be\",\n \"name\" : \"0xcc4e", +"a1e31fa090ed2b\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1769999999\n}, \n{\n \"E", +"TH_account\" : \"0xea669ac6209cfcc3e4fe749", +"46f9db846c0c833da\",\n \"name\" : \"0xea66", +"9ac6209cfcc3e4\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 130000000\n}, \n{\n \"ET", +"H_account\" : \"0x9230c7433aa64ba688e6b36b", +"515a95aeb173d735\",\n \"name\" : \"0x9230c", +"7433aa64ba688\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 302000000\n}, \n{\n \"ETH", +"_account\" : \"0x1533a6d6515f07bce129350ec", +"25c59a9a69ad7f9\",\n \"name\" : \"0x1533a6", +"d6515f07bce1\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3000000000\n}, \n{\n \"ETH", +"_account\" : \"0xc2baa26943c1b649c8a9dc0f1", +"abaa5f1e0108652\",\n \"name\" : \"0xc2baa2", +"6943c1b649c8\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 534000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xc7e573e77012b02e2c6bf24d256ee", +"73432dc4e19\",\n \"name\" : \"0xc7e573e770", +"12b02e2c\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 199000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x477c867a6692731ce95e9a7eac09d8", +"a356c2f30c\",\n \"name\" : \"0x477c867a669", +"2731ce9\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 131989162\n}, \n{\n \"ETH_accou", +"nt\" : \"0x871bf2405a0e61154300cc13bcb195a", +"26dd6b41c\",\n \"name\" : \"0x871bf2405a0e", +"611543\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1817286855\n}, \n{\n \"ETH_accou", +"nt\" : \"0x64bba15e24d8bd2eeb1ca82dcf5bd01", +"7c4942852\",\n \"name\" : \"0x64bba15e24d8", +"bd2eeb\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 176764454\n}, \n{\n \"ETH_accoun", +"t\" : \"0x8a2cf2b4d25f3c83d2a5dd14b072ab45", +"f3c27396\",\n \"name\" : \"0x8a2cf2b4d25f3", +"c83d2\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 790000000\n}, \n{\n \"ETH_account", +"\" : \"0xd2ba7dd9214cb91d5c9193d4c9c94afa5", +"d77aea2\",\n \"name\" : \"0xd2ba7dd9214cb9", +"1d5c\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 800000000\n}, \n{\n \"ETH_account\"", +" : \"0xc4b4feb621406492145f2dd8aa59a7ce75", +"ac8767\",\n \"name\" : \"0xc4b4feb62140649", +"214\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 2773657255\n}, \n{\n \"ETH_account\"", +" : \"0x15e387f9b87a5995cbc6b90368d7939019", +"bfc214\",\n \"name\" : \"0x15e387f9b87a599", +"5cb\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1702000000\n}, \n{\n \"ETH_account\"", +" : \"0x0bcac9a597f9750372cc4f49ab2dbdd857", +"473032\",\n \"name\" : \"0x0bcac9a597f9750", +"372\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1200000000\n}, \n{\n \"ETH_account\"", +" : \"0xfc71c47fa57b7aa6093bd8483fdeaa8d4e", +"3748aa\",\n \"name\" : \"0xfc71c47fa57b7aa", +"609\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 8100000\n}, \n{\n \"ETH_account\" : ", +"\"0x1a6c37d03923a0b6f33c0957f18d84795d82d", +"f7c\",\n \"name\" : \"0x1a6c37d03923a0b6f3", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 325000000\n}, \n{\n \"ETH_account\" : \"", +"0x6eee53cf2862dfb2bb63a2a52d71d757a4dc81", +"8d\",\n \"name\" : \"0x6eee53cf2862dfb2bb\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 992850000\n}, \n{\n \"ETH_account\" : \"0", +"x398e5eff8d5172f8ce8786f1f547c6d70114a60", +"9\",\n \"name\" : \"0x398e5eff8d5172f8ce\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1799919970\n}, \n{\n \"ETH_account\" : \"0", +"xb971688675a561b1f3e73f0aaa044e64b829019", +"a\",\n \"name\" : \"0xb971688675a561b1f3\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 156614000\n}, \n{\n \"ETH_account\" : \"0x", +"a26086d44da87827c7c8f8df2ad22e42488e4a27", +"\",\n \"name\" : \"nickssophia\",\n \"publ", +"icKey\" : \"SPH86GhSZx345DMaUwv1Gu8sb4Dp5x", +"wqQ9JwSDLdPGttLHVmYgUtq\",\n \"balance\" ", +": 10963405700\n}, \n{\n \"ETH_account\" : ", +"\"0x21851f2d6b39bf4a2e869785d19af45959ec5", +"b04\",\n \"name\" : \"0x21851f2d6b39bf4a2e", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 385617259\n}, \n{\n \"ETH_account\" : \"", +"0x85390841708cd81ba4e5e644bbac58bcc86380", +"43\",\n \"name\" : \"0x85390841708cd81ba4\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1069000000\n}, \n{\n \"ETH_account\" : \"", +"0x0d22684fffa338ebdae6463ede253c91e7a2f7", +"33\",\n \"name\" : \"linweiqiao\",\n \"pub", +"licKey\" : \"SPH6FFMiQiwn36mYu7shfrx82KvtZ", +"ZE7oskAQRkE3VLxEb25kgWU5\",\n \"balance\"", +" : 12252000000\n}, \n{\n \"ETH_account\" :", +" \"0x4353601126d4a6232c1379a051f009d59929", +"0dc6\",\n \"name\" : \"0x4353601126d4a6232", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 569000000\n}, \n{\n \"ETH_account\" : ", +"\"0x689fb397dcf9f50244272953c0f90038e6cb2", +"bee\",\n \"name\" : \"0x689fb397dcf9f50244", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 74800\n}, \n{\n \"ETH_account\" : \"0x58", +"2b210ef3b6222d0cee7b330a866a6425ac7b90\",", +"\n \"name\" : \"0x582b210ef3b6222d0c\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 20", +"000000000\n}, \n{\n \"ETH_account\" : \"0x5", +"f317ba0fb5f34e3fe3bede46ecff2e955fb5ec2\"", +",\n \"name\" : \"0x5f317ba0fb5f34e3fe\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"000000000\n}, \n{\n \"ETH_account\" : \"0xb", +"347cd0a9b3bad516bdf600d2c6eb68d24b6550d\"", +",\n \"name\" : \"0xb347cd0a9b3bad516b\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 7", +"945311900\n}, \n{\n \"ETH_account\" : \"0xf", +"41e6bac2900a74441a1e82a420eee21c37cb4c8\"", +",\n \"name\" : \"0xf41e6bac2900a74441\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 8", +"62978000\n}, \n{\n \"ETH_account\" : \"0xbd", +"38a22e0ce1afb2ef2044ce57b8946bdbf3e42d\",", +"\n \"name\" : \"0xbd38a22e0ce1afb2ef\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 15", +"\n}, \n{\n \"ETH_account\" : \"0x40dd9edd5a", +"8f7844c0f0a2c685323343852134fd\",\n \"na", +"me\" : \"0x40dd9edd5a8f7844c0\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 102\n}, \n{\n", +" \"ETH_account\" : \"0xbd72074c64260e84a", +"974a2473a7881eb970cbe10\",\n \"name\" : \"", +"0xbd72074c64260e84a9\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 19000000\n}, \n{\n ", +" \"ETH_account\" : \"0xb16a2fe4589a5659dd3", +"533f1e35ad9e9074e4702\",\n \"name\" : \"0x", +"b16a2fe4589a5659dd\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 45000000\n}, \n{\n ", +"\"ETH_account\" : \"0x93d4cf925424b537e8555", +"dfbaf9775afe9429574\",\n \"name\" : \"0x93", +"d4cf925424b537e8\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 99601923\n}, \n{\n \"E", +"TH_account\" : \"0xc3788d3e12041fcd01cbd1a", +"c0c9bab219a8ffc16\",\n \"name\" : \"0xc378", +"8d3e12041fcd01\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 3000000000\n}, \n{\n \"E", +"TH_account\" : \"0x2692b5b9fd5f30e13feb58e", +"d92c979732c9c108b\",\n \"name\" : \"0x2692", +"b5b9fd5f30e13f\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 50000000\n}, \n{\n \"ETH", +"_account\" : \"0xf003ff6fb0e8db4a5aeae1021", +"6e6c22cee186aad\",\n \"name\" : \"0xf003ff", +"6fb0e8db4a5a\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 5500000000\n}, \n{\n \"ETH", +"_account\" : \"0x84630c111294b94272f71fcfc", +"02aa150437c495d\",\n \"name\" : \"0x84630c", +"111294b94272\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 123608\n}, \n{\n \"ETH_acc", +"ount\" : \"0xdb0763efe0401df0bc28301dd4f4b", +"706f92c14b8\",\n \"name\" : \"0xdb0763efe0", +"401df0bc\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2271000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xe95eb840e6662d67727c1a662e488", +"1bdcb47e59f\",\n \"name\" : \"turgturgenev", +"\",\n \"publicKey\" : \"SPH8XzC5Xc57JDvfM9", +"eciDPGNDKJRGX2HGz3yvgMDkgDmeMZMwXy7\",\n ", +" \"balance\" : 2421000000\n}, \n{\n \"ETH_", +"account\" : \"0xac2bacb2a50beed8f99407c815", +"6b0655709c64c1\",\n \"name\" : \"0xac2bacb", +"2a50beed8f9\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 10008098860\n}, \n{\n \"ETH", +"_account\" : \"0x12ba70634db209f0ff0ba1428", +"23eb72fb27ed7a2\",\n \"name\" : \"0x12ba70", +"634db209f0ff\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 250000000\n}, \n{\n \"ETH_", +"account\" : \"0xc037b9bff417ecccabd5610d91", +"0b87000cce97ea\",\n \"name\" : \"0xc037b9b", +"ff417ecccab\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 240000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x29cac5cc9ea633d80185ce90a48", +"9c85eecb68197\",\n \"name\" : \"0x29cac5cc", +"9ea633d801\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 10800000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xd1600041db40598524f3a34d2ed0b", +"9ba333036a0\",\n \"name\" : \"0xd1600041db", +"40598524\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 5540000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xb25821c3db6901e501a0f7ccb9f32", +"2c192c29ade\",\n \"name\" : \"0xb25821c3db", +"6901e501\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2465000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xc7603b574be3991f4d36ed3dbe673", +"f013a7f8976\",\n \"name\" : \"0xc7603b574b", +"e3991f4d\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 343500000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x7e31c9ce97adfbb6e8011675dc7117", +"59929997d5\",\n \"name\" : \"0x7e31c9ce97a", +"dfbb6e8\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 255000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x1fa09b795ca7c98f5a6877bcfc6e7ae", +"67996d4b7\",\n \"name\" : \"0x1fa09b795ca7", +"c98f5a\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 908200000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x661694318a8ed7fef365741a5c285469", +"412fad7d\",\n \"name\" : \"0x661694318a8ed", +"7fef3\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 899999907\n}, \n{\n \"ETH_account", +"\" : \"0x593816b86f1289045a3a7011dfe39093e", +"c1faca8\",\n \"name\" : \"0x593816b86f1289", +"045a\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 960000000\n}, \n{\n \"ETH_account\"", +" : \"0xbbe846566f2172adc9c0bcdccf8d280ad6", +"0dfa67\",\n \"name\" : \"0xbbe846566f2172a", +"dc9\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 546385000\n}, \n{\n \"ETH_account\" ", +": \"0x9a4889c7b6819a98d428c5181a396972a32", +"70c39\",\n \"name\" : \"0x9a4889c7b6819a98", +"d4\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 597000000\n}, \n{\n \"ETH_account\" :", +" \"0x00086f35099300e2f60e850b668d4019a86e", +"28b2\",\n \"name\" : \"0x00086f35099300e2f", +"6\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 323623099\n}, \n{\n \"ETH_account\" : ", +"\"0xda398af983484db3d3f8d49a6c46c361fdf0b", +"080\",\n \"name\" : \"0xda398af983484db3d3", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 246940069\n}, \n{\n \"ETH_account\" : \"", +"0x59b550d787ec087a59a5690efb79630ac9f321", +"08\",\n \"name\" : \"0x59b550d787ec087a59\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 28377000000\n}, \n{\n \"ETH_account\" : ", +"\"0x0d49c6c120f38f06b63fde4bcc725d156c81e", +"8d4\",\n \"name\" : \"0x0d49c6c120f38f06b6", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 2766434671\n}, \n{\n \"ETH_account\" : ", +"\"0x02dc02262beee7720597632b6b39ec6fba24a", +"ed8\",\n \"name\" : \"0x02dc02262beee77205", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 603000000\n}, \n{\n \"ETH_account\" : \"", +"0xe420ff3bd4b6219986f805c573af2b5b22f463", +"13\",\n \"name\" : \"0xe420ff3bd4b6219986\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1942065000\n}, \n{\n \"ETH_account\" : \"", +"0x2ae010145999640056d77690d5ac584d71b74c", +"63\",\n \"name\" : \"0x2ae010145999640056\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 74000000\n}, \n{\n \"ETH_account\" : \"0x", +"0897a9edc844f08ec21b45e2fcb7f6fa319f0ca4", +"\",\n \"name\" : \"0x0897a9edc844f08ec2\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"628000\n}, \n{\n \"ETH_account\" : \"0x6cc7", +"f9efa5a7ba0a979c3877e8f0349809d2b661\",\n ", +" \"name\" : \"0x6cc7f9efa5a7ba0a97\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1034", +"792000\n}, \n{\n \"ETH_account\" : \"0x7121", +"13f30dd4f44a6de60aa4c4149f60f89c98aa\",\n ", +" \"name\" : \"0x712113f30dd4f44a6d\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 7550", +"00000\n}, \n{\n \"ETH_account\" : \"0x00bba", +"03ed7b3ce9f1efdfc9945a95af6ed42a577\",\n ", +" \"name\" : \"33swap33\",\n \"publicKey\" :", +" \"SPH6bQPUuSkxNaHQZHPSfkgMgkGiqcxsZUDFY1", +"mKfWfN7dmvtfa6c\",\n \"balance\" : 400000", +"0000\n}, \n{\n \"ETH_account\" : \"0x4f2851", +"ad0092229ab2a53f8210c68b1c1f5e6e39\",\n ", +" \"name\" : \"0x4f2851ad0092229ab2\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 141534", +"2617\n}, \n{\n \"ETH_account\" : \"0x043f19", +"855cc8b31941f72d4728a4d32c0476a70d\",\n ", +" \"name\" : \"0x043f19855cc8b31941\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 256000", +"000\n}, \n{\n \"ETH_account\" : \"0x83655d5", +"d438856ab52c80314d202f7d48c7984cc\",\n ", +"\"name\" : \"0x83655d5d438856ab52\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1950000", +"00\n}, \n{\n \"ETH_account\" : \"0xb1bb20b1", +"4c090fa0c3501a221dba5dcd2ec1c40e\",\n \"", +"name\" : \"sam\",\n \"publicKey\" : \"SPH5ux", +"yDSs35SYkB8YBLF2icEnQm3Pm7nrWwHHePBjiWMM", +"UwiX8gM\",\n \"balance\" : 9819000000\n}, ", +"\n{\n \"ETH_account\" : \"0xc3b498bcef2645", +"8d4e2b2a2acfa05f7a6ed8c145\",\n \"name\" ", +": \"wimvanleeuwen\",\n \"publicKey\" : \"SP", +"H8dkNMyukENxSknvLUsLPkCnvJtSvuEby7iqJTdr", +"T79xHCR4Ld9\",\n \"balance\" : 1993819000", +"\n}, \n{\n \"ETH_account\" : \"0xe2e61686b9", +"f14a863fe9071292bad55b5947c6e9\",\n \"na", +"me\" : \"achrafmlika\",\n \"publicKey\" : \"", +"SPH79ooQrDLAEqpzY9aWFSyWJtmruDiZv7skJA3T", +"5zoLKnxTLKeeS\",\n \"balance\" : 56032876", +"3\n}, \n{\n \"ETH_account\" : \"0xbff9616df", +"db470aabea65e1ce8875c31ebcfd2ea\",\n \"n", +"ame\" : \"0xbff9616dfdb470aabe\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 163796896", +"7\n}, \n{\n \"ETH_account\" : \"0x37c12a14f", +"b4e6433b9295e242a0beed4610f808f\",\n \"n", +"ame\" : \"0x37c12a14fb4e6433b9\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 445000000", +"\n}, \n{\n \"ETH_account\" : \"0x90466c82bd", +"20c83162dbc920676652ed30a9c9fb\",\n \"na", +"me\" : \"0x90466c82bd20c83162\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 450000000\n", +"}, \n{\n \"ETH_account\" : \"0xd843575fcfd", +"dd0f375d9a3b6b50ea044ba749010\",\n \"nam", +"e\" : \"0xd843575fcfddd0f375\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1000000000\n", +"}, \n{\n \"ETH_account\" : \"0x1e3abc249d0", +"f31b23d8d6b64606895d76ad8fca5\",\n \"nam", +"e\" : \"0x1e3abc249d0f31b23d\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 250000000\n}", +", \n{\n \"ETH_account\" : \"0xd07f9074f641", +"cb70174bec2f3bc594046d7475b1\",\n \"name", +"\" : \"0xd07f9074f641cb7017\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 100000000\n},", +" \n{\n \"ETH_account\" : \"0xcdcaa9bc3b6e9", +"6d32b81009df88aad193dc28d1e\",\n \"name\"", +" : \"0xcdcaa9bc3b6e96d32b\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 709000\n}, \n{\n", +" \"ETH_account\" : \"0x45f0cdcf9a549e686", +"6fd2a5f362de278f146b126\",\n \"name\" : \"", +"0x45f0cdcf9a549e6866\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 396000000\n}, \n{\n ", +" \"ETH_account\" : \"0x9c1cb7fe353c61b7a4", +"29d2f5765bf389139c9e87\",\n \"name\" : \"0", +"x9c1cb7fe353c61b7a4\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1500000000\n}, \n{\n ", +" \"ETH_account\" : \"0x0860bf68816b1469a1", +"0fef89a96d9dba70e2bfb1\",\n \"name\" : \"0", +"x0860bf68816b1469a1\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 393000000\n}, \n{\n ", +" \"ETH_account\" : \"0x764ed420356f61d98ac", +"21ee6dd6be1d608272fb9\",\n \"name\" : \"0x", +"764ed420356f61d98a\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 9501000000\n}, \n{\n ", +" \"ETH_account\" : \"0x938eef78a5d4348e49c", +"9a7cd7a9361daba5c0ef5\",\n \"name\" : \"0x", +"938eef78a5d4348e49\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 259759713\n}, \n{\n ", +" \"ETH_account\" : \"0xec568be31a1394b15e03", +"8e1371fe426fa5060ddc\",\n \"name\" : \"0xe", +"c568be31a1394b15e\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 978163281\n}, \n{\n ", +"\"ETH_account\" : \"0x9c2a56391f3bdbe4e38ab", +"1974a72bbe7603c54ac\",\n \"name\" : \"0x9c", +"2a56391f3bdbe4e3\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1055000000\n}, \n{\n ", +"\"ETH_account\" : \"0x7e4dec3a50bbeeb1e1b74", +"3e3b9587940b0652c85\",\n \"name\" : \"mass", +"illon\",\n \"publicKey\" : \"SPH7E9A1e423E", +"a2kUkp3CUtnrSLAL91QzT5pkXmCLu7qvWCdG3zs8", +"\",\n \"balance\" : 3826364000\n}, \n{\n ", +"\"ETH_account\" : \"0x46fe04d41a30e773d2190", +"1680edffd428ca2cff6\",\n \"name\" : \"0x46", +"fe04d41a30e773d2\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 237173000\n}, \n{\n \"", +"ETH_account\" : \"0x82b3c21d513f4b03b62179", +"4a764a5b65304f538a\",\n \"name\" : \"0x82b", +"3c21d513f4b03b6\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 500000000\n}, \n{\n \"E", +"TH_account\" : \"0xb092512306480c27fe60f15", +"6e56eccb0c4b0c140\",\n \"name\" : \"0xb092", +"512306480c27fe\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 355000000\n}, \n{\n \"ET", +"H_account\" : \"0x23ecd7495fec1978c62914ac", +"cb054115e4edbc49\",\n \"name\" : \"0x23ecd", +"7495fec1978c6\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 3755142000\n}, \n{\n \"ET", +"H_account\" : \"0xcfa51a95edff2f519a589e9a", +"7a3522de8525a405\",\n \"name\" : \"0xcfa51", +"a95edff2f519a\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1400000000\n}, \n{\n \"ET", +"H_account\" : \"0x542c2e188973a7320648ea7b", +"2dbf590aa7e17342\",\n \"name\" : \"0x542c2", +"e188973a73206\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 163605000\n}, \n{\n \"ETH", +"_account\" : \"0x2a1a38e71c807f32b2d60f9c9", +"bec0164b07ac57f\",\n \"name\" : \"drawthel", +"inetime\",\n \"publicKey\" : \"SPH88az4Z7z", +"b14MpVJgnxeKn3nzSJGgEmHaBN7Adr9MJsfksRqu", +"oc\",\n \"balance\" : 10304131589\n}, \n{\n ", +" \"ETH_account\" : \"0xe9fb3941389927a158", +"d6c31e8d328f41e6217b38\",\n \"name\" : \"0", +"xe9fb3941389927a158\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 461000000\n}, \n{\n ", +" \"ETH_account\" : \"0x90866ab62d443365a9c", +"d01e7374d0a512cc6a675\",\n \"name\" : \"0x", +"90866ab62d443365a9\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 5496\n}, \n{\n \"ETH", +"_account\" : \"0x65c3d3e4431c133e6d6331ab1", +"5e312a8b5873cda\",\n \"name\" : \"0x65c3d3", +"e4431c133e6d\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1109960000\n}, \n{\n \"ETH", +"_account\" : \"0x7ad6e05f8961ae99863f9c371", +"d4f4f88f1d5bc08\",\n \"name\" : \"0x7ad6e0", +"5f8961ae9986\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 500000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x9a065521ba01c0de50589bc6dc76d", +"f229a164f3b\",\n \"name\" : \"0x9a065521ba", +"01c0de50\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 354601738\n}, \n{\n \"ETH_acco", +"unt\" : \"0xc0392f009482e3489811c55315c48f", +"ef5bbaabc8\",\n \"name\" : \"0xc0392f00948", +"2e34898\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 500000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x88d92011ff7010bdf7970f27f51c056", +"366c29ba9\",\n \"name\" : \"0x88d92011ff70", +"10bdf7\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 450000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xfadf8ef9c18622b637a3b73dcf2dddb8", +"07043b41\",\n \"name\" : \"0xfadf8ef9c1862", +"2b637\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 7384102000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xff86ac589a8ed9446d4536def86cbf62", +"9eb32469\",\n \"name\" : \"0xff86ac589a8ed", +"9446d\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 746194\n}, \n{\n \"ETH_account\" :", +" \"0x29f921284c0eae42ff9b7780c1380ee0032a", +"edb7\",\n \"name\" : \"0x29f921284c0eae42f", +"f\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 247000000\n}, \n{\n \"ETH_account\" : ", +"\"0x121cae6101ed8908372684811b4fe0039583f", +"bb9\",\n \"name\" : \"0x121cae6101ed890837", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 5100416000\n}, \n{\n \"ETH_account\" : ", +"\"0x593946d57a4c84c999e9aeabc60758ac9691f", +"744\",\n \"name\" : \"0x593946d57a4c84c999", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 217605000\n}, \n{\n \"ETH_account\" : \"", +"0x851e931a6cabbdd5b17d0da2cd4b0edf119419", +"68\",\n \"name\" : \"0x851e931a6cabbdd5b1\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 200000000\n}, \n{\n \"ETH_account\" : \"0", +"xf668599da1ea73c6f19960b5e9c99475c4da143", +"4\",\n \"name\" : \"0xf668599da1ea73c6f1\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1075113188\n}, \n{\n \"ETH_account\" : \"0", +"xb76a216fbe080781dc2ed61486a31b151a745a7", +"b\",\n \"name\" : \"0xb76a216fbe080781dc\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 21168381249\n}, \n{\n \"ETH_account\" : \"", +"0x71c3e4c1986ee20ad871556cade3fb2efd80f2", +"8e\",\n \"name\" : \"0x71c3e4c1986ee20ad8\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1000000000\n}, \n{\n \"ETH_account\" : \"", +"0x39edda0924100a156a7f3f76ec5a7643673e3f", +"4f\",\n \"name\" : \"0x39edda0924100a156a\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 196\n}, \n{\n \"ETH_account\" : \"0xe2f99", +"4fe2732d3f1e4e78d17437b4538bcfe378f\",\n ", +" \"name\" : \"0xe2f994fe2732d3f1e4\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 69800", +"0000\n}, \n{\n \"ETH_account\" : \"0x748b91", +"ffa1e258bf519e8d815b15c092d3bec37f\",\n ", +" \"name\" : \"0x748b91ffa1e258bf51\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 115502", +"7620\n}, \n{\n \"ETH_account\" : \"0x793f73", +"67126cecb19dfbe85e294fe43a47547f75\",\n ", +" \"name\" : \"lcrsphtx\",\n \"publicKey\" : ", +"\"SPH6GTowhdHD6M27Qgtw69Xu9ffE8iUZV6FwDBy", +"82Hz6LHh1ndBP4\",\n \"balance\" : 2986900", +"000\n}, \n{\n \"ETH_account\" : \"0xb6001a8", +"016bb45ef72eb49f2c15b390f7fe67a16\",\n ", +"\"name\" : \"0xb6001a8016bb45ef72\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 6564240", +"00\n}, \n{\n \"ETH_account\" : \"0x7e82a76a", +"2b72f1e3318dc55bb059d83b59353c4a\",\n \"", +"name\" : \"0x7e82a76a2b72f1e331\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 22828957", +"40\n}, \n{\n \"ETH_account\" : \"0x9a69d03a", +"8e14a8dda3c57bf340ba959726372c45\",\n \"", +"name\" : \"0x9a69d03a8e14a8dda3\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 25470000", +"00\n}, \n{\n \"ETH_account\" : \"0x3702cd8f", +"d085c44930af141f2411d5be6437719a\",\n \"", +"name\" : \"0x3702cd8fd085c44930\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 41470000", +"0\n}, \n{\n \"ETH_account\" : \"0xe16ed78e1", +"4fc4b8dab8ff7114cf21b7e8fb2a0f9\",\n \"n", +"ame\" : \"0xe16ed78e14fc4b8dab\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 415813070", +"0\n}, \n{\n \"ETH_account\" : \"0x17e46f41a", +"6dd2137f5bc9f1b9a78953666543e33\",\n \"n", +"ame\" : \"0x17e46f41a6dd2137f5\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 242100000", +"0\n}, \n{\n \"ETH_account\" : \"0x4c4f206a5", +"dc8b00d26cf0b67a990504f61b7f46b\",\n \"n", +"ame\" : \"0x4c4f206a5dc8b00d26\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 333000000", +"\n}, \n{\n \"ETH_account\" : \"0x2bb5813640", +"f44a835582c43d8cb3af0052ecdc1d\",\n \"na", +"me\" : \"samwalletsphtx\",\n \"publicKey\" ", +": \"SPH4vYELVoDKaDBCocuDxnf7sJAXkE7QSgYvW", +"zuydtnQyd3gHicQ7\",\n \"balance\" : 25092", +"48000\n}, \n{\n \"ETH_account\" : \"0xd0a2c", +"a527c534e391b55e1f25c2a798bb5533e80\",\n ", +" \"name\" : \"0xd0a2ca527c534e391b\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 90000", +"0000\n}, \n{\n \"ETH_account\" : \"0x40025c", +"888d75926b7e363e04d8348e2d9bf2d727\",\n ", +" \"name\" : \"0x40025c888d75926b7e\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 682000", +"0000\n}, \n{\n \"ETH_account\" : \"0xfc98b4", +"3e5ea13bdb7bd8108bf78d459409ec934f\",\n ", +" \"name\" : \"0xfc98b43e5ea13bdb7b\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 105000", +"0000\n}, \n{\n \"ETH_account\" : \"0xde6969", +"39ca4bc220886c649280d0142ffc6d8744\",\n ", +" \"name\" : \"0xde696939ca4bc22088\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 500000", +"000\n}, \n{\n \"ETH_account\" : \"0x1e7d95a", +"463316ad37629a95f9697edff92d55a49\",\n ", +"\"name\" : \"0x1e7d95a463316ad376\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1046750", +"00\n}, \n{\n \"ETH_account\" : \"0x3d79161a", +"646f7bab055909967fa5f0a4eb1e4215\",\n \"", +"name\" : \"alexbkk\",\n \"publicKey\" : \"SP", +"H6FKcgbyemnaMAVmnJamA7J8Un9jmzu14YwFigS1", +"SC7eVF4YQ27\",\n \"balance\" : 9698531000", +"\n}, \n{\n \"ETH_account\" : \"0x1aebb381ac", +"fd85b77d1a7187607fbfdb16c1affd\",\n \"na", +"me\" : \"0x1aebb381acfd85b77d\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 160000000\n", +"}, \n{\n \"ETH_account\" : \"0x47da2c62cf1", +"56fb3dfb71f08077881fe995aa4a0\",\n \"nam", +"e\" : \"0x47da2c62cf156fb3df\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 11001187600", +"0\n}, \n{\n \"ETH_account\" : \"0xb2fe3510d", +"99be52c2a06ab8bca6a37afecb1d375\",\n \"n", +"ame\" : \"0xb2fe3510d99be52c2a\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 205747967", +"6\n}, \n{\n \"ETH_account\" : \"0xe8a23b1de", +"dfc0ef3450b90ebaef712d661cda6b4\",\n \"n", +"ame\" : \"0xe8a23b1dedfc0ef345\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 105000000", +"\n}, \n{\n \"ETH_account\" : \"0x449b519c7a", +"7ec7a981378d44f2a9620aa9377b19\",\n \"na", +"me\" : \"sophiatxv200000\",\n \"publicKey\"", +" : \"SPH8ix8p3btuxN1QSjDQzaFZuqwphLNNVVvW", +"6mtmTTY39FjsHFcxA\",\n \"balance\" : 1171", +"9203883\n}, \n{\n \"ETH_account\" : \"0x27e", +"bcf71520fe4f987b398cfc6082bc4588f68e2\",\n", +" \"name\" : \"0x27ebcf71520fe4f987\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 860", +"000000\n}, \n{\n \"ETH_account\" : \"0x3c9d", +"d5de1eb9da9fb39931136b4d490a558f0021\",\n ", +" \"name\" : \"0x3c9dd5de1eb9da9fb3\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 8990", +"00009\n}, \n{\n \"ETH_account\" : \"0xa4007", +"10ba93c12cb56dd304a447351d97ae196ed\",\n ", +" \"name\" : \"0xa400710ba93c12cb56\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10410", +"00000\n}, \n{\n \"ETH_account\" : \"0xc5852", +"da0d0829901f62be32d61721ad236668d7e\",\n ", +" \"name\" : \"0xc5852da0d0829901f6\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 19630", +"00000\n}, \n{\n \"ETH_account\" : \"0x8204d", +"027f99aff025825f5621992e8e12834674a\",\n ", +" \"name\" : \"0x8204d027f99aff0258\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 44860", +"9000\n}, \n{\n \"ETH_account\" : \"0x61ed2c", +"7facb732d7d6369cbb06057ae9642e2b77\",\n ", +" \"name\" : \"0x61ed2c7facb732d7d6\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 430000", +"000\n}, \n{\n \"ETH_account\" : \"0x0e92907", +"118c537d3f92b4aeef11649af34cbf4b8\",\n ", +"\"name\" : \"0x0e92907118c537d3f9\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4000000", +"00\n}, \n{\n \"ETH_account\" : \"0xeeec16ae", +"ffa231436b302541289ccd96e1dedc9d\",\n \"", +"name\" : \"stream\",\n \"publicKey\" : \"SPH", +"5CyjYQR911FUR39DajEtFpbimjExrsWKDJ2nyApw", +"SwTn1xSKpP\",\n \"balance\" : 909268649\n}", +", \n{\n \"ETH_account\" : \"0x104d568ae17c", +"0dc2634a3b1fded6e879ad0ac96d\",\n \"name", +"\" : \"0x104d568ae17c0dc263\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 192926585\n},", +" \n{\n \"ETH_account\" : \"0xda5fe49f245d0", +"7555011a6869c0a0c1a9c564d6c\",\n \"name\"", +" : \"alimec\",\n \"publicKey\" : \"SPH8eFSb", +"XK3NTPiGReJS3SQ85HLmGasEB5ds6Kd5y1DGxiau", +"WPpHv\",\n \"balance\" : 364000000\n}, \n{\n", +" \"ETH_account\" : \"0xc90b55a20626ea52f", +"07110d969996dc6e720820b\",\n \"name\" : \"", +"0xc90b55a20626ea52f0\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 70000000\n}, \n{\n ", +" \"ETH_account\" : \"0x4d7b4d9ab1ac23f83ad", +"d2ca295adba17a33fef68\",\n \"name\" : \"0x", +"4d7b4d9ab1ac23f83a\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 190000000\n}, \n{\n ", +" \"ETH_account\" : \"0x1e24871163bad8483c29", +"0c8849af3251fb08d034\",\n \"name\" : \"0x1", +"e24871163bad8483c\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 466000000\n}, \n{\n ", +"\"ETH_account\" : \"0x9292c3f1797c9405fe2b8", +"c0a5cd7496d5a4ae2de\",\n \"name\" : \"0x92", +"92c3f1797c9405fe\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 360877538\n}, \n{\n \"", +"ETH_account\" : \"0xf9ddf5423236bc6e6b97fd", +"dd28882c07cc366025\",\n \"name\" : \"0xf9d", +"df5423236bc6e6b\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 253000000\n}, \n{\n \"E", +"TH_account\" : \"0xd4c0248e9b5a69c42fdbde1", +"f2408e7f99eb57178\",\n \"name\" : \"0xd4c0", +"248e9b5a69c42f\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 166612521\n}, \n{\n \"ET", +"H_account\" : \"0x94d5a84a85343e7a04f84f6a", +"efdc0b8c215959be\",\n \"name\" : \"sphtxmn", +"\",\n \"publicKey\" : \"SPH7r1q3M5Nurx5hXZ", +"j6eJT8mgn5CcpHXoyZDJPeJHyK87e4ZPYys\",\n ", +" \"balance\" : 9980239681\n}, \n{\n \"ETH_", +"account\" : \"0x5a154e2f660bd59d689a75502b", +"62f4af80980740\",\n \"name\" : \"0x5a154e2", +"f660bd59d68\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 8077613868\n}, \n{\n \"ETH_", +"account\" : \"0x031e4e41a7f2433c37281bd3d5", +"403a4bcae82e51\",\n \"name\" : \"0x031e4e4", +"1a7f2433c37\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 596600000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xf90c8f778c48701cbeba53abc89", +"528a577bf4c25\",\n \"name\" : \"0xf90c8f77", +"8c48701cbe\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1250000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x4ba00bc2a149851247832d7c7d6", +"198e4afcc4aab\",\n \"name\" : \"0x4ba00bc2", +"a149851247\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 145000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xc73eec50a7e9f492a38f701f7cd4", +"4012995e3e22\",\n \"name\" : \"0xc73eec50a", +"7e9f492a3\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 4000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x9406135180d94f08869272a28156937", +"cc23844c6\",\n \"name\" : \"0x9406135180d9", +"4f0886\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 903000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x786f08c2b374aa8fd3247bf302b63301", +"fa03686e\",\n \"name\" : \"0x786f08c2b374a", +"a8fd3\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 474718847\n}, \n{\n \"ETH_account", +"\" : \"0x7132a262b25a4eb358421beed9a94628e", +"a26d934\",\n \"name\" : \"0x7132a262b25a4e", +"b358\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 604518000\n}, \n{\n \"ETH_account\"", +" : \"0xafe99992602bd7bf327cdc88c4dff2c40b", +"8f998f\",\n \"name\" : \"0xafe99992602bd7b", +"f32\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 755000000\n}, \n{\n \"ETH_account\" ", +": \"0xfc3c0d21b725d61aeec3e086e7924f4d5eb", +"1946c\",\n \"name\" : \"cryptoilet\",\n \"", +"publicKey\" : \"SPH6n5iqNAbY8ghV7VvbUpM92o", +"X2NbgZfDoCjD3eBFN6wRkzigz12\",\n \"balan", +"ce\" : 2500000000\n}, \n{\n \"ETH_account\"", +" : \"0x115f1b47b316651bec5b9212558be2458e", +"971bbf\",\n \"name\" : \"0x115f1b47b316651", +"bec\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 414714385\n}, \n{\n \"ETH_account\" ", +": \"0x4ad1b35f1982507986eb8fd3a6576a680de", +"671ee\",\n \"name\" : \"0x4ad1b35f19825079", +"86\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 7695\n}, \n{\n \"ETH_account\" : \"0x8", +"552f8cc65e93dcd5f40f4ce5ae6f8710517fc7a\"", +",\n \"name\" : \"0x8552f8cc65e93dcd5f\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"250000000\n}, \n{\n \"ETH_account\" : \"0x4", +"dddd504962e2a54f88fddf877492225c5a2294b\"", +",\n \"name\" : \"0x4dddd504962e2a54f8\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 6", +"0000000\n}, \n{\n \"ETH_account\" : \"0xc3f", +"726f45438ac48a2610a136df5f06ddc5443d6\",\n", +" \"name\" : \"0xc3f726f45438ac48a2\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 200", +"000000\n}, \n{\n \"ETH_account\" : \"0xbb1b", +"eddd7ce371155ce8568247298a02e2b1b9e4\",\n ", +" \"name\" : \"0xbb1beddd7ce371155c\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 8600", +"00000\n}, \n{\n \"ETH_account\" : \"0xb78b7", +"2901d7608b4c7501f4769cce3a786d41310\",\n ", +" \"name\" : \"johndro\",\n \"publicKey\" : ", +"\"SPH8CXGitbodDPQHTKmbrTcog5uYZc1iM4fRHUV", +"T1FKQXVajTZUUn\",\n \"balance\" : 9150000", +"00\n}, \n{\n \"ETH_account\" : \"0x83972a13", +"40fd187385e217eae4ec4d84f76f7419\",\n \"", +"name\" : \"0x83972a1340fd187385\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 12000000", +"00\n}, \n{\n \"ETH_account\" : \"0x0c7c4559", +"6d1eb98c6a3728f666e2ce8cfec127b6\",\n \"", +"name\" : \"0x0c7c45596d1eb98c6a\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 97300000", +"0\n}, \n{\n \"ETH_account\" : \"0x5ec237055", +"69a8da1925be260bd6d16b667723458\",\n \"n", +"ame\" : \"0x5ec23705569a8da192\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 920000000", +"\n}, \n{\n \"ETH_account\" : \"0x4bac1621a5", +"6939dce722913bc8ef3fbac3c4b12f\",\n \"na", +"me\" : \"0x4bac1621a56939dce7\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2150000000", +"\n}, \n{\n \"ETH_account\" : \"0x741ca0fca0", +"092bc96f29f6432078a06cbdc6061a\",\n \"na", +"me\" : \"0x741ca0fca0092bc96f\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 8963\n}, \n{", +"\n \"ETH_account\" : \"0xc38247eb674a4808", +"9a67d82dea2f7a408eac92d6\",\n \"name\" : ", +"\"0xc38247eb674a48089a\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 220000000\n}, \n{\n", +" \"ETH_account\" : \"0x633bb8085b7b8e5f5", +"14f09b9b0f1c9b4495d1bde\",\n \"name\" : \"", +"0x633bb8085b7b8e5f51\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 185000000\n}, \n{\n ", +" \"ETH_account\" : \"0x282190c5cb40e4e638", +"a869ef6c3e981616de78ed\",\n \"name\" : \"n", +"orazrul\",\n \"publicKey\" : \"SPH5ZzhgsNz", +"jhgW7FN7UoQ1iNRHQAbVMbMQNjjneYv6JCCUAmTo", +"sv\",\n \"balance\" : 970000000\n}, \n{\n ", +" \"ETH_account\" : \"0x02fbf40eb38a916548fb", +"d98efa7fdb7a5cc691d6\",\n \"name\" : \"0x0", +"2fbf40eb38a916548\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 895966503\n}, \n{\n ", +"\"ETH_account\" : \"0x0a468a3643b4b79fd8660", +"aff21248cffa247aaa2\",\n \"name\" : \"0x0a", +"468a3643b4b79fd8\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 795626856\n}, \n{\n \"", +"ETH_account\" : \"0x408b12270ebb9e478caffe", +"e2f49aeff1a16b876b\",\n \"name\" : \"0x408", +"b12270ebb9e478c\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 949437695\n}, \n{\n \"E", +"TH_account\" : \"0xc6306a11cdbf8a9b38a1751", +"8fd5a6c50944a10a7\",\n \"name\" : \"0xc630", +"6a11cdbf8a9b38\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 600000000\n}, \n{\n \"ET", +"H_account\" : \"0xfe514a8f762986c26ba0b1e2", +"5e60680062ee6686\",\n \"name\" : \"0xfe514", +"a8f762986c26b\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 2880275266\n}, \n{\n \"ET", +"H_account\" : \"0x5d9cb97ee529fc950884c913", +"4ea3ad9a7c779b34\",\n \"name\" : \"0x5d9cb", +"97ee529fc9508\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 6259694900\n}, \n{\n \"ET", +"H_account\" : \"0xae3eecf91a699ce888ba7ab5", +"38e5bb250701c540\",\n \"name\" : \"0xae3ee", +"cf91a699ce888\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 838998521\n}, \n{\n \"ETH", +"_account\" : \"0x50c944204bce99f34928234b8", +"059bb5e83cdac77\",\n \"name\" : \"0x50c944", +"204bce99f349\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 219331599\n}, \n{\n \"ETH_", +"account\" : \"0xcfce48c136565396ef0c0578ed", +"bfcb5f5752ee30\",\n \"name\" : \"sphtxjtl\"", +",\n \"publicKey\" : \"SPH7V9W5GXM8qDkK58P", +"Q7ARp2th7wZ41GqbwK2DPbeLTAk5nZb7Rv\",\n ", +" \"balance\" : 2294124500\n}, \n{\n \"ETH_a", +"ccount\" : \"0x0c4234bb6a2807a44f5d188506a", +"560cf6672ff23\",\n \"name\" : \"0x0c4234bb", +"6a2807a44f\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1334000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x3f61fa93f2f062d53902b8f2cea", +"55cab3120ec3c\",\n \"name\" : \"0x3f61fa93", +"f2f062d539\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 99690958\n}, \n{\n \"ETH_acc", +"ount\" : \"0x3759aafe03859b57ed92b17a8a026", +"39358de5b4f\",\n \"name\" : \"0x3759aafe03", +"859b57ed\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2764000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x59dc8ddf09cb1feee461032a25810", +"f1ba6fa0aaa\",\n \"name\" : \"0x59dc8ddf09", +"cb1feee4\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 26388990559\n}, \n{\n \"ETH_ac", +"count\" : \"0x86ba8a328dd12af5f7f9c70c1ad4", +"ddc605c7ff64\",\n \"name\" : \"okeditdan\",", +"\n \"publicKey\" : \"SPH7C4WNql1ikVrE6r5V", +"RKYv9iA9iwKwx87UPXWxLooEnE7KxnaPt\",\n ", +"\"balance\" : 2890000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x1edbbb2d818366d5412677ae71d0", +"aea34b3b602d\",\n \"name\" : \"0x1edbbb2d8", +"18366d541\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 369379664000\n}, \n{\n \"ETH_", +"account\" : \"0x031c1a375f8327c1c89352356a", +"0f19b92f58953c\",\n \"name\" : \"0x031c1a3", +"75f8327c1c8\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 88000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x366990a8018360fffdaa9c99cb52", +"89d36bd3a71d\",\n \"name\" : \"0x366990a80", +"18360fffd\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 50000000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xa55064906a8519bc045d35294dd", +"3d89b52ea6403\",\n \"name\" : \"0xa5506490", +"6a8519bc04\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 464423000\n}, \n{\n \"ETH_ac", +"count\" : \"0x6b790f4903afcf8d5970b27db3dc", +"29aa89f184dc\",\n \"name\" : \"0x6b790f490", +"3afcf8d59\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 2769518000\n}, \n{\n \"ETH_ac", +"count\" : \"0x28c71534f866e8862dbfc88c6fb6", +"16cb09884aee\",\n \"name\" : \"davo\",\n ", +"\"publicKey\" : \"SPH4uSr6Gg1C3rpR5WNYxBw5c", +"G61rcZNo3DZNHL1WWXkhUzkvyuuC\",\n \"bala", +"nce\" : 40000000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x35d2a7f389b4a5b6370f7cf2cac0e5ed", +"eea9bae1\",\n \"name\" : \"pilzik\",\n \"p", +"ublicKey\" : \"SPH6DhhRQfDuzArmRih3Rcqp2jt", +"Fmoe32bVjBGR7H15g1yuZfU27d\",\n \"balanc", +"e\" : 65000000000\n}, \n{\n \"ETH_account\"", +" : \"0xf526cb1a6afc0ed58a9d58742e07fec40b", +"fef63f\",\n \"name\" : \"0xf526cb1a6afc0ed", +"58a\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 2181773701\n}, \n{\n \"ETH_account\"", +" : \"0xa6c80dd7a78323df56e2e491f61b6e1667", +"ac1e0b\",\n \"name\" : \"0xa6c80dd7a78323d", +"f56\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 21505084166\n}, \n{\n \"ETH_account", +"\" : \"0x025e8bdb7cddc324a1234078570efca6a", +"02b16c3\",\n \"name\" : \"0x025e8bdb7cddc3", +"24a1\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 131440696\n}, \n{\n \"ETH_account\"", +" : \"0x9043a4388ee916324188e50ee429440f80", +"b7b486\",\n \"name\" : \"0x9043a4388ee9163", +"241\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 103000000\n}, \n{\n \"ETH_account\" ", +": \"0x05274ce377f48162b95ec28da7600e3919a", +"73cdd\",\n \"name\" : \"0x05274ce377f48162", +"b9\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 619750776\n}, \n{\n \"ETH_account\" :", +" \"0xf6ca80bc2297ae967a597f7b454f28359b22", +"ddf2\",\n \"name\" : \"0xf6ca80bc2297ae967", +"a\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 4560000000\n}, \n{\n \"ETH_account\" :", +" \"0xb8214efce0bd7b1a12d44b596ad87a3fe9c1", +"3eac\",\n \"name\" : \"0xb8214efce0bd7b1a1", +"2\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 500631482\n}, \n{\n \"ETH_account\" : ", +"\"0x946a4ee5a9ae4a4ea8f3bf5ff2d9e1eb68ce9", +"f82\",\n \"name\" : \"0x946a4ee5a9ae4a4ea8", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 256000000\n}, \n{\n \"ETH_account\" : \"", +"0xe1759efee216f064df15114497d0a6b2c07ac3", +"8b\",\n \"name\" : \"0xe1759efee216f064df\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1196000000\n}, \n{\n \"ETH_account\" : \"", +"0x70ae18f976c9e1afebb3a6bb5bc8613561d3e1", +"d7\",\n \"name\" : \"0x70ae18f976c9e1afeb\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 319693277\n}, \n{\n \"ETH_account\" : \"0", +"x6b29cd8471f6618d8b95468f4d7d093cce992b8", +"c\",\n \"name\" : \"0x6b29cd8471f6618d8b\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 48000000\n}, \n{\n \"ETH_account\" : \"0xa", +"2180eaa45dbaa152b676d9f77a655f56b8c8bb5\"", +",\n \"name\" : \"sphtxbobbajory\",\n \"pu", +"blicKey\" : \"SPH7cMDHRBKDGmNikADFjLsdHLE3", +"UpicZiANzqW2Mssw6J5dijaWd\",\n \"balance", +"\" : 8380000000\n}, \n{\n \"ETH_account\" :", +" \"0xa805c129718d37f3ee8db40c77fab99e0c03", +"4601\",\n \"name\" : \"0xa805c129718d37f3e", +"e\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 5000000000\n}, \n{\n \"ETH_account\" :", +" \"0xd27e2886b7bf12f885f677fe3dd5d47274f4", +"ddc8\",\n \"name\" : \"0xd27e2886b7bf12f88", +"5\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 967000000\n}, \n{\n \"ETH_account\" : ", +"\"0xc5e7a1cb8caefa9a722f9c2e4e72fb2227741", +"b1f\",\n \"name\" : \"0xc5e7a1cb8caefa9a72", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 85581074\n}, \n{\n \"ETH_account\" : \"0", +"x5c6f06647a38a03791ab5485878043ab546805c", +"0\",\n \"name\" : \"0x5c6f06647a38a03791\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 730428396\n}, \n{\n \"ETH_account\" : \"0x", +"79111159e36cb573674d5ae8851a2ef23dad90e5", +"\",\n \"name\" : \"0x79111159e36cb57367\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"12462077856\n}, \n{\n \"ETH_account\" : \"0", +"x27bd0fc41e300294c22dfc44250a7ba874d7360", +"a\",\n \"name\" : \"0x27bd0fc41e300294c2\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 4052204000\n}, \n{\n \"ETH_account\" : \"0", +"x61f2e9fe56f60c76dc5b3343aa198afcd470086", +"9\",\n \"name\" : \"0x61f2e9fe56f60c76dc\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 960876703\n}, \n{\n \"ETH_account\" : \"0x", +"1f0740a62ec1bd503fc94bc40a4f64bd8cb5c051", +"\",\n \"name\" : \"0x1f0740a62ec1bd503f\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"150000000\n}, \n{\n \"ETH_account\" : \"0x0", +"8fa4650634c0414d82a87a899c328d43c616190\"", +",\n \"name\" : \"0x08fa4650634c0414d8\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"9569125\n}, \n{\n \"ETH_account\" : \"0xb70", +"8097375df62ecabad34ee5db8c5a8b5a4a04a\",\n", +" \"name\" : \"0xb708097375df62ecab\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 871", +"051952\n}, \n{\n \"ETH_account\" : \"0x495e", +"fe30418bb957a46d757f4cdd0d4e0e3f4c16\",\n ", +" \"name\" : \"0x495efe30418bb957a4\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 4860", +"0000000\n}, \n{\n \"ETH_account\" : \"0x9d7", +"c1eba621a6131a863959dd3033738c6012953\",\n", +" \"name\" : \"0x9d7c1eba621a6131a8\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 213", +"06234000\n}, \n{\n \"ETH_account\" : \"0x3b", +"3f13f14444d95fe67bd9c77ccb66a2a3ccf420\",", +"\n \"name\" : \"deniamani\",\n \"publicKe", +"y\" : \"SPH7uBdnKXCDyHHCsRkeyXAynYDEz8S4BY", +"ASbz4KVLFpNZMADbiF3\",\n \"balance\" : 37", +"82993581\n}, \n{\n \"ETH_account\" : \"0x80", +"37ccbbb0f348e8fad355e3e26d488600389ffb\",", +"\n \"name\" : \"0x8037ccbbb0f348e8fa\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 30", +"6463886\n}, \n{\n \"ETH_account\" : \"0x9ef", +"a2b81fdb1e4226f54e68606655151141143ee\",\n", +" \"name\" : \"0x9efa2b81fdb1e4226f\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 398", +"3598692\n}, \n{\n \"ETH_account\" : \"0xa58", +"e5a096df94a7a8f9fa725fa24dae8346ce203\",\n", +" \"name\" : \"0xa58e5a096df94a7a8f\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 100", +"000000\n}, \n{\n \"ETH_account\" : \"0x4843", +"25082328dffbf7955c3b81b7d08f3fb9a2fe\",\n ", +" \"name\" : \"apokoneswap\",\n \"publicKe", +"y\" : \"SPH5Gh4LXEKbonJqV7mXc1RTTc3fD6CXaa", +"EfjR8FrWx39tSotNJby\",\n \"balance\" : 22", +"00000000\n}, \n{\n \"ETH_account\" : \"0x07", +"d9eac303ca4d0e332ce7a953d30dba61bd0f50\",", +"\n \"name\" : \"0x07d9eac303ca4d0e33\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 69", +"91087198\n}, \n{\n \"ETH_account\" : \"0xe3", +"a9a49980fa09b54edf7f2f86d43a4866b50f25\",", +"\n \"name\" : \"0xe3a9a49980fa09b54e\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 32", +"3000000\n}, \n{\n \"ETH_account\" : \"0x4b8", +"2c4ed96ed1aacdec09a61f569bf474c7bd266\",\n", +" \"name\" : \"helmutdenutte\",\n \"publi", +"cKey\" : \"SPH6Hu72ViiPFw3M14ny4MP41NtSoe4", +"Ms7rZ3AENuHmnXJhFa6KaV\",\n \"balance\" :", +" 21411396518\n}, \n{\n \"ETH_account\" : \"", +"0xf1cc23478a5362b8aa03c0f89f20dce0edf702", +"62\",\n \"name\" : \"0xf1cc23478a5362b8aa\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1069420740\n}, \n{\n \"ETH_account\" : \"", +"0xda774ab571b8ee57832718dcfe99b872cecf91", +"8c\",\n \"name\" : \"0xda774ab571b8ee5783\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1217794311\n}, \n{\n \"ETH_account\" : \"", +"0xaafa1d295d502de66698badeb527546cbe4630", +"72\",\n \"name\" : \"0xaafa1d295d502de666\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 32583\n}, \n{\n \"ETH_account\" : \"0x38e", +"91bb7b6f366c223e661ddd25c839d01e0ae13\",\n", +" \"name\" : \"chuckstanley\",\n \"public", +"Key\" : \"SPH8HU7T5Y2W89wcnTsNT8aua7RCZk1B", +"fzA4YZruSaJECewEVerhV\",\n \"balance\" : ", +"1020304195\n}, \n{\n \"ETH_account\" : \"0x", +"c8ee43296df0c6d809433f91831a39e0934b6ad0", +"\",\n \"name\" : \"0xc8ee43296df0c6d809\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"455000000\n}, \n{\n \"ETH_account\" : \"0xe", +"8918621ec641d0d132b69716829b817ae2234e5\"", +",\n \"name\" : \"0xe8918621ec641d0d13\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 6", +"80000000\n}, \n{\n \"ETH_account\" : \"0x6c", +"b119655de8dbd3eed37c17e66abc6b12078a8b\",", +"\n \"name\" : \"0x6cb119655de8dbd3ee\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 70", +"699\n}, \n{\n \"ETH_account\" : \"0x942e48d", +"d098a9912c9114b2968ec0cbf7b3d6358\",\n ", +"\"name\" : \"0x942e48dd098a9912c9\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1200000", +"000\n}, \n{\n \"ETH_account\" : \"0x0e40c44", +"94546b8b8c6a993e0b491cdd8431c6417\",\n ", +"\"name\" : \"0x0e40c4494546b8b8c6\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 7000000", +"0\n}, \n{\n \"ETH_account\" : \"0x928bbd2a1", +"b18b84e7e18b598454dbe45c83c06f7\",\n \"n", +"ame\" : \"0x928bbd2a1b18b84e7e\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 103291986", +"11\n}, \n{\n \"ETH_account\" : \"0x894a1a2d", +"79fb226662a49f43a898661d9df7fc83\",\n \"", +"name\" : \"0x894a1a2d79fb226662\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 25362520", +"00\n}, \n{\n \"ETH_account\" : \"0xdf17bfb2", +"3b3306f27b9c50f4c84c6273d342de0d\",\n \"", +"name\" : \"miyuru\",\n \"publicKey\" : \"SPH", +"7Hq7B7LvZGgqX1kf7B3zKpZQyAu84TpxBGgVywV9", +"Whi9uUrihd\",\n \"balance\" : 1012590893\n", +"}, \n{\n \"ETH_account\" : \"0xf6ebccb132f", +"0690d750e04e9798dbf700eb8c12e\",\n \"nam", +"e\" : \"0xf6ebccb132f0690d75\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 366000\n}, \n", +"{\n \"ETH_account\" : \"0xac6416707cfaeda", +"1568efa9011c1c8a10db4c67b\",\n \"name\" :", +" \"0xac6416707cfaeda156\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1085796000\n}, \n", +"{\n \"ETH_account\" : \"0x9c0355bf04baf8d", +"2268e13dcc94fade7c037bfac\",\n \"name\" :", +" \"bitkeun\",\n \"publicKey\" : \"SPH7K3hrU", +"NYy3fJcjPMSVTg4q5xKxskNK3dmzeNoE5ezS6p5c", +"CSxx\",\n \"balance\" : 5805155916\n}, \n{\n", +" \"ETH_account\" : \"0x1cd712e3ea14cb4a4", +"7fa7ad18ed798f18098431a\",\n \"name\" : \"", +"0x1cd712e3ea14cb4a47\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 12000000000\n}, \n{", +"\n \"ETH_account\" : \"0x14d1505a42c33228", +"b093903de887970831e2eb69\",\n \"name\" : ", +"\"0x14d1505a42c33228b0\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 90000000\n}, \n{\n ", +" \"ETH_account\" : \"0xe05f0de09197c581cc", +"3eb3bb95d6777617a3efd7\",\n \"name\" : \"0", +"xe05f0de09197c581cc\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 431994000\n}, \n{\n ", +" \"ETH_account\" : \"0x09fc863d5df1e300fd0", +"aa319086a9232d38cc6c5\",\n \"name\" : \"0x", +"09fc863d5df1e300fd\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 159000000\n}, \n{\n ", +" \"ETH_account\" : \"0xb339152090bdff85a35a", +"80d372a7015161afe71b\",\n \"name\" : \"0xb", +"339152090bdff85a3\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 473000000\n}, \n{\n ", +"\"ETH_account\" : \"0x667b5e42a5c80f5de2fec", +"d34a31f3e7ed28644a7\",\n \"name\" : \"0x66", +"7b5e42a5c80f5de2\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 10000000\n}, \n{\n \"E", +"TH_account\" : \"0x9fddebd6b7c822f6594d3a9", +"b46a47fcb6841e2ce\",\n \"name\" : \"0x9fdd", +"ebd6b7c822f659\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1750000000\n}, \n{\n \"E", +"TH_account\" : \"0x872f6a5242a3e3aa2364c47", +"455942d94f84832e5\",\n \"name\" : \"0x872f", +"6a5242a3e3aa23\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 873387617\n}, \n{\n \"ET", +"H_account\" : \"0xc7747cf1f295f6efbc62761d", +"0cca39e692fd4dd6\",\n \"name\" : \"0xc7747", +"cf1f295f6efbc\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 2430501683\n}, \n{\n \"ET", +"H_account\" : \"0xcc042bc17ba11df2c9e3b86c", +"51b1ffe4587676bb\",\n \"name\" : \"0xcc042", +"bc17ba11df2c9\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1102503200\n}, \n{\n \"ET", +"H_account\" : \"0x04bcc07003f559cec56d12ef", +"26ec11e9709b5c31\",\n \"name\" : \"0x04bcc", +"07003f559cec5\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 156894579\n}, \n{\n \"ETH", +"_account\" : \"0xd7dbef8605996e43abc19554a", +"68fbc5c3d218a83\",\n \"name\" : \"flo\",\n ", +" \"publicKey\" : \"SPH5BZC4zbi5XjrRtZYxi8q", +"oahZg78JaRVvEsLWujFnKj9jQcSPjb\",\n \"ba", +"lance\" : 620000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xda3f73ac91fbdc7eb83f861639d43708", +"fa853dcf\",\n \"name\" : \"0xda3f73ac91fbd", +"c7eb8\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 389752\n}, \n{\n \"ETH_account\" :", +" \"0x58f8cdab62a81603aceaf27e8e3823967249", +"79d4\",\n \"name\" : \"0x58f8cdab62a81603a", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 84621000\n}, \n{\n \"ETH_account\" : \"", +"0xe08958dd76284f421ce554f1aeffe2e6a1f4d0", +"41\",\n \"name\" : \"0xe08958dd76284f421c\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 350000000\n}, \n{\n \"ETH_account\" : \"0", +"x5c9c4964261acac8f942f795cb41d337bac9d2f", +"2\",\n \"name\" : \"0x5c9c4964261acac8f9\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1247347535\n}, \n{\n \"ETH_account\" : \"0", +"x8b46cc9982427232811e7760710a040de70c5c2", +"c\",\n \"name\" : \"0x8b46cc998242723281\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1210220000\n}, \n{\n \"ETH_account\" : \"0", +"xf18a70873077ddbcc44addf62e3a07625724c84", +"a\",\n \"name\" : \"0xf18a70873077ddbcc4\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 879626000\n}, \n{\n \"ETH_account\" : \"0x", +"2ce8e8ac336110bac757a924df91599dea741bcf", +"\",\n \"name\" : \"0x2ce8e8ac336110bac7\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"140000000\n}, \n{\n \"ETH_account\" : \"0xd", +"7c8d86ed1421b414e6e0fc93475b04622f6b52c\"", +",\n \"name\" : \"0xd7c8d86ed1421b414e\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"361250000\n}, \n{\n \"ETH_account\" : \"0x5", +"8952bbbfe4c2c60eb36dafa161b36dea13bee35\"", +",\n \"name\" : \"0x58952bbbfe4c2c60eb\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"02000000\n}, \n{\n \"ETH_account\" : \"0x62", +"49aaaf068d4f08a85b52d9b41890da5d6be3c9\",", +"\n \"name\" : \"0x6249aaaf068d4f08a8\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 12", +"83013000\n}, \n{\n \"ETH_account\" : \"0xff", +"6e0a767024766a04e7e899ae8bf8a1d84e164f\",", +"\n \"name\" : \"0xff6e0a767024766a04\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 14", +"131000000\n}, \n{\n \"ETH_account\" : \"0xe", +"10876e636a37fccb49696fcf26bf471007fae87\"", +",\n \"name\" : \"0xe10876e636a37fccb4\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"000090742\n}, \n{\n \"ETH_account\" : \"0xf", +"e1c24fd89f32ce234db8f10cd4ba88edc3068c9\"", +",\n \"name\" : \"0xfe1c24fd89f32ce234\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 9", +"00000\n}, \n{\n \"ETH_account\" : \"0xe8c5a", +"bdbb47838cd63a4c5b4917968a08d40442a\",\n ", +" \"name\" : \"fredericotto\",\n \"publicKe", +"y\" : \"SPH5n1dLTHDybnp3zX7ZPw31pokaKvMx3P", +"ioiHsPHzityU9ZWXjnP\",\n \"balance\" : 39", +"03000000\n}, \n{\n \"ETH_account\" : \"0x35", +"779ab39376acae047b53804578066311c5ea83\",", +"\n \"name\" : \"0x35779ab39376acae04\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 21", +"4000000\n}, \n{\n \"ETH_account\" : \"0xbbd", +"b9f11ef167465096e38e77d4756dce833fccb\",\n", +" \"name\" : \"0xbbdb9f11ef16746509\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 649", +"530000\n}, \n{\n \"ETH_account\" : \"0x4125", +"6babb7f68bfd080b12ee7f1c86385e19d5e7\",\n ", +" \"name\" : \"sphxwally\",\n \"publicKey\"", +" : \"SPH76Rk2HM5Gm4c5V5WYaoVBrSqUktrReJct", +"tNVMaHeinT5YVQxDn\",\n \"balance\" : 7330", +"00000\n}, \n{\n \"ETH_account\" : \"0x8548b", +"24cbc8f9a492940d53855527972b60afc7e\",\n ", +" \"name\" : \"seibo\",\n \"publicKey\" : \"S", +"PH7JcfEYqTXvF6kGsSwzp9Zu73XoKBjTY7VzoMc8", +"TMR1ziSf4gK2\",\n \"balance\" : 310702000", +"0\n}, \n{\n \"ETH_account\" : \"0xeca4cb5b2", +"2c7f654a0207256ff8092b5f8f84d14\",\n \"n", +"ame\" : \"0xeca4cb5b22c7f654a0\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 905556800", +"\n}, \n{\n \"ETH_account\" : \"0xfc7d41de06", +"09d40d4d4ce68c52bdcfa5261d9ac7\",\n \"na", +"me\" : \"0xfc7d41de0609d40d4d\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 53000000\n}", +", \n{\n \"ETH_account\" : \"0xc91ec7f922bb", +"91d9b9eba3b3da5bdf0a1a5a5d40\",\n \"name", +"\" : \"0xc91ec7f922bb91d9b9\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 2928900000\n}", +", \n{\n \"ETH_account\" : \"0xe680844e146d", +"4c46cbd0cb65b39dadb0c1c27419\",\n \"name", +"\" : \"0xe680844e146d4c46cb\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 500000000\n},", +" \n{\n \"ETH_account\" : \"0x58d960fcdcb27", +"ee9163b88b3c7299d2b7f2453ed\",\n \"name\"", +" : \"0x58d960fcdcb27ee916\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 55185500000\n}", +", \n{\n \"ETH_account\" : \"0x9f3faae50652", +"d5a70ec67e0941a34fdb32a22398\",\n \"name", +"\" : \"0x9f3faae50652d5a70e\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 21927000000\n", +"}, \n{\n \"ETH_account\" : \"0x3c14e1c1ece", +"f3e1b80aad81237d26e1179cb2cab\",\n \"nam", +"e\" : \"0x3c14e1c1ecef3e1b80\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 20030000000", +"\n}, \n{\n \"ETH_account\" : \"0x61617ef323", +"7a12dbec21aff3ee0c24f3a9fa8d44\",\n \"na", +"me\" : \"0x61617ef3237a12dbec\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1649000000", +"\n}, \n{\n \"ETH_account\" : \"0x493f93b505", +"782183de2eafbf5378513e086ff705\",\n \"na", +"me\" : \"0x493f93b505782183de\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 174311600\n", +"}, \n{\n \"ETH_account\" : \"0x9f3fd63fafe", +"f3a0fa7df45f801d55c519b22203b\",\n \"nam", +"e\" : \"0x9f3fd63fafef3a0fa7\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 20004997000", +"\n}, \n{\n \"ETH_account\" : \"0x25b714d507", +"ca2600afaf99d99741ec94d20e9a48\",\n \"na", +"me\" : \"0x25b714d507ca2600af\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1169000000", +"\n}, \n{\n \"ETH_account\" : \"0x3411db8c7b", +"cd15287f54455eb32ced66a77559d6\",\n \"na", +"me\" : \"0x3411db8c7bcd15287f\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2028520000", +"\n}, \n{\n \"ETH_account\" : \"0xac0666a569", +"edd96fb7313e44ce453660d976c775\",\n \"na", +"me\" : \"0xac0666a569edd96fb7\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 102786700\n", +"}, \n{\n \"ETH_account\" : \"0xab31bafb703", +"e0219b8e7daab7aad932f61a0d13d\",\n \"nam", +"e\" : \"shelster\",\n \"publicKey\" : \"SPH4", +"vAqB4uSA1AUEMWNh37ckkFqfQhsdfsXpdw3U8Cbf", +"SsECWGszV\",\n \"balance\" : 6004000000\n}", +", \n{\n \"ETH_account\" : \"0x77d05e0d6a30", +"3f0b1b78f727a278c27a2d8cef3a\",\n \"name", +"\" : \"0x77d05e0d6a303f0b1b\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 20000000\n}, ", +"\n{\n \"ETH_account\" : \"0x93d37e3b588e35", +"0f12c5e20e5091a453ff106dda\",\n \"name\" ", +": \"0x93d37e3b588e350f12\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1828990000\n}, ", +"\n{\n \"ETH_account\" : \"0xc8e50eb8c471e4", +"7c90d270b5d47c98df64fa467d\",\n \"name\" ", +": \"0xc8e50eb8c471e47c90\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 2042857100\n}, ", +"\n{\n \"ETH_account\" : \"0xeb57b82bbf0d91", +"36dafa62c697aba300fb7c10aa\",\n \"name\" ", +": \"0xeb57b82bbf0d9136da\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 999058000\n}, \n", +"{\n \"ETH_account\" : \"0x619fd2a816350f3", +"e49b7a37e4b53818c32c2fa6d\",\n \"name\" :", +" \"0x619fd2a816350f3e49\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 63641811\n}, \n{\n", +" \"ETH_account\" : \"0xbbb370f06b2053436", +"116d283d541766deca88a87\",\n \"name\" : \"", +"0xbbb370f06b20534361\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 15110502672\n}, \n{", +"\n \"ETH_account\" : \"0x48ba4503d82b6bad", +"8956d65a0e305648ba0ea306\",\n \"name\" : ", +"\"0x48ba4503d82b6bad89\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 562596986\n}, \n{\n", +" \"ETH_account\" : \"0xd103bdd1fd6e2fdcf", +"3ee00901cbb7e680582359f\",\n \"name\" : \"", +"0xd103bdd1fd6e2fdcf3\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 950000000\n}, \n{\n ", +" \"ETH_account\" : \"0x881ddaedf0d4c1853f", +"702cd85d365aeb9f43d881\",\n \"name\" : \"0", +"x881ddaedf0d4c1853f\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 3324000000\n}, \n{\n ", +" \"ETH_account\" : \"0xd27a3fb908df479700", +"7ab8b8adf76876f65bf2a3\",\n \"name\" : \"0", +"xd27a3fb908df479700\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 560000000\n}, \n{\n ", +" \"ETH_account\" : \"0x4cf91a2d35dc638a91f", +"4872169afea8d9ed4b58b\",\n \"name\" : \"0x", +"4cf91a2d35dc638a91\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x1461f8c97eaaffcfd94", +"abbc711787072960e06be\",\n \"name\" : \"0x", +"1461f8c97eaaffcfd9\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 90731576\n}, \n{\n ", +"\"ETH_account\" : \"0x72f0850e6c3a6af417a75", +"4d142840a00ea03e4c3\",\n \"name\" : \"0x72", +"f0850e6c3a6af417\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 3324000000\n}, \n{\n ", +"\"ETH_account\" : \"0xc6f9b7b241ca78d462794", +"cd89fd8170ed6191956\",\n \"name\" : \"0xc6", +"f9b7b241ca78d462\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 500000000\n}, \n{\n \"", +"ETH_account\" : \"0xe69caa788ac65d205d8b89", +"9d4cb4eb07c353388a\",\n \"name\" : \"0xe69", +"caa788ac65d205d\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1286334942\n}, \n{\n \"", +"ETH_account\" : \"0x2448a7c808ec52cd313244", +"1c764d57c850e8bfef\",\n \"name\" : \"0x244", +"8a7c808ec52cd31\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 989000\n}, \n{\n \"ETH_", +"account\" : \"0xa6d6501a9916bb78700c8a4006", +"b79dd18d4f88a0\",\n \"name\" : \"0xa6d6501", +"a9916bb7870\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 192957453\n}, \n{\n \"ETH_a", +"ccount\" : \"0x729e636e15f7c9e8f5b8a531455", +"ccb0dc0a51fd3\",\n \"name\" : \"0x729e636e", +"15f7c9e8f5\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 5000000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x2ec8bf6f31e8f65d0aa50297e43", +"9a53f325c26b1\",\n \"name\" : \"thirstydre", +"amer\",\n \"publicKey\" : \"SPH7xSSSAvgdwo", +"hxqfxp3duFv7QkuvMFfUBgd6fStLgwUSafjbQLS\"", +",\n \"balance\" : 35121356643\n}, \n{\n ", +"\"ETH_account\" : \"0xcdf042aeaf273fdac73a7", +"a5bd19efa53fcd79332\",\n \"name\" : \"0xcd", +"f042aeaf273fdac7\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 269\n}, \n{\n \"ETH_ac", +"count\" : \"0x71d54b93edc933bf2e3845325796", +"3420a3b3cc27\",\n \"name\" : \"0x71d54b93e", +"dc933bf2e\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 29981720000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x7ec0bc6de4ba31ff01e7c2b26c4", +"5cd2de5557c53\",\n \"name\" : \"0x7ec0bc6d", +"e4ba31ff01\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 758518158\n}, \n{\n \"ETH_ac", +"count\" : \"0xf662b715ae33cd35fea642eb2065", +"eb796122fec9\",\n \"name\" : \"0xf662b715a", +"e33cd35fe\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 22000000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xd27325983703b57cb666826c525", +"775e5a2c139ec\",\n \"name\" : \"nevi\",\n ", +" \"publicKey\" : \"SPH64EFL9F4hvAm6AT8SAtzt", +"zkhj3fMLRahQ2414hya1zCri5CJGK\",\n \"bal", +"ance\" : 2022639579\n}, \n{\n \"ETH_accoun", +"t\" : \"0xfdc195104830375140c83de652119e51", +"91d8ca4f\",\n \"name\" : \"0xfdc1951048303", +"75140\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1091115000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xeedadd3d153d7c6249b066969fc08e7a", +"efa303f9\",\n \"name\" : \"0xeedadd3d153d7", +"c6249\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 928000000\n}, \n{\n \"ETH_account", +"\" : \"0x14e472a107c9b2c5cdfcc9e4013eb97ef", +"bb2f431\",\n \"name\" : \"0x14e472a107c9b2", +"c5cd\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 3148000000\n}, \n{\n \"ETH_account", +"\" : \"0x3a409eff50a47aeef294e3f0bb3874490", +"dd99abc\",\n \"name\" : \"0x3a409eff50a47a", +"eef2\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 370000000\n}, \n{\n \"ETH_account\"", +" : \"0x334acb25aec8f1bc059d06b910cd23fb10", +"5506c4\",\n \"name\" : \"0x334acb25aec8f1b", +"c05\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 75000000\n}, \n{\n \"ETH_account\" :", +" \"0xfd2c3029072e9569e031d9b0a4fd2b78aeb9", +"71e6\",\n \"name\" : \"zebedeejames\",\n ", +"\"publicKey\" : \"SPH8Z1oAJ1UPGYQ95w5ESVeDA", +"688XqCdp3qMNkMRZ1dMKTSmn4b8c\",\n \"bala", +"nce\" : 198850700000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xf8d21b3f3f1c965fe2bdf8c341e521b", +"cd5392660\",\n \"name\" : \"0xf8d21b3f3f1c", +"965fe2\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1000000\n}, \n{\n \"ETH_account\"", +" : \"0xca884de1c32f8ba9614b10515c333e2dd6", +"76c563\",\n \"name\" : \"janhajktx\",\n \"", +"publicKey\" : \"SPH7qXuzTZVE3gfrLRQ2csSrvK", +"1ePzMwsTTJwL6m16STArmFRGWiH\",\n \"balan", +"ce\" : 20735218517\n}, \n{\n \"ETH_account", +"\" : \"0x306ba22c99c506f9229b9881cdd40f6e4", +"e5d65f3\",\n \"name\" : \"0x306ba22c99c506", +"f922\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1000000000\n}, \n{\n \"ETH_account", +"\" : \"0x0306d4c6abc853bfdc711291032402cf8", +"506422b\",\n \"name\" : \"0x0306d4c6abc853", +"bfdc\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1000000915\n}, \n{\n \"ETH_account", +"\" : \"0x72870be37d5ba3d1a1c8b075826139977", +"d4ee436\",\n \"name\" : \"0x72870be37d5ba3", +"d1a1\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1570000000\n}, \n{\n \"ETH_account", +"\" : \"0x3007f0c3bde35419cac66d89976c8a49f", +"144058d\",\n \"name\" : \"0x3007f0c3bde354", +"19ca\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 504000000\n}, \n{\n \"ETH_account\"", +" : \"0x837c8a9eda336e9ebcbf940e2e8bceb730", +"4e8803\",\n \"name\" : \"0x837c8a9eda336e9", +"ebc\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1090278000\n}, \n{\n \"ETH_account\"", +" : \"0x39052495630adadc6b0750c1853fe172ed", +"147811\",\n \"name\" : \"0x39052495630adad", +"c6b\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 567702486\n}, \n{\n \"ETH_account\" ", +": \"0xbe379b1e4def16b94303390cb05b407a4f4", +"bf764\",\n \"name\" : \"0xbe379b1e4def16b9", +"43\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 1737000000\n}, \n{\n \"ETH_account\" ", +": \"0xf19f3d5f1cb45a6953d6b8946917b064313", +"14c00\",\n \"name\" : \"manuscript9\",\n ", +"\"publicKey\" : \"SPH5CBQiRtssHrkdMVcC7i7MR", +"DuXG3V1iGhNd1cqaJp65Us3gz9BE\",\n \"bala", +"nce\" : 2676379600\n}, \n{\n \"ETH_account", +"\" : \"0x32b7411932fc089b736e83b53b528f5f8", +"e527577\",\n \"name\" : \"0x32b7411932fc08", +"9b73\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1190943999\n}, \n{\n \"ETH_account", +"\" : \"0x3e911265258a08f33507366796f9be4d1", +"e4d9f05\",\n \"name\" : \"0x3e911265258a08", +"f335\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 2178000000\n}, \n{\n \"ETH_account", +"\" : \"0x2cd610291f4ac41acfde013c8b714c0cb", +"93099af\",\n \"name\" : \"0x2cd610291f4ac4", +"1acf\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 100000000\n}, \n{\n \"ETH_account\"", +" : \"0x3efee7a79fe363b72e3a9e9d1432f03c2d", +"5a7097\",\n \"name\" : \"0x3efee7a79fe363b", +"72e\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 200000000\n}, \n{\n \"ETH_account\" ", +": \"0xdf72c7f18a142cd10b2ce2b69211f67323f", +"67f81\",\n \"name\" : \"0xdf72c7f18a142cd1", +"0b\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 55384000\n}, \n{\n \"ETH_account\" : ", +"\"0xaad7617aee24594a72e42570345b16b00522d", +"883\",\n \"name\" : \"0xaad7617aee24594a72", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1981370000\n}, \n{\n \"ETH_account\" : ", +"\"0x8ab042d324df75c991c23a2334127113574ba", +"7d3\",\n \"name\" : \"0x8ab042d324df75c991", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 6328075000\n}, \n{\n \"ETH_account\" : ", +"\"0xf33a9c0f2c8b6b5b50e28b3403a10abce6705", +"edd\",\n \"name\" : \"0xf33a9c0f2c8b6b5b50", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 553840501\n}, \n{\n \"ETH_account\" : \"", +"0x165342cecd849423b2c1f7a8518e1a2cd70ae3", +"d5\",\n \"name\" : \"0x165342cecd849423b2\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 450000000\n}, \n{\n \"ETH_account\" : \"0", +"x30d135cef12b901a71c30741c7f53a45c8ad07b", +"7\",\n \"name\" : \"0x30d135cef12b901a71\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 2041020000\n}, \n{\n \"ETH_account\" : \"0", +"x964919e63e04588f29a5974b1fcfb0334e2d2e0", +"0\",\n \"name\" : \"0x964919e63e04588f29\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1800000000\n}, \n{\n \"ETH_account\" : \"0", +"xdb40adaeec9c6c01f2ca60b26295b8aacdc1583", +"4\",\n \"name\" : \"0xdb40adaeec9c6c01f2\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1167192514\n}, \n{\n \"ETH_account\" : \"0", +"x913cb89c0ddfb08645fe2175e018a5082b8a58e", +"0\",\n \"name\" : \"0x913cb89c0ddfb08645\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 2800000000\n}, \n{\n \"ETH_account\" : \"0", +"x74d0602d8402f0ffad83a9341a9314c68d77696", +"7\",\n \"name\" : \"0x74d0602d8402f0ffad\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 323184638\n}, \n{\n \"ETH_account\" : \"0x", +"805bcafdd694362dd94315d13e6d4f62982a1e42", +"\",\n \"name\" : \"0x805bcafdd694362dd9\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"75000000\n}, \n{\n \"ETH_account\" : \"0x41", +"2a3b376807cc0605e9f2926d4deac8fc913623\",", +"\n \"name\" : \"0x412a3b376807cc0605\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 15", +"189315840\n}, \n{\n \"ETH_account\" : \"0x4", +"4100178eea454e1f5a60fbda18412fdbdaef904\"", +",\n \"name\" : \"0x44100178eea454e1f5\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"761080140\n}, \n{\n \"ETH_account\" : \"0xf", +"7eb259630da05fb62fa7c207d10b802563dd787\"", +",\n \"name\" : \"0xf7eb259630da05fb62\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"00500000\n}, \n{\n \"ETH_account\" : \"0x0f", +"d1a37739332c8cf58b7355de46d806386b5c7d\",", +"\n \"name\" : \"0x0fd1a37739332c8cf5\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 82", +"000000\n}, \n{\n \"ETH_account\" : \"0xeb7e", +"af2832a28d7ebd4f84fa196fdfaf4c93cc63\",\n ", +" \"name\" : \"0xeb7eaf2832a28d7ebd\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1035", +"7794272\n}, \n{\n \"ETH_account\" : \"0x13c", +"75eaeac863358d4b02cf6b1fb806dc0cd59ff\",\n", +" \"name\" : \"0x13c75eaeac863358d4\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 169", +"0000000\n}, \n{\n \"ETH_account\" : \"0x6fc", +"3d466075f20a148841f25c855b3e17b51a754\",\n", +" \"name\" : \"0x6fc3d466075f20a148\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 498", +"5\n}, \n{\n \"ETH_account\" : \"0xc4f03109d", +"cccc299f5080d5418c0ffee983d4bf3\",\n \"n", +"ame\" : \"0xc4f03109dcccc299f5\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 250000000", +"\n}, \n{\n \"ETH_account\" : \"0x54af60ccac", +"83d84b36253280e38def76c655f4bf\",\n \"na", +"me\" : \"0x54af60ccac83d84b36\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 544000000\n", +"}, \n{\n \"ETH_account\" : \"0x23c9e7b24e8", +"4af3edd738b643ceb331a168b2516\",\n \"nam", +"e\" : \"0x23c9e7b24e84af3edd\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 9807414000\n", +"}, \n{\n \"ETH_account\" : \"0x8a0be09538d", +"0ffb35886da03b3fbf3dfe9e9bbc8\",\n \"nam", +"e\" : \"0x8a0be09538d0ffb358\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 180000000\n}", +", \n{\n \"ETH_account\" : \"0xa3dbd178f2fe", +"f62cfff6ab7f2f29e25491c50a27\",\n \"name", +"\" : \"0xa3dbd178f2fef62cff\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 779310000\n},", +" \n{\n \"ETH_account\" : \"0xbc17c74b40064", +"a4499cb9aa360eb35fcdadcf20c\",\n \"name\"", +" : \"0xbc17c74b40064a4499\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1299000000\n},", +" \n{\n \"ETH_account\" : \"0x6dfd638f51836", +"4de91f0f2ea72f6522c5ad4e6e6\",\n \"name\"", +" : \"0x6dfd638f518364de91\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 5912913000\n},", +" \n{\n \"ETH_account\" : \"0xebefa53e1bb81", +"37512e8516439cf64c022dd090a\",\n \"name\"", +" : \"0xebefa53e1bb8137512\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1354605188\n},", +" \n{\n \"ETH_account\" : \"0xda17ce30d4276", +"e8261125533aa949fbee912b8f5\",\n \"name\"", +" : \"0xda17ce30d4276e8261\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 273000000\n}, ", +"\n{\n \"ETH_account\" : \"0x343366c73e897e", +"8eb0f186db76392470be2f49c3\",\n \"name\" ", +": \"0x343366c73e897e8eb0\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 4700000000\n}, ", +"\n{\n \"ETH_account\" : \"0xc0968ee35669ad", +"30a73a6092bbc7ff091adbfd6a\",\n \"name\" ", +": \"0xc0968ee35669ad30a7\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 590000000\n}, \n", +"{\n \"ETH_account\" : \"0x9d42719388bb8e8", +"870586d8145398289ca401677\",\n \"name\" :", +" \"0x9d42719388bb8e8870\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 2814578737\n}, \n", +"{\n \"ETH_account\" : \"0x90d38e3d64ea374", +"25d5675c00ded57a529229244\",\n \"name\" :", +" \"0x90d38e3d64ea37425d\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 3900000000\n}, \n", +"{\n \"ETH_account\" : \"0xed9d943631f5f9f", +"df0a7ac744a788526488314ee\",\n \"name\" :", +" \"0xed9d943631f5f9fdf0\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 940000000\n}, \n{", +"\n \"ETH_account\" : \"0x285910400aae68cf", +"ac3f081288a1926971c1b9c7\",\n \"name\" : ", +"\"0x285910400aae68cfac\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 315000000\n}, \n{\n", +" \"ETH_account\" : \"0xbcaa544cb5ae7a1bf", +"fbf9f8f81d3f40a318798ad\",\n \"name\" : \"", +"thomaskaman\",\n \"publicKey\" : \"SPH8RWF", +"SAsTt3CJSnDLKqPZTPgfkoQpyjCsCJRghN29CovU", +"frrbwH\",\n \"balance\" : 9799500000\n}, \n", +"{\n \"ETH_account\" : \"0x06698045fc19260", +"7ee255a230231b37dd89c78bf\",\n \"name\" :", +" \"serjusophia\",\n \"publicKey\" : \"SPH6m", +"yB2FSmLmLVsM62YDnazkpJY6Rug1fJVEqvvZYJW4", +"MU4jfz5U\",\n \"balance\" : 200000000\n}, ", +"\n{\n \"ETH_account\" : \"0x62f91c944c8ea3", +"eed07935bb926eccf5d4a460de\",\n \"name\" ", +": \"0x62f91c944c8ea3eed0\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 522000000\n}, \n", +"{\n \"ETH_account\" : \"0x41320902c37fb23", +"8cd4fe65902a6591b6c89f46b\",\n \"name\" :", +" \"0x41320902c37fb238cd\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 499906306\n}, \n{", +"\n \"ETH_account\" : \"0xade31e02e4458193", +"662ff274b1c0db8dea4ca26e\",\n \"name\" : ", +"\"0xade31e02e445819366\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 246000000\n}, \n{\n", +" \"ETH_account\" : \"0x9b1f527f76d512432", +"58554bb852c0446be90d081\",\n \"name\" : \"", +"0x9b1f527f76d5124325\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 170000000\n}, \n{\n ", +" \"ETH_account\" : \"0x2f606e4120c5c44c70", +"d25fee5ea4bc1ae3b68f93\",\n \"name\" : \"0", +"x2f606e4120c5c44c70\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 115000000\n}, \n{\n ", +" \"ETH_account\" : \"0x189ec749960eacb788c", +"a148cdfcd543105376b1a\",\n \"name\" : \"0x", +"189ec749960eacb788\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 77000000\n}, \n{\n ", +"\"ETH_account\" : \"0xfc241b9c5bedeb7a0809f", +"efd202b12c7959ea159\",\n \"name\" : \"0xfc", +"241b9c5bedeb7a08\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 302236000\n}, \n{\n \"", +"ETH_account\" : \"0x5181ebd8ba686d693bcc44", +"77fa7deacbf8d379d0\",\n \"name\" : \"0x518", +"1ebd8ba686d693b\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 15000000\n}, \n{\n \"ET", +"H_account\" : \"0xb414c335e1800c8cc6c11d8d", +"a9feed702f6acc08\",\n \"name\" : \"0xb414c", +"335e1800c8cc6\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 147123562\n}, \n{\n \"ETH", +"_account\" : \"0xe32414465b725b446ad90e717", +"9fd06b90ea7f441\",\n \"name\" : \"0xe32414", +"465b725b446a\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 128000000\n}, \n{\n \"ETH_", +"account\" : \"0x3ca86ae1333ad5a394b993e0b4", +"ac9c41f6e4edfe\",\n \"name\" : \"sophiatxm", +"ontaz\",\n \"publicKey\" : \"SPH5U7UaLDLbt", +"UUWBf1zkbjLjsP9aJ53y96hSoJJw7oq8ZsXpWRFx", +"\",\n \"balance\" : 319269238\n}, \n{\n \"", +"ETH_account\" : \"0xe73792ef73838120cdec63", +"f34ba57334df1e0e5b\",\n \"name\" : \"0xe73", +"792ef73838120cd\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 300000000\n}, \n{\n \"E", +"TH_account\" : \"0x6f82fd900e4737023e61e70", +"513f38f5c79be7fde\",\n \"name\" : \"0x6f82", +"fd900e4737023e\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 458\n}, \n{\n \"ETH_acco", +"unt\" : \"0x7db8508dfd00d11811d1bbc965e2d9", +"b07a551ee7\",\n \"name\" : \"0x7db8508dfd0", +"0d11811\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1784760787\n}, \n{\n \"ETH_acco", +"unt\" : \"0x30f88a5e87015d0cc07059731a058e", +"a22e9c9f99\",\n \"name\" : \"0x30f88a5e870", +"15d0cc0\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 97000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x2fcf0e84219e03d50f95396d20a452a5", +"cf9bfdf2\",\n \"name\" : \"0x2fcf0e84219e0", +"3d50f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1676219648\n}, \n{\n \"ETH_accoun", +"t\" : \"0x831b7b6bca098138dc9e5f0dc7c5a929", +"b4c57aa3\",\n \"name\" : \"0x831b7b6bca098", +"138dc\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 20000000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xd5e324714853dcae652eaedefe708b6", +"ec956c31b\",\n \"name\" : \"0xd5e324714853", +"dcae65\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 343174355\n}, \n{\n \"ETH_accoun", +"t\" : \"0x4dcce9a3bc059dcbe5448ee59ca8a660", +"8e4bc8b5\",\n \"name\" : \"delphinus\",\n ", +" \"publicKey\" : \"SPH5vUR89sR7J36hAsAgFBAF", +"aWkg5M1u7Y9mEC1S77qoEQ7bLkVqh\",\n \"bal", +"ance\" : 4660000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x42c1a12c03d2e7cedb6d9255f3f00aba", +"e39a6d8c\",\n \"name\" : \"0x42c1a12c03d2e", +"7cedb\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 600010800\n}, \n{\n \"ETH_account", +"\" : \"0x2b0c09cdbec20d1466040092365194827", +"ab2f31d\",\n \"name\" : \"0x2b0c09cdbec20d", +"1466\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 10891874751\n}, \n{\n \"ETH_accoun", +"t\" : \"0x0efa84d70a9e7056afce489a9579a668", +"95f4e50d\",\n \"name\" : \"jubeikibagami\",", +"\n \"publicKey\" : \"SPH5mggZnffimRTu58xT", +"6qeJAx3FCJfz4ZBFFMJzewWTsjJVvmk6v\",\n ", +"\"balance\" : 17870000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xb456b83e81e979e3585ec52c702", +"f3c8e95ca7747\",\n \"name\" : \"0xb456b83e", +"81e979e358\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 9240000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xc51a4b868f69ef11bc85960a3d3", +"df5976d112725\",\n \"name\" : \"toightyboi", +"\",\n \"publicKey\" : \"SPH8AhP6GMFpU6nHAh", +"esHfn2PUsx7ZY28YQtV8ieLfNFUYcJRBt4D\",\n ", +" \"balance\" : 11302000000\n}, \n{\n \"ETH", +"_account\" : \"0xa9eec0051194edd3cfc1b0092", +"0058db3d60fbeff\",\n \"name\" : \"0xa9eec0", +"051194edd3cf\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 40000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x6a4e28b4b463905d0d096cd2b70", +"00157f01ed17b\",\n \"name\" : \"0x6a4e28b4", +"b463905d0d\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3127577000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x2d46f83a334879e370173fa5562", +"7532451484dde\",\n \"name\" : \"jeanmarcel", +"dupont\",\n \"publicKey\" : \"SPH6x6kGEgvv", +"wC8FFucw3AreGcbNN3EoLFYWPJodo4iP4qQQNJCZ", +"3\",\n \"balance\" : 1230000000\n}, \n{\n ", +" \"ETH_account\" : \"0x35d2e771956ccc30af58", +"dae89b7713589936f20a\",\n \"name\" : \"0x3", +"5d2e771956ccc30af\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1535000000\n}, \n{\n ", +" \"ETH_account\" : \"0x92e56024eb26da8d1c1f", +"ad9cc5a7590d5c096b57\",\n \"name\" : \"0x9", +"2e56024eb26da8d1c\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 725095500\n}, \n{\n ", +"\"ETH_account\" : \"0x0aaeff4f36467327cd2de", +"e56471b2eaa1747d664\",\n \"name\" : \"0x0a", +"aeff4f36467327cd\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 9000000000\n}, \n{\n ", +"\"ETH_account\" : \"0xa955d8477ac45edd01997", +"2c89d9f252a6357e6d2\",\n \"name\" : \"0xa9", +"55d8477ac45edd01\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 800000000\n}, \n{\n \"", +"ETH_account\" : \"0x9380af5e997fe9ec94bac4", +"8aed1fcf3eed0f77fa\",\n \"name\" : \"0x938", +"0af5e997fe9ec94\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1438000000\n}, \n{\n \"", +"ETH_account\" : \"0x607ab992af733e092bb8b0", +"e98e6249c197e6c93b\",\n \"name\" : \"jayji", +"e\",\n \"publicKey\" : \"SPH6S2qYadod6SLKE", +"g7Fvf5HQcqATcfUvfmNfM5ApJiAb1LW6wbL1\",\n ", +" \"balance\" : 17561495900\n}, \n{\n \"ET", +"H_account\" : \"0x4f67b06100c0104a11f69197", +"c559f8548d9535dd\",\n \"name\" : \"marcioa", +"g\",\n \"publicKey\" : \"SPH6hnm4HvzZCXLWR", +"hoeoGJJvTmnkJL7bibpVcduvLKAH8CeSfKdP\",\n ", +" \"balance\" : 2589500000\n}, \n{\n \"ETH", +"_account\" : \"0xa7f8c8b8b27368dff92776c5b", +"d690f1b4b9dc1a1\",\n \"name\" : \"0xa7f8c8", +"b8b27368dff9\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1387000000\n}, \n{\n \"ETH", +"_account\" : \"0xd06904fa0ef4f95f7ad8952c8", +"4067e5afc248907\",\n \"name\" : \"0xd06904", +"fa0ef4f95f7a\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2026000000\n}, \n{\n \"ETH", +"_account\" : \"0xb4beb39fd0091cbd767f8df61", +"95da4af5f962edd\",\n \"name\" : \"0xb4beb3", +"9fd0091cbd76\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 920000000\n}, \n{\n \"ETH_", +"account\" : \"0x6f886e7d0153982d42ed98ed55", +"4eaa53af739567\",\n \"name\" : \"0x6f886e7", +"d0153982d42\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 20000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x38869f5de0b604f3c4b750cab75d", +"625e4a2a1779\",\n \"name\" : \"0x38869f5de", +"0b604f3c4\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 4048076600\n}, \n{\n \"ETH_ac", +"count\" : \"0xfec30b6f1504fcf2c8bad95d237e", +"96fa1c0f7679\",\n \"name\" : \"0xfec30b6f1", +"504fcf2c8\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 6300000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x95fa3ab264bab5d264f210a09e67", +"bc80dfe26871\",\n \"name\" : \"0x95fa3ab26", +"4bab5d264\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1295285000\n}, \n{\n \"ETH_ac", +"count\" : \"0x799339c2f6a58bb70536dd7d81ef", +"a422b856878f\",\n \"name\" : \"asifsophiat", +"x\",\n \"publicKey\" : \"SPH8hcCBW9KrnnPpB", +"aHHWo8j1vvHGbX1WQ6VRJ3Lx1uUjwpoG19fu\",\n ", +" \"balance\" : 1011227000\n}, \n{\n \"ETH", +"_account\" : \"0x826e0ba43e7821ebbd04700a9", +"215398e50f94e55\",\n \"name\" : \"0x826e0b", +"a43e7821ebbd\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 5000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xf831ccfdacf951679b8832f54de9", +"5315aab3e303\",\n \"name\" : \"0xf831ccfda", +"cf951679b\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 450000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x7800475eebe2ddbb740ce3ad201a4", +"f4c0af6bf19\",\n \"name\" : \"0x7800475eeb", +"e2ddbb74\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 7145989000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x69cd156f7369f4759797cf3363010", +"3e7ed0f0985\",\n \"name\" : \"0x69cd156f73", +"69f47597\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1085820940\n}, \n{\n \"ETH_acc", +"ount\" : \"0x236f13b53c50950104a93c4516152", +"c0241b38aa9\",\n \"name\" : \"0x236f13b53c", +"50950104\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 79000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x5673b1e23937bf221b64b932d95264c", +"de8401e2f\",\n \"name\" : \"0x5673b1e23937", +"bf221b\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 934333863\n}, \n{\n \"ETH_accoun", +"t\" : \"0xd11b2e87d3121c1b0672955c57a347b7", +"3e3414f2\",\n \"name\" : \"0xd11b2e87d3121", +"c1b06\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 110000000\n}, \n{\n \"ETH_account", +"\" : \"0xe6d7c23410b0cf5693a2a5c6908a357d8", +"246cc63\",\n \"name\" : \"0xe6d7c23410b0cf", +"5693\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 400000000\n}, \n{\n \"ETH_account\"", +" : \"0xb8a0ffcc6ac70a958873470aab96f801ed", +"1a45b0\",\n \"name\" : \"0xb8a0ffcc6ac70a9", +"588\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 239643922\n}, \n{\n \"ETH_account\" ", +": \"0x0a30b598ee03f8cb80d9c200034699aef39", +"60506\",\n \"name\" : \"0x0a30b598ee03f8cb", +"80\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 54435994000\n}, \n{\n \"ETH_account\"", +" : \"0xcd8c3b4f361ef283bf20ad06abd7b3e590", +"6adbb7\",\n \"name\" : \"0xcd8c3b4f361ef28", +"3bf\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 547530597\n}, \n{\n \"ETH_account\" ", +": \"0x52b4f00325fcaedaa885cc82778c817a26e", +"392cc\",\n \"name\" : \"0x52b4f00325fcaeda", +"a8\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 405164436\n}, \n{\n \"ETH_account\" :", +" \"0x9e416da52e57694b8cd8833ef25efb967e9f", +"e5c4\",\n \"name\" : \"0x9e416da52e57694b8", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 2500000000\n}, \n{\n \"ETH_account\" :", +" \"0x7ed28e91c1a98c20f59b5c7f8612ab8f3545", +"fad1\",\n \"name\" : \"0x7ed28e91c1a98c20f", +"5\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 2650000000\n}, \n{\n \"ETH_account\" :", +" \"0x4ce2a6be0883d5c65191090103994a8245b4", +"6cc8\",\n \"name\" : \"0x4ce2a6be0883d5c65", +"1\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 8122437230\n}, \n{\n \"ETH_account\" :", +" \"0xe3196b3bf5b68c2b45cfe601734b223d75cc", +"e0eb\",\n \"name\" : \"0xe3196b3bf5b68c2b4", +"5\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1602000000\n}, \n{\n \"ETH_account\" :", +" \"0x8422aea56744cb201c85b778419e92985f19", +"2348\",\n \"name\" : \"0x8422aea56744cb201", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 2025000000\n}, \n{\n \"ETH_account\" :", +" \"0xe8af3965007b31a0febb18bee91a0b28cde1", +"bb3f\",\n \"name\" : \"0xe8af3965007b31a0f", +"e\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 500000000\n}, \n{\n \"ETH_account\" : ", +"\"0x0c016754f6926bc4b1adb9198dbdd42e26be3", +"0b6\",\n \"name\" : \"0x0c016754f6926bc4b1", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 514878881\n}, \n{\n \"ETH_account\" : \"", +"0xde8ae7c78156add289c42f7175dfbfdcf607b9", +"0b\",\n \"name\" : \"0xde8ae7c78156add289\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 11267428000\n}, \n{\n \"ETH_account\" : ", +"\"0x2c0f4bcbc2a523dc9c1b484d17ab2cab788af", +"64a\",\n \"name\" : \"0x2c0f4bcbc2a523dc9c", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1163647000\n}, \n{\n \"ETH_account\" : ", +"\"0x5a5464b15e9d04018aad98c7777dfb6cf2712", +"d1a\",\n \"name\" : \"0x5a5464b15e9d04018a", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 103553657\n}, \n{\n \"ETH_account\" : \"", +"0xa2c303030faf83b62a56a9f6ecbb7ad50c3a81", +"2f\",\n \"name\" : \"0xa2c303030faf83b62a\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1085000000\n}, \n{\n \"ETH_account\" : \"", +"0xa24e34ffd464260130ba0e0318aab28c818d17", +"b4\",\n \"name\" : \"0xa24e34ffd464260130\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 8765678000\n}, \n{\n \"ETH_account\" : \"", +"0x3356817f23ab38f35da60f21f66db740669210", +"f6\",\n \"name\" : \"0x3356817f23ab38f35d\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2188000000\n}, \n{\n \"ETH_account\" : \"", +"0x595b3df4e297609a86aed9e8567349fa241dd2", +"08\",\n \"name\" : \"0x595b3df4e297609a86\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 225000000\n}, \n{\n \"ETH_account\" : \"0", +"xc02ba9f7555565d634ac4eae9ef4df796068ca0", +"7\",\n \"name\" : \"0xc02ba9f7555565d634\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 481631\n}, \n{\n \"ETH_account\" : \"0x89e", +"fa9be89677f1c2a1ce7af7d8a484bc0c3ddc4\",\n", +" \"name\" : \"0x89efa9be89677f1c2a\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 643", +"900000\n}, \n{\n \"ETH_account\" : \"0x29c1", +"1adb1e6e88e9b2aee11073096fb87a2e7095\",\n ", +" \"name\" : \"0x29c11adb1e6e88e9b2\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2000", +"067091\n}, \n{\n \"ETH_account\" : \"0xb08e", +"90e4ceee375da3826d203ed1cb00eb3d242c\",\n ", +" \"name\" : \"0xb08e90e4ceee375da3\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1349", +"0000000\n}, \n{\n \"ETH_account\" : \"0xd36", +"8dc4f37a49cb51dc0ccd15be2133258ac799b\",\n", +" \"name\" : \"0xd368dc4f37a49cb51d\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 130", +"6000000\n}, \n{\n \"ETH_account\" : \"0x923", +"7d35554c7372d57d6a48fe6889fe92b4dd4ce\",\n", +" \"name\" : \"0x9237d35554c7372d57\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 102", +"5000000\n}, \n{\n \"ETH_account\" : \"0x8c0", +"114f7507485c2289cb4fc7fadb61d4e2f49b3\",\n", +" \"name\" : \"0x8c0114f7507485c228\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 100", +"000000\n}, \n{\n \"ETH_account\" : \"0x6278", +"e83c542bb198fdc74213c7f20ac7c704b504\",\n ", +" \"name\" : \"0x6278e83c542bb198fd\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2280", +"00000\n}, \n{\n \"ETH_account\" : \"0x68538", +"b451d56b2507387b4297aed5a0e8455b099\",\n ", +" \"name\" : \"0x68538b451d56b25073\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 36174", +"5793\n}, \n{\n \"ETH_account\" : \"0xbab707", +"6e947d70a69706ad73a1fce5832e4a4218\",\n ", +" \"name\" : \"samara\",\n \"publicKey\" : \"S", +"PH7xrp9C6eSLz9tcG7JxFB2LkMcmwkfk1KizUpeL", +"vvWYKRhDEFtF\",\n \"balance\" : 404899000", +"0\n}, \n{\n \"ETH_account\" : \"0x7ba1af7ef", +"14c45baafb0f0ab052d65f341c0a15c\",\n \"n", +"ame\" : \"0x7ba1af7ef14c45baaf\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 728507301", +"\n}, \n{\n \"ETH_account\" : \"0x08fb1c6d0b", +"e87ae1a0a0a76312a4050428126cfc\",\n \"na", +"me\" : \"0x08fb1c6d0be87ae1a0\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2420930500", +"\n}, \n{\n \"ETH_account\" : \"0x05bf3be791", +"37365b0839254b7b47d846edaebb2d\",\n \"na", +"me\" : \"0x05bf3be79137365b08\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 4633670214", +"\n}, \n{\n \"ETH_account\" : \"0x9bbefcf8ec", +"eb8a45a3b32463234ffa6cb617a73c\",\n \"na", +"me\" : \"kazskey\",\n \"publicKey\" : \"SPH7", +"smuooK6DSZG4wNN82BQR1Dn9V5Fbhb7Z1Vfmhrjs", +"6GcUotoMJ\",\n \"balance\" : 1445000000\n}", +", \n{\n \"ETH_account\" : \"0x8950068775f5", +"283ab0a32b64836f3737d0fa63e0\",\n \"name", +"\" : \"0x8950068775f5283ab0\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 176000000\n},", +" \n{\n \"ETH_account\" : \"0xc1f1ac41828e9", +"07dda33f34d8aebbb008745142e\",\n \"name\"", +" : \"roblsophia\",\n \"publicKey\" : \"SPH8", +"6bHpgVMZBV8M9y3MGWgUQvaHsW6AwW3jHPp4Hfyg", +"skMFoEEM9\",\n \"balance\" : 1002410600\n}", +", \n{\n \"ETH_account\" : \"0x05ca3386b3ee", +"11089f1e7c1c37a09e6ff0502860\",\n \"name", +"\" : \"0x05ca3386b3ee11089f\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 7048510000\n}", +", \n{\n \"ETH_account\" : \"0x0772d2eb829d", +"7221920b355d327726a32e667a0a\",\n \"name", +"\" : \"0x0772d2eb829d722192\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 585000000\n},", +" \n{\n \"ETH_account\" : \"0xedbd93dc62e6b", +"a3c6db8e2e92243332833f37ce0\",\n \"name\"", +" : \"satudarah\",\n \"publicKey\" : \"SPH6Y", +"srWJr9UaorgEoQacpiswTToFe1Bvh7CTN5X8hr3C", +"kDnAeiK5\",\n \"balance\" : 10579000000\n}", +", \n{\n \"ETH_account\" : \"0x6fbb5b774774", +"a60ae2a6cb4b25b42155cc02a68b\",\n \"name", +"\" : \"renskooyman\",\n \"publicKey\" : \"SP", +"H7qXbxVB3LA22MtA4vKUQC15SYqXzenQxaLMvdzf", +"L9qMy2yuNYu\",\n \"balance\" : 4085000000", +"\n}, \n{\n \"ETH_account\" : \"0x8705272f08", +"c64a85c6c4e3a7753240132104acc4\",\n \"na", +"me\" : \"0x8705272f08c64a85c6\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1000000000", +"\n}, \n{\n \"ETH_account\" : \"0x972ae1e869", +"134f76b4502bc954ae2e2419a740cd\",\n \"na", +"me\" : \"steffen\",\n \"publicKey\" : \"SPH8", +"bieXEyfEWjWHGvctj4hMCJkLzPinDy7Hc1DAN5ka", +"MtZgHtC5e\",\n \"balance\" : 2599357500\n}", +", \n{\n \"ETH_account\" : \"0xa664a31a1721", +"a80945988c4d02c3e1203cf83fb4\",\n \"name", +"\" : \"0xa664a31a1721a80945\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 4666000000\n}", +", \n{\n \"ETH_account\" : \"0xa0b09fffe007", +"a5e9289155510b6156bf5cb70250\",\n \"name", +"\" : \"0xa0b09fffe007a5e928\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 3650000000\n}", +", \n{\n \"ETH_account\" : \"0xd2605d03237f", +"05dcf0eabbf9169d6ba55277fc87\",\n \"name", +"\" : \"0xd2605d03237f05dcf0\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1096000000\n}", +", \n{\n \"ETH_account\" : \"0x2f7e37af34ea", +"7548b9b2d79a74ec4fb767d970e2\",\n \"name", +"\" : \"0x2f7e37af34ea7548b9\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 112890000\n},", +" \n{\n \"ETH_account\" : \"0x8776eae63f205", +"c54d2afda40e7a17e42d0a9dedc\",\n \"name\"", +" : \"0x8776eae63f205c54d2\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 39900000000\n}", +", \n{\n \"ETH_account\" : \"0x67a137e26698", +"a05aced6e6fc214d865edb6b8ab1\",\n \"name", +"\" : \"0x67a137e26698a05ace\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 5747000000\n}", +", \n{\n \"ETH_account\" : \"0x720da42332ec", +"0eee17e906ac6490e1e081dc9b90\",\n \"name", +"\" : \"sophiatx\",\n \"publicKey\" : \"SPH6r", +"opbYkF4ShhecuU6KtZqQg36i4pto3Q87uWvXLVmc", +"5znHJW3j\",\n \"balance\" : 2099464500\n},", +" \n{\n \"ETH_account\" : \"0x9f4389d0d75b2", +"a650d09a5665ac0e26bb504ceb6\",\n \"name\"", +" : \"0x9f4389d0d75b2a650d\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 6420629200\n},", +" \n{\n \"ETH_account\" : \"0x162ee3b1a16f1", +"edb0e9bc7e1b3b97cb06c2489ec\",\n \"name\"", +" : \"robke\",\n \"publicKey\" : \"SPH7viUtP", +"7GRUcphTytixbomK27HsR69MjNBiDvpLP2zCQ6Jj", +"EcSP\",\n \"balance\" : 469924911\n}, \n{\n ", +" \"ETH_account\" : \"0x69662921fa0390d85d", +"457c706e05bfcf333e050b\",\n \"name\" : \"0", +"x69662921fa0390d85d\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 30000696000\n}, \n{\n", +" \"ETH_account\" : \"0x9e4038b04a1101ba1", +"b95f82e4810a7f9ba001a17\",\n \"name\" : \"", +"0x9e4038b04a1101ba1b\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1365000000\n}, \n{\n", +" \"ETH_account\" : \"0xaf2e01ca5421aabc1", +"115c20f12ecaa2880788060\",\n \"name\" : \"", +"bearlovespanda\",\n \"publicKey\" : \"SPH7", +"23DqxPJ7A89aeyFdTJURZacAadjpcv7oxfeWArP4", +"LMJXRozLu\",\n \"balance\" : 1582000000\n}", +", \n{\n \"ETH_account\" : \"0xe8c4dfc89eba", +"db7bb4b2f6a3679d0c414eb79e7b\",\n \"name", +"\" : \"0xe8c4dfc89ebadb7bb4\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 621000000\n},", +" \n{\n \"ETH_account\" : \"0x7be9b9e46c683", +"1a3b71891cffccf9176f953e819\",\n \"name\"", +" : \"0x7be9b9e46c6831a3b7\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 53900000000\n}", +", \n{\n \"ETH_account\" : \"0xa23e3b20e0dc", +"6405ee209601c9d210145e03604b\",\n \"name", +"\" : \"0xa23e3b20e0dc6405ee\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 5124778500\n}", +", \n{\n \"ETH_account\" : \"0x1a6f834f44b6", +"7baea9f21418993330c977832c5f\",\n \"name", +"\" : \"0x1a6f834f44b67baea9\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 20000000\n}, ", +"\n{\n \"ETH_account\" : \"0xa29fa36af0b0df", +"a07d434383e41cd1339c6aa571\",\n \"name\" ", +": \"0xa29fa36af0b0dfa07d\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 4998500000\n}, ", +"\n{\n \"ETH_account\" : \"0xa02cec56b40f61", +"13472ab5f61443249bbdc650ab\",\n \"name\" ", +": \"0xa02cec56b40f611347\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 2604000000\n}, ", +"\n{\n \"ETH_account\" : \"0xca733c18f3f2b7", +"c075d06765b4451791b82c4778\",\n \"name\" ", +": \"0xca733c18f3f2b7c075\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1199000000\n}, ", +"\n{\n \"ETH_account\" : \"0xb78b70d880b2e5", +"9706cc3fd5d10191608052d57d\",\n \"name\" ", +": \"0xb78b70d880b2e59706\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 739482000\n}, \n", +"{\n \"ETH_account\" : \"0x17431c0e744fd43", +"225b0e9c3d0838dd1520e3627\",\n \"name\" :", +" \"0x17431c0e744fd43225\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 4317000000\n}, \n", +"{\n \"ETH_account\" : \"0x3483df2f4bfd3a7", +"e6bb4e78bd3eb4fcc40563035\",\n \"name\" :", +" \"0x3483df2f4bfd3a7e6b\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 476968000\n}, \n{", +"\n \"ETH_account\" : \"0x5d85abfa402233d2", +"1e4f9d0f4dc029a49bd34a5b\",\n \"name\" : ", +"\"0x5d85abfa402233d21e\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 375000000\n}, \n{\n", +" \"ETH_account\" : \"0x894951035ddbf229e", +"fec7a5aa5e06b897eb098e2\",\n \"name\" : \"", +"0x894951035ddbf229ef\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 5509357000\n}, \n{\n", +" \"ETH_account\" : \"0x9fa1afba26a41215c", +"98a8d1c6f337999fed2cca8\",\n \"name\" : \"", +"0x9fa1afba26a41215c9\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1367317754\n}, \n{\n", +" \"ETH_account\" : \"0x31a40caf37a30501d", +"d38efc1390c245acef03e21\",\n \"name\" : \"", +"0x31a40caf37a30501dd\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 890893000\n}, \n{\n ", +" \"ETH_account\" : \"0x02afc4ffc7c84ad09b", +"d51383d2166a14adc2e011\",\n \"name\" : \"0", +"x02afc4ffc7c84ad09b\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 2822110329\n}, \n{\n ", +" \"ETH_account\" : \"0xe316cf8ffc1f0ec2af", +"15c0593ded1da9038eca87\",\n \"name\" : \"0", +"xe316cf8ffc1f0ec2af\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 70000000000\n}, \n{\n", +" \"ETH_account\" : \"0x5457845680fdda353", +"8e191af182fc26005f764ce\",\n \"name\" : \"", +"0x5457845680fdda3538\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 77864000\n}, \n{\n ", +" \"ETH_account\" : \"0x3185651fc40fcb0de91", +"6052c266cc650141718ba\",\n \"name\" : \"0x", +"3185651fc40fcb0de9\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1500000000\n}, \n{\n ", +" \"ETH_account\" : \"0xd031920684bb0efd641", +"68c2072df6ff070ef42e2\",\n \"name\" : \"0x", +"d031920684bb0efd64\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 19000000\n}, \n{\n ", +"\"ETH_account\" : \"0xd3abc3bfd485078e32be8", +"cc365b85ce4a280b970\",\n \"name\" : \"0xd3", +"abc3bfd485078e32\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 534059000\n}, \n{\n \"", +"ETH_account\" : \"0x4da1504e8ab940a97bd2c1", +"620bab0e10e694b823\",\n \"name\" : \"0x4da", +"1504e8ab940a97b\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 25000000000\n}, \n{\n ", +"\"ETH_account\" : \"0xf5e25efcde1444c9cd026", +"389580e783a7f2063f1\",\n \"name\" : \"0xf5", +"e25efcde1444c9cd\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1500000000\n}, \n{\n ", +"\"ETH_account\" : \"0xee4d542e2ed7fb92d062a", +"b26c302fba5fbb4ee94\",\n \"name\" : \"0xee", +"4d542e2ed7fb92d0\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1000000000\n}, \n{\n ", +"\"ETH_account\" : \"0x059937a84d98df2e23f9b", +"6e893009643cd3c6fd6\",\n \"name\" : \"0x05", +"9937a84d98df2e23\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 4500000000\n}, \n{\n ", +"\"ETH_account\" : \"0x8d8b4121e56e36cd3523a", +"1849c6945532cf30b72\",\n \"name\" : \"0x8d", +"8b4121e56e36cd35\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 900201000\n}, \n{\n \"", +"ETH_account\" : \"0xf36bf474f3d4b23e67b857", +"95c6a5cec2afca4bbb\",\n \"name\" : \"0xf36", +"bf474f3d4b23e67\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 5000000000\n}, \n{\n \"", +"ETH_account\" : \"0x29160b366b8c084a26473d", +"126c64489965a4d217\",\n \"name\" : \"cozys", +"ukiyaki\",\n \"publicKey\" : \"SPH5r19zHH9", +"JhaW1Vf3bP1f4fX1eK31C8e7FXuukLDUH5YGVGQ5", +"wT\",\n \"balance\" : 5097980537\n}, \n{\n ", +" \"ETH_account\" : \"0x3d89255529e9c515a51", +"fd6066434772be38d6dbf\",\n \"name\" : \"0x", +"3d89255529e9c515a5\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 4357206012\n}, \n{\n ", +" \"ETH_account\" : \"0xa7a6a44a4d8c3a21493", +"e418645237db8849e0adc\",\n \"name\" : \"zi", +"vko\",\n \"publicKey\" : \"SPH8hnsEfn94eTR", +"Y44XPDqL4hBAKvo6xWtKeUUSKb2AHgmb7hLEbD\",", +"\n \"balance\" : 18408050000\n}, \n{\n \"", +"ETH_account\" : \"0x9969f713bfe5d04a1cbeaf", +"5884290039b0f1c3bf\",\n \"name\" : \"0x996", +"9f713bfe5d04a1c\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 180000000\n}, \n{\n \"E", +"TH_account\" : \"0x7b5c0e6b100ae5148ec6816", +"d3dfce80404981310\",\n \"name\" : \"johnti", +"tar\",\n \"publicKey\" : \"SPH66x7HFTAbxhm", +"RUrjP3iQaeRM38oMdFAa1o9qF9cQaQVDtLUqrH\",", +"\n \"balance\" : 1000000550000\n}, \n{\n ", +" \"ETH_account\" : \"0xc375b96fa28efb8536a3", +"ba490e89f72e35831c30\",\n \"name\" : \"0xc", +"375b96fa28efb8536\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 763999790\n}, \n{\n ", +"\"ETH_account\" : \"0xe07dca4debd729e2e21a8", +"4aca510b5767f2b8977\",\n \"name\" : \"0xe0", +"7dca4debd729e2e2\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1730000000\n}, \n{\n ", +"\"ETH_account\" : \"0x2594155a8bf0f06efc095", +"8f36c2a3ebc94adaa41\",\n \"name\" : \"0x25", +"94155a8bf0f06efc\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 256749325\n}, \n{\n \"", +"ETH_account\" : \"0x26549b4d2ce31501ae9c4a", +"59f08f14f640731a5a\",\n \"name\" : \"gorda", +"nnur\",\n \"publicKey\" : \"SPH6goEhgtWZn7", +"Ew7Ynb5eTLXPA4TKcNdCxL5B86sScgFJAK8CLYb\"", +",\n \"balance\" : 250000000000\n}, \n{\n ", +" \"ETH_account\" : \"0xe861d66727db7c3920d3", +"f809d0106e19b45f99d3\",\n \"name\" : \"0xe", +"861d66727db7c3920\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 5368232415\n}, \n{\n ", +" \"ETH_account\" : \"0xa59d09b803aa620fc7a3", +"24e62f4dc60186ba8484\",\n \"name\" : \"0xa", +"59d09b803aa620fc7\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1014819261\n}, \n{\n ", +" \"ETH_account\" : \"0xcd0006600c0b412aee93", +"6aa563832bc80fba81b7\",\n \"name\" : \"0xc", +"d0006600c0b412aee\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 58794757\n}, \n{\n \"", +"ETH_account\" : \"0x0ce0d7d423e874ecf9bac7", +"fca7b3557da8a1509b\",\n \"name\" : \"0x0ce", +"0d7d423e874ecf9\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 4454000000\n}, \n{\n \"", +"ETH_account\" : \"0xaba1eb68aec7981b18ce92", +"bf5036af49eda547f6\",\n \"name\" : \"0xaba", +"1eb68aec7981b18\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 3181810000\n}, \n{\n \"", +"ETH_account\" : \"0x66a038082b5afa7d53f2d3", +"6242426aaced681148\",\n \"name\" : \"0x66a", +"038082b5afa7d53\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2700802653\n}, \n{\n \"", +"ETH_account\" : \"0x11cb23cdcfc75c9afcc415", +"dd5cd29d26550a0a5d\",\n \"name\" : \"0x11c", +"b23cdcfc75c9afc\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 311\n}, \n{\n \"ETH_acc", +"ount\" : \"0xd1c7652a39cbb7ab2e5750c5aa1d6", +"7496079edf6\",\n \"name\" : \"0xd1c7652a39", +"cbb7ab2e\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 599000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x265edd1a383a922cb9f7d1c2d0a25b", +"c357f46c7c\",\n \"name\" : \"jansophiatx\",", +"\n \"publicKey\" : \"SPH6B3ePKA9ekqocidzr", +"xcarbxtpLW29xyAakbuXeL77Py2ETPQm7\",\n ", +"\"balance\" : 3632888000\n}, \n{\n \"ETH_ac", +"count\" : \"0xad12349c9a03ce47bee369e8a4fd", +"b560eb7b9684\",\n \"name\" : \"0xad12349c9", +"a03ce47be\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 262869000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x42e11e49e12a7de3d565c23ced3fd", +"867374cb5bf\",\n \"name\" : \"0x42e11e49e1", +"2a7de3d5\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 20100000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x8a8d42f857f2b1a384d84278cad4", +"2a746a6d3c50\",\n \"name\" : \"0x8a8d42f85", +"7f2b1a384\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 316000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xc6b86e09577831ea6d6bfdc3a5a10", +"d2c60f146c4\",\n \"name\" : \"0xc6b86e0957", +"7831ea6d\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 228999000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x1482b174c13f8aa5240486f0caf5df", +"5bafefbe8c\",\n \"name\" : \"rkm\",\n \"pu", +"blicKey\" : \"SPH5Px4bWcRATzTFtMLAuNLe8ZAL", +"6mU8p7oxS7pYvdJgTmg7zXsdU\",\n \"balance", +"\" : 2408556900000\n}, \n{\n \"ETH_account", +"\" : \"0x32ba46cbbccac56830d0cb5d4b7191c90", +"bc55f5f\",\n \"name\" : \"0x32ba46cbbccac5", +"6830\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1152610000\n}, \n{\n \"ETH_account", +"\" : \"0xfdcd342fa05239a11e47ae97c17102489", +"14f7d6e\",\n \"name\" : \"0xfdcd342fa05239", +"a11e\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 751000\n}, \n{\n \"ETH_account\" : ", +"\"0x6898a6ae533c807667256ca1dd45b19d11d3b", +"e05\",\n \"name\" : \"0x6898a6ae533c807667", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 776000000\n}, \n{\n \"ETH_account\" : \"", +"0x1ece82964dadbf53397f8ba2c067136ca898ed", +"91\",\n \"name\" : \"familyman\",\n \"publ", +"icKey\" : \"SPH5HP2RxPxbhhR7rvMcXRiWdGziDx", +"qR2GhBnTkucHmw477H6eSG8\",\n \"balance\" ", +": 999990000000\n}, \n{\n \"ETH_account\" :", +" \"0xb2a55fb73fd63d289acef3f83bf43868ba53", +"be36\",\n \"name\" : \"0xb2a55fb73fd63d289", +"a\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 726000000\n}, \n{\n \"ETH_account\" : ", +"\"0xa6b5b714c4c4de02b4141387f65841640e1c3", +"6d0\",\n \"name\" : \"sugnayeragam\",\n \"", +"publicKey\" : \"SPH5DTybxVbwvSrJs62HXQsutS", +"MQ72z453BC5FnkqRD4e18HP9vto\",\n \"balan", +"ce\" : 2181800000\n}, \n{\n \"ETH_account\"", +" : \"0xd2948e592c586cf649fc3c6d9c5e51d9ae", +"150969\",\n \"name\" : \"infamesofia\",\n ", +" \"publicKey\" : \"SPH6aQxCzaEQN8qiC5SfQsJ2", +"jFh1pXkBQjLkKKvqnVu8RPxkzFqUm\",\n \"bal", +"ance\" : 3500000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xcf61c95c32a0ba2d54bec3e7e6c382f3", +"64ace82b\",\n \"name\" : \"0xcf61c95c32a0b", +"a2d54\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 490584000\n}, \n{\n \"ETH_account", +"\" : \"0xb5e4d5cc931a47d8c14a2b79b997aff14", +"0d1b0b0\",\n \"name\" : \"0xb5e4d5cc931a47", +"d8c1\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 500000000\n}, \n{\n \"ETH_account\"", +" : \"0xa7ddaf03ad707a849e765e2561a72cbb4c", +"b7d847\",\n \"name\" : \"0xa7ddaf03ad707a8", +"49e\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1587844000\n}, \n{\n \"ETH_account\"", +" : \"0xc18871892d9a0d5e49a544fbfc8d2b8fae", +"d7a177\",\n \"name\" : \"0xc18871892d9a0d5", +"e49\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1500000000\n}, \n{\n \"ETH_account\"", +" : \"0x4ef3389036d4ab258241df1dbd4d67ddea", +"69e9ea\",\n \"name\" : \"0x4ef3389036d4ab2", +"582\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 240000\n}, \n{\n \"ETH_account\" : \"", +"0x54e5c7d8fdee0842de399e22e1cb09d40ac267", +"7a\",\n \"name\" : \"0x54e5c7d8fdee0842de\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 800000000\n}, \n{\n \"ETH_account\" : \"0", +"x806432ba9f328c7d274fb3c65bd41091e1690c9", +"4\",\n \"name\" : \"0x806432ba9f328c7d27\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 11362788704\n}, \n{\n \"ETH_account\" : \"", +"0x8d2d8a56fe18c7814ccf8e074dabb6ed609059", +"a3\",\n \"name\" : \"0x8d2d8a56fe18c7814c\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 315530000\n}, \n{\n \"ETH_account\" : \"0", +"xe2b5877edb5ecedbed4239a6ad46353e169aab1", +"3\",\n \"name\" : \"0xe2b5877edb5ecedbed\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1561000000\n}, \n{\n \"ETH_account\" : \"0", +"xc2a5d7d282ec69ccc4fc66d84bd26c11674dbc8", +"e\",\n \"name\" : \"0xc2a5d7d282ec69ccc4\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 3820818720\n}, \n{\n \"ETH_account\" : \"0", +"x8a648e8194ea22ed299c5ce1efe41f3f907e899", +"2\",\n \"name\" : \"0x8a648e8194ea22ed29\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 142557931\n}, \n{\n \"ETH_account\" : \"0x", +"6acf1c46545e99ffdd8866baf27ae7b1cf628199", +"\",\n \"name\" : \"0x6acf1c46545e99ffdd\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1000000\n}, \n{\n \"ETH_account\" : \"0xa29", +"b5aaceed3078abfeb0c7704d6a3266adc8c60\",\n", +" \"name\" : \"0xa29b5aaceed3078abf\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 306", +"8193000\n}, \n{\n \"ETH_account\" : \"0xa8f", +"65c7a28ed43fbd315602c61d0690d83504db6\",\n", +" \"name\" : \"whatever\",\n \"publicKey\"", +" : \"SPH5UbjCfK9miF6NpzRTdVTX17N5Q3hedHZi", +"7N8e4GJVfpuWZHSto\",\n \"balance\" : 1743", +"500000\n}, \n{\n \"ETH_account\" : \"0x6735", +"2fd1c3a9344d8b8f043f60c65b39f446d21f\",\n ", +" \"name\" : \"0x67352fd1c3a9344d8b\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 6200", +"0000\n}, \n{\n \"ETH_account\" : \"0x0a5395", +"2d074c3a999532a3e118319d50a595a474\",\n ", +" \"name\" : \"0x0a53952d074c3a9995\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 101575", +"7000\n}, \n{\n \"ETH_account\" : \"0x43d9f0", +"2b657eaacf0ace5377bed958a013fcefe9\",\n ", +" \"name\" : \"0x43d9f02b657eaacf0a\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 100000", +"0000\n}, \n{\n \"ETH_account\" : \"0x19198f", +"2e6f281795c9bcb91d2d867cb4f36081cb\",\n ", +" \"name\" : \"0x19198f2e6f281795c9\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 325000", +"000\n}, \n{\n \"ETH_account\" : \"0xc3432cb", +"38ba22ea1f2b39ac606725506833a0f70\",\n ", +"\"name\" : \"0xc3432cb38ba22ea1f2\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 3676000", +"000\n}, \n{\n \"ETH_account\" : \"0xe3d4850", +"e1ab7eeca9909bd9793e8c7e076ed6942\",\n ", +"\"name\" : \"0xe3d4850e1ab7eeca99\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5000000", +"00\n}, \n{\n \"ETH_account\" : \"0x0a479c66", +"16857d0f15fdffc2933a296d5233d723\",\n \"", +"name\" : \"0x0a479c6616857d0f15\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 92836700", +"0\n}, \n{\n \"ETH_account\" : \"0x22408b650", +"815184a866d594c4effb5c1f8e41105\",\n \"n", +"ame\" : \"0x22408b650815184a86\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 935000000", +"\n}, \n{\n \"ETH_account\" : \"0x4afa38394b", +"f64fbc50a1d55467a653ae07ae0eac\",\n \"na", +"me\" : \"0x4afa38394bf64fbc50\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 495000000\n", +"}, \n{\n \"ETH_account\" : \"0x60e3ced803b", +"b4b12bfcfe4ad59e5b1fb9b8c45aa\",\n \"nam", +"e\" : \"0x60e3ced803bb4b12bf\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 46\n}, \n{\n ", +" \"ETH_account\" : \"0x9d0e0e4bd88abed5314", +"2ad5462fea29d68cc3ecf\",\n \"name\" : \"sp", +"htxmiggi\",\n \"publicKey\" : \"SPH5ecoj5X", +"njUqWYqyV5NB3y2KqyDNZXCCUXTa94fpxbXEZ1s5", +"HoJ\",\n \"balance\" : 6200000000\n}, \n{\n ", +" \"ETH_account\" : \"0x4881020fd9e524877a", +"ae49f7007a4efbd9a2c71d\",\n \"name\" : \"0", +"x4881020fd9e524877a\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1865775728\n}, \n{\n ", +" \"ETH_account\" : \"0x015955bd15bb1690c8", +"fc7124be11b4ce78d894a9\",\n \"name\" : \"0", +"x015955bd15bb1690c8\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 3010000000\n}, \n{\n ", +" \"ETH_account\" : \"0xbd4c932e30dbe44522", +"d55b0e8da183749069276e\",\n \"name\" : \"0", +"xbd4c932e30dbe44522\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 50768543\n}, \n{\n ", +" \"ETH_account\" : \"0xb87d26ef6f768b795f76", +"5a85465fb25144c92d19\",\n \"name\" : \"0xb", +"87d26ef6f768b795f\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 5000000\n}, \n{\n \"E", +"TH_account\" : \"0x2dc645a9083122dff050293", +"ad947a854becbe5d5\",\n \"name\" : \"adelan", +"te\",\n \"publicKey\" : \"SPH6Nwxd4HraeCTz", +"7irP6MZPN3wYe7TRkmAoCd91TwtYAnfjhieLg\",\n", +" \"balance\" : 79760000\n}, \n{\n \"ETH_", +"account\" : \"0x89f0470f6721d19fcdac005ff3", +"1d6c8ece5c6e64\",\n \"name\" : \"0x89f0470", +"f6721d19fcd\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 745000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xe3a04558fb405c5429b8385f595", +"0c08ccd0f11f7\",\n \"name\" : \"pjuskenswa", +"p\",\n \"publicKey\" : \"SPH8L5XTe7RxCSYQj", +"3mNLfBgUMmNHpxuZfSuY5PtYcPNx7tfJ69pR\",\n ", +" \"balance\" : 626806900\n}, \n{\n \"ETH_", +"account\" : \"0x31835e6ff3202daf2d693f2251", +"f7d214847d81fa\",\n \"name\" : \"beadsophi", +"a\",\n \"publicKey\" : \"SPH7TEL2xZe16uQuQ", +"APDZtATs4GdVHFaR7ngVo7eNKPwLLYNb3aPS\",\n ", +" \"balance\" : 6364656336\n}, \n{\n \"ETH", +"_account\" : \"0x9f7d3648abf6a622bdceafcc8", +"703b8c5a6e9dd48\",\n \"name\" : \"0x9f7d36", +"48abf6a622bd\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 240000000\n}, \n{\n \"ETH_", +"account\" : \"0x68848e6e434bcea31616958f8c", +"016a60455e582d\",\n \"name\" : \"0x68848e6", +"e434bcea316\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 11333000000\n}, \n{\n \"ETH", +"_account\" : \"0x442b0967a0cf75541bc6a7768", +"4c3e824a94f0cf5\",\n \"name\" : \"nickbuza", +"c\",\n \"publicKey\" : \"SPH59BJd7DTozccgB", +"QMmhRmbnuZuKKAJLv6UHj111BbkT8K6KtV8B\",\n ", +" \"balance\" : 9901591750\n}, \n{\n \"ETH", +"_account\" : \"0xdbb612dc61ccc5016136d98ab", +"ec0cb8f52049b90\",\n \"name\" : \"0xdbb612", +"dc61ccc50161\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1450050000\n}, \n{\n \"ETH", +"_account\" : \"0x740b3374f1b465761c5cf5f9d", +"d9b7686e1407374\",\n \"name\" : \"0x740b33", +"74f1b465761c\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 96000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xaeadd37a2cdaeba1c8a4bfca21f", +"c98633717cd68\",\n \"name\" : \"0xaeadd37a", +"2cdaeba1c8\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1151943000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x4e8a5afed083ab3104b48d65db4", +"d41a4d54a90f4\",\n \"name\" : \"0x4e8a5afe", +"d083ab3104\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 5849563000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x2f48f80921ab775353ac7da8983", +"b99b41c88892f\",\n \"name\" : \"0x2f48f809", +"21ab775353\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 200000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x35482dcf09261933bce1b68ecf74", +"5905e188bd87\",\n \"name\" : \"0x35482dcf0", +"9261933bc\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1132951569\n}, \n{\n \"ETH_ac", +"count\" : \"0x75c54542b13bc43db6539abe9fad", +"5589f05736a6\",\n \"name\" : \"0x75c54542b", +"13bc43db6\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1006246795\n}, \n{\n \"ETH_ac", +"count\" : \"0xf4c59a14a8cda6dd05f047dbe806", +"ffc850b649a0\",\n \"name\" : \"0xf4c59a14a", +"8cda6dd05\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 550000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xe76bc0d2b0d7562e680127ed5c6c8", +"5256bf1b649\",\n \"name\" : \"ainsley\",\n ", +" \"publicKey\" : \"SPH7HNDtN92UhMuFp58YzaN", +"hetRukb1T7z5KR1Xfw8sbip1JqdZGR\",\n \"ba", +"lance\" : 709219000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x90f0c321710416af550ba4d14106656a", +"37cb60f7\",\n \"name\" : \"0x90f0c32171041", +"6af55\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 3006137396\n}, \n{\n \"ETH_accoun", +"t\" : \"0x368c7a2912eca87b88f0aa863aa01212", +"30624559\",\n \"name\" : \"0x368c7a2912eca", +"87b88\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 935307000\n}, \n{\n \"ETH_account", +"\" : \"0x4105ee06c0b60970a778c5bbd81c525a5", +"d858e8b\",\n \"name\" : \"0x4105ee06c0b609", +"70a7\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1760578000\n}, \n{\n \"ETH_account", +"\" : \"0xfbe1efe002de2180ff14eba6ec3a70338", +"42f6e53\",\n \"name\" : \"0xfbe1efe002de21", +"80ff\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 234763000\n}, \n{\n \"ETH_account\"", +" : \"0x969fe149704a220559fcff4227447ec3a3", +"485b65\",\n \"name\" : \"0x969fe149704a220", +"559\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 91000000\n}, \n{\n \"ETH_account\" :", +" \"0x89f442198303aa81ad71fb2bde4fc7397226", +"9717\",\n \"name\" : \"0x89f442198303aa81a", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 61040\n}, \n{\n \"ETH_account\" : \"0x6", +"00d6fee0da1552c928511d11fbf6cfbca657ee3\"", +",\n \"name\" : \"0x600d6fee0da1552c92\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"15000000\n}, \n{\n \"ETH_account\" : \"0xcc", +"410f34bbbef17038939c50ba5605db37ee8a87\",", +"\n \"name\" : \"0xcc410f34bbbef17038\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 18", +"3\n}, \n{\n \"ETH_account\" : \"0xf06f347a4", +"9d5735e220b5d5be261a245deced851\",\n \"n", +"ame\" : \"0xf06f347a49d5735e22\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 139674650", +"0\n}, \n{\n \"ETH_account\" : \"0x4082edfdd", +"9dd2dc97fb2b115b1942cabc06ea69a\",\n \"n", +"ame\" : \"0x4082edfdd9dd2dc97f\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 397489600", +"0\n}, \n{\n \"ETH_account\" : \"0xdc28c7247", +"8c962ec4430e88bd4a222790f4493c7\",\n \"n", +"ame\" : \"0xdc28c72478c962ec44\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 100000000", +"\n}, \n{\n \"ETH_account\" : \"0x86f8f17dbb", +"9ead2ec85785805b0751f69de16ca1\",\n \"na", +"me\" : \"0x86f8f17dbb9ead2ec8\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 30000000\n}", +", \n{\n \"ETH_account\" : \"0xb46701b14385", +"ad2568146fe5fdac1719737760e8\",\n \"name", +"\" : \"0xb46701b14385ad2568\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 120000000\n},", +" \n{\n \"ETH_account\" : \"0x73da80594daf2", +"132978903dd6242c433b56293ed\",\n \"name\"", +" : \"0x73da80594daf213297\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 273151000\n}, ", +"\n{\n \"ETH_account\" : \"0x45ee46e1871ee1", +"d4d7b5a1d6272eedc92cccc826\",\n \"name\" ", +": \"derrickteo\",\n \"publicKey\" : \"SPH7A", +"t397FZnUxL8wqgWGmiKiorDAqxs6Fju23W67s2bd", +"RZTniDtj\",\n \"balance\" : 7187403151\n},", +" \n{\n \"ETH_account\" : \"0xa59fb839e8014", +"2c9d0515155702d35f9dce4439e\",\n \"name\"", +" : \"0xa59fb839e80142c9d0\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 45858004427\n}", +", \n{\n \"ETH_account\" : \"0xd54db683a129", +"f604510d04598a99bc3207ddc2eb\",\n \"name", +"\" : \"0xd54db683a129f60451\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 655000000\n},", +" \n{\n \"ETH_account\" : \"0xff693d9872efe", +"66496b27b632a371c7d050ed1a0\",\n \"name\"", +" : \"0xff693d9872efe66496\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 6849055788\n},", +" \n{\n \"ETH_account\" : \"0x602851e2bf2ec", +"b8843c95f79ada5d01f240b26ac\",\n \"name\"", +" : \"0x602851e2bf2ecb8843\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 648997\n}, \n{\n", +" \"ETH_account\" : \"0x374736a48cd64be4e", +"ec2f5db53b2ade45e445503\",\n \"name\" : \"", +"0x374736a48cd64be4ee\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1765000000\n}, \n{\n", +" \"ETH_account\" : \"0xd09726d963c62836a", +"adffe7a825fadbb999c900b\",\n \"name\" : \"", +"0xd09726d963c62836aa\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 500000000\n}, \n{\n ", +" \"ETH_account\" : \"0xe9075208d20db00216", +"0f7fe4de629b514bc8c778\",\n \"name\" : \"0", +"xe9075208d20db00216\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 200000000\n}, \n{\n ", +" \"ETH_account\" : \"0x4720557cf6f8ad44f92", +"090c7f71c6776780817ca\",\n \"name\" : \"0x", +"4720557cf6f8ad44f9\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 850000000\n}, \n{\n ", +" \"ETH_account\" : \"0x52ec71c276e7be51bb5c", +"ce8b57abf8b01b2050e5\",\n \"name\" : \"0x5", +"2ec71c276e7be51bb\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 190067890000\n}, \n{\n ", +" \"ETH_account\" : \"0x1485b223ee97c8f9e3", +"141c119db1893140628de3\",\n \"name\" : \"0", +"x1485b223ee97c8f9e3\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1600000000\n}, \n{\n ", +" \"ETH_account\" : \"0x2c09df51d18da38161", +"a5374c757f51d7032e3f9a\",\n \"name\" : \"0", +"x2c09df51d18da38161\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 639269000\n}, \n{\n ", +" \"ETH_account\" : \"0xc7aeeb1b6a4181d2a75", +"91b267c6a3c6fc956a59b\",\n \"name\" : \"0x", +"c7aeeb1b6a4181d2a7\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1221300000\n}, \n{\n ", +" \"ETH_account\" : \"0x1a5706e7c81fe391305", +"4821ce967fdd082820a4b\",\n \"name\" : \"0x", +"1a5706e7c81fe39130\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 4200000000\n}, \n{\n ", +" \"ETH_account\" : \"0xc968f33da43f5f60bad", +"80a665201cf5ef590408f\",\n \"name\" : \"0x", +"c968f33da43f5f60ba\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 17911334400\n}, \n{\n ", +" \"ETH_account\" : \"0xd73ff6401e282145fc", +"45d182fdd3dac99fd4969c\",\n \"name\" : \"0", +"xd73ff6401e282145fc\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 100000250\n}, \n{\n ", +" \"ETH_account\" : \"0x89e95778c4d9a67b1a1", +"9e6e3c9b9117e9af7685f\",\n \"name\" : \"0x", +"89e95778c4d9a67b1a\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 20000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x5810a60b960a5a0a4c", +"dd0385fc083e6d34a4e500\",\n \"name\" : \"0", +"x5810a60b960a5a0a4c\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 771965000\n}, \n{\n ", +" \"ETH_account\" : \"0xc67ae76b56f25d356cf", +"080537dbafc29fc6eb956\",\n \"name\" : \"0x", +"c67ae76b56f25d356c\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 6171000000\n}, \n{\n ", +" \"ETH_account\" : \"0xe2db68279e0663d6910", +"14dbda25ca2c5316d1ad9\",\n \"name\" : \"0x", +"e2db68279e0663d691\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 2025000000\n}, \n{\n ", +" \"ETH_account\" : \"0xb078bdac6cd2d4bd469", +"a4ac8b470ff99dc3d3075\",\n \"name\" : \"0x", +"b078bdac6cd2d4bd46\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 2124000000\n}, \n{\n ", +" \"ETH_account\" : \"0x469dede6274288594c2", +"d16f21647d979131bb8cf\",\n \"name\" : \"0x", +"469dede6274288594c\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 3700000000000\n}, \n{", +"\n \"ETH_account\" : \"0x28dc930d9e43b15d", +"777b02b934d083519199798f\",\n \"name\" : ", +"\"0x28dc930d9e43b15d77\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 2299990000\n}, \n{", +"\n \"ETH_account\" : \"0x4ee1aa4ca3f8ca38", +"14633eddd458784326ea56ab\",\n \"name\" : ", +"\"0x4ee1aa4ca3f8ca3814\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 25000000\n}, \n{\n ", +" \"ETH_account\" : \"0x4c5572a6adcdcaf151", +"3d6f6fb4b99be64e5b04f4\",\n \"name\" : \"0", +"x4c5572a6adcdcaf151\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 2843503410\n}, \n{\n ", +" \"ETH_account\" : \"0x1e467f06920fe3d5b3", +"e0943ffbee35a8f656b876\",\n \"name\" : \"0", +"x1e467f06920fe3d5b3\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 4790000000\n}, \n{\n ", +" \"ETH_account\" : \"0x69d9e931c5a23bc866", +"0559e05ac44d7e92bb407b\",\n \"name\" : \"0", +"x69d9e931c5a23bc866\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 2000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x529ae9af4236438eb1", +"8c3f675438bf34b3414879\",\n \"name\" : \"0", +"x529ae9af4236438eb1\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 22746909731\n}, \n{\n", +" \"ETH_account\" : \"0x582e0cbcf29b1a86b", +"e93c0f5105345546214db9a\",\n \"name\" : \"", +"0x582e0cbcf29b1a86be\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 30000000\n}, \n{\n ", +" \"ETH_account\" : \"0xe46a372f5a9f1f7bb18", +"6023731118a878de642d4\",\n \"name\" : \"0x", +"e46a372f5a9f1f7bb1\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x38121c93f4a4ebaa9e3", +"676676644e6844cc47ce3\",\n \"name\" : \"0x", +"38121c93f4a4ebaa9e\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 11499000000\n}, \n{\n ", +" \"ETH_account\" : \"0xd5f60a2689f23ff919", +"dd6b56a31acb9c9007b420\",\n \"name\" : \"0", +"xd5f60a2689f23ff919\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 2515026000\n}, \n{\n ", +" \"ETH_account\" : \"0xb60787bfcc9e4466a3", +"cf81ff09f8d4b4d43d6957\",\n \"name\" : \"0", +"xb60787bfcc9e4466a3\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 385504885\n}, \n{\n ", +" \"ETH_account\" : \"0xc4be82f103f834b02ea", +"0788b5bad5dd4eb19b8bd\",\n \"name\" : \"lo", +"box\",\n \"publicKey\" : \"SPH8CxA6beG3FkV", +"Q1GSbjFsJ6UmGr6iELJDd7ohCyCv5Ft3vVgptC\",", +"\n \"balance\" : 6749905700\n}, \n{\n \"E", +"TH_account\" : \"0xd76fafb7ad8f5e32fe27b86", +"f5caae9f775b5c708\",\n \"name\" : \"0xd76f", +"afb7ad8f5e32fe\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 290667000\n}, \n{\n \"ET", +"H_account\" : \"0x9c13f9857cd9e26a3221eabc", +"ab369c60bde5acd2\",\n \"name\" : \"0x9c13f", +"9857cd9e26a32\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 19510767000\n}, \n{\n \"E", +"TH_account\" : \"0xe8e6f04c5567674634f7646", +"38194fa282c08c27c\",\n \"name\" : \"0xe8e6", +"f04c5567674634\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 309000000\n}, \n{\n \"ET", +"H_account\" : \"0x6af4a699c4e266575282c42a", +"bcde2fcd40ad6231\",\n \"name\" : \"0x6af4a", +"699c4e2665752\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 280000000\n}, \n{\n \"ETH", +"_account\" : \"0x507ec791f434eb0e4cc5c1d29", +"025b3a839ff0b8c\",\n \"name\" : \"0x507ec7", +"91f434eb0e4c\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2888512925\n}, \n{\n \"ETH", +"_account\" : \"0xc1c59390f2aaa7def424605d9", +"6769ef7a7c64916\",\n \"name\" : \"0xc1c593", +"90f2aaa7def4\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 852000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x934cd35072daa86d10ec602c77aa7", +"b15cc39242e\",\n \"name\" : \"0x934cd35072", +"daa86d10\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 128914520\n}, \n{\n \"ETH_acco", +"unt\" : \"0x89d8ae426e142a173fe20bf854d692", +"132373c281\",\n \"name\" : \"0x89d8ae426e1", +"42a173f\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 3907265839\n}, \n{\n \"ETH_acco", +"unt\" : \"0x97d4c10740250e86208f80c6e8762f", +"f14fdf8ca5\",\n \"name\" : \"0x97d4c107402", +"50e8620\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 4920\n}, \n{\n \"ETH_account\" :", +" \"0x51f102536dd7e49a7cd98bda4fd47da9b598", +"5bdd\",\n \"name\" : \"0x51f102536dd7e49a7", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1723875959\n}, \n{\n \"ETH_account\" :", +" \"0x1e4d50a11095e9b7f3e6d213b093a509c917", +"bce5\",\n \"name\" : \"0x1e4d50a11095e9b7f", +"3\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 152508416\n}, \n{\n \"ETH_account\" : ", +"\"0xfea039d115917c7dbb294a51e1262442e4479", +"b19\",\n \"name\" : \"sophia\",\n \"public", +"Key\" : \"SPH7vuUd4tkLb3Z9SfHQXXBQ2E9xaWCs", +"6xHaUFgVLgfAPat9EEHYt\",\n \"balance\" : ", +"6350255999\n}, \n{\n \"ETH_account\" : \"0x", +"88cb418f8ee5a6e78fd9665ed074100fb323cfd7", +"\",\n \"name\" : \"0x88cb418f8ee5a6e78f\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1235000000\n}, \n{\n \"ETH_account\" : \"0x", +"407fedce0222cb372299ff7eb8ec86aec8147adf", +"\",\n \"name\" : \"0x407fedce0222cb3722\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"34558667521\n}, \n{\n \"ETH_account\" : \"0", +"xc027f22edac3dc0faa5b6f72e3c9bf15bb0facf", +"5\",\n \"name\" : \"ezjsztsj\",\n \"public", +"Key\" : \"SPH5ourn2Yo3n31vxPmHm5EUrDE9Rspf", +"EKaPSLgJyGTMHp3E9oXvE\",\n \"balance\" : ", +"513172471\n}, \n{\n \"ETH_account\" : \"0x4", +"da540ccfe452391f2b9da128c78bc51cc7a8999\"", +",\n \"name\" : \"asefvbcrtshuj\",\n \"pub", +"licKey\" : \"SPH534w3GgoCX139GQawzm1XRMXDx", +"JcajZev2N9R96MXgx4s8L1ba\",\n \"balance\"", +" : 295000000\n}, \n{\n \"ETH_account\" : \"", +"0x80fcb04a530fc21db99ec649d486d70d2a8d89", +"11\",\n \"name\" : \"0x80fcb04a530fc21db9\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2500000000\n}, \n{\n \"ETH_account\" : \"", +"0x995ead5520d060b709b58362d976c82f0c7dfe", +"2b\",\n \"name\" : \"0x995ead5520d060b709\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 70000000\n}, \n{\n \"ETH_account\" : \"0x", +"0175977150e65801efde36d523184f9362f118b7", +"\",\n \"name\" : \"0x0175977150e65801ef\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"53084358525\n}, \n{\n \"ETH_account\" : \"0", +"xe2f842ccfffaacc57399e285f037fe1d49d26de", +"2\",\n \"name\" : \"0xe2f842ccfffaacc573\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 87685000\n}, \n{\n \"ETH_account\" : \"0xc", +"764c9d365c8e88e51a060709b7ad597c7db8b9b\"", +",\n \"name\" : \"0xc764c9d365c8e88e51\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"57693200\n}, \n{\n \"ETH_account\" : \"0x7f", +"e939a42d27f8b2ec5b2d4c8f6147249043b83e\",", +"\n \"name\" : \"0x7fe939a42d27f8b2ec\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 53", +"3000000\n}, \n{\n \"ETH_account\" : \"0xe95", +"1bfd541405b89346a55c211d24712c94df7c7\",\n", +" \"name\" : \"0xe951bfd541405b8934\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 163", +"000000\n}, \n{\n \"ETH_account\" : \"0xb570", +"6bdb78dae446c537e19f44db9b9eb8a92c23\",\n ", +" \"name\" : \"0xb5706bdb78dae446c5\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3314", +"320477\n}, \n{\n \"ETH_account\" : \"0x78d9", +"5c4933f0b9b1ced3679f764027eadd9803b7\",\n ", +" \"name\" : \"0x78d95c4933f0b9b1ce\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2932", +"09734\n}, \n{\n \"ETH_account\" : \"0x6e590", +"76d0e7dc433d41f12ba1a555fdf23d746b4\",\n ", +" \"name\" : \"0x6e59076d0e7dc433d4\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 84600", +"0000\n}, \n{\n \"ETH_account\" : \"0x9dfd53", +"3c41769a77143587f31b35b632bbf441be\",\n ", +" \"name\" : \"0x9dfd533c41769a7714\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 453400", +"507\n}, \n{\n \"ETH_account\" : \"0x065286a", +"66a61fc817feff25d1c46772602f23352\",\n ", +"\"name\" : \"0x065286a66a61fc817f\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 7700000", +"00\n}, \n{\n \"ETH_account\" : \"0xb448f0c8", +"636041727300c9764584d6bedc47ddf0\",\n \"", +"name\" : \"0xb448f0c86360417273\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 86126200", +"0\n}, \n{\n \"ETH_account\" : \"0x1209a5e9a", +"f5a132574d68b5c754a53708ddb2450\",\n \"n", +"ame\" : \"0x1209a5e9af5a132574\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 135000000", +"\n}, \n{\n \"ETH_account\" : \"0x12a36b01f8", +"da9b10c6af287de3c587b8bda3dd65\",\n \"na", +"me\" : \"0x12a36b01f8da9b10c6\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 4175000000", +"\n}, \n{\n \"ETH_account\" : \"0x70bd894d11", +"8920021897e53dea9c1febf9050fbc\",\n \"na", +"me\" : \"0x70bd894d1189200218\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1250200000", +"\n}, \n{\n \"ETH_account\" : \"0x7df5475ef6", +"d4ca9fe4696ee3ea46e38999df04ac\",\n \"na", +"me\" : \"0x7df5475ef6d4ca9fe4\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 691509\n}, ", +"\n{\n \"ETH_account\" : \"0x6d608b80bcac1e", +"abde591f3b362947a43fe48a34\",\n \"name\" ", +": \"0x6d608b80bcac1eabde\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1800000000\n}, ", +"\n{\n \"ETH_account\" : \"0x022f2bffd95891", +"87e29fb436f79063fd0ffaea59\",\n \"name\" ", +": \"0x022f2bffd9589187e2\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 448000000\n}, \n", +"{\n \"ETH_account\" : \"0x18b65d0db13d7b7", +"a48d157406999499c93351112\",\n \"name\" :", +" \"0x18b65d0db13d7b7a48\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 194000000\n}, \n{", +"\n \"ETH_account\" : \"0x419826112fcf4027", +"5467d3089f055121ee108093\",\n \"name\" : ", +"\"0x419826112fcf402754\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 2200000000\n}, \n{", +"\n \"ETH_account\" : \"0x3669b1714c581854", +"2df8f0bf1f081b8d56f7b2f4\",\n \"name\" : ", +"\"0x3669b1714c5818542d\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 9000000000\n}, \n{", +"\n \"ETH_account\" : \"0xea18636ddac48dad", +"1511d875c3a06cd846b99e4b\",\n \"name\" : ", +"\"0xea18636ddac48dad15\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1200000000\n}, \n{", +"\n \"ETH_account\" : \"0x2aee321d5aec8c35", +"99f45e7cd112cc7474024204\",\n \"name\" : ", +"\"0x2aee321d5aec8c3599\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 457764976\n}, \n{\n", +" \"ETH_account\" : \"0xac37acaacb2138079", +"c3df03edcf9498c6a30cc01\",\n \"name\" : \"", +"0xac37acaacb2138079c\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 918000000\n}, \n{\n ", +" \"ETH_account\" : \"0x146cdc025c4e3f5568", +"ae5f2faaf8e64ab2c14a6c\",\n \"name\" : \"e", +"liasseng\",\n \"publicKey\" : \"SPH68qMu34", +"xtwMGuKFUzMFVN7b4zViV7oAxG1WZimk1x8tFvHx", +"R1Y\",\n \"balance\" : 208385921\n}, \n{\n ", +" \"ETH_account\" : \"0xabe93f2bfac07db364a", +"5317338d530c9d8c0a917\",\n \"name\" : \"0x", +"abe93f2bfac07db364\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 396887857\n}, \n{\n ", +" \"ETH_account\" : \"0x20e07b5ed44433a246f3", +"1363a8e330c4336de492\",\n \"name\" : \"0x2", +"0e07b5ed44433a246\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 575373830\n}, \n{\n ", +"\"ETH_account\" : \"0xee1baf3ef32918805fd47", +"ba9907b26d3977a8b60\",\n \"name\" : \"0xee", +"1baf3ef32918805f\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 306313000\n}, \n{\n \"", +"ETH_account\" : \"0x93621ecb776ca481afa8d5", +"34f5869d5cc808e2cd\",\n \"name\" : \"0x936", +"21ecb776ca481af\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1416000000\n}, \n{\n \"", +"ETH_account\" : \"0xc25ec67c9b9b7cec900e4c", +"d1c29fa7ea575cd9b8\",\n \"name\" : \"0xc25", +"ec67c9b9b7cec90\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1406293000\n}, \n{\n \"", +"ETH_account\" : \"0xbfecfb3b40037f8a40ba42", +"8ce586637a677c732b\",\n \"name\" : \"0xbfe", +"cfb3b40037f8a40\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 193000000\n}, \n{\n \"E", +"TH_account\" : \"0x3aea19168f10e592ac15750", +"e7e9d572f2ef78cc4\",\n \"name\" : \"0x3aea", +"19168f10e592ac\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1000000000\n}, \n{\n \"E", +"TH_account\" : \"0x93920d67e9cbf152e1081db", +"9c5bc64982ebcc066\",\n \"name\" : \"0x9392", +"0d67e9cbf152e1\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1423327000\n}, \n{\n \"E", +"TH_account\" : \"0x7356a041e4a87bf51c99833", +"fa8f08beabefa6403\",\n \"name\" : \"0x7356", +"a041e4a87bf51c\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 2000000000\n}, \n{\n \"E", +"TH_account\" : \"0x69f00c950dae32429009172", +"124a513fe2c6f2fda\",\n \"name\" : \"0x69f0", +"0c950dae324290\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 322000000\n}, \n{\n \"ET", +"H_account\" : \"0x0a410a5c971cbdbaa875881f", +"cc486acd893540b5\",\n \"name\" : \"0x0a410", +"a5c971cbdbaa8\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 50000000000\n}, \n{\n \"E", +"TH_account\" : \"0xda5ad3305e4dee5717a00b1", +"217048b1e2c994f85\",\n \"name\" : \"0xda5a", +"d3305e4dee5717\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 791178943\n}, \n{\n \"ET", +"H_account\" : \"0x3803933e806bf0e41dc17b3e", +"a8a37b2b723a83ba\",\n \"name\" : \"0x38039", +"33e806bf0e41d\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 898057069\n}, \n{\n \"ETH", +"_account\" : \"0xed51bc3aa44bb6af0ecd52803", +"23cfa06d6eeb8b1\",\n \"name\" : \"0xed51bc", +"3aa44bb6af0e\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 209622981\n}, \n{\n \"ETH_", +"account\" : \"0x73d632be9756847ab606b1012f", +"1f0803f7555dec\",\n \"name\" : \"0x73d632b", +"e9756847ab6\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 72814000\n}, \n{\n \"ETH_ac", +"count\" : \"0x93153cf3956247edaa1d2fad7c16", +"59c63999d74a\",\n \"name\" : \"0x93153cf39", +"56247edaa\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 472814919\n}, \n{\n \"ETH_acc", +"ount\" : \"0x30f2e605c6c9d1c8a1b24093e7599", +"70c22614a5d\",\n \"name\" : \"0x30f2e605c6", +"c9d1c8a1\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 933502930\n}, \n{\n \"ETH_acco", +"unt\" : \"0x2aed2587bb8801172db68b153b81b4", +"6647f59119\",\n \"name\" : \"0x2aed2587bb8", +"801172d\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 260000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x86eff33aa4369958b1643feeababfa3", +"0a6742e4c\",\n \"name\" : \"0x86eff33aa436", +"9958b1\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 860000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x7ede2fc438cf61edd4f62e6761087904", +"4df62bc1\",\n \"name\" : \"0x7ede2fc438cf6", +"1edd4\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 2000000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xeba8efab4ffba2becaa6027f8f5b55aa", +"8d274bd1\",\n \"name\" : \"0xeba8efab4ffba", +"2beca\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 18000000\n}, \n{\n \"ETH_account\"", +" : \"0xda909743ecc9ded2b968d59a43b43908ab", +"d6101c\",\n \"name\" : \"0xda909743ecc9ded", +"2b9\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 106000000\n}, \n{\n \"ETH_account\" ", +": \"0x88e78c07b1fb0438269d61091c76da18326", +"b81e9\",\n \"name\" : \"0x88e78c07b1fb0438", +"26\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 742000000\n}, \n{\n \"ETH_account\" :", +" \"0xf3408cb1bb2612ade87619af036646f801f8", +"b56c\",\n \"name\" : \"0xf3408cb1bb2612ade", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 316000000\n}, \n{\n \"ETH_account\" : ", +"\"0x13535a9c238629ad4b6e1507ebead1edac9bc", +"4e4\",\n \"name\" : \"0x13535a9c238629ad4b", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 42000000\n}, \n{\n \"ETH_account\" : \"0", +"x3ff7b7d925cb9b29b63a1dcaa7fba545ced2ef7", +"2\",\n \"name\" : \"0x3ff7b7d925cb9b29b6\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 115861087\n}, \n{\n \"ETH_account\" : \"0x", +"a08da15a6043e92fe0db266aafd4c7b71f923571", +"\",\n \"name\" : \"0xa08da15a6043e92fe0\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"19444013466\n}, \n{\n \"ETH_account\" : \"0", +"x66c50f4f680297d6e86a3149ea839169084654e", +"f\",\n \"name\" : \"0x66c50f4f680297d6e8\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 791147850\n}, \n{\n \"ETH_account\" : \"0x", +"8b82da0e6d77c4c58621cad542715bb228bcf4b4", +"\",\n \"name\" : \"0x8b82da0e6d77c4c586\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"645000000\n}, \n{\n \"ETH_account\" : \"0x3", +"ff066c02f6a81bcbb4eab76ea300e1b41c97bac\"", +",\n \"name\" : \"0x3ff066c02f6a81bcbb\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"517400000\n}, \n{\n \"ETH_account\" : \"0xd", +"29122882724fa1b5ea6251c4e0df2f136f77713\"", +",\n \"name\" : \"0xd29122882724fa1b5e\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"35000000\n}, \n{\n \"ETH_account\" : \"0x00", +"a715b1d88fdc4de36b4cf64fb805184a83376e\",", +"\n \"name\" : \"0x00a715b1d88fdc4de3\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 30", +"0000000\n}, \n{\n \"ETH_account\" : \"0x7e9", +"7bbe454817208efd9329ab1554053fed5065b\",\n", +" \"name\" : \"0x7e97bbe454817208ef\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 400", +"4706000\n}, \n{\n \"ETH_account\" : \"0x6b3", +"55197b4fefef5e5401b7686390e5c7de6fe1c\",\n", +" \"name\" : \"0x6b355197b4fefef5e5\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 770", +"00000\n}, \n{\n \"ETH_account\" : \"0x3e42b", +"026bec62549bef0a43124589a9c64835d4c\",\n ", +" \"name\" : \"0x3e42b026bec62549be\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 64000", +"0000\n}, \n{\n \"ETH_account\" : \"0xcd2531", +"764b0c7be41427ba68da54643e81a29712\",\n ", +" \"name\" : \"0xcd2531764b0c7be414\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 204814", +"8000\n}, \n{\n \"ETH_account\" : \"0xc36a96", +"314ff0256bd1c9665c191c65b9efd583bf\",\n ", +" \"name\" : \"0xc36a96314ff0256bd1\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 93000\n", +"}, \n{\n \"ETH_account\" : \"0x94100c9579e", +"eccae6e1f662c92c1cd366fc514a8\",\n \"nam", +"e\" : \"0x94100c9579eeccae6e\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 2085000000\n", +"}, \n{\n \"ETH_account\" : \"0x0a16db6d5ef", +"d5458f7bca473108d59cf3c1affb0\",\n \"nam", +"e\" : \"steef\",\n \"publicKey\" : \"SPH5AdR", +"ipVCj6bAY8tQhXwUdoFQoApBJMGRs3VbzM8tJtSD", +"eMT2LS\",\n \"balance\" : 900000830\n}, \n{", +"\n \"ETH_account\" : \"0xfc6390139bc1cd95", +"5472075dcf2d7034b43ff9ca\",\n \"name\" : ", +"\"0xfc6390139bc1cd9554\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 9305000000\n}, \n{", +"\n \"ETH_account\" : \"0x46ad59daeb70849e", +"cb7f753c2ce0b5752ba9af38\",\n \"name\" : ", +"\"0x46ad59daeb70849ecb\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1884852220\n}, \n{", +"\n \"ETH_account\" : \"0xc4e5ea3a3fd9b3bc", +"39b670609d11aa61e70d74bc\",\n \"name\" : ", +"\"0xc4e5ea3a3fd9b3bc39\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 502115582\n}, \n{\n", +" \"ETH_account\" : \"0x0665d15fa9d0b4882", +"bc0da20cbdba7b0662d4b24\",\n \"name\" : \"", +"0x0665d15fa9d0b4882b\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 659498000\n}, \n{\n ", +" \"ETH_account\" : \"0xcc7471fb07896146ba", +"a4d2630574b6ce077c6450\",\n \"name\" : \"0", +"xcc7471fb07896146ba\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 119001000\n}, \n{\n ", +" \"ETH_account\" : \"0x14d137883ef03130d6a", +"a1ea2f960bcf8473bd5c5\",\n \"name\" : \"0x", +"14d137883ef03130d6\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1471678869\n}, \n{\n ", +" \"ETH_account\" : \"0x98cfd69a5eab5fb085c", +"28ae0158938d5db83c511\",\n \"name\" : \"0x", +"98cfd69a5eab5fb085\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 58703\n}, \n{\n \"ET", +"H_account\" : \"0x81746d3c6151369931286453", +"12929d39dd750725\",\n \"name\" : \"0x81746", +"d3c6151369931\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x2784e9f0ec1c78d399e2e293e98", +"88ca8fc9f171f\",\n \"name\" : \"0x2784e9f0", +"ec1c78d399\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1678000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x33c9f67ee5f0cc82f2802c1eca6", +"c4e0d73d03b4b\",\n \"name\" : \"0x33c9f67e", +"e5f0cc82f2\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1107000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x5f9ceaab39fa4f569bbc3b10ffd", +"e237a360c100d\",\n \"name\" : \"0x5f9ceaab", +"39fa4f569b\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 243000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xf968ede0bc6a3d54a69fb0ca7f33", +"f47035810083\",\n \"name\" : \"0xf968ede0b", +"c6a3d54a6\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 9722006733\n}, \n{\n \"ETH_ac", +"count\" : \"0xd823ae9d9d698cf7de24e479933f", +"9630a2538954\",\n \"name\" : \"0xd823ae9d9", +"d698cf7de\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 145000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xc05d64842094bc1fc577399724ca3", +"f1f588070b2\",\n \"name\" : \"0xc05d648420", +"94bc1fc5\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 179591505\n}, \n{\n \"ETH_acco", +"unt\" : \"0x7cd1eb5ee30f4cd2f20ff343c4e07d", +"e9fbbc8a7f\",\n \"name\" : \"0x7cd1eb5ee30", +"f4cd2f2\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 168488594\n}, \n{\n \"ETH_accou", +"nt\" : \"0xc1bfdf58ef1a3522a2bd6b41bbaf838", +"13668105b\",\n \"name\" : \"sphtxttkknswap", +"\",\n \"publicKey\" : \"SPH546cZx8ULdpbDvP", +"t5wek6uKRsu7kNJkQtmV5MciG2t8xRrRoEd\",\n ", +" \"balance\" : 3400000000\n}, \n{\n \"ETH_", +"account\" : \"0x6220ca34a8c647a46e63813fd7", +"e98cc65098d972\",\n \"name\" : \"0x6220ca3", +"4a8c647a46e\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 998870\n}, \n{\n \"ETH_acco", +"unt\" : \"0x1cab691277cc530a33dd79aafa85dc", +"ceb2a8871f\",\n \"name\" : \"0x1cab691277c", +"c530a33\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 30000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x5ace9c8093082ca0e426441572ac4c94", +"63ea5a49\",\n \"name\" : \"0x5ace9c8093082", +"ca0e4\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 9000000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xbab2544a814a9ae7ebfde8dfa867df07", +"c0be55ae\",\n \"name\" : \"0xbab2544a814a9", +"ae7eb\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 750000000\n}, \n{\n \"ETH_account", +"\" : \"0x7fc76f83665845308a92a1272d424f1a8", +"b2f0ee4\",\n \"name\" : \"0x7fc76f83665845", +"308a\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 50000000\n}, \n{\n \"ETH_account\" ", +": \"0x88d20fd39c3c68cfd8a9c20780ff03ea598", +"5d8a5\",\n \"name\" : \"pokilujihnfthysc\",", +"\n \"publicKey\" : \"SPH8DKFpEutyMeH2XtkZ", +"Ww38Axb5EugMb58sPAq1Q352wJU9tKbGR\",\n ", +"\"balance\" : 13041569447\n}, \n{\n \"ETH_a", +"ccount\" : \"0xecfc3d50be9fb0d6d0a6394e919", +"a2adcf6314b2c\",\n \"name\" : \"0xecfc3d50", +"be9fb0d6d0\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1000000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x507d229b1ff9e8f2a64ad3d8696", +"ce0efa2d7182f\",\n \"name\" : \"0x507d229b", +"1ff9e8f2a6\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1800000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x516afc012bfc798373a5e16616e", +"0aa678f2a5bcd\",\n \"name\" : \"0x516afc01", +"2bfc798373\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 725000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xd403f06244207abf239cd570c115", +"a0d03120c02e\",\n \"name\" : \"0xd403f0624", +"4207abf23\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 2522899683\n}, \n{\n \"ETH_ac", +"count\" : \"0x6be2141c00313dcca93c1edd31fc", +"abda34dd88ed\",\n \"name\" : \"0x6be2141c0", +"0313dcca9\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 900000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x25df676afa4699d5a8b8ed5ca5f11", +"f703e5f98a0\",\n \"name\" : \"0x25df676afa", +"4699d5a8\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 10000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x26db17c7cdd9d95365ab2502b736fd1", +"8e2f4b301\",\n \"name\" : \"0x26db17c7cdd9", +"d95365\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 12813139175\n}, \n{\n \"ETH_acco", +"unt\" : \"0xc5625e8d8f4dc93eb0759cfca060e8", +"0ab73d8f99\",\n \"name\" : \"0xc5625e8d8f4", +"dc93eb0\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1800000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x3ed74e4fe52abc0ddc0174622bef79", +"2f415c1ef4\",\n \"name\" : \"0x3ed74e4fe52", +"abc0ddc\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 60000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x857a0d7b0155be244fd72b08a37b316f", +"de60250e\",\n \"name\" : \"0x857a0d7b0155b", +"e244f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 300000000\n}, \n{\n \"ETH_account", +"\" : \"0x8747e15c03365b6d72b64fd70153321df", +"330f451\",\n \"name\" : \"0x8747e15c03365b", +"6d72\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 929173000\n}, \n{\n \"ETH_account\"", +" : \"0xaf8d606451f04ea582c907685ec67289b4", +"5a2b9f\",\n \"name\" : \"dulban\",\n \"pub", +"licKey\" : \"SPH6pBHrhsTFR2FrWGeoz1bcMCLZN", +"XyA1M9ePUBpQsZiu4XF2NbTd\",\n \"balance\"", +" : 9698725819\n}, \n{\n \"ETH_account\" : ", +"\"0xe0f39f2d9fcadddee3190bf9978ba7fb62d15", +"9a4\",\n \"name\" : \"0xe0f39f2d9fcadddee3", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1493000000\n}, \n{\n \"ETH_account\" : ", +"\"0x1c0d0f6663a981853f854a076f846cfd34e49", +"c10\",\n \"name\" : \"0x1c0d0f6663a981853f", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 2849000000\n}, \n{\n \"ETH_account\" : ", +"\"0xc395eb311cd8bc707c4e024251b718e80111d", +"4b2\",\n \"name\" : \"0xc395eb311cd8bc707c", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1438184000\n}, \n{\n \"ETH_account\" : ", +"\"0x4c1ca681f090a42af7fddef4262349dd2ad43", +"e42\",\n \"name\" : \"0x4c1ca681f090a42af7", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 529727\n}, \n{\n \"ETH_account\" : \"0x7", +"ffe195e7468b83f91c784a41a6c4bf33a92e7d8\"", +",\n \"name\" : \"0x7ffe195e7468b83f91\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"5000000\n}, \n{\n \"ETH_account\" : \"0x5ac", +"813ebbd76bc4e36e01332d6070d1a3676f14d\",\n", +" \"name\" : \"0x5ac813ebbd76bc4e36\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 694", +"999875\n}, \n{\n \"ETH_account\" : \"0x16ba", +"0f9a5e5d39294a5b05e78dfa4e66368d563f\",\n ", +" \"name\" : \"0x16ba0f9a5e5d39294a\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1000", +"00\n}, \n{\n \"ETH_account\" : \"0x44d6b3fb", +"4eb1199f74d3090eeb7bbd55b3ac9746\",\n \"", +"name\" : \"0x44d6b3fb4eb1199f74\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 32500000", +"00\n}, \n{\n \"ETH_account\" : \"0x4dc669d3", +"b56704e1cc350b4c057e2c7ffca0deca\",\n \"", +"name\" : \"0x4dc669d3b56704e1cc\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 14000000", +"0\n}, \n{\n \"ETH_account\" : \"0x070ce39a3", +"9e0278a7c1f00b0d982abcc17ebb53c\",\n \"n", +"ame\" : \"0x070ce39a39e0278a7c\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 94289871\n", +"}, \n{\n \"ETH_account\" : \"0x60b1b49b0b5", +"f27b8c45301ed5db4671d0379d1ee\",\n \"nam", +"e\" : \"twoeasy\",\n \"publicKey\" : \"SPH5W", +"9oNQRhNU3hwgmQskYtrLkbrL4YCSHwRo111iKsrG", +"RWmyqaVw\",\n \"balance\" : 976971000\n}, ", +"\n{\n \"ETH_account\" : \"0xb869294c4a4d10", +"96186f79d2dc1317107da67040\",\n \"name\" ", +": \"0xb869294c4a4d109618\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1850000000\n}, ", +"\n{\n \"ETH_account\" : \"0x3567a248fb1d21", +"6b3d05fa4a88abbd39cc5f8e7e\",\n \"name\" ", +": \"0x3567a248fb1d216b3d\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 990396000\n}, \n", +"{\n \"ETH_account\" : \"0x419dd42dac7cc09", +"ac40573001e465c6215216eda\",\n \"name\" :", +" \"0x419dd42dac7cc09ac4\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 142790000\n}, \n{", +"\n \"ETH_account\" : \"0x0d4b669675af57c8", +"db631263731de924f45e895e\",\n \"name\" : ", +"\"0x0d4b669675af57c8db\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 4438394872\n}, \n{", +"\n \"ETH_account\" : \"0xa81dc21776e707e3", +"28f855484a5b92c70cfe592f\",\n \"name\" : ", +"\"0xa81dc21776e707e328\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 2120000000\n}, \n{", +"\n \"ETH_account\" : \"0xc90699962ee854ec", +"fe5fc81cf88b3aa3ebe42d74\",\n \"name\" : ", +"\"0xc90699962ee854ecfe\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 481480000\n}, \n{\n", +" \"ETH_account\" : \"0x0b506b53342397dff", +"adba8bb41c64b61894fd0da\",\n \"name\" : \"", +"0x0b506b53342397dffa\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 23000000000\n}, \n{", +"\n \"ETH_account\" : \"0xe3247b11de61f544", +"485f909ea597c1d035b560b9\",\n \"name\" : ", +"\"0xe3247b11de61f54448\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1815000000\n}, \n{", +"\n \"ETH_account\" : \"0x9d9e57c01845149c", +"b669f933fb479ad861c3d39f\",\n \"name\" : ", +"\"aronsienna\",\n \"publicKey\" : \"SPH7CeN", +"hv4Wu9y3ZSaaLp5fded4EnYeEmrkydiQbdcVYNtw", +"veWh76\",\n \"balance\" : 8218400000\n}, \n", +"{\n \"ETH_account\" : \"0xde36bd8b28afe22", +"467ee7f04c15fd090de44a922\",\n \"name\" :", +" \"0xde36bd8b28afe22467\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1500000000\n}, \n", +"{\n \"ETH_account\" : \"0xe7703b16ef7cd80", +"3ff46703172ef402f07a0ebb2\",\n \"name\" :", +" \"0xe7703b16ef7cd803ff\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 86626046\n}, \n{\n", +" \"ETH_account\" : \"0xed104a5f2b93ed1c0", +"2e9797a399151e9af71899c\",\n \"name\" : \"", +"0xed104a5f2b93ed1c02\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1750000000\n}, \n{\n", +" \"ETH_account\" : \"0xc35a592ec434d5403", +"a08c75060dc9bb30d66fd3a\",\n \"name\" : \"", +"0xc35a592ec434d5403a\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 667384000\n}, \n{\n ", +" \"ETH_account\" : \"0xd3bd6bd9264271e9e9", +"5952cb201c5829d35bc4fa\",\n \"name\" : \"0", +"xd3bd6bd9264271e9e9\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 528000000\n}, \n{\n ", +" \"ETH_account\" : \"0x3ba41764249162bcb8a", +"dccffbfda28dfc5675cf1\",\n \"name\" : \"0x", +"3ba41764249162bcb8\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1808497000\n}, \n{\n ", +" \"ETH_account\" : \"0xc8d0671b59ca839e082", +"5f0f56be0ce469da1b732\",\n \"name\" : \"0x", +"c8d0671b59ca839e08\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 250000000\n}, \n{\n ", +" \"ETH_account\" : \"0xc923452dc95790351247", +"27e52a34410c21a3741d\",\n \"name\" : \"0xc", +"923452dc957903512\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1000000000\n}, \n{\n ", +" \"ETH_account\" : \"0xc801126a7d75c2ec0ed7", +"9343b5b24f6e4953aeea\",\n \"name\" : \"0xc", +"801126a7d75c2ec0e\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 30809582\n}, \n{\n \"", +"ETH_account\" : \"0x465ab4e6956436e8138cd2", +"7597d8defd1eea8081\",\n \"name\" : \"0x465", +"ab4e6956436e813\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 100000000\n}, \n{\n \"E", +"TH_account\" : \"0x67ef520ee20f08ac3b62a3b", +"3799f92a020dae28c\",\n \"name\" : \"0x67ef", +"520ee20f08ac3b\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 3680480000\n}, \n{\n \"E", +"TH_account\" : \"0x85b966d61e47d81804a1f5e", +"7f5ca0020dcf9b081\",\n \"name\" : \"0x85b9", +"66d61e47d81804\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1871000000\n}, \n{\n \"E", +"TH_account\" : \"0x041d938b4741d238e0d4e47", +"1322f36ff7cd1dc88\",\n \"name\" : \"0x041d", +"938b4741d238e0\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 3000000000\n}, \n{\n \"E", +"TH_account\" : \"0xab40ddb29c1c0e82a0efd6d", +"322862f834a9af556\",\n \"name\" : \"0xab40", +"ddb29c1c0e82a0\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 390993650\n}, \n{\n \"ET", +"H_account\" : \"0x88071ce0f7f7a573392df2e4", +"fd6f6d2fe948ed2b\",\n \"name\" : \"0x88071", +"ce0f7f7a57339\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 3800000000\n}, \n{\n \"ET", +"H_account\" : \"0x9bba0794a21a9b58d5b39669", +"918ac415c6083792\",\n \"name\" : \"0x9bba0", +"794a21a9b58d5\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 43851981269\n}, \n{\n \"E", +"TH_account\" : \"0xd288e23c28ff59ee68349d9", +"e51ee8290c06eeeb1\",\n \"name\" : \"sophix", +"brianx\",\n \"publicKey\" : \"SPH5mAZbAW1n", +"pVeicLd7Y3RAKWEqKHpzzpsKfRXQsFC54bn1RexT", +"y\",\n \"balance\" : 654000000\n}, \n{\n ", +"\"ETH_account\" : \"0xb1c778e3a877fa9d69d29", +"6ba8465862507e3bbb7\",\n \"name\" : \"mulk", +"mulk\",\n \"publicKey\" : \"SPH59CU597Xse9", +"jVNxwS3yfPfv5J6ugKK5yjZ8wm6rGT5FeWBf7os\"", +",\n \"balance\" : 1725000000\n}, \n{\n \"", +"ETH_account\" : \"0x0537b39d228efc6448b427", +"47dcc3d490e3ebf302\",\n \"name\" : \"0x053", +"7b39d228efc6448\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1000000000\n}, \n{\n \"", +"ETH_account\" : \"0x945d2ba44dd78c18cf47f4", +"6d9eebd5f914afec94\",\n \"name\" : \"0x945", +"d2ba44dd78c18cf\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 210\n}, \n{\n \"ETH_acc", +"ount\" : \"0x390ada474e989568fbb29d25fd124", +"2d1093ba76a\",\n \"name\" : \"0x390ada474e", +"989568fb\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 7146000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x5e25e6cb910e47dbb500080c86fc4", +"1ddef12ea9a\",\n \"name\" : \"0x5e25e6cb91", +"0e47dbb5\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2912753743\n}, \n{\n \"ETH_acc", +"ount\" : \"0xacf652e501ea6a4bc1a1327daff7c", +"063448f6b0e\",\n \"name\" : \"0xacf652e501", +"ea6a4bc1\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 546558000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xf8861e2b920159a8b95e7de99d4e3a", +"46759c75ac\",\n \"name\" : \"rapert\",\n ", +"\"publicKey\" : \"SPH5hZF5fcoq6HGe52qNjgKEc", +"wRVMA87RqXHENPixePR6ALBHCfhe\",\n \"bala", +"nce\" : 2917718210\n}, \n{\n \"ETH_account", +"\" : \"0x9af5938237ff2a013fd13b378adc43b53", +"9c27e23\",\n \"name\" : \"0x9af5938237ff2a", +"013f\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 2000000000\n}, \n{\n \"ETH_account", +"\" : \"0xd0f3103fe0a0f0cfd3be1bbf204a78847", +"49b49f0\",\n \"name\" : \"0xd0f3103fe0a0f0", +"cfd3\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 389000000\n}, \n{\n \"ETH_account\"", +" : \"0x3e951c0fbcd329a8cea76ecfa9289d8e30", +"cab177\",\n \"name\" : \"0x3e951c0fbcd329a", +"8ce\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 522500000\n}, \n{\n \"ETH_account\" ", +": \"0x604eec583dccf488d880e333818e1aa3adc", +"53a62\",\n \"name\" : \"0x604eec583dccf488", +"d8\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 3347000000\n}, \n{\n \"ETH_account\" ", +": \"0x178db19b5c8a400d6f95283572abd5424ce", +"ea813\",\n \"name\" : \"0x178db19b5c8a400d", +"6f\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 3054530000\n}, \n{\n \"ETH_account\" ", +": \"0x7754ef29cb256f2e652477aad3b82c5ed64", +"0ba7d\",\n \"name\" : \"0x7754ef29cb256f2e", +"65\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 35000000\n}, \n{\n \"ETH_account\" : ", +"\"0x3d3f606577c914d6c577f68986bcf4c23c6b1", +"360\",\n \"name\" : \"astro\",\n \"publicK", +"ey\" : \"SPH6gcaAdLccKXrAujJBt8erQR8GNTkGM", +"UZfRWiU3U5DNv8JhgFqn\",\n \"balance\" : 1", +"0770000000\n}, \n{\n \"ETH_account\" : \"0x", +"33850d029abba4f87eda1cc387b257c553e41f96", +"\",\n \"name\" : \"0x33850d029abba4f87e\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1499000000\n}, \n{\n \"ETH_account\" : \"0x", +"2c4090a54bd6eff78bcbc0b49ed17e0f152389c8", +"\",\n \"name\" : \"0x2c4090a54bd6eff78b\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"2920000000\n}, \n{\n \"ETH_account\" : \"0x", +"967536ab71eb00fa13e6ec541e5ac2eabf72821c", +"\",\n \"name\" : \"0x967536ab71eb00fa13\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"6214611854\n}, \n{\n \"ETH_account\" : \"0x", +"033805e116fce67399857b89e609e26b5c88d011", +"\",\n \"name\" : \"0x033805e116fce67399\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"275707500\n}, \n{\n \"ETH_account\" : \"0xc", +"623c49e134b9e73f6222ab30c741143ee69fa5e\"", +",\n \"name\" : \"mamba\",\n \"publicKey\" ", +": \"SPH8DZ1GNBErgCzw3budvYTBx7hVUeTwxAeap", +"eC2a8TJZF8V4G78q\",\n \"balance\" : 48889", +"0610\n}, \n{\n \"ETH_account\" : \"0x01112d", +"cd6b7f625699beb90fd9d33b20b3a13c11\",\n ", +" \"name\" : \"phand\",\n \"publicKey\" : \"SP", +"H5aeebZn5z9friJLc4Q27ocQFhPU4LZkHYt4i74g", +"MZzh5YNbx69\",\n \"balance\" : 400001408\n", +"}, \n{\n \"ETH_account\" : \"0x82a96e30443", +"721ddd3a3f149bfc2c8bf6796a178\",\n \"nam", +"e\" : \"0x82a96e30443721ddd3\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 517539000\n}", +", \n{\n \"ETH_account\" : \"0xd2094eb4432d", +"b3717a07af358a241961c9d3ed51\",\n \"name", +"\" : \"0xd2094eb4432db3717a\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 745000000\n},", +" \n{\n \"ETH_account\" : \"0x32831eda58a34", +"4365cf089bbea02cfa22f1d73c9\",\n \"name\"", +" : \"0x32831eda58a344365c\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 23000000000\n}", +", \n{\n \"ETH_account\" : \"0x04d907504514", +"292576647e4c835f14c70c02df1d\",\n \"name", +"\" : \"0x04d907504514292576\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1554560000\n}", +", \n{\n \"ETH_account\" : \"0x98703c65a769", +"0f3b516c0fb51bcad6214cfb5dcf\",\n \"name", +"\" : \"0x98703c65a7690f3b51\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 51000000\n}, ", +"\n{\n \"ETH_account\" : \"0x15fab3d8882536", +"0bd0494c903eb55af45c4b4479\",\n \"name\" ", +": \"0x15fab3d88825360bd0\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1088550000\n}, ", +"\n{\n \"ETH_account\" : \"0x214f38714d7f9e", +"10211a7e2a2b481ebdf719c5f7\",\n \"name\" ", +": \"0x214f38714d7f9e1021\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3109121450\n}, ", +"\n{\n \"ETH_account\" : \"0x1941c45823bf29", +"356926cf03961511c972b922df\",\n \"name\" ", +": \"0x1941c45823bf293569\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1250000000\n}, ", +"\n{\n \"ETH_account\" : \"0xe2189e67dd8e00", +"f73fa1c51c759ab7f42e109d5f\",\n \"name\" ", +": \"0xe2189e67dd8e00f73f\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 20000000\n}, \n{", +"\n \"ETH_account\" : \"0x87e46717902591da", +"293c8eb4428f5549f74f02ef\",\n \"name\" : ", +"\"0x87e46717902591da29\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 259000000\n}, \n{\n", +" \"ETH_account\" : \"0x6658c7bc6ef15428c", +"3d18b7e4f1ef550ac1ab63f\",\n \"name\" : \"", +"0x6658c7bc6ef15428c3\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 957600000\n}, \n{\n ", +" \"ETH_account\" : \"0x172c7c6020bc01ce35", +"27883039bd9ba739997131\",\n \"name\" : \"0", +"x172c7c6020bc01ce35\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 120000000\n}, \n{\n ", +" \"ETH_account\" : \"0x07e18bbd407026c9e69", +"d58ca9e3dc7f8f2cd62bf\",\n \"name\" : \"0x", +"07e18bbd407026c9e6\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 100000000\n}, \n{\n ", +" \"ETH_account\" : \"0xa3b036fe5904dff659e6", +"4d98d283881ba10b5380\",\n \"name\" : \"0xa", +"3b036fe5904dff659\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1030100000\n}, \n{\n ", +" \"ETH_account\" : \"0xdc27819f91d67e9bff09", +"68f7e086254f7d57c47e\",\n \"name\" : \"sop", +"hiageest\",\n \"publicKey\" : \"SPH6gvLMQB", +"7wiqv891h5QDAj7KnNTZzm6iLB7khcQSurSv5duV", +"yEj\",\n \"balance\" : 10844000000\n}, \n{\n", +" \"ETH_account\" : \"0x8f7fd2a13e4018e6a", +"bfbc47f1e2a040fa6ccc7e5\",\n \"name\" : \"", +"mulletsays\",\n \"publicKey\" : \"SPH75kuo", +"H11yHHD1cXQEHADF8LLzfUYYMwWxerVJpgTHrfJK", +"JYZFC\",\n \"balance\" : 934000000\n}, \n{\n", +" \"ETH_account\" : \"0xe455ee12cd7d4e48f", +"9f08698b3828c788ddd721b\",\n \"name\" : \"", +"0xe455ee12cd7d4e48f9\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 11803000000\n}, \n{", +"\n \"ETH_account\" : \"0x95d0895bbc56ebd4", +"6f6db83abeb06b67bb1a36d5\",\n \"name\" : ", +"\"0x95d0895bbc56ebd46f\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 8688706658\n}, \n{", +"\n \"ETH_account\" : \"0xfa3f6adff971ecd4", +"ad76f9ca24a1053249136864\",\n \"name\" : ", +"\"0xfa3f6adff971ecd4ad\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 34583000000\n}, \n", +"{\n \"ETH_account\" : \"0x5ad4f8481554bbc", +"6fee3782301da9767a3885d84\",\n \"name\" :", +" \"0x5ad4f8481554bbc6fe\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 6439529000\n}, \n", +"{\n \"ETH_account\" : \"0xbd5dc7284d44a6e", +"6fd4d07614956f62cba35fac5\",\n \"name\" :", +" \"tiesco\",\n \"publicKey\" : \"SPH5ZTQhXy", +"FnpyEnY7kcTMe2tq4xu9CDFic3ZHt26N4WPnbGxj", +"Sh9\",\n \"balance\" : 4410000000\n}, \n{\n ", +" \"ETH_account\" : \"0xb7f44ced9f2953e86b", +"e8d0f0d4ad819ba0b4137d\",\n \"name\" : \"0", +"xb7f44ced9f2953e86b\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 2007900000\n}, \n{\n ", +" \"ETH_account\" : \"0x002581ede17e88a6c8", +"5ff3acd697006d8e8fcf07\",\n \"name\" : \"0", +"x002581ede17e88a6c8\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 404308600\n}, \n{\n ", +" \"ETH_account\" : \"0xba147ce0662e8e388b6", +"26a3d5e3b56db291330bb\",\n \"name\" : \"0x", +"ba147ce0662e8e388b\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 295300000\n}, \n{\n ", +" \"ETH_account\" : \"0xe4061936cc5f55e9b5a0", +"d727da82c774f0970c15\",\n \"name\" : \"0xe", +"4061936cc5f55e9b5\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 347000000\n}, \n{\n ", +"\"ETH_account\" : \"0x6b1ea9f611bdcc2b4d790", +"34573d26259873e7c04\",\n \"name\" : \"0x6b", +"1ea9f611bdcc2b4d\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 147485600\n}, \n{\n \"", +"ETH_account\" : \"0x627a7bbc93ce7dc7f40f55", +"9d6410ec7360d911a0\",\n \"name\" : \"0x627", +"a7bbc93ce7dc7f4\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1947000000\n}, \n{\n \"", +"ETH_account\" : \"0xced476a2c8026aeb778da1", +"7362bd1b41e9435595\",\n \"name\" : \"0xced", +"476a2c8026aeb77\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1532356900\n}, \n{\n \"", +"ETH_account\" : \"0xbcc5a52a7ced7809807136", +"4aacc79448a7b4aaec\",\n \"name\" : \"0xbcc", +"5a52a7ced780980\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 100000000\n}, \n{\n \"E", +"TH_account\" : \"0x956c899bfeface917652bda", +"88a0b8dabd0adc860\",\n \"name\" : \"0x956c", +"899bfeface9176\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1056000000\n}, \n{\n \"E", +"TH_account\" : \"0xbddb88244f20f4d8d73a70b", +"357890f17e14860d0\",\n \"name\" : \"kucoin", +"2\",\n \"publicKey\" : \"SPH4yUQgDdXBjSv4u", +"LgDMZP4PymW4qzQozWTxVWp5MPErh94EDFoz\",\n ", +" \"balance\" : 100000000\n}, \n{\n \"ETH_", +"account\" : \"0x9b995534efb8c9b6d1d0920010", +"42c68746e7262f\",\n \"name\" : \"0x9b99553", +"4efb8c9b6d1\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 584618350\n}, \n{\n \"ETH_a", +"ccount\" : \"0x3451145d14d20674ec346020288", +"3a53d426f83f9\",\n \"name\" : \"0x3451145d", +"14d20674ec\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 875000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xe23f7a64cc1dc9e3b9b75bd4d760", +"2838036d0e7e\",\n \"name\" : \"0xe23f7a64c", +"c1dc9e3b9\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 193043400\n}, \n{\n \"ETH_acc", +"ount\" : \"0xd408737aa8bbdec5c8242908e2819", +"e1a432532f0\",\n \"name\" : \"0xd408737aa8", +"bbdec5c8\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 834000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x93e4fbec45f193827c96a61fb78417", +"994e14302c\",\n \"name\" : \"0x93e4fbec45f", +"193827c\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1600238300\n}, \n{\n \"ETH_acco", +"unt\" : \"0x0632212796ab47e1ab582d7af32acf", +"e5ea402d86\",\n \"name\" : \"0x0632212796a", +"b47e1ab\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 65190000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xb31c43330eb34b685c2135e7fbbce", +"230622357e4\",\n \"name\" : \"0xb31c43330e", +"b34b685c\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 150000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x8347dabfb2f432ca61b646a8b407b3", +"9f7c795ba7\",\n \"name\" : \"0x8347dabfb2f", +"432ca61\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 250000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x125f8a37c85aae2564ae16d402e5d17", +"76230fcb5\",\n \"name\" : \"0x125f8a37c85a", +"ae2564\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 114000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x1dc968d82d109970a725dd0f06507058", +"32568cf2\",\n \"name\" : \"0x1dc968d82d109", +"970a7\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 5361000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xb6859b6973069a75ca08e7589824c9c0", +"ce26d0a0\",\n \"name\" : \"0xb6859b6973069", +"a75ca\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1870000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xac32e1838ce8118e5b8bcfc9e4501392", +"fb5aff40\",\n \"name\" : \"0xac32e1838ce81", +"18e5b\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 2200000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x1826da8856a3c6339300ab6b0d0de1f8", +"4caeb73d\",\n \"name\" : \"0x1826da8856a3c", +"63393\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 2458393749\n}, \n{\n \"ETH_accoun", +"t\" : \"0x35dca461777d0e0efafa2af82e5cfdf3", +"37e7fe1a\",\n \"name\" : \"0x35dca461777d0", +"e0efa\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 3364253714\n}, \n{\n \"ETH_accoun", +"t\" : \"0xf6c457d625f21e4a7c492cc1aa2bd4dd", +"665c0bf3\",\n \"name\" : \"0xf6c457d625f21", +"e4a7c\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 45000000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x6a5abb8f0c7e8e42b1859397adc76f4", +"e86057fec\",\n \"name\" : \"0x6a5abb8f0c7e", +"8e42b1\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 24305016833\n}, \n{\n \"ETH_acco", +"unt\" : \"0xc093aa48fc1cc37ee8ace9c24fa02a", +"c1c375c585\",\n \"name\" : \"0xc093aa48fc1", +"cc37ee8\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1000000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x3ace1b546e403a3bd554dc48074c1b", +"412e51074c\",\n \"name\" : \"0x3ace1b546e4", +"03a3bd5\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 132000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xef98f9263ea16b2b7606db9539d6bc1", +"913ba8310\",\n \"name\" : \"0xef98f9263ea1", +"6b2b76\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 766400\n}, \n{\n \"ETH_account\" ", +": \"0xa35851e1ffd5b13ab916ef2aeff3f07f5d6", +"b700c\",\n \"name\" : \"0xa35851e1ffd5b13a", +"b9\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 36300000\n}, \n{\n \"ETH_account\" : ", +"\"0x59ef99b8e0bbe84c1c532884f7e446b4fa776", +"ade\",\n \"name\" : \"0x59ef99b8e0bbe84c1c", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 2037986500\n}, \n{\n \"ETH_account\" : ", +"\"0x0ab39199c243d8a7432a5094d323b784a02d0", +"9f8\",\n \"name\" : \"0x0ab39199c243d8a743", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 3621000000\n}, \n{\n \"ETH_account\" : ", +"\"0xc50572e34004b75bbffc4947bf5e770c3681b", +"ba2\",\n \"name\" : \"0xc50572e34004b75bbf", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1030725409\n}, \n{\n \"ETH_account\" : ", +"\"0x0d4d97d6d1ebc641a9188348bd741639498d8", +"037\",\n \"name\" : \"0x0d4d97d6d1ebc641a9", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 363089900\n}, \n{\n \"ETH_account\" : \"", +"0x27fe6f2d5d9e70dbca15c420e1f24d9df18480", +"17\",\n \"name\" : \"0x27fe6f2d5d9e70dbca\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1230000000\n}, \n{\n \"ETH_account\" : \"", +"0x3400ba3911c87fae19059947adcc4014d4c68a", +"c9\",\n \"name\" : \"0x3400ba3911c87fae19\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 130000000\n}, \n{\n \"ETH_account\" : \"0", +"x1eaeaace3151f8a76040e07e2b3f87f1340b95e", +"3\",\n \"name\" : \"0x1eaeaace3151f8a760\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 320000000\n}, \n{\n \"ETH_account\" : \"0x", +"c017aa3ca17e69c9e2808c4e58597e293d10ca7c", +"\",\n \"name\" : \"0xc017aa3ca17e69c9e2\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"500000000\n}, \n{\n \"ETH_account\" : \"0xb", +"88f6f873cb841735ffea30aec730e4cddcfe662\"", +",\n \"name\" : \"0xb88f6f873cb841735f\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"766520000\n}, \n{\n \"ETH_account\" : \"0x7", +"20b0ef78c88b89d9dcdeeb07c02a2829f49bcdb\"", +",\n \"name\" : \"0x720b0ef78c88b89d9d\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"05000000\n}, \n{\n \"ETH_account\" : \"0x01", +"6d43bede7d91eb698bc01c4a9f500e9b8e1a09\",", +"\n \"name\" : \"0x016d43bede7d91eb69\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 55", +"03000000\n}, \n{\n \"ETH_account\" : \"0xa4", +"6140e332c0037bf69c8d51f357eae83b90252b\",", +"\n \"name\" : \"sphtxtokenswap\",\n \"pub", +"licKey\" : \"SPH5bitn6ZFUw3k1fF5Afvw9eLKnZ", +"vxzTaWEMKfHkL8w8aDxZf6Hz\",\n \"balance\"", +" : 992361800\n}, \n{\n \"ETH_account\" : \"", +"0x1c0fd4e00c11c25b5cab253c51653b76ce1975", +"da\",\n \"name\" : \"0x1c0fd4e00c11c25b5c\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 349000000\n}, \n{\n \"ETH_account\" : \"0", +"xc9e1e9965b67a8360563d263a2d3a69606bd9e7", +"a\",\n \"name\" : \"0xc9e1e9965b67a83605\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 20000000\n}, \n{\n \"ETH_account\" : \"0x9", +"bca51e1cebaf0cfe61d0afbdb955d0573e7f311\"", +",\n \"name\" : \"0x9bca51e1cebaf0cfe6\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"34000000\n}, \n{\n \"ETH_account\" : \"0xd7", +"29452923d8d1534b91b93722aaf5f55fc7eb70\",", +"\n \"name\" : \"0xd729452923d8d1534b\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 20", +"000000\n}, \n{\n \"ETH_account\" : \"0x3943", +"8e52d61d8de8af4cfd80d38d34674c5ad6a2\",\n ", +" \"name\" : \"0x39438e52d61d8de8af\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1200", +"000000\n}, \n{\n \"ETH_account\" : \"0xaff9", +"680af93b55216624b3b036bc903c0073c6eb\",\n ", +" \"name\" : \"0xaff9680af93b552166\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1054", +"000000\n}, \n{\n \"ETH_account\" : \"0x3542", +"d76fa99faa67a802f1123e3fc61d5e3c2f6d\",\n ", +" \"name\" : \"0x3542d76fa99faa67a8\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1391", +"0000000\n}, \n{\n \"ETH_account\" : \"0x579", +"a3966c182444b93cb02984864d25260b17d64\",\n", +" \"name\" : \"0x579a3966c182444b93\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 561", +"7010000\n}, \n{\n \"ETH_account\" : \"0x95d", +"b3a7c2c6f7c692bc65cfbef1fb7b592b49428\",\n", +" \"name\" : \"0x95db3a7c2c6f7c692b\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 200", +"00000\n}, \n{\n \"ETH_account\" : \"0x51b43", +"4c26f0451096295f79ec0f20c088088e66b\",\n ", +" \"name\" : \"0x51b434c26f04510962\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 12469", +"11200\n}, \n{\n \"ETH_account\" : \"0xef3ae", +"11e9d99c32701d7fe02d17e28e57791f22e\",\n ", +" \"name\" : \"0xef3ae11e9d99c32701\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 17958", +"90000\n}, \n{\n \"ETH_account\" : \"0x7df90", +"4923d9cfaece82a606554f6bcb5d7e3df14\",\n ", +" \"name\" : \"0x7df904923d9cfaece8\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 20000", +"000\n}, \n{\n \"ETH_account\" : \"0x8b26166", +"778907f97b77f36c65ba0da818adad5bf\",\n ", +"\"name\" : \"0x8b26166778907f97b7\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2650050", +"000\n}, \n{\n \"ETH_account\" : \"0x8bd239a", +"d16cc7d3b4bca4fdfdfa13e4b6b20fece\",\n ", +"\"name\" : \"0x8bd239ad16cc7d3b4b\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1427010", +"00\n}, \n{\n \"ETH_account\" : \"0x2c353ca3", +"7d310f1a6555dc13e6d2ac7b9318b3d9\",\n \"", +"name\" : \"0x2c353ca37d310f1a65\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 72974429", +"9\n}, \n{\n \"ETH_account\" : \"0xb5ef5807b", +"01e214e719251ff85eeea859a7b749b\",\n \"n", +"ame\" : \"0xb5ef5807b01e214e71\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 250000000", +"00\n}, \n{\n \"ETH_account\" : \"0x7e0f33a3", +"0dd920ddadadfd85c74b53fef8948834\",\n \"", +"name\" : \"0x7e0f33a30dd920ddad\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 88710000", +"00\n}, \n{\n \"ETH_account\" : \"0x4aa48e25", +"9fa247989a0a102b2f474db97e10d876\",\n \"", +"name\" : \"0x4aa48e259fa247989a\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 11000000", +"0\n}, \n{\n \"ETH_account\" : \"0x844898d1f", +"5f9aa7b1fd8f3e1899bcb2d7be947ad\",\n \"n", +"ame\" : \"0x844898d1f5f9aa7b1f\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 589899100", +"0\n}, \n{\n \"ETH_account\" : \"0x2bf3388f8", +"ce63b822e7c9abb423547e4e7b7f455\",\n \"n", +"ame\" : \"0x2bf3388f8ce63b822e\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 400000000", +"0\n}, \n{\n \"ETH_account\" : \"0xe2ec1cdc5", +"db79280115c7b721b58f01fdc4baa49\",\n \"n", +"ame\" : \"0xe2ec1cdc5db7928011\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 758346000", +"\n}, \n{\n \"ETH_account\" : \"0x2a0c0dbecc", +"7e4d658f48e01e3fa353f44050c208\",\n \"na", +"me\" : \"0x2a0c0dbecc7e4d658f\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 4064359921", +"31\n}, \n{\n \"ETH_account\" : \"0x3d50f3e7", +"6c756f1c74376b9160f3cb66d759b820\",\n \"", +"name\" : \"0x3d50f3e76c756f1c74\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 31\n}, \n{", +"\n \"ETH_account\" : \"0x0042c9a389335f48", +"b1f8870ce24f473ce10dd427\",\n \"name\" : ", +"\"0x0042c9a389335f48b1\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 5547413000\n}, \n{", +"\n \"ETH_account\" : \"0x8d15143877674996", +"68dc665bb622812aa30ec632\",\n \"name\" : ", +"\"0x8d1514387767499668\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 124235840\n}, \n{\n", +" \"ETH_account\" : \"0x6c35f99963cf15243", +"78d39d5cb32841b28c00609\",\n \"name\" : \"", +"nonodeu\",\n \"publicKey\" : \"SPH7HBWVRJT", +"wGNUDFbEBaRcyszMRJpgMjFhT92h3bLnw5TnLHdd", +"m1\",\n \"balance\" : 400000000\n}, \n{\n ", +" \"ETH_account\" : \"0x215af0ac294bbbcbdef6", +"edfc5e2eff36e3405fc6\",\n \"name\" : \"0x2", +"15af0ac294bbbcbde\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 3000000000\n}, \n{\n ", +" \"ETH_account\" : \"0xfae4af1d536b742306f8", +"e9586c3894466d70f1e4\",\n \"name\" : \"0xf", +"ae4af1d536b742306\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1007000000\n}, \n{\n ", +" \"ETH_account\" : \"0xa63195a943b02f3e057b", +"c4701d57b10bf256e12c\",\n \"name\" : \"0xa", +"63195a943b02f3e05\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 3054000000\n}, \n{\n ", +" \"ETH_account\" : \"0xcab3288351b97dc60abe", +"6e3f552d1e3af5969170\",\n \"name\" : \"0xc", +"ab3288351b97dc60a\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 100000000\n}, \n{\n ", +"\"ETH_account\" : \"0xb51d0bf3274bf4a5db556", +"af70132d50fd13d4553\",\n \"name\" : \"0xb5", +"1d0bf3274bf4a5db\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1147000000\n}, \n{\n ", +"\"ETH_account\" : \"0x8958618332df62af93053", +"cb9c535e26462c959b0\",\n \"name\" : \"0x89", +"58618332df62af93\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1032334925452\n}, \n{\n ", +" \"ETH_account\" : \"0xca701caf452f409ba7", +"6657c9a524ae06bc995445\",\n \"name\" : \"0", +"xca701caf452f409ba7\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 532380730\n}, \n{\n ", +" \"ETH_account\" : \"0xef75e5c5f38ef1f5082", +"f4a1424fad84da8d46de2\",\n \"name\" : \"0x", +"ef75e5c5f38ef1f508\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 3925000000\n}, \n{\n ", +" \"ETH_account\" : \"0xdd2b53813c597e1ddf9", +"b4eb9df8d0dc28f03d2b5\",\n \"name\" : \"0x", +"dd2b53813c597e1ddf\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 487618816\n}, \n{\n ", +" \"ETH_account\" : \"0x666244bc58a6bf1420bf", +"3de0754158efde3ffe16\",\n \"name\" : \"don", +"dangles\",\n \"publicKey\" : \"SPH6ckVgh5j", +"Y65tMH4chdVzfUxj3abYurmK7vDjXY1bC9NtiLmS", +"cW\",\n \"balance\" : 2134958830\n}, \n{\n ", +" \"ETH_account\" : \"0x8d9053db4748b58d6fc", +"cfe21c4666574e0288440\",\n \"name\" : \"0x", +"8d9053db4748b58d6f\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 21474837999\n}, \n{\n ", +" \"ETH_account\" : \"0x37ab34bf6fbf492e21", +"de5e257949b4d70f04c102\",\n \"name\" : \"0", +"x37ab34bf6fbf492e21\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 53352943\n}, \n{\n ", +" \"ETH_account\" : \"0x20c32e94f7dad3a6b4df", +"65a623f38965c62cb920\",\n \"name\" : \"0x2", +"0c32e94f7dad3a6b4\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 756000000\n}, \n{\n ", +"\"ETH_account\" : \"0x2dc7df638ea7f634c5807", +"ca1e40eea9a91d4d07f\",\n \"name\" : \"0x2d", +"c7df638ea7f634c5\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 649000000\n}, \n{\n \"", +"ETH_account\" : \"0xd92bd11d31f859e0634782", +"9cbd58d99c352880ad\",\n \"name\" : \"0xd92", +"bd11d31f859e063\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 500000000\n}, \n{\n \"E", +"TH_account\" : \"0xc802f9f8b5c24307b96cacb", +"38e605c790e5c2f91\",\n \"name\" : \"0xc802", +"f9f8b5c24307b9\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 4740788140\n}, \n{\n \"E", +"TH_account\" : \"0xc5afaca5558fe4f86aec149", +"57ba26e128175f87e\",\n \"name\" : \"0xc5af", +"aca5558fe4f86a\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 9838228904\n}, \n{\n \"E", +"TH_account\" : \"0x660d30d1fbafdc88a195137", +"0cbe2b3094dbf224b\",\n \"name\" : \"0x660d", +"30d1fbafdc88a1\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 90000\n}, \n{\n \"ETH_ac", +"count\" : \"0xa82f2bc95b49f73f1d677478c4dc", +"e158d9c74e42\",\n \"name\" : \"0xa82f2bc95", +"b49f73f1d\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1000000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x1b0fbf72d03c560d533854a588df", +"91c046bba4e2\",\n \"name\" : \"0x1b0fbf72d", +"03c560d53\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 131751000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xddd9cf78fe5db654dbbc0b85ed2f2", +"81400743e5f\",\n \"name\" : \"0xddd9cf78fe", +"5db654db\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 700993770\n}, \n{\n \"ETH_acco", +"unt\" : \"0x81931e7305b9bfa6eb10dcbb202af6", +"990efe737b\",\n \"name\" : \"0x81931e7305b", +"9bfa6eb\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 865048543\n}, \n{\n \"ETH_accou", +"nt\" : \"0xd2a6e95187a01a02090bffc718233b8", +"bceb5ee76\",\n \"name\" : \"0xd2a6e95187a0", +"1a0209\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 60972000\n}, \n{\n \"ETH_account", +"\" : \"0xe204861c8cf513f9646566a67ace951e2", +"2a7d045\",\n \"name\" : \"0xe204861c8cf513", +"f964\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1000000000\n}, \n{\n \"ETH_account", +"\" : \"0xcf69cbe29940b637b0dd503597a7d0562", +"f9a13af\",\n \"name\" : \"0xcf69cbe29940b6", +"37b0\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 199000000\n}, \n{\n \"ETH_account\"", +" : \"0x16325ae4ebff27ee74a6af5fdd26b8c95a", +"eba315\",\n \"name\" : \"0x16325ae4ebff27e", +"e74\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 270000000\n}, \n{\n \"ETH_account\" ", +": \"0x3703847e67f2de6a561a92ce3c313c7d7a0", +"42aaf\",\n \"name\" : \"0x3703847e67f2de6a", +"56\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 54000000\n}, \n{\n \"ETH_account\" : ", +"\"0x9c3bc646c377bd9d698f70b332e9840bf4147", +"ad2\",\n \"name\" : \"0x9c3bc646c377bd9d69", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 655900000\n}, \n{\n \"ETH_account\" : \"", +"0x0ec07259e0cec1a4894c0c475da711701a03af", +"33\",\n \"name\" : \"0x0ec07259e0cec1a489\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2369000000\n}, \n{\n \"ETH_account\" : \"", +"0x1b0b84ea6630cbc52a37a740631c03bbc288c0", +"97\",\n \"name\" : \"0x1b0b84ea6630cbc52a\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 217500000\n}, \n{\n \"ETH_account\" : \"0", +"x4fdbd246709aed85296a519bd745d402ee9d154", +"7\",\n \"name\" : \"0x4fdbd246709aed8529\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 162000000\n}, \n{\n \"ETH_account\" : \"0x", +"5261c269f05a2c63aa487de7edcec9ebc6f24b7e", +"\",\n \"name\" : \"0x5261c269f05a2c63aa\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"8554000000\n}, \n{\n \"ETH_account\" : \"0x", +"f16ecff49beda9173104f1a958f49cee6d9cbe59", +"\",\n \"name\" : \"0xf16ecff49beda91731\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"4132000000\n}, \n{\n \"ETH_account\" : \"0x", +"aafcf8cd57eafafefa366c391f961cf1fe20c511", +"\",\n \"name\" : \"0xaafcf8cd57eafafefa\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"906558600\n}, \n{\n \"ETH_account\" : \"0xf", +"d4fb1da00f55acce00f30462280f409b65d4547\"", +",\n \"name\" : \"atubester\",\n \"publicK", +"ey\" : \"SPH4x99eEM9dSiYb7sCznxdNGKKS9gdYy", +"n6bmgTfeZZviwzsnhaed\",\n \"balance\" : 2", +"900000000\n}, \n{\n \"ETH_account\" : \"0x6", +"c595d25c2f1d1bb0f29d66e3d983beb341a9206\"", +",\n \"name\" : \"0x6c595d25c2f1d1bb0f\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"0000000000\n}, \n{\n \"ETH_account\" : \"0x", +"3946e472d72e839254322950fe2b0c00197f0bd4", +"\",\n \"name\" : \"0x3946e472d72e839254\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"517600000\n}, \n{\n \"ETH_account\" : \"0xe", +"c4933599311ff8821b98b912a024bad21ecb99b\"", +",\n \"name\" : \"sphtxkucai\",\n \"public", +"Key\" : \"SPH88vGHJsyjvX48ecQqvE5kXC4tHXY6", +"jD5AmY78TNiFiRvvTLzLw\",\n \"balance\" : ", +"110000000\n}, \n{\n \"ETH_account\" : \"0x7", +"374a8bd19b9e1a82256cd983367f803f6734e13\"", +",\n \"name\" : \"0x7374a8bd19b9e1a822\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"605000000\n}, \n{\n \"ETH_account\" : \"0x2", +"7735bff4e2ae8963b2804e729c6e07e889c8689\"", +",\n \"name\" : \"0x27735bff4e2ae8963b\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"005000000\n}, \n{\n \"ETH_account\" : \"0x0", +"7a6c8acb4d6d7231e307718117298e22c922a08\"", +",\n \"name\" : \"0x07a6c8acb4d6d7231e\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"49000000\n}, \n{\n \"ETH_account\" : \"0x11", +"eb43ba18f65ea452b0ad18d3ae9433ad094fe8\",", +"\n \"name\" : \"0x11eb43ba18f65ea452\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 12", +"1000000\n}, \n{\n \"ETH_account\" : \"0x2ae", +"d6407faa8b9ae4789ed5a96f86d74fdad5ff2\",\n", +" \"name\" : \"0x2aed6407faa8b9ae47\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 750", +"000000\n}, \n{\n \"ETH_account\" : \"0x5dfc", +"08372b554aeb167ed9dc55c999e913503826\",\n ", +" \"name\" : \"0x5dfc08372b554aeb16\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2122", +"909200\n}, \n{\n \"ETH_account\" : \"0x8044", +"94f840e4385b4d539d3067bc76d225a67918\",\n ", +" \"name\" : \"0x804494f840e4385b4d\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1735", +"000000\n}, \n{\n \"ETH_account\" : \"0x4d79", +"f083eb2d42295bfb5cbbb452e38df898c283\",\n ", +" \"name\" : \"0x4d79f083eb2d42295b\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1225", +"000000\n}, \n{\n \"ETH_account\" : \"0xbdcf", +"cb0eff5433505ec8b233d76fe1391a16ad0c\",\n ", +" \"name\" : \"0xbdcfcb0eff5433505e\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2000", +"0000\n}, \n{\n \"ETH_account\" : \"0x7a1c80", +"5551e726b10e658c90f2c4b39da26324f8\",\n ", +" \"name\" : \"0x7a1c805551e726b10e\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 246417", +"6400\n}, \n{\n \"ETH_account\" : \"0x93f7cb", +"21d6904492b33e0df24008c8b13ce64380\",\n ", +" \"name\" : \"0x93f7cb21d6904492b3\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 562164", +"9400\n}, \n{\n \"ETH_account\" : \"0x3e38b1", +"fb859a4b7d79e53d67ba09a691eedfead6\",\n ", +" \"name\" : \"0x3e38b1fb859a4b7d79\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 200000", +"00\n}, \n{\n \"ETH_account\" : \"0x886c8008", +"4a472e7db8259dbfc410350c3711a8ca\",\n \"", +"name\" : \"politraille\",\n \"publicKey\" :", +" \"SPH7fTDZEeyFh3FjdRR9qXynEgWBiN28RVY3DT", +"QUcSDbW28NjeCzW\",\n \"balance\" : 298000", +"000\n}, \n{\n \"ETH_account\" : \"0xa61e8ec", +"cb578e3158f1f2613607dca5170912d93\",\n ", +"\"name\" : \"0xa61e8eccb578e3158f\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4432400", +"00\n}, \n{\n \"ETH_account\" : \"0xab5c4971", +"4a06ad76ddaa82e8381f97d8c07f4f2c\",\n \"", +"name\" : \"0xab5c49714a06ad76dd\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 21652189", +"000\n}, \n{\n \"ETH_account\" : \"0x1253132", +"c7cf027fc4ddc312324a574324c127fd4\",\n ", +"\"name\" : \"0x1253132c7cf027fc4d\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 6147410", +"000\n}, \n{\n \"ETH_account\" : \"0x8ed86fa", +"e1ceefddda0f19cfa74adbfa34587b565\",\n ", +"\"name\" : \"0x8ed86fae1ceefddda0\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2510335", +"50\n}, \n{\n \"ETH_account\" : \"0xaeb8247f", +"a0bf6abdbbb2147b3cd4e3e7db64887b\",\n \"", +"name\" : \"0xaeb8247fa0bf6abdbb\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 35900000", +"0\n}, \n{\n \"ETH_account\" : \"0x6435e7611", +"ba98a3885425f326875b1f014574bf9\",\n \"n", +"ame\" : \"0x6435e7611ba98a3885\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 200000000", +"0\n}, \n{\n \"ETH_account\" : \"0xdb6131b08", +"8d31a8806338fdf2129b8080b51eafc\",\n \"n", +"ame\" : \"0xdb6131b088d31a8806\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 187897951", +"00\n}, \n{\n \"ETH_account\" : \"0x4f23501b", +"03a2d6f1649378d83d1b77f634c461b5\",\n \"", +"name\" : \"0x4f23501b03a2d6f164\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 55662519", +"00\n}, \n{\n \"ETH_account\" : \"0x3ecc3e9c", +"7a10924f48cca5c2e04507db0df06517\",\n \"", +"name\" : \"0x3ecc3e9c7a10924f48\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10658620", +"0\n}, \n{\n \"ETH_account\" : \"0xa5ce17d40", +"9c0c7f06c82ab9c9984dce8307e5d9d\",\n \"n", +"ame\" : \"0xa5ce17d409c0c7f06c\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 657000000", +"\n}, \n{\n \"ETH_account\" : \"0x375035ccbc", +"becdcc1d7416b0c9339497b709f456\",\n \"na", +"me\" : \"0x375035ccbcbecdcc1d\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2459000000", +"\n}, \n{\n \"ETH_account\" : \"0x8854b99a42", +"c91ed4d498d0890614111634cccd85\",\n \"na", +"me\" : \"0x8854b99a42c91ed4d4\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 710000000\n", +"}, \n{\n \"ETH_account\" : \"0x94c5ff7feaa", +"51d604142c77ccbc941f7e7e131a1\",\n \"nam", +"e\" : \"0x94c5ff7feaa51d6041\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 137297900\n}", +", \n{\n \"ETH_account\" : \"0x14917dc63ed4", +"ffc57c3bcc91c871d445fdacd682\",\n \"name", +"\" : \"0x14917dc63ed4ffc57c\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 9999\n}, \n{\n ", +" \"ETH_account\" : \"0x641f34c5cde9cc7575", +"4edb6e29485f88457195ec\",\n \"name\" : \"0", +"x641f34c5cde9cc7575\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 277739200\n}, \n{\n ", +" \"ETH_account\" : \"0x299f96a04a2bc6fc1e9", +"ab644260a563307d10c25\",\n \"name\" : \"0x", +"299f96a04a2bc6fc1e\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 2013000000\n}, \n{\n ", +" \"ETH_account\" : \"0x308ec9fb1568153d344", +"28e5da2cb973fd3dfbb1b\",\n \"name\" : \"0x", +"308ec9fb1568153d34\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1131030000\n}, \n{\n ", +" \"ETH_account\" : \"0x4f5372d408bff4629f3", +"e9cf84e864efc020bfaed\",\n \"name\" : \"0x", +"4f5372d408bff4629f\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 361000000\n}, \n{\n ", +" \"ETH_account\" : \"0x14fa7df9975665cd2f7f", +"adc4bea507a1df499fbe\",\n \"name\" : \"0x1", +"4fa7df9975665cd2f\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 108010000\n}, \n{\n ", +"\"ETH_account\" : \"0xb2c89c59c6512068e5683", +"974825f8ed2f5ef4171\",\n \"name\" : \"0xb2", +"c89c59c6512068e5\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 2120526800\n}, \n{\n ", +"\"ETH_account\" : \"0x76a257239450042d6c120", +"5d545164ac586832f17\",\n \"name\" : \"0x76", +"a257239450042d6c\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 13900000000\n}, \n{\n ", +" \"ETH_account\" : \"0xaca8fbbdddfce169114f", +"344d8ee739bde665f4f4\",\n \"name\" : \"0xa", +"ca8fbbdddfce16911\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 24440000\n}, \n{\n \"", +"ETH_account\" : \"0xc0b87e20fac91035eeaa09", +"ce64061e7db8a5df3e\",\n \"name\" : \"0xc0b", +"87e20fac91035ee\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 3308000000\n}, \n{\n \"", +"ETH_account\" : \"0xf221106534b950bfe08a18", +"9604a4efdf50b807dd\",\n \"name\" : \"0xf22", +"1106534b950bfe0\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1076705153\n}, \n{\n \"", +"ETH_account\" : \"0x22eb23e17560bcdc96d113", +"1845994da6ac24c2d5\",\n \"name\" : \"0x22e", +"b23e17560bcdc96\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 290230000\n}, \n{\n \"E", +"TH_account\" : \"0xed9ed99afec50e813a39373", +"449fc23768b28eae0\",\n \"name\" : \"0xed9e", +"d99afec50e813a\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 592000000\n}, \n{\n \"ET", +"H_account\" : \"0xa82b287ea831ec2a83a4f0c0", +"95ef9293c1ae97b0\",\n \"name\" : \"0xa82b2", +"87ea831ec2a83\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 573000000\n}, \n{\n \"ETH", +"_account\" : \"0x2c9a708fc11ec4f88ff9b55fc", +"b1df6d727de0397\",\n \"name\" : \"leonvdvl", +"iet\",\n \"publicKey\" : \"SPH8jtUBnjVNwZg", +"v3TB2y17MsCKUuWXFePoMj8BvWyNmy8TSY6Sx7\",", +"\n \"balance\" : 4192000000\n}, \n{\n \"E", +"TH_account\" : \"0xd300e59e0b6096f000269c7", +"8f4ed1b41e76159fd\",\n \"name\" : \"0xd300", +"e59e0b6096f000\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 8018699400\n}, \n{\n \"E", +"TH_account\" : \"0x8bfa0c3602e2356ec8b45c6", +"d8c1c4435a7e70fca\",\n \"name\" : \"0x8bfa", +"0c3602e2356ec8\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 509660000\n}, \n{\n \"ET", +"H_account\" : \"0xde39ee1d583808aa4cb542de", +"b751036d9b4c4802\",\n \"name\" : \"0xde39e", +"e1d583808aa4c\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 5000928160\n}, \n{\n \"ET", +"H_account\" : \"0x0503838148bf01120f47f679", +"a6043ac6ac7ba591\",\n \"name\" : \"snowbal", +"l\",\n \"publicKey\" : \"SPH6JZvEZWbBYFiXS", +"6SrRuzyvK5rWBHzcjQCSR1Qczw8j3izLsWGz\",\n ", +" \"balance\" : 25000000000\n}, \n{\n \"ET", +"H_account\" : \"0x536cf53eead164874e91fbed", +"c0eee267fe10eb32\",\n \"name\" : \"nihzyx5", +"g7\",\n \"publicKey\" : \"SPH8hYvk3finYKaQ", +"MwLbcGwgaurjghroo9xG7tDT9LKDaaF6Rekq7\",\n", +" \"balance\" : 50000000000\n}, \n{\n \"E", +"TH_account\" : \"0xe51306557529a866a2dcf53", +"f7f233e3a8908501f\",\n \"name\" : \"0xe513", +"06557529a866a2\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 95000000000\n}, \n{\n \"", +"ETH_account\" : \"0xc1c825747359dcb3d5516f", +"369e535ce7853d5062\",\n \"name\" : \"0xc1c", +"825747359dcb3d5\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 10254704538\n}, \n{\n ", +"\"ETH_account\" : \"0xb2166830097d4b49a8313", +"620491171899b335a71\",\n \"name\" : \"0xb2", +"166830097d4b49a8\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 400999999\n}, \n{\n \"", +"ETH_account\" : \"0xc63b0d887ed0335699354d", +"b687c5fa0b37cb0d96\",\n \"name\" : \"0xc63", +"b0d887ed0335699\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 5200000000\n}, \n{\n \"", +"ETH_account\" : \"0x795df9a9699b399ffc5127", +"32d2c797c781c22bc7\",\n \"name\" : \"0x795", +"df9a9699b399ffc\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 194\n}, \n{\n \"ETH_acc", +"ount\" : \"0xa34a6180e91419409761f00939d0d", +"ec8e3c74003\",\n \"name\" : \"0xa34a6180e9", +"14194097\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 442000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xd51b1392451b433d20fc6e2044954a", +"6ea3dc40bd\",\n \"name\" : \"0xd51b1392451", +"b433d20\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 732920721\n}, \n{\n \"ETH_accou", +"nt\" : \"0xae49d628583177ed5d26b756cbbc4cc", +"e67b27a3d\",\n \"name\" : \"0xae49d6285831", +"77ed5d\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 112983000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x0732c39fdaa683be8109e1cd541854cb", +"ae7a91e7\",\n \"name\" : \"0x0732c39fdaa68", +"3be81\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 80535013\n}, \n{\n \"ETH_account\"", +" : \"0x647776295b2407e41c9b15ad66644977e7", +"8d0fa2\",\n \"name\" : \"0x647776295b2407e", +"41c\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 10000000\n}, \n{\n \"ETH_account\" :", +" \"0xf08754bdb369268d5890484bfc6274d6a824", +"877c\",\n \"name\" : \"0xf08754bdb369268d5", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 250000000\n}, \n{\n \"ETH_account\" : ", +"\"0xb65406c3bb36f443aeb2bf3b88e2a47ca7e7b", +"88e\",\n \"name\" : \"0xb65406c3bb36f443ae", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1500000000\n}, \n{\n \"ETH_account\" : ", +"\"0x846fb111b9bc2d2b6985ce2bae821c6d8c91b", +"ea1\",\n \"name\" : \"0x846fb111b9bc2d2b69", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 102742722\n}, \n{\n \"ETH_account\" : \"", +"0x4860e6f7241bf9a45e2b3b60b8ff2231c8123a", +"af\",\n \"name\" : \"0x4860e6f7241bf9a45e\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 720000000\n}, \n{\n \"ETH_account\" : \"0", +"xe7626ebdbdd9fd42d3e53383aa98695472ab461", +"0\",\n \"name\" : \"0xe7626ebdbdd9fd42d3\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 220947729\n}, \n{\n \"ETH_account\" : \"0x", +"f3616a5b57e3d69b7e09305bf836867ef5799dfb", +"\",\n \"name\" : \"0xf3616a5b57e3d69b7e\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"280000000\n}, \n{\n \"ETH_account\" : \"0x3", +"1d8ea2d87433df394719d41756f67c9c58fc9dc\"", +",\n \"name\" : \"0x31d8ea2d87433df394\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 9", +"02\n}, \n{\n \"ETH_account\" : \"0xeb2a45e7", +"d59bec16776b59f61e01e8930ed45d83\",\n \"", +"name\" : \"0xeb2a45e7d59bec1677\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 17920000", +"00\n}, \n{\n \"ETH_account\" : \"0x15b96012", +"f1dd89cfed1c901c1b855acd4fefa17e\",\n \"", +"name\" : \"0x15b96012f1dd89cfed\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 30000231", +"650\n}, \n{\n \"ETH_account\" : \"0x3ef14d5", +"f309e0f0d2b23f07f581354d8f8621dd0\",\n ", +"\"name\" : \"0x3ef14d5f309e0f0d2b\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1992000", +"000\n}, \n{\n \"ETH_account\" : \"0x8a2a0d4", +"0a154cdac82e4b0b271fcb67317e94f44\",\n ", +"\"name\" : \"birdy\",\n \"publicKey\" : \"SPH", +"6oX9hFSZuVbfidBEGu4inrSrwVPN3ZYvpE9XAjkT", +"kis1hryPkU\",\n \"balance\" : 500000000\n}", +", \n{\n \"ETH_account\" : \"0x1e7c26a52918", +"eadb261ca69c2ca756a6c0fa2439\",\n \"name", +"\" : \"0x1e7c26a52918eadb26\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1300000000\n}", +", \n{\n \"ETH_account\" : \"0x801270adbc86", +"408997c270652667b2bdeb77fc15\",\n \"name", +"\" : \"0x801270adbc86408997\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 348393743\n},", +" \n{\n \"ETH_account\" : \"0xd5a0ddc660942", +"4cdfc2daa46b2096370be5b3bd6\",\n \"name\"", +" : \"0xd5a0ddc6609424cdfc\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 97850000\n}, \n", +"{\n \"ETH_account\" : \"0xaa994e50ca9dccc", +"1c5feb3b6da1c8077df33642a\",\n \"name\" :", +" \"nasimsophia\",\n \"publicKey\" : \"SPH6w", +"aJvcFFefF6uBAXJp68uirMGs4NEtous8Q7F2kp9s", +"wipDwNcM\",\n \"balance\" : 261123233\n}, ", +"\n{\n \"ETH_account\" : \"0x3d830d759cad45", +"ea153bd6d2d0151b03ec5dbe69\",\n \"name\" ", +": \"0x3d830d759cad45ea15\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1181000000\n}, ", +"\n{\n \"ETH_account\" : \"0x124b5c5e163311", +"cef45adeac638f7dd9a50feb9e\",\n \"name\" ", +": \"abc\",\n \"publicKey\" : \"SPH5WSdiZtMv", +"Kx1FDqxqYhrVFjxVe6GxZtQXBUGyfwTBJMr4j8cQ", +"S\",\n \"balance\" : 262387289764\n}, \n{\n ", +" \"ETH_account\" : \"0x74b4dfd21e3ab5eb81", +"49658a7c4a1d1269023b29\",\n \"name\" : \"0", +"x74b4dfd21e3ab5eb81\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 194678680\n}, \n{\n ", +" \"ETH_account\" : \"0x13e3f1f6a84f3914f11", +"c1cb3932989b7ca13ea96\",\n \"name\" : \"0x", +"13e3f1f6a84f3914f1\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 40000000\n}, \n{\n ", +"\"ETH_account\" : \"0xff595ee5bdba20ba82453", +"e3046e01740153d2efe\",\n \"name\" : \"0xff", +"595ee5bdba20ba82\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 248000000\n}, \n{\n \"", +"ETH_account\" : \"0x8c43c1dced72f13b5ab5a1", +"66accf6d9110f03953\",\n \"name\" : \"0x8c4", +"3c1dced72f13b5a\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 575000000\n}, \n{\n \"E", +"TH_account\" : \"0xaf99eff7dfcf5952a7873d1", +"011ebfe1c21cfa007\",\n \"name\" : \"0xaf99", +"eff7dfcf5952a7\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 200000000\n}, \n{\n \"ET", +"H_account\" : \"0x600c275c51c2d6de5139391d", +"13cf0709efbc25ca\",\n \"name\" : \"0x600c2", +"75c51c2d6de51\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 745107676\n}, \n{\n \"ETH", +"_account\" : \"0x4b7186e044fc39580ceaa492f", +"d3b8146e6fd5d0b\",\n \"name\" : \"0x4b7186", +"e044fc39580c\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 500000000\n}, \n{\n \"ETH_", +"account\" : \"0x3bd82f773a7dcef888d6b820e6", +"c3ad566f8f15ec\",\n \"name\" : \"0x3bd82f7", +"73a7dcef888\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 129000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xe78eeeb83b3851a109bda3c723e", +"fbfd8d67798c4\",\n \"name\" : \"0xe78eeeb8", +"3b3851a109\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 848660000\n}, \n{\n \"ETH_ac", +"count\" : \"0x26d469193a79533638c4a8c48187", +"217af37502e3\",\n \"name\" : \"0x26d469193", +"a79533638\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 345000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x5afa760ab04ece8c7c6033eb37cf7", +"b297414d66f\",\n \"name\" : \"0x5afa760ab0", +"4ece8c7c\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 5734649338\n}, \n{\n \"ETH_acc", +"ount\" : \"0x52f65bdeada824d8a1424fc0acad6", +"3fad114d09c\",\n \"name\" : \"dale\",\n \"", +"publicKey\" : \"SPH6cQQZaS6oN5ZSrUwGjiMAMP", +"PJ1yeN31jSUx1WcKUrStVpv3n91\",\n \"balan", +"ce\" : 88906439922\n}, \n{\n \"ETH_account", +"\" : \"0xe5dc9e1254755baa115bbf6f69881454d", +"027f9c9\",\n \"name\" : \"0xe5dc9e1254755b", +"aa11\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 2000000000\n}, \n{\n \"ETH_account", +"\" : \"0x7b3b8d9f3e3ec94dadd7a890a2835f1fc", +"38c34db\",\n \"name\" : \"0x7b3b8d9f3e3ec9", +"4dad\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 163000000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xef126394b7d0452ee864a1117cf6835", +"b5ad1837d\",\n \"name\" : \"0xef126394b7d0", +"452ee8\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1215250842\n}, \n{\n \"ETH_accou", +"nt\" : \"0x0b303152a9d22e0154a1fcb827d74a3", +"dc65e3299\",\n \"name\" : \"0x0b303152a9d2", +"2e0154\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 530127536\n}, \n{\n \"ETH_accoun", +"t\" : \"0x028360a018ec712ced64052b9af87b9c", +"fa8791d8\",\n \"name\" : \"0x028360a018ec7", +"12ced\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 2000000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x3b0899f81f2dc9d7d25c7251e979ef4e", +"89e3c75b\",\n \"name\" : \"0x3b0899f81f2dc", +"9d7d2\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 117363569500\n}, \n{\n \"ETH_acco", +"unt\" : \"0x0d4f98cb588c18fcc2695e2341112f", +"066a915f80\",\n \"name\" : \"0x0d4f98cb588", +"c18fcc2\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 67400\n}, \n{\n \"ETH_account\" ", +": \"0x64fc2f7f5e6bacebb35083d1a53a04549a0", +"df82e\",\n \"name\" : \"0x64fc2f7f5e6baceb", +"b3\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 147000000\n}, \n{\n \"ETH_account\" :", +" \"0x6b2b542b2f63042f5352bfd589f34cce00a5", +"b134\",\n \"name\" : \"0x6b2b542b2f63042f5", +"3\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 99000000\n}, \n{\n \"ETH_account\" : \"", +"0x5cffe8c8a89d2e98ed90c5080a562e15246c4d", +"8e\",\n \"name\" : \"0x5cffe8c8a89d2e98ed\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1250000000\n}, \n{\n \"ETH_account\" : \"", +"0xb0cadc95f1b0f6791e190cbc3c54826ca1fdee", +"d5\",\n \"name\" : \"0xb0cadc95f1b0f6791e\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 443179300\n}, \n{\n \"ETH_account\" : \"0", +"x72f114e13f82e6fb04f9d084591c629c5bf49a2", +"e\",\n \"name\" : \"timimerohaina\",\n \"p", +"ublicKey\" : \"SPH8FiouSXyfVjKn3cBwsSen1hT", +"m2Bs5pXDUi8aEEWMJAgp4gJzAY\",\n \"balanc", +"e\" : 800000000\n}, \n{\n \"ETH_account\" :", +" \"0x1bea8d12cd65a093777823c694b6d6db3eda", +"2853\",\n \"name\" : \"0x1bea8d12cd65a0937", +"7\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1481000000\n}, \n{\n \"ETH_account\" :", +" \"0x2f8ca324aecf1d3a0de9a5a87ba29a03fd3e", +"7551\",\n \"name\" : \"0x2f8ca324aecf1d3a0", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 315000000\n}, \n{\n \"ETH_account\" : ", +"\"0x4b84f7b35d75b96131cfa723f65bbb6563fa9", +"f61\",\n \"name\" : \"0x4b84f7b35d75b96131", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 979000000\n}, \n{\n \"ETH_account\" : \"", +"0xc8ebd06baf02644f9fe52ce53c79c5c013b87e", +"68\",\n \"name\" : \"0xc8ebd06baf02644f9f\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 500000000\n}, \n{\n \"ETH_account\" : \"0", +"xb472e43c649763d6c1e6b19da48214303480dfe", +"a\",\n \"name\" : \"0xb472e43c649763d6c1\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 500000000\n}, \n{\n \"ETH_account\" : \"0x", +"cc91e891b427f986aa64301a8e00acaf44ef9f1b", +"\",\n \"name\" : \"jorgesophia\",\n \"publ", +"icKey\" : \"SPH62wmKNsHravhzKav4dhAk9jZYVq", +"H8rVTAkV1ERAuV2nWtvBaUN\",\n \"balance\" ", +": 6761550000\n}, \n{\n \"ETH_account\" : \"", +"0x6a9692043df6b406b1135f44d59646695db55f", +"c2\",\n \"name\" : \"0x6a9692043df6b406b1\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2520000000\n}, \n{\n \"ETH_account\" : \"", +"0x5f58d619ae9714743fd0cc2bdd5b871d6a44c6", +"80\",\n \"name\" : \"larseelman\",\n \"pub", +"licKey\" : \"SPH8SMbZWT9PQyhtPABKtNrSgcSVk", +"6mhQhckgfVeEN1dRvoknoi3x\",\n \"balance\"", +" : 287000000\n}, \n{\n \"ETH_account\" : \"", +"0xf134597292adeb19827f0c49c4f2f1ff47aef4", +"59\",\n \"name\" : \"katsdingo\",\n \"publ", +"icKey\" : \"SPH5aTh6v66x53rHz7Uf3fUNLTMg7e", +"YS6vQSVNSdWYq9YNk1hJ9Ya\",\n \"balance\" ", +": 3500000000\n}, \n{\n \"ETH_account\" : \"", +"0x21c98265e349ce838fee2b13f50c151804da5c", +"1e\",\n \"name\" : \"0x21c98265e349ce838f\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 44000000\n}, \n{\n \"ETH_account\" : \"0x", +"e5696fa700d19d6b225b7623a25a4a553c0e0378", +"\",\n \"name\" : \"0xe5696fa700d19d6b22\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"2127000000\n}, \n{\n \"ETH_account\" : \"0x", +"519b5390306ebb33b78e5693d2fd38558ed74409", +"\",\n \"name\" : \"0x519b5390306ebb33b7\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"20000000\n}, \n{\n \"ETH_account\" : \"0x0f", +"9963c549f950b550d0acdabcb6c017ba52ca07\",", +"\n \"name\" : \"mysphtxclaim\",\n \"publi", +"cKey\" : \"SPH6ynx3CE7MPuKGZEKXDuf3YQQvL4C", +"oxVaPX7JqCjZLDNxycqe4C\",\n \"balance\" :", +" 2538593786\n}, \n{\n \"ETH_account\" : \"0", +"xe37ae7d66cf1cfe2c953306b8105eac0633d35d", +"d\",\n \"name\" : \"sptsmbteam\",\n \"publ", +"icKey\" : \"SPH5c2PwTV1LF71GXYGrQZcYbvF4Xp", +"3GHjwAZvzuadQkPjiL1wpBR\",\n \"balance\" ", +": 2780000000\n}, \n{\n \"ETH_account\" : \"", +"0x72d0f6acaa4ae67c57bbf6835eba92ad977bb8", +"06\",\n \"name\" : \"0x72d0f6acaa4ae67c57\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 73863600\n}, \n{\n \"ETH_account\" : \"0x", +"a95d7a86077289275ab4ac3c8f94ec09ab6627c0", +"\",\n \"name\" : \"0xa95d7a86077289275a\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"3191680000\n}, \n{\n \"ETH_account\" : \"0x", +"116ecfc854bd978465f3ed4aa1e4e52247c148fc", +"\",\n \"name\" : \"0x116ecfc854bd978465\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"4364482100\n}, \n{\n \"ETH_account\" : \"0x", +"dbddef22e2a1470b66f0692684fbeed1e0c09020", +"\",\n \"name\" : \"0xdbddef22e2a1470b66\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"701000000\n}, \n{\n \"ETH_account\" : \"0x0", +"4751a6242105b07182f90760e3d497aa51bbfaf\"", +",\n \"name\" : \"0x04751a6242105b0718\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"0000000\n}, \n{\n \"ETH_account\" : \"0xfa7", +"7162071d04df1369bd5a177825b957cb6376c\",\n", +" \"name\" : \"0xfa77162071d04df136\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 950", +"000000\n}, \n{\n \"ETH_account\" : \"0x3b01", +"8bee0e941a2d1b6922e760596963ce9f6cbb\",\n ", +" \"name\" : \"0x3b018bee0e941a2d1b\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5959", +"30215\n}, \n{\n \"ETH_account\" : \"0x6f5f4", +"79e0b987937b7e2ebe6b9667849ccbb72fc\",\n ", +" \"name\" : \"0x6f5f479e0b987937b7\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 22300", +"0000\n}, \n{\n \"ETH_account\" : \"0xcb1fa0", +"343453176eb190831e67cffaf445e37a51\",\n ", +" \"name\" : \"0xcb1fa0343453176eb1\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 200000", +"0000\n}, \n{\n \"ETH_account\" : \"0xcb2bc7", +"1072f899423767e6416517b120568220a4\",\n ", +" \"name\" : \"0xcb2bc71072f8994237\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 150000", +"0000\n}, \n{\n \"ETH_account\" : \"0xe5fe09", +"78c2eb68ec070119498d83283062fbdd51\",\n ", +" \"name\" : \"0xe5fe0978c2eb68ec07\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 700000", +"000\n}, \n{\n \"ETH_account\" : \"0x5f12dc9", +"62c2d5ba6c4958b3fe669cf544874873f\",\n ", +"\"name\" : \"0x5f12dc962c2d5ba6c4\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 3750000", +"00\n}, \n{\n \"ETH_account\" : \"0x7613075a", +"de88e988269a80d7689cec1c66c8b3bf\",\n \"", +"name\" : \"dgazek\",\n \"publicKey\" : \"SPH", +"5kVL6pb8NcZ3QrTaMVvuQ1z9aebSHPBFYZgAK7bi", +"YP7QPM9YSo\",\n \"balance\" : 349487000\n}", +", \n{\n \"ETH_account\" : \"0x1e26e33f4efa", +"edad6343a8e6eeeb448c5fb41f7b\",\n \"name", +"\" : \"0x1e26e33f4efaedad63\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 102000000\n},", +" \n{\n \"ETH_account\" : \"0x44bb7426c1bff", +"cc8e8e359bef8ae3682bbd825a1\",\n \"name\"", +" : \"0x44bb7426c1bffcc8e8\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1000000000\n},", +" \n{\n \"ETH_account\" : \"0xf05661a07b4bd", +"5cef9a053f75f03e0ef955144e8\",\n \"name\"", +" : \"0xf05661a07b4bd5cef9\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 346573293\n}, ", +"\n{\n \"ETH_account\" : \"0x6965298bed7782", +"f6ba42e9fdaac42b060da9a9a1\",\n \"name\" ", +": \"0x6965298bed7782f6ba\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 448000000\n}, \n", +"{\n \"ETH_account\" : \"0x23d85abe1ee598e", +"e8827baa93af5407d16852397\",\n \"name\" :", +" \"guffsop\",\n \"publicKey\" : \"SPH599HcD", +"Awry3KEcoJS78CHzduguzRU7TaYrUcHFvcVcpHQo", +"6idw\",\n \"balance\" : 1250000000\n}, \n{\n", +" \"ETH_account\" : \"0xee04a72283fe28f43", +"55ca5b4ee077577d51f73a5\",\n \"name\" : \"", +"0xee04a72283fe28f435\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 200000000\n}, \n{\n ", +" \"ETH_account\" : \"0xf49e08c51b50b75baf", +"13e136e1ac979a9b771caa\",\n \"name\" : \"0", +"xf49e08c51b50b75baf\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 100000000\n}, \n{\n ", +" \"ETH_account\" : \"0x4b5ef60808b51efce2d", +"0de86ba80d33aa7cec3d4\",\n \"name\" : \"0x", +"4b5ef60808b51efce2\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 3700000000\n}, \n{\n ", +" \"ETH_account\" : \"0xb9c580a2000e50cb435", +"240294aed7b40e3322273\",\n \"name\" : \"0x", +"b9c580a2000e50cb43\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 17682000000\n}, \n{\n ", +" \"ETH_account\" : \"0x869d3144f00da23667", +"3a7a94e9e3b5f8ffd2e3eb\",\n \"name\" : \"0", +"x869d3144f00da23667\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 7738950000\n}, \n{\n ", +" \"ETH_account\" : \"0x491ebe1bd6cd3f3d8d", +"4228d97afae336fb0ab150\",\n \"name\" : \"m", +"ades\",\n \"publicKey\" : \"SPH6CHcxWLbD6a", +"HjCW7WiJpX7J7hLQgASe469yHzKwzgotAURPEgx\"", +",\n \"balance\" : 20998926956\n}, \n{\n ", +"\"ETH_account\" : \"0x054a49f13fcf9d129158a", +"fa07bd86c14132ee95f\",\n \"name\" : \"0x05", +"4a49f13fcf9d1291\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 25000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x5ecb57064ea39fcbd8bd", +"ed4287f2b27e23381c4e\",\n \"name\" : \"0x5", +"ecb57064ea39fcbd8\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 14400000000\n}, \n{\n ", +" \"ETH_account\" : \"0x6015548919179659286", +"9a45a478e4f7ffe718267\",\n \"name\" : \"0x", +"601554891917965928\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1111000000\n}, \n{\n ", +" \"ETH_account\" : \"0xafe5650842c688ae7df", +"378cde299e85139a66adf\",\n \"name\" : \"0x", +"afe5650842c688ae7d\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 250000000\n}, \n{\n ", +" \"ETH_account\" : \"0x72dff9ed873b5f13f9f2", +"7361703030f7c764f161\",\n \"name\" : \"0x7", +"2dff9ed873b5f13f9\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 21302734687\n}, \n{\n ", +" \"ETH_account\" : \"0xeb28706496f57ee5af7", +"d6f78c24bd2f350ade045\",\n \"name\" : \"0x", +"eb28706496f57ee5af\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1189660000\n}, \n{\n ", +" \"ETH_account\" : \"0x86c2f089605bf49cfd2", +"f5d1e68a30bcf6d47e4e1\",\n \"name\" : \"0x", +"86c2f089605bf49cfd\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 218852582\n}, \n{\n ", +" \"ETH_account\" : \"0x614087c679d328d6e12a", +"a82e07529856847d8b96\",\n \"name\" : \"cry", +"ptoadkt\",\n \"publicKey\" : \"SPH7FPhpmWW", +"XwswZeLAXsVJyZiyeMLsTxgtFPZ2UUCkJ4sVR3cX", +"27\",\n \"balance\" : 1159684231\n}, \n{\n ", +" \"ETH_account\" : \"0xf4e232e973f994bbb11", +"a5fbf2f6ec754e24071a6\",\n \"name\" : \"0x", +"f4e232e973f994bbb1\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 500000000\n}, \n{\n ", +" \"ETH_account\" : \"0xb0e4a6315fc4f1d00ef6", +"ddf90d8c104e15e00814\",\n \"name\" : \"0xb", +"0e4a6315fc4f1d00e\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 3909462660\n}, \n{\n ", +" \"ETH_account\" : \"0xf71ffc433df3a137c9c0", +"a5cf08fcc3e4316e4e8e\",\n \"name\" : \"0xf", +"71ffc433df3a137c9\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 10549999999\n}, \n{\n ", +" \"ETH_account\" : \"0x2fd37a0ab03340a4d9d", +"a222d4acaa8e2c7fe8c72\",\n \"name\" : \"ws", +"peelman\",\n \"publicKey\" : \"SPH7wgP8tcF", +"NTTr1fW8EEF52n47nBGW4u6ppJnNSoP2SAFkYCy9", +"G9\",\n \"balance\" : 311723521\n}, \n{\n ", +" \"ETH_account\" : \"0x6dbf3b3730235108fbc8", +"032fb296e38ff19e64e0\",\n \"name\" : \"0x6", +"dbf3b3730235108fb\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 5100000000\n}, \n{\n ", +" \"ETH_account\" : \"0x7fd31ada6705a96e1ba1", +"a1dad7b2bd5f6aea6261\",\n \"name\" : \"eze", +"quiel\",\n \"publicKey\" : \"SPH5zEwQomgpq", +"YgB9fqwYPaaM6xbYYQJXz1kuTBjLuXRRju3Rxj4X", +" \",\n \"balance\" : 373999983\n}, \n{\n ", +"\"ETH_account\" : \"0x6fe8393cde2468ae41280", +"539b42a8d0cc5ecfb10\",\n \"name\" : \"0x6f", +"e8393cde2468ae41\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 6000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xaa2e55822fd616f94b6c2402b32", +"2060debd28e53\",\n \"name\" : \"0xaa2e5582", +"2fd616f94b\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 192664627\n}, \n{\n \"ETH_ac", +"count\" : \"0x62d684879238db8e6145c8e4e9d7", +"e14ca09ee0e6\",\n \"name\" : \"0x62d684879", +"238db8e61\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 500000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x86edb03f2b077ade1d05ba26bdd85", +"cb0228cc368\",\n \"name\" : \"0x86edb03f2b", +"077ade1d\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 103844747\n}, \n{\n \"ETH_acco", +"unt\" : \"0x42e324f877db2f3a8e908d126ebda1", +"f74fcfbec2\",\n \"name\" : \"0x42e324f877d", +"b2f3a8e\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 18612513\n}, \n{\n \"ETH_accoun", +"t\" : \"0x2a64ace34ed10c420259fd6b6f1d363a", +"37778da1\",\n \"name\" : \"0x2a64ace34ed10", +"c4202\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 321778000\n}, \n{\n \"ETH_account", +"\" : \"0x61220557c6af9fc88cd16bab42f4eb84b", +"69483cd\",\n \"name\" : \"0x61220557c6af9f", +"c88c\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 150000000\n}, \n{\n \"ETH_account\"", +" : \"0x34d602d8a5de5f59eb3aa5d065a17cc648", +"b770bd\",\n \"name\" : \"0x34d602d8a5de5f5", +"9eb\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 104993668\n}, \n{\n \"ETH_account\" ", +": \"0x92db7e8d9b281c9470749a83eeb51de21ff", +"6dde6\",\n \"name\" : \"0x92db7e8d9b281c94", +"70\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 100000000\n}, \n{\n \"ETH_account\" :", +" \"0xe45b81ea4d4aa9e7205b11f6ec9708032569", +"580b\",\n \"name\" : \"0xe45b81ea4d4aa9e72", +"0\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1219824695\n}, \n{\n \"ETH_account\" :", +" \"0xb80bfd2126d9da9b1d038eb6419a5c10fc79", +"e98e\",\n \"name\" : \"0xb80bfd2126d9da9b1", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 807278000\n}, \n{\n \"ETH_account\" : ", +"\"0x1682497844c11246b7316d426c14dd1c26b08", +"b0d\",\n \"name\" : \"french\",\n \"public", +"Key\" : \"SPH8ARDz3gtoxgHw6yL9jKHgMT4UzdKy", +"YxzDFzX4WAQBaVFTjVRTg\",\n \"balance\" : ", +"34000000\n}, \n{\n \"ETH_account\" : \"0xa7", +"eb03c9a68ae872e818f7e98157221b9b6306e7\",", +"\n \"name\" : \"botrem\",\n \"publicKey\" ", +": \"SPH69AtCkvsVMb8xtxKutTEYHZ2bmhVurHZ4J", +"o9557hmbyeYCYMgv\",\n \"balance\" : 81111", +"54860\n}, \n{\n \"ETH_account\" : \"0x42c87", +"93c3d9d36e2051b493a04fcb5e7be631a30\",\n ", +" \"name\" : \"0x42c8793c3d9d36e205\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 35185", +"51989\n}, \n{\n \"ETH_account\" : \"0xf6045", +"ac67991ce68d68e34a14ab3ebb0ec2119e2\",\n ", +" \"name\" : \"0xf6045ac67991ce68d6\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 80000", +"00\n}, \n{\n \"ETH_account\" : \"0x2d3e8835", +"d8b4ded1ec7cc168615b416a1c4af42e\",\n \"", +"name\" : \"0x2d3e8835d8b4ded1ec\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 39455188", +"9\n}, \n{\n \"ETH_account\" : \"0x1bf90b942", +"8d15cd807c117bb2facb6fc63418ea9\",\n \"n", +"ame\" : \"0x1bf90b9428d15cd807\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 358438560", +"0\n}, \n{\n \"ETH_account\" : \"0x6ff072522", +"fe6cc81acbaf666817d0081df625d81\",\n \"n", +"ame\" : \"0x6ff072522fe6cc81ac\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 372301290", +"0\n}, \n{\n \"ETH_account\" : \"0xa3f781f11", +"7b1300dd7e6da10e8b458b84f0b55d5\",\n \"n", +"ame\" : \"0xa3f781f117b1300dd7\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 316880000", +"\n}, \n{\n \"ETH_account\" : \"0xd035ddee41", +"cebd8e74b5d46da538c5532c3e0d5b\",\n \"na", +"me\" : \"0xd035ddee41cebd8e74\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 572710000\n", +"}, \n{\n \"ETH_account\" : \"0x1851aa2ec2d", +"0d752e9437dddc809918b2155ed50\",\n \"nam", +"e\" : \"0x1851aa2ec2d0d752e9\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 49811021710", +"0\n}, \n{\n \"ETH_account\" : \"0xfcd5ee518", +"5f33f3aa5ba336e050977bbbbd3100d\",\n \"n", +"ame\" : \"0xfcd5ee5185f33f3aa5\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 921000000", +"\n}, \n{\n \"ETH_account\" : \"0xfba65c729f", +"879f319ee4ec6fa172aa728042cb35\",\n \"na", +"me\" : \"0xfba65c729f879f319e\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1109671000", +"\n}, \n{\n \"ETH_account\" : \"0xc983baa671", +"cb7caf31eaf495c807e3caa9967bca\",\n \"na", +"me\" : \"0xc983baa671cb7caf31\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1123212200", +"\n}, \n{\n \"ETH_account\" : \"0xc5326696e2", +"0a040a71e4c939bb76c84759107b9c\",\n \"na", +"me\" : \"0xc5326696e20a040a71\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1351469765", +"\n}, \n{\n \"ETH_account\" : \"0x052c456530", +"4ee70185282349e3a1b7c34b96ffed\",\n \"na", +"me\" : \"0x052c4565304ee70185\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 21000000\n}", +", \n{\n \"ETH_account\" : \"0xbfccb71cc492", +"10ab8d959795a176bd46e0566d32\",\n \"name", +"\" : \"0xbfccb71cc49210ab8d\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 191000000\n},", +" \n{\n \"ETH_account\" : \"0x7cac341654367", +"5cff57abd80c44434f972ad2b6a\",\n \"name\"", +" : \"0x7cac3416543675cff5\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 2112000000\n},", +" \n{\n \"ETH_account\" : \"0xce2dce9c8ad4d", +"77bb72b192cd9bb4640380fef2a\",\n \"name\"", +" : \"0xce2dce9c8ad4d77bb7\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 114883581\n}, ", +"\n{\n \"ETH_account\" : \"0xa55ec96b20847a", +"dba81ac6034218fc1a27eb659d\",\n \"name\" ", +": \"0xa55ec96b20847adba8\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 250068000\n}, \n", +"{\n \"ETH_account\" : \"0xfd4837949ca97c8", +"3dcce937b709cabce35086914\",\n \"name\" :", +" \"0xfd4837949ca97c83dc\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 720000000000\n},", +" \n{\n \"ETH_account\" : \"0x7f3fe379a2bcd", +"4be9e9fb63825c6867ae56a01e4\",\n \"name\"", +" : \"0x7f3fe379a2bcd4be9e\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 19000000000\n}", +", \n{\n \"ETH_account\" : \"0x809b356b4e40", +"da7f3483d822595e83363921b3d5\",\n \"name", +"\" : \"macandes\",\n \"publicKey\" : \"SPH4u", +"QB5AmNMnDnKtUoXZ1VmUU85REbeWh8FFq2Gzhj9B", +"tDvLpBes\",\n \"balance\" : 25000000000\n}", +", \n{\n \"ETH_account\" : \"0x9a8145cc7c79", +"d166da4a64a8393b5c6db1bad41d\",\n \"name", +"\" : \"rxsphtx\",\n \"publicKey\" : \"SPH6ur", +"stLyWCJgS2rUXs7frTmy27QqCEuKF7FxKHv9pqUk", +"FKMQVQ8\",\n \"balance\" : 59000000\n}, \n{", +"\n \"ETH_account\" : \"0x01f9fcb8bbc7bbf6", +"5910256ed01b4bc71edd4d12\",\n \"name\" : ", +"\"pwtrsop\",\n \"publicKey\" : \"SPH7J63AL7", +"ZzUUqkAzqFvamBKKTxSDnruu24Jgbo1RSjEbwJ9S", +"zAL\",\n \"balance\" : 25000000000\n}, \n{\n", +" \"ETH_account\" : \"0x40be2bc927892aed8", +"65544abbed8081fa13f472a\",\n \"name\" : \"", +"anucik\",\n \"publicKey\" : \"SPH7QUMqc2YV", +"J1KNxZJYuSP5cBpTUqD1cdt74nap34icCVJG3gDd", +"t\",\n \"balance\" : 70484548816\n}, \n{\n ", +" \"ETH_account\" : \"0x54dcf1f348d1d059178", +"7d126300c934fb1ffc60e\",\n \"name\" : \"0x", +"54dcf1f348d1d05917\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 53660000\n}, \n{\n ", +"\"ETH_account\" : \"0xf05458bcffd0bc3e578ab", +"5064701b328c8a0d16f\",\n \"name\" : \"0xf0", +"5458bcffd0bc3e57\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 151593500\n}, \n{\n \"", +"ETH_account\" : \"0x5c267061c22f19b0e218ee", +"aa5ec69a281a0b0c40\",\n \"name\" : \"0x5c2", +"67061c22f19b0e2\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 4678341000\n}, \n{\n \"", +"ETH_account\" : \"0xd0d5a00d0b1ca2c7587898", +"2ad5c924289e6fa242\",\n \"name\" : \"0xd0d", +"5a00d0b1ca2c758\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 149\n}, \n{\n \"ETH_acc", +"ount\" : \"0xb28ad3381dd218593588716e6ee26", +"85320acef2e\",\n \"name\" : \"0xb28ad3381d", +"d2185935\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 490000\n}, \n{\n \"ETH_account", +"\" : \"0xc6deb8507a04a6eb2a6a0820632780a42", +"cae56a7\",\n \"name\" : \"0xc6deb8507a04a6", +"eb2a\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 125000000\n}, \n{\n \"ETH_account\"", +" : \"0xbe4e321fa5a8f2948bd609293911faa9be", +"da4e91\",\n \"name\" : \"0xbe4e321fa5a8f29", +"48b\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 25000000000\n}, \n{\n \"ETH_account", +"\" : \"0x99613c49b924f4dfa57c43b0b7b24e7c1", +"fbc0fa5\",\n \"name\" : \"0x99613c49b924f4", +"dfa5\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 90000000\n}, \n{\n \"ETH_account\" ", +": \"0x59145d6414ce521baac284655521fbf78ab", +"073fe\",\n \"name\" : \"nemo\",\n \"public", +"Key\" : \"SPH6LMwCHKM5eiuBzbaX3TeXDptbFoqf", +"h2ufu7SBKQMz9cddhRfat\",\n \"balance\" : ", +"25000000000\n}, \n{\n \"ETH_account\" : \"0", +"x3981a8f811fcb03734f67c4e682fe4327e575f2", +"f\",\n \"name\" : \"0x3981a8f811fcb03734\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 100000000\n}, \n{\n \"ETH_account\" : \"0x", +"30d34fb3541c159891a595bc76249a24c1ec4396", +"\",\n \"name\" : \"0x30d34fb3541c159891\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"58334721\n}, \n{\n \"ETH_account\" : \"0x6d", +"5e82563334ebdb6f6ad52b52059833bde9e831\",", +"\n \"name\" : \"0x6d5e82563334ebdb6f\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 70", +"5000000\n}, \n{\n \"ETH_account\" : \"0x84b", +"0a83cfd73cb8fc6fd2da728b1080e680bca4e\",\n", +" \"name\" : \"0x84b0a83cfd73cb8fc6\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 493", +"000000\n}, \n{\n \"ETH_account\" : \"0x9cd4", +"a35689f9d851e8dbcad3ca6399c279ee995e\",\n ", +" \"name\" : \"mardifr\",\n \"publicKey\" :", +" \"SPH6J1HbhF3fbUht3Jnav2DH8QkxDaLupz1n4r", +"uodi7j1kZG685GX\",\n \"balance\" : 550000", +"000\n}, \n{\n \"ETH_account\" : \"0xa843d16", +"378c17c2089e6c955f2967e5c173582c9\",\n ", +"\"name\" : \"0xa843d16378c17c2089\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 8125500", +"00\n}, \n{\n \"ETH_account\" : \"0x34ada297", +"9cc5ef451add5c45384add6899ad3990\",\n \"", +"name\" : \"0x34ada2979cc5ef451a\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10259190", +"000\n}, \n{\n \"ETH_account\" : \"0x9e7a45b", +"1163df6fe22f07413967ac7427444e2fa\",\n ", +"\"name\" : \"sophiatxlalafra\",\n \"publicK", +"ey\" : \"SPH5gTwy6mvvGYerGX2EKQHqJ7dyhfSXL", +"Gjgumy1bViYgWwMvD1xQ\",\n \"balance\" : 7", +"23077554\n}, \n{\n \"ETH_account\" : \"0x6c", +"8a42a3545c5fd0b2f2491363ae9922924a4933\",", +"\n \"name\" : \"0x6c8a42a3545c5fd0b2\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 17", +"92078879\n}, \n{\n \"ETH_account\" : \"0xc0", +"e3424fdc37f351818c05061e506b00798850a3\",", +"\n \"name\" : \"0xc0e3424fdc37f35181\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 90", +"1042936\n}, \n{\n \"ETH_account\" : \"0xa65", +"4aa4b25603dceb68c946d92f56f70ef14d46f\",\n", +" \"name\" : \"0xa654aa4b25603dceb6\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 474", +"905814\n}, \n{\n \"ETH_account\" : \"0x38ba", +"d34646dca957de2f66d55d3d8b89765e90f4\",\n ", +" \"name\" : \"0x38bad34646dca957de\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3180", +"60000\n}, \n{\n \"ETH_account\" : \"0x3bcc7", +"63c2e292c4883e9729623b428e98527181c\",\n ", +" \"name\" : \"0x3bcc763c2e292c4883\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 20700", +"0000\n}, \n{\n \"ETH_account\" : \"0x00ee92", +"9dfd55c9b2eea224b647f06b7200b6be85\",\n ", +" \"name\" : \"0x00ee929dfd55c9b2ee\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 100000", +"000\n}, \n{\n \"ETH_account\" : \"0x8994e40", +"fcd3055715a3168b8f259f8e290864869\",\n ", +"\"name\" : \"0x8994e40fcd3055715a\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1068550", +"000\n}, \n{\n \"ETH_account\" : \"0xcf8a8ea", +"cf93603e9807f9a4652598106f2e93049\",\n ", +"\"name\" : \"0xcf8a8eacf93603e980\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1000000", +"0\n}, \n{\n \"ETH_account\" : \"0xe36f763c5", +"3c83c4bda991e4159a52830d69f0894\",\n \"n", +"ame\" : \"0xe36f763c53c83c4bda\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 910000000", +"\n}, \n{\n \"ETH_account\" : \"0xb1ce025ff8", +"da213cd3642193135ab55b64e92074\",\n \"na", +"me\" : \"0xb1ce025ff8da213cd3\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 663150000\n", +"}, \n{\n \"ETH_account\" : \"0x2070397297d", +"98a5585341663d0f912dab8de3177\",\n \"nam", +"e\" : \"0x2070397297d98a5585\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 47000000\n},", +" \n{\n \"ETH_account\" : \"0xd11ac5d5b4ab6", +"b726bd8bbd7cc504d435379a679\",\n \"name\"", +" : \"0xd11ac5d5b4ab6b726b\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1755226700\n},", +" \n{\n \"ETH_account\" : \"0xf38f9c963f633", +"6e2c69044a575f1e6189b4b49f6\",\n \"name\"", +" : \"0xf38f9c963f6336e2c6\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 11073235000\n}", +", \n{\n \"ETH_account\" : \"0xd097979c37d3", +"4107da095101dac8c7b7fde4d0f7\",\n \"name", +"\" : \"0xd097979c37d34107da\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 760000000\n},", +" \n{\n \"ETH_account\" : \"0x6791d5551a9e1", +"ebb25a187e2174019db62ac8877\",\n \"name\"", +" : \"0x6791d5551a9e1ebb25\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1945634994\n},", +" \n{\n \"ETH_account\" : \"0xeb0bb9396f8c4", +"434e5cb0dd004eee24c01730d46\",\n \"name\"", +" : \"0xeb0bb9396f8c4434e5\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 50000\n}, \n{\n ", +" \"ETH_account\" : \"0xb31b3d72ef73d5e833", +"379bc8cb368bb0ecadbb4f\",\n \"name\" : \"0", +"xb31b3d72ef73d5e833\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 2242000000\n}, \n{\n ", +" \"ETH_account\" : \"0x1742d4e28ca6f838a9", +"a699450df86fcef852e138\",\n \"name\" : \"0", +"x1742d4e28ca6f838a9\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 50000\n}, \n{\n \"E", +"TH_account\" : \"0x05d8f3cebd4ab23a61fa082", +"ba340b5a2bed97a41\",\n \"name\" : \"0x05d8", +"f3cebd4ab23a61\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 90000000\n}, \n{\n \"ETH", +"_account\" : \"0x0f4b938bc12752c754031ecd6", +"dacf93da304aeab\",\n \"name\" : \"0x0f4b93", +"8bc12752c754\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 30000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xe96a6910b77d27432a8eb8f5d28bb8", +"eba31e675c\",\n \"name\" : \"0xe96a6910b77", +"d27432a\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 635000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xf54eaa616a41445194e3bf3766be2a1", +"3468a07f2\",\n \"name\" : \"0xf54eaa616a41", +"445194\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 10702483000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x5b7f30e93349687024cf1e5b19f225", +"10f8747ff3\",\n \"name\" : \"0x5b7f30e9334", +"9687024\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 135175437\n}, \n{\n \"ETH_accou", +"nt\" : \"0x2b7ce005ae8ce68eb52159668a9225d", +"89e7f5cea\",\n \"name\" : \"0x2b7ce005ae8c", +"e68eb5\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 940922755\n}, \n{\n \"ETH_accoun", +"t\" : \"0x7519937e4ec1fcf2b359b0b59e86f43e", +"b1ca1088\",\n \"name\" : \"0x7519937e4ec1f", +"cf2b3\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 765612568\n}, \n{\n \"ETH_account", +"\" : \"0x5e5e6364f00f0806d820b14330c8145e0", +"b7674ea\",\n \"name\" : \"sophiatxjt\",\n ", +" \"publicKey\" : \"SPH8mQ5ZTwtxNBpdNRbsGXP7", +"RLzGrGqShUiWgCnhBpdpw4Z6cW7Lw\",\n \"bal", +"ance\" : 897211023\n}, \n{\n \"ETH_account", +"\" : \"0x02ffb9b4bbc29f9a59b20c541d369c5ad", +"d62a5a3\",\n \"name\" : \"moonwallet\",\n ", +" \"publicKey\" : \"SPH5kxS6vHgELPwWa9sht6d1", +"qpS2FGUF2ixX6JyBw5AStrACHpG9k\",\n \"bal", +"ance\" : 523848663\n}, \n{\n \"ETH_account", +"\" : \"0x33cb61d415ec4fab89c0ecded01c8f83f", +"f04ca3c\",\n \"name\" : \"0x33cb61d415ec4f", +"ab89\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 91000000\n}, \n{\n \"ETH_account\" ", +": \"0xe7b6c9d05c71240091f4408a96f0bfc752f", +"fb2f1\",\n \"name\" : \"0xe7b6c9d05c712400", +"91\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 500\n}, \n{\n \"ETH_account\" : \"0xcf", +"c97bc9284c485f9e4431b8cb60ad5683f359a0\",", +"\n \"name\" : \"0xcfc97bc9284c485f9e\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 79", +"400000\n}, \n{\n \"ETH_account\" : \"0xe209", +"623fe95f54dbf462d182d8914b318791664a\",\n ", +" \"name\" : \"0xe209623fe95f54dbf4\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3424", +"7622315\n}, \n{\n \"ETH_account\" : \"0x881", +"db6f2195fc871bdf4565c048bafd4003e5e48\",\n", +" \"name\" : \"0x881db6f2195fc871bd\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 890", +"00000\n}, \n{\n \"ETH_account\" : \"0x2c8a9", +"472222f02b452ee6c286fba277a0e5023f5\",\n ", +" \"name\" : \"0x2c8a9472222f02b452\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 14436", +"24859\n}, \n{\n \"ETH_account\" : \"0x04a44", +"e46a8619115f69c6508b4c112c915e55f57\",\n ", +" \"name\" : \"0x04a44e46a8619115f6\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 19015", +"77683\n}, \n{\n \"ETH_account\" : \"0x00fe4", +"f7037a352b61b7f85a961974da7abf720bb\",\n ", +" \"name\" : \"mistermisterme\",\n \"public", +"Key\" : \"SPH52fru1cofF1NLJ8TxDYAAYkx6KHWv", +"gSYakBt5tMd2da1N8zHiA\",\n \"balance\" : ", +"10106967648\n}, \n{\n \"ETH_account\" : \"0", +"xb758ce1a80b18ec112f9eca722936bcf8fea13d", +"9\",\n \"name\" : \"ployjan\",\n \"publicK", +"ey\" : \"SPH5pDmNuQeUuir9VFjcic6TCrKgDzjxJ", +"NbsfLeFnWrcPhNnMRVEz\",\n \"balance\" : 7", +"00582989\n}, \n{\n \"ETH_account\" : \"0xed", +"884d59a19512223b650fcef35ee39a789d8039\",", +"\n \"name\" : \"0xed884d59a19512223b\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 53", +"570000000\n}, \n{\n \"ETH_account\" : \"0x9", +"a1fcbb81b9bdac831c5189bfb3df90e6a63f5ab\"", +",\n \"name\" : \"0x9a1fcbb81b9bdac831\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"000000\n}, \n{\n \"ETH_account\" : \"0xd190", +"3b6eacfb8208989052a9c87801e7cad694e6\",\n ", +" \"name\" : \"0xd1903b6eacfb820898\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1351", +"292534\n}, \n{\n \"ETH_account\" : \"0xbe47", +"587a69e99bab26f1fa336a9a8dfbda5522c9\",\n ", +" \"name\" : \"0xbe47587a69e99bab26\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3900", +"00000\n}, \n{\n \"ETH_account\" : \"0xe3490", +"94fb749e08eb7b3c23f174e0a88075636f2\",\n ", +" \"name\" : \"0xe349094fb749e08eb7\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10200", +"00000\n}, \n{\n \"ETH_account\" : \"0x03a32", +"876b2380a01e648642c8bdc7cf181fd0bc9\",\n ", +" \"name\" : \"0x03a32876b2380a01e6\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 42420", +"00000\n}, \n{\n \"ETH_account\" : \"0xc76cb", +"9be7e07c4d4ab2c14536e4674d75d11c8b3\",\n ", +" \"name\" : \"0xc76cb9be7e07c4d4ab\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 87649", +"7000\n}, \n{\n \"ETH_account\" : \"0x56d4e4", +"9acaa50d83f3d4a02d90408285b5e03fd4\",\n ", +" \"name\" : \"0x56d4e49acaa50d83f3\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 468083", +"4800\n}, \n{\n \"ETH_account\" : \"0x7f03a0", +"41bb1dd569f592e1afadaad25f95892ea9\",\n ", +" \"name\" : \"dsub\",\n \"publicKey\" : \"SPH", +"5EDkmzqhj9FSDThZzuXv1DWoKgi7TFB5ZDZLuzpk", +"wY6vMeGjTD\",\n \"balance\" : 1341910000\n", +"}, \n{\n \"ETH_account\" : \"0x2e9128446c4", +"ba222a13a05b859cccd2489ed5fe0\",\n \"nam", +"e\" : \"0x2e9128446c4ba222a1\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 280000000\n}", +", \n{\n \"ETH_account\" : \"0x1c6597ab52eb", +"9941253ecc92446d95a5ea223e83\",\n \"name", +"\" : \"0x1c6597ab52eb994125\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1331535200\n}", +", \n{\n \"ETH_account\" : \"0x326ff1d6b7b1", +"42564bc9385fa4f5ebfc946abcb4\",\n \"name", +"\" : \"0x326ff1d6b7b142564b\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 499000000\n},", +" \n{\n \"ETH_account\" : \"0x7dd1621ad2b63", +"f9f60c831f09b81cc185ae65380\",\n \"name\"", +" : \"0x7dd1621ad2b63f9f60\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 4343989000\n},", +" \n{\n \"ETH_account\" : \"0x02e5e79ab7f51", +"aefb349ce9e6bbfa33bda8f567f\",\n \"name\"", +" : \"0x02e5e79ab7f51aefb3\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 807000000\n}, ", +"\n{\n \"ETH_account\" : \"0xf2306bb207119c", +"09317b301b2076c21d3c4803a4\",\n \"name\" ", +": \"grazerak\",\n \"publicKey\" : \"SPH7X9k", +"yxX1QF4WrqBRvMqVvAVsaoFyGqWj6JN6fgVZqmqz", +"52NA9i\",\n \"balance\" : 300000000\n}, \n{", +"\n \"ETH_account\" : \"0x0925c9bd08ba9aa5", +"6acd1b56ea59d06821321b74\",\n \"name\" : ", +"\"0x0925c9bd08ba9aa56a\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 469830000\n}, \n{\n", +" \"ETH_account\" : \"0x357c8d2599bbaeba3", +"1cfb1a09a6e09ac5ea8f91b\",\n \"name\" : \"", +"0x357c8d2599bbaeba31\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 50010000\n}, \n{\n ", +" \"ETH_account\" : \"0xde2ff267e7922ceca31", +"e5a9f7b04aa88a36a57c4\",\n \"name\" : \"0x", +"de2ff267e7922ceca3\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1001478300\n}, \n{\n ", +" \"ETH_account\" : \"0x8d5956119984cf32be3", +"962ef81e2c80355fcba8d\",\n \"name\" : \"0x", +"8d5956119984cf32be\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 813619630\n}, \n{\n ", +" \"ETH_account\" : \"0xd57c6929ec4bf6401097", +"ec5f161ac4bd07622ad2\",\n \"name\" : \"0xd", +"57c6929ec4bf64010\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 597380000\n}, \n{\n ", +"\"ETH_account\" : \"0x09609ea6141a607b099ff", +"e067be8f35be30e4e54\",\n \"name\" : \"0x09", +"609ea6141a607b09\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 102000000\n}, \n{\n \"", +"ETH_account\" : \"0xe6aba68523c55e1ae9ced8", +"7b8823ecc82cd7ef87\",\n \"name\" : \"hugsy", +"69\",\n \"publicKey\" : \"SPH6mv4oZD9StUYe", +"sUEBmfsYbbUwE8fGbwqR5REdiEKVXBsXg9whM\",\n", +" \"balance\" : 245020400\n}, \n{\n \"ETH", +"_account\" : \"0x22aecf4c347770ad0a2122d75", +"09b762b028c6cb0\",\n \"name\" : \"0x22aecf", +"4c347770ad0a\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 483001728\n}, \n{\n \"ETH_", +"account\" : \"0x7bfaccb928c10c3657c6bf5b56", +"909094d1bd5843\",\n \"name\" : \"0x7bfaccb", +"928c10c3657\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 5859527600\n}, \n{\n \"ETH_", +"account\" : \"0xead5e63d770e90b38d0556df93", +"0d25fa87afe3e8\",\n \"name\" : \"0xead5e63", +"d770e90b38d\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 100000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xf381aba2b82ba4f27fb7e56b042", +"673e4b964814c\",\n \"name\" : \"0xf381aba2", +"b82ba4f27f\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 52394000000\n}, \n{\n \"ETH_", +"account\" : \"0x49a0c12bce800dc969d9c88f10", +"d75975606d495b\",\n \"name\" : \"0x49a0c12", +"bce800dc969\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 518000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x907ebd4e8d7bd4ed3c54202c02f", +"636a73cf6361a\",\n \"name\" : \"0x907ebd4e", +"8d7bd4ed3c\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 20000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x8e9843f6cedd456e98da07fda8c41", +"b0d04a75f69\",\n \"name\" : \"0x8e9843f6ce", +"dd456e98\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 257569\n}, \n{\n \"ETH_account", +"\" : \"0x89494a18d113a8688b6c201f46d9f3b30", +"96a0cb7\",\n \"name\" : \"0x89494a18d113a8", +"688b\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 158000000\n}, \n{\n \"ETH_account\"", +" : \"0xb10e159d3fd60d83371397457b348b11b8", +"d28fdd\",\n \"name\" : \"0xb10e159d3fd60d8", +"337\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 2300000000\n}, \n{\n \"ETH_account\"", +" : \"0x8e83750571e521c9e659ea77fda93a4d05", +"28a627\",\n \"name\" : \"0x8e83750571e521c", +"9e6\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1080000000\n}, \n{\n \"ETH_account\"", +" : \"0x6b94c4e83ec63c6408106c03244e63423b", +"5eb380\",\n \"name\" : \"0x6b94c4e83ec63c6", +"408\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 655400000\n}, \n{\n \"ETH_account\" ", +": \"0xae73555eae42bc4f13166ec5c1e108e6039", +"21963\",\n \"name\" : \"0xae73555eae42bc4f", +"13\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 12584380382\n}, \n{\n \"ETH_account\"", +" : \"0xdbfe5e94a0208c5324c7e4396dcebd312a", +"f01b33\",\n \"name\" : \"0xdbfe5e94a0208c5", +"324\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 47179688\n}, \n{\n \"ETH_account\" :", +" \"0xfdfd01d97f922dcc94db2d236e4e8571a008", +"c536\",\n \"name\" : \"0xfdfd01d97f922dcc9", +"4\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 12220000000\n}, \n{\n \"ETH_account\" ", +": \"0xa56bae53e4f3d974209b88cdea37419ad33", +"98c6d\",\n \"name\" : \"0xa56bae53e4f3d974", +"20\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 5000000000\n}, \n{\n \"ETH_account\" ", +": \"0x2a608d7137ffa92dceeb29e3808a7673155", +"40c3d\",\n \"name\" : \"0x2a608d7137ffa92d", +"ce\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 538000000\n}, \n{\n \"ETH_account\" :", +" \"0xe4f8b955c120d7f24767f9f5b97dc9d63d03", +"4a14\",\n \"name\" : \"0xe4f8b955c120d7f24", +"7\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 53710000000\n}, \n{\n \"ETH_account\" ", +": \"0xe3b9be36ba159f2790b5b442e88944380a4", +"87059\",\n \"name\" : \"0xe3b9be36ba159f27", +"90\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 500000000\n}, \n{\n \"ETH_account\" :", +" \"0x1d129c8094896556bd9a1feefe6f87b8a953", +"16e3\",\n \"name\" : \"0x1d129c8094896556b", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 555000000\n}, \n{\n \"ETH_account\" : ", +"\"0x125007b54b3036d94cebe61f837c724efe7db", +"25b\",\n \"name\" : \"sophiapatrick\",\n ", +"\"publicKey\" : \"SPH8BV7Jzo5n5oQxEjX8Uj3MQ", +"f5n6gmhVCK2CjVsPq1FUTqQ5koKq\",\n \"bala", +"nce\" : 1000000000\n}, \n{\n \"ETH_account", +"\" : \"0x6fe9e349a620b741eba76ddc057fdb03e", +"d1d5989\",\n \"name\" : \"0x6fe9e349a620b7", +"41eb\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 276204000\n}, \n{\n \"ETH_account\"", +" : \"0xc8ffcfdfb6489d003ec322c39951a551b6", +"c0ab3c\",\n \"name\" : \"gabrielbishop\",\n ", +" \"publicKey\" : \"SPH7vREnjAxirMg7ojH69S", +"nmzjLpzLG8Lr9Sv1euatE8bpBwfeME7\",\n \"b", +"alance\" : 25000000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x5eb9495e77516ba1639ed8c9c6874", +"269fc6d07bd\",\n \"name\" : \"0x5eb9495e77", +"516ba163\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 72288289600\n}, \n{\n \"ETH_ac", +"count\" : \"0xf8939825176c739f70a4a3b9d147", +"5565cb0bd582\",\n \"name\" : \"0xf89398251", +"76c739f70\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1997366500\n}, \n{\n \"ETH_ac", +"count\" : \"0x2a2913e822d0d4fea25f5f149a5e", +"8fb6b49740c0\",\n \"name\" : \"0x2a2913e82", +"2d0d4fea2\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 69\n}, \n{\n \"ETH_account\" :", +" \"0x6a0605d3d52657ee4416e591098114a89990", +"9507\",\n \"name\" : \"0x6a0605d3d52657ee4", +"4\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 21981574155\n}, \n{\n \"ETH_account\" ", +": \"0xf2349760f62b82951546c3ece19ba61c090", +"21307\",\n \"name\" : \"0xf2349760f62b8295", +"15\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 5000000000\n}, \n{\n \"ETH_account\" ", +": \"0xf08d4c2bb4fc1a43014cb7a141c62f22b4e", +"f826f\",\n \"name\" : \"0xf08d4c2bb4fc1a43", +"01\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 20102019000\n}, \n{\n \"ETH_account\"", +" : \"0x73e6a3a270cf7c8f57457ec387b61f4091", +"b52e1d\",\n \"name\" : \"cryptonl\",\n \"p", +"ublicKey\" : \"SPH5mUmbsK1QynCcH9Fk2Kb81Zj", +"wW1Nc6guURMM98GnD4hDLPUume\",\n \"balanc", +"e\" : 8500000000\n}, \n{\n \"ETH_account\" ", +": \"0x55ccfa815c96939bc114239a1024774af68", +"d295f\",\n \"name\" : \"0x55ccfa815c96939b", +"c1\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 459352000\n}, \n{\n \"ETH_account\" :", +" \"0xcf3c397d3464ad3b35241b0ee08c45d55b80", +"79e2\",\n \"name\" : \"0xcf3c397d3464ad3b3", +"5\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1072766765\n}, \n{\n \"ETH_account\" :", +" \"0x354288c55a59d6b4c1e793a4a60a60a75f27", +"4865\",\n \"name\" : \"0x354288c55a59d6b4c", +"1\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1400000\n}, \n{\n \"ETH_account\" : \"0", +"x0e42374a1135437e5aa90892f13d123861fc9da", +"8\",\n \"name\" : \"0x0e42374a1135437e5a\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 36650674360\n}, \n{\n \"ETH_account\" : \"", +"0x04e7c628ba76013aeb7bc53beb201ebe7802d2", +"be\",\n \"name\" : \"0x04e7c628ba76013aeb\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 16314990000\n}, \n{\n \"ETH_account\" : ", +"\"0xf22b0ff6bc49f9e2c103146cbcaa7d96b7198", +"407\",\n \"name\" : \"0xf22b0ff6bc49f9e2c1", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 7260000000\n}, \n{\n \"ETH_account\" : ", +"\"0x64848202edeab4fcccd84f64416e1a0cb1422", +"725\",\n \"name\" : \"0x64848202edeab4fccc", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 93400000\n}, \n{\n \"ETH_account\" : \"0", +"xb9490817d7dd078f784607018772ddc42a1d7e6", +"b\",\n \"name\" : \"0xb9490817d7dd078f78\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 83000000\n}, \n{\n \"ETH_account\" : \"0x8", +"cf481d23e82cf4e12934bf256654022b168f7c6\"", +",\n \"name\" : \"0x8cf481d23e82cf4e12\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"6099610000\n}, \n{\n \"ETH_account\" : \"0x", +"f485d1f1d8819e805cfe29a97d7e06778d5daada", +"\",\n \"name\" : \"jochem\",\n \"publicKey", +"\" : \"SPH6WaSF9TSGXncTTVx73fL7bh9KEa2R2XG", +"bK1yvPQMfash14ZtEF\",\n \"balance\" : 846", +"000000\n}, \n{\n \"ETH_account\" : \"0x2ebf", +"dad6f86b43112d183d30fcc92ed7d4918515\",\n ", +" \"name\" : \"0x2ebfdad6f86b43112d\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3900", +"0685059\n}, \n{\n \"ETH_account\" : \"0x266", +"119fc97a3e416b3367540f042b6df1865ce1d\",\n", +" \"name\" : \"0x266119fc97a3e416b3\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 200", +"000000\n}, \n{\n \"ETH_account\" : \"0x9923", +"0b63c94bd72269139dea7c223499d0c9bed9\",\n ", +" \"name\" : \"0x99230b63c94bd72269\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5000", +"000000\n}, \n{\n \"ETH_account\" : \"0xc83d", +"652c6c0b25bf94c26ddc5e0b8d5163e1f014\",\n ", +" \"name\" : \"0xc83d652c6c0b25bf94\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3000", +"000000\n}, \n{\n \"ETH_account\" : \"0x7014", +"e97fe1e6d408f44ea1bd1178a6b45e6d8be5\",\n ", +" \"name\" : \"0x7014e97fe1e6d408f4\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1933", +"4384211\n}, \n{\n \"ETH_account\" : \"0x450", +"7761887bec9d15d92022d09bcc1949f82d720\",\n", +" \"name\" : \"0x4507761887bec9d15d\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 205", +"5000000\n}, \n{\n \"ETH_account\" : \"0x031", +"17ac2de1030354fca4fa6b77e5f069029abf1\",\n", +" \"name\" : \"0x03117ac2de1030354f\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 739", +"400000\n}, \n{\n \"ETH_account\" : \"0xff44", +"74997e5455cd7f1788cd8fd77a81b1d03462\",\n ", +" \"name\" : \"paisbitcdylatx\",\n \"publi", +"cKey\" : \"SPH4vkgj4xFEYMvA2j86xTtNJvHTicK", +"z8xiDGfnFwDrZxxRnaiTfv\",\n \"balance\" :", +" 37304900000\n}, \n{\n \"ETH_account\" : \"", +"0x59b8504e825e5ce890aa2a926c317952847ea0", +"26\",\n \"name\" : \"0x59b8504e825e5ce890\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2000142400\n}, \n{\n \"ETH_account\" : \"", +"0xe2ce25d0931ebd4e8d6c90cc4a7a6c78b50050", +"63\",\n \"name\" : \"0xe2ce25d0931ebd4e8d\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 5000000000\n}, \n{\n \"ETH_account\" : \"", +"0xd6d187de0957f3fb84d2a1a91721ffd1bc31ef", +"4a\",\n \"name\" : \"0xd6d187de0957f3fb84\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 5898000000\n}, \n{\n \"ETH_account\" : \"", +"0xc91826817a4ab12ab9f5a7c9f3224e49ae8e7c", +"9a\",\n \"name\" : \"0xc91826817a4ab12ab9\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 19940000000\n}, \n{\n \"ETH_account\" : ", +"\"0x1e9d14a273afe09afc246e055d445281f2756", +"0fc\",\n \"name\" : \"0x1e9d14a273afe09afc", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 780000000\n}, \n{\n \"ETH_account\" : \"", +"0x5fd8ffbddec92976d1f9654ef59b170ba57ad5", +"92\",\n \"name\" : \"0x5fd8ffbddec92976d1\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 170697709\n}, \n{\n \"ETH_account\" : \"0", +"x851b9cedc9f321a787b9a08f172adee6ae31fb5", +"b\",\n \"name\" : \"0x851b9cedc9f321a787\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 699616901\n}, \n{\n \"ETH_account\" : \"0x", +"0e32d3c61fc607abaebc18e9f656e43f6377032e", +"\",\n \"name\" : \"0x0e32d3c61fc607abae\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"979000000\n}, \n{\n \"ETH_account\" : \"0x4", +"f1d498c49d9dfda55cd6dfd52c1b99f4569ec07\"", +",\n \"name\" : \"0x4f1d498c49d9dfda55\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"0000\n}, \n{\n \"ETH_account\" : \"0x64106f", +"99153ec07b80004fe8243b36d814dd9eb3\",\n ", +" \"name\" : \"0x64106f99153ec07b80\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 430360", +"00\n}, \n{\n \"ETH_account\" : \"0x59433fd9", +"eb359b56a8262294c1d31ebfcb1d664a\",\n \"", +"name\" : \"aleaco\",\n \"publicKey\" : \"SPH", +"5ajLcswkiL8AyVLLpB3xv3Zj63EQu6GBz3G67hFp", +"bmsggBLiQh\",\n \"balance\" : 642315958\n}", +", \n{\n \"ETH_account\" : \"0xcf4b748796d0", +"a178f03d3a337aef218ac69e4b74\",\n \"name", +"\" : \"0xcf4b748796d0a178f0\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 3000000000\n}", +", \n{\n \"ETH_account\" : \"0xe7fc1905d6eb", +"0f6137b1e40c8c372283655388b7\",\n \"name", +"\" : \"0xe7fc1905d6eb0f6137\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 2024867124\n}", +", \n{\n \"ETH_account\" : \"0xbe00fa424243", +"c56c7cf5792afbd6b8dc4d6cbe4e\",\n \"name", +"\" : \"rumhurius\",\n \"publicKey\" : \"SPH5", +"ezw4ertnWGbmdzvzTcuSydtF6kTBSLC2KxLatXAG", +"mgAdRdVKd\",\n \"balance\" : 18668695907\n", +"}, \n{\n \"ETH_account\" : \"0xa8c593c9ad1", +"3c6eb868674873a0a5ddd3df14ce0\",\n \"nam", +"e\" : \"0xa8c593c9ad13c6eb86\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 4623000000\n", +"}, \n{\n \"ETH_account\" : \"0xc422b169e30", +"fef2876e0c00eb97f9b60ae0fee51\",\n \"nam", +"e\" : \"0xc422b169e30fef2876\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 15839188000", +"\n}, \n{\n \"ETH_account\" : \"0x1422dc6c7b", +"cc8c4cd521583ab069faffc67e275a\",\n \"na", +"me\" : \"0x1422dc6c7bcc8c4cd5\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 560762000\n", +"}, \n{\n \"ETH_account\" : \"0x4838d21f096", +"c9e641db1428852232c56a2a325b5\",\n \"nam", +"e\" : \"0x4838d21f096c9e641d\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 30746585853", +"\n}, \n{\n \"ETH_account\" : \"0x22cfc05d5b", +"4bc326452b0c73f9b3c829f4d9e2ef\",\n \"na", +"me\" : \"eaglesphtx\",\n \"publicKey\" : \"S", +"PH78iAwsNiPfVk2mTos6sPvPTLnHrWTxhYDv98UF", +"cQpRQJChpThC\",\n \"balance\" : 705940000", +"0\n}, \n{\n \"ETH_account\" : \"0xfd2e72c1d", +"71e7e2b3b1a8238e6987b756f5c95c3\",\n \"n", +"ame\" : \"0xfd2e72c1d71e7e2b3b\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 562230000", +"0\n}, \n{\n \"ETH_account\" : \"0x703710d2b", +"a68f9d04eb058c46994b73b3d4c139e\",\n \"n", +"ame\" : \"0x703710d2ba68f9d04e\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 208307000", +"\n}, \n{\n \"ETH_account\" : \"0xdd5694d8a0", +"38f98582a1728a7a35e93728019dea\",\n \"na", +"me\" : \"0xdd5694d8a038f98582\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 400000\n}, ", +"\n{\n \"ETH_account\" : \"0x65e3b63287afe9", +"22a53df5c04c6de4263511018a\",\n \"name\" ", +": \"0x65e3b63287afe922a5\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 4763783299\n}, ", +"\n{\n \"ETH_account\" : \"0xef611de17e99c9", +"82afd13284dbd5e3d62efc2644\",\n \"name\" ", +": \"0xef611de17e99c982af\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 606574000\n}, \n", +"{\n \"ETH_account\" : \"0x68b9c5e14e52a16", +"d3c55065fbac378e15c07b9ac\",\n \"name\" :", +" \"0x68b9c5e14e52a16d3c\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 100000000\n}, \n{", +"\n \"ETH_account\" : \"0x7ea9a9f3984a5bea", +"e6c9aea8c88d3cca8e1f7a97\",\n \"name\" : ", +"\"0x7ea9a9f3984a5beae6\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 446000000\n}, \n{\n", +" \"ETH_account\" : \"0x1fc23e4d158d5be80", +"484b4d3417780d2b180cd3f\",\n \"name\" : \"", +"0x1fc23e4d158d5be804\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 179000000\n}, \n{\n ", +" \"ETH_account\" : \"0xf55c081ee193cbf2aa", +"93ceb35639198896b261ca\",\n \"name\" : \"0", +"xf55c081ee193cbf2aa\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 2036560627\n}, \n{\n ", +" \"ETH_account\" : \"0xceb212a5e51fadff9f", +"a9e676074af5293471fa75\",\n \"name\" : \"0", +"xceb212a5e51fadff9f\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 300000000\n}, \n{\n ", +" \"ETH_account\" : \"0x1654bf19bbe5e42ed7d", +"47fef157030a1d3bb669b\",\n \"name\" : \"0x", +"1654bf19bbe5e42ed7\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 240326845\n}, \n{\n ", +" \"ETH_account\" : \"0x385c7606db175b92788c", +"68e8580d6b6a9f3ad3ac\",\n \"name\" : \"0x3", +"85c7606db175b9278\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 80000000\n}, \n{\n \"", +"ETH_account\" : \"0x860351251ef2622cc78cca", +"beeff7b7afc462f8b3\",\n \"name\" : \"0x860", +"351251ef2622cc7\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 922917000\n}, \n{\n \"E", +"TH_account\" : \"0xd3649f2725517c878e091fb", +"6242e58ac2e82367a\",\n \"name\" : \"0xd364", +"9f2725517c878e\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 3276000000\n}, \n{\n \"E", +"TH_account\" : \"0x636782e3db8c43ef80281d1", +"64aa583215112a076\",\n \"name\" : \"0x6367", +"82e3db8c43ef80\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 59629000\n}, \n{\n \"ETH", +"_account\" : \"0x03d8edf7dd3062bb964867af4", +"7ce9e902b78d1df\",\n \"name\" : \"0x03d8ed", +"f7dd3062bb96\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 483364781\n}, \n{\n \"ETH_", +"account\" : \"0x59a392948f30d91fb6161dc28a", +"361b2eab04ee4c\",\n \"name\" : \"0x59a3929", +"48f30d91fb6\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 756601000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x5d997614a5fccfd53684cb14ca5", +"5f1aeba86abff\",\n \"name\" : \"0x5d997614", +"a5fccfd536\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1044837100\n}, \n{\n \"ETH_a", +"ccount\" : \"0x00cf7b730dfbf836308b4abfbf9", +"97f3070372e2f\",\n \"name\" : \"0x00cf7b73", +"0dfbf83630\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 10875377\n}, \n{\n \"ETH_acc", +"ount\" : \"0x1019d10368171459f21a22e0f9467", +"dad62ede33a\",\n \"name\" : \"0x1019d10368", +"171459f2\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 56488646080\n}, \n{\n \"ETH_ac", +"count\" : \"0x6a038b56d0f0c649ca114e785987", +"c1fcc7d46967\",\n \"name\" : \"0x6a038b56d", +"0f0c649ca\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 36449475598\n}, \n{\n \"ETH_a", +"ccount\" : \"0x3e1b1fe45cb2040b97cdb3191d4", +"933ad1ff0928d\",\n \"name\" : \"tchernosop", +"hiatx\",\n \"publicKey\" : \"SPH6HkC6sPToe", +"mXzJHQEE6wdmYWjpKyH3MwVi7o4Q1jDqzHcM6Z8i", +"\",\n \"balance\" : 385000000\n}, \n{\n \"", +"ETH_account\" : \"0x49569a28e8025f35f81c28", +"e8b1f61e634a0b22a9\",\n \"name\" : \"gills", +"ophiatx\",\n \"publicKey\" : \"SPH85CBk4sV", +"GvA4XZaqvFqn33TqAJHV74qeiuwnUQi9GFND7Xiu", +"t4\",\n \"balance\" : 1130000000\n}, \n{\n ", +" \"ETH_account\" : \"0x6e1a1a3070e55ca3fd8", +"f527897ec2f6b7ebc41fb\",\n \"name\" : \"mi", +"chaelw\",\n \"publicKey\" : \"SPH7PaqAk78H", +"ZWjDVZraH3zPmfsm4KqcaUx3xY48dVZ4xLaS3wDX", +"j\",\n \"balance\" : 129000000\n}, \n{\n ", +"\"ETH_account\" : \"0x751ac57bb147b3e751b7c", +"965a29dffe5da2dad58\",\n \"name\" : \"0x75", +"1ac57bb147b3e751\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 966603\n}, \n{\n \"ETH", +"_account\" : \"0xc7f531240b86bd1c2886fcecf", +"2193e0c411f8e83\",\n \"name\" : \"0xc7f531", +"240b86bd1c28\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 979629920\n}, \n{\n \"ETH_", +"account\" : \"0xe2d2e8981b43d9c9042197aa23", +"83b163419f7ea8\",\n \"name\" : \"0xe2d2e89", +"81b43d9c904\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 610000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xcfb4c4128b8d926f991cf8ef43b", +"a02149d2f7a08\",\n \"name\" : \"0xcfb4c412", +"8b8d926f99\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 77663447211\n}, \n{\n \"ETH_", +"account\" : \"0x32ccba05827f7aed2de8ecda53", +"583a6202f1f910\",\n \"name\" : \"0x32ccba0", +"5827f7aed2d\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 173569000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x2a8ade06db626e914fdd3082d8a", +"9dfa76da23b18\",\n \"name\" : \"0x2a8ade06", +"db626e914f\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1785000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x14dce980b06cedb660ca692a640", +"c1544f714a9b1\",\n \"name\" : \"0x14dce980", +"b06cedb660\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3219920\n}, \n{\n \"ETH_acco", +"unt\" : \"0xdcd1ae45e1fe8957897f3ab6a0d117", +"cc2245097d\",\n \"name\" : \"0xdcd1ae45e1f", +"e895789\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 6600000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x1e40a5183ad133f4229136a670c2d3", +"ebf90affd7\",\n \"name\" : \"0x1e40a5183ad", +"133f422\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 970000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x8b077b1458b938dac24fcb96d87a2fc", +"fbf8fc5b6\",\n \"name\" : \"0x8b077b1458b9", +"38dac2\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 63314000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xb75f852fa1f304281acad8de3f7340", +"0c6f99b275\",\n \"name\" : \"0xb75f852fa1f", +"304281a\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 100000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x4ea530514b0795f66637f39ab60cf36", +"e22f5ea1e\",\n \"name\" : \"derrick\",\n ", +"\"publicKey\" : \"SPH6JAB2QBghXK9h45vBv68AM", +"Hdbfq2t4xHn3vvq9U49owhJQ6A5D\",\n \"bala", +"nce\" : 12284465568\n}, \n{\n \"ETH_accoun", +"t\" : \"0xceedad8f122191483612c0fe06b9a76c", +"554569dc\",\n \"name\" : \"0xceedad8f12219", +"14836\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 10000000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xc599e8c16f9cb1a8dcfda3f78f25fe0", +"d6d0826d6\",\n \"name\" : \"0xc599e8c16f9c", +"b1a8dc\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 861000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xeece750d58407425b72e7bcfdeaeb03b", +"98cec0b6\",\n \"name\" : \"0xeece750d58407", +"425b7\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 10000000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xfa9365534bd635bad9b30ee9cb336da", +"4a8412c6a\",\n \"name\" : \"0xfa9365534bd6", +"35bad9\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 150000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x2005df30965f47638b41a2e9eff24ef4", +"43bd824f\",\n \"name\" : \"0x2005df30965f4", +"7638b\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 280259538\n}, \n{\n \"ETH_account", +"\" : \"0xd5ea1ad85a14d44394eaed8ee1fb2cccf", +"4b29331\",\n \"name\" : \"0xd5ea1ad85a14d4", +"4394\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 618000000\n}, \n{\n \"ETH_account\"", +" : \"0xe0ccf8b3a9c3cc2c99328ac881ee1d540e", +"315ea4\",\n \"name\" : \"0xe0ccf8b3a9c3cc2", +"c99\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1000000000\n}, \n{\n \"ETH_account\"", +" : \"0x617b50da034c58cb030efed0f43c0dc6a5", +"253407\",\n \"name\" : \"0x617b50da034c58c", +"b03\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 20987198000\n}, \n{\n \"ETH_account", +"\" : \"0x39d2ab39dc9cce11ae67690a9a2f7053f", +"b999e74\",\n \"name\" : \"0x39d2ab39dc9cce", +"11ae\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 677978000\n}, \n{\n \"ETH_account\"", +" : \"0xf131fb0923bc7532449d9adab845fcec52", +"87b232\",\n \"name\" : \"0xf131fb0923bc753", +"244\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 40000000\n}, \n{\n \"ETH_account\" :", +" \"0x846705bfafd2febf0dd179772c0a954ad955", +"686d\",\n \"name\" : \"0x846705bfafd2febf0", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 20086780\n}, \n{\n \"ETH_account\" : \"", +"0xe66f2c4f180e2e9b25ddbae5c29d814a0e1062", +"05\",\n \"name\" : \"0xe66f2c4f180e2e9b25\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 3865000000\n}, \n{\n \"ETH_account\" : \"", +"0x53ea1fb6c673f4945e1796fdb442181c245ffb", +"25\",\n \"name\" : \"0x53ea1fb6c673f4945e\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 606000000\n}, \n{\n \"ETH_account\" : \"0", +"xd4bbebe1fa66697b858116d480c8a905878b3f7", +"6\",\n \"name\" : \"0xd4bbebe1fa66697b85\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 27999431055\n}, \n{\n \"ETH_account\" : \"", +"0xf0e4d5e4e1fb0c48614b748e1b12952c746f72", +"0b\",\n \"name\" : \"0xf0e4d5e4e1fb0c4861\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 212000000\n}, \n{\n \"ETH_account\" : \"0", +"x8afce0b7ca212fcd4fd9ea54749c6c48e715c60", +"f\",\n \"name\" : \"0x8afce0b7ca212fcd4f\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1695000000\n}, \n{\n \"ETH_account\" : \"0", +"xef9c6983a6b5d2fdaf1ec2dfb75c23b2f4740da", +"c\",\n \"name\" : \"0xef9c6983a6b5d2fdaf\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 198947996\n}, \n{\n \"ETH_account\" : \"0x", +"6ae88b2a966b388976ce271bcf32fb5c8691cd0b", +"\",\n \"name\" : \"0x6ae88b2a966b388976\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1594308017\n}, \n{\n \"ETH_account\" : \"0x", +"ab1e6e4ed60d1475bbe7f324c8673d6d44347353", +"\",\n \"name\" : \"0xab1e6e4ed60d1475bb\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"8000000\n}, \n{\n \"ETH_account\" : \"0xecb", +"e7d92d8df52bb00e2a5218bab8e08e438d966\",\n", +" \"name\" : \"0xecbe7d92d8df52bb00\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 136", +"604818\n}, \n{\n \"ETH_account\" : \"0xb21a", +"9b2e0a6ee570500d4f81ec814ff4e2369edd\",\n ", +" \"name\" : \"0xb21a9b2e0a6ee57050\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 9700", +"000000\n}, \n{\n \"ETH_account\" : \"0x15ee", +"4e05e49ad3b2bdde10470707738b2f7ab9ed\",\n ", +" \"name\" : \"0x15ee4e05e49ad3b2bd\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3823", +"58817\n}, \n{\n \"ETH_account\" : \"0x20897", +"c9242a8eb67d6364bc9caf0cef589042919\",\n ", +" \"name\" : \"0x20897c9242a8eb67d6\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 40000", +"0000\n}, \n{\n \"ETH_account\" : \"0xf15be6", +"f3c566836497bcead8603e35be60837c65\",\n ", +" \"name\" : \"0xf15be6f3c566836497\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 100000", +"00000\n}, \n{\n \"ETH_account\" : \"0x1a04f", +"a5c8d4acbafcbcbb0654772bc0b22a6663e\",\n ", +" \"name\" : \"0x1a04fa5c8d4acbafcb\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 24300", +"0000\n}, \n{\n \"ETH_account\" : \"0x77a9f9", +"843d4b51235f75224b4f7797c7a0c52fd5\",\n ", +" \"name\" : \"0x77a9f9843d4b51235f\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 212900", +"00000\n}, \n{\n \"ETH_account\" : \"0x619f8", +"73880358cb2b283429dff198a1d3e104273\",\n ", +" \"name\" : \"0x619f873880358cb2b2\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 29700", +"0000\n}, \n{\n \"ETH_account\" : \"0xee15fc", +"77a7f292f5ad85a6bb8895b477be88432d\",\n ", +" \"name\" : \"0xee15fc77a7f292f5ad\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 954700", +"00\n}, \n{\n \"ETH_account\" : \"0x6ae61b30", +"bd6b8cf9bee775d2a82fe30cf33894b4\",\n \"", +"name\" : \"0x6ae61b30bd6b8cf9be\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 30894915", +"35\n}, \n{\n \"ETH_account\" : \"0x135f53d6", +"198d1162d1a18284dd3312269e896c01\",\n \"", +"name\" : \"0x135f53d6198d1162d1\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 89200000", +"0\n}, \n{\n \"ETH_account\" : \"0xa30428c5d", +"be204564eeb76f743082557b42f0966\",\n \"n", +"ame\" : \"0xa30428c5dbe204564e\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 269572259", +"4\n}, \n{\n \"ETH_account\" : \"0x7311a2f85", +"0d0ad47df716dc010bab790652cb269\",\n \"n", +"ame\" : \"0x7311a2f850d0ad47df\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 6700\n}, \n", +"{\n \"ETH_account\" : \"0x74f91850d8fb0a5", +"05235d8a870204f4f05910954\",\n \"name\" :", +" \"0x74f91850d8fb0a5052\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 350000000\n}, \n{", +"\n \"ETH_account\" : \"0x833bb075638e43f6", +"93613eb3802b7ef7a27edbf7\",\n \"name\" : ", +"\"0x833bb075638e43f693\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 13000000000\n}, \n", +"{\n \"ETH_account\" : \"0x10d0a2417e0bc31", +"4af624b6f3f4e0f1cefa37efd\",\n \"name\" :", +" \"0x10d0a2417e0bc314af\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 2566103985\n}, \n", +"{\n \"ETH_account\" : \"0xd93f51ddecdf776", +"5709289c4a20c72ba97a36eaf\",\n \"name\" :", +" \"0xd93f51ddecdf776570\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 575000000\n}, \n{", +"\n \"ETH_account\" : \"0x528fcf9f5989d565", +"ebda00ed11ab0d1e763d134b\",\n \"name\" : ", +"\"0x528fcf9f5989d565eb\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 50000000\n}, \n{\n ", +" \"ETH_account\" : \"0x159d6cb8cd42df8ca9", +"95040eff7def9c702d02fd\",\n \"name\" : \"0", +"x159d6cb8cd42df8ca9\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1300000000\n}, \n{\n ", +" \"ETH_account\" : \"0x871ee728d4d4e0464b", +"6d05f8070c070fb93a2232\",\n \"name\" : \"0", +"x871ee728d4d4e0464b\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 9645911\n}, \n{\n ", +"\"ETH_account\" : \"0x645b5de8477c339c07e31", +"7648ffae8e7983c1a92\",\n \"name\" : \"0x64", +"5b5de8477c339c07\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 26925929\n}, \n{\n \"E", +"TH_account\" : \"0xf156f89f360f1068f518f45", +"f2299683c8f70f25a\",\n \"name\" : \"0xf156", +"f89f360f1068f5\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 3568000000\n}, \n{\n \"E", +"TH_account\" : \"0x5c6ffdedce6d88c03d70914", +"9ae3baab9fe17c7f5\",\n \"name\" : \"0x5c6f", +"fdedce6d88c03d\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 92\n}, \n{\n \"ETH_accou", +"nt\" : \"0x20b9d8d3fadd8139eae42e34c861c8e", +"b9177805e\",\n \"name\" : \"0x20b9d8d3fadd", +"8139ea\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 5000000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x620537cec1e18174a6b4d025b62107e", +"6f3f84b8c\",\n \"name\" : \"0x620537cec1e1", +"8174a6\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 139000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x82e07f4589127bb0dd9a056762da000f", +"e2a697da\",\n \"name\" : \"0x82e07f4589127", +"bb0dd\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 420000000\n}, \n{\n \"ETH_account", +"\" : \"0x64d086bdbf8e19da80c9af971971cf461", +"8e364cc\",\n \"name\" : \"0x64d086bdbf8e19", +"da80\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 100000000\n}, \n{\n \"ETH_account\"", +" : \"0x20d9146f4476d4740715126da794f91530", +"8b1945\",\n \"name\" : \"0x20d9146f4476d47", +"407\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 50990000000\n}, \n{\n \"ETH_account", +"\" : \"0xef66e25f22be568692b712aa17eafd121", +"697814a\",\n \"name\" : \"0xef66e25f22be56", +"8692\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 952000000\n}, \n{\n \"ETH_account\"", +" : \"0x7fb9ef34877be6218ff9e1e8d674171467", +"fa3708\",\n \"name\" : \"0x7fb9ef34877be62", +"18f\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 166151596\n}, \n{\n \"ETH_account\" ", +": \"0xf30bf01f3c893af8472a4aa58319f98ef2f", +"89580\",\n \"name\" : \"0xf30bf01f3c893af8", +"47\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 297000000\n}, \n{\n \"ETH_account\" :", +" \"0x87b9f07fe9e660403864f6b14ffed6a94599", +"634e\",\n \"name\" : \"0x87b9f07fe9e660403", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1140000000\n}, \n{\n \"ETH_account\" :", +" \"0xda2a26efaf78256144831f309eae6f566726", +"f463\",\n \"name\" : \"0xda2a26efaf7825614", +"4\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 100000000\n}, \n{\n \"ETH_account\" : ", +"\"0xc1444f9f4a2917f0a5fd3e37906a58cf317ef", +"ffe\",\n \"name\" : \"0xc1444f9f4a2917f0a5", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 42724696\n}, \n{\n \"ETH_account\" : \"0", +"x4c3467db5082717070b6a2ad23cdfb58ae9241c", +"9\",\n \"name\" : \"0x4c3467db5082717070\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1251217711\n}, \n{\n \"ETH_account\" : \"0", +"x341944e7737cf06628589fdf11f7826d39357b5", +"4\",\n \"name\" : \"0x341944e7737cf06628\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 100000000\n}, \n{\n \"ETH_account\" : \"0x", +"c32ab8dce5f3c395dfaa1636d0215753c5010fa1", +"\",\n \"name\" : \"0xc32ab8dce5f3c395df\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"346964791\n}, \n{\n \"ETH_account\" : \"0x0", +"09145c49f16279934faf4e68e6f99925529d22a\"", +",\n \"name\" : \"0x009145c49f16279934\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"88354984\n}, \n{\n \"ETH_account\" : \"0x26", +"c6667226aff11fb30f026b67650e8c8642491f\",", +"\n \"name\" : \"0x26c6667226aff11fb3\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 82", +"50000000\n}, \n{\n \"ETH_account\" : \"0x94", +"2e94b42d7816146b7415fe922c6112a5d01bfa\",", +"\n \"name\" : \"0x942e94b42d7816146b\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 59", +"8800875\n}, \n{\n \"ETH_account\" : \"0x3fe", +"87751fea23dc53d4e390b90ae6457dc9e11b0\",\n", +" \"name\" : \"0x3fe87751fea23dc53d\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 350", +"000000\n}, \n{\n \"ETH_account\" : \"0xb150", +"b269b2ee0312dc18cf96d8a24315e8ef04a2\",\n ", +" \"name\" : \"0xb150b269b2ee0312dc\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3760", +"000000\n}, \n{\n \"ETH_account\" : \"0x1dfd", +"ed87efa42cd97000401991b49e743867dfd7\",\n ", +" \"name\" : \"0x1dfded87efa42cd970\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1575", +"000000\n}, \n{\n \"ETH_account\" : \"0x5ef6", +"0d2155319cde142298c43975fb5e48bde535\",\n ", +" \"name\" : \"0x5ef60d2155319cde14\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5340", +"00000\n}, \n{\n \"ETH_account\" : \"0xff6b1", +"eea5a81eb800bf358f83bbf863831476109\",\n ", +" \"name\" : \"0xff6b1eea5a81eb800b\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10029", +"000000\n}, \n{\n \"ETH_account\" : \"0x8f8a", +"36b539e5cbadbdc24e1de3955e47af66a092\",\n ", +" \"name\" : \"delfseaflshay\",\n \"public", +"Key\" : \"SPH69hA9x9c7BTQoC7N1sSpufBnDhDD8", +"4ssuTtFf155eTuhPiek72\",\n \"balance\" : ", +"4632193600\n}, \n{\n \"ETH_account\" : \"0x", +"abe537358b2cdcfb1cbb96b714528fa204bcf4df", +"\",\n \"name\" : \"0xabe537358b2cdcfb1c\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"788536822\n}, \n{\n \"ETH_account\" : \"0xe", +"c9e5ab0bae3589e5212860404e9c573e4fe3cd6\"", +",\n \"name\" : \"0xec9e5ab0bae3589e52\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"008000000\n}, \n{\n \"ETH_account\" : \"0xe", +"d6865b3a541853071253551769e7575828beb40\"", +",\n \"name\" : \"0xed6865b3a541853071\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"30545866\n}, \n{\n \"ETH_account\" : \"0x52", +"bd7293d5888e2d9a8eabd2f5a219757a9c1d36\",", +"\n \"name\" : \"0x52bd7293d5888e2d9a\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 51", +"2423599\n}, \n{\n \"ETH_account\" : \"0x205", +"d2280feb195fde8f41d44ff07acba36b0d72e\",\n", +" \"name\" : \"0x205d2280feb195fde8\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 425", +"000000\n}, \n{\n \"ETH_account\" : \"0x41d3", +"8ae21018be010c98122e6207dc3a14b43bf0\",\n ", +" \"name\" : \"0x41d38ae21018be010c\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 9585", +"91\n}, \n{\n \"ETH_account\" : \"0xb6cd7cf6", +"6b6e8a3ab14b2d65658604d0e3318901\",\n \"", +"name\" : \"0xb6cd7cf66b6e8a3ab1\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 19603967", +"84\n}, \n{\n \"ETH_account\" : \"0x714285a4", +"473ea8b611378fc5a8c7ecb909237d39\",\n \"", +"name\" : \"0x714285a4473ea8b611\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10272145", +"59\n}, \n{\n \"ETH_account\" : \"0x42d83115", +"0be32974d4496660aa2226f32e886a49\",\n \"", +"name\" : \"0x42d831150be32974d4\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 42737027", +"82\n}, \n{\n \"ETH_account\" : \"0x5893dca4", +"bac941ca906d657755d695c3181fd97f\",\n \"", +"name\" : \"0x5893dca4bac941ca90\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 49339886", +"023\n}, \n{\n \"ETH_account\" : \"0x462c452", +"86c5586eb92589c8360c7360b7207caad\",\n ", +"\"name\" : \"0x462c45286c5586eb92\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1222742", +"664\n}, \n{\n \"ETH_account\" : \"0x59a310c", +"cabfc16334aa57f9ad42e90380f8a47ab\",\n ", +"\"name\" : \"odhnguvge\",\n \"publicKey\" : ", +"\"SPH57uNCoyuvqXgv424oUK3RRdf5GxwD6r6yEXh", +"axZSh3E1kiMz44\",\n \"balance\" : 1086000", +"000\n}, \n{\n \"ETH_account\" : \"0xf8c3156", +"fc85977486f08e7fd8a5d52d2030a1b39\",\n ", +"\"name\" : \"0xf8c3156fc85977486f\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1800000", +"000\n}, \n{\n \"ETH_account\" : \"0x049e88a", +"9dbadec4ec973c23967fdbb4149bd3530\",\n ", +"\"name\" : \"0x049e88a9dbadec4ec9\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4861003", +"366\n}, \n{\n \"ETH_account\" : \"0xf171983", +"f08400baba2eee9bf05779835456474d8\",\n ", +"\"name\" : \"0xf171983f08400baba2\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1980000", +"00\n}, \n{\n \"ETH_account\" : \"0x713c817b", +"41b149e02f1988f8e9fdc8f585e901ef\",\n \"", +"name\" : \"0x713c817b41b149e02f\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 33300000", +"0\n}, \n{\n \"ETH_account\" : \"0x0b4082921", +"4537d72006c6944593eb1d58ec3f55a\",\n \"n", +"ame\" : \"0x0b40829214537d7200\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 379000000", +"\n}, \n{\n \"ETH_account\" : \"0x92e3b7360c", +"727d179e8c0c7438422a6dc454cb77\",\n \"na", +"me\" : \"0x92e3b7360c727d179e\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2000\n}, \n{", +"\n \"ETH_account\" : \"0x02002f99b427da49", +"b451098bc93615fab97fbd93\",\n \"name\" : ", +"\"0x02002f99b427da49b4\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 4094635000\n}, \n{", +"\n \"ETH_account\" : \"0xd36cbc5c5654541a", +"5e6fca3b218da0925dcfdb3a\",\n \"name\" : ", +"\"0xd36cbc5c5654541a5e\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 50000000\n}, \n{\n ", +" \"ETH_account\" : \"0xe154550ed778076ca2", +"44907b0f88450b7e022ee0\",\n \"name\" : \"0", +"xe154550ed778076ca2\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 515000000\n}, \n{\n ", +" \"ETH_account\" : \"0xe94c5654a363875a6c1", +"c79aaeddfbf5d5f00ea2b\",\n \"name\" : \"0x", +"e94c5654a363875a6c\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 100000000\n}, \n{\n ", +" \"ETH_account\" : \"0x77eadd5710c9e287cc9f", +"edfc7f3d13916c53bd50\",\n \"name\" : \"0x7", +"7eadd5710c9e287cc\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 21667000\n}, \n{\n \"", +"ETH_account\" : \"0xc4a8dad4a0d0b54c25e144", +"6bc4907c320803a101\",\n \"name\" : \"0xc4a", +"8dad4a0d0b54c25\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 3193253000\n}, \n{\n \"", +"ETH_account\" : \"0x025c7dbc5c1c8d446215ac", +"8f27bbacb668518ad9\",\n \"name\" : \"0x025", +"c7dbc5c1c8d4462\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2242108592\n}, \n{\n \"", +"ETH_account\" : \"0x61ebb7327e6354c158431b", +"c1df21a6532b55825f\",\n \"name\" : \"0x61e", +"bb7327e6354c158\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 233183731\n}, \n{\n \"E", +"TH_account\" : \"0x1ec753205c216b2a6e3bdfc", +"d95a28cd186a32ab0\",\n \"name\" : \"0x1ec7", +"53205c216b2a6e\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1000000000\n}, \n{\n \"E", +"TH_account\" : \"0xb7833b5edecf8c217353a3c", +"281a2138f3f574198\",\n \"name\" : \"0xb783", +"3b5edecf8c2173\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1500000000\n}, \n{\n \"E", +"TH_account\" : \"0x0ea1bf5ce01701b33e2f314", +"e55e5b18148e82787\",\n \"name\" : \"0x0ea1", +"bf5ce01701b33e\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 10028775620\n}, \n{\n \"", +"ETH_account\" : \"0x29311ebd08a700c2689a2f", +"18357647f6e33d2a99\",\n \"name\" : \"0x293", +"11ebd08a700c268\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 475000000\n}, \n{\n \"E", +"TH_account\" : \"0xeeed0e62bd30cd237cfe7a7", +"01fe55a5113e84597\",\n \"name\" : \"0xeeed", +"0e62bd30cd237c\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1150000000\n}, \n{\n \"E", +"TH_account\" : \"0x89c130a041fb9e13755b10b", +"00e3e50d0bfd98c97\",\n \"name\" : \"0x89c1", +"30a041fb9e1375\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 250000000\n}, \n{\n \"ET", +"H_account\" : \"0xb4d4c59bdef0f7a2c42aea39", +"3fc78a1f52750ff7\",\n \"name\" : \"0xb4d4c", +"59bdef0f7a2c4\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1363919649\n}, \n{\n \"ET", +"H_account\" : \"0x8a9c3f046b7afbafa3df1e04", +"4e27d3a7ee4f4d8b\",\n \"name\" : \"dejoere", +"\",\n \"publicKey\" : \"SPH6o4ktQCPQXTonym", +"Vcai3UM8VDfB684DeYVFq81JefXmxZP7Grh\",\n ", +" \"balance\" : 169240000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x186c4be4d3236f950bb854f86e5", +"23ed1cda70c6e\",\n \"name\" : \"0x186c4be4", +"d3236f950b\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xab7fc00eac12af15f9a084ba518592", +"0c4078846a\",\n \"name\" : \"0xab7fc00eac1", +"2af15f9\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 84999999\n}, \n{\n \"ETH_accoun", +"t\" : \"0xeee2264847191886e54e7c68b5ea65d6", +"751db48a\",\n \"name\" : \"0xeee2264847191", +"886e5\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 3000000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x5630307ab78203482be07365f6000aa9", +"6cd4c16e\",\n \"name\" : \"0x5630307ab7820", +"3482b\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 72510646\n}, \n{\n \"ETH_account\"", +" : \"0xb48eda725102f5e26cc02ec56f2e626427", +"6f44fa\",\n \"name\" : \"0xb48eda725102f5e", +"26c\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 349999999\n}, \n{\n \"ETH_account\" ", +": \"0xa044dd278bac854b5dfd78fe532dc5711b2", +"bb8a3\",\n \"name\" : \"0xa044dd278bac854b", +"5d\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 59899713985\n}, \n{\n \"ETH_account\"", +" : \"0x7fce1f550ebcbcea45d94a9dedf87d93ce", +"0ae80e\",\n \"name\" : \"0x7fce1f550ebcbce", +"a45\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 100\n}, \n{\n \"ETH_account\" : \"0x4", +"c57d06cdc06416c6e081053eac492bdfd5ff5a1\"", +",\n \"name\" : \"0x4c57d06cdc06416c6e\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"024446914\n}, \n{\n \"ETH_account\" : \"0xf", +"a39eb4836de19e0b25fd3426cc2e53c89c92b86\"", +",\n \"name\" : \"0xfa39eb4836de19e0b2\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"00000000\n}, \n{\n \"ETH_account\" : \"0xd6", +"0fbaa44fe782bbb0120b3f539458cf3ea04087\",", +"\n \"name\" : \"0xd60fbaa44fe782bbb0\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 25", +"000000\n}, \n{\n \"ETH_account\" : \"0x4117", +"2c06f7df941204da2e264d43bb71c102687e\",\n ", +" \"name\" : \"0x41172c06f7df941204\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 8500", +"0000\n}, \n{\n \"ETH_account\" : \"0x7484b5", +"fb5850167643d18eb282e4c67c49973b6f\",\n ", +" \"name\" : \"0x7484b5fb5850167643\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 181663", +"000\n}, \n{\n \"ETH_account\" : \"0xc7c12e3", +"5f6f10863d51e541dd143a9f6a6c8cbc8\",\n ", +"\"name\" : \"0xc7c12e35f6f10863d5\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1030000", +"00\n}, \n{\n \"ETH_account\" : \"0x4e936a0b", +"69d9bed79dddd7e68e3f497cdd384659\",\n \"", +"name\" : \"pawelbielecki\",\n \"publicKey\"", +" : \"SPH68F2QWC4gGRbKgHKNecZRLyXyHnbG6Kah", +"TqvxJ6WjkQgRM63dd\",\n \"balance\" : 5428", +"71553\n}, \n{\n \"ETH_account\" : \"0x31dcb", +"3e1e8d5f732d3626933dde8b8e739bc8166\",\n ", +" \"name\" : \"0x31dcb3e1e8d5f732d3\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 19999", +"999534\n}, \n{\n \"ETH_account\" : \"0xfaae", +"8fa8bbca49029de92ca4217aa5d1a84c436d\",\n ", +" \"name\" : \"0xfaae8fa8bbca49029d\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 6484", +"72971\n}, \n{\n \"ETH_account\" : \"0xb2334", +"139a4800c2d0a84f70ab8cd80d4e0dcd8b0\",\n ", +" \"name\" : \"slavkolaziale\",\n \"publicK", +"ey\" : \"SPH6bi9b21mMi4NC49xzxWiXvsVezK7gg", +"Pt4uvRGVw3BH5LSy3rfG\",\n \"balance\" : 1", +"328051919\n}, \n{\n \"ETH_account\" : \"0x5", +"02f17fe0ca89c5b51f6c1123b6701ba41943601\"", +",\n \"name\" : \"0x502f17fe0ca89c5b51\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"00000000\n}, \n{\n \"ETH_account\" : \"0xaf", +"5c66376eaf0893f45acd801ed2785c244f27e1\",", +"\n \"name\" : \"0xaf5c66376eaf0893f4\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 25", +"62989986\n}, \n{\n \"ETH_account\" : \"0x8b", +"fc85d04a2baf827f3fa10191c2b2c1e980c676\",", +"\n \"name\" : \"0x8bfc85d04a2baf827f\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 25", +"0000000\n}, \n{\n \"ETH_account\" : \"0xd19", +"6d6a48363953008b72e94cd3b8825e71c0fce\",\n", +" \"name\" : \"0xd196d6a48363953008\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 155", +"725579\n}, \n{\n \"ETH_account\" : \"0x1b1f", +"86a6f6a91d5fe46fa3810c01dc50131f0f89\",\n ", +" \"name\" : \"0x1b1f86a6f6a91d5fe4\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3999", +"999654\n}, \n{\n \"ETH_account\" : \"0x8693", +"ea0df476b1defca25252a45cd86b50d12c7c\",\n ", +" \"name\" : \"0x8693ea0df476b1defc\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1802", +"518000\n}, \n{\n \"ETH_account\" : \"0xbef1", +"e33c3d740672a08cd4db011640a2e4aae35d\",\n ", +" \"name\" : \"0xbef1e33c3d740672a0\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2000", +"000\n}, \n{\n \"ETH_account\" : \"0x8fd9eb8", +"24193849fa61d80f0bd1a346713d1de82\",\n ", +"\"name\" : \"0x8fd9eb824193849fa6\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1100\n},", +" \n{\n \"ETH_account\" : \"0xe77c4f91a4a86", +"cf331af1a27a0a75bf1e7c255e6\",\n \"name\"", +" : \"0xe77c4f91a4a86cf331\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 657183793\n}, ", +"\n{\n \"ETH_account\" : \"0xc6875f82094b96", +"09ac8cf73b561f0b9238d4efe5\",\n \"name\" ", +": \"0xc6875f82094b9609ac\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 150000000\n}, \n", +"{\n \"ETH_account\" : \"0x34760cbb924635b", +"acc73e3d67d663ea5d399a459\",\n \"name\" :", +" \"0x34760cbb924635bacc\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1800000000\n}, \n", +"{\n \"ETH_account\" : \"0x8997935097e8d67", +"79dc51e6cc75272866c1b6fd9\",\n \"name\" :", +" \"0x8997935097e8d6779d\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 455000000\n}, \n{", +"\n \"ETH_account\" : \"0xc80c6f2330a81e25", +"1f98f6f1e0c36da102736d42\",\n \"name\" : ", +"\"0xc80c6f2330a81e251f\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 5054720000\n}, \n{", +"\n \"ETH_account\" : \"0xdb998e738e3cf5fa", +"6ff0c84b2864afd82c57edc7\",\n \"name\" : ", +"\"0xdb998e738e3cf5fa6f\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 39422242\n}, \n{\n ", +" \"ETH_account\" : \"0x6e543bce1590b04aeb", +"c11d0cb81c3378e63065b4\",\n \"name\" : \"0", +"x6e543bce1590b04aeb\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 175000000\n}, \n{\n ", +" \"ETH_account\" : \"0x1fef15f744ff962ad05", +"6ba586a2fea39fc525110\",\n \"name\" : \"0x", +"1fef15f744ff962ad0\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1359999722\n}, \n{\n ", +" \"ETH_account\" : \"0x7640732596bbb19296c", +"6dd0c10d307ed6b2ac7d9\",\n \"name\" : \"0x", +"7640732596bbb19296\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 243516694\n}, \n{\n ", +" \"ETH_account\" : \"0x5c54884c0aaf603b9dd5", +"716182f13cb25002b2a4\",\n \"name\" : \"0x5", +"c54884c0aaf603b9d\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 2059161700\n}, \n{\n ", +" \"ETH_account\" : \"0xba3dbbba51d447cbd3a5", +"643dada375069f16614a\",\n \"name\" : \"mrc", +"ashback\",\n \"publicKey\" : \"SPH8d6zbzrm", +"ykpBMq13CyyvMDHoMTZVCN3JtM2uz95XH8GNhBcF", +"Ss\",\n \"balance\" : 761072776\n}, \n{\n ", +" \"ETH_account\" : \"0x2fd569c6402d97cb8c63", +"57f5f6cb88fc16835fe8\",\n \"name\" : \"0x2", +"fd569c6402d97cb8c\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 362578000\n}, \n{\n ", +"\"ETH_account\" : \"0xe874666e950a0cdd90ca7", +"c52390591742db67a90\",\n \"name\" : \"0xe8", +"74666e950a0cdd90\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 2090000000\n}, \n{\n ", +"\"ETH_account\" : \"0x3ca027517959ca040f55b", +"4aa3a159244ea59deec\",\n \"name\" : \"0x3c", +"a027517959ca040f\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 2764993000\n}, \n{\n ", +"\"ETH_account\" : \"0x136dd3062bcdf1bffb906", +"bc79d0ec37cc327c7d6\",\n \"name\" : \"0x13", +"6dd3062bcdf1bffb\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 24954057631\n}, \n{\n ", +" \"ETH_account\" : \"0xcd57da85d1ac37dd5d30", +"8d0d5381efdec1d7096d\",\n \"name\" : \"0xc", +"d57da85d1ac37dd5d\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 47003987\n}, \n{\n \"", +"ETH_account\" : \"0x63354f15f3f71ece48b046", +"6ca21dacfec8513ab4\",\n \"name\" : \"0x633", +"54f15f3f71ece48\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2500000000\n}, \n{\n \"", +"ETH_account\" : \"0x50dc2b3529387a89ae4e2b", +"843bd419ef94e5486c\",\n \"name\" : \"0x50d", +"c2b3529387a89ae\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1249000000\n}, \n{\n \"", +"ETH_account\" : \"0x47538f2608bcea367477b7", +"81382a65f7969584ac\",\n \"name\" : \"0x475", +"38f2608bcea3674\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 824950000\n}, \n{\n \"E", +"TH_account\" : \"0xc05f3447de9052517bcdde8", +"75ebc652ea7f7673f\",\n \"name\" : \"0xc05f", +"3447de9052517b\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 109998800\n}, \n{\n \"ET", +"H_account\" : \"0x289eeb89743c07a7af87b632", +"5e9fe99ded220109\",\n \"name\" : \"0x289ee", +"b89743c07a7af\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 419000000\n}, \n{\n \"ETH", +"_account\" : \"0x58a0bfe03e17774c7822931c1", +"8f11de5f3c8a8fe\",\n \"name\" : \"0x58a0bf", +"e03e17774c78\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 460000000\n}, \n{\n \"ETH_", +"account\" : \"0x3e0e33ff5dcb0c6fc2233f30c6", +"3df018f4c58d51\",\n \"name\" : \"0x3e0e33f", +"f5dcb0c6fc2\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 379350000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x2f8b899d1541f55ff6bc6910264", +"7ac001431c1f3\",\n \"name\" : \"0x2f8b899d", +"1541f55ff6\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1923000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x4de2df735d52dffa3489702d83e", +"01ad23cb00112\",\n \"name\" : \"0x4de2df73", +"5d52dffa34\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 316000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x51e8a7610655723ff4b4313a56cc", +"56954cb9e141\",\n \"name\" : \"0x51e8a7610", +"655723ff4\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 4849000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x1e60c5bc77eeb2d2de6cd4b40f53", +"7debdbc4e31e\",\n \"name\" : \"0x1e60c5bc7", +"7eeb2d2de\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 2250000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xdf8dca276fd611455067679b3f62", +"d70a6fb5f224\",\n \"name\" : \"0xdf8dca276", +"fd6114550\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 617240000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xb8e9011039f9f69c3ce84b91fdea2", +"5d7740152ed\",\n \"name\" : \"0xb8e9011039", +"f9f69c3c\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 200000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa2e888a972615fa225cf0fd95eea14", +"17178de658\",\n \"name\" : \"0xa2e888a9726", +"15fa225\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 112535695\n}, \n{\n \"ETH_accou", +"nt\" : \"0xf6936de7b90dbd8f4545b6ccca5e1a3", +"d9e3a117a\",\n \"name\" : \"0xf6936de7b90d", +"bd8f45\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 100000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xefdb813ba8b0a0d52f84a49e45d111eb", +"93226326\",\n \"name\" : \"0xefdb813ba8b0a", +"0d52f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 106979963\n}, \n{\n \"ETH_account", +"\" : \"0xbdb7e31264324e4ab66c5be1091eee619", +"f81df9c\",\n \"name\" : \"0xbdb7e31264324e", +"4ab6\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 700000000\n}, \n{\n \"ETH_account\"", +" : \"0xe7cd95d29d87deaa9055c12f103a3c72b3", +"2fab6c\",\n \"name\" : \"0xe7cd95d29d87dea", +"a90\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 50000000\n}, \n{\n \"ETH_account\" :", +" \"0x2db4e430a0f4e0c54d73ae0aa4e0940b6d24", +"f0b1\",\n \"name\" : \"0x2db4e430a0f4e0c54", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 607000000\n}, \n{\n \"ETH_account\" : ", +"\"0x9bb658ce317bde9c1c7b7bfaeffcd07ada179", +"81c\",\n \"name\" : \"0x9bb658ce317bde9c1c", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1000000\n}, \n{\n \"ETH_account\" : \"0x", +"1eb60e174c8fbc7574645b864342591ac4c38466", +"\",\n \"name\" : \"0x1eb60e174c8fbc7574\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"140843131\n}, \n{\n \"ETH_account\" : \"0x8", +"2026d2727e8ade05a4a37ef9fdaf0d881a7611f\"", +",\n \"name\" : \"0x82026d2727e8ade05a\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"00000000\n}, \n{\n \"ETH_account\" : \"0xd2", +"b4da6c1ae4309d79976eaf734a2a329b96e799\",", +"\n \"name\" : \"0xd2b4da6c1ae4309d79\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 30", +"00000000\n}, \n{\n \"ETH_account\" : \"0x90", +"d77e43af287cab44be7cb0d3b9f1277712cb2e\",", +"\n \"name\" : \"0x90d77e43af287cab44\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 13", +"521185572\n}, \n{\n \"ETH_account\" : \"0xe", +"870a1bc614be6a8ca1ac262b59d7883064eec03\"", +",\n \"name\" : \"0xe870a1bc614be6a8ca\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"69\n}, \n{\n \"ETH_account\" : \"0x6ab3feba", +"20164368504e0d992b36fe0e10f8c002\",\n \"", +"name\" : \"0x6ab3feba2016436850\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 11300000", +"0\n}, \n{\n \"ETH_account\" : \"0xffdaf8731", +"06a4083abb460149cdc713b90fd86ae\",\n \"n", +"ame\" : \"0xffdaf873106a4083ab\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 449058000", +"\n}, \n{\n \"ETH_account\" : \"0x46a93c64df", +"e2862151936c1e9fe9641a468bd6b9\",\n \"na", +"me\" : \"0x46a93c64dfe2862151\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 145002629\n", +"}, \n{\n \"ETH_account\" : \"0x084f9c7e749", +"43ab432c014dc0ab0518672872084\",\n \"nam", +"e\" : \"0x084f9c7e74943ab432\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 3331000000\n", +"}, \n{\n \"ETH_account\" : \"0x31704fea104", +"82cb393dc0099ceeda9ed2d00d029\",\n \"nam", +"e\" : \"0x31704fea10482cb393\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 538240000\n}", +", \n{\n \"ETH_account\" : \"0xc997ead3bdfb", +"a73da1f730af751b4514d3303041\",\n \"name", +"\" : \"alexandra\",\n \"publicKey\" : \"SPH5", +"4jEJB9zJDAssmN7gwJSvQkFaN9stkbJxfcNUiZcm", +"JcaDG4pfZ\",\n \"balance\" : 20000000000\n", +"}, \n{\n \"ETH_account\" : \"0x56fc3b9d813", +"05534515c9b8224d2358fbae61493\",\n \"nam", +"e\" : \"deniska\",\n \"publicKey\" : \"SPH8B", +"i1mgBjNXVw92gtZkqC1PEaiA93a1ucZW2LSQqRow", +"6weQ5oVq\",\n \"balance\" : 25000000000\n}", +", \n{\n \"ETH_account\" : \"0x25d5862283ec", +"d79e9a9561ea122132b8ee00033c\",\n \"name", +"\" : \"0x25d5862283ecd79e9a\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1904000000\n}", +", \n{\n \"ETH_account\" : \"0x1c8930ef36d2", +"4a38169f34eabd9be5d3750d1cc1\",\n \"name", +"\" : \"0x1c8930ef36d24a3816\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 25000000000\n", +"}, \n{\n \"ETH_account\" : \"0x5d9bb7fd7ee", +"e732f52478372de678ac10ae9a1b3\",\n \"nam", +"e\" : \"0x5d9bb7fd7eee732f52\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 959584000\n}", +", \n{\n \"ETH_account\" : \"0x0dc766692219", +"0337205aa386428ec8b197f1edf7\",\n \"name", +"\" : \"0x0dc766692219033720\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 453547758\n},", +" \n{\n \"ETH_account\" : \"0x093bd149fb4cd", +"40300a1927ac32a4dfecd8da043\",\n \"name\"", +" : \"0x093bd149fb4cd40300\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 806278000\n}, ", +"\n{\n \"ETH_account\" : \"0x658b7fd2e0e714", +"f8e3106c774520b98a07544ac6\",\n \"name\" ", +": \"0x658b7fd2e0e714f8e3\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 100605535\n}, \n", +"{\n \"ETH_account\" : \"0x64a1d61a403d1e5", +"1aeabb1e4bfa0d1147c1b5edd\",\n \"name\" :", +" \"0x64a1d61a403d1e51ae\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 5259188566\n}, \n", +"{\n \"ETH_account\" : \"0x0d7514cade4c577", +"a0a7653a54f62542ba6b00b6c\",\n \"name\" :", +" \"0x0d7514cade4c577a0a\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1208169620\n}, \n", +"{\n \"ETH_account\" : \"0x57abf7716913c1d", +"a54aa63d55a5c3b6673f39d57\",\n \"name\" :", +" \"0x57abf7716913c1da54\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 98999958\n}, \n{\n", +" \"ETH_account\" : \"0x543808f8847b594a4", +"6725790024b100e8c6e0ed6\",\n \"name\" : \"", +"0x543808f8847b594a46\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 97995269\n}, \n{\n ", +" \"ETH_account\" : \"0x808af905cd5936ffe67", +"8a89a0fc1b949d552189f\",\n \"name\" : \"0x", +"808af905cd5936ffe6\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 544000\n}, \n{\n \"E", +"TH_account\" : \"0x3fef465bf11df9c37e86561", +"ac5e115145e65bbe3\",\n \"name\" : \"0x3fef", +"465bf11df9c37e\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1945000000\n}, \n{\n \"E", +"TH_account\" : \"0xe61400d4d117e394c537c56", +"ccce74f24fbace12b\",\n \"name\" : \"0xe614", +"00d4d117e394c5\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1000000000\n}, \n{\n \"E", +"TH_account\" : \"0x9e048358af48cd985b58144", +"f24f8e32b04614be5\",\n \"name\" : \"0x9e04", +"8358af48cd985b\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 960189550\n}, \n{\n \"ET", +"H_account\" : \"0x068902abcd0cd9a3b9360dbe", +"5b2cec15bb2b4c18\",\n \"name\" : \"0x06890", +"2abcd0cd9a3b9\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 191710721\n}, \n{\n \"ETH", +"_account\" : \"0xa9348c30e4a574d4df00136eb", +"fcb92575cb50d2b\",\n \"name\" : \"0xa9348c", +"30e4a574d4df\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 303000000\n}, \n{\n \"ETH_", +"account\" : \"0x87f8362b85a234ccc46b1254c0", +"c1993f4f89395a\",\n \"name\" : \"0x87f8362", +"b85a234ccc4\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3949000000\n}, \n{\n \"ETH_", +"account\" : \"0x29f4e547496f03d541eccc0005", +"61caf88565337b\",\n \"name\" : \"0x29f4e54", +"7496f03d541\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2336000000\n}, \n{\n \"ETH_", +"account\" : \"0xf2558def995a3e037d466faf73", +"02f7e9a2d205f9\",\n \"name\" : \"0xf2558de", +"f995a3e037d\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 630644000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x7088f566117baa5f2142ec394fc", +"1d0ce00176fe7\",\n \"name\" : \"0x7088f566", +"117baa5f21\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3795377741\n}, \n{\n \"ETH_a", +"ccount\" : \"0xd3e8eee6781273668cfb4a1983f", +"2a4ecd1045a27\",\n \"name\" : \"0xd3e8eee6", +"781273668c\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 111650000\n}, \n{\n \"ETH_ac", +"count\" : \"0x6390fd54c60417839bd24aec4f36", +"9f8fabb051b4\",\n \"name\" : \"0x6390fd54c", +"60417839b\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 805317739\n}, \n{\n \"ETH_acc", +"ount\" : \"0x58b9a17bfe92944cb60f23a3e8516", +"e93f35dbcc5\",\n \"name\" : \"0x58b9a17bfe", +"92944cb6\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 280000000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x2a869609573b3740be93b0cd43b", +"13e3a227ba840\",\n \"name\" : \"ellismarkm", +"an\",\n \"publicKey\" : \"SPH5GbCsPRAapZsH", +"R3TPoFmNk91GwwKxzydr82CFhepwNRUwwctA4\",\n", +" \"balance\" : 750000000\n}, \n{\n \"ETH", +"_account\" : \"0xe834fd3e514b8aec9dc002d9d", +"d3f137ee8508770\",\n \"name\" : \"0xe834fd", +"3e514b8aec9d\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1310000000\n}, \n{\n \"ETH", +"_account\" : \"0x4938fc6a8f0f450e1cbf4829d", +"4cb1fbe6fccd039\",\n \"name\" : \"0x4938fc", +"6a8f0f450e1c\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 299102000\n}, \n{\n \"ETH_", +"account\" : \"0xbf8505625233d3307aadf4f4be", +"493f8e5dde3944\",\n \"name\" : \"0xbf85056", +"25233d3307a\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 173000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x6e1647a9b0a3ec90cc5a0cb026d", +"dbe818f2ae115\",\n \"name\" : \"0x6e1647a9", +"b0a3ec90cc\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 500000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x92c837330ee6833fd4c8a734c43a", +"f6938f15dc89\",\n \"name\" : \"0x92c837330", +"ee6833fd4\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 34427858519\n}, \n{\n \"ETH_a", +"ccount\" : \"0x358f8c59181fdc509ce0e2b57f5", +"2f990ad57f599\",\n \"name\" : \"0x358f8c59", +"181fdc509c\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 75726785\n}, \n{\n \"ETH_acc", +"ount\" : \"0xb7b450b7fa2c1031e1c4307e9ee31", +"05fcc8849d7\",\n \"name\" : \"0xb7b450b7fa", +"2c1031e1\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1251168995\n}, \n{\n \"ETH_acc", +"ount\" : \"0xc707092bd2b059f9afb06b28396b5", +"47a0996589e\",\n \"name\" : \"0xc707092bd2", +"b059f9af\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2105296278\n}, \n{\n \"ETH_acc", +"ount\" : \"0x99865c50c2031e4160e7c35176396", +"6ae4cd958a5\",\n \"name\" : \"0x99865c50c2", +"031e4160\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 151141000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xe3f93ac6a6fcf839f0bc4b886b33f6", +"6098d9a5f4\",\n \"name\" : \"0xe3f93ac6a6f", +"cf839f0\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 2873995400\n}, \n{\n \"ETH_acco", +"unt\" : \"0x6b948fde930f8d1c864e8820038c88", +"ca7c745e00\",\n \"name\" : \"0x6b948fde930", +"f8d1c86\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 935000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xd2f744b96f7ea8825ac2f6a4ba4c0ff", +"549e2459c\",\n \"name\" : \"0xd2f744b96f7e", +"a8825a\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 8457578928\n}, \n{\n \"ETH_accou", +"nt\" : \"0x404c263659d3f00c02f40ad114b1d79", +"34c5ccefb\",\n \"name\" : \"0x404c263659d3", +"f00c02\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 9000\n}, \n{\n \"ETH_account\" : ", +"\"0xf3c48dab20a7cd42c36c9eea3bc0f8d0184bf", +"a20\",\n \"name\" : \"0xf3c48dab20a7cd42c3", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 13595000\n}, \n{\n \"ETH_account\" : \"0", +"xbd82af91a0b2cb02b70b671a7112d354d48f946", +"f\",\n \"name\" : \"0xbd82af91a0b2cb02b7\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 190000000\n}, \n{\n \"ETH_account\" : \"0x", +"a54f6bb4ef101d6a743c2e591d36b22bcc38fcd5", +"\",\n \"name\" : \"0xa54f6bb4ef101d6a74\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"41000\n}, \n{\n \"ETH_account\" : \"0xf710d", +"bc6756ede8bc7157f18dc6bf5046f7f993a\",\n ", +" \"name\" : \"0xf710dbc6756ede8bc7\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 20000", +"000000\n}, \n{\n \"ETH_account\" : \"0xd9b4", +"88ddc9afec3c1368e23625890b8b17d09754\",\n ", +" \"name\" : \"0xd9b488ddc9afec3c13\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1500", +"000000\n}, \n{\n \"ETH_account\" : \"0xcae1", +"3f1a7dd759b45f92cbf3e0a1cae9e87c65cd\",\n ", +" \"name\" : \"lzcsphtx\",\n \"publicKey\" ", +": \"SPH6nvAXZk59PiAd8dKwVHvihHUNyKgzkArBi", +"6SyYKhng8YrboynW\",\n \"balance\" : 56653", +"6999\n}, \n{\n \"ETH_account\" : \"0xca7e7a", +"fabe2287256a1af834bdd88f0128bcb03a\",\n ", +" \"name\" : \"0xca7e7afabe2287256a\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 127500", +"0000\n}, \n{\n \"ETH_account\" : \"0x419ed8", +"5098dbdbe76dabe2060add2dbe5c2ec5f6\",\n ", +" \"name\" : \"0x419ed85098dbdbe76d\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 960000", +"00\n}, \n{\n \"ETH_account\" : \"0x8182c119", +"13114c8bfcc4ccb43cfbb2cb1d592874\",\n \"", +"name\" : \"0x8182c11913114c8bfc\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 23200000", +"0\n}, \n{\n \"ETH_account\" : \"0xc8d8737ff", +"f15b4e95d459375974556297dd069fa\",\n \"n", +"ame\" : \"0xc8d8737fff15b4e95d\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 493970000", +"\n}, \n{\n \"ETH_account\" : \"0x624fd4cec9", +"1c4a30c3be2d43c85f012bdf73a990\",\n \"na", +"me\" : \"0x624fd4cec91c4a30c3\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 278635581\n", +"}, \n{\n \"ETH_account\" : \"0x492ea4b33de", +"4ca9c9055a49a809885350ef0cfa1\",\n \"nam", +"e\" : \"0x492ea4b33de4ca9c90\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 222775761\n}", +", \n{\n \"ETH_account\" : \"0xcc62ac9036f6", +"d0f253614d465120316f440a9745\",\n \"name", +"\" : \"asrogog\",\n \"publicKey\" : \"SPH5Mo", +"aTg7L6hjcWca7LB29rHG8yDxwvzMVoXK5rPNVKg9", +"zzPZzVJ\",\n \"balance\" : 115601486827\n}", +", \n{\n \"ETH_account\" : \"0xfc2b54c56721", +"c689ebe221fba9cf3bf38070009e\",\n \"name", +"\" : \"0xfc2b54c56721c689eb\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 3830000000\n}", +", \n{\n \"ETH_account\" : \"0x9d737ba0125d", +"678910057235a4d81b45396444fe\",\n \"name", +"\" : \"0x9d737ba0125d678910\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 922794000\n},", +" \n{\n \"ETH_account\" : \"0x12ed40389dc42", +"a563520974514da1c5fd631e88a\",\n \"name\"", +" : \"0x12ed40389dc42a5635\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 15000000\n}, \n", +"{\n \"ETH_account\" : \"0x6d6f44b6602b081", +"7250285dc3f4dfe0288fb0193\",\n \"name\" :", +" \"0x6d6f44b6602b081725\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 3750000000\n}, \n", +"{\n \"ETH_account\" : \"0x44eb60b0581442f", +"7d37a7a2f33a4dab936686fed\",\n \"name\" :", +" \"0x44eb60b0581442f7d3\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 10110887000\n}, ", +"\n{\n \"ETH_account\" : \"0xfc63b0eb572947", +"e7bd710dd3a5731611c5b9d690\",\n \"name\" ", +": \"0xfc63b0eb572947e7bd\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 200000000\n}, \n", +"{\n \"ETH_account\" : \"0x1dee78021658a91", +"63a5ea6376d9a85c647e62121\",\n \"name\" :", +" \"0x1dee78021658a9163a\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 81\n}, \n{\n \"E", +"TH_account\" : \"0xccaf8b71f390877a720619a", +"b580118c96de7ebee\",\n \"name\" : \"0xccaf", +"8b71f390877a72\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 500000000\n}, \n{\n \"ET", +"H_account\" : \"0x0ba35173f63a5b9828e27590", +"2079f4d2e4c600c5\",\n \"name\" : \"lucvand", +"even\",\n \"publicKey\" : \"SPH8ewBmMbWzpF", +"uiEVYQPDvf8GdMhDmsyyrgZtJpBdAtvnpn7mq7T\"", +",\n \"balance\" : 18084380872\n}, \n{\n ", +"\"ETH_account\" : \"0x46508919451c4ade96ad0", +"2f7b21397fa63b09328\",\n \"name\" : \"0x46", +"508919451c4ade96\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 81000000\n}, \n{\n \"E", +"TH_account\" : \"0x2b4384d9169860788f2329b", +"4c7e442d6a2ddcd59\",\n \"name\" : \"0x2b43", +"84d9169860788f\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 104795000\n}, \n{\n \"ET", +"H_account\" : \"0x952f2c4b1a9c0938b71b9db4", +"86211fe90fa89c0d\",\n \"name\" : \"0x952f2", +"c4b1a9c0938b7\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 3951000000\n}, \n{\n \"ET", +"H_account\" : \"0x66241dd01f0dda05e7299ac3", +"b668d890703161c8\",\n \"name\" : \"0x66241", +"dd01f0dda05e7\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 481000000\n}, \n{\n \"ETH", +"_account\" : \"0xb892a5d1b30cdd61d3c1b8d3a", +"f1318dd486e9e7a\",\n \"name\" : \"0xb892a5", +"d1b30cdd61d3\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 387564019\n}, \n{\n \"ETH_", +"account\" : \"0x6c9a9b5a4fcaa55912605d81c4", +"5d9cd25c20b139\",\n \"name\" : \"0x6c9a9b5", +"a4fcaa55912\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1633941843\n}, \n{\n \"ETH_", +"account\" : \"0xea6df7aaec4255f8f253518540", +"5b43cf4df6fbe2\",\n \"name\" : \"0xea6df7a", +"aec4255f8f2\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 958678755\n}, \n{\n \"ETH_a", +"ccount\" : \"0x856523005bc438e8242a130e55d", +"217db51b04984\",\n \"name\" : \"0x85652300", +"5bc438e824\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 98703918\n}, \n{\n \"ETH_acc", +"ount\" : \"0xab6d707219cbb1f52511fc937d311", +"a5f4e3ba5cd\",\n \"name\" : \"0xab6d707219", +"cbb1f525\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 101000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xf3ee599429541ee8cd571241a58678", +"3a6c07c1b6\",\n \"name\" : \"0xf3ee5994295", +"41ee8cd\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 36000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xbb370213488ce4bf684d2ca3db6e12b5", +"acf6472f\",\n \"name\" : \"0xbb370213488ce", +"4bf68\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 5000000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x77803f3872d839032bded84118809766", +"0101fe90\",\n \"name\" : \"0x77803f3872d83", +"9032b\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 33000000\n}, \n{\n \"ETH_account\"", +" : \"0x100c6521b1fed91912da0b3f3e387487b2", +"218a9e\",\n \"name\" : \"0x100c6521b1fed91", +"912\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 50000000\n}, \n{\n \"ETH_account\" :", +" \"0xab87e34051c42ba59f3248d9f60d960c6a31", +"ae2a\",\n \"name\" : \"0xab87e34051c42ba59", +"f\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 100000000\n}, \n{\n \"ETH_account\" : ", +"\"0xf4fdb19ed0c62664d06e6a4ea8ee18f46fd57", +"56c\",\n \"name\" : \"timonio\",\n \"publi", +"cKey\" : \"SPH8HZi9HtVcXXHYU54yuRyVNzYvKtq", +"G55ayAnS1ccvTkTFsn5AYn\",\n \"balance\" :", +" 201099035\n}, \n{\n \"ETH_account\" : \"0x", +"30a11bed3d5397450f9acdcc146e06bfcefb0a8f", +"\",\n \"name\" : \"0x30a11bed3d5397450f\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"946240000\n}, \n{\n \"ETH_account\" : \"0x5", +"19e21a4bf3eb67d811b04b4d8d44deaba5f5e0a\"", +",\n \"name\" : \"0x519e21a4bf3eb67d81\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"309996920\n}, \n{\n \"ETH_account\" : \"0x4", +"eb7f19d6efcace59eaed70220da5002709f9b71\"", +",\n \"name\" : \"0x4eb7f19d6efcace59e\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 6", +"5000000\n}, \n{\n \"ETH_account\" : \"0x278", +"28fee94154227baad31ea519a979b69ace735\",\n", +" \"name\" : \"koolsphtx\",\n \"publicKey", +"\" : \"SPH5bWZR4JoC1d9Hbywy3fjx8TEDR57rLxe", +"RSdsUoFcuzAXcSC7zY\",\n \"balance\" : 815", +"477677\n}, \n{\n \"ETH_account\" : \"0xe81d", +"7ebf9fa37fe06b58b12b13eae23f4c2d150c\",\n ", +" \"name\" : \"0xe81d7ebf9fa37fe06b\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2624", +"562692\n}, \n{\n \"ETH_account\" : \"0x5268", +"9058d82941fdb6cfccb8eb13ceef33846290\",\n ", +" \"name\" : \"0x52689058d82941fdb6\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3152", +"69855\n}, \n{\n \"ETH_account\" : \"0xef8a8", +"361dcc8ef2bf0a68f63fdf5a82d8d3ca2aa\",\n ", +" \"name\" : \"0xef8a8361dcc8ef2bf0\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 42000", +"000\n}, \n{\n \"ETH_account\" : \"0xc132959", +"b08b33caa29eb9f6664550133f28fd081\",\n ", +"\"name\" : \"0xc132959b08b33caa29\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2488070", +"00\n}, \n{\n \"ETH_account\" : \"0x67420fae", +"03b93b0c2a002e7bbcfc46f84725f394\",\n \"", +"name\" : \"0x67420fae03b93b0c2a\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 43809684", +"84\n}, \n{\n \"ETH_account\" : \"0x94d28636", +"a154667b5f871035978401f4f37c5964\",\n \"", +"name\" : \"0x94d28636a154667b5f\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 66185000", +"0\n}, \n{\n \"ETH_account\" : \"0xe33f141d9", +"6531a24ed66a535de24ebf354e1f9d2\",\n \"n", +"ame\" : \"0xe33f141d96531a24ed\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 100000000", +"0\n}, \n{\n \"ETH_account\" : \"0x3d43a765c", +"afad4605dce3d64603d6ddbd6445c33\",\n \"n", +"ame\" : \"0x3d43a765cafad4605d\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 306500000", +"0\n}, \n{\n \"ETH_account\" : \"0x5f1dbfa6e", +"f0e0d72f154e89bc177333d59d0ff78\",\n \"n", +"ame\" : \"0x5f1dbfa6ef0e0d72f1\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 50000000\n", +"}, \n{\n \"ETH_account\" : \"0xc7d7272cfb4", +"ae17b32ff5fa0856b35511a0e912e\",\n \"nam", +"e\" : \"0xc7d7272cfb4ae17b32\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 275062675\n}", +", \n{\n \"ETH_account\" : \"0x8f51a2a31389", +"21f0d5d6fa6f5ad86e5880869674\",\n \"name", +"\" : \"rbn12sphtx\",\n \"publicKey\" : \"SPH", +"7yNfXD81Wp41ziuYmHN4gtg5HvDZb6QubT7f75Xi", +"mdbk1WoLsN\",\n \"balance\" : 1734000000\n", +"}, \n{\n \"ETH_account\" : \"0xc61f6d9b9ba", +"15dfcd5f0b8dca9d78a5807790669\",\n \"nam", +"e\" : \"0xc61f6d9b9ba15dfcd5\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 39576040\n},", +" \n{\n \"ETH_account\" : \"0x3d3fee649775b", +"651da371545f3c1b31baf784c6d\",\n \"name\"", +" : \"0x3d3fee649775b651da\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 540000000\n}, ", +"\n{\n \"ETH_account\" : \"0x6fb6c4df41cbae", +"1810ac182d54b0436db347adc2\",\n \"name\" ", +": \"0x6fb6c4df41cbae1810\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1000000000\n}, ", +"\n{\n \"ETH_account\" : \"0x2f8453c585f00c", +"18c1f5160438fcb9890992de62\",\n \"name\" ", +": \"0x2f8453c585f00c18c1\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 100000000\n}, \n", +"{\n \"ETH_account\" : \"0x3cd6bbd3c8334e2", +"20cfd02a82029f543eb54b46e\",\n \"name\" :", +" \"0x3cd6bbd3c8334e220c\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 389198410\n}, \n{", +"\n \"ETH_account\" : \"0xa8b1684bef12d1bf", +"25e6c459c0dfa05f9a896dca\",\n \"name\" : ", +"\"0xa8b1684bef12d1bf25\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 915825100\n}, \n{\n", +" \"ETH_account\" : \"0xeaeec13a03d36e65e", +"5ebc617d1f6c04d06b288de\",\n \"name\" : \"", +"0xeaeec13a03d36e65e5\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 325680000\n}, \n{\n ", +" \"ETH_account\" : \"0x34b0dba9dd9a211538", +"4e46cd92890a7e8cd4e0fe\",\n \"name\" : \"0", +"x34b0dba9dd9a211538\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 14633680000\n}, \n{\n", +" \"ETH_account\" : \"0xec73f44a0263c5e25", +"aa337a41fc964b448d284b9\",\n \"name\" : \"", +"0xec73f44a0263c5e25a\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 170000000\n}, \n{\n ", +" \"ETH_account\" : \"0x9227f9154d67c6dc3b", +"01474a2e17d3c1262b84f8\",\n \"name\" : \"g", +"iusphtxcoins\",\n \"publicKey\" : \"SPH74G", +"mK4V7TtdFmXqHG9pTcgGC5AFWL8CYwhX2PmWXKeP", +"YVLe5w9\",\n \"balance\" : 1162133089\n}, ", +"\n{\n \"ETH_account\" : \"0x9a45cf18ffc849", +"adabc938bfb3cee1e4d933c54e\",\n \"name\" ", +": \"0x9a45cf18ffc849adab\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 50000000\n}, \n{", +"\n \"ETH_account\" : \"0xb090af05ffe6dc26", +"489693c2aee3926d9d849106\",\n \"name\" : ", +"\"0xb090af05ffe6dc2648\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1203944623\n}, \n{", +"\n \"ETH_account\" : \"0x77507811f40d3ad1", +"2dbba6e692b85763eb5ad5d3\",\n \"name\" : ", +"\"0x77507811f40d3ad12d\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 200000000\n}, \n{\n", +" \"ETH_account\" : \"0xfd5da35d5012bed88", +"2b41b23275834c10ed8fafb\",\n \"name\" : \"", +"0xfd5da35d5012bed882\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 17339274366\n}, \n{", +"\n \"ETH_account\" : \"0x820092634f7fabe6", +"97af63a1fe45ca330be2089a\",\n \"name\" : ", +"\"0x820092634f7fabe697\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 80000000\n}, \n{\n ", +" \"ETH_account\" : \"0xe40164bfbd43f555b9", +"968ee770af68924548635f\",\n \"name\" : \"0", +"xe40164bfbd43f555b9\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1600000000\n}, \n{\n ", +" \"ETH_account\" : \"0x151f9ddf7b3adcda57", +"1d12a8aa77eed575e5fe66\",\n \"name\" : \"0", +"x151f9ddf7b3adcda57\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 57063839442\n}, \n{\n", +" \"ETH_account\" : \"0xa983572aa0094ca8b", +"5fd27837f3bb9d248949c88\",\n \"name\" : \"", +"0xa983572aa0094ca8b5\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 983393000\n}, \n{\n ", +" \"ETH_account\" : \"0x76f40a8ed2c6aa31f6", +"c19dc77cdfd51cd8734fc1\",\n \"name\" : \"0", +"x76f40a8ed2c6aa31f6\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1829760\n}, \n{\n ", +"\"ETH_account\" : \"0xdf1979e330d5aaec02589", +"c43fce179c6aa26fb11\",\n \"name\" : \"0xdf", +"1979e330d5aaec02\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1645133000\n}, \n{\n ", +"\"ETH_account\" : \"0x51ab59b6ce05f520de211", +"c9cb9e86d9b36510988\",\n \"name\" : \"kckc", +"\",\n \"publicKey\" : \"SPH7dmLrhsyTgBePYR", +"MhMqSRie3vtuTjC1uH55FM8tExb57Z5yf8g\",\n ", +" \"balance\" : 113976528900\n}, \n{\n \"ET", +"H_account\" : \"0x4b7e6ede5324976e0819d7d6", +"4fc17f40831bfd7c\",\n \"name\" : \"aryalpa", +"w\",\n \"publicKey\" : \"SPH6ArStiaoNu1pQP", +"Hn6RPK4gwwTUZFqJC22oJpBcrNUBbVkP9WRk\",\n ", +" \"balance\" : 5183998768\n}, \n{\n \"ETH", +"_account\" : \"0x30146933a3a0babc74ec0b340", +"3bec69281ba5914\",\n \"name\" : \"0x301469", +"33a3a0babc74\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2984804325531\n}, \n{\n \"", +"ETH_account\" : \"0x2b551e0a33bfdce1481e6c", +"64a3d6b99b74a538f9\",\n \"name\" : \"0x2b5", +"51e0a33bfdce148\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1900000\n}, \n{\n \"ETH", +"_account\" : \"0x7c5a212ad007a758ea0ad6b62", +"913d6f9af9fa745\",\n \"name\" : \"0x7c5a21", +"2ad007a758ea\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2093968931\n}, \n{\n \"ETH", +"_account\" : \"0x283687d345f7911cee7907f5e", +"2c43c46a7f7a2f5\",\n \"name\" : \"0x283687", +"d345f7911cee\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 91000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xce42efbe5ba300a19e6968bf833", +"f9aa50f9830b1\",\n \"name\" : \"0xce42efbe", +"5ba300a19e\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 465000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xbe89da00236c30c3c0081a152c43", +"120eaba0a10e\",\n \"name\" : \"zedjsophia\"", +",\n \"publicKey\" : \"SPH6K1CcYpuRjh9JrmJ", +"meKBsFPuYHn4WPftWDehJasub7EV14LSzt\",\n ", +" \"balance\" : 4999999948\n}, \n{\n \"ETH_a", +"ccount\" : \"0x3bd2e1ee90cb492d204b74e492e", +"b22f318c47362\",\n \"name\" : \"0x3bd2e1ee", +"90cb492d20\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 950000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xa38201fc7836593336f9f30e77f9", +"039915aad5c7\",\n \"name\" : \"popcaughan\"", +",\n \"publicKey\" : \"SPH6tWEnFBK8C7M7RHp", +"f5b7xNh5ycoPUYbzAdQ5hme4RLkcM8Na24\",\n ", +" \"balance\" : 11929435223\n}, \n{\n \"ETH_", +"account\" : \"0xf9f24689a9917fd7247fd37440", +"34d106e755a4ee\",\n \"name\" : \"0xf9f2468", +"9a9917fd724\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 53957749912\n}, \n{\n \"ETH", +"_account\" : \"0xdafecb8ffd1ab699c6017cd87", +"f28b9edfea6a5cd\",\n \"name\" : \"0xdafecb", +"8ffd1ab699c6\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 42604000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xac1a58aeba1cb56ceaa7c098c91", +"67c7be967814b\",\n \"name\" : \"0xac1a58ae", +"ba1cb56cea\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1755000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x989a9969899940f2b42e9201c18", +"ea662b380cd3c\",\n \"name\" : \"0x989a9969", +"899940f2b4\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 415694094\n}, \n{\n \"ETH_ac", +"count\" : \"0xf5f29a7578e9b649cd464c003108", +"61c7c802b299\",\n \"name\" : \"0xf5f29a757", +"8e9b649cd\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 890000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x041988a409a26c121a3338988b485", +"ad15a3c854e\",\n \"name\" : \"0x041988a409", +"a26c121a\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 9101559893\n}, \n{\n \"ETH_acc", +"ount\" : \"0x85702851c3cf5d1bd2b1363fdef3d", +"04de3bdbf33\",\n \"name\" : \"0x85702851c3", +"cf5d1bd2\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1379190000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x74d9a9ccd55750114ec83cb1ddeb6", +"e48a65b854c\",\n \"name\" : \"0x74d9a9ccd5", +"5750114e\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 655961000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x30924c23b76f1400711e35eaa07c35", +"0d22b809ca\",\n \"name\" : \"0x30924c23b76", +"f140071\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 900000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xd8c662c609210421943b55d86b4fea4", +"b7ecbe838\",\n \"name\" : \"0xd8c662c60921", +"042194\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1600000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x4e892c99377da2137688796e8fdd6da", +"4be22b82d\",\n \"name\" : \"0x4e892c99377d", +"a21376\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 2755400000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x8fb9afdcc074599d86327b731f47ffa", +"5375823a9\",\n \"name\" : \"0x8fb9afdcc074", +"599d86\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 134557506\n}, \n{\n \"ETH_accoun", +"t\" : \"0xcc51489202d3be034f08abf1c3be6ea3", +"225d4563\",\n \"name\" : \"0xcc51489202d3b", +"e034f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 20000000\n}, \n{\n \"ETH_account\"", +" : \"0x8151de0dec72c2bef06cf1e8fb63a4f91d", +"3b7257\",\n \"name\" : \"0x8151de0dec72c2b", +"ef0\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 3800010000\n}, \n{\n \"ETH_account\"", +" : \"0xf9b181e8178fc1e69f5582b9e7ad40dd83", +"470a5b\",\n \"name\" : \"0xf9b181e8178fc1e", +"69f\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 5720000000\n}, \n{\n \"ETH_account\"", +" : \"0x4ad330e8b16bcb8546f99239e1e4d95280", +"c93226\",\n \"name\" : \"ged\",\n \"public", +"Key\" : \"SPH81xXfWwi1JiWLCWyvGuSEbRDp1RuC", +"EVGGq2rxdpDdGEoG5sURG\",\n \"balance\" : ", +"2782000000\n}, \n{\n \"ETH_account\" : \"0x", +"50a0a0cba830f20d48a5fe460001887d3e1b0ed2", +"\",\n \"name\" : \"0x50a0a0cba830f20d48\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1040000000\n}, \n{\n \"ETH_account\" : \"0x", +"f6fc9a45ec4e0637f97317fd1aa8a2a515a7b68b", +"\",\n \"name\" : \"0xf6fc9a45ec4e0637f9\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"5602366600\n}, \n{\n \"ETH_account\" : \"0x", +"0054901603fc5ea771bbcbd7ed9c3e50ed41f0d2", +"\",\n \"name\" : \"0x0054901603fc5ea771\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1103000000\n}, \n{\n \"ETH_account\" : \"0x", +"dea5b871c0ffcf98cc1c5a15499f4fca6c9cf8b6", +"\",\n \"name\" : \"0xdea5b871c0ffcf98cc\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"100000000\n}, \n{\n \"ETH_account\" : \"0x7", +"ead384943e320fe83cb230a9fe28507e02d8bf0\"", +",\n \"name\" : \"0x7ead384943e320fe83\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"300656300\n}, \n{\n \"ETH_account\" : \"0xd", +"47bb4ca098f091d843101a62cf3412997d3d8ee\"", +",\n \"name\" : \"0xd47bb4ca098f091d84\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"668774400\n}, \n{\n \"ETH_account\" : \"0x3", +"b1167f23b42001e82e59c4cd14a64251c83f222\"", +",\n \"name\" : \"0x3b1167f23b42001e82\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"36000000\n}, \n{\n \"ETH_account\" : \"0xdf", +"f376e39ff29b872cd28c87217c1a6c31caae46\",", +"\n \"name\" : \"inkeye\",\n \"publicKey\" ", +": \"SPH5daiatbxaJP6AKDCid9BTvxYipHGLg5vKk", +"BLT5ALEsfG831xek\",\n \"balance\" : 11200", +"0000\n}, \n{\n \"ETH_account\" : \"0xa23525", +"7616aa70d61d776838f7446be825e0b97e\",\n ", +" \"name\" : \"0xa235257616aa70d61d\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 286400", +"0000\n}, \n{\n \"ETH_account\" : \"0x88a4f8", +"612ad5d48fd6ce7814d31971fc6453ff8b\",\n ", +" \"name\" : \"0x88a4f8612ad5d48fd6\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 200000", +"0\n}, \n{\n \"ETH_account\" : \"0xfa9b795b6", +"78a5463bd3e99323df0385d324f306a\",\n \"n", +"ame\" : \"0xfa9b795b678a5463bd\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 900000000", +"\n}, \n{\n \"ETH_account\" : \"0x5a39ab2c2d", +"3da753ce124bbfd64b2ba0e66d6fe1\",\n \"na", +"me\" : \"0x5a39ab2c2d3da753ce\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 4500000000", +"\n}, \n{\n \"ETH_account\" : \"0x49e94df2af", +"0206bc64ef4de76425e282fcbcf88f\",\n \"na", +"me\" : \"0x49e94df2af0206bc64\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2300000000", +"\n}, \n{\n \"ETH_account\" : \"0x986c415ad0", +"46a5bcdf94709b788c72da2d5ef608\",\n \"na", +"me\" : \"0x986c415ad046a5bcdf\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 450522900\n", +"}, \n{\n \"ETH_account\" : \"0x6f1108e513c", +"52857f8728a8b38dd8265eca74774\",\n \"nam", +"e\" : \"0x6f1108e513c52857f8\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1395000000\n", +"}, \n{\n \"ETH_account\" : \"0x0bf44bd4746", +"63b14842fffe2ed9202fc0d4e3b4d\",\n \"nam", +"e\" : \"0x0bf44bd474663b1484\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 126500000\n}", +", \n{\n \"ETH_account\" : \"0x082163ebddbf", +"26e0a5c74123dadae25fe1b614da\",\n \"name", +"\" : \"0x082163ebddbf26e0a5\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 360000000\n},", +" \n{\n \"ETH_account\" : \"0xd63cdb7bb9a18", +"b0ab298fbde1f4355d0f6d159e9\",\n \"name\"", +" : \"0xd63cdb7bb9a18b0ab2\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 4018009288\n},", +" \n{\n \"ETH_account\" : \"0x43c8a4824f318", +"39d9f815a7acbb0c5804a22d98f\",\n \"name\"", +" : \"0x43c8a4824f31839d9f\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 956000000\n}, ", +"\n{\n \"ETH_account\" : \"0xb7e12fb64758fd", +"6240164788518740e5babd071d\",\n \"name\" ", +": \"0xb7e12fb64758fd6240\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 524500000\n}, \n", +"{\n \"ETH_account\" : \"0x620e9948a3d2158", +"376c4824256ed15f4e49b53bb\",\n \"name\" :", +" \"0x620e9948a3d2158376\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 190000000\n}, \n{", +"\n \"ETH_account\" : \"0xcd0f7e6189611619", +"52c5414398ab83859ec4d51f\",\n \"name\" : ", +"\"0xcd0f7e618961161952\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1234000000\n}, \n{", +"\n \"ETH_account\" : \"0x68257cb26cd98cc7", +"e0d89f7b00986c844958b664\",\n \"name\" : ", +"\"toni\",\n \"publicKey\" : \"SPH5KfNGvxgRr", +"y2e9qzrxCR4P7QMSuThGU6Bd5Hj3vHaULaq4FjF6", +"\",\n \"balance\" : 4833000000\n}, \n{\n ", +"\"ETH_account\" : \"0x0946256235147f0699fa3", +"ade60604ab8163a5a21\",\n \"name\" : \"0x09", +"46256235147f0699\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 419000000\n}, \n{\n \"", +"ETH_account\" : \"0x37c8a95ac5357bfc98115d", +"47b5185ced4f36d20f\",\n \"name\" : \"0x37c", +"8a95ac5357bfc98\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2313000000\n}, \n{\n \"", +"ETH_account\" : \"0x1607d663c0cc2c351e0051", +"e33cf528f272453529\",\n \"name\" : \"0x160", +"7d663c0cc2c351e\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 20000000\n}, \n{\n \"ET", +"H_account\" : \"0x282c1d39fbeafaf78d0fd21b", +"19085a7c55dcd4e8\",\n \"name\" : \"0x282c1", +"d39fbeafaf78d\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 154000000\n}, \n{\n \"ETH", +"_account\" : \"0xf5a3ab5ca4772e67dfa6f207a", +"409b72206923026\",\n \"name\" : \"0xf5a3ab", +"5ca4772e67df\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1000000000\n}, \n{\n \"ETH", +"_account\" : \"0x5d9fc7678b7a312a061f44cfb", +"aa00a775d35fcc6\",\n \"name\" : \"0x5d9fc7", +"678b7a312a06\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 9726586062\n}, \n{\n \"ETH", +"_account\" : \"0x55aaed3f28e4be9efc5f117d1", +"0956673ca89494a\",\n \"name\" : \"0x55aaed", +"3f28e4be9efc\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 329000000\n}, \n{\n \"ETH_", +"account\" : \"0x7f3d78391269d49c4b0c09f036", +"41ddc89159b79d\",\n \"name\" : \"0x7f3d783", +"91269d49c4b\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 15890828300\n}, \n{\n \"ETH", +"_account\" : \"0xbd070551ecc2aecc552fb99e9", +"5ae649d1bcbb284\",\n \"name\" : \"0xbd0705", +"51ecc2aecc55\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 210547400\n}, \n{\n \"ETH_", +"account\" : \"0x3b3ff0bc9ee963b5bae2291a2d", +"b5cfdadd68afa9\",\n \"name\" : \"0x3b3ff0b", +"c9ee963b5ba\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 201000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x00e5966e89c76851efbee846809", +"35d14f8b7bece\",\n \"name\" : \"kim\",\n ", +"\"publicKey\" : \"SPH7VYNHWuorsJMEc2AZFkH3R", +"HYuyRs4vhWESVdxwrhizg7ZmKLi3\",\n \"bala", +"nce\" : 200000000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xe6dfc63a5e8c26f7c95372c29cc09e4", +"c37a310ef\",\n \"name\" : \"0xe6dfc63a5e8c", +"26f7c9\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 12966000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x938c28f83e68ec270caf2b65356579", +"b95e07b138\",\n \"name\" : \"0x938c28f83e6", +"8ec270c\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 6800000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x29d7ce269b5440ae98b0309a1fd5fd", +"f06968f09e\",\n \"name\" : \"0x29d7ce269b5", +"440ae98\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 903805000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x7df514f2b51ac3ae95a7c6445a7b9f7", +"49d1a2897\",\n \"name\" : \"delianisdik\",\n", +" \"publicKey\" : \"SPH8UErt3Q5CZpXU2FZGw", +"sn887gvRXH5fbxg7ns1gLBdo5qBq9eN1\",\n \"", +"balance\" : 13037519000\n}, \n{\n \"ETH_ac", +"count\" : \"0x1a012d720b748f0e776cd53d9d9b", +"d50c52b3d76e\",\n \"name\" : \"0x1a012d720", +"b748f0e77\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 390000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x6126711ebcbd839b90eaaa4755c34", +"e38825ddb24\",\n \"name\" : \"alpha\",\n ", +"\"publicKey\" : \"SPH53ELPbZLLmzQCuEJxb91fc", +"nskjFVmPUb8qYNdC8hB5p4pyGHqr\",\n \"bala", +"nce\" : 1621000000\n}, \n{\n \"ETH_account", +"\" : \"0x70b35bd5b84ab5051e0cfd9a4098a9ab8", +"b69102b\",\n \"name\" : \"0x70b35bd5b84ab5", +"051e\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 3175166200\n}, \n{\n \"ETH_account", +"\" : \"0xee76d34d75ee0a72540abca5b26270b97", +"5f6adb6\",\n \"name\" : \"0xee76d34d75ee0a", +"7254\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 350000000\n}, \n{\n \"ETH_account\"", +" : \"0x0a01e5498067224c4493ff6a23f13ae1ae", +"74565b\",\n \"name\" : \"0x0a01e5498067224", +"c44\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 80100000\n}, \n{\n \"ETH_account\" :", +" \"0x4ed96ccce5157f9280cc07ef044f49e428b9", +"e900\",\n \"name\" : \"0x4ed96ccce5157f928", +"0\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 100000000\n}, \n{\n \"ETH_account\" : ", +"\"0xab468cc1029661a323ad0addf3a7bef60c6cf", +"95d\",\n \"name\" : \"0xab468cc1029661a323", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 100000000\n}, \n{\n \"ETH_account\" : \"", +"0x39f99b67ea5bf3cbe4467e22c7c062595e7332", +"ec\",\n \"name\" : \"0x39f99b67ea5bf3cbe4\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 519817000\n}, \n{\n \"ETH_account\" : \"0", +"x7cdea26a3c816d7e8cced71e4e9ae1faa348c0a", +"f\",\n \"name\" : \"0x7cdea26a3c816d7e8c\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 3330023\n}, \n{\n \"ETH_account\" : \"0xea", +"5ec2d5fd0ed505ceec97653ef2bc7c313a43de\",", +"\n \"name\" : \"0xea5ec2d5fd0ed505ce\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 11", +"000000\n}, \n{\n \"ETH_account\" : \"0x3e7a", +"3fb0976556aaf12484de68350ac3b6ae4c40\",\n ", +" \"name\" : \"imbztoken\",\n \"publicKey\"", +" : \"SPH87KqQEMjjUCp94B1PNsmFP5iibAnp2XBH", +"c8gTsYMMv9C4WFmRt\",\n \"balance\" : 1429", +"841693\n}, \n{\n \"ETH_account\" : \"0x0014", +"ecac2ea34eb8bda234c1f8f44f9d43991d84\",\n ", +" \"name\" : \"0x0014ecac2ea34eb8bd\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 7180", +"756692\n}, \n{\n \"ETH_account\" : \"0x579e", +"11eee09bb474d7698792f3b19d7020589c3d\",\n ", +" \"name\" : \"0x579e11eee09bb474d7\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5169", +"99999\n}, \n{\n \"ETH_account\" : \"0xa1210", +"1f8ccee0a3a3e2462059e336831129d03a6\",\n ", +" \"name\" : \"alice\",\n \"publicKey\" : \"S", +"PH4wPjeuaa7yWpdyG95FmmdP6EjjDncALHrdxyNH", +"NvzPfCSN9UoN\",\n \"balance\" : 194440134", +"6\n}, \n{\n \"ETH_account\" : \"0x14b5a3b12", +"d7c36017260e2bd023f0641b6daf1b4\",\n \"n", +"ame\" : \"0x14b5a3b12d7c360172\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 191240000", +"\n}, \n{\n \"ETH_account\" : \"0xa5721e0c8d", +"93dbf1599ffb28011ba5b45c785696\",\n \"na", +"me\" : \"0xa5721e0c8d93dbf159\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 700000000\n", +"}, \n{\n \"ETH_account\" : \"0x662ba3a5096", +"d4dadec20a43ede907e8e9feaab8d\",\n \"nam", +"e\" : \"0x662ba3a5096d4dadec\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 43551000000", +"\n}, \n{\n \"ETH_account\" : \"0x14491b85b3", +"c09905466d72c16b9b02342ee26b33\",\n \"na", +"me\" : \"0x14491b85b3c0990546\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 500000000\n", +"}, \n{\n \"ETH_account\" : \"0x527cfac8b62", +"cb1abe6a1892bfce4a6f00c0fa325\",\n \"nam", +"e\" : \"0x527cfac8b62cb1abe6\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 988335611\n}", +", \n{\n \"ETH_account\" : \"0xe0224bd75078", +"d893d7af16723f23d0f0c12b0712\",\n \"name", +"\" : \"0xe0224bd75078d893d7\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 6176532430\n}", +", \n{\n \"ETH_account\" : \"0x74c1d75c8c76", +"ec8540fbeee7c764d9385ebe3d4f\",\n \"name", +"\" : \"0x74c1d75c8c76ec8540\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 63097829\n}, ", +"\n{\n \"ETH_account\" : \"0x379079cfb6109e", +"bc205d57f818d180c9ee563b89\",\n \"name\" ", +": \"thehihoguy\",\n \"publicKey\" : \"SPH6s", +"Qh7LzEDjnSf6HJgChPSKKgrept6GWBUyij3bvRLp", +"EqLc6G2W\",\n \"balance\" : 386012673\n}, ", +"\n{\n \"ETH_account\" : \"0x9021eefe531da1", +"049ebc6860579d945d5005bf3a\",\n \"name\" ", +": \"0x9021eefe531da1049e\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1958056610\n}, ", +"\n{\n \"ETH_account\" : \"0xc9f7e39bfa4689", +"6bfdc5f159ba27b940d11c4f99\",\n \"name\" ", +": \"0xc9f7e39bfa46896bfd\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 31850000000\n},", +" \n{\n \"ETH_account\" : \"0x9c6d80c464ba8", +"6c1ddee1b703fe57551e064ce34\",\n \"name\"", +" : \"0x9c6d80c464ba86c1dd\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 520559649\n}, ", +"\n{\n \"ETH_account\" : \"0xbb2e41de3521e1", +"1d596db19dcca45c5beb69dd5d\",\n \"name\" ", +": \"0xbb2e41de3521e11d59\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 948180000\n}, \n", +"{\n \"ETH_account\" : \"0x02921d0d308ed05", +"2c5f06f0cb5f7a14c45978229\",\n \"name\" :", +" \"0x02921d0d308ed052c5\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 858000000\n}, \n{", +"\n \"ETH_account\" : \"0xe10d2995d3abfbf3", +"3d2c1554446737e3e67ca85a\",\n \"name\" : ", +"\"0xe10d2995d3abfbf33d\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 4100000000\n}, \n{", +"\n \"ETH_account\" : \"0xa6c72a3ba21169b3", +"7603781bca34c102ec51b015\",\n \"name\" : ", +"\"0xa6c72a3ba21169b376\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1196761117\n}, \n{", +"\n \"ETH_account\" : \"0x1450ce91bad067a3", +"c59170caec5003d4807e0125\",\n \"name\" : ", +"\"0x1450ce91bad067a3c5\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 64368657\n}, \n{\n ", +" \"ETH_account\" : \"0xb6ec45dde840862b92", +"f8efbeb1cd20f314b4dad9\",\n \"name\" : \"0", +"xb6ec45dde840862b92\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 22000000\n}, \n{\n ", +" \"ETH_account\" : \"0x19ca601cc511ebae79eb", +"5ba3e7ec94ca4c516327\",\n \"name\" : \"0x1", +"9ca601cc511ebae79\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 794000000\n}, \n{\n ", +"\"ETH_account\" : \"0xb5ce230378fd36ce59ab9", +"68d59dc8f4e7c1df875\",\n \"name\" : \"0xb5", +"ce230378fd36ce59\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 50000000\n}, \n{\n \"E", +"TH_account\" : \"0x581fdcd6aefe1bbb79ae48c", +"1cf2a72d4a55d2424\",\n \"name\" : \"0x581f", +"dcd6aefe1bbb79\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 181000000\n}, \n{\n \"ET", +"H_account\" : \"0x15b04b2a8f9e46f057f66fc1", +"513250c83bfa9c92\",\n \"name\" : \"0x15b04", +"b2a8f9e46f057\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 94381781\n}, \n{\n \"ETH_", +"account\" : \"0x0c34f68f7c288ffc14d2ca72f3", +"a91331afc49ea1\",\n \"name\" : \"0x0c34f68", +"f7c288ffc14\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 939698\n}, \n{\n \"ETH_acco", +"unt\" : \"0xf03c5ebcd93321e7d9c1cd80c0db15", +"cb5e252611\",\n \"name\" : \"malko\",\n \"", +"publicKey\" : \"SPH5Fb7SznNh9KtWuJt61JT1T1", +"eT7D27FDrYqrWQjUGkcHnb5tnCx\",\n \"balan", +"ce\" : 416000000\n}, \n{\n \"ETH_account\" ", +": \"0xee34cf46b7029204aff072947cdcbfa8970", +"237cf\",\n \"name\" : \"0xee34cf46b7029204", +"af\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 21228849131\n}, \n{\n \"ETH_account\"", +" : \"0xac0aea66df41aee86017859f7d8d70a039", +"f416a5\",\n \"name\" : \"0xac0aea66df41aee", +"860\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1499999999\n}, \n{\n \"ETH_account\"", +" : \"0x1520cc8ac60a37a13f98875d403fd2ef4e", +"205ff3\",\n \"name\" : \"0x1520cc8ac60a37a", +"13f\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 8290620000\n}, \n{\n \"ETH_account\"", +" : \"0xcc19a70074484daa45443d26dd404a183d", +"313e2f\",\n \"name\" : \"0xcc19a70074484da", +"a45\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 7607236200\n}, \n{\n \"ETH_account\"", +" : \"0x380f43382e70a699315caa3ef217d198a5", +"824ba2\",\n \"name\" : \"0x380f43382e70a69", +"931\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 790000000\n}, \n{\n \"ETH_account\" ", +": \"0xe27fe4558f36fbdc9be120f8707ca1b4953", +"a07d3\",\n \"name\" : \"0xe27fe4558f36fbdc", +"9b\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 412799600\n}, \n{\n \"ETH_account\" :", +" \"0xf127e97fbcafb5579517b924ecbca2fc29a0", +"2a15\",\n \"name\" : \"0xf127e97fbcafb5579", +"5\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 13492000000\n}, \n{\n \"ETH_account\" ", +": \"0xaceeef197ef4ae636c38182fa0c082de46c", +"cebe0\",\n \"name\" : \"0xaceeef197ef4ae63", +"6c\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 21663034183\n}, \n{\n \"ETH_account\"", +" : \"0x6556cf147df01ed0dedc3e560635ced6bf", +"7541f9\",\n \"name\" : \"saky\",\n \"publi", +"cKey\" : \"SPH7BeTBw121qeBi4VEtsU62bJkWq7q", +"Z3ssFnG2FYUTS1hLqgS627\",\n \"balance\" :", +" 20100988708\n}, \n{\n \"ETH_account\" : \"", +"0xea1db5890599d8bc0f4995bc206157c7d660b0", +"52\",\n \"name\" : \"0xea1db5890599d8bc0f\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 6378603124\n}, \n{\n \"ETH_account\" : \"", +"0x859c58e587691226b32c14e422fcbd6176fb9b", +"b1\",\n \"name\" : \"0x859c58e587691226b3\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 375800000\n}, \n{\n \"ETH_account\" : \"0", +"x9ea5e03bbfc71b21651e20edc1a07b28495d675", +"f\",\n \"name\" : \"0x9ea5e03bbfc71b2165\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 3833000000\n}, \n{\n \"ETH_account\" : \"0", +"xb93bea59373b110c064bd2765d3f05b2680dad9", +"c\",\n \"name\" : \"0xb93bea59373b110c06\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 175542514\n}, \n{\n \"ETH_account\" : \"0x", +"95f8d89fabe7341f4ccd9805ba7cae6d60c52f5a", +"\",\n \"name\" : \"0x95f8d89fabe7341f4c\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"404000000\n}, \n{\n \"ETH_account\" : \"0x6", +"e2a041b0d851d0a76db7f96236414c163d9f310\"", +",\n \"name\" : \"0x6e2a041b0d851d0a76\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"400000000\n}, \n{\n \"ETH_account\" : \"0x3", +"15714bbbc2f9f7f87a48ee26fbfd8195d0a4f68\"", +",\n \"name\" : \"0x315714bbbc2f9f7f87\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 7", +"35407298\n}, \n{\n \"ETH_account\" : \"0x83", +"c5ff0b34da8a74308b8478a80534001184b790\",", +"\n \"name\" : \"0x83c5ff0b34da8a7430\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 35", +"52538345\n}, \n{\n \"ETH_account\" : \"0x61", +"e70d4b806b20b63c326ff3ad407dd0183af790\",", +"\n \"name\" : \"0x61e70d4b806b20b63c\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 26", +"0330000\n}, \n{\n \"ETH_account\" : \"0x378", +"3a69c9d59cce935a2d24f8220e78193770b8d\",\n", +" \"name\" : \"0x3783a69c9d59cce935\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 484", +"000000\n}, \n{\n \"ETH_account\" : \"0x888a", +"4d5eaff7bd324f35a94a9c94327fb9ac2679\",\n ", +" \"name\" : \"0x888a4d5eaff7bd324f\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1203", +"000000\n}, \n{\n \"ETH_account\" : \"0x59dc", +"3af0ff9ebd72dc65e7437504a652ac72a9ba\",\n ", +" \"name\" : \"0x59dc3af0ff9ebd72dc\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2387", +"331977\n}, \n{\n \"ETH_account\" : \"0x2648", +"103e5683f0d542818cddf05a5f02810315eb\",\n ", +" \"name\" : \"0x2648103e5683f0d542\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5250", +"00000\n}, \n{\n \"ETH_account\" : \"0xabd59", +"0f2ba2c67375a825520cfdad355d4d65e3e\",\n ", +" \"name\" : \"0xabd590f2ba2c67375a\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 99084", +"8298\n}, \n{\n \"ETH_account\" : \"0x290dfd", +"54c8cbf660a719696dd814fc40ef8b81e1\",\n ", +" \"name\" : \"0x290dfd54c8cbf660a7\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 999757", +"893\n}, \n{\n \"ETH_account\" : \"0x7ccf2fa", +"e2a68a00d96ca48a3644986dc2e23e335\",\n ", +"\"name\" : \"0x7ccf2fae2a68a00d96\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1216666", +"1\n}, \n{\n \"ETH_account\" : \"0xeeb0053d4", +"714ae5e604740d69a056a0271b456d7\",\n \"n", +"ame\" : \"0xeeb0053d4714ae5e60\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 157580690", +"00\n}, \n{\n \"ETH_account\" : \"0xc20b957d", +"ea8394ec7b4636a6da60fa8a7a0aa973\",\n \"", +"name\" : \"0xc20b957dea8394ec7b\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 17000000", +"0\n}, \n{\n \"ETH_account\" : \"0xf3c05b2c0", +"6dde116669299b995d613499d59e74e\",\n \"n", +"ame\" : \"0xf3c05b2c06dde11666\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 215589989", +"\n}, \n{\n \"ETH_account\" : \"0xeb71d8a800", +"aa7c92be6a56973fa30581f33027c3\",\n \"na", +"me\" : \"0xeb71d8a800aa7c92be\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1097912100", +"0\n}, \n{\n \"ETH_account\" : \"0x2000d241b", +"4ecdf1ef4bed2355b554fd8c2f4940d\",\n \"n", +"ame\" : \"0x2000d241b4ecdf1ef4\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 503810000", +"00\n}, \n{\n \"ETH_account\" : \"0x7294aff4", +"e572223201e474999d54244883d8aba4\",\n \"", +"name\" : \"0x7294aff4e572223201\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 24070000", +"00\n}, \n{\n \"ETH_account\" : \"0x1b9bb109", +"4fd25e8be5ddbade4a00f69985812c86\",\n \"", +"name\" : \"0x1b9bb1094fd25e8be5\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 12000000", +"00\n}, \n{\n \"ETH_account\" : \"0x5969b1bd", +"eb7feda6019e7c017c6a9888cca36f9f\",\n \"", +"name\" : \"0x5969b1bdeb7feda601\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 19940000", +"0\n}, \n{\n \"ETH_account\" : \"0x01187e32e", +"6193a74539271072696ee98d2a7586b\",\n \"n", +"ame\" : \"0x01187e32e6193a7453\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 730695082", +"0\n}, \n{\n \"ETH_account\" : \"0xc4cce345b", +"1cba9f3838a2fa4dc3ffe0bda10d2be\",\n \"n", +"ame\" : \"0xc4cce345b1cba9f383\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 57238329\n", +"}, \n{\n \"ETH_account\" : \"0x58f7dc9c223", +"57d637c66388cf031bbb3899c772d\",\n \"nam", +"e\" : \"0x58f7dc9c22357d637c\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1100000000\n", +"}, \n{\n \"ETH_account\" : \"0x5137b45f50a", +"24c207fc3c19ac343c915bdc813d5\",\n \"nam", +"e\" : \"0x5137b45f50a24c207f\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 989480000\n}", +", \n{\n \"ETH_account\" : \"0x5c5344b67259", +"dfb1e58cde781c554bc5c742ccee\",\n \"name", +"\" : \"0x5c5344b67259dfb1e5\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 3508193000\n}", +", \n{\n \"ETH_account\" : \"0x13c961583d03", +"a19da4c73ad67df79ef37a72dd5e\",\n \"name", +"\" : \"0x13c961583d03a19da4\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 4647103703\n}", +", \n{\n \"ETH_account\" : \"0x9989f8998664", +"bb53336ff340ef0518957b69a78f\",\n \"name", +"\" : \"jenkin3\",\n \"publicKey\" : \"SPH58w", +"Xf411X1qSguHSiEhB4Hbk1RxEJLD6KS3mbGzVrCm", +"YSgAr49\",\n \"balance\" : 252000000\n}, \n", +"{\n \"ETH_account\" : \"0x09fee62f5823d86", +"3a71094259d279ee0f49e1b17\",\n \"name\" :", +" \"0x09fee62f5823d863a7\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 110497200\n}, \n{", +"\n \"ETH_account\" : \"0xd9fde2f8d922a205", +"b4421fcfc57040254193f9a2\",\n \"name\" : ", +"\"0xd9fde2f8d922a205b4\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 15253030000\n}, \n", +"{\n \"ETH_account\" : \"0xf386d45ab373613", +"caaf1d77f97c440e57d058a90\",\n \"name\" :", +" \"0xf386d45ab373613caa\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 141000000\n}, \n{", +"\n \"ETH_account\" : \"0x3f27691677a440d2", +"93359457749fc44a9786822a\",\n \"name\" : ", +"\"0x3f27691677a440d293\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1897774506\n}, \n{", +"\n \"ETH_account\" : \"0x8acfad014e80052a", +"2117511aa07095f340d6cfa4\",\n \"name\" : ", +"\"0x8acfad014e80052a21\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1593000000\n}, \n{", +"\n \"ETH_account\" : \"0xf8a95cb15523bc01", +"91e604461239f7a708470664\",\n \"name\" : ", +"\"0xf8a95cb15523bc0191\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 2730527600\n}, \n{", +"\n \"ETH_account\" : \"0xd114014c63a1c967", +"bdd79c8cc407f6422bd99b6b\",\n \"name\" : ", +"\"0xd114014c63a1c967bd\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 120000000\n}, \n{\n", +" \"ETH_account\" : \"0x6694de42bb99f89c9", +"10ce19ae18423b4b5f67837\",\n \"name\" : \"", +"0x6694de42bb99f89c91\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 542974328\n}, \n{\n ", +" \"ETH_account\" : \"0x02c9303e9edb41622c", +"c9fbc21e3db7c1ce0ac27c\",\n \"name\" : \"0", +"x02c9303e9edb41622c\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 264000000\n}, \n{\n ", +" \"ETH_account\" : \"0x27e35f3dad775fe0265", +"5ca05a4b1347d4a2d433d\",\n \"name\" : \"0x", +"27e35f3dad775fe026\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 50000000\n}, \n{\n ", +"\"ETH_account\" : \"0xbb9fcc6d3ac39cf5e46fa", +"c9f5d05fe75e73e2716\",\n \"name\" : \"0xbb", +"9fcc6d3ac39cf5e4\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 718957100\n}, \n{\n \"", +"ETH_account\" : \"0x2f81f924c5730ea4a42b86", +"f8451517c253d2ecca\",\n \"name\" : \"0x2f8", +"1f924c5730ea4a4\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 875945600\n}, \n{\n \"E", +"TH_account\" : \"0xf51b22cb60b1c358048b4ed", +"991544f90ed8b439a\",\n \"name\" : \"0xf51b", +"22cb60b1c35804\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 690000000\n}, \n{\n \"ET", +"H_account\" : \"0x2fe1d6f772e0032347c862a1", +"6366b4a8bd051838\",\n \"name\" : \"0x2fe1d", +"6f772e0032347\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 309000000\n}, \n{\n \"ETH", +"_account\" : \"0x6d7225b395ba21e61f85cab84", +"edf8c2b3869a3de\",\n \"name\" : \"0x6d7225", +"b395ba21e61f\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 910000000\n}, \n{\n \"ETH_", +"account\" : \"0x21abf2b4ee40537c308bb2a507", +"ef449722e9ab4a\",\n \"name\" : \"0x21abf2b", +"4ee40537c30\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 600000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x147813fd2a13e29349d5031710a6c9", +"b42b3d9bc6\",\n \"name\" : \"0x147813fd2a1", +"3e29349\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 6028000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa16f853c5b1356d935a6b55db8b149", +"e719554e09\",\n \"name\" : \"0xa16f853c5b1", +"356d935\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 449000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xdde1edf06e74255903fbbc01a9c1cbb", +"d310e0813\",\n \"name\" : \"0xdde1edf06e74", +"255903\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 20000000\n}, \n{\n \"ETH_account", +"\" : \"0xcab3a6a41c1428fb07df2177ab5eb4ba1", +"05a2fbd\",\n \"name\" : \"0xcab3a6a41c1428", +"fb07\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 34000000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x4a3f08cbd4269fe6ada2637112120761", +"2d258ab2\",\n \"name\" : \"0x4a3f08cbd4269", +"fe6ad\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1000000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x5b24ae4b3f855d14576e4db4cd77b57c", +"601c6c23\",\n \"name\" : \"0x5b24ae4b3f855", +"d1457\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 66000000\n}, \n{\n \"ETH_account\"", +" : \"0x1e4ebbf0dbc4a4ed2db3803428a242a2a4", +"462be3\",\n \"name\" : \"0x1e4ebbf0dbc4a4e", +"d2d\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 104000000\n}, \n{\n \"ETH_account\" ", +": \"0x9f49c3b620bec5f2947539430b4552409b0", +"b2d84\",\n \"name\" : \"0x9f49c3b620bec5f2", +"94\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 609010000\n}, \n{\n \"ETH_account\" :", +" \"0x7008cf76cd98c30e635128c1858d7d8ddd25", +"e605\",\n \"name\" : \"0x7008cf76cd98c30e6", +"3\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1000000000\n}, \n{\n \"ETH_account\" :", +" \"0x739d9646a093acca7c1c80d558d3b639fa5b", +"6866\",\n \"name\" : \"0x739d9646a093acca7", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 95700000\n}, \n{\n \"ETH_account\" : \"", +"0x5dfcecad45a01e4d964e1853be293d64fdfb6a", +"2c\",\n \"name\" : \"0x5dfcecad45a01e4d96\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 598000000\n}, \n{\n \"ETH_account\" : \"0", +"x21c936dcbc002b30f2eea0948836859eb18c4c7", +"6\",\n \"name\" : \"0x21c936dcbc002b30f2\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 701000000\n}, \n{\n \"ETH_account\" : \"0x", +"4c2ce22d449947210bdcb48f403a811ab478f869", +"\",\n \"name\" : \"0x4c2ce22d449947210b\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"7758000000\n}, \n{\n \"ETH_account\" : \"0x", +"99002b956b70ce448f3f12411cd9bf9dab9e8603", +"\",\n \"name\" : \"0x99002b956b70ce448f\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"2065500000\n}, \n{\n \"ETH_account\" : \"0x", +"f9d602efb111da9de800702c355d00bf54da0551", +"\",\n \"name\" : \"0xf9d602efb111da9de8\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"33509019300\n}, \n{\n \"ETH_account\" : \"0", +"x0746797dd3e2f1caf9e635567c94a260c0ebb1e", +"7\",\n \"name\" : \"0x0746797dd3e2f1caf9\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 2800000000\n}, \n{\n \"ETH_account\" : \"0", +"xe5ea8f895957c96f3efebdbb1759ce80d690b20", +"8\",\n \"name\" : \"0xe5ea8f895957c96f3e\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 410130000\n}, \n{\n \"ETH_account\" : \"0x", +"519360b8f667fd9fffb2d4993876e1d2f2203a5d", +"\",\n \"name\" : \"0x519360b8f667fd9fff\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"99026000\n}, \n{\n \"ETH_account\" : \"0x0e", +"8a9f258c93a34e327061db418cd21978d17426\",", +"\n \"name\" : \"0x0e8a9f258c93a34e32\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 10", +"639000000\n}, \n{\n \"ETH_account\" : \"0x4", +"61a800ad8126a62999fe52fcc82a0a5cccb232a\"", +",\n \"name\" : \"0x461a800ad8126a6299\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"1000000\n}, \n{\n \"ETH_account\" : \"0xab2", +"bcae94922fd2cc66b645d364c0d35799c3ca1\",\n", +" \"name\" : \"0xab2bcae94922fd2cc6\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 973", +"373459\n}, \n{\n \"ETH_account\" : \"0x528d", +"e6c8546c910bfc4ee6106c57f49a7ee6c20f\",\n ", +" \"name\" : \"0x528de6c8546c910bfc\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 7136", +"41000\n}, \n{\n \"ETH_account\" : \"0xe5a96", +"fad24ff9b395098feca32bd2b5855068385\",\n ", +" \"name\" : \"0xe5a96fad24ff9b3950\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 88000", +"000\n}, \n{\n \"ETH_account\" : \"0x3128752", +"ed08ca6562343099bf60455eb45dee3a4\",\n ", +"\"name\" : \"0x3128752ed08ca65623\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1132400", +"00\n}, \n{\n \"ETH_account\" : \"0x6b817bac", +"362b56f39f132ef816ea3b2566b4e96f\",\n \"", +"name\" : \"0x6b817bac362b56f39f\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 30000000", +"\n}, \n{\n \"ETH_account\" : \"0x3ccfa66172", +"9857f0321029cad346a02b259832a8\",\n \"na", +"me\" : \"0x3ccfa661729857f032\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 75000000\n}", +", \n{\n \"ETH_account\" : \"0x7b35bc2f1b76", +"5ddb2b83acc296d927072a251f4b\",\n \"name", +"\" : \"0x7b35bc2f1b765ddb2b\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 8585582037\n}", +", \n{\n \"ETH_account\" : \"0xf81f9c27bc0f", +"138d0a9ba30dd603ccca74f098c9\",\n \"name", +"\" : \"0xf81f9c27bc0f138d0a\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1631000000\n}", +", \n{\n \"ETH_account\" : \"0xb806b665c7e1", +"c1f058c0e06f0f33c805fdee0887\",\n \"name", +"\" : \"0xb806b665c7e1c1f058\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 20000000\n}, ", +"\n{\n \"ETH_account\" : \"0xc6bffd153f2efc", +"4a52a203b2b378b0ea987019d4\",\n \"name\" ", +": \"0xc6bffd153f2efc4a52\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 851463000\n}, \n", +"{\n \"ETH_account\" : \"0xfc78b98c1a75a58", +"a83d017826b2d9cc3c4a5f7e2\",\n \"name\" :", +" \"0xfc78b98c1a75a58a83\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 11717000000\n}, ", +"\n{\n \"ETH_account\" : \"0xafb59479e411ea", +"48c9a823f20356a4642dfa983f\",\n \"name\" ", +": \"tparksphtx\",\n \"publicKey\" : \"SPH8g", +"KgfJrAMfyCVpqY1j9yXzgRBTnwgkB2ePVLo4xQTx", +"5wY1ezDk\",\n \"balance\" : 242000000\n}, ", +"\n{\n \"ETH_account\" : \"0x1ee33a16b3b709", +"92d3c53900965bdd2939bd786c\",\n \"name\" ", +": \"0x1ee33a16b3b70992d3\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1058000000\n}, ", +"\n{\n \"ETH_account\" : \"0x95a9ccc030a335", +"079212a9300d0f48430a0cf93e\",\n \"name\" ", +": \"0x95a9ccc030a3350792\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3027000000\n}, ", +"\n{\n \"ETH_account\" : \"0xbbc6735277a59c", +"125207e0b654425b776ce4e89a\",\n \"name\" ", +": \"0xbbc6735277a59c1252\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1100000000\n}, ", +"\n{\n \"ETH_account\" : \"0xad0eae0501875f", +"d202d8c76fce98f047bb612381\",\n \"name\" ", +": \"chris\",\n \"publicKey\" : \"SPH6M6bsaJ", +"hSPVFjDpKVVHcdSi4qzyJmGJUCgnLRvhgHbtSb4m", +"h56\",\n \"balance\" : 200000000000\n}, \n{", +"\n \"ETH_account\" : \"0x49592e9db63590c5", +"39806e02c6d946d1f2b67335\",\n \"name\" : ", +"\"0x49592e9db63590c539\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 5560000000\n}, \n{", +"\n \"ETH_account\" : \"0x64f4efbece8dc5a9", +"46babb576f375c60d7cca43f\",\n \"name\" : ", +"\"0x64f4efbece8dc5a946\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 750000000\n}, \n{\n", +" \"ETH_account\" : \"0xecdb7ac81ab7813e1", +"55438b6a4faabf020708ab7\",\n \"name\" : \"", +"artesophia\",\n \"publicKey\" : \"SPH6WZ7U", +"aQoyMYYYmoE66hXdbJtDMZ6ysk8AUApTMfrNLbK7", +"5NguC\",\n \"balance\" : 9149698600\n}, \n{", +"\n \"ETH_account\" : \"0xb50c70b0813a695b", +"3f0b1a0755778fff70889382\",\n \"name\" : ", +"\"0xb50c70b0813a695b3f\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 45000000\n}, \n{\n ", +" \"ETH_account\" : \"0x157b9da662eb17fceb", +"24b131bbe7acc1f345045b\",\n \"name\" : \"0", +"x157b9da662eb17fceb\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 431889837\n}, \n{\n ", +" \"ETH_account\" : \"0xd8b94cb1b9cb71f64a2", +"a41a093d9c816ec0b7ed8\",\n \"name\" : \"0x", +"d8b94cb1b9cb71f64a\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 49000000\n}, \n{\n ", +"\"ETH_account\" : \"0x0af0949efbe14ea160f6c", +"7368d3d6a727f8fc670\",\n \"name\" : \"0x0a", +"f0949efbe14ea160\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 125000000\n}, \n{\n \"", +"ETH_account\" : \"0x4d4789b7f5511a5e760245", +"1aedd47662acd6af3d\",\n \"name\" : \"0x4d4", +"789b7f5511a5e76\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 30381000000\n}, \n{\n ", +"\"ETH_account\" : \"0xf7f51daa54ce80e6e5142", +"e43c7afbe508c2b4b13\",\n \"name\" : \"0xf7", +"f51daa54ce80e6e5\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 114223400\n}, \n{\n \"", +"ETH_account\" : \"0x9cb6247bf9e22da514b1b3", +"2acae28c560c73d848\",\n \"name\" : \"0x9cb", +"6247bf9e22da514\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2345223300\n}, \n{\n \"", +"ETH_account\" : \"0xdffcc35c87d83797549487", +"01a39d4e5cf86ee9fb\",\n \"name\" : \"0xdff", +"cc35c87d8379754\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 107000000\n}, \n{\n \"E", +"TH_account\" : \"0x8866dd1742a88deaf08edd6", +"7fb6a27771ccbc67c\",\n \"name\" : \"0x8866", +"dd1742a88deaf0\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 830000000\n}, \n{\n \"ET", +"H_account\" : \"0x2d6db4e433228b4845db4c9f", +"b45898c03a69528f\",\n \"name\" : \"sphtx\",", +"\n \"publicKey\" : \"SPH817BuySi5yYyfZcHz", +"EKSVATuTRZo7CiXuU9XkAv7e9nwJ4rxdn\",\n ", +"\"balance\" : 691519800\n}, \n{\n \"ETH_acc", +"ount\" : \"0x6de373ff16654839724053407eb85", +"52d4d8c75b3\",\n \"name\" : \"0x6de373ff16", +"65483972\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 723007000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x58dd9904aebf29585e92110f668859", +"53e6b1d361\",\n \"name\" : \"0x58dd9904aeb", +"f29585e\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 137000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x8a379a6bd32d50e6afc1198519a8132", +"9afb76603\",\n \"name\" : \"0x8a379a6bd32d", +"50e6af\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 100000504\n}, \n{\n \"ETH_accoun", +"t\" : \"0x0a06299ce176dc3ab64dbdc7910ca799", +"5bae283c\",\n \"name\" : \"0x0a06299ce176d", +"c3ab6\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 13404000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x01c673ca0fdedd3429371b9d7e2d1c0", +"ecb350213\",\n \"name\" : \"0x01c673ca0fde", +"dd3429\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 928349126\n}, \n{\n \"ETH_accoun", +"t\" : \"0xb45b4578189c34af0f0cd3b2e069f7bd", +"7ade5248\",\n \"name\" : \"0xb45b4578189c3", +"4af0f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 507235432\n}, \n{\n \"ETH_account", +"\" : \"0x45d7fb33c88f30db263b0ed4e5669e742", +"ad82cc8\",\n \"name\" : \"0x45d7fb33c88f30", +"db26\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 93000000\n}, \n{\n \"ETH_account\" ", +": \"0xd27ae70a5a05be7c06c0a43d61907c6482a", +"c4e90\",\n \"name\" : \"0xd27ae70a5a05be7c", +"06\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 1215250841\n}, \n{\n \"ETH_account\" ", +": \"0x9a1001e2b036f9efe9ba83c1b7e2fd65f99", +"72118\",\n \"name\" : \"0x9a1001e2b036f9ef", +"e9\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 710000000\n}, \n{\n \"ETH_account\" :", +" \"0x8060aa782bfe38b50504b6ab52f266665a7a", +"ba14\",\n \"name\" : \"0x8060aa782bfe38b50", +"5\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 4835000000\n}, \n{\n \"ETH_account\" :", +" \"0x4c03ff8829d5a61dfc111f91de1ae456d9b9", +"8e05\",\n \"name\" : \"0x4c03ff8829d5a61df", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 25000000\n}, \n{\n \"ETH_account\" : \"", +"0x6c771f2c6b3153f8af6523de85c1e43f994033", +"ee\",\n \"name\" : \"0x6c771f2c6b3153f8af\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 9990000000\n}, \n{\n \"ETH_account\" : \"", +"0x604eb5d4126e3318ec27721bd5059307684f5c", +"89\",\n \"name\" : \"0x604eb5d4126e3318ec\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2555945172\n}, \n{\n \"ETH_account\" : \"", +"0x6e2fad2df952cdd6008017ed38debb56646f94", +"e2\",\n \"name\" : \"0x6e2fad2df952cdd600\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 631440000\n}, \n{\n \"ETH_account\" : \"0", +"x39a97a3610ea175e20b92854a8105822a7aa37e", +"a\",\n \"name\" : \"0x39a97a3610ea175e20\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1639000000\n}, \n{\n \"ETH_account\" : \"0", +"xee2f78abdb5fcc52802d8b50cb0f95586b36f2e", +"d\",\n \"name\" : \"0xee2f78abdb5fcc5280\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 156000000\n}, \n{\n \"ETH_account\" : \"0x", +"6996c29ce9c7a4468162d00a56b14beddb20da64", +"\",\n \"name\" : \"0x6996c29ce9c7a44681\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1844610000\n}, \n{\n \"ETH_account\" : \"0x", +"387ba4b1efbc16fb8763d53956c41a4762017e42", +"\",\n \"name\" : \"0x387ba4b1efbc16fb87\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1571897782\n}, \n{\n \"ETH_account\" : \"0x", +"7b6c79c907458398e8984f96d09c9d87cc8b6331", +"\",\n \"name\" : \"0x7b6c79c907458398e8\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"115000000\n}, \n{\n \"ETH_account\" : \"0x2", +"3977d91da07cdca4ff82ebc515d3f5c1aa65d51\"", +",\n \"name\" : \"0x23977d91da07cdca4f\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"00542812\n}, \n{\n \"ETH_account\" : \"0x5c", +"229b25b45849ab32d52004b60847623272b3f8\",", +"\n \"name\" : \"0x5c229b25b45849ab32\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 11", +"00010000\n}, \n{\n \"ETH_account\" : \"0x91", +"a4bf6fd265024d00bf7018aca110035aeebe86\",", +"\n \"name\" : \"0x91a4bf6fd265024d00\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 90", +"004363820\n}, \n{\n \"ETH_account\" : \"0x5", +"8f6d711ff7591770278579cf51300c0290331db\"", +",\n \"name\" : \"0x58f6d711ff75917702\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"717264815\n}, \n{\n \"ETH_account\" : \"0x1", +"dd2c895d575dc1b9eecd66986e5fcc2cbf030c3\"", +",\n \"name\" : \"0x1dd2c895d575dc1b9e\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 6", +"29240000\n}, \n{\n \"ETH_account\" : \"0xbf", +"0cfedfe948311f85bffa8c36b4cf453f49c85d\",", +"\n \"name\" : \"sphtxdtl\",\n \"publicKey", +"\" : \"SPH7oFonm8q7dEjYD9WGNdxdtzJ9i5E6qqR", +"wnn5th4PgSr7vFU5K4\",\n \"balance\" : 297", +"206816\n}, \n{\n \"ETH_account\" : \"0x7778", +"d58346238ea3b60b8ece9471ea248c403530\",\n ", +" \"name\" : \"0x7778d58346238ea3b6\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 8696", +"19\n}, \n{\n \"ETH_account\" : \"0x349857ff", +"a759f3fa227c302510b506c788ba0071\",\n \"", +"name\" : \"0x349857ffa759f3fa22\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 64000000", +"00\n}, \n{\n \"ETH_account\" : \"0x78adb12c", +"a77c27575e1ac8832599f45ebaecb8da\",\n \"", +"name\" : \"0x78adb12ca77c27575e\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 22798888", +"6\n}, \n{\n \"ETH_account\" : \"0x806a1ace4", +"618fc107cb95e0fae4b7bcc7bc11632\",\n \"n", +"ame\" : \"0x806a1ace4618fc107c\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 20000000\n", +"}, \n{\n \"ETH_account\" : \"0xe79bf86c515", +"3005d3243409cfb78477d4b3646d2\",\n \"nam", +"e\" : \"0xe79bf86c5153005d32\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 383426761\n}", +", \n{\n \"ETH_account\" : \"0xa852679b2881", +"4220dce6b5ffd53a0d1db395edf4\",\n \"name", +"\" : \"0xa852679b28814220dc\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 3000\n}, \n{\n ", +" \"ETH_account\" : \"0x7f143750f6947ebd49", +"bff743cc1682eecf29ae50\",\n \"name\" : \"0", +"x7f143750f6947ebd49\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 119478084\n}, \n{\n ", +" \"ETH_account\" : \"0xc274d3a040b0730c47d", +"e87ad44c510ac9a87dda4\",\n \"name\" : \"0x", +"c274d3a040b0730c47\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 4722000000\n}, \n{\n ", +" \"ETH_account\" : \"0x0a0849ce4a4f0292c9b", +"a663ae0749495cd4018a2\",\n \"name\" : \"0x", +"0a0849ce4a4f0292c9\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 170000000\n}, \n{\n ", +" \"ETH_account\" : \"0xe0725653ee714c826fa5", +"f5d2c85a8457093a2826\",\n \"name\" : \"0xe", +"0725653ee714c826f\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 664397303\n}, \n{\n ", +"\"ETH_account\" : \"0xfb990adc6b97888db2b21", +"1fcb86d3e453e29eb63\",\n \"name\" : \"0xfb", +"990adc6b97888db2\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 200000000\n}, \n{\n \"", +"ETH_account\" : \"0x0c01dc03ed92bab623a9bf", +"0c642f11967544ac97\",\n \"name\" : \"0x0c0", +"1dc03ed92bab623\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 23400000000\n}, \n{\n ", +"\"ETH_account\" : \"0xf881d6647d8cb6f950fef", +"6a49d896fe34ca9ee52\",\n \"name\" : \"0xf8", +"81d6647d8cb6f950\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 384000000\n}, \n{\n \"", +"ETH_account\" : \"0xa0ce53cdf7eb718db32e8a", +"2216aa24ee1fc33829\",\n \"name\" : \"0xa0c", +"e53cdf7eb718db3\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 131245000\n}, \n{\n \"E", +"TH_account\" : \"0xcd34e8767cf8164a71477e7", +"32d354877944d1bdb\",\n \"name\" : \"0xcd34", +"e8767cf8164a71\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 2301346486\n}, \n{\n \"E", +"TH_account\" : \"0x0ef8e61ec270d38cfb88948", +"f76a18245d178c75d\",\n \"name\" : \"0x0ef8", +"e61ec270d38cfb\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 140740176\n}, \n{\n \"ET", +"H_account\" : \"0x8f4177caeebc7b25ac4bbab7", +"e5f38830237ccb3b\",\n \"name\" : \"0x8f417", +"7caeebc7b25ac\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1001700708\n}, \n{\n \"ET", +"H_account\" : \"0xdc56441d6ca02bf03ddd4a0c", +"983b7a471b5dc178\",\n \"name\" : \"0xdc564", +"41d6ca02bf03d\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 139080000\n}, \n{\n \"ETH", +"_account\" : \"0xd58fec1cdfcfdd02069a2b0aa", +"b0cc8913599b8de\",\n \"name\" : \"0xd58fec", +"1cdfcfdd0206\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 276159999\n}, \n{\n \"ETH_", +"account\" : \"0x73f5a9689a3c03fa96cd26723f", +"af0393d066f6d1\",\n \"name\" : \"0x73f5a96", +"89a3c03fa96\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 165461000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x1064b339e51a470a52bb3063844", +"74ac806702de9\",\n \"name\" : \"0x1064b339", +"e51a470a52\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 179999521\n}, \n{\n \"ETH_ac", +"count\" : \"0x924fe6b7047f0e4cbbcee2628bd8", +"646b42ae8852\",\n \"name\" : \"0x924fe6b70", +"47f0e4cbb\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 90000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xf71109fa04f0fdf8d84d5c35ec6d11", +"5a9f32b603\",\n \"name\" : \"0xf71109fa04f", +"0fdf8d8\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 100000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x06643d37ca284e1223a285791f43f6d", +"2892817bd\",\n \"name\" : \"0x06643d37ca28", +"4e1223\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 4371624400\n}, \n{\n \"ETH_accou", +"nt\" : \"0x981e2eafbb7ef0287cbdf6943e64a78", +"b06fda30d\",\n \"name\" : \"0x981e2eafbb7e", +"f0287c\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 236690000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xbffddd3c2ae993449c1f97095c8ce3e7", +"f463e793\",\n \"name\" : \"0xbffddd3c2ae99", +"3449c\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 592980000\n}, \n{\n \"ETH_account", +"\" : \"0xa88b530874ec8e3bfa512c367cb5387c9", +"16a822d\",\n \"name\" : \"0xa88b530874ec8e", +"3bfa\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 30000000\n}, \n{\n \"ETH_account\" ", +": \"0x0861799e771e18c1bad65e4c95f873fd5c7", +"abd76\",\n \"name\" : \"0x0861799e771e18c1", +"ba\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 998000000\n}, \n{\n \"ETH_account\" :", +" \"0xd30c4723dfe1d7966f559d8b1e665429ee66", +"ada4\",\n \"name\" : \"0xd30c4723dfe1d7966", +"f\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 5360000000\n}, \n{\n \"ETH_account\" :", +" \"0x622531098835785a822c27b60e1bcb6bb0f8", +"b343\",\n \"name\" : \"0x622531098835785a8", +"2\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 679000000\n}, \n{\n \"ETH_account\" : ", +"\"0xf80d6025d99d39fa181fed6df9fe0539236fd", +"231\",\n \"name\" : \"0xf80d6025d99d39fa18", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1200000000\n}, \n{\n \"ETH_account\" : ", +"\"0xb40884c50453eb5a02ccd409b214970bcdf3e", +"2dc\",\n \"name\" : \"custabovseqdavbf\",\n ", +" \"publicKey\" : \"SPH6KF5YxxR699DHYJaTwf", +"JsfMzsKe34kxTu7mvCCam8r7azsFQTq\",\n \"b", +"alance\" : 5126000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x6943e80d86932cc57aba2585505d0f", +"a020fccf0e\",\n \"name\" : \"0x6943e80d869", +"32cc57a\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 869000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xb537850738c7e211827aa3db291c390", +"b8c0bd465\",\n \"name\" : \"support\",\n ", +"\"publicKey\" : \"SPH6f4K7EJetK18GjTEKMzWWu", +"8RekpfYJ4gdVrAYFZ7zUrA7DC9t3\",\n \"bala", +"nce\" : 250000000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x2974bbdbc1fe5243a4d78b0208943ff", +"de22ffea6\",\n \"name\" : \"0x2974bbdbc1fe", +"5243a4\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 200\n}, \n{\n \"ETH_account\" : \"", +"0x63704b13954c05caf9c58683c16b05f07fd42a", +"ed\",\n \"name\" : \"0x63704b13954c05caf9\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1200000000\n}, \n{\n \"ETH_account\" : \"", +"0xa355f383a847a0deec8d384a2ea53a6396a1b8", +"b9\",\n \"name\" : \"0xa355f383a847a0deec\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2292351700\n}, \n{\n \"ETH_account\" : \"", +"0x65b845d8521deb20798f89977a2a31ba1f3736", +"3b\",\n \"name\" : \"0x65b845d8521deb2079\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1860010000\n}, \n{\n \"ETH_account\" : \"", +"0xedcb3c2b09eddeb5aa1d999407fef0d9deeee8", +"85\",\n \"name\" : \"0xedcb3c2b09eddeb5aa\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2371410000\n}, \n{\n \"ETH_account\" : \"", +"0x3d5f242bbc8ea5a5844b19d8ff7110584fd774", +"a6\",\n \"name\" : \"0x3d5f242bbc8ea5a584\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 4458000000\n}, \n{\n \"ETH_account\" : \"", +"0xaf2e156a675f08e507c4085b6292c80dc506a4", +"15\",\n \"name\" : \"logophilia\",\n \"pub", +"licKey\" : \"SPH8WREGA52mosjYYd7zuk7DHFBWX", +"pdEysVan7moUzChjfHkcMsYJ\",\n \"balance\"", +" : 643646827\n}, \n{\n \"ETH_account\" : \"", +"0x0f9ea4df4fc9e6333b6d086d2994ff380fd09e", +"8b\",\n \"name\" : \"0x0f9ea4df4fc9e6333b\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 479000000\n}, \n{\n \"ETH_account\" : \"0", +"x26008fe3a43d152cf4b2df6f6272987ef99af53", +"f\",\n \"name\" : \"0x26008fe3a43d152cf4\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 250000000\n}, \n{\n \"ETH_account\" : \"0x", +"cedce23deace4cbe8d608d30892dd90c3ef9ca54", +"\",\n \"name\" : \"0xcedce23deace\",\n \"p", +"ublicKey\" : \"SPH6cRpNKegAXm1qVeYEXUvknEG", +"kdvpcFZr4hRKZpb5v4ebkLpyDc\",\n \"balanc", +"e\" : 10805100000\n}, \n{\n \"ETH_account\"", +" : \"0xb48cc3191d82cc75b4887a76ab45039b54", +"3c35f3\",\n \"name\" : \"0xb48cc3191d82cc7", +"5b4\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1578000000\n}, \n{\n \"ETH_account\"", +" : \"0xaab6f6aac3a0bbbdccfb2aef3a1566b10d", +"92b47b\",\n \"name\" : \"0xaab6f6aac3a0bbb", +"dcc\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 138000\n}, \n{\n \"ETH_account\" : \"", +"0xa601585b07c1e6c2fcc3d6153240c2d7c1d89b", +"8a\",\n \"name\" : \"0xa601585b07c1e6c2fc\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 88866500000\n}, \n{\n \"ETH_account\" : ", +"\"0xf5ceeab3eb8bed171939c3e3a4ec7a28cb1aa", +"af5\",\n \"name\" : \"0xf5ceeab3eb8bed1719", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 455000000\n}, \n{\n \"ETH_account\" : \"", +"0x6e1e10175b9145bb887ac78fff35fabea2dfff", +"6d\",\n \"name\" : \"0x6e1e10175b9145bb88\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 364760000\n}, \n{\n \"ETH_account\" : \"0", +"xf4d975bb594bb404cc8f3f14cff12783a60df1a", +"9\",\n \"name\" : \"0xf4d975bb594bb404cc\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 888000000\n}, \n{\n \"ETH_account\" : \"0x", +"028b5b0fc2d8e24021eb26c6fc833d46e938938d", +"\",\n \"name\" : \"0x028b5b0fc2d8e24021\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1387984700\n}, \n{\n \"ETH_account\" : \"0x", +"5ee0fe444e37a8dfecd01fb9dd326dd62df9c2ee", +"\",\n \"name\" : \"0x5ee0fe444e37a8dfec\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"325000000\n}, \n{\n \"ETH_account\" : \"0x1", +"8c44ae6b231009a4d44b778596fa9c1deda1098\"", +",\n \"name\" : \"0x18c44ae6b231009a4d\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"210054000\n}, \n{\n \"ETH_account\" : \"0x4", +"e269cecacb2875d1714ae17728814e2dac50cca\"", +",\n \"name\" : \"cranfield\",\n \"publicK", +"ey\" : \"SPH5uUrBHL2JiBG48GLJMD9gpQfH5Lr2Q", +"oJpmJBxHRvXzhUK5CsnQ\",\n \"balance\" : 1", +"445950000000\n}, \n{\n \"ETH_account\" : \"", +"0xc903b6a279891e19daf466faec9110445aed28", +"13\",\n \"name\" : \"0xc903b6a279891e19da\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1767390000\n}, \n{\n \"ETH_account\" : \"", +"0x12d179d5526d5683bf625d386dc9fb8013aac7", +"46\",\n \"name\" : \"0x12d179d5526d5683bf\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1500000000\n}, \n{\n \"ETH_account\" : \"", +"0x74513e9867dd81154a6f57e65e87e89002c2bf", +"52\",\n \"name\" : \"0x74513e9867dd81154a\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 11\n}, \n{\n \"ETH_account\" : \"0x9434a7", +"3c7e87cd555544d1a6e2f0495798294ed8\",\n ", +" \"name\" : \"0x9434a73c7e87cd5555\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 442437", +"21346\n}, \n{\n \"ETH_account\" : \"0xe232e", +"f3fbdf37364ec84d93865da18b804fafeb8\",\n ", +" \"name\" : \"0xe232ef3fbdf37364ec\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 50000", +"0000\n}, \n{\n \"ETH_account\" : \"0xde0b2a", +"83874f131190e94a3e19781d0b42a80a96\",\n ", +" \"name\" : \"0xde0b2a83874f131190\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 101872", +"62700\n}, \n{\n \"ETH_account\" : \"0x26394", +"46daa522d04d41474e1505b4efc116ea259\",\n ", +" \"name\" : \"0x2639446daa522d04d4\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 72317", +"7936525\n}, \n{\n \"ETH_account\" : \"0x192", +"666712c13daf2145d0ef55d6d399f7fdfe65b\",\n", +" \"name\" : \"0x192666712c13daf214\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 140", +"00000\n}, \n{\n \"ETH_account\" : \"0xc344e", +"51968a955a317308f22f00f87429b790674\",\n ", +" \"name\" : \"0xc344e51968a955a317\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 27000", +"0000\n}, \n{\n \"ETH_account\" : \"0x8b8ae2", +"0b2851557cb4167d06b41b3691aa7e8ddd\",\n ", +" \"name\" : \"0x8b8ae20b2851557cb4\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 706355", +"0271\n}, \n{\n \"ETH_account\" : \"0xda72e2", +"7413f2265869ecaea9bc7201a9337a3d26\",\n ", +" \"name\" : \"0xda72e27413f2265869\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 944034", +"97\n}, \n{\n \"ETH_account\" : \"0xef0674f4", +"38e727d1f95e9c6d33e957d4e97babe7\",\n \"", +"name\" : \"0xef0674f438e727d1f9\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 13296000", +"000\n}, \n{\n \"ETH_account\" : \"0x8954ed9", +"810138fc007bf824cc9c1cf732db22b1e\",\n ", +"\"name\" : \"0x8954ed9810138fc007\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2171903", +"5637\n}, \n{\n \"ETH_account\" : \"0x57e8d0", +"82eea1e02030d6c15b2fc847e2a161f003\",\n ", +" \"name\" : \"0x57e8d082eea1e02030\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 697000", +"000\n}, \n{\n \"ETH_account\" : \"0x442ceca", +"56900a7795b3966830afee3527729a7c8\",\n ", +"\"name\" : \"0x442ceca56900a7795b\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4279500", +"00\n}, \n{\n \"ETH_account\" : \"0x1cd9a452", +"b51feaca2754e194ecc4335a77a0905b\",\n \"", +"name\" : \"0x1cd9a452b51feaca27\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 31\n}, \n{", +"\n \"ETH_account\" : \"0x73c4bb393f065d58", +"b755962f7feaa4156259d7e9\",\n \"name\" : ", +"\"0x73c4bb393f065d58b7\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 783093792\n}, \n{\n", +" \"ETH_account\" : \"0x379ef17177308ff61", +"adf6cfabc36f010d1179ad6\",\n \"name\" : \"", +"0x379ef17177308ff61a\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 3500000000\n}, \n{\n", +" \"ETH_account\" : \"0xb6b8cc588e76a53cf", +"f61eeca20a5e6a8c2ffad0e\",\n \"name\" : \"", +"0xb6b8cc588e76a53cff\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 2352740707\n}, \n{\n", +" \"ETH_account\" : \"0x22f783a0e322874a4", +"ece270b6d79255e3fef4358\",\n \"name\" : \"", +"0x22f783a0e322874a4e\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 300000000\n}, \n{\n ", +" \"ETH_account\" : \"0x05913d7ae752076d31", +"49237c2015d2c395984d8b\",\n \"name\" : \"0", +"x05913d7ae752076d31\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 463000000\n}, \n{\n ", +" \"ETH_account\" : \"0x77c42f962e82c25b474", +"18e13ee8003bd64a48a3d\",\n \"name\" : \"bu", +"lgaria\",\n \"publicKey\" : \"SPH51NVULt5M", +"8tQAkaTd7VB9V5W8dNsock3zaBsFSEY3wjWq6gSf", +"y\",\n \"balance\" : 3000000000\n}, \n{\n ", +" \"ETH_account\" : \"0xc7f1e39dc9baebf43bef", +"63c151e91da1f1009b26\",\n \"name\" : \"0xc", +"7f1e39dc9baebf43b\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 66895961\n}, \n{\n \"", +"ETH_account\" : \"0x7ff3168f2eae8ebb29dcd8", +"fcf8172ec115c119a4\",\n \"name\" : \"sphtx", +"love\",\n \"publicKey\" : \"SPH6ghxZSV6PQ4", +"GLw4hskv5DiY5voA2UxV5NScbe7sVnCVzDhD9cv\"", +",\n \"balance\" : 575693097\n}, \n{\n \"E", +"TH_account\" : \"0x095f1ec5b131e2bb1b19dc0", +"63a4f9465fbb11306\",\n \"name\" : \"hellow", +"orld\",\n \"publicKey\" : \"SPH4wyLAM54RXh", +"Ac6aYAiRC3v71uHVQFvLzB8DHhzER1eWYJ5A8nG\"", +",\n \"balance\" : 273020435\n}, \n{\n \"E", +"TH_account\" : \"0x9ff94f4daf3ce7fb8a5bb07", +"32f9b51a815ca6180\",\n \"name\" : \"helloe", +"arth\",\n \"publicKey\" : \"SPH5cBcmw53YsG", +"gHBBRNjijd3joUmo2CCJMHJsrFWNht8d5KjGAGy\"", +",\n \"balance\" : 273020000\n}, \n{\n \"E", +"TH_account\" : \"0x4acde1fd7d71df700397327", +"e7da34ee92f4e554c\",\n \"name\" : \"0x4acd", +"e1fd7d71df7003\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1426949549\n}, \n{\n \"E", +"TH_account\" : \"0x2ea4d9062c1ab7fd8e58c63", +"570a229584cebb08a\",\n \"name\" : \"0x2ea4", +"d9062c1ab7fd8e\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1065949079\n}, \n{\n \"E", +"TH_account\" : \"0x86fe536c7a7bdf17a02922c", +"34cc98fbe37ade987\",\n \"name\" : \"0x86fe", +"536c7a7bdf17a0\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1970898500\n}, \n{\n \"E", +"TH_account\" : \"0x274f3c32c90517975e29dfc", +"209a23f315c1e5fc7\",\n \"name\" : \"0x274f", +"3c32c90517975e\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 823234979165\n}, \n{\n ", +"\"ETH_account\" : \"0x6a04d669fcc186ee795f6", +"3569eee4c95286a630e\",\n \"name\" : \"0x6a", +"04d669fcc186ee79\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 12502301460\n}, \n{\n ", +" \"ETH_account\" : \"0xe7aa55a16b14e5b1e83b", +"f544537989d67636953c\",\n \"name\" : \"0xe", +"7aa55a16b14e5b1e8\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 360000000\n}, \n{\n ", +"\"ETH_account\" : \"0xc700516179ce2c805c1d4", +"878246baf04b3ca63f9\",\n \"name\" : \"0xc7", +"00516179ce2c805c\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 507000\n}, \n{\n \"ETH", +"_account\" : \"0x598a9a99403c98fcd7492cb09", +"ef8e860ee31f971\",\n \"name\" : \"0x598a9a", +"99403c98fcd7\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3000003366\n}, \n{\n \"ETH", +"_account\" : \"0x7ec4b98dd80ef1bac43dce496", +"15e21d858f82cf1\",\n \"name\" : \"0x7ec4b9", +"8dd80ef1bac4\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1131000000\n}, \n{\n \"ETH", +"_account\" : \"0xf9c935c8ce74cffa971a61ef1", +"d4658ec78e0ca5a\",\n \"name\" : \"0xf9c935", +"c8ce74cffa97\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 100000000\n}, \n{\n \"ETH_", +"account\" : \"0x82ebdac4f760cded5ce3c94563", +"d9809b9e1f627d\",\n \"name\" : \"qxijwioet", +"ivnneu\",\n \"publicKey\" : \"SPH5ccbX73Bs", +"5BFgfrbcDUBEk4XoQn6uoGpZV96pGtoRHziGFwC5", +"C\",\n \"balance\" : 3220525900\n}, \n{\n ", +" \"ETH_account\" : \"0x0e94a6a7275221f0c7ad", +"750184d90c666f36413b\",\n \"name\" : \"0x0", +"e94a6a7275221f0c7\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 986704238\n}, \n{\n ", +"\"ETH_account\" : \"0x51a8ec573eb47fb4a6c2f", +"a7621fc9f8154d1fcb2\",\n \"name\" : \"0x51", +"a8ec573eb47fb4a6\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 8000000\n}, \n{\n \"ET", +"H_account\" : \"0xfcfb277d3baed8eca99309f9", +"72253de42d7c4c0c\",\n \"name\" : \"0xfcfb2", +"77d3baed8eca9\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 2031643000\n}, \n{\n \"ET", +"H_account\" : \"0xda7e162a59bf59d5db124a14", +"a0357e6c55d8ffbc\",\n \"name\" : \"0xda7e1", +"62a59bf59d5db\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1000000000\n}, \n{\n \"ET", +"H_account\" : \"0x82ff727381b6354d1e875439", +"47993b0ba3f5af35\",\n \"name\" : \"0x82ff7", +"27381b6354d1e\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 100000000\n}, \n{\n \"ETH", +"_account\" : \"0x6b0827f535f5face55d05e443", +"ce7e2ff7104a1a9\",\n \"name\" : \"0x6b0827", +"f535f5face55\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 65200000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x59cfb21a4a889fc340885ed60b2", +"a921b44911c89\",\n \"name\" : \"0x59cfb21a", +"4a889fc340\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 971270000\n}, \n{\n \"ETH_ac", +"count\" : \"0x04b586c310004ecf909277bbdc1e", +"155f82005c36\",\n \"name\" : \"0x04b586c31", +"0004ecf90\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 309663513\n}, \n{\n \"ETH_acc", +"ount\" : \"0x834034432d03ebbdc2835202354cf", +"0060a7a0e8c\",\n \"name\" : \"0x834034432d", +"03ebbdc2\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2364251800\n}, \n{\n \"ETH_acc", +"ount\" : \"0xc12408545be8e01b10338dc8278d3", +"22482802f93\",\n \"name\" : \"0xc12408545b", +"e8e01b10\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 5200000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x07b6e949a7a37fd7fee435010c908", +"7724ed0e270\",\n \"name\" : \"0x07b6e949a7", +"a37fd7fe\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 132480000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x0db56164d4f156ca3c66997fdc2284", +"e3a9bbf123\",\n \"name\" : \"tim\",\n \"pu", +"blicKey\" : \"SPH57NsqKeZYaKybTNJC7e6ZP7rt", +"jumgHqU7j54wGD2yLF4QA22F9\",\n \"balance", +"\" : 500000000\n}, \n{\n \"ETH_account\" : ", +"\"0xd5920a535b109009528dd6b285626ece7532b", +"ed9\",\n \"name\" : \"0xd5920a535b10900952", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 5000000000\n}, \n{\n \"ETH_account\" : ", +"\"0xd4ab4118c5c5bca1e02a4e583d39da1ba0d0a", +"ee3\",\n \"name\" : \"0xd4ab4118c5c5bca1e0", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 800000000\n}, \n{\n \"ETH_account\" : \"", +"0x5f023382da24d06123537cf47f6029c9e6d451", +"e1\",\n \"name\" : \"0x5f023382da24d06123\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 365000000\n}, \n{\n \"ETH_account\" : \"0", +"xc9aeec4db93127a453fd47d3ac1fc96c0cc3c0a", +"b\",\n \"name\" : \"0xc9aeec4db93127a453\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 81460000\n}, \n{\n \"ETH_account\" : \"0x6", +"8c08406fd81db3464acc30edfef82488822a7db\"", +",\n \"name\" : \"0x68c08406fd81db3464\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"23694234\n}, \n{\n \"ETH_account\" : \"0xa8", +"c741773895c368fc89144ef22b5b8124a34cc3\",", +"\n \"name\" : \"0xa8c741773895c368fc\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 23", +"2618838\n}, \n{\n \"ETH_account\" : \"0x244", +"6437ab7887bf659a14f609edeb139bf5531d4\",\n", +" \"name\" : \"0x2446437ab7887bf659\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 841", +"97000\n}, \n{\n \"ETH_account\" : \"0x0fe0f", +"2798fe49cbf3a4bef25e42b1291a57832cb\",\n ", +" \"name\" : \"0x0fe0f2798fe49cbf3a\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 67000", +"0000\n}, \n{\n \"ETH_account\" : \"0xd0ebe2", +"2272b05d6f579148f71da77e842e36df13\",\n ", +" \"name\" : \"petersilie\",\n \"publicKey\" ", +": \"SPH5k8ktF63PPJX3w8xbo3d5P8tniJExkEV61", +"KwdrwrzcNULrivjG\",\n \"balance\" : 31550", +"91469\n}, \n{\n \"ETH_account\" : \"0x047c1", +"3bb04b9e8d21cec5c1358b65e27bf6d2a0d\",\n ", +" \"name\" : \"0x047c13bb04b9e8d21c\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 37000", +"00000\n}, \n{\n \"ETH_account\" : \"0xd4cb9", +"0b729fce9207cd2c518cd4e8d2b95df006f\",\n ", +" \"name\" : \"0xd4cb90b729fce9207c\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 81810", +"000\n}, \n{\n \"ETH_account\" : \"0xff95dc0", +"97405f18017425970f54f71c1aeba9170\",\n ", +"\"name\" : \"boki\",\n \"publicKey\" : \"SPH7", +"NZdh7seeBiek76FQJzdhHBdnzcz4PKsejLNrV9xd", +"iVVpjatVw\",\n \"balance\" : 277600000\n},", +" \n{\n \"ETH_account\" : \"0xefa510375ed45", +"08a8a63de5be6109b44bf45fde5\",\n \"name\"", +" : \"0xefa510375ed4508a8a\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1826000000\n},", +" \n{\n \"ETH_account\" : \"0x4c6c47d28bb05", +"678f33fe6b4314e9abe873c7192\",\n \"name\"", +" : \"0x4c6c47d28bb05678f3\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 968920000\n}, ", +"\n{\n \"ETH_account\" : \"0x67170e91a54f54", +"66b8b0af42720fe17da072ffd4\",\n \"name\" ", +": \"0x67170e91a54f5466b8\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 576019000\n}, \n", +"{\n \"ETH_account\" : \"0x412e4b914654fba", +"c410733e2cd796b421aa610ab\",\n \"name\" :", +" \"0x412e4b914654fbac41\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 5377111100\n}, \n", +"{\n \"ETH_account\" : \"0xc3b4978bf89b951", +"b952cc0216f6062e7d5cdee25\",\n \"name\" :", +" \"0xc3b4978bf89b951b95\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 503000000\n}, \n{", +"\n \"ETH_account\" : \"0x0947aa4073cb46c3", +"0c3445a1d3ff3b4a6033e3d8\",\n \"name\" : ", +"\"0x0947aa4073cb46c30c\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 770000000\n}, \n{\n", +" \"ETH_account\" : \"0xa1d0e796ecfa96f77", +"9d634d948ee56d64d0a0b7d\",\n \"name\" : \"", +"0xa1d0e796ecfa96f779\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 49000000\n}, \n{\n ", +" \"ETH_account\" : \"0x166b568b2e7a5d52029", +"6d34ded5eb1ce8c6fb221\",\n \"name\" : \"0x", +"166b568b2e7a5d5202\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 498536000\n}, \n{\n ", +" \"ETH_account\" : \"0x2b0ca1f3b1f74968e615", +"6a0dfb98c3d311e7efe2\",\n \"name\" : \"0x2", +"b0ca1f3b1f74968e6\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 6320000000\n}, \n{\n ", +" \"ETH_account\" : \"0x9ab3c2fbb7477f960397", +"8563e1631cd956c72495\",\n \"name\" : \"0x9", +"ab3c2fbb7477f9603\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 200000000\n}, \n{\n ", +"\"ETH_account\" : \"0x03c5872d63bf15099b955", +"5d07b7ce27de510dd43\",\n \"name\" : \"0x03", +"c5872d63bf15099b\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1841000000\n}, \n{\n ", +"\"ETH_account\" : \"0x8ab6b17793d5499f17cce", +"95f9e54f7b7029e4725\",\n \"name\" : \"0x8a", +"b6b17793d5499f17\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 3349429649\n}, \n{\n ", +"\"ETH_account\" : \"0x0f761b35ae5b3c2e5bc60", +"8d1426534b56295c03c\",\n \"name\" : \"grou", +"ndzero\",\n \"publicKey\" : \"SPH8Ea4KsjGb", +"9wAmtFBQJqqHX2apPfqZ7zb8MJKZs3PGKnMoMypx", +"g\",\n \"balance\" : 2531869100\n}, \n{\n ", +" \"ETH_account\" : \"0x1662a2cd6c399e28a452", +"809b8b064e734594f53a\",\n \"name\" : \"0x1", +"662a2cd6c399e28a4\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 534921673\n}, \n{\n ", +"\"ETH_account\" : \"0xc74f105821a1792bf6f2e", +"5a7c637f3dd5c0c321d\",\n \"name\" : \"0xc7", +"4f105821a1792bf6\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 148681246\n}, \n{\n \"", +"ETH_account\" : \"0x3e366c8b2af81b847b37f0", +"3abb80b5445f4c2418\",\n \"name\" : \"0x3e3", +"66c8b2af81b847b\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 489460000\n}, \n{\n \"E", +"TH_account\" : \"0xd43c0134d0e3255b3aeec68", +"b03ea78b090547efb\",\n \"name\" : \"0xd43c", +"0134d0e3255b3a\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 329964000\n}, \n{\n \"ET", +"H_account\" : \"0x32c1937eeaa339319f0a3c32", +"3739f36cee0b3707\",\n \"name\" : \"0x32c19", +"37eeaa339319f\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1754118784\n}, \n{\n \"ET", +"H_account\" : \"0x57c2eb0bdc63243d7671c1ee", +"aac7af52fb0ab6ae\",\n \"name\" : \"0x57c2e", +"b0bdc63243d76\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 23565972\n}, \n{\n \"ETH_", +"account\" : \"0xc35bd004530082a1759fcaedd6", +"f5355a9f20821c\",\n \"name\" : \"sophiatxt", +"\",\n \"publicKey\" : \"SPH5RHv8gyxQAWnN9B", +"2G5WqFiwzQQ1YXipB7bseQtvszHCBVFLdYU\",\n ", +" \"balance\" : 3100000000\n}, \n{\n \"ETH_", +"account\" : \"0xd500e42432cc06caf883ea2f7f", +"965e8c2200a768\",\n \"name\" : \"0xd500e42", +"432cc06caf8\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 460000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xc505c8e2f1e02978997dfd24bf7e5b", +"3bbba024f7\",\n \"name\" : \"0xc505c8e2f1e", +"0297899\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1952000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x723a5d153edd10dc48dd31b48539f8", +"43e77eb94c\",\n \"name\" : \"0x723a5d153ed", +"d10dc48\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 348036000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x78b7698be3f0699414633390113ac68", +"3962c8eac\",\n \"name\" : \"bearlovespanda", +"1\",\n \"publicKey\" : \"SPH7t5SjJFRTrM3LV", +"zo4urVneervAaPuiQUumapik2NAP7PR1RxZG\",\n ", +" \"balance\" : 1408000000\n}, \n{\n \"ETH", +"_account\" : \"0x8b4f5fd827a708537514824e4", +"269ac73bd835d05\",\n \"name\" : \"0x8b4f5f", +"d827a7085375\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 243050168\n}, \n{\n \"ETH_", +"account\" : \"0x840a76a809de893a357346e90e", +"2ad6db95b9cdc1\",\n \"name\" : \"sphtxswap", +"\",\n \"publicKey\" : \"SPH7gRW7cSUcugMnvw", +"S3BEByEVFrsheCMvPpBaxV1DcQUyrR9wuj1\",\n ", +" \"balance\" : 5117357625\n}, \n{\n \"ETH_", +"account\" : \"0xe477f1586d7aed782b615ebe56", +"d00add79155ad6\",\n \"name\" : \"0xe477f15", +"86d7aed782b\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 91984400\n}, \n{\n \"ETH_ac", +"count\" : \"0xe28ce272d0c4d1045e87562c357d", +"10f6fe8b9126\",\n \"name\" : \"0xe28ce272d", +"0c4d1045e\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 342919992\n}, \n{\n \"ETH_acc", +"ount\" : \"0x7b6de5b4ab2ef40abf98ec2391153", +"a3ef0e3ebdb\",\n \"name\" : \"0x7b6de5b4ab", +"2ef40abf\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 860000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x875aed3503805e55c9829cc04e7c10", +"a33f289122\",\n \"name\" : \"0x875aed35038", +"05e55c9\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 49347930892\n}, \n{\n \"ETH_acc", +"ount\" : \"0xe535f657f80bca026eb059ee81789", +"11f2cfb39f6\",\n \"name\" : \"0xe535f657f8", +"0bca026e\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 37111072500\n}, \n{\n \"ETH_ac", +"count\" : \"0x852cecb723e16d37dfc5090ba1fd", +"16184caff44d\",\n \"name\" : \"0x852cecb72", +"3e16d37df\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 19438000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xb4358074cf56b10f498cdfd1f9f", +"cf4fa522c9f26\",\n \"name\" : \"0xb4358074", +"cf56b10f49\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 500000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xc64833f82f89bc5485dd690843cf", +"3d2e7574aa7e\",\n \"name\" : \"stmsonic\",\n", +" \"publicKey\" : \"SPH5cRpPGpou9BiLr3P7f", +"xXoifUwdespB4tC9M7VmmDzwsRgrf4nn\",\n \"", +"balance\" : 2020000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x35f6490a8afd92fd94700b73e4f8f", +"c70c2717fd2\",\n \"name\" : \"0x35f6490a8a", +"fd92fd94\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 9990000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x3ce8a2b69ea6c144c69f96bc88e3b", +"c56e58d063e\",\n \"name\" : \"0x3ce8a2b69e", +"a6c144c6\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 4500000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xe7b8b570aa25dcbc7f69a91fb8610", +"7414d34b8ab\",\n \"name\" : \"0xe7b8b570aa", +"25dcbc7f\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 5000000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x997a9a31cf02ca37e3bf36292f50a", +"43185c22916\",\n \"name\" : \"0x997a9a31cf", +"02ca37e3\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1824494000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xc5762267ffe711b1e6ee060c15275", +"33f1a1a4c05\",\n \"name\" : \"0xc5762267ff", +"e711b1e6\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 85000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xacd60ef15fc036f75e6dbeca3796ef6", +"17f822b68\",\n \"name\" : \"0xacd60ef15fc0", +"36f75e\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 270000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xf255fe0c3ec6bbf7968aafc487be359c", +"b3e6f3c7\",\n \"name\" : \"0xf255fe0c3ec6b", +"bf796\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 5000014617\n}, \n{\n \"ETH_accoun", +"t\" : \"0x993842a32fa586898cf5fdfb7fa497a1", +"85f37dfc\",\n \"name\" : \"0x993842a32fa58", +"6898c\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 750000000\n}, \n{\n \"ETH_account", +"\" : \"0xd0f95f9c40970f891f4e9a745bc9655ac", +"0d7b7b3\",\n \"name\" : \"0xd0f95f9c40970f", +"891f\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 15660000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xa3c9f61ccfb1df88e21316da45b8db95", +"2331d4c9\",\n \"name\" : \"0xa3c9f61ccfb1d", +"f88e2\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 160000000\n}, \n{\n \"ETH_account", +"\" : \"0x5b9d841e739a1ddea480e742a4b7fc0cd", +"04e4b64\",\n \"name\" : \"0x5b9d841e739a1d", +"dea4\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 90000000\n}, \n{\n \"ETH_account\" ", +": \"0x933c89b2ecb8db5a33ce70dfb9df87220ab", +"64b27\",\n \"name\" : \"0x933c89b2ecb8db5a", +"33\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 2200000000\n}, \n{\n \"ETH_account\" ", +": \"0xe2a1b031c087a6878722e43f86634ec04bd", +"8c8d1\",\n \"name\" : \"0xe2a1b031c087a687", +"87\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 4930494505\n}, \n{\n \"ETH_account\" ", +": \"0xa85fdfe63f2d00a556356451b9c178b4b35", +"24602\",\n \"name\" : \"0xa85fdfe63f2d00a5", +"56\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 3533295023\n}, \n{\n \"ETH_account\" ", +": \"0xc656ec8f921bdd5077b5a3300432e6bfa3b", +"27d3a\",\n \"name\" : \"0xc656ec8f921bdd50", +"77\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 376903677\n}, \n{\n \"ETH_account\" :", +" \"0x77365c9ec7db2215b31157cfc7a0ffa426c8", +"654c\",\n \"name\" : \"0x77365c9ec7db2215b", +"3\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 18510000000\n}, \n{\n \"ETH_account\" ", +": \"0x0b0408ef4e76c04851c14f3b75994bb1328", +"3bfcc\",\n \"name\" : \"0x0b0408ef4e76c048", +"51\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 364476400\n}, \n{\n \"ETH_account\" :", +" \"0x60945ed05a6b0df1762ee7567fcf9a68bfef", +"c476\",\n \"name\" : \"0x60945ed05a6b0df17", +"6\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1202782800\n}, \n{\n \"ETH_account\" :", +" \"0x144911439d867fecb985e38df80357e2a564", +"73cf\",\n \"name\" : \"0x144911439d867fecb", +"9\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 521237673\n}, \n{\n \"ETH_account\" : ", +"\"0x3af3ac3eeb63580943117d9766667c1bc6202", +"3cd\",\n \"name\" : \"0x3af3ac3eeb63580943", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 60000000\n}, \n{\n \"ETH_account\" : \"0", +"x1bfd6431c5cd8079eb8a48f3aaab5c278d4796d", +"7\",\n \"name\" : \"0x1bfd6431c5cd8079eb\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 11047734924\n}, \n{\n \"ETH_account\" : \"", +"0x952138b856771785c2b55da4aa1c926aeaaba2", +"14\",\n \"name\" : \"0x952138b856771785c2\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 786488789\n}, \n{\n \"ETH_account\" : \"0", +"x8cf599bd24d329f344f3f74373d97f04d93d3c7", +"0\",\n \"name\" : \"0x8cf599bd24d329f344\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1362808273\n}, \n{\n \"ETH_account\" : \"0", +"x35d907f59d76cb1db806729234f0b6f1a02e298", +"9\",\n \"name\" : \"0x35d907f59d76cb1db8\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 453420000\n}, \n{\n \"ETH_account\" : \"0x", +"14c20a897459117caebc063e5b1bb3840de2a20b", +"\",\n \"name\" : \"0x14c20a897459117cae\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"50000000\n}, \n{\n \"ETH_account\" : \"0x13", +"d80f201ae6f376de2f1270e479fc2ed0bedbe8\",", +"\n \"name\" : \"0x13d80f201ae6f376de\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 51", +"9999999\n}, \n{\n \"ETH_account\" : \"0xf79", +"6df4ffd2ea68313fda96e411a9bc118e97756\",\n", +" \"name\" : \"0xf796df4ffd2ea68313\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 321", +"840663\n}, \n{\n \"ETH_account\" : \"0xa331", +"530415d7a2a7fdbc5212315b4ddb86ec2411\",\n ", +" \"name\" : \"0xa331530415d7a2a7fd\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3000", +"0000\n}, \n{\n \"ETH_account\" : \"0x70fb5f", +"8327080bb074448324022dcfd6d148616e\",\n ", +" \"name\" : \"0x70fb5f8327080bb074\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 300000", +"00\n}, \n{\n \"ETH_account\" : \"0x7a3caea9", +"d1ffe596a5ed146f5cfc099875f8ad4f\",\n \"", +"name\" : \"0x7a3caea9d1ffe596a5\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 486769\n}", +", \n{\n \"ETH_account\" : \"0xc9682a00475e", +"4c5038a94a394a3bd962faffd007\",\n \"name", +"\" : \"0xc9682a00475e4c5038\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 30000000000\n", +"}, \n{\n \"ETH_account\" : \"0xb908d864910", +"1f91934dfd6cee2ed2f607d649157\",\n \"nam", +"e\" : \"0xb908d8649101f91934\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 105241691\n}", +", \n{\n \"ETH_account\" : \"0xd15406f15bd0", +"c1dc7813906a0c3bcac6afb9d75f\",\n \"name", +"\" : \"0xd15406f15bd0c1dc78\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 517619904\n},", +" \n{\n \"ETH_account\" : \"0x6710cffc37759", +"bdf3be7a426ddd39b73ea3c11ae\",\n \"name\"", +" : \"0x6710cffc37759bdf3b\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 2126955700\n},", +" \n{\n \"ETH_account\" : \"0xac4a2e4dc008c", +"f8f4dcf1a86ab48069548fcdd53\",\n \"name\"", +" : \"0xac4a2e4dc008cf8f4d\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 873630000\n}, ", +"\n{\n \"ETH_account\" : \"0x5315fd57ba0f6b", +"2d1ec9c7c6711785f04e8c5784\",\n \"name\" ", +": \"0x5315fd57ba0f6b2d1e\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 645100\n}, \n{\n ", +" \"ETH_account\" : \"0x3f69ee5399cf4034a5", +"ee3b6ff00298e7f563bc3e\",\n \"name\" : \"0", +"x3f69ee5399cf4034a5\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 19020204\n}, \n{\n ", +" \"ETH_account\" : \"0x1d248c3eb80abbba9c30", +"2eb291c0e78c0a6afaf9\",\n \"name\" : \"0x1", +"d248c3eb80abbba9c\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1820058823\n}, \n{\n ", +" \"ETH_account\" : \"0xff57f61dfa4cf76cb949", +"0d6662c8c022c7e913fd\",\n \"name\" : \"0xf", +"f57f61dfa4cf76cb9\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 42690000\n}, \n{\n \"", +"ETH_account\" : \"0xeb858d991607249106f51d", +"609d14ba8df6c57748\",\n \"name\" : \"0xeb8", +"58d991607249106\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 680690000\n}, \n{\n \"E", +"TH_account\" : \"0xa64579021d351e28d2ad625", +"dd8e1489e8080a2e6\",\n \"name\" : \"0xa645", +"79021d351e28d2\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 3199559000\n}, \n{\n \"E", +"TH_account\" : \"0x6692df0d97cbb783c029923", +"26b70eebb52eb4add\",\n \"name\" : \"0x6692", +"df0d97cbb783c0\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1528\n}, \n{\n \"ETH_acc", +"ount\" : \"0x162994d16311c9ffc1ca7c1a93af9", +"4d77648018c\",\n \"name\" : \"0x162994d163", +"11c9ffc1\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 40010000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x88afd45839a78b6e6baa3ac3aff4", +"a5fbeb13d127\",\n \"name\" : \"0x88afd4583", +"9a78b6e6b\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 25000000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x533b8997d7aabeb0dc3431b2e65", +"97f193fc7b8af\",\n \"name\" : \"0x533b8997", +"d7aabeb0dc\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 98000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xdb7db88bfa096afb83617bc0867bb", +"7d1c0c20bc3\",\n \"name\" : \"0xdb7db88bfa", +"096afb83\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1004000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x1b22c32cd936cb97c28c5690a0695", +"a82abf688e6\",\n \"name\" : \"0x1b22c32cd9", +"36cb97c2\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 244988000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x0d0a9cb0b3bd864169b4694ef6e8c0", +"abebfe6f83\",\n \"name\" : \"0x0d0a9cb0b3b", +"d864169\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 8035490100\n}, \n{\n \"ETH_acco", +"unt\" : \"0x1e49515f9233e5c5865453f0dff9d3", +"46dcc3b261\",\n \"name\" : \"sophiatxmain\"", +",\n \"publicKey\" : \"SPH67jxoPwoCA9ypEyq", +"3KT8WCxZHEyGfzRo22zkjGecu5ds5kDEHX\",\n ", +" \"balance\" : 12663000000\n}, \n{\n \"ETH_", +"account\" : \"0xa2931631d8d93c5f5f7e0f573f", +"6b5099c21c7272\",\n \"name\" : \"0xa293163", +"1d8d93c5f5f\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 20000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xbc68ef97909e7e6af9fe3ebdf925", +"340db4aac907\",\n \"name\" : \"0xbc68ef979", +"09e7e6af9\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1955000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xbe00eff0f0f86bef5fbf17e4f514", +"5600418028b5\",\n \"name\" : \"0xbe00eff0f", +"0f86bef5f\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 30010000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xf02da5e5245a26381d35fff6d26770", +"06084a43be\",\n \"name\" : \"0xf02da5e5245", +"a26381d\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 2098499400\n}, \n{\n \"ETH_acco", +"unt\" : \"0x3b3bccd900628bcd7cabc04b823f7e", +"229861b6cf\",\n \"name\" : \"0x3b3bccd9006", +"28bcd7c\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1437000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x34b6d731fd90bbfa371656fb1b8ce0", +"5d16bf821f\",\n \"name\" : \"0x34b6d731fd9", +"0bbfa37\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 987010000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xc3ed123ab1feb870745ee9ab0f96774", +"c110f2b51\",\n \"name\" : \"0xc3ed123ab1fe", +"b87074\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 190000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xfb91cb2dd874376b1e9e5fd1494ac783", +"f164d35a\",\n \"name\" : \"0xfb91cb2dd8743", +"76b1e\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 20000000\n}, \n{\n \"ETH_account\"", +" : \"0x05bc0543f52245100d213e2cdb7a94b9dc", +"9c8bb3\",\n \"name\" : \"0x05bc0543f522451", +"00d\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1020000000\n}, \n{\n \"ETH_account\"", +" : \"0x0cdb6447598de909e89f5d7e1371b8c2ab", +"452e15\",\n \"name\" : \"0x0cdb6447598de90", +"9e8\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1914466000\n}, \n{\n \"ETH_account\"", +" : \"0x4d214479079ef7feb83f1ed558a3e218f1", +"bf2e11\",\n \"name\" : \"0x4d214479079ef7f", +"eb8\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 6065000000\n}, \n{\n \"ETH_account\"", +" : \"0x63ccb9dc39cccf4003d22f0a46c94aa9ba", +"acabd4\",\n \"name\" : \"0x63ccb9dc39cccf4", +"003\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 549771100\n}, \n{\n \"ETH_account\" ", +": \"0x76caaa9a0fe9dcba6a8d5addfab60feb55d", +"9b643\",\n \"name\" : \"0x76caaa9a0fe9dcba", +"6a\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 724864306\n}, \n{\n \"ETH_account\" :", +" \"0xf7527a5924e04e372409ea9f38fe59cb6b04", +"db24\",\n \"name\" : \"montesphtx\",\n \"p", +"ublicKey\" : \"SPH7b7dFeXVKh4dyEHbjpbJXzUj", +"YxsVb8XEJi2YHh1JXm9nxcETHs\",\n \"balanc", +"e\" : 19594200000\n}, \n{\n \"ETH_account\"", +" : \"0xd8a42491ec140fe320cf8528ebf470bc9c", +"16d567\",\n \"name\" : \"mherosphtx\",\n ", +"\"publicKey\" : \"SPH8FhEA1k2w1QskzCdkoonNj", +"qbHG9mBXHJWjReF72gbQpMPFLSTt\",\n \"bala", +"nce\" : 18320000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x8c541b72a2805a58a0da447a854660cc", +"41a967bd\",\n \"name\" : \"0x8c541b72a2805", +"a58a0\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1104000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x76ce182bbad1975cf320c9ec5d046377", +"de93da14\",\n \"name\" : \"0x76ce182bbad19", +"75cf3\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 130000000\n}, \n{\n \"ETH_account", +"\" : \"0x7035abec7190dd3c4db524798efd1827b", +"875c1fb\",\n \"name\" : \"0x7035abec7190dd", +"3c4d\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 2234000000\n}, \n{\n \"ETH_account", +"\" : \"0xaa6da306a39ed2c768fbfa1580fdc0708", +"d867267\",\n \"name\" : \"0xaa6da306a39ed2", +"c768\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 988000000\n}, \n{\n \"ETH_account\"", +" : \"0xbed4a294ef33ca611e5a68f26dee89e193", +"e6f1b4\",\n \"name\" : \"0xbed4a294ef33ca6", +"11e\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 494165776\n}, \n{\n \"ETH_account\" ", +": \"0xc71ea11787f35d75b63b05c5b598b9a1005", +"048df\",\n \"name\" : \"0xc71ea11787f35d75", +"b6\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 20000000\n}, \n{\n \"ETH_account\" : ", +"\"0x6fdd72d78d857c46ae5df9fb3ce22c6c4e33f", +"4ce\",\n \"name\" : \"0x6fdd72d78d857c46ae", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1857000000\n}, \n{\n \"ETH_account\" : ", +"\"0x52cedf298b448281a5133ab6f4bfcaac5cda7", +"2d5\",\n \"name\" : \"0x52cedf298b448281a5", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 271000000\n}, \n{\n \"ETH_account\" : \"", +"0xcd943bfb2ea8b2dba81b0e89e2fc5496d8e08d", +"3b\",\n \"name\" : \"0xcd943bfb2ea8b2dba8\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 131000000\n}, \n{\n \"ETH_account\" : \"0", +"xe04606de07e1c273a218bb1b9ac71948b74f5fa", +"6\",\n \"name\" : \"0xe04606de07e1c273a2\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 200000000\n}, \n{\n \"ETH_account\" : \"0x", +"01cac0da344ba1fec7a3fe454620410c1e39654f", +"\",\n \"name\" : \"0x01cac0da344ba1fec7\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"70495748\n}, \n{\n \"ETH_account\" : \"0xac", +"62754fed6ec8b8d275eba8b1d3fbf4fdfbceb6\",", +"\n \"name\" : \"0xac62754fed6ec8b8d2\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 70", +"13846194\n}, \n{\n \"ETH_account\" : \"0x0a", +"fd24a69b0d96513fdcb4631af6d7be482322a5\",", +"\n \"name\" : \"0x0afd24a69b0d96513f\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 11", +"12560000\n}, \n{\n \"ETH_account\" : \"0xcf", +"3ef76404ef9e7b33f9f7fc7d3711b1a86b4ebd\",", +"\n \"name\" : \"0xcf3ef76404ef9e7b33\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 11", +"11915956\n}, \n{\n \"ETH_account\" : \"0x70", +"269588268feef6c11ede0807ef58d193d45a23\",", +"\n \"name\" : \"0x70269588268feef6c1\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 31", +"1000000\n}, \n{\n \"ETH_account\" : \"0x738", +"4bbc7102471c8acccd23234760fb4e899931d\",\n", +" \"name\" : \"0x7384bbc7102471c8ac\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 110", +"00000\n}, \n{\n \"ETH_account\" : \"0x62130", +"8012fbe08af2babb2e2c85aa224d2fca3e3\",\n ", +" \"name\" : \"0x621308012fbe08af2b\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 13069", +"7000\n}, \n{\n \"ETH_account\" : \"0x798dff", +"bdfee1f6719c0cc747e3d34d3f445644e8\",\n ", +" \"name\" : \"0x798dffbdfee1f6719c\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 250000", +"00000\n}, \n{\n \"ETH_account\" : \"0x8a56b", +"1c5d6d0129f8ef2e9b4571924dedb060a1c\",\n ", +" \"name\" : \"0x8a56b1c5d6d0129f8e\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 12000", +"00000\n}, \n{\n \"ETH_account\" : \"0x212c6", +"d18a67a6238f816bb818ab2632c738b170f\",\n ", +" \"name\" : \"0x212c6d18a67a6238f8\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10500", +"00000\n}, \n{\n \"ETH_account\" : \"0xc655f", +"f39ac06ccd225df849519a7298b533d3cfa\",\n ", +" \"name\" : \"0xc655ff39ac06ccd225\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 14030", +"4397\n}, \n{\n \"ETH_account\" : \"0x390af7", +"5cf97a78fd0f7a9a5a9c9efd967be4625d\",\n ", +" \"name\" : \"0x390af75cf97a78fd0f\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 951310", +"000\n}, \n{\n \"ETH_account\" : \"0xc8a872a", +"3c72519abe9046efee7ef4dc881cb871b\",\n ", +"\"name\" : \"0xc8a872a3c72519abe9\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 9951800", +"00\n}, \n{\n \"ETH_account\" : \"0xaa9e27cb", +"23231103ad94895a434d8840ef842f15\",\n \"", +"name\" : \"0xaa9e27cb23231103ad\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 17620000", +"00\n}, \n{\n \"ETH_account\" : \"0x9773b311", +"2fc0462f33b9506878ceeecd394c736b\",\n \"", +"name\" : \"0x9773b3112fc0462f33\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 65550000", +"\n}, \n{\n \"ETH_account\" : \"0x81cc23711c", +"b60ac56be29d337a94a1d83af9e11f\",\n \"na", +"me\" : \"0x81cc23711cb60ac56b\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2150000000", +"\n}, \n{\n \"ETH_account\" : \"0x67e5ab5b57", +"3f01030a1076dda7a79ef0f31a1bfa\",\n \"na", +"me\" : \"0x67e5ab5b573f01030a\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 300000000\n", +"}, \n{\n \"ETH_account\" : \"0xecd6fcaf779", +"f798ca6f44d3785056b1668db7ae6\",\n \"nam", +"e\" : \"0xecd6fcaf779f798ca6\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1989175695\n", +"}, \n{\n \"ETH_account\" : \"0x577a32b59eb", +"ec824f2e0af4a9d18d6eb719597d2\",\n \"nam", +"e\" : \"0x577a32b59ebec824f2\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 112134300\n}", +", \n{\n \"ETH_account\" : \"0x310760a56f6f", +"c890977c56036d0adbc74363f150\",\n \"name", +"\" : \"0x310760a56f6fc89097\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 381653450\n},", +" \n{\n \"ETH_account\" : \"0xa1c59a11bc980", +"660ba84d5b7e9cb7a8674fbe3a1\",\n \"name\"", +" : \"0xa1c59a11bc980660ba\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 105000000\n}, ", +"\n{\n \"ETH_account\" : \"0xa2bb4abc946b25", +"c8408d0a71ea6cc9194f691315\",\n \"name\" ", +": \"0xa2bb4abc946b25c840\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 12124000000\n},", +" \n{\n \"ETH_account\" : \"0xf8002adaf5e5e", +"4a915674f871f98e5c8b697cdb5\",\n \"name\"", +" : \"0xf8002adaf5e5e4a915\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 14264700000\n}", +", \n{\n \"ETH_account\" : \"0xe668c9020db0", +"45da0cbd4de9581ca8d92713cc0d\",\n \"name", +"\" : \"avulic\",\n \"publicKey\" : \"SPH62Cg", +"uge4f4GmDQ3in3cAVrNosS6bSeqCmQiTBKEaaVij", +"vSrFDj\",\n \"balance\" : 61600870\n}, \n{\n", +" \"ETH_account\" : \"0x93731b3c10122d1ef", +"efff61dbc3a998bca605857\",\n \"name\" : \"", +"0x93731b3c10122d1efe\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 32367139299\n}, \n{", +"\n \"ETH_account\" : \"0xd54faafbe111157e", +"ed25bb8b2ed1402a0f921210\",\n \"name\" : ", +"\"0xd54faafbe111157eed\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 92487813\n}, \n{\n ", +" \"ETH_account\" : \"0x8085ffd22ab55ddf20", +"8c44e3ae209465ffedb898\",\n \"name\" : \"0", +"x8085ffd22ab55ddf20\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x48c7e3332f84f1df25", +"8c35306eb8070ce2642d5d\",\n \"name\" : \"0", +"x48c7e3332f84f1df25\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 109\n}, \n{\n \"ETH", +"_account\" : \"0xa6c0e15b098ad676303b7921d", +"5cda7ac2d435b02\",\n \"name\" : \"0xa6c0e1", +"5b098ad67630\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 269461881\n}, \n{\n \"ETH_", +"account\" : \"0x574b967eb9cab8996794293ddf", +"35dcd9359f21ac\",\n \"name\" : \"0x574b967", +"eb9cab89967\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 326521000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x998a135874cc7d635ebe2c2ab54", +"7645fd7849c0f\",\n \"name\" : \"0x998a1358", +"74cc7d635e\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 23810000000\n}, \n{\n \"ETH_", +"account\" : \"0x95a792157f24daaa0f8def40dc", +"bfe73a8d10ee0f\",\n \"name\" : \"0x95a7921", +"57f24daaa0f\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 953094248\n}, \n{\n \"ETH_a", +"ccount\" : \"0xeb90ae3980c6d4d82e1095b6c87", +"ee519b3ae5c6e\",\n \"name\" : \"0xeb90ae39", +"80c6d4d82e\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3799999979\n}, \n{\n \"ETH_a", +"ccount\" : \"0x262d0f94a2571708922285754c6", +"c15015a2b4772\",\n \"name\" : \"0x262d0f94", +"a257170892\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 809000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xd3dcef1a211daf54a130445055ab", +"082a26a39516\",\n \"name\" : \"0xd3dcef1a2", +"11daf54a1\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1594094203\n}, \n{\n \"ETH_ac", +"count\" : \"0x2ba77e411dc1cb5ff333944361b5", +"673c22731e91\",\n \"name\" : \"0x2ba77e411", +"dc1cb5ff3\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 3000571972\n}, \n{\n \"ETH_ac", +"count\" : \"0x4ddf526d92f647b8866ec676bfa4", +"1d7f178bb2d8\",\n \"name\" : \"0x4ddf526d9", +"2f647b886\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 9776999932\n}, \n{\n \"ETH_ac", +"count\" : \"0x2bbcb2f4d9ae509ba729080770d9", +"3285c9df927f\",\n \"name\" : \"0x2bbcb2f4d", +"9ae509ba7\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 14480000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xba33f2fc4b60f261849b9ef370bccd", +"9d9bcfa1e6\",\n \"name\" : \"0xba33f2fc4b6", +"0f26184\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 15918000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xb3f1b9add8e11670777fec2f099b1725", +"ce8b5a8a\",\n \"name\" : \"0xb3f1b9add8e11", +"67077\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1049000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x65dae2ed1f45c7f78873992ec22f9b5b", +"70dffb37\",\n \"name\" : \"0x65dae2ed1f45c", +"7f788\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 48628303\n}, \n{\n \"ETH_account\"", +" : \"0x6b7207963b64bb549f594990af0691f5b0", +"f73d1c\",\n \"name\" : \"0x6b7207963b64bb5", +"49f\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 48610033666\n}, \n{\n \"ETH_account", +"\" : \"0xf77a3caf658ce033f59de23ef36b7af56", +"b022a08\",\n \"name\" : \"0xf77a3caf658ce0", +"33f5\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 509473684\n}, \n{\n \"ETH_account\"", +" : \"0x89015928ccec63127a81afd955e2a02c3e", +"b9f9cf\",\n \"name\" : \"0x89015928ccec631", +"27a\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 10000000000\n}, \n{\n \"ETH_account", +"\" : \"0xa71e2669c07c97a9d3d55d2cf60544e7b", +"f89156c\",\n \"name\" : \"0xa71e2669c07c97", +"a9d3\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 2000000000\n}, \n{\n \"ETH_account", +"\" : \"0xd8c1c2fa423cbd94bbad49761214b20de", +"d8fdbcb\",\n \"name\" : \"0xd8c1c2fa423cbd", +"94bb\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 519920910\n}, \n{\n \"ETH_account\"", +" : \"0xbcdb3ae0a889f5ccbfc13873e19223a2d2", +"3b6224\",\n \"name\" : \"ipresource\",\n ", +"\"publicKey\" : \"SPH8R9V65YkFFr1jSsBuqaZWc", +"yS3givXJXt5ZNqpERBfagowu1ETs\",\n \"bala", +"nce\" : 8674516700\n}, \n{\n \"ETH_account", +"\" : \"0x30b6fcd3a7b306a3d6468afcf10ce3fd8", +"f5a7c55\",\n \"name\" : \"0x30b6fcd3a7b306", +"a3d6\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 302172\n}, \n{\n \"ETH_account\" : ", +"\"0x714694ca878ad2eeef282d8dfea4c86ca0a7b", +"c88\",\n \"name\" : \"0x714694ca878ad2eeef", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 8729625000\n}, \n{\n \"ETH_account\" : ", +"\"0xbaf943828f0b9d48ae1f446885715939b57b4", +"002\",\n \"name\" : \"0xbaf943828f0b9d48ae", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 121256900\n}, \n{\n \"ETH_account\" : \"", +"0x973ff2b0889d2390c6edba2e5c7918401075b8", +"55\",\n \"name\" : \"0x973ff2b0889d2390c6\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 175276802\n}, \n{\n \"ETH_account\" : \"0", +"x794870fbd4053f52ba1c222ed38dccad9f84fcb", +"9\",\n \"name\" : \"0x794870fbd4053f52ba\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 70000000\n}, \n{\n \"ETH_account\" : \"0xb", +"738d3d16c24b1e630371cc31af8bf28624770e6\"", +",\n \"name\" : \"0xb738d3d16c24b1e630\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"000582900\n}, \n{\n \"ETH_account\" : \"0x2", +"c6b142d6342068fdcefa7485f4435ee1ac496c4\"", +",\n \"name\" : \"0x2c6b142d6342068fdc\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"705544000\n}, \n{\n \"ETH_account\" : \"0xc", +"8ce1ad0ddd42a5868ab21b462fda0d9c197a241\"", +",\n \"name\" : \"0xc8ce1ad0ddd42a5868\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 8", +"26\n}, \n{\n \"ETH_account\" : \"0x902b3017", +"f61de1d9b7a0c1c4ba2e01e9db5764c9\",\n \"", +"name\" : \"0x902b3017f61de1d9b7\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 6289139\n", +"}, \n{\n \"ETH_account\" : \"0x7fa4f1cff18", +"aea3cd43208efb8d6959cde8cb147\",\n \"nam", +"e\" : \"0x7fa4f1cff18aea3cd4\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 20000000\n},", +" \n{\n \"ETH_account\" : \"0x52d8c2facbbd0", +"a245f116b2fe96513cdb6a88272\",\n \"name\"", +" : \"0x52d8c2facbbd0a245f\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1025899100\n},", +" \n{\n \"ETH_account\" : \"0x06ff16865af25", +"9f5c439715b48a1baafc812d1ad\",\n \"name\"", +" : \"0x06ff16865af259f5c4\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 400000000\n}, ", +"\n{\n \"ETH_account\" : \"0xb6dcb317837d8e", +"23bd249dc14b1718f391cfee92\",\n \"name\" ", +": \"0xb6dcb317837d8e23bd\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 2135900000\n}, ", +"\n{\n \"ETH_account\" : \"0x40bad4e2031c8f", +"77e72da60c4c84d934ccc5cbfd\",\n \"name\" ", +": \"0x40bad4e2031c8f77e7\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 31169000000\n},", +" \n{\n \"ETH_account\" : \"0xf2ea116ac3197", +"80a4d2189151d336e313cdf4ac7\",\n \"name\"", +" : \"0xf2ea116ac319780a4d\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 20000000\n}, \n", +"{\n \"ETH_account\" : \"0x205288af0575689", +"203ef0a08e19ac8b9bf9c6a3a\",\n \"name\" :", +" \"0x205288af0575689203\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 733280800\n}, \n{", +"\n \"ETH_account\" : \"0x65cdf13a04cbed66", +"66e7dd4afe5339de63ec1cc7\",\n \"name\" : ", +"\"0x65cdf13a04cbed6666\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 83960600\n}, \n{\n ", +" \"ETH_account\" : \"0x0b4380345f87ce8f94", +"51c1249d45e23da5f8475c\",\n \"name\" : \"0", +"x0b4380345f87ce8f94\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 527000000\n}, \n{\n ", +" \"ETH_account\" : \"0xbf1e2c54d9ceb6828a1", +"a39584151b3032fe785ba\",\n \"name\" : \"0x", +"bf1e2c54d9ceb6828a\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1217000000\n}, \n{\n ", +" \"ETH_account\" : \"0xd8b5a099b45ead2d076", +"0c19f10be3c80cf46b15e\",\n \"name\" : \"0x", +"d8b5a099b45ead2d07\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 283000000\n}, \n{\n ", +" \"ETH_account\" : \"0x3f729b985995500f8545", +"d023d9216690a2b684d5\",\n \"name\" : \"0x3", +"f729b985995500f85\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 11151492800\n}, \n{\n ", +" \"ETH_account\" : \"0x4e673b48c2941c6bcf7", +"3c399e2b95915effa93e0\",\n \"name\" : \"0x", +"4e673b48c2941c6bcf\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1103020000\n}, \n{\n ", +" \"ETH_account\" : \"0xfb4626ef1235d07605f", +"4d849a27beb7329a5e37a\",\n \"name\" : \"0x", +"fb4626ef1235d07605\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1000000000\n}, \n{\n ", +" \"ETH_account\" : \"0xd20da4832a02f7f5ccc", +"2cd7c8238b712823c42cd\",\n \"name\" : \"0x", +"d20da4832a02f7f5cc\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 20000000\n}, \n{\n ", +"\"ETH_account\" : \"0x535aa2267bc03a7b7bbae", +"5fc4d8a3400999b642f\",\n \"name\" : \"0x53", +"5aa2267bc03a7b7b\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1222000000\n}, \n{\n ", +"\"ETH_account\" : \"0x87fd0dbc1c4c7c14ee2fe", +"2cbef1a7c6e83baa9e9\",\n \"name\" : \"0x87", +"fd0dbc1c4c7c14ee\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1200753400\n}, \n{\n ", +"\"ETH_account\" : \"0x7eeefeaff30aae33541a9", +"5db9f4305df47683bb5\",\n \"name\" : \"0x7e", +"eefeaff30aae3354\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 2715000000\n}, \n{\n ", +"\"ETH_account\" : \"0x9fb842988624a1d948e47", +"9579ff35a536aaa293f\",\n \"name\" : \"0x9f", +"b842988624a1d948\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 50000000\n}, \n{\n \"E", +"TH_account\" : \"0xc7580b2cfa8dbd210f859c9", +"74a5b650af1ef76f5\",\n \"name\" : \"0xc758", +"0b2cfa8dbd210f\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 480790000\n}, \n{\n \"ET", +"H_account\" : \"0xce4335421c125f951c427529", +"393a88e1cc02c6b3\",\n \"name\" : \"0xce433", +"5421c125f951c\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 419000000\n}, \n{\n \"ETH", +"_account\" : \"0xab3989358441cd7cb347b9296", +"7100653b620ec7f\",\n \"name\" : \"0xab3989", +"358441cd7cb3\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 152000000\n}, \n{\n \"ETH_", +"account\" : \"0x9a66fd7687885be0d322b27b9b", +"0c4359143b912e\",\n \"name\" : \"0x9a66fd7", +"687885be0d3\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 319390000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x4c3ebedae2cd99df2b9e8618067", +"b48ef07a8a6d4\",\n \"name\" : \"christian8", +"0\",\n \"publicKey\" : \"SPH5mziztUYtgE4Ei", +"GR66D82xnKwajzrAWxUeVcXGuijmedJiHxBh\",\n ", +" \"balance\" : 238799000000\n}, \n{\n \"E", +"TH_account\" : \"0xb6a40ec49e1b5f55a6d9d38", +"7dcd4b36443278dd1\",\n \"name\" : \"pshelp", +"er\",\n \"publicKey\" : \"SPH87BHGEfNKPmDu", +"ciSp4L7KUnX1HY5vk73apCV1yVJNxyj57BK4J\",\n", +" \"balance\" : 27445000000\n}, \n{\n \"E", +"TH_account\" : \"0xef767ac70fb0f1241e161ea", +"e68494690be720d20\",\n \"name\" : \"0xef76", +"7ac70fb0f1241e\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 20000000\n}, \n{\n \"ETH", +"_account\" : \"0x6c40151cb8a5d53604cbe0c3f", +"3fdba89b87e44a8\",\n \"name\" : \"0x6c4015", +"1cb8a5d53604\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 223000000\n}, \n{\n \"ETH_", +"account\" : \"0x7b10503be24fd233d69839a0bf", +"5f9f390b33df09\",\n \"name\" : \"0x7b10503", +"be24fd233d6\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 500000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x3dd0eed3a004d04d28dce1bc79e", +"aada3b38b1b34\",\n \"name\" : \"0x3dd0eed3", +"a004d04d28\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 525000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x2559fcfe7eb0a1227758fe46733b", +"9045dd21a3bc\",\n \"name\" : \"0x2559fcfe7", +"eb0a12277\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 2500811000\n}, \n{\n \"ETH_ac", +"count\" : \"0x8b96a096f9d66cc209496d7aff71", +"372d0ed12e09\",\n \"name\" : \"0x8b96a096f", +"9d66cc209\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 340000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x4fc1fc4fa961e4d8fbfba560cf13c", +"a08a61d45bc\",\n \"name\" : \"xants\",\n ", +"\"publicKey\" : \"SPH6EMqrdsBtfH8GLoNhxkgvM", +"sSZiwcz7H2hbfvSsrFKon9ZVbtNc\",\n \"bala", +"nce\" : 365000000\n}, \n{\n \"ETH_account\"", +" : \"0x8f72a6aa3eef0e5e021d92600f1a5e26bb", +"b24cb5\",\n \"name\" : \"0x8f72a6aa3eef0e5", +"e02\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1623078687\n}, \n{\n \"ETH_account\"", +" : \"0x4a6b73de7b3caf7c8d3e0946175c1c8c5d", +"4439e9\",\n \"name\" : \"0x4a6b73de7b3caf7", +"c8d\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 47040000\n}, \n{\n \"ETH_account\" :", +" \"0x8d87793c61cdcd70b335f80e41c4ac237a71", +"d650\",\n \"name\" : \"0x8d87793c61cdcd70b", +"3\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 4779164710\n}, \n{\n \"ETH_account\" :", +" \"0xb20268b54a31caf7173f1da3d0f1df46c848", +"fbc1\",\n \"name\" : \"0xb20268b54a31caf71", +"7\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 4936684392\n}, \n{\n \"ETH_account\" :", +" \"0x25b83d3c82c572224d6cba39b11b3e1ae880", +"a1e0\",\n \"name\" : \"0x25b83d3c82c572224", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 215826159\n}, \n{\n \"ETH_account\" : ", +"\"0xcd458180604719040cfbcbe5a7da3f52e054e", +"8f8\",\n \"name\" : \"0xcd458180604719040c", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1100813368\n}, \n{\n \"ETH_account\" : ", +"\"0x4e078d6c5398d3c350108920290a40acadc33", +"45d\",\n \"name\" : \"0x4e078d6c5398d3c350", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 82040000\n}, \n{\n \"ETH_account\" : \"0", +"x77c0c8983c78ada345cbc35919fcc169a703915", +"6\",\n \"name\" : \"0x77c0c8983c78ada345\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 564080000\n}, \n{\n \"ETH_account\" : \"0x", +"c57d61f5aa11ae80354e4b17d79da3a5bc892eaa", +"\",\n \"name\" : \"0xc57d61f5aa11ae8035\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"300000000\n}, \n{\n \"ETH_account\" : \"0xb", +"2d25e55b6e0f19bf7a363a526ece4ec712ddeec\"", +",\n \"name\" : \"jannel\",\n \"publicKey\"", +" : \"SPH5ZNHCtNvgkQ5R5Lxx4yB5qtVVQcv3G3RV", +"w2v4pBzitGhqtK7qL\",\n \"balance\" : 1200", +"000000\n}, \n{\n \"ETH_account\" : \"0x2517", +"80a2707b82e32e90724e74e1e9a597267a9e\",\n ", +" \"name\" : \"0x251780a2707b82e32e\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5330", +"00000\n}, \n{\n \"ETH_account\" : \"0x487d4", +"e6c25510bb4a4d1daf84ae6d8bbf05d55d1\",\n ", +" \"name\" : \"0x487d4e6c25510bb4a4\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 25000", +"0000\n}, \n{\n \"ETH_account\" : \"0x3e63e0", +"5940ef32c3f17cee27ccfc09e7c265e906\",\n ", +" \"name\" : \"0x3e63e05940ef32c3f1\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 205000", +"000\n}, \n{\n \"ETH_account\" : \"0x8eef571", +"5000ff606904e23d899eda212a8f1a241\",\n ", +"\"name\" : \"0x8eef5715000ff60690\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 7220000", +"00\n}, \n{\n \"ETH_account\" : \"0x9a922e39", +"629be9ba72b62bd9f60fc5418e819424\",\n \"", +"name\" : \"0x9a922e39629be9ba72\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 90000000", +"0\n}, \n{\n \"ETH_account\" : \"0xe9052d7d4", +"37802c7759a8842d9f1a5f09a5d3276\",\n \"n", +"ame\" : \"0xe9052d7d437802c775\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 103000000", +"0\n}, \n{\n \"ETH_account\" : \"0xb88a44147", +"f4dfbf2495c8d9d84cd2cdfa6870167\",\n \"n", +"ame\" : \"0xb88a44147f4dfbf249\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 993040000", +"\n}, \n{\n \"ETH_account\" : \"0x5c1566d4ed", +"f7b954885e1ecc732582c84e75269e\",\n \"na", +"me\" : \"0x5c1566d4edf7b95488\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 130000000\n", +"}, \n{\n \"ETH_account\" : \"0x6cb608d4190", +"cd715998b6f2d19408bc50de017a6\",\n \"nam", +"e\" : \"0x6cb608d4190cd71599\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 229105562\n}", +", \n{\n \"ETH_account\" : \"0x658feff93d6f", +"7477c900938bce85b5d206a565f0\",\n \"name", +"\" : \"0x658feff93d6f7477c9\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 118000000\n},", +" \n{\n \"ETH_account\" : \"0xc5e90ba224574", +"5c0b7274b325cf9e13369908e6a\",\n \"name\"", +" : \"0xc5e90ba2245745c0b7\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 296600000\n}, ", +"\n{\n \"ETH_account\" : \"0xd981fdc3ebcac9", +"e99366e674bef1e53a2d067c25\",\n \"name\" ", +": \"hassoplattner\",\n \"publicKey\" : \"SP", +"H745kCbXXGmPVFgjrdfPWEAzq3HJCqPA2px9Pqz1", +"CzaER5Bxyua\",\n \"balance\" : 3504305000", +"\n}, \n{\n \"ETH_account\" : \"0x4b954e05fb", +"12064b9418d1dacf3d10b639c92713\",\n \"na", +"me\" : \"0x4b954e05fb12064b94\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 612367743\n", +"}, \n{\n \"ETH_account\" : \"0xb67d30d0f14", +"b638a7d43f4b816cb253a18277da5\",\n \"nam", +"e\" : \"0xb67d30d0f14b638a7d\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1650000000\n", +"}, \n{\n \"ETH_account\" : \"0x0c71fbdb32e", +"d2f1fe175eaac816e0f67500db65f\",\n \"nam", +"e\" : \"0x0c71fbdb32ed2f1fe1\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 564325882\n}", +", \n{\n \"ETH_account\" : \"0x49ed2ccb3075", +"4c3dc414058bfe865c2a86f1a918\",\n \"name", +"\" : \"0x49ed2ccb30754c3dc4\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1980280977\n}", +", \n{\n \"ETH_account\" : \"0x49f872e4f7fa", +"90b4e229b1839fd722966c778278\",\n \"name", +"\" : \"0x49f872e4f7fa90b4e2\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 102000000\n},", +" \n{\n \"ETH_account\" : \"0x4da66042ad05f", +"fdd45777f64a16430caf2f71659\",\n \"name\"", +" : \"0x4da66042ad05ffdd45\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1892042900\n},", +" \n{\n \"ETH_account\" : \"0xd5afee0a29f9b", +"02be7b798a7905148047c61e0e9\",\n \"name\"", +" : \"0xd5afee0a29f9b02be7\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 431000000\n}, ", +"\n{\n \"ETH_account\" : \"0xca944271b4d447", +"b335edf18c10be652034dfdcea\",\n \"name\" ", +": \"0xca944271b4d447b335\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 91524248606\n},", +" \n{\n \"ETH_account\" : \"0x4098b86c8f067", +"c68686cdb384add2a10ed50793b\",\n \"name\"", +" : \"0x4098b86c8f067c6868\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 679000000\n}, ", +"\n{\n \"ETH_account\" : \"0xb9a92396c19021", +"55f352c6bbe7ec5259802dcc2c\",\n \"name\" ", +": \"0xb9a92396c1902155f3\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 2804766800\n}, ", +"\n{\n \"ETH_account\" : \"0x243f9ec6dd9b28", +"691fb6c19d63c59de86e06c0e8\",\n \"name\" ", +": \"0x243f9ec6dd9b28691f\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1347640826\n}, ", +"\n{\n \"ETH_account\" : \"0x164a5947572360", +"198ffe71cbd646284039baf722\",\n \"name\" ", +": \"0x164a5947572360198f\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 5887900000\n}, ", +"\n{\n \"ETH_account\" : \"0x3a82476127c5b2", +"48874cf6a346caa2215ed0a7b1\",\n \"name\" ", +": \"0x3a82476127c5b24887\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 73008156600\n},", +" \n{\n \"ETH_account\" : \"0x5af98814587b6", +"a1d19935db3efb6ddb56d287550\",\n \"name\"", +" : \"0x5af98814587b6a1d19\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 16000000000\n}", +", \n{\n \"ETH_account\" : \"0x758c684010e0", +"db9fd7d14ccc0603ee7a1f385ba1\",\n \"name", +"\" : \"0x758c684010e0db9fd7\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1268000000\n}", +", \n{\n \"ETH_account\" : \"0x15eece7c0c0b", +"efd8ad4aa6644397e146154fb675\",\n \"name", +"\" : \"0x15eece7c0c0befd8ad\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 9722006733\n}", +", \n{\n \"ETH_account\" : \"0xa037c269cade", +"3969be4bc0a0bd3ada5515b6defb\",\n \"name", +"\" : \"0xa037c269cade3969be\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 4850000000\n}", +", \n{\n \"ETH_account\" : \"0xa6202f2dca53", +"8e95af7247f00307015ed6f578c9\",\n \"name", +"\" : \"0xa6202f2dca538e95af\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 693000000\n},", +" \n{\n \"ETH_account\" : \"0x3d7b839da5ebc", +"a946ce608f380393c3c964c2de7\",\n \"name\"", +" : \"0x3d7b839da5ebca946c\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 480000000\n}, ", +"\n{\n \"ETH_account\" : \"0xda95460b4252a3", +"5d4da2ffb142e4a30cbbeaf11d\",\n \"name\" ", +": \"0xda95460b4252a35d4d\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 927000000\n}, \n", +"{\n \"ETH_account\" : \"0xb9454b092428d3f", +"48f46793c833609b69e5bbf6a\",\n \"name\" :", +" \"0xb9454b092428d3f48f\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 633327400\n}, \n{", +"\n \"ETH_account\" : \"0xe693a40b460438d6", +"e25240413b07f84b547f1594\",\n \"name\" : ", +"\"0xe693a40b460438d6e2\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 18884602791\n}, \n", +"{\n \"ETH_account\" : \"0x940259b2e2164f4", +"b57ac518d0ee8a03a29268b23\",\n \"name\" :", +" \"0x940259b2e2164f4b57\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 2225000000\n}, \n", +"{\n \"ETH_account\" : \"0x8d9f1d07319cb59", +"f70b7ac8832b4cc8988fe6e78\",\n \"name\" :", +" \"0x8d9f1d07319cb59f70\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 9041140000\n}, \n", +"{\n \"ETH_account\" : \"0x7ddc5d00f811fee", +"6d3515c30cf72d710998e9c3b\",\n \"name\" :", +" \"0x7ddc5d00f811fee6d3\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 300000000\n}, \n{", +"\n \"ETH_account\" : \"0x2652bbbe6e8afbcd", +"78fc9e88f73f847d48cdd864\",\n \"name\" : ", +"\"markville\",\n \"publicKey\" : \"SPH4teiu", +"Mj6qrxQ3itSNrkawvu2Rt25FEmwhG5WpSE2Fhxje", +"GwvCn\",\n \"balance\" : 2375117400\n}, \n{", +"\n \"ETH_account\" : \"0x00bb4be645b6ca9e", +"51164dc9d5fc83edbe12c8fa\",\n \"name\" : ", +"\"0x00bb4be645b6ca9e51\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 159487600\n}, \n{\n", +" \"ETH_account\" : \"0xfdd12df90969e89d8", +"65bb53f1853641461d96b0d\",\n \"name\" : \"", +"0xfdd12df90969e89d86\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 822465514\n}, \n{\n ", +" \"ETH_account\" : \"0xc76d3a1214ceb26cbe", +"8cc7523db14b9472c79268\",\n \"name\" : \"0", +"xc76d3a1214ceb26cbe\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 189999958\n}, \n{\n ", +" \"ETH_account\" : \"0xc404d6a7c998d728df6", +"e15050744cfa86b71f444\",\n \"name\" : \"0x", +"c404d6a7c998d728df\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 206432848\n}, \n{\n ", +" \"ETH_account\" : \"0x75200a26d81d48b29db7", +"16ecfad1c8c9c58ebe04\",\n \"name\" : \"0x7", +"5200a26d81d48b29d\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 161000000\n}, \n{\n ", +"\"ETH_account\" : \"0xdbd04b2b11afb83793ee2", +"6d85f0b829c4a93bfbd\",\n \"name\" : \"0xdb", +"d04b2b11afb83793\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 100000000\n}, \n{\n \"", +"ETH_account\" : \"0xa8247ddbdcbc3277da28e7", +"fefcaa147da0d66242\",\n \"name\" : \"0xa82", +"47ddbdcbc3277da\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 588000000\n}, \n{\n \"E", +"TH_account\" : \"0x198be3087433ef793c6bb91", +"7eeb6a6e7eb3de74a\",\n \"name\" : \"0x198b", +"e3087433ef793c\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 102187861718\n}, \n{\n ", +"\"ETH_account\" : \"0x892fb8d7d825f49516ccc", +"9e00152b2975d7ab8a5\",\n \"name\" : \"coin", +"dersphtx\",\n \"publicKey\" : \"SPH7rfL2Vr", +"fjwL7qVMaK52ch5ViZvMDs8Frs1zPEtGF9SnG1SB", +"uPa\",\n \"balance\" : 20027113857\n}, \n{\n", +" \"ETH_account\" : \"0x01bdf3bc2ee3b049f", +"df75fe62e6da5a8011d8853\",\n \"name\" : \"", +"0x01bdf3bc2ee3b049fd\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 2156863900\n}, \n{\n", +" \"ETH_account\" : \"0xb2f9a9130d0930714", +"c6df6e8793b8d2c774b74b3\",\n \"name\" : \"", +"0xb2f9a9130d0930714c\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 2916602019\n}, \n{\n", +" \"ETH_account\" : \"0x345bf51d02ecde327", +"7598f2a3c52b1a19c17f795\",\n \"name\" : \"", +"0x345bf51d02ecde3277\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 457000000\n}, \n{\n ", +" \"ETH_account\" : \"0x6f1410f8e64c9abe19", +"2e712f629fabcbb1bbd88e\",\n \"name\" : \"g", +"uysophiatx\",\n \"publicKey\" : \"SPH6tJQT", +"Pn5k4vjxa5HcsXrdWCY621r4Sbvr9C9bzTs1FmsW", +"1XoVe\",\n \"balance\" : 43055029117\n}, \n", +"{\n \"ETH_account\" : \"0xdaae59a74bfe61c", +"0d64552368ae75a73eb3fdde5\",\n \"name\" :", +" \"0xdaae59a74bfe61c0d6\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 512000000\n}, \n{", +"\n \"ETH_account\" : \"0x351b479ab992a653", +"c422f4169cbb27536f6b8c1f\",\n \"name\" : ", +"\"0x351b479ab992a653c4\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 5955884509\n}, \n{", +"\n \"ETH_account\" : \"0xf6e4c69eee79e59e", +"d4bd9ec078ec0c2a92a6b6a5\",\n \"name\" : ", +"\"0xf6e4c69eee79e59ed4\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 12895817958\n}, \n", +"{\n \"ETH_account\" : \"0x158881082c29086", +"94c2206de339bf51733ab4489\",\n \"name\" :", +" \"0x158881082c2908694c\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1055232573\n}, \n", +"{\n \"ETH_account\" : \"0x076878bfdc93f00", +"dc889f0b1d3c278754603cf84\",\n \"name\" :", +" \"0x076878bfdc93f00dc8\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 90404332\n}, \n{\n", +" \"ETH_account\" : \"0xd1b00529a3a8705f6", +"646dbb09e0e1ce0ed1a0793\",\n \"name\" : \"", +"0xd1b00529a3a8705f66\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 4999999648\n}, \n{\n", +" \"ETH_account\" : \"0x18cb035dabbec94c7", +"8b9a0907a8ab74eae6e40ea\",\n \"name\" : \"", +"0x18cb035dabbec94c78\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 152426627\n}, \n{\n ", +" \"ETH_account\" : \"0xa3be538db11cc67295", +"c77eed44379534cd15dd6f\",\n \"name\" : \"0", +"xa3be538db11cc67295\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1013206000\n}, \n{\n ", +" \"ETH_account\" : \"0x1110580a1f65726fac", +"d9d42c574192925e6a8303\",\n \"name\" : \"0", +"x1110580a1f65726fac\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1061813936\n}, \n{\n ", +" \"ETH_account\" : \"0x6fa688d732b26b3adf", +"67e7bcc189c27ba5f7d93c\",\n \"name\" : \"0", +"x6fa688d732b26b3adf\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 3530000000\n}, \n{\n ", +" \"ETH_account\" : \"0xf946249e1e08948b62", +"908267042c9379d771ae76\",\n \"name\" : \"0", +"xf946249e1e08948b62\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 3971771271\n}, \n{\n ", +" \"ETH_account\" : \"0x1c44c8a0ab88710065", +"f96b5f7dfbe5544380d1c4\",\n \"name\" : \"0", +"x1c44c8a0ab88710065\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 450000000\n}, \n{\n ", +" \"ETH_account\" : \"0xfc5063d7fbeea821245", +"63015ea4092b72974e87f\",\n \"name\" : \"0x", +"fc5063d7fbeea82124\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1024223500\n}, \n{\n ", +" \"ETH_account\" : \"0x16681b0494813fd955d", +"872632dce6615fcfdf81c\",\n \"name\" : \"0x", +"16681b0494813fd955\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 41213172000\n}, \n{\n ", +" \"ETH_account\" : \"0x926476ddd265f9e7e1", +"1abf168885c79978e5b41d\",\n \"name\" : \"j", +"ohn\",\n \"publicKey\" : \"SPH6znqHJdZ1aBC", +"UnzXCAC1LcjxANJEr7X2CpYEUUYJxAwCj961LJ\",", +"\n \"balance\" : 250000000100\n}, \n{\n ", +"\"ETH_account\" : \"0x22d1cc57d3f68a58f8bd4", +"b1df91021d4a4c8c90f\",\n \"name\" : \"0x22", +"d1cc57d3f68a58f8\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 458000000\n}, \n{\n \"", +"ETH_account\" : \"0x9a3d6c6136c0572613f070", +"7978183ebec2918943\",\n \"name\" : \"0x9a3", +"d6c6136c0572613\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 322\n}, \n{\n \"ETH_acc", +"ount\" : \"0xb4b4d65a40181b7549d790fd9d611", +"ce1e3299126\",\n \"name\" : \"0xb4b4d65a40", +"181b7549\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 4903000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x4efa1e33740da618193cee4a36a1282b", +"5ba6eebd\",\n \"name\" : \"0x4efa1e33740da", +"61819\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 137599400\n}, \n{\n \"ETH_account", +"\" : \"0x95ad4b51db765bad49de8ba9992fbea32", +"984eb4c\",\n \"name\" : \"0x95ad4b51db765b", +"ad49\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 964165830\n}, \n{\n \"ETH_account\"", +" : \"0x610e628797271239225d5c168b6334bbc5", +"15008e\",\n \"name\" : \"0x610e62879727123", +"922\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 12100000000\n}, \n{\n \"ETH_account", +"\" : \"0xe7d4118487c443c515ffc8d0e229f00f3", +"3c51923\",\n \"name\" : \"bcurr\",\n \"pub", +"licKey\" : \"SPH5YfcbSpw5RwDLH1RDZYPWhwBwy", +"UwTce5Vg3geGhsPdwsKnAJ22\",\n \"balance\"", +" : 1020000000\n}, \n{\n \"ETH_account\" : ", +"\"0x47fd50ed387b2eb898040c4b0ee893000a3ba", +"f64\",\n \"name\" : \"0x47fd50ed387b2eb898", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 2985888100\n}, \n{\n \"ETH_account\" : ", +"\"0xed20965b111f78b25e076dd91f4151a34a98b", +"fcb\",\n \"name\" : \"0xed20965b111f78b25e", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 398000000\n}, \n{\n \"ETH_account\" : \"", +"0x756fed5a0af14cb99bc951d26d220962b20c2d", +"85\",\n \"name\" : \"0x756fed5a0af14cb99b\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 139000000\n}, \n{\n \"ETH_account\" : \"0", +"xfe6b7633a0d17a6b30cf61919ee0fee18fa559c", +"f\",\n \"name\" : \"0xfe6b7633a0d17a6b30\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 8096791000\n}, \n{\n \"ETH_account\" : \"0", +"x91f5ce77fb9333aef2fe3f88d2c2292a42d2e1f", +"7\",\n \"name\" : \"0x91f5ce77fb9333aef2\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 20000000\n}, \n{\n \"ETH_account\" : \"0x7", +"1c77f951de7f4d85c1132e9139354e79bcc1de5\"", +",\n \"name\" : \"0x71c77f951de7f4d85c\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 6", +"41000\n}, \n{\n \"ETH_account\" : \"0x78dbb", +"6784c7b34efa2e106f691062f7e188cdf81\",\n ", +" \"name\" : \"0x78dbb6784c7b34efa2\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 66670", +"000\n}, \n{\n \"ETH_account\" : \"0x28aa26a", +"c810cdef35782f6dab572c6cda67b2df5\",\n ", +"\"name\" : \"0x28aa26ac810cdef357\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 8499999", +"07\n}, \n{\n \"ETH_account\" : \"0x05d9022e", +"a178f6d3a355069a4cf1bcc79a14e18c\",\n \"", +"name\" : \"sawytoshi\",\n \"publicKey\" : \"", +"SPH5KF4vjJbi9Adw262ZJSpgxSj5tXKERvbzYYbe", +"zCtJdN8nMgHit\",\n \"balance\" : 53377299", +"000\n}, \n{\n \"ETH_account\" : \"0x79290f0", +"08965f7b37e3e90ced456f16878d8cc8a\",\n ", +"\"name\" : \"0x79290f008965f7b37e\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 9475200", +"0\n}, \n{\n \"ETH_account\" : \"0x63e2f5507", +"7f0ab4cd5ac312be4dafaff262a05e8\",\n \"n", +"ame\" : \"0x63e2f55077f0ab4cd5\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 599200000", +"0\n}, \n{\n \"ETH_account\" : \"0x9f1b93a93", +"e821bc41ac3d127b3406234aab1a024\",\n \"n", +"ame\" : \"0x9f1b93a93e821bc41a\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 343798282", +"1\n}, \n{\n \"ETH_account\" : \"0x0660832ac", +"2a4ee311461a25b39e77957e3464b53\",\n \"n", +"ame\" : \"0x0660832ac2a4ee3114\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 379000000", +"\n}, \n{\n \"ETH_account\" : \"0x7b7ddab2d6", +"fa3b8d6cef6cd050d56c57643017e4\",\n \"na", +"me\" : \"0x7b7ddab2d6fa3b8d6c\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1550000000", +"\n}, \n{\n \"ETH_account\" : \"0xf0ebfe83d7", +"d7369d625feb97720c0496b2e78667\",\n \"na", +"me\" : \"0xf0ebfe83d7d7369d62\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 518919908\n", +"}, \n{\n \"ETH_account\" : \"0x8ed9bd81514", +"b50d6fda9e64e5cf6f53b5b17d0b6\",\n \"nam", +"e\" : \"0x8ed9bd81514b50d6fd\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 800000000\n}", +", \n{\n \"ETH_account\" : \"0x8fb3a2938bd7", +"2f356ed6567e0d1f3239cdd873de\",\n \"name", +"\" : \"0x8fb3a2938bd72f356e\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 867000000\n},", +" \n{\n \"ETH_account\" : \"0x4641771b545c7", +"c8e69488628671dcc3d0cb895b4\",\n \"name\"", +" : \"0x4641771b545c7c8e69\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 6351550229\n},", +" \n{\n \"ETH_account\" : \"0x63ea9ed78f2d2", +"687f1bbc1e6a681c889747569c3\",\n \"name\"", +" : \"0x63ea9ed78f2d2687f1\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 858000000\n}, ", +"\n{\n \"ETH_account\" : \"0xecb0e31cb5ac40", +"bf0fd97c3e1d581e2dd6de5c99\",\n \"name\" ", +": \"0xecb0e31cb5ac40bf0f\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 708646569\n}, \n", +"{\n \"ETH_account\" : \"0xe9fcdec18cb87d9", +"02f620ee750df8c80fc5469e3\",\n \"name\" :", +" \"0xe9fcdec18cb87d902f\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 177234347600\n},", +" \n{\n \"ETH_account\" : \"0x007e1ad87564f", +"a8d5bef35272b0c1cb00902f3d2\",\n \"name\"", +" : \"0x007e1ad87564fa8d5b\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1272950000\n},", +" \n{\n \"ETH_account\" : \"0xa7ce3afb4ca21", +"2c93d2b11f085e88d529bdd98c9\",\n \"name\"", +" : \"0xa7ce3afb4ca212c93d\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 675000000\n}, ", +"\n{\n \"ETH_account\" : \"0x71a38e2840fd92", +"b5f87edabf901956c789711e30\",\n \"name\" ", +": \"sofalikescakes\",\n \"publicKey\" : \"S", +"PH4vU1UBg9jngZmQBgZSNudJaEpA3653x3dF3zHw", +"2SNjnBT8djoJ\",\n \"balance\" : 268132056", +"\n}, \n{\n \"ETH_account\" : \"0x62b92bcb60", +"c23fee203dd7730c978c7630df7ac4\",\n \"na", +"me\" : \"0x62b92bcb60c23fee20\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 333000000\n", +"}, \n{\n \"ETH_account\" : \"0xdf21da57777", +"401824c268bc10b41841ad377f02d\",\n \"nam", +"e\" : \"0xdf21da57777401824c\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 273090617\n}", +", \n{\n \"ETH_account\" : \"0xcc2b429cbe52", +"1635648b73a61075d0215d12c364\",\n \"name", +"\" : \"0xcc2b429cbe52163564\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 115408160\n},", +" \n{\n \"ETH_account\" : \"0xac6bf30bb3ecf", +"8c6de80f516c8070a55250614ba\",\n \"name\"", +" : \"0xac6bf30bb3ecf8c6de\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 6060000000\n},", +" \n{\n \"ETH_account\" : \"0xfe9418e31a8e6", +"a6a002dff9066f715827123b7fe\",\n \"name\"", +" : \"0xfe9418e31a8e6a6a00\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 8437500000\n},", +" \n{\n \"ETH_account\" : \"0x8b749e46e043a", +"74a1e9a38425d351b59a907a903\",\n \"name\"", +" : \"0x8b749e46e043a74a1e\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 17064911386\n}", +", \n{\n \"ETH_account\" : \"0x6417d108b897", +"25209cb002b76f5dab0f2538f1e1\",\n \"name", +"\" : \"0x6417d108b89725209c\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 203119800\n},", +" \n{\n \"ETH_account\" : \"0x38334d8f752fc", +"590499ff800083d53f20d83d866\",\n \"name\"", +" : \"0x38334d8f752fc59049\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 2871266671\n},", +" \n{\n \"ETH_account\" : \"0x6bec57ba680aa", +"1607a2a09f1d36d3758c8432aa4\",\n \"name\"", +" : \"0x6bec57ba680aa1607a\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 24726000000\n}", +", \n{\n \"ETH_account\" : \"0x307247623a7c", +"d57583e02686f0990b0ffdcf60ba\",\n \"name", +"\" : \"0x307247623a7cd57583\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1000000\n}, \n", +"{\n \"ETH_account\" : \"0x2c35197bac68059", +"e35986cd22517bcac9196a8db\",\n \"name\" :", +" \"0x2c35197bac68059e35\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 13752000\n}, \n{\n", +" \"ETH_account\" : \"0xa53e96aab61026489", +"1f7132aac720f0530473757\",\n \"name\" : \"", +"0xa53e96aab610264891\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 818000000\n}, \n{\n ", +" \"ETH_account\" : \"0xeb638a276de9cd0011", +"c9779e53097e7a50c80144\",\n \"name\" : \"0", +"xeb638a276de9cd0011\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1370000000\n}, \n{\n ", +" \"ETH_account\" : \"0xa33bb416c189bd3b81", +"ba7c5c8236d59ff198926e\",\n \"name\" : \"0", +"xa33bb416c189bd3b81\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 160000000\n}, \n{\n ", +" \"ETH_account\" : \"0x866cc680e83138e3749", +"e58589d2f8daa0b97538f\",\n \"name\" : \"0x", +"866cc680e83138e374\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 500341000\n}, \n{\n ", +" \"ETH_account\" : \"0xcb42c821f79a6a941b54", +"0778f1d5ca3a752dd782\",\n \"name\" : \"0xc", +"b42c821f79a6a941b\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 20000000\n}, \n{\n \"", +"ETH_account\" : \"0x6dc2daf6622947c0185a7a", +"02e02a363a785f7638\",\n \"name\" : \"0x6dc", +"2daf6622947c018\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 3667200000\n}, \n{\n \"", +"ETH_account\" : \"0x4ccfa2364da1e8b147f425", +"74f65b7d2aa61d48e5\",\n \"name\" : \"0x4cc", +"fa2364da1e8b147\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 4110319000\n}, \n{\n \"", +"ETH_account\" : \"0x83554e3dc4479cfe6bb760", +"7a63eb4e3a3320b92c\",\n \"name\" : \"0x835", +"54e3dc4479cfe6b\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 705552\n}, \n{\n \"ETH_", +"account\" : \"0xb7bba4d115ffe4974b0a48a7b9", +"5a9fb9175b2d22\",\n \"name\" : \"0xb7bba4d", +"115ffe4974b\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 10468083847\n}, \n{\n \"ETH", +"_account\" : \"0x6c3051f707b8779ac0603c821", +"1c353cda0494221\",\n \"name\" : \"0x6c3051", +"f707b8779ac0\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1845902631\n}, \n{\n \"ETH", +"_account\" : \"0x797faa13c4782ca4e27a6c16f", +"637ea074ea5d657\",\n \"name\" : \"0x797faa", +"13c4782ca4e2\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 10937257574\n}, \n{\n \"ET", +"H_account\" : \"0xcc5852c9193396f04ff0494b", +"698b6421dd3e2f3a\",\n \"name\" : \"0xcc585", +"2c9193396f04f\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 185000000\n}, \n{\n \"ETH", +"_account\" : \"0x93d63b0455b5e5ac2ccf6b4fe", +"89171e1cacbf276\",\n \"name\" : \"0x93d63b", +"0455b5e5ac2c\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 36172000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x19b8f7bec4387146c2862e3cc86", +"b435fbb03eea9\",\n \"name\" : \"0x19b8f7be", +"c4387146c2\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 400000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x5621983a99db1fb86d3a7776ee79", +"b48a22aa56c3\",\n \"name\" : \"0x5621983a9", +"9db1fb86d\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 3341280576\n}, \n{\n \"ETH_ac", +"count\" : \"0x0d2c14627427f13c68e685fcef6c", +"7c1793dbd31a\",\n \"name\" : \"0x0d2c14627", +"427f13c68\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 807546894\n}, \n{\n \"ETH_acc", +"ount\" : \"0x50315eff895c2ff973e1de8711164", +"c23e8eab729\",\n \"name\" : \"0x50315eff89", +"5c2ff973\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 807546894\n}, \n{\n \"ETH_acco", +"unt\" : \"0x46234ea445427adf3b4542f870faf5", +"6907b4af33\",\n \"name\" : \"0x46234ea4454", +"27adf3b\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1400000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x1536c03f8028f39a00fdf0223ac27c", +"f482e773b9\",\n \"name\" : \"0x1536c03f802", +"8f39a00\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 57000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x3ec3c66cfd4d6ffc82f3d671d978df69", +"d985c409\",\n \"name\" : \"0x3ec3c66cfd4d6", +"ffc82\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 27545663\n}, \n{\n \"ETH_account\"", +" : \"0xbb78b270954d5620a30264cbe55b17c041", +"0237b5\",\n \"name\" : \"0xbb78b270954d562", +"0a3\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 62148754\n}, \n{\n \"ETH_account\" :", +" \"0xc5f004fcc7bab3605bc7c842bc1e3c0a1b1c", +"4df7\",\n \"name\" : \"0xc5f004fcc7bab3605", +"b\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 101000000\n}, \n{\n \"ETH_account\" : ", +"\"0xcfa9ff6cc5406e94b3cd4d7f50b9d42c0f917", +"baf\",\n \"name\" : \"0xcfa9ff6cc5406e94b3", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 663000000\n}, \n{\n \"ETH_account\" : \"", +"0x897ac47ee27b7ddc71639ca4e571babae96116", +"a7\",\n \"name\" : \"0x897ac47ee27b7ddc71\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 350000000\n}, \n{\n \"ETH_account\" : \"0", +"x4bf73bbf1f67ca953b1b794d0718c573af41af5", +"1\",\n \"name\" : \"0x4bf73bbf1f67ca953b\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1461119624\n}, \n{\n \"ETH_account\" : \"0", +"x61f9a36e50debce793bf7d690229f3cd8de1f74", +"3\",\n \"name\" : \"0x61f9a36e50debce793\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 11361663599\n}, \n{\n \"ETH_account\" : \"", +"0xd61a7322237b3541274a1d6de864b6df16b84b", +"58\",\n \"name\" : \"0xd61a7322237b354127\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 22378510227\n}, \n{\n \"ETH_account\" : ", +"\"0x6f944bce6175dd28453ecd552d4db7bc08444", +"7af\",\n \"name\" : \"0x6f944bce6175dd2845", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1158778489\n}, \n{\n \"ETH_account\" : ", +"\"0x2c466df3e81d849365dd5a62b32a966a8f6da", +"f29\",\n \"name\" : \"0x2c466df3e81d849365", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 790000000\n}, \n{\n \"ETH_account\" : \"", +"0xb8849244c837dc9b6bde250f48a8d69442f374", +"56\",\n \"name\" : \"tomuraushi\",\n \"pub", +"licKey\" : \"SPH5VCcKe9eDXZvNZ1gWu4YsXgwEE", +"XndiX5ZRivmASY8bNr3BJFEJ\",\n \"balance\"", +" : 465493896\n}, \n{\n \"ETH_account\" : \"", +"0xf69ae9158320642cfbcceaa3ec71941baee671", +"90\",\n \"name\" : \"masayuki01\",\n \"pub", +"licKey\" : \"SPH7f5p9NJ39UMSggrxSS7TF6rTnk", +"PrwWfuDyStsWHwgK1YiaCaXH\",\n \"balance\"", +" : 790000000\n}, \n{\n \"ETH_account\" : \"", +"0xacd02f1ac51a8463fffb1afcbcdd678fa445b0", +"c2\",\n \"name\" : \"0xacd02f1ac51a8463ff\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 500000000\n}, \n{\n \"ETH_account\" : \"0", +"xd10d5dfd0adfcec3a1460a48e0db7bb7e0deaba", +"5\",\n \"name\" : \"0xd10d5dfd0adfcec3a1\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 585550000\n}, \n{\n \"ETH_account\" : \"0x", +"afa51813ba1f8f561b063e20509d5fb0ee6c002c", +"\",\n \"name\" : \"0xafa51813ba1f8f561b\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1282888796\n}, \n{\n \"ETH_account\" : \"0x", +"542f9a56345aef94a0658b2d235fbc737c944622", +"\",\n \"name\" : \"0x542f9a56345aef94a0\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"10000000\n}, \n{\n \"ETH_account\" : \"0xe1", +"be43034ec47393fa9fae16acb588175d93208b\",", +"\n \"name\" : \"0xe1be43034ec47393fa\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 66", +"87999752\n}, \n{\n \"ETH_account\" : \"0xc9", +"37e8801cb5e84cbb0738152af7a3a67d06ee48\",", +"\n \"name\" : \"0xc937e8801cb5e84cbb\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 18", +"92000000\n}, \n{\n \"ETH_account\" : \"0xc3", +"07016ee91393c8df0188d1cad0aaa6642b901a\",", +"\n \"name\" : \"0xc307016ee91393c8df\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 11", +"50000000\n}, \n{\n \"ETH_account\" : \"0x17", +"ae277d88e6500a69b56cbdd5fcd21913267ffe\",", +"\n \"name\" : \"0x17ae277d88e6500a69\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 69", +"4230700\n}, \n{\n \"ETH_account\" : \"0xcae", +"d47a642927ef4405544b95afba9dcf3cee355\",\n", +" \"name\" : \"0xcaed47a642927ef440\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 104", +"1822771\n}, \n{\n \"ETH_account\" : \"0xd85", +"2d37d493d9767409e9a8d5ad018755be887f2\",\n", +" \"name\" : \"0xd852d37d493d976740\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 300", +"0000\n}, \n{\n \"ETH_account\" : \"0x03a2bf", +"3162b1b73cb572f861c4de82fe6e21e177\",\n ", +" \"name\" : \"rjenwinnysphtx\",\n \"publicK", +"ey\" : \"SPH7h3fcQ7dVY72SSgRyxSMSHHxF4XUDK", +"mVxJzNaXzRGPo3uVN4Gm\",\n \"balance\" : 1", +"273980452\n}, \n{\n \"ETH_account\" : \"0xe", +"c97a5cfb4055e4f66c74403695d0b47598bf422\"", +",\n \"name\" : \"0xec97a5cfb4055e4f66\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"47143468\n}, \n{\n \"ETH_account\" : \"0xe9", +"c8c2c8b8142c91a849fad0061b71ed6622c7e0\",", +"\n \"name\" : \"bemarketexplorer\",\n \"p", +"ublicKey\" : \"SPH6KLfmfH1vYpuTd2qt1j1n3Cc", +"JDeoCWzjknFTcUCTJf8J3rR46j\",\n \"balanc", +"e\" : 779937752\n}, \n{\n \"ETH_account\" :", +" \"0x1f1289b21cec879f89529cd979afc75f6715", +"3971\",\n \"name\" : \"0x1f1289b21cec879f8", +"9\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 103000000\n}, \n{\n \"ETH_account\" : ", +"\"0x1f1b5a09da322f42eb25b896be76fa87086d1", +"c24\",\n \"name\" : \"0x1f1b5a09da322f42eb", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 270000000\n}, \n{\n \"ETH_account\" : \"", +"0x9a6b303b0e77edd43130010e5d2e107f468a0f", +"f8\",\n \"name\" : \"0x9a6b303b0e77edd431\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 10000000000\n}, \n{\n \"ETH_account\" : ", +"\"0x2b41bc8cfe4f41c7a87df3b66dbc0ec79c3f8", +"f68\",\n \"name\" : \"0x2b41bc8cfe4f41c7a8", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 3991269776\n}, \n{\n \"ETH_account\" : ", +"\"0xb49511f372f8f76307fba171f4fa4e2cadb8b", +"8e2\",\n \"name\" : \"0xb49511f372f8f76307", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 813827160\n}, \n{\n \"ETH_account\" : \"", +"0x749b5d65a05830a769c86f6a71ad93745c8f13", +"70\",\n \"name\" : \"0x749b5d65a05830a769\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 741598000\n}, \n{\n \"ETH_account\" : \"0", +"xb10fe168026bce9b0b9f9e9a5b0d40d2983e7a7", +"9\",\n \"name\" : \"0xb10fe168026bce9b0b\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1560000000\n}, \n{\n \"ETH_account\" : \"0", +"x81c5071ebfa3b7fb8c70cb1175191a6228973cf", +"5\",\n \"name\" : \"0x81c5071ebfa3b7fb8c\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 2542982700\n}, \n{\n \"ETH_account\" : \"0", +"xc6a8c383f7fd63360412a82767fd320a6f0c3cc", +"0\",\n \"name\" : \"0xc6a8c383f7fd633604\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 40911000000\n}, \n{\n \"ETH_account\" : \"", +"0x1764d4baba6adf279e89386fa587b4f684cf54", +"53\",\n \"name\" : \"0x1764d4baba6adf279e\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1000000000\n}, \n{\n \"ETH_account\" : \"", +"0x48e3d72961360c382548d42bb4dda346386bf0", +"1c\",\n \"name\" : \"0x48e3d72961360c3825\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 15200000000\n}, \n{\n \"ETH_account\" : ", +"\"0xf57a18b84d817137fc4c71fb26d0d31fc0ed8", +"b0c\",\n \"name\" : \"0xf57a18b84d817137fc", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1500000000\n}, \n{\n \"ETH_account\" : ", +"\"0xf461994fb381b4085046795e4e3070ec3851c", +"3c6\",\n \"name\" : \"0xf461994fb381b40850", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 3\n}, \n{\n \"ETH_account\" : \"0x58c83c", +"b4e8ef876192daeed57ae0df8ab3e24f39\",\n ", +" \"name\" : \"0x58c83cb4e8ef876192\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 200000", +"00000\n}, \n{\n \"ETH_account\" : \"0x50321", +"aeed32977f7dbad657958344c8acc59a2c6\",\n ", +" \"name\" : \"0x50321aeed32977f7db\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 11400", +"0000\n}, \n{\n \"ETH_account\" : \"0x3db1dc", +"1c01183fa867d828c6fa83eb9678d704bd\",\n ", +" \"name\" : \"0x3db1dc1c01183fa867\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 800000", +"0000\n}, \n{\n \"ETH_account\" : \"0xb51ff9", +"df7978c0c255eaec0e000927a15460f9ef\",\n ", +" \"name\" : \"0xb51ff9df7978c0c255\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 400000", +"00\n}, \n{\n \"ETH_account\" : \"0x42a0ad47", +"4e8379c50395680353fcd6610a0c5ba6\",\n \"", +"name\" : \"0x42a0ad474e8379c503\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 22200000", +"0\n}, \n{\n \"ETH_account\" : \"0x0bd3e10ba", +"eba72cc0fabfd01550c64bf50f5fee9\",\n \"n", +"ame\" : \"0x0bd3e10baeba72cc0f\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 475000000", +"\n}, \n{\n \"ETH_account\" : \"0x811e4e97f0", +"b5353f9273bb11593598a17aae0bc0\",\n \"na", +"me\" : \"0x811e4e97f0b5353f92\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 290000000\n", +"}, \n{\n \"ETH_account\" : \"0x7c93751c07c", +"2c3eb3a0b8cca3ec90ebffb517bcb\",\n \"nam", +"e\" : \"0x7c93751c07c2c3eb3a\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 3476000000\n", +"}, \n{\n \"ETH_account\" : \"0x02e8bfc3371", +"0b0f1ec46c203193b135bf9a2cc8f\",\n \"nam", +"e\" : \"0x02e8bfc33710b0f1ec\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 120000000\n}", +", \n{\n \"ETH_account\" : \"0xc0630e0a6a61", +"fc0d57c034a85cf9394d4713c485\",\n \"name", +"\" : \"0xc0630e0a6a61fc0d57\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 115000000\n},", +" \n{\n \"ETH_account\" : \"0x540cf67a8132b", +"72c784d05da9e6470a9f9e8cd75\",\n \"name\"", +" : \"0x540cf67a8132b72c78\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 125000000\n}, ", +"\n{\n \"ETH_account\" : \"0x1e25eff55eb566", +"8afbab75e4033bf503a71221d7\",\n \"name\" ", +": \"tomorrowland2018\",\n \"publicKey\" : ", +"\"SPH65QqTQJxKLEeVr7H3JGWSsjBkMd8gvexJpmF", +"qbrXdtkBWUpT9s\",\n \"balance\" : 5050000", +"00\n}, \n{\n \"ETH_account\" : \"0x1f265ad2", +"4067dedcb3f197ad6e07d7fdae3e7d33\",\n \"", +"name\" : \"0x1f265ad24067dedcb3\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 43563451", +"00\n}, \n{\n \"ETH_account\" : \"0x80a1e409", +"70b4fb9388558ca4fae0604810e604da\",\n \"", +"name\" : \"0x80a1e40970b4fb9388\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 955700\n}", +", \n{\n \"ETH_account\" : \"0xd29b7b37ed32", +"4c33dd26dcf7ee4ed9f921afba9a\",\n \"name", +"\" : \"0xd29b7b37ed324c33dd\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 490000000\n},", +" \n{\n \"ETH_account\" : \"0x455a830e813d8", +"562c07cb662d96ead4b861841d7\",\n \"name\"", +" : \"0x455a830e813d8562c0\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1855000000\n},", +" \n{\n \"ETH_account\" : \"0xd61b16713ba83", +"4d2bab3f790fbc7c40b8e265043\",\n \"name\"", +" : \"0xd61b16713ba834d2ba\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 262000000\n}, ", +"\n{\n \"ETH_account\" : \"0xe71ecce418c26a", +"ab6b41541d617fa3f890e1bb1f\",\n \"name\" ", +": \"0xe71ecce418c26aab6b\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 858625907\n}, \n", +"{\n \"ETH_account\" : \"0x52905d9e06d2b6f", +"afd31da6840fd2035da06aa12\",\n \"name\" :", +" \"0x52905d9e06d2b6fafd\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 5994588587\n}, \n", +"{\n \"ETH_account\" : \"0x3e7437fa7a54a46", +"287bb188d563142d2e83f240b\",\n \"name\" :", +" \"samirsophiatx\",\n \"publicKey\" : \"SPH", +"7fMwD3efD9usvL7irBKWafAYwezLT2Gsumd33Djh", +"75duPz9z9R\",\n \"balance\" : 22002909400", +"\n}, \n{\n \"ETH_account\" : \"0x5dc3eb2d73", +"45da1ac372674b4e6aeb5c685787df\",\n \"na", +"me\" : \"0x5dc3eb2d7345da1ac3\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 225000000\n", +"}, \n{\n \"ETH_account\" : \"0x8fa21b537f2", +"c00d24feab0896c5e813cd97ebda2\",\n \"nam", +"e\" : \"mvmanuelmv\",\n \"publicKey\" : \"SP", +"H6k82CbCGCitfnJ8xtU2rrNnhMZEJwyMMMWneYfj", +"EWcYwo1HfVF\",\n \"balance\" : 737306000\n", +"}, \n{\n \"ETH_account\" : \"0x3e3a5dd49bf", +"06d34957a1f82d7e2c515e5ca0126\",\n \"nam", +"e\" : \"0x3e3a5dd49bf06d3495\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 580000000\n}", +", \n{\n \"ETH_account\" : \"0x62d35db76015", +"96bef81b7a8870822689a4b9d744\",\n \"name", +"\" : \"0x62d35db7601596bef8\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1429000000\n}", +", \n{\n \"ETH_account\" : \"0x9386034edc33", +"3d3f6e906c4e4d42683ec231ea2b\",\n \"name", +"\" : \"0x9386034edc333d3f6e\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 58137284\n}, ", +"\n{\n \"ETH_account\" : \"0x854a348d0962ce", +"d9052b82868cac693dcc140b49\",\n \"name\" ", +": \"0x854a348d0962ced905\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 294000000\n}, \n", +"{\n \"ETH_account\" : \"0x1ba8aee33cfa07c", +"70b22a730ed144d622c7f7bc5\",\n \"name\" :", +" \"0x1ba8aee33cfa07c70b\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 14361117\n}, \n{\n", +" \"ETH_account\" : \"0x6e5a86f754001a197", +"12527ee8f2a40e5d5b10cdc\",\n \"name\" : \"", +"0x6e5a86f754001a1971\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1000000000\n}, \n{\n", +" \"ETH_account\" : \"0xfc601d47f43b96c36", +"a6575eef8c1967dbd585ce2\",\n \"name\" : \"", +"0xfc601d47f43b96c36a\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 151623196\n}, \n{\n ", +" \"ETH_account\" : \"0x1e390354902b881d92", +"2fcfecfbc55da000308d18\",\n \"name\" : \"0", +"x1e390354902b881d92\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 4900000000\n}, \n{\n ", +" \"ETH_account\" : \"0xb98299a0e03fdada8d", +"5b67c4f9e3a3fb6de2cd9a\",\n \"name\" : \"0", +"xb98299a0e03fdada8d\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 790000000\n}, \n{\n ", +" \"ETH_account\" : \"0x9b4ef162cd1c05b25b8", +"903ed2eb9f67f24df9581\",\n \"name\" : \"0x", +"9b4ef162cd1c05b25b\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 7431521959\n}, \n{\n ", +" \"ETH_account\" : \"0xfdb8dfde77cfc6a39c9", +"1371d7c74ab47f464cb90\",\n \"name\" : \"0x", +"fdb8dfde77cfc6a39c\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 7857000\n}, \n{\n \"", +"ETH_account\" : \"0xcb75c0c4734290ded7deb3", +"d620dda77c13b74a0e\",\n \"name\" : \"0xcb7", +"5c0c4734290ded7\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 807500000\n}, \n{\n \"E", +"TH_account\" : \"0xf9eebda813d582ac59c1f7f", +"bb594dcb5bdb608c3\",\n \"name\" : \"0xf9ee", +"bda813d582ac59\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 445000000\n}, \n{\n \"ET", +"H_account\" : \"0x1b93b320e26b36672562bb93", +"207fc05d40841259\",\n \"name\" : \"0x1b93b", +"320e26b366725\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 2068000000\n}, \n{\n \"ET", +"H_account\" : \"0xe212bf3452c3ed22ec5b0084", +"2cf8855d66a4385f\",\n \"name\" : \"0xe212b", +"f3452c3ed22ec\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1185000000\n}, \n{\n \"ET", +"H_account\" : \"0x27e0eaa25675ee56c0ef0c61", +"d639f96bbfd2147e\",\n \"name\" : \"0x27e0e", +"aa25675ee56c0\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 4086000000\n}, \n{\n \"ET", +"H_account\" : \"0x56935c8b615db449de140e70", +"d17f3f8689ca778c\",\n \"name\" : \"0x56935", +"c8b615db449de\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1292000000\n}, \n{\n \"ET", +"H_account\" : \"0x69ee35cf84f97246c2055ff7", +"8cfe8226605b1378\",\n \"name\" : \"0x69ee3", +"5cf84f97246c2\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 733000000\n}, \n{\n \"ETH", +"_account\" : \"0x2e5adf0b313def52120797fc3", +"2623be9828b8c8d\",\n \"name\" : \"0x2e5adf", +"0b313def5212\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 562948800\n}, \n{\n \"ETH_", +"account\" : \"0xd60cecc34f83f95d3b0943eff7", +"2d0d2d92922826\",\n \"name\" : \"jasphtx\",", +"\n \"publicKey\" : \"SPH7oKZRfRqntZMS6uhg", +"wcLKgmkw7a9ipjbyimmJ9hSoD3YqsbdXZ\",\n ", +"\"balance\" : 2945000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xe304a36f078d7a4b30995f546897", +"f08f2e1d61eb\",\n \"name\" : \"0xe304a36f0", +"78d7a4b30\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 103000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xb5a20f9d8dd9543ba061fa64eab5e", +"1268b04b2f0\",\n \"name\" : \"0xb5a20f9d8d", +"d9543ba0\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2904588400\n}, \n{\n \"ETH_acc", +"ount\" : \"0x5ccf4862d4319265776578110dfcc", +"96743e977f5\",\n \"name\" : \"0x5ccf4862d4", +"31926577\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 3574034368\n}, \n{\n \"ETH_acc", +"ount\" : \"0x68094ebd2f3071dd4c75e150d9503", +"646aaa27fc9\",\n \"name\" : \"0x68094ebd2f", +"3071dd4c\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 974677200\n}, \n{\n \"ETH_acco", +"unt\" : \"0x22c4dcd77b3a537f8416c6fbcc9ec0", +"6028319804\",\n \"name\" : \"0x22c4dcd77b3", +"a537f84\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 127000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x6bca100cc89028f9296c786fe6a2183", +"22fd0a1b1\",\n \"name\" : \"0x6bca100cc890", +"28f929\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1730000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xe05d8c16309ecc2448748d28df17aba", +"0371a2416\",\n \"name\" : \"0xe05d8c16309e", +"cc2448\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 49020000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xe686bdece272deba6ed2066210b200", +"d35de9fa0d\",\n \"name\" : \"0xe686bdece27", +"2deba6e\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 9979000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x332e3b5a256223ab9b422fb59e17ac", +"4bb4a92a89\",\n \"name\" : \"0x332e3b5a256", +"223ab9b\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 3125352000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x56a6cd55ff1f894d1c2d229e67afe3", +"a8eaf3337c\",\n \"name\" : \"0x56a6cd55ff1", +"f894d1c\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 2287191100\n}, \n{\n \"ETH_acco", +"unt\" : \"0x6fd456c920742fdc9f6408c9785e4d", +"4a904a6427\",\n \"name\" : \"jjo\",\n \"pu", +"blicKey\" : \"SPH5fFZd9tzawW9JKzxz8HLxYRK9", +"3srCT1DGxvj8jnQdA5Y6QpRqb\",\n \"balance", +"\" : 7242500000\n}, \n{\n \"ETH_account\" :", +" \"0xe78de40a5113f5961253d6419885746e58b9", +"04ca\",\n \"name\" : \"0xe78de40a5113f5961", +"2\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 648443700\n}, \n{\n \"ETH_account\" : ", +"\"0x1fe8d26183c4908ba38c8b157b6d16720a997", +"880\",\n \"name\" : \"0x1fe8d26183c4908ba3", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 128614028\n}, \n{\n \"ETH_account\" : \"", +"0x4c0d976725e29522bfd6b662ea442e7a6f5e3d", +"71\",\n \"name\" : \"0x4c0d976725e29522bf\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 90112\n}, \n{\n \"ETH_account\" : \"0x1f7", +"1f638749a3b92d14ad04c22649057c25f486c\",\n", +" \"name\" : \"0x1f71f638749a3b92d1\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 143", +"000000\n}, \n{\n \"ETH_account\" : \"0x9b58", +"e839fef888a819ab7c1a9e081c2410c3c7ba\",\n ", +" \"name\" : \"0x9b58e839fef888a819\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 4850", +"0000000\n}, \n{\n \"ETH_account\" : \"0xf70", +"8dfc2714f28aff2ba6962707e89c97ee5c4be\",\n", +" \"name\" : \"0xf708dfc2714f28aff2\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 166", +"873213\n}, \n{\n \"ETH_account\" : \"0x2b94", +"53a5d3ac5d42c13c029e068353e3217b535c\",\n ", +" \"name\" : \"0x2b9453a5d3ac5d42c1\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2803", +"000000\n}, \n{\n \"ETH_account\" : \"0xda2c", +"f91efb444b7b64af8b3cf260f6d191b9aa49\",\n ", +" \"name\" : \"0xda2cf91efb444b7b64\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5080", +"00000\n}, \n{\n \"ETH_account\" : \"0x7b957", +"d796ab6e90a90df9fe17b48da4147ae13ed\",\n ", +" \"name\" : \"0x7b957d796ab6e90a90\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 11462", +"9471700\n}, \n{\n \"ETH_account\" : \"0x5c0", +"e8925c9a51abb69b88313199ef6122763fcea\",\n", +" \"name\" : \"0x5c0e8925c9a51abb69\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 625", +"000000\n}, \n{\n \"ETH_account\" : \"0xf040", +"53b23a8a665e192eeac3d122b528e5cac114\",\n ", +" \"name\" : \"0xf04053b23a8a665e19\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5000", +"00000\n}, \n{\n \"ETH_account\" : \"0x09dd5", +"34253298973140aa957a92bb0e8d4a66be7\",\n ", +" \"name\" : \"0x09dd53425329897314\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 90650", +"9600\n}, \n{\n \"ETH_account\" : \"0x7de5c9", +"5db047e6d16962cf0a7f4244759f2dc427\",\n ", +" \"name\" : \"0x7de5c95db047e6d169\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 269207", +"619\n}, \n{\n \"ETH_account\" : \"0x3dc673a", +"74e67b4d8accdb1510b9e268c6456f7c0\",\n ", +"\"name\" : \"0x3dc673a74e67b4d8ac\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1072488", +"300\n}, \n{\n \"ETH_account\" : \"0x27cce30", +"e27d06f1655227047357b596211b9dfae\",\n ", +"\"name\" : \"0x27cce30e27d06f1655\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1424674", +"000\n}, \n{\n \"ETH_account\" : \"0x14ebe8a", +"6b8f5b18b291287886311ab8658e98db6\",\n ", +"\"name\" : \"0x14ebe8a6b8f5b18b29\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 3870000", +"000\n}, \n{\n \"ETH_account\" : \"0x0d1a978", +"07c3647b7684fdf7cdceb8790d9d07acc\",\n ", +"\"name\" : \"0x0d1a97807c3647b768\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 6280000", +"00\n}, \n{\n \"ETH_account\" : \"0xe4eac502", +"98678f211d762bdbd88ac71cc1ddc90a\",\n \"", +"name\" : \"0xe4eac50298678f211d\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 60289000", +"000\n}, \n{\n \"ETH_account\" : \"0x04c494e", +"47c72b1e59ff8d99a53e83f39990658bf\",\n ", +"\"name\" : \"0x04c494e47c72b1e59f\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2250000", +"00\n}, \n{\n \"ETH_account\" : \"0xf773c6db", +"4799ff79c9a1b23d9d36e735309cbc61\",\n \"", +"name\" : \"0xf773c6db4799ff79c9\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 22500000", +"0\n}, \n{\n \"ETH_account\" : \"0x0fb5b612a", +"0b3b9111efdb36881881fd9273d2378\",\n \"n", +"ame\" : \"0x0fb5b612a0b3b9111e\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 104500000", +"0\n}, \n{\n \"ETH_account\" : \"0x63a01caa1", +"0a5927fd2fbf1d3cf8876882379daa1\",\n \"n", +"ame\" : \"0x63a01caa10a5927fd2\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 365214198", +"4\n}, \n{\n \"ETH_account\" : \"0x62ceba942", +"bce9c1b596cc80cb6db70b0611b6fa9\",\n \"n", +"ame\" : \"0x62ceba942bce9c1b59\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 800000000", +"\n}, \n{\n \"ETH_account\" : \"0xf2cabb93e3", +"ed1481bce351c1542da7918d3c6a29\",\n \"na", +"me\" : \"0xf2cabb93e3ed1481bc\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 397000000\n", +"}, \n{\n \"ETH_account\" : \"0xfd4b43c69c2", +"110a977bf4221a3499cace019f46a\",\n \"nam", +"e\" : \"0xfd4b43c69c2110a977\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 539551815\n}", +", \n{\n \"ETH_account\" : \"0x2308393c72de", +"0180aecebe7237ccb67aebd12e65\",\n \"name", +"\" : \"ondrej\",\n \"publicKey\" : \"SPH5Pky", +"yk7B8YkZKWjSVj2dqTZ7EAGwvveEjqDLgPtUQhVD", +"BTmrNd\",\n \"balance\" : 8764000000\n}, \n", +"{\n \"ETH_account\" : \"0x2bc0399cee62339", +"086773c6997e0582bd643313a\",\n \"name\" :", +" \"0x2bc0399cee62339086\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 2115742400\n}, \n", +"{\n \"ETH_account\" : \"0x5778861787123a9", +"3d4f82db45b3424708b7ca537\",\n \"name\" :", +" \"0x5778861787123a93d4\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 537810300\n}, \n{", +"\n \"ETH_account\" : \"0xd29e941de15ed06c", +"3d458c18f13ebff82c639f15\",\n \"name\" : ", +"\"0xd29e941de15ed06c3d\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 10020000000\n}, \n", +"{\n \"ETH_account\" : \"0x339600371aaa4ca", +"278e9c417488a3102cfe105a1\",\n \"name\" :", +" \"0x339600371aaa4ca278\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 3718120000\n}, \n", +"{\n \"ETH_account\" : \"0x124155ffee9c263", +"90dc03910cc2597184826436c\",\n \"name\" :", +" \"0x124155ffee9c26390d\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 850000000\n}, \n{", +"\n \"ETH_account\" : \"0xa5b34aed001e28b9", +"1203d8986bb4c3387d1b8ae7\",\n \"name\" : ", +"\"0xa5b34aed001e28b912\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 194853\n}, \n{\n ", +" \"ETH_account\" : \"0xe615793ca12e49caab02", +"a72eaecad0daf2bb1766\",\n \"name\" : \"0xe", +"615793ca12e49caab\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 150008500000\n}, \n{\n ", +" \"ETH_account\" : \"0xcbda4c8cb7799afd23", +"dc6b281b6657a0a1a6d2bb\",\n \"name\" : \"0", +"xcbda4c8cb7799afd23\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 7006000000\n}, \n{\n ", +" \"ETH_account\" : \"0xa7a67aec50f3820854", +"f0ab7f03c6c7698ff1c3ef\",\n \"name\" : \"0", +"xa7a67aec50f3820854\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 300000\n}, \n{\n \"", +"ETH_account\" : \"0x29a009c04288ad5048e325", +"53804da2fb1034fdb0\",\n \"name\" : \"0x29a", +"009c04288ad5048\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 250000000\n}, \n{\n \"E", +"TH_account\" : \"0xc8568959e8487e7b8c26809", +"358104411901595d7\",\n \"name\" : \"0xc856", +"8959e8487e7b8c\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1270000000\n}, \n{\n \"E", +"TH_account\" : \"0x105ebfdee916cb13eb245ba", +"1ef8563891d21a2af\",\n \"name\" : \"0x105e", +"bfdee916cb13eb\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1000000000\n}, \n{\n \"E", +"TH_account\" : \"0x2caee64e10e69ba817b3c58", +"779f5dd99b8eff076\",\n \"name\" : \"0x2cae", +"e64e10e69ba817\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 2493555488\n}, \n{\n \"E", +"TH_account\" : \"0x31bade0b626446c11d25921", +"51526fdbf0b91b632\",\n \"name\" : \"0x31ba", +"de0b626446c11d\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 5000000000\n}, \n{\n \"E", +"TH_account\" : \"0xc95b846e39173119fbcaa2a", +"e2c3420b4dacf70d9\",\n \"name\" : \"abdess", +"alems\",\n \"publicKey\" : \"SPH8Ru2KCnqww", +"S6iVa1EotQCXXHtMWtFzRkurKepWDWvVtYEgdCER", +"\",\n \"balance\" : 440000000\n}, \n{\n \"", +"ETH_account\" : \"0x56196e5ed2b8f2ef680365", +"3fc09886184b5b3eb7\",\n \"name\" : \"nanog", +"raphene\",\n \"publicKey\" : \"SPH8L4LsZDz", +"Wh4XNUBu1wFjEMUxREqiWtDo4biJKuxfk1cwb18y", +"gu\",\n \"balance\" : 140000000\n}, \n{\n ", +" \"ETH_account\" : \"0x3ded9133e61d3a107b79", +"45735739e148619b241c\",\n \"name\" : \"0x3", +"ded9133e61d3a107b\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1207000000\n}, \n{\n ", +" \"ETH_account\" : \"0xe6bac15c8c8e18071231", +"bf060410505d46aa507d\",\n \"name\" : \"0xe", +"6bac15c8c8e180712\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1550675787\n}, \n{\n ", +" \"ETH_account\" : \"0x2e70e82c368af5114828", +"f9e3121716a0fa218dc2\",\n \"name\" : \"0x2", +"e70e82c368af51148\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1090215230\n}, \n{\n ", +" \"ETH_account\" : \"0x315efbd44e2823957633", +"e6ae5e270052e4a394de\",\n \"name\" : \"0x3", +"15efbd44e28239576\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 297000000\n}, \n{\n ", +"\"ETH_account\" : \"0x362128879647623418586", +"8c0c093f691eae00aa9\",\n \"name\" : \"0x36", +"2128879647623418\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 476206994\n}, \n{\n \"", +"ETH_account\" : \"0xa32ef316559f30b70db476", +"daa243a9bff0cd72b1\",\n \"name\" : \"0xa32", +"ef316559f30b70d\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 3038100000\n}, \n{\n \"", +"ETH_account\" : \"0x310ad0e60c4f76042a0cda", +"b0c8f30b92c4ea1341\",\n \"name\" : \"0x310", +"ad0e60c4f76042a\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 15183144625\n}, \n{\n ", +"\"ETH_account\" : \"0x02c9d49d2d6a9c8a0cdbc", +"d6292bbf5fca8a5644f\",\n \"name\" : \"0x02", +"c9d49d2d6a9c8a0c\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 332999896\n}, \n{\n \"", +"ETH_account\" : \"0x5b5e189cd4a103d21ffb51", +"50a1fa0a9acdbbc548\",\n \"name\" : \"0x5b5", +"e189cd4a103d21f\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 971887800\n}, \n{\n \"E", +"TH_account\" : \"0x230566610db935ede80667c", +"3428b88e72a3cb48f\",\n \"name\" : \"riccat", +"77\",\n \"publicKey\" : \"SPH7Bv5TT4bHWwtV", +"H5DzYbaDN6NMh8zy61DDuiKNK29FxLTVrUwzo\",\n", +" \"balance\" : 4828000000\n}, \n{\n \"ET", +"H_account\" : \"0xe78b467759c5fc18620e9078", +"fb8d1744e8773f52\",\n \"name\" : \"0xe78b4", +"67759c5fc1862\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1770000000\n}, \n{\n \"ET", +"H_account\" : \"0x875d35205f5f39c1912632b4", +"e96f27b5ca4b40ef\",\n \"name\" : \"0x875d3", +"5205f5f39c191\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 226000000\n}, \n{\n \"ETH", +"_account\" : \"0x34940a9dc934c9e764e7d017a", +"3f0d1358b6f1e2a\",\n \"name\" : \"0x34940a", +"9dc934c9e764\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 535000000\n}, \n{\n \"ETH_", +"account\" : \"0x0e178e230e3d446184c610ceec", +"079e283109ba76\",\n \"name\" : \"0x0e178e2", +"30e3d446184\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1111892700\n}, \n{\n \"ETH_", +"account\" : \"0x4c285cdc1873ef4d24d015a401", +"3a4b1cd9fb7963\",\n \"name\" : \"0x4c285cd", +"c1873ef4d24\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2221482600\n}, \n{\n \"ETH_", +"account\" : \"0x51572eb1a63b1c67e8d35d9c5c", +"212e659fdf4c43\",\n \"name\" : \"0x51572eb", +"1a63b1c67e8\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 12402000000\n}, \n{\n \"ETH", +"_account\" : \"0x956b243005c64b4d8a4b19595", +"856bc51d95315d8\",\n \"name\" : \"0x956b24", +"3005c64b4d8a\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2400000000\n}, \n{\n \"ETH", +"_account\" : \"0xd95a12c5ed4d30188e67cd992", +"2b0484559efdc11\",\n \"name\" : \"0xd95a12", +"c5ed4d30188e\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1719456683\n}, \n{\n \"ETH", +"_account\" : \"0xb18c265f730455cee60c89b6b", +"ac9e51c4273709d\",\n \"name\" : \"0xb18c26", +"5f730455cee6\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 7959380\n}, \n{\n \"ETH_ac", +"count\" : \"0x755e6ef87310ff579fa69b372290", +"d2dee73d1b1b\",\n \"name\" : \"0x755e6ef87", +"310ff579f\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 302856537\n}, \n{\n \"ETH_acc", +"ount\" : \"0xce46e9ba42df206bba90fd6ea5a79", +"86630fe22d3\",\n \"name\" : \"0xce46e9ba42", +"df206bba\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 487686\n}, \n{\n \"ETH_account", +"\" : \"0xab7ed669c6127350a2fcd8f12337b4871", +"f5842f6\",\n \"name\" : \"0xab7ed669c61273", +"50a2\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 2530037423\n}, \n{\n \"ETH_account", +"\" : \"0x67537742ea19e8a1cd22647d7e4501fd1", +"89af357\",\n \"name\" : \"0x67537742ea19e8", +"a1cd\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1989999862\n}, \n{\n \"ETH_account", +"\" : \"0x3da39ddb834e9635a71dd00296395b057", +"73c272e\",\n \"name\" : \"0x3da39ddb834e96", +"35a7\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1000000000\n}, \n{\n \"ETH_account", +"\" : \"0xacdd3475e9c9c7084f5cff32d76ec7ce2", +"6340daa\",\n \"name\" : \"0xacdd3475e9c9c7", +"084f\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 243000000\n}, \n{\n \"ETH_account\"", +" : \"0x2d5869dbb5e5a715ef2a6c89936cf9a09b", +"89a42b\",\n \"name\" : \"0x2d5869dbb5e5a71", +"5ef\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 410843103\n}, \n{\n \"ETH_account\" ", +": \"0xe7642d1cee957d28baa38fc21a481e059d5", +"9521e\",\n \"name\" : \"0xe7642d1cee957d28", +"ba\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 2500000000\n}, \n{\n \"ETH_account\" ", +": \"0x0a7326b5061b2d587fb3a61c29bd1d688c9", +"56e32\",\n \"name\" : \"0x0a7326b5061b2d58", +"7f\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 423681113\n}, \n{\n \"ETH_account\" :", +" \"0xd615303cd450323390a825f74c53df1ba8e0", +"c0e5\",\n \"name\" : \"0xd615303cd45032339", +"0\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 249441000\n}, \n{\n \"ETH_account\" : ", +"\"0xd33a17cdd98c1aadc4a0aae157c1f72d1f034", +"1f0\",\n \"name\" : \"0xd33a17cdd98c1aadc4", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 8000317727\n}, \n{\n \"ETH_account\" : ", +"\"0x83f27a4f4955b70157a048cf834add679a2e7", +"496\",\n \"name\" : \"0x83f27a4f4955b70157", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 212473885\n}, \n{\n \"ETH_account\" : \"", +"0x0b2c69ace801db1953f910d9bc72534bcac43b", +"8a\",\n \"name\" : \"0x0b2c69ace801db1953\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 406\n}, \n{\n \"ETH_account\" : \"0xfc2d5", +"ee5cc85d68aefc99668a59bf1d57e06616b\",\n ", +" \"name\" : \"0xfc2d5ee5cc85d68aef\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 16860", +"00422\n}, \n{\n \"ETH_account\" : \"0x251cc", +"f44f5963ed48634067e71d392f340918c5c\",\n ", +" \"name\" : \"0x251ccf44f5963ed486\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 12175", +"96142\n}, \n{\n \"ETH_account\" : \"0x75e72", +"ce15556d4ef9815a0ff5a4655a33a031909\",\n ", +" \"name\" : \"0x75e72ce15556d4ef98\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 17490", +"00000\n}, \n{\n \"ETH_account\" : \"0xc07ce", +"fc5c272db1729d5347572ba4e1e6650d910\",\n ", +" \"name\" : \"0xc07cefc5c272db1729\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 11070", +"00000\n}, \n{\n \"ETH_account\" : \"0xf0b66", +"efe6a60270f949b52de428cded9e00dc705\",\n ", +" \"name\" : \"0xf0b66efe6a60270f94\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 11070", +"00000\n}, \n{\n \"ETH_account\" : \"0x12bce", +"1bf0b2dcdb154dba3cfab919be510d3c5db\",\n ", +" \"name\" : \"0x12bce1bf0b2dcdb154\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 85000", +"00000\n}, \n{\n \"ETH_account\" : \"0x37831", +"955b5898e3c69adca0e7577ea1477fcb351\",\n ", +" \"name\" : \"0x37831955b5898e3c69\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 64200", +"0000\n}, \n{\n \"ETH_account\" : \"0xc4f31a", +"2e54149193b44d6652c4b17908b558fad6\",\n ", +" \"name\" : \"0xc4f31a2e54149193b4\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 100000", +"0\n}, \n{\n \"ETH_account\" : \"0xb9fb263e1", +"fb6415b43d0e8dd09552b30be9b1f62\",\n \"n", +"ame\" : \"0xb9fb263e1fb6415b43\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 256939336", +"8\n}, \n{\n \"ETH_account\" : \"0xd694f23df", +"e17ac981c953af12108a3208babf402\",\n \"n", +"ame\" : \"0xd694f23dfe17ac981c\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 756711384", +"5\n}, \n{\n \"ETH_account\" : \"0xc0c010fb7", +"74736ddf5ee9fbd0454371de429a808\",\n \"n", +"ame\" : \"0xc0c010fb774736ddf5\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 154698191", +"\n}, \n{\n \"ETH_account\" : \"0x3d73fcb2e5", +"15187f556ccd14f76f459ace30050b\",\n \"na", +"me\" : \"0x3d73fcb2e515187f55\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2286200000", +"0\n}, \n{\n \"ETH_account\" : \"0x020aedd6c", +"de2349f095caa81340fe6c834816e13\",\n \"n", +"ame\" : \"0x020aedd6cde2349f09\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 657754098", +"75\n}, \n{\n \"ETH_account\" : \"0xe7bec37f", +"bfcb27c3c23fd590052ab402b572c275\",\n \"", +"name\" : \"0xe7bec37fbfcb27c3c2\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 74884718", +"00\n}, \n{\n \"ETH_account\" : \"0xa9765617", +"0e0f8a38153fa1c17bab2982f542536c\",\n \"", +"name\" : \"0xa97656170e0f8a3815\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 63923449", +"82\n}, \n{\n \"ETH_account\" : \"0x88dd4e9c", +"a19b8ee290ca0511a750e928c4d1eb88\",\n \"", +"name\" : \"0x88dd4e9ca19b8ee290\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 13094933", +"00\n}, \n{\n \"ETH_account\" : \"0xb1b36cf7", +"38036acb70efa6db78daece2f0c2f7e5\",\n \"", +"name\" : \"0xb1b36cf738036acb70\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 15667299", +"6\n}, \n{\n \"ETH_account\" : \"0x1b96750ee", +"126f3dc9a3666c55beac39cb28a3445\",\n \"n", +"ame\" : \"0x1b96750ee126f3dc9a\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 239000000", +"\n}, \n{\n \"ETH_account\" : \"0xa072fa56a5", +"f9f47c4824bd8236ee00775521ac06\",\n \"na", +"me\" : \"0xa072fa56a5f9f47c48\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 20000000\n}", +", \n{\n \"ETH_account\" : \"0x9a64cc48075a", +"bf0df72670b064e49f9158c1cff9\",\n \"name", +"\" : \"sphtxswapavn\",\n \"publicKey\" : \"S", +"PH5Q676xiE8kdXyxGAf6ADmqae1aWucitoFkBa9B", +"NNajAPK9Qq2n\",\n \"balance\" : 653000000", +"\n}, \n{\n \"ETH_account\" : \"0xedd5cf521b", +"41543d4e1fd78d4cee8e01b2894dc6\",\n \"na", +"me\" : \"0xedd5cf521b41543d4e\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 483000000\n", +"}, \n{\n \"ETH_account\" : \"0xe13b79a32ec", +"1bf1601d82cc7b191fc3857459251\",\n \"nam", +"e\" : \"0xe13b79a32ec1bf1601\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 5601257700\n", +"}, \n{\n \"ETH_account\" : \"0xde47f3c16cd", +"b757027f61d07a44c881d2d32b161\",\n \"nam", +"e\" : \"0xde47f3c16cdb757027\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 500000000\n}", +", \n{\n \"ETH_account\" : \"0x20c4aa962778", +"fa2807c4aaa420a9114ac40241d7\",\n \"name", +"\" : \"0x20c4aa962778fa2807\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 400000000\n},", +" \n{\n \"ETH_account\" : \"0x62af228c11066", +"9da3c7ac33e22f6f9d841340f76\",\n \"name\"", +" : \"0x62af228c110669da3c\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 176278\n}, \n{\n", +" \"ETH_account\" : \"0x1ca5a1b01264d9cd1", +"e2cf7c4155ff0cf465a7077\",\n \"name\" : \"", +"0x1ca5a1b01264d9cd1e\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 269244742556\n}, \n", +"{\n \"ETH_account\" : \"0xc1236c9163da0cd", +"90051b445bc524c7df9233432\",\n \"name\" :", +" \"0xc1236c9163da0cd900\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 90000000\n}, \n{\n", +" \"ETH_account\" : \"0x772b890c69b465637", +"8a1ab030db3b67253887283\",\n \"name\" : \"", +"0x772b890c69b4656378\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 529190000\n}, \n{\n ", +" \"ETH_account\" : \"0x3b7ed6fdf4dd9502c8", +"cbfe76798aac99b2725c07\",\n \"name\" : \"0", +"x3b7ed6fdf4dd9502c8\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 13598303000\n}, \n{\n", +" \"ETH_account\" : \"0xefbc86a57ab2df687", +"8a1581ddfb6ff69c3d5e091\",\n \"name\" : \"", +"0xefbc86a57ab2df6878\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 20086788100\n}, \n{", +"\n \"ETH_account\" : \"0xc02411e8a045984b", +"85e83bfa66b27ea89a7a74e7\",\n \"name\" : ", +"\"0xc02411e8a045984b85\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 97286100\n}, \n{\n ", +" \"ETH_account\" : \"0xd277cedd2b70b53dc7", +"1def8754ab05a033963235\",\n \"name\" : \"0", +"xd277cedd2b70b53dc7\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 3700000\n}, \n{\n ", +"\"ETH_account\" : \"0xafc15e1b9ee6e74f8295e", +"65492c20a901e62519a\",\n \"name\" : \"0xaf", +"c15e1b9ee6e74f82\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 399873992\n}, \n{\n \"", +"ETH_account\" : \"0xd8acce09792e6a0970e671", +"d78c064f839af26fd4\",\n \"name\" : \"0xd8a", +"cce09792e6a0970\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 40000000\n}, \n{\n \"ET", +"H_account\" : \"0xb0faa65e5c8f590c4dc58bff", +"997b41271c8a9013\",\n \"name\" : \"0xb0faa", +"65e5c8f590c4d\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 600000000\n}, \n{\n \"ETH", +"_account\" : \"0xc4d47ddf26e5239f2831f5e1e", +"9203665747a365f\",\n \"name\" : \"0xc4d47d", +"df26e5239f28\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1126680836\n}, \n{\n \"ETH", +"_account\" : \"0x8ac407e5adb2117b4f059cda7", +"c8e15c6151ef75d\",\n \"name\" : \"0x8ac407", +"e5adb2117b4f\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 150000000\n}, \n{\n \"ETH_", +"account\" : \"0x7ed30e7d72d2ec502624df653d", +"fdde024b44cdde\",\n \"name\" : \"sophianew", +"txx\",\n \"publicKey\" : \"SPH5ydceMEFMnXi", +"R3qfbJ4SdGfezKD9r6EPCwQ7ktnrqaeYeaHEZm\",", +"\n \"balance\" : 1700000000\n}, \n{\n \"E", +"TH_account\" : \"0x425e4e0e0278c106b5ffebb", +"9e00b76e51a1bc1a5\",\n \"name\" : \"0x425e", +"4e0e0278c106b5\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 4500000000\n}, \n{\n \"E", +"TH_account\" : \"0xa585cea5aaefc63761f0cda", +"e2dfe032fffa80fba\",\n \"name\" : \"0xa585", +"cea5aaefc63761\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 4858146948\n}, \n{\n \"E", +"TH_account\" : \"0x04ad859fb81f3d97ac0f129", +"adefbb1085e9e52af\",\n \"name\" : \"ssheth", +"\",\n \"publicKey\" : \"SPH7MgRBRKUR6yhXbw", +"c23SQ6SdrXegJGfC2ZbVUPngEqiw7SJQK97\",\n ", +" \"balance\" : 200000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xbbb411377798668d1783ce97c20", +"b8781285996ae\",\n \"name\" : \"0xbbb41137", +"7798668d17\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 505000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xc3c0ce24d6c8b697c46d7f45b732", +"7545a3ed4cb8\",\n \"name\" : \"bbruijnsoph", +"iatx\",\n \"publicKey\" : \"SPH7Nhuh3k8BAy", +"C9vvssKpnV6MZXoXVdjLrGuakJHf2J9HkcFADc3\"", +",\n \"balance\" : 3000000000\n}, \n{\n \"", +"ETH_account\" : \"0x3931e67c35b0aea63208fb", +"5a9703998cd8b4ac5b\",\n \"name\" : \"0x393", +"1e67c35b0aea632\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 209943037\n}, \n{\n \"E", +"TH_account\" : \"0xead84cebc4eb7268775d3c1", +"4ec1ccd21ca86ab94\",\n \"name\" : \"0xead8", +"4cebc4eb726877\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 6540817544\n}, \n{\n \"E", +"TH_account\" : \"0xad814b826de10c84ae6e51c", +"d65cb4d0bca13fc19\",\n \"name\" : \"nadija", +"\",\n \"publicKey\" : \"SPH5pYiPruP8fgUP5N", +"FbF1x7VWFGWCa1ZYZ15V7cCGjqcaLvpwfVN\",\n ", +" \"balance\" : 141631400\n}, \n{\n \"ETH_a", +"ccount\" : \"0x352c4158da47d2dd65f59200c57", +"47f6ad16ff076\",\n \"name\" : \"0x352c4158", +"da47d2dd65\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 73\n}, \n{\n \"ETH_account\" ", +": \"0x25d94d806314710a22d3f05f7d3a9a6986b", +"c8324\",\n \"name\" : \"0x25d94d806314710a", +"22\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 303420000\n}, \n{\n \"ETH_account\" :", +" \"0x3af312997075e467f829b6dd4a119e561f47", +"6d00\",\n \"name\" : \"0x3af312997075e467f", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 23549020000\n}, \n{\n \"ETH_account\" ", +": \"0xffd55b76b3c5fa47a0a2cf337c9fa86d0d1", +"9f47f\",\n \"name\" : \"0xffd55b76b3c5fa47", +"a0\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 4212117300\n}, \n{\n \"ETH_account\" ", +": \"0xa46bc7b919da9e119a283e12293771296a9", +"6d905\",\n \"name\" : \"0xa46bc7b919da9e11", +"9a\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 450000000\n}, \n{\n \"ETH_account\" :", +" \"0xba072ab5f5c962af3e436657dfacc638c281", +"062a\",\n \"name\" : \"0xba072ab5f5c962af3", +"e\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 50005000000\n}, \n{\n \"ETH_account\" ", +": \"0x5493ac2b1088a0e336f65cada9368f5294b", +"7963f\",\n \"name\" : \"0x5493ac2b1088a0e3", +"36\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 1982100000\n}, \n{\n \"ETH_account\" ", +": \"0x79c4cdd69587343577d19d6a508afaba2dd", +"e7eb3\",\n \"name\" : \"0x79c4cdd695873435", +"77\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 2534755052\n}, \n{\n \"ETH_account\" ", +": \"0x7175ea2b3b085e7eb56f2d8bbc4b1156a39", +"37c12\",\n \"name\" : \"0x7175ea2b3b085e7e", +"b5\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 9000000\n}, \n{\n \"ETH_account\" : \"", +"0xaacd8625e1b0f197c59091f91b514bf169cb38", +"f0\",\n \"name\" : \"0xaacd8625e1b0f197c5\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 33511000\n}, \n{\n \"ETH_account\" : \"0x", +"59ba956350409926cef2a9f2a0f1fd2f0d95a470", +"\",\n \"name\" : \"0x59ba956350409926ce\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1341722754\n}, \n{\n \"ETH_account\" : \"0x", +"a9630d1a4362fadd55a1cf9de75a6804622281c1", +"\",\n \"name\" : \"domingoxsix\",\n \"publ", +"icKey\" : \"SPH6WeAVfiQ6na43A3BrHWRGCwkWqE", +"A4vz75GyiKRUxRCYQuaWAT5\",\n \"balance\" ", +": 3500000000\n}, \n{\n \"ETH_account\" : \"", +"0x2d8a561be5ca4fd54a7b36a85baa39c0c3daf8", +"90\",\n \"name\" : \"0x2d8a561be5ca4fd54a\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 953672000\n}, \n{\n \"ETH_account\" : \"0", +"xdcd7b1dc4a160ffc72dbbdabea293422263b172", +"8\",\n \"name\" : \"0xdcd7b1dc4a160ffc72\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 655159600\n}, \n{\n \"ETH_account\" : \"0x", +"624c01c1ececd2373bce1695ae07f9903cc6d4da", +"\",\n \"name\" : \"0x624c01c1ececd2373b\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1200000000\n}, \n{\n \"ETH_account\" : \"0x", +"2157ec14572c111ce33a14f2b5b689f9c3d833ab", +"\",\n \"name\" : \"0x2157ec14572c111ce3\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"655886106\n}, \n{\n \"ETH_account\" : \"0x0", +"d6c65719e7208d15e2d1e0025a6fd1993614a47\"", +",\n \"name\" : \"0x0d6c65719e7208d15e\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"41427994\n}, \n{\n \"ETH_account\" : \"0x10", +"0592b278a9b76c4b51672259feab0c0ae48b48\",", +"\n \"name\" : \"0x100592b278a9b76c4b\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 45", +"0000000\n}, \n{\n \"ETH_account\" : \"0x116", +"8791db40e6c196f162ecbcbf2566c118eb831\",\n", +" \"name\" : \"0x1168791db40e6c196f\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 815", +"7\n}, \n{\n \"ETH_account\" : \"0xe2c28f502", +"57d34942a555def507e7090e57f9954\",\n \"n", +"ame\" : \"0xe2c28f50257d34942a\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 285000000", +"\n}, \n{\n \"ETH_account\" : \"0xad08b94d8b", +"3b4a7d60671914574db1e33beecd8a\",\n \"na", +"me\" : \"0xad08b94d8b3b4a7d60\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 6088809000", +"0\n}, \n{\n \"ETH_account\" : \"0x7f8be05a5", +"7a12ad5bafb83dc7b551b0288b454c1\",\n \"n", +"ame\" : \"0x7f8be05a57a12ad5ba\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 548450000", +"0\n}, \n{\n \"ETH_account\" : \"0x4bab75cb4", +"f33ccac07bb48580c7d0c3abd941f0c\",\n \"n", +"ame\" : \"0x4bab75cb4f33ccac07\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 250000000", +"\n}, \n{\n \"ETH_account\" : \"0x94e97d32b8", +"7615251fb11e466ea1c90530580f1e\",\n \"na", +"me\" : \"0x94e97d32b87615251f\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 50000000\n}", +", \n{\n \"ETH_account\" : \"0x9e44ef74b79a", +"ea2eb67201d534ee1464fbf6919a\",\n \"name", +"\" : \"0x9e44ef74b79aea2eb6\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1332000000\n}", +", \n{\n \"ETH_account\" : \"0x13ada34e0d1d", +"228ce6963c984298696ae59b077c\",\n \"name", +"\" : \"0x13ada34e0d1d228ce6\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 200\n}, \n{\n ", +" \"ETH_account\" : \"0xe57d662a39c7bc5538f", +"ab2d3f490aa5adb0e1840\",\n \"name\" : \"0x", +"e57d662a39c7bc5538\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 313000000\n}, \n{\n ", +" \"ETH_account\" : \"0x8fca1e7e884aab2ab801", +"488af829a0d2199fff94\",\n \"name\" : \"0x8", +"fca1e7e884aab2ab8\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 6026036438\n}, \n{\n ", +" \"ETH_account\" : \"0x4439fc0c50f9071844ba", +"f561364ff913f7bdb80e\",\n \"name\" : \"0x4", +"439fc0c50f9071844\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 2850000000\n}, \n{\n ", +" \"ETH_account\" : \"0x69cae8c1228b9e10f14f", +"99c80b759ed04b4459f0\",\n \"name\" : \"0x6", +"9cae8c1228b9e10f1\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1618033\n}, \n{\n \"E", +"TH_account\" : \"0x90e78a2f516c63f9dede935", +"6560df729f4742b53\",\n \"name\" : \"0x90e7", +"8a2f516c63f9de\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 360000000\n}, \n{\n \"ET", +"H_account\" : \"0x4e0a6857ee724f5d9c833937", +"0d65649e691b4ff2\",\n \"name\" : \"0x4e0a6", +"857ee724f5d9c\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 10812000000\n}, \n{\n \"E", +"TH_account\" : \"0xcbbdc4e65504b15e3a4f4a5", +"765f05a84fce5d5ed\",\n \"name\" : \"0xcbbd", +"c4e65504b15e3a\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 450113977\n}, \n{\n \"ET", +"H_account\" : \"0xc1f6fd8a24327a4623aa561c", +"6f23d26040ee3443\",\n \"name\" : \"0xc1f6f", +"d8a24327a4623\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 176000000\n}, \n{\n \"ETH", +"_account\" : \"0x914b8b60ab245d2ebaa850a47", +"3e528106b8a8a56\",\n \"name\" : \"0x914b8b", +"60ab245d2eba\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 13490000000\n}, \n{\n \"ET", +"H_account\" : \"0xa89ac766f908f57b517808b3", +"de42b9c5e7bbed10\",\n \"name\" : \"0xa89ac", +"766f908f57b51\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 840000000\n}, \n{\n \"ETH", +"_account\" : \"0xafacfc16306d4057c9096e87a", +"e411fadb5102411\",\n \"name\" : \"0xafacfc", +"16306d4057c9\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 9000000000\n}, \n{\n \"ETH", +"_account\" : \"0x91013c69ea9471477178ee966", +"7f026ad59a98532\",\n \"name\" : \"0x91013c", +"69ea94714771\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 8427000000\n}, \n{\n \"ETH", +"_account\" : \"0x5da603da13aa6f1d4769be805", +"f271364e13c7f66\",\n \"name\" : \"0x5da603", +"da13aa6f1d47\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 550000000\n}, \n{\n \"ETH_", +"account\" : \"0x998fe5e54dc5f817670a875e3f", +"2945d95818f10a\",\n \"name\" : \"0x998fe5e", +"54dc5f81767\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2206850500\n}, \n{\n \"ETH_", +"account\" : \"0x64809a0d8de5ad53285917075a", +"0fa4798acbc737\",\n \"name\" : \"kevinseag", +"ull\",\n \"publicKey\" : \"SPH7h2NXDeTcuof", +"vyfAp1ryoeU6QuuX2Tt99GuN9bMkShLEdjWBHE\",", +"\n \"balance\" : 1750324703676\n}, \n{\n ", +" \"ETH_account\" : \"0x50bae7a7858276da82cd", +"13ec2fcf4e8442f06a0e\",\n \"name\" : \"0x5", +"0bae7a7858276da82\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 107703000\n}, \n{\n ", +"\"ETH_account\" : \"0xf645f7dab6f92acbe3421", +"fb21e506afb7ce10c21\",\n \"name\" : \"0xf6", +"45f7dab6f92acbe3\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 489448631\n}, \n{\n \"", +"ETH_account\" : \"0x95f389b6a7ecf523f87945", +"9968594a738f8a7b99\",\n \"name\" : \"0x95f", +"389b6a7ecf523f8\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2200000000\n}, \n{\n \"", +"ETH_account\" : \"0x0c38e4e597c0b35edd4849", +"5792cd501b3bfc6a57\",\n \"name\" : \"elie\"", +",\n \"publicKey\" : \"SPH7Sub5HADeUCYKunn", +"rgp3MinJgQ2BezbfCSkM6NxdMR1ZdWGrET\",\n ", +" \"balance\" : 69570890047\n}, \n{\n \"ETH_", +"account\" : \"0x1284ff75175b39eb035ff0469c", +"b5162fefdf8f9c\",\n \"name\" : \"songswan\"", +",\n \"publicKey\" : \"SPH8TH8XDgW4uscD3ao", +"rjbYdfrVJxSTSQEE1Hvvy5k5Woztq1Fb65\",\n ", +" \"balance\" : 10068000000\n}, \n{\n \"ETH_", +"account\" : \"0xcdb54da102df52cc4fff996765", +"ad6e740b7fc6a6\",\n \"name\" : \"0xcdb54da", +"102df52cc4f\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1093749800\n}, \n{\n \"ETH_", +"account\" : \"0x37bf612bb1b2326746bc134021", +"9edca8714a2f14\",\n \"name\" : \"0x37bf612", +"bb1b2326746\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 428550000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xb87c1930abad1e4c5fe6d5bdb4d", +"5c6a537442225\",\n \"name\" : \"0xb87c1930", +"abad1e4c5f\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 4920323000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xbb781565f8ac4c6057cba376354", +"503b1c7d7f680\",\n \"name\" : \"0xbb781565", +"f8ac4c6057\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 8879000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x9c5305923e7bbf98359e277c768", +"67e6520fd9c53\",\n \"name\" : \"vignastyso", +"phia\",\n \"publicKey\" : \"SPH5NWqqXn3ug5", +"xPAqzmHTuAK9C18ucf6XkjhY2f8twQDFBYGV86C\"", +",\n \"balance\" : 3100000000\n}, \n{\n \"", +"ETH_account\" : \"0x167acc8c882066f59da003", +"b7385c024e212f3394\",\n \"name\" : \"0x167", +"acc8c882066f59d\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2100000000\n}, \n{\n \"", +"ETH_account\" : \"0x369626f47ec6c2401b114f", +"70e872ee6002f3f7d0\",\n \"name\" : \"0x369", +"626f47ec6c2401b\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2101000000\n}, \n{\n \"", +"ETH_account\" : \"0xd535b7d91cea98e419745f", +"3febd79b8ba3eafd14\",\n \"name\" : \"0xd53", +"5b7d91cea98e419\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 3359526000\n}, \n{\n \"", +"ETH_account\" : \"0xec1f8a4adb26ee8576a616", +"09f8bb0190ae7e94a4\",\n \"name\" : \"0xec1", +"f8a4adb26ee8576\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 5282240000\n}, \n{\n \"", +"ETH_account\" : \"0x530ae3c2d5322ad1ac2843", +"56ff63f44d687a0534\",\n \"name\" : \"0x530", +"ae3c2d5322ad1ac\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 5381050147\n}, \n{\n \"", +"ETH_account\" : \"0x6665aeb28ab5b78ffd93ba", +"039fc0c9548e786436\",\n \"name\" : \"0x666", +"5aeb28ab5b78ffd\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 324899700\n}, \n{\n \"E", +"TH_account\" : \"0xe036c6c226a34b5cb6e8c56", +"bb78c54b51ad10c9e\",\n \"name\" : \"0xe036", +"c6c226a34b5cb6\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 110000000\n}, \n{\n \"ET", +"H_account\" : \"0x1cd15d9ec87e926bcdc4345c", +"11987914c57acb1f\",\n \"name\" : \"0x1cd15", +"d9ec87e926bcd\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 490000000\n}, \n{\n \"ETH", +"_account\" : \"0xe3629965c725a205622fd9de8", +"0287c2f761d8f05\",\n \"name\" : \"0xe36299", +"65c725a20562\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 309896110\n}, \n{\n \"ETH_", +"account\" : \"0xf03e12a2faf168ebf6655b5ba9", +"fbd89e95fc5c8e\",\n \"name\" : \"fourmi\",\n", +" \"publicKey\" : \"SPH8SRUWXqE2zxhdUq6Co", +"pPBRyWaYrgsd484pEMS4tHM3ncrzyHxW\",\n \"", +"balance\" : 548000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x6ebaa8292823c160d77baa21ef2514", +"5f1ab93442\",\n \"name\" : \"0x6ebaa829282", +"3c160d7\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 630340397\n}, \n{\n \"ETH_accou", +"nt\" : \"0xa0cbf5f7b66cff9c5d08bb20b17d1bb", +"c8333362c\",\n \"name\" : \"0xa0cbf5f7b66c", +"ff9c5d\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1048449677\n}, \n{\n \"ETH_accou", +"nt\" : \"0x33d02da4c249edfd85b1c649f92d738", +"3944e4d06\",\n \"name\" : \"0x33d02da4c249", +"edfd85\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 80000000\n}, \n{\n \"ETH_account", +"\" : \"0x8a0350b5ea8f9801e0cce77448e2b271e", +"d64dc3d\",\n \"name\" : \"0x8a0350b5ea8f98", +"01e0\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1100000000\n}, \n{\n \"ETH_account", +"\" : \"0xc9bac858cc5a2d106123dd1fed9d9c764", +"fbdeee2\",\n \"name\" : \"0xc9bac858cc5a2d", +"1061\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 2421240000\n}, \n{\n \"ETH_account", +"\" : \"0x921f4405339b533152fb8223b5c37a3bb", +"392512e\",\n \"name\" : \"0x921f4405339b53", +"3152\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 2500500000\n}, \n{\n \"ETH_account", +"\" : \"0xcca2ac588f9243b46f6933ae26d28cd68", +"cb20d82\",\n \"name\" : \"0xcca2ac588f9243", +"b46f\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1000000000\n}, \n{\n \"ETH_account", +"\" : \"0x7f290bf0a57b475bb2ef3f62b8ac0388d", +"2750590\",\n \"name\" : \"0x7f290bf0a57b47", +"5bb2\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 30266700000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x4d3391e2c44f486021ef79dadd25368e", +"bb16e649\",\n \"name\" : \"0x4d3391e2c44f4", +"86021\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 630000000\n}, \n{\n \"ETH_account", +"\" : \"0x3115cd6e55de15a7b430f3d84bf37afeb", +"83a7403\",\n \"name\" : \"sbeck\",\n \"pub", +"licKey\" : \"SPH687d5W7SX2A1zdAMCck5sYJx8d", +"5AkE5Twu2ypYkwj29h9JBQ7i\",\n \"balance\"", +" : 20685883100\n}, \n{\n \"ETH_account\" :", +" \"0xdf3e563959bf151e77dee2202987cecfde77", +"b022\",\n \"name\" : \"0xdf3e563959bf151e7", +"7\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 3914\n}, \n{\n \"ETH_account\" : \"0xce", +"3bc53c4ed1a5779d1a5ba50bd84a03e23f9754\",", +"\n \"name\" : \"0xce3bc53c4ed1a5779d\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 28", +"68000000\n}, \n{\n \"ETH_account\" : \"0x63", +"acc8337a08f64c666f48cb3dbf29b59f9b9fa3\",", +"\n \"name\" : \"0x63acc8337a08f64c66\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 92", +"6000000\n}, \n{\n \"ETH_account\" : \"0xca0", +"33b27a5e3913d7b633695facf07007b7ce794\",\n", +" \"name\" : \"0xca033b27a5e3913d7b\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 255", +"000000\n}, \n{\n \"ETH_account\" : \"0x21f2", +"2ac65ebcb119b0ea3fcf90c390e4e4f1d822\",\n ", +" \"name\" : \"0x21f22ac65ebcb119b0\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2072", +"748000\n}, \n{\n \"ETH_account\" : \"0xb14e", +"68a4189b35d7f7ebe09cbd3232b63868243c\",\n ", +" \"name\" : \"0xb14e68a4189b35d7f7\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2990", +"00000\n}, \n{\n \"ETH_account\" : \"0x4087b", +"7d5c15cd50e4c75c4633bc42d55e9fe9e48\",\n ", +" \"name\" : \"0x4087b7d5c15cd50e4c\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 67100", +"0000\n}, \n{\n \"ETH_account\" : \"0x44fbfc", +"73cf72305c8918da40e921dddbeadcbebd\",\n ", +" \"name\" : \"0x44fbfc73cf72305c89\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 112794", +"800\n}, \n{\n \"ETH_account\" : \"0x1c6ee5d", +"010f95ed3ab076b368401739dfadcbe5b\",\n ", +"\"name\" : \"0x1c6ee5d010f95ed3ab\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2840000", +"00\n}, \n{\n \"ETH_account\" : \"0x356ed968", +"dfbadbd1d3a88f2489396b40d7a7c4ab\",\n \"", +"name\" : \"0x356ed968dfbadbd1d3\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 21500000", +"00\n}, \n{\n \"ETH_account\" : \"0x6d548e09", +"e8da2a7ab1d8124fa2366735a930371d\",\n \"", +"name\" : \"0x6d548e09e8da2a7ab1\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10962000", +"0\n}, \n{\n \"ETH_account\" : \"0x8fe4ca793", +"4ea26c72baca3a05bfcbc72e2be60aa\",\n \"n", +"ame\" : \"0x8fe4ca7934ea26c72b\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 723220600", +"\n}, \n{\n \"ETH_account\" : \"0x85fdc98008", +"ec4047df3b1653fccb5176c3ba127d\",\n \"na", +"me\" : \"0x85fdc98008ec4047df\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 673900000\n", +"}, \n{\n \"ETH_account\" : \"0x41a918fa8dc", +"3e5a3478e058cb227761ccf9cd8ca\",\n \"nam", +"e\" : \"0x41a918fa8dc3e5a347\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 4294000000\n", +"}, \n{\n \"ETH_account\" : \"0x31c53c91458", +"40cc9f574ec3ca07441a14db6b9e5\",\n \"nam", +"e\" : \"0x31c53c9145840cc9f5\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 400000000\n}", +", \n{\n \"ETH_account\" : \"0xd1973aed7bd8", +"1405bd031085f4601cbe0a2732a5\",\n \"name", +"\" : \"0xd1973aed7bd81405bd\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 627886675\n},", +" \n{\n \"ETH_account\" : \"0x2beb7cbe34e71", +"14dc51ec58f515d14a7b376e7ee\",\n \"name\"", +" : \"0x2beb7cbe34e7114dc5\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 40000000\n}, \n", +"{\n \"ETH_account\" : \"0x31c841217dc9dd7", +"469a9c9fad03dbdb6a0f98113\",\n \"name\" :", +" \"emilweck\",\n \"publicKey\" : \"SPH5GpPp", +"9ammbwtNTLY4UgTUQFLxBiVoQVNhXLicyqTKwxSA", +"koWgr\",\n \"balance\" : 8257440400\n}, \n{", +"\n \"ETH_account\" : \"0xfd3d766eac489b27", +"a9f566496e1fb5207ad35e0d\",\n \"name\" : ", +"\"0xfd3d766eac489b27a9\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1820000000\n}, \n{", +"\n \"ETH_account\" : \"0x96e08557f2ba1ccd", +"3ee10e44f9b6fcadbd0cc591\",\n \"name\" : ", +"\"0x96e08557f2ba1ccd3e\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 290330500\n}, \n{\n", +" \"ETH_account\" : \"0xa8b6bbfa7f2526492", +"4ef1f42837b3bdb9fc8f7c4\",\n \"name\" : \"", +"0xa8b6bbfa7f25264924\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 4657580301\n}, \n{\n", +" \"ETH_account\" : \"0x2d08f20a86a4c2f68", +"502e22f20ce22151f9dd888\",\n \"name\" : \"", +"0x2d08f20a86a4c2f685\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 112360000\n}, \n{\n ", +" \"ETH_account\" : \"0x2ea1de5c08cde14c07", +"5d3b59ef12daff176765c9\",\n \"name\" : \"0", +"x2ea1de5c08cde14c07\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 5332125811\n}, \n{\n ", +" \"ETH_account\" : \"0x1e7e085fd99a13eb15", +"7087d6c08eb1f1474895c6\",\n \"name\" : \"0", +"x1e7e085fd99a13eb15\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 3976796\n}, \n{\n ", +"\"ETH_account\" : \"0x4e18c0771f5244ecce1b6", +"72acc1ad8bb2fe16714\",\n \"name\" : \"0x4e", +"18c0771f5244ecce\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 195161700\n}, \n{\n \"", +"ETH_account\" : \"0x140e7c141314985383dee6", +"69d13eb5dbf1d59ccf\",\n \"name\" : \"0x140", +"e7c141314985383\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 584106373\n}, \n{\n \"E", +"TH_account\" : \"0xd47c41a290415b85e2c8508", +"12481e2bd7cd24abc\",\n \"name\" : \"0xd47c", +"41a290415b85e2\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 401000000\n}, \n{\n \"ET", +"H_account\" : \"0x975ae398bc4479f4dec92f2f", +"e2670eba29089b92\",\n \"name\" : \"0x975ae", +"398bc4479f4de\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 6268747400\n}, \n{\n \"ET", +"H_account\" : \"0xaa7f7b9853bf372621538e7f", +"c07f840dfb356c75\",\n \"name\" : \"0xaa7f7", +"b9853bf372621\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1193000000\n}, \n{\n \"ET", +"H_account\" : \"0x92097a7d9782981bce907a69", +"3595324506caa183\",\n \"name\" : \"0x92097", +"a7d9782981bce\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 200000000\n}, \n{\n \"ETH", +"_account\" : \"0x8d33d3f0079176d93b34bb988", +"31c7112e4d6c71f\",\n \"name\" : \"0x8d33d3", +"f0079176d93b\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 7279446945\n}, \n{\n \"ETH", +"_account\" : \"0x5bd5806ed62292328f2a1a8d5", +"6860873880aaee7\",\n \"name\" : \"0x5bd580", +"6ed62292328f\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 715000000\n}, \n{\n \"ETH_", +"account\" : \"0x6751f58ab4aa375d1a5986dd99", +"1ad701dd552451\",\n \"name\" : \"0x6751f58", +"ab4aa375d1a\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 387000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x22091ee7af9d1f2de0410f8c43c", +"4cde0437561de\",\n \"name\" : \"0x22091ee7", +"af9d1f2de0\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1000000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xf327cfd2f7cb40d2d7fb7bad1ea", +"261723f20036a\",\n \"name\" : \"meinesophi", +"atx\",\n \"publicKey\" : \"SPH7WmQjRh5DXm2", +"JnETXYGoXpmBpxAhao6ZpQNjmKXUDfkgVkNE7R\",", +"\n \"balance\" : 7148000000\n}, \n{\n \"E", +"TH_account\" : \"0xd438eb015a42bc0b7904467", +"250607c51853a90c2\",\n \"name\" : \"0xd438", +"eb015a42bc0b79\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 520000000\n}, \n{\n \"ET", +"H_account\" : \"0xa9921fa2ab8411d8b67f74c3", +"ccfbaa8472da5eb5\",\n \"name\" : \"0xa9921", +"fa2ab8411d8b6\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 357000000\n}, \n{\n \"ETH", +"_account\" : \"0x5a33a4c94b4c911c051aea82d", +"510ea76b0440111\",\n \"name\" : \"0x5a33a4", +"c94b4c911c05\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 371760\n}, \n{\n \"ETH_acc", +"ount\" : \"0xe309972e39ad80be99ec13b199861", +"4240c936b29\",\n \"name\" : \"0xe309972e39", +"ad80be99\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 311000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x7767d3c9c8ed03b0e37d4e655ddf1a", +"10124aa9cd\",\n \"name\" : \"0x7767d3c9c8e", +"d03b0e3\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 502977900\n}, \n{\n \"ETH_accou", +"nt\" : \"0x52d4b8cd735e902c20ed08d1f9c5ea1", +"f2ccf9afe\",\n \"name\" : \"0x52d4b8cd735e", +"902c20\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 77619\n}, \n{\n \"ETH_account\" :", +" \"0xb904e16c082c66146cce1e55d4145bd5551a", +"62cf\",\n \"name\" : \"0xb904e16c082c66146", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 350000000\n}, \n{\n \"ETH_account\" : ", +"\"0x239ed9e877cbac3e4df6be070ffd9e340578f", +"bbc\",\n \"name\" : \"vani\",\n \"publicKe", +"y\" : \"SPH6y7qKMfLoDy8tyzKM1cvcBVvjDYyjfV", +"kEGAEPG7nLusFyo8LSc\",\n \"balance\" : 51", +"68000000\n}, \n{\n \"ETH_account\" : \"0xac", +"5328859ab9e02d1a2048f9aa291114a09248eb\",", +"\n \"name\" : \"0xac5328859ab9e02d1a\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 50", +"000000\n}, \n{\n \"ETH_account\" : \"0x430e", +"ad3a4c159c5ae7bfc9c94acc75b6be099e7f\",\n ", +" \"name\" : \"0x430ead3a4c159c5ae7\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3594", +"56104\n}, \n{\n \"ETH_account\" : \"0xfe94c", +"5a2835ffc088e301649ecec8ff80e710961\",\n ", +" \"name\" : \"0xfe94c5a2835ffc088e\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 65000", +"0000\n}, \n{\n \"ETH_account\" : \"0x33296e", +"92702a737a7a99804969c6028836e20bb5\",\n ", +" \"name\" : \"0x33296e92702a737a7a\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 580000", +"000\n}, \n{\n \"ETH_account\" : \"0x61167ec", +"ebdf7a70771d17b16449ad1fd612aa792\",\n ", +"\"name\" : \"0x61167ecebdf7a70771\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2000000", +"0\n}, \n{\n \"ETH_account\" : \"0x87da7b034", +"2eb56c25b0c09656ba649ece55a56b8\",\n \"n", +"ame\" : \"timovandoorn\",\n \"publicKey\" :", +" \"SPH7kwWdZk33oULHACXwgxDBybEhrjrJpn4fRh", +"GK3wShBciouMHRv\",\n \"balance\" : 318993", +"35000\n}, \n{\n \"ETH_account\" : \"0x31345", +"7b601aae833a359e2a869ca63c5f3c9a9fe\",\n ", +" \"name\" : \"0x313457b601aae833a3\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 55483", +"000000\n}, \n{\n \"ETH_account\" : \"0x3d3b", +"1c038456c275c57e9ad602929fd2c78aad86\",\n ", +" \"name\" : \"0x3d3b1c038456c275c5\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1980", +"00000\n}, \n{\n \"ETH_account\" : \"0xd3b5e", +"d149897222275394f5207c092fd9008c8b8\",\n ", +" \"name\" : \"0xd3b5ed149897222275\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 19239", +"96676\n}, \n{\n \"ETH_account\" : \"0x38038", +"ef2943ebe3ca83c678f3a6b77303bbea599\",\n ", +" \"name\" : \"0x38038ef2943ebe3ca8\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 18250", +"70000\n}, \n{\n \"ETH_account\" : \"0xf8709", +"7a51c3977d549b393c43ee15e6792232ea2\",\n ", +" \"name\" : \"0xf87097a51c3977d549\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 12480", +"27088\n}, \n{\n \"ETH_account\" : \"0x533a4", +"af2efea784a8a55781f86879acbf080b82a\",\n ", +" \"name\" : \"0x533a4af2efea784a8a\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 13894", +"70627\n}, \n{\n \"ETH_account\" : \"0xb850b", +"f638d00a4e7de1b4db8a50457819610924d\",\n ", +" \"name\" : \"0xb850bf638d00a4e7de\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 22486", +"16663\n}, \n{\n \"ETH_account\" : \"0xb2eb9", +"0ceba2619e916c24cf9c20038cb5af80585\",\n ", +" \"name\" : \"0xb2eb90ceba2619e916\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 21415", +"15366\n}, \n{\n \"ETH_account\" : \"0x62437", +"9163676e2ea3007f59ce4512049d0baf2c8\",\n ", +" \"name\" : \"0x624379163676e2ea30\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 89057", +"5588\n}, \n{\n \"ETH_account\" : \"0xf4a9ac", +"084c78a91e2206b91dce1d1ee0b86881ef\",\n ", +" \"name\" : \"0xf4a9ac084c78a91e22\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 200057", +"13483\n}, \n{\n \"ETH_account\" : \"0x325d5", +"a5dbfda56996b2e2405df54322a0dfaba20\",\n ", +" \"name\" : \"0x325d5a5dbfda56996b\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 22740", +"92000\n}, \n{\n \"ETH_account\" : \"0x28b17", +"b1aae73688c874120c5ec8c28e78cedf191\",\n ", +" \"name\" : \"0x28b17b1aae73688c87\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 17014", +"26300\n}, \n{\n \"ETH_account\" : \"0x8e785", +"dc513fb2799eab5213e968682bd45cd1801\",\n ", +" \"name\" : \"0x8e785dc513fb2799ea\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 39711", +"0100\n}, \n{\n \"ETH_account\" : \"0xe7f2a8", +"705080edfe8552cd47b50b2ef691280120\",\n ", +" \"name\" : \"0xe7f2a8705080edfe85\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 153956", +"1400\n}, \n{\n \"ETH_account\" : \"0x844577", +"d34ebc2025d20bb3b57a75ebb3eb2f13fd\",\n ", +" \"name\" : \"0x844577d34ebc2025d2\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 198000", +"0000\n}, \n{\n \"ETH_account\" : \"0x95096c", +"b969b1e8a70d7622c96773016740101228\",\n ", +" \"name\" : \"0x95096cb969b1e8a70d\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 562000", +"00\n}, \n{\n \"ETH_account\" : \"0xc714783d", +"7b69a1e14153787f840715ec2d65aa95\",\n \"", +"name\" : \"0xc714783d7b69a1e141\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 44900000", +"0\n}, \n{\n \"ETH_account\" : \"0xffef7cedd", +"cb71f4c57a3d9e0bbfb81b7484ba6ac\",\n \"n", +"ame\" : \"0xffef7ceddcb71f4c57\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 140000000", +"\n}, \n{\n \"ETH_account\" : \"0xf6030da598", +"0cc6f71f67994fa213c06a7ae9726a\",\n \"na", +"me\" : \"stephenmac\",\n \"publicKey\" : \"S", +"PH6azb9Jpzs6vzQFdPXaDDVsm981psdcBw6DEemD", +"6VXNo3Bd2XaH\",\n \"balance\" : 337000000", +"0\n}, \n{\n \"ETH_account\" : \"0x1fc15176e", +"21138294152e46939f43e1e62d36e09\",\n \"n", +"ame\" : \"0x1fc15176e211382941\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 503000000", +"0\n}, \n{\n \"ETH_account\" : \"0x597c4481f", +"4a7f10b6e0fd502488d40f386e68adc\",\n \"n", +"ame\" : \"0x597c4481f4a7f10b6e\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 98766983\n", +"}, \n{\n \"ETH_account\" : \"0xe3e194e171b", +"f8ccf91b1e0adc09540a3d9f5974f\",\n \"nam", +"e\" : \"0xe3e194e171bf8ccf91\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 992\n}, \n{\n ", +" \"ETH_account\" : \"0x78a96895e783d944b3", +"5a7c01b978abe6cc98a52b\",\n \"name\" : \"0", +"x78a96895e783d944b3\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 176878000\n}, \n{\n ", +" \"ETH_account\" : \"0xe877f1ac4d5f7a12057", +"1297c514ce2db07880542\",\n \"name\" : \"0x", +"e877f1ac4d5f7a1205\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 850000000\n}, \n{\n ", +" \"ETH_account\" : \"0x696ef8bdc27a8a316716", +"035066855f3abcd92b18\",\n \"name\" : \"0x6", +"96ef8bdc27a8a3167\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 440310765\n}, \n{\n ", +"\"ETH_account\" : \"0x82c1f4cd3f655ca6b6fdd", +"a9d7afffc011852520d\",\n \"name\" : \"0x82", +"c1f4cd3f655ca6b6\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1285482900\n}, \n{\n ", +"\"ETH_account\" : \"0x33b74dd17a3a8a6a18203", +"ca84ef1f2afe6edbc50\",\n \"name\" : \"0x33", +"b74dd17a3a8a6a18\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 3000000000\n}, \n{\n ", +"\"ETH_account\" : \"0xf1368d0ce3f84d0993cfb", +"6d3c8b71760daf6cd13\",\n \"name\" : \"0xf1", +"368d0ce3f84d0993\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 836289536\n}, \n{\n \"", +"ETH_account\" : \"0x23355d7488d7ab39873079", +"e72fa1505c6a24fc8e\",\n \"name\" : \"0x233", +"55d7488d7ab3987\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 11999000000\n}, \n{\n ", +"\"ETH_account\" : \"0x245adad064cd3f8ffd1cf", +"bccda5b684b1c787b86\",\n \"name\" : \"0x24", +"5adad064cd3f8ffd\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 3220000000\n}, \n{\n ", +"\"ETH_account\" : \"0x4f3aca77452acd86b235f", +"6bf68f37ebaf18de978\",\n \"name\" : \"mcsp", +"htx\",\n \"publicKey\" : \"SPH8DzL82xusk3k", +"WJpoA8N5A7EJJHCLBjnDD7ZrfYYrNNhAn7dxZC\",", +"\n \"balance\" : 1550569530\n}, \n{\n \"E", +"TH_account\" : \"0x405d900b6a7762d727d609c", +"45143961a3a786893\",\n \"name\" : \"0x405d", +"900b6a7762d727\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 124175142\n}, \n{\n \"ET", +"H_account\" : \"0xa14cb6e5811ef7ff10e58543", +"3f3d365765185cb5\",\n \"name\" : \"christo", +"ph\",\n \"publicKey\" : \"SPH5kJvYSKAUNF1V", +"8pgNfdfBfEGTFrayUgRhmrSTZNCa9YpJkLSKh\",\n", +" \"balance\" : 2917908393\n}, \n{\n \"ET", +"H_account\" : \"0x42405277c77da105e5689144", +"7509c631b7bf07ae\",\n \"name\" : \"0x42405", +"277c77da105e5\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1504987469\n}, \n{\n \"ET", +"H_account\" : \"0xf50d0a5425982bfa981687a8", +"a0e7fa0ce6980172\",\n \"name\" : \"0xf50d0", +"a5425982bfa98\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 11081370000\n}, \n{\n \"E", +"TH_account\" : \"0xbb8bdfac2a61b55243a3316", +"8cc04362304c5d312\",\n \"name\" : \"0xbb8b", +"dfac2a61b55243\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 300000000\n}, \n{\n \"ET", +"H_account\" : \"0x3cd2bddbbb24d1ddfa74ee38", +"e0ca422f24b48f2d\",\n \"name\" : \"0x3cd2b", +"ddbbb24d1ddfa\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 868000000\n}, \n{\n \"ETH", +"_account\" : \"0x6efc482d32736bd6f414530e4", +"1cf9048e052fdc6\",\n \"name\" : \"0x6efc48", +"2d32736bd6f4\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1097000000\n}, \n{\n \"ETH", +"_account\" : \"0x4b474047fcdaa23c3e329d440", +"7f72d32292bdfcc\",\n \"name\" : \"0x4b4740", +"47fcdaa23c3e\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1032434621\n}, \n{\n \"ETH", +"_account\" : \"0xa4421b439152bf0ff532edf7b", +"387c1bcdc4fa964\",\n \"name\" : \"0xa4421b", +"439152bf0ff5\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 90000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x63d77a39ad70fb3e530c341480b", +"35ba510eecb4d\",\n \"name\" : \"0x63d77a39", +"ad70fb3e53\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 106161982\n}, \n{\n \"ETH_ac", +"count\" : \"0x396ea8683083f6d6b4d201d8c7ca", +"c9c92bc305d8\",\n \"name\" : \"0x396ea8683", +"083f6d6b4\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 452287648\n}, \n{\n \"ETH_acc", +"ount\" : \"0xd881843af114407cbe84a07750e23", +"516308f4192\",\n \"name\" : \"pepcosophiat", +"x\",\n \"publicKey\" : \"SPH7mpjamHc948AgW", +"euZBXSYJKmveKyJyejttt46Ucyvx5fRCBUcJ\",\n ", +" \"balance\" : 1632606648\n}, \n{\n \"ETH", +"_account\" : \"0x5839b4822c7830fea98f1eac0", +"a81800b4816bb39\",\n \"name\" : \"0x5839b4", +"822c7830fea9\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 660577930\n}, \n{\n \"ETH_", +"account\" : \"0xeffccd436ebfa1af4b5a97f093", +"b0214fda10e85c\",\n \"name\" : \"randomtas", +"k\",\n \"publicKey\" : \"SPH7nujgNDJRvCVqC", +"78qyGyh6iE54WHaPCAPNZt3tScH2C7pkjysR\",\n ", +" \"balance\" : 4911385658\n}, \n{\n \"ETH", +"_account\" : \"0xfda09128272763a5446946fa0", +"0bcce43bd73c734\",\n \"name\" : \"0xfda091", +"28272763a544\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3223560995\n}, \n{\n \"ETH", +"_account\" : \"0x96b5674983d9e7f9222c63794", +"540a5a46f08c495\",\n \"name\" : \"0x96b567", +"4983d9e7f922\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 6209318000\n}, \n{\n \"ETH", +"_account\" : \"0x3fb6ac1d125f27e4b9bedb77e", +"52b0aacc8771f11\",\n \"name\" : \"0x3fb6ac", +"1d125f27e4b9\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2002000000\n}, \n{\n \"ETH", +"_account\" : \"0x3bb71f9396e9e15e5f514db67", +"c65d5d5324c0124\",\n \"name\" : \"0x3bb71f", +"9396e9e15e5f\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 271\n}, \n{\n \"ETH_accoun", +"t\" : \"0x9599179d22e9803e86648b4069abb6d4", +"02a4359b\",\n \"name\" : \"0x9599179d22e98", +"03e86\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1039600000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x75ed3c46ab844299c3cbaa30ec975cca", +"5773317a\",\n \"name\" : \"0x75ed3c46ab844", +"299c3\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 690938\n}, \n{\n \"ETH_account\" :", +" \"0x93b2dfa34c7cef04de05653501b9be96e969", +"59f7\",\n \"name\" : \"0x93b2dfa34c7cef04d", +"e\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 7099000000\n}, \n{\n \"ETH_account\" :", +" \"0x14b8e7d7ffe328e838e5d89ac2a0184e6159", +"b6e1\",\n \"name\" : \"0x14b8e7d7ffe328e83", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1850000000\n}, \n{\n \"ETH_account\" :", +" \"0x9ec1273352a587b7a54a3a350661c31c4477", +"667c\",\n \"name\" : \"0x9ec1273352a587b7a", +"5\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 411370000\n}, \n{\n \"ETH_account\" : ", +"\"0x12053caa6eefd621647213f23f77e5d2a89b7", +"5b5\",\n \"name\" : \"0x12053caa6eefd62164", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 564000000\n}, \n{\n \"ETH_account\" : \"", +"0x85739f9abde1fbc751ddbbc6358b458e8ce129", +"69\",\n \"name\" : \"0x85739f9abde1fbc751\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 3985501\n}, \n{\n \"ETH_account\" : \"0xa", +"a4004480ff45e315eb5e2a2b36bc76e8a1a3f8f\"", +",\n \"name\" : \"0xaa4004480ff45e315e\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"043000000\n}, \n{\n \"ETH_account\" : \"0x7", +"029a790e3ab70a77aa161efc8f9f404191c61ea\"", +",\n \"name\" : \"0x7029a790e3ab70a77a\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"921178000\n}, \n{\n \"ETH_account\" : \"0xa", +"2479a6042d536202d2512088e22f51df9dd6979\"", +",\n \"name\" : \"0xa2479a6042d536202d\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 8", +"00000000\n}, \n{\n \"ETH_account\" : \"0x6b", +"5e3557d0e06815cb2fdcc62888df896d2ef2f1\",", +"\n \"name\" : \"0x6b5e3557d0e06815cb\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 12", +"0000000\n}, \n{\n \"ETH_account\" : \"0x6b8", +"3f4486bd5a3e8bfff2f6fbe7c16d4a172c1db\",\n", +" \"name\" : \"0x6b83f4486bd5a3e8bf\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 291", +"58791000\n}, \n{\n \"ETH_account\" : \"0xf3", +"df4e390deefaeccda8d3eed85dea2160d87a3a\",", +"\n \"name\" : \"0xf3df4e390deefaeccd\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 30", +"00000000\n}, \n{\n \"ETH_account\" : \"0x4d", +"b0638ca96d8d3f7010798c990f76f80d9d6ce9\",", +"\n \"name\" : \"0x4db0638ca96d8d3f70\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 40", +"000000000\n}, \n{\n \"ETH_account\" : \"0x2", +"c9bc15a473e644cedc28b04ce79a7d7a39b0633\"", +",\n \"name\" : \"0x2c9bc15a473e644ced\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"9098763832\n}, \n{\n \"ETH_account\" : \"0x", +"32408178a9e86ed9aa766d33a637ebf14fd4f081", +"\",\n \"name\" : \"0x32408178a9e86ed9aa\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"653669300\n}, \n{\n \"ETH_account\" : \"0xe", +"947a255f63682e1007619745f6c58d2361fb48b\"", +",\n \"name\" : \"farodog\",\n \"publicKey", +"\" : \"SPH81RVMa8RKoh9jEQDUJGeuMoQ8ursFRwA", +"KHpdfrv3qmMfAzFZTd\",\n \"balance\" : 365", +"05000000\n}, \n{\n \"ETH_account\" : \"0x4d", +"165d162308776c913536998d42cac60a182c0e\",", +"\n \"name\" : \"friedriche\",\n \"publicK", +"ey\" : \"SPH6FDdzjVAZkV1cZ2mfaB4T8V8Wx2DXj", +"eV1BWxFLPYjGRVuyLh2z\",\n \"balance\" : 1", +"085000000\n}, \n{\n \"ETH_account\" : \"0x3", +"f36b64aa7333e053c6aa6ba9f82f462ea720525\"", +",\n \"name\" : \"0x3f36b64aa7333e053c\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"88000000\n}, \n{\n \"ETH_account\" : \"0x92", +"9b9cfb4dda4cefc41af061739b9c36354b55d3\",", +"\n \"name\" : \"imperium\",\n \"publicKey", +"\" : \"SPH7QqhfRDzAshSPThzC1QgGhYSAr1bWm4B", +"kLZMXqeWWFALwYuRYq\",\n \"balance\" : 524", +"6890400\n}, \n{\n \"ETH_account\" : \"0xf0b", +"f6fac7747836ab9318cc6cba9f64125f334e4\",\n", +" \"name\" : \"0xf0bf6fac7747836ab9\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 173", +"0000000\n}, \n{\n \"ETH_account\" : \"0xe75", +"5bbcf434593e2b8e2b84ad06b5158db042ff4\",\n", +" \"name\" : \"0xe755bbcf434593e2b8\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 290", +"5000000\n}, \n{\n \"ETH_account\" : \"0xa2c", +"bba0404645dcbbc68b75ab2462963557c0f8f\",\n", +" \"name\" : \"0xa2cbba0404645dcbbc\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 297", +"0000000\n}, \n{\n \"ETH_account\" : \"0x9e2", +"eaee5a4d93ae5cb4216a04a2bf55b9128dc98\",\n", +" \"name\" : \"0x9e2eaee5a4d93ae5cb\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 200", +"00000\n}, \n{\n \"ETH_account\" : \"0x17bbc", +"82f00d3c2e8f6bebac3f2378d5682f1dfa2\",\n ", +" \"name\" : \"0x17bbc82f00d3c2e8f6\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 21040", +"000000\n}, \n{\n \"ETH_account\" : \"0x6e2b", +"549ffecc31f62bcf1fdfa346f817e582fee0\",\n ", +" \"name\" : \"bredf\",\n \"publicKey\" : \"", +"SPH6AaDfxJ6EgcGA4xw9yb6oTx3T4pArQJqnmtJc", +"WMPSUVSBtzbkD\",\n \"balance\" : 50500000", +"0\n}, \n{\n \"ETH_account\" : \"0xc0c2f741e", +"3d0b4b9a6c7baab2b94e5e392ee780e\",\n \"n", +"ame\" : \"0xc0c2f741e3d0b4b9a6\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 108690000", +"\n}, \n{\n \"ETH_account\" : \"0x42259cd3c8", +"912b81ee0bc0c723a591e3c4487aad\",\n \"na", +"me\" : \"0x42259cd3c8912b81ee\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 20000000\n}", +", \n{\n \"ETH_account\" : \"0x9c6ef12391cf", +"78109658c574057424e1801c0089\",\n \"name", +"\" : \"0x9c6ef12391cf781096\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 3600000000\n}", +", \n{\n \"ETH_account\" : \"0x07e33b9d1398", +"6cd39b208ff08437f7f409e5ea00\",\n \"name", +"\" : \"0x07e33b9d13986cd39b\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 2295000000\n}", +", \n{\n \"ETH_account\" : \"0x368eec5ab9e2", +"58883551c2a48dc10f2710f8b5b5\",\n \"name", +"\" : \"0x368eec5ab9e2588835\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1779590000\n}", +", \n{\n \"ETH_account\" : \"0xb7e6bafb9862", +"6df7dd9f1f4c7ae90a7f1f17f7a5\",\n \"name", +"\" : \"0xb7e6bafb98626df7dd\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 17543478000\n", +"}, \n{\n \"ETH_account\" : \"0x9144fc58f95", +"2f8bc4ffb2db003c1e49b414c6805\",\n \"nam", +"e\" : \"0x9144fc58f952f8bc4f\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 114941428\n}", +", \n{\n \"ETH_account\" : \"0xafad594460ff", +"60fb4dff822b1ae66e1f435b8335\",\n \"name", +"\" : \"0xafad594460ff60fb4d\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 807546894\n},", +" \n{\n \"ETH_account\" : \"0x26d19a15206d2", +"e6a75aa196e5dd7c406ebeda1af\",\n \"name\"", +" : \"0x26d19a15206d2e6a75\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 153191400\n}, ", +"\n{\n \"ETH_account\" : \"0xb3022476ca1727", +"2d8aeb07937ee823ab654f9f63\",\n \"name\" ", +": \"0xb3022476ca17272d8a\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 10600000000\n},", +" \n{\n \"ETH_account\" : \"0x4ebe684c09241", +"5743efd4010ae4c02204dc288fa\",\n \"name\"", +" : \"0x4ebe684c092415743e\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 221182339\n}, ", +"\n{\n \"ETH_account\" : \"0x66383a9871472d", +"f395f6b25a6adf0a611b15b597\",\n \"name\" ", +": \"sachiwinscheeses\",\n \"publicKey\" : ", +"\"SPH5eGj9bugC8eg9YugFxYu5f7LuPDuYfV5n5WS", +"2wPh7bZ3eGMG8X\",\n \"balance\" : 5473000", +"000\n}, \n{\n \"ETH_account\" : \"0x97f369c", +"3b77aa341ffe285c18c7899d15748ac33\",\n ", +"\"name\" : \"0x97f369c3b77aa341ff\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4500000", +"0\n}, \n{\n \"ETH_account\" : \"0x63c919889", +"6a9d62446d9513151473e55887ed2c1\",\n \"n", +"ame\" : \"0x63c9198896a9d62446\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 999900000", +"0\n}, \n{\n \"ETH_account\" : \"0xa634866e0", +"481d908e4fab7e9a88607975a8bfd20\",\n \"n", +"ame\" : \"0xa634866e0481d908e4\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 100000000", +"00\n}, \n{\n \"ETH_account\" : \"0x21e5b8af", +"5e7b9a4e55eabfb968e3f94518b55677\",\n \"", +"name\" : \"0x21e5b8af5e7b9a4e55\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 53137000", +"0\n}, \n{\n \"ETH_account\" : \"0xd7ac5d1d0", +"5f5d62924e7b0fd07703b4c8de13352\",\n \"n", +"ame\" : \"0xd7ac5d1d05f5d62924\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 183370000", +"\n}, \n{\n \"ETH_account\" : \"0x3218e6cea8", +"f1a0066878400488c25618ac5292e5\",\n \"na", +"me\" : \"0x3218e6cea8f1a00668\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 134018973\n", +"}, \n{\n \"ETH_account\" : \"0x8da78f268ec", +"ed8e70324fb28955272738163cc05\",\n \"nam", +"e\" : \"0x8da78f268eced8e703\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1761370000\n", +"}, \n{\n \"ETH_account\" : \"0x4dd3b5d8302", +"576befc5a2ecf79fc691680d43f5e\",\n \"nam", +"e\" : \"0x4dd3b5d8302576befc\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1279295500\n", +"}, \n{\n \"ETH_account\" : \"0xdff8823eaac", +"3063e22fbf033ec9905136073040d\",\n \"nam", +"e\" : \"0xdff8823eaac3063e22\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1200000000\n", +"}, \n{\n \"ETH_account\" : \"0xb83179d95ca", +"c0a23e2a2614f30cb0d61be6df7c8\",\n \"nam", +"e\" : \"0xb83179d95cac0a23e2\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 77326\n}, \n{", +"\n \"ETH_account\" : \"0xd9df21a736457902", +"1d3234d065a596a998e51c13\",\n \"name\" : ", +"\"0xd9df21a7364579021d\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 488664379\n}, \n{\n", +" \"ETH_account\" : \"0x10cc4df74f7dd84bc", +"2ce3590fe5029ea55668e9a\",\n \"name\" : \"", +"0x10cc4df74f7dd84bc2\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 29700000000\n}, \n{", +"\n \"ETH_account\" : \"0x0e21d7ae71c9c44b", +"937dd5419309f40fb5ea5835\",\n \"name\" : ", +"\"0x0e21d7ae71c9c44b93\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 350926514\n}, \n{\n", +" \"ETH_account\" : \"0xe424291df4e6e0218", +"2f60a17b3ef8607758ab9f9\",\n \"name\" : \"", +"0xe424291df4e6e02182\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 810185757\n}, \n{\n ", +" \"ETH_account\" : \"0x9d2a51970ba318ef70", +"ba4aff8274b9de9bb6163f\",\n \"name\" : \"0", +"x9d2a51970ba318ef70\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 119870129\n}, \n{\n ", +" \"ETH_account\" : \"0xd87abd57b41ddc4f1d3", +"4e2d4d03de7921c725531\",\n \"name\" : \"sa", +"toru\",\n \"publicKey\" : \"SPH819FPAbfqL4", +"e9xJeKjKp4KGzzUKiBM1ENPo5h2wRozWUa9hhmx\"", +",\n \"balance\" : 1594594500\n}, \n{\n \"", +"ETH_account\" : \"0x07d36141cfa5f918b5eff3", +"b279cc1692034ca4fa\",\n \"name\" : \"0x07d", +"36141cfa5f918b5\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 7100000000\n}, \n{\n \"", +"ETH_account\" : \"0xb821f6edde080d978ae98a", +"4e92f12629bb8482b0\",\n \"name\" : \"0xb82", +"1f6edde080d978a\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 311871177\n}, \n{\n \"E", +"TH_account\" : \"0xdbfdc994f3ab76499a2fe1f", +"a565d9ff2be33b579\",\n \"name\" : \"0xdbfd", +"c994f3ab76499a\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 470503057\n}, \n{\n \"ET", +"H_account\" : \"0xc7d12045d9621662da4b8b7d", +"0182b62715351b70\",\n \"name\" : \"0xc7d12", +"045d9621662da\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1044015073\n}, \n{\n \"ET", +"H_account\" : \"0x9597f4f8dbd57796f28f2165", +"79898cc2c76a6cfd\",\n \"name\" : \"0x9597f", +"4f8dbd57796f2\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 20001000000\n}, \n{\n \"E", +"TH_account\" : \"0x09ce0e4326b41973d281cfc", +"1dd8027ef24f4e821\",\n \"name\" : \"0x09ce", +"0e4326b41973d2\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 7512740000\n}, \n{\n \"E", +"TH_account\" : \"0x4b501303d2394940570f029", +"dd8f0dd86ef9d92c8\",\n \"name\" : \"0x4b50", +"1303d239494057\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 149263569\n}, \n{\n \"ET", +"H_account\" : \"0xc82b2d391fceedcd9197c7ce", +"3c9d24b262d72147\",\n \"name\" : \"0xc82b2", +"d391fceedcd91\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 94000000\n}, \n{\n \"ETH_", +"account\" : \"0xf4a49897f2e5164938902e9d9d", +"67f5dcfa03eed3\",\n \"name\" : \"0xf4a4989", +"7f2e5164938\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 606608194\n}, \n{\n \"ETH_a", +"ccount\" : \"0x596c95dd9220ec1a427a57df024", +"8fa857fe3a615\",\n \"name\" : \"0x596c95dd", +"9220ec1a42\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 124000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x88aa29e3d5dddcaba415a4bf9a81", +"8963a7b756bc\",\n \"name\" : \"rexcaesar\",", +"\n \"publicKey\" : \"SPH7S6oxTBGnoioy4WyT", +"KaeN2yYZ777Eu6BBSeLcw9RBGorupcHXt\",\n ", +"\"balance\" : 3017987959\n}, \n{\n \"ETH_ac", +"count\" : \"0x0bbaa05c9cdf8b8d10cf107faf3b", +"0fecb789fd72\",\n \"name\" : \"0x0bbaa05c9", +"cdf8b8d10\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 25678000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x54c17f14596082e04ba003c7c9e7f1", +"0e6a6a532a\",\n \"name\" : \"0x54c17f14596", +"082e04b\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 16257191293\n}, \n{\n \"ETH_acc", +"ount\" : \"0xf87fea281179cc4ca2ea31d7e5002", +"53d3b50a2ca\",\n \"name\" : \"0xf87fea2811", +"79cc4ca2\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 535177\n}, \n{\n \"ETH_account", +"\" : \"0x1037c3e1f01c8510f2d070d51a1433568", +"f7b0558\",\n \"name\" : \"0x1037c3e1f01c85", +"10f2\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1531000000\n}, \n{\n \"ETH_account", +"\" : \"0xed414fcfef679cf10f8f8db539427038b", +"88abb0b\",\n \"name\" : \"0xed414fcfef679c", +"f10f\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 693353845\n}, \n{\n \"ETH_account\"", +" : \"0xdb9d87921502c4d96f3e8cfa0ead9236f9", +"8a37ca\",\n \"name\" : \"0xdb9d87921502c4d", +"96f\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 9600763486\n}, \n{\n \"ETH_account\"", +" : \"0xe3f84417a242b20bb5719bff8cdfc619e4", +"47d69f\",\n \"name\" : \"0xe3f84417a242b20", +"bb5\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1268000000\n}, \n{\n \"ETH_account\"", +" : \"0xe3593bf45a9a41b43b5360c99fe32e3042", +"e65fc7\",\n \"name\" : \"0xe3593bf45a9a41b", +"43b\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 618373000\n}, \n{\n \"ETH_account\" ", +": \"0xcfa7e537080f90c79e3d11f138ade00cf15", +"4f98a\",\n \"name\" : \"0xcfa7e537080f90c7", +"9e\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 4813259545\n}, \n{\n \"ETH_account\" ", +": \"0x5261e97f08c6abdc4b835757fb74f2c4a56", +"51fba\",\n \"name\" : \"0x5261e97f08c6abdc", +"4b\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 1000000000\n}, \n{\n \"ETH_account\" ", +": \"0x2d8927cd19e925893be7f0ce2c77496b3a0", +"cc569\",\n \"name\" : \"0x2d8927cd19e92589", +"3b\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 5104136454\n}, \n{\n \"ETH_account\" ", +": \"0xe0917c66a318a49bd485f4cc1390e8f09a0", +"e6d39\",\n \"name\" : \"brasilxyaulofish\",", +"\n \"publicKey\" : \"SPH5gRQ4zDBNyfPYUgcz", +"8zsrtFFgopppPupgfLFqMmm1YAon2jK44\",\n ", +"\"balance\" : 22207326747\n}, \n{\n \"ETH_a", +"ccount\" : \"0xdae4d2c84046e46da756fbf6648", +"81e75c55b0808\",\n \"name\" : \"mystring\",", +"\n \"publicKey\" : \"SPH7sDanjuxVYenvD3u3", +"UkJpw7RJBNwrqkMoRd5C9kZzG5KbGxfwK\",\n ", +"\"balance\" : 1783159391\n}, \n{\n \"ETH_ac", +"count\" : \"0x37830843a2eb2e636e2e6ac5503f", +"1dbbcc9e8f51\",\n \"name\" : \"0x37830843a", +"2eb2e636e\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1944033588\n}, \n{\n \"ETH_ac", +"count\" : \"0x88fa4e11009f34aa6e3763a8bcd3", +"ead6fe3d3f16\",\n \"name\" : \"0x88fa4e110", +"09f34aa6e\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xaf1edea19ea2a589fbdae1497fbac87", +"7146633aa\",\n \"name\" : \"0xaf1edea19ea2", +"a589fb\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 200000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xd6c1bc8a2ddbb461b91aa33a359e0be6", +"4dfba127\",\n \"name\" : \"0xd6c1bc8a2ddbb", +"461b9\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 235370124105\n}, \n{\n \"ETH_acco", +"unt\" : \"0x8f568f6b474c94b061f3d787f1ab0a", +"04af5ef907\",\n \"name\" : \"0x8f568f6b474", +"c94b061\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 8048000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xc2dafab0aa20dd27e5935e4ecd07d9", +"5429ba387c\",\n \"name\" : \"0xc2dafab0aa2", +"0dd27e5\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 85000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x7137d77fceb8905d18ad114611075149", +"fcab91ff\",\n \"name\" : \"0x7137d77fceb89", +"05d18\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 145000000\n}, \n{\n \"ETH_account", +"\" : \"0x4c3b76316a9c5f9787595cdf5e8430196", +"348c991\",\n \"name\" : \"0x4c3b76316a9c5f", +"9787\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1194656181\n}, \n{\n \"ETH_account", +"\" : \"0xc7357acb54d3418c1f686ba579cf5f547", +"313dc5c\",\n \"name\" : \"0xc7357acb54d341", +"8c1f\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 334025959\n}, \n{\n \"ETH_account\"", +" : \"0xd12f4c773cf407821d7b47826ddcffa7f4", +"e2e844\",\n \"name\" : \"0xd12f4c773cf4078", +"21d\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 85058699\n}, \n{\n \"ETH_account\" :", +" \"0xdbc0ca2ab3fbbf6ae60fa06727f59b54ca6d", +"c01a\",\n \"name\" : \"0xdbc0ca2ab3fbbf6ae", +"6\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 247020000\n}, \n{\n \"ETH_account\" : ", +"\"0x56236e41779074cb0f49801aa656b2344bebd", +"b94\",\n \"name\" : \"0x56236e41779074cb0f", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 9000000000\n}, \n{\n \"ETH_account\" : ", +"\"0xa941823538aef66c3f6290db19870ec282adb", +"463\",\n \"name\" : \"burdyiamasfly\",\n ", +"\"publicKey\" : \"SPH6RCTwPTGnQNLVKs18WLvoG", +"3eEAJxPKPhTKqFv6sJs8Ju4kEGJf\",\n \"bala", +"nce\" : 4234655274\n}, \n{\n \"ETH_account", +"\" : \"0x8231afc03fff8ccb9ad65574cc3388ac3", +"4a45c19\",\n \"name\" : \"0x8231afc03fff8c", +"cb9a\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 3165099785\n}, \n{\n \"ETH_account", +"\" : \"0xb569d8c06f9f45188d0c18c5d9c7bb714", +"50898c6\",\n \"name\" : \"0xb569d8c06f9f45", +"188d\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 2556755000\n}, \n{\n \"ETH_account", +"\" : \"0xb7794d8a355dada49aef591a97ce653ff", +"a478bb9\",\n \"name\" : \"0xb7794d8a355dad", +"a49a\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 125484100\n}, \n{\n \"ETH_account\"", +" : \"0x5dace65a137d83040e9f70fb328fc42855", +"76534d\",\n \"name\" : \"0x5dace65a137d830", +"40e\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1006432530\n}, \n{\n \"ETH_account\"", +" : \"0x4ecd651a50f0f0365da34e34d95a53156c", +"638446\",\n \"name\" : \"0x4ecd651a50f0f03", +"65d\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1203969707\n}, \n{\n \"ETH_account\"", +" : \"0xc01a94fb238558ea6e662b6c988a06d71b", +"f5a6bb\",\n \"name\" : \"0xc01a94fb238558e", +"a6e\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 3615710000\n}, \n{\n \"ETH_account\"", +" : \"0xb9313fdc8405550d83231bed210e8b3015", +"a88cdb\",\n \"name\" : \"pfsphtxswap\",\n ", +" \"publicKey\" : \"SPH5RXyZq6y6RNQ3Fa2eVbG4", +"EaqdDG5hDC6bmtPPNuFdQwTMGrXR2\",\n \"bal", +"ance\" : 10000000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x944925d0b9bf1b2f0f335af3c4469ee", +"1d375890e\",\n \"name\" : \"0x944925d0b9bf", +"1b2f0f\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 320000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x60edd7e15a9cd6655cb49bd3998d2ebd", +"ee8d18a8\",\n \"name\" : \"0x60edd7e15a9cd", +"6655c\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 26760000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x67c33e1fc25fae3b9d4b3ac4a361d7f", +"91d394006\",\n \"name\" : \"0x67c33e1fc25f", +"ae3b9d\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 182566438\n}, \n{\n \"ETH_accoun", +"t\" : \"0xb261939a3780fa19b89a18500235e4b6", +"f22b9c70\",\n \"name\" : \"0xb261939a3780f", +"a19b8\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 10445663383\n}, \n{\n \"ETH_accou", +"nt\" : \"0xddc60d163015cf5ca1369d557a2ca1c", +"c2de1f1e3\",\n \"name\" : \"0xddc60d163015", +"cf5ca1\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 2508928914\n}, \n{\n \"ETH_accou", +"nt\" : \"0x3163dae38cb4404fd6fd56a03fb927f", +"350f14e49\",\n \"name\" : \"marcrwt\",\n ", +"\"publicKey\" : \"SPH7uWy7pjKVMJD7QFxKNh8Na", +"iwmep6WuyCR81vP4gkY1hPRvShrg\",\n \"bala", +"nce\" : 1996684662\n}, \n{\n \"ETH_account", +"\" : \"0x4f2d595a0005cb2c451a2e964c2e7e108", +"c893b33\",\n \"name\" : \"0x4f2d595a0005cb", +"2c45\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 101000000\n}, \n{\n \"ETH_account\"", +" : \"0x000cbe96c237e072e4bf31111307ce2695", +"65c599\",\n \"name\" : \"0x000cbe96c237e07", +"2e4\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 10620000000\n}, \n{\n \"ETH_account", +"\" : \"0x7a7180316a1c0de8bf67c7507b82a8c2d", +"2eaed1f\",\n \"name\" : \"0x7a7180316a1c0d", +"e8bf\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 389600000\n}, \n{\n \"ETH_account\"", +" : \"0x29595ad56359b4d9f459409cf5f7382b97", +"348590\",\n \"name\" : \"0x29595ad56359b4d", +"9f4\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 349999800\n}, \n{\n \"ETH_account\" ", +": \"0x5f1517b0ed8f6b11500dbdac84baee468ef", +"0559c\",\n \"name\" : \"bojanzetonce\",\n ", +" \"publicKey\" : \"SPH6ZwVpoiqcL3rFus55BPHP", +"CdWQHCaPeqkyFH87iHHAF26dyLSzA\",\n \"bal", +"ance\" : 2638395643\n}, \n{\n \"ETH_accoun", +"t\" : \"0x5a1091efb00a931767f50a4339e972fe", +"848bc900\",\n \"name\" : \"0x5a1091efb00a9", +"31767\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 409000000\n}, \n{\n \"ETH_account", +"\" : \"0xa15464bef188498248bf490b1f070c679", +"8bf68eb\",\n \"name\" : \"0xa15464bef18849", +"8248\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 245091696\n}, \n{\n \"ETH_account\"", +" : \"0x82dfa63c3e00a6bcb4a02a813ce554622a", +"9d5d9c\",\n \"name\" : \"0x82dfa63c3e00a6b", +"cb4\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 14878000000\n}, \n{\n \"ETH_account", +"\" : \"0xf13443745ea8f22af1fe514cc9c7237e7", +"5f6d117\",\n \"name\" : \"0xf13443745ea8f2", +"2af1\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 5388424615\n}, \n{\n \"ETH_account", +"\" : \"0x3b40917f9df83d8edee46fad58e3c4317", +"3409e5c\",\n \"name\" : \"mouse\",\n \"pub", +"licKey\" : \"SPH4vUTSzQPsmpXE6AL5UEnUmihNT", +"cyvpcZy1B2LJXYEsn3q69GRW\",\n \"balance\"", +" : 2066000000\n}, \n{\n \"ETH_account\" : ", +"\"0xbf30f0f73e70a254ba8ce26b5019dfee0eb5d", +"e29\",\n \"name\" : \"sphtxlukas\",\n \"pu", +"blicKey\" : \"SPH5YmvSTfVGzt927RjjU7rT1WMy", +"3c3JvdY7bNVpsRrGR3dtAzmvk\",\n \"balance", +"\" : 5060000000\n}, \n{\n \"ETH_account\" :", +" \"0x523ace4e84f8aba40bb0082d6a60a5b685a2", +"10e7\",\n \"name\" : \"0x523ace4e84f8aba40", +"b\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 2600000000\n}, \n{\n \"ETH_account\" :", +" \"0xc5a5c0829de2469fb9ce19f43746c4aa88c6", +"97a4\",\n \"name\" : \"0xc5a5c0829de2469fb", +"9\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 10826000000\n}, \n{\n \"ETH_account\" ", +": \"0xea6a6fcb4526bb191f608f3439a2072330d", +"b3fa6\",\n \"name\" : \"sanchan\",\n \"pub", +"licKey\" : \"SPH6SbB5xmZcZR9b96V7mKGwmxfWo", +"UNA1em9tWiZCSzaCrzLp9E5R\",\n \"balance\"", +" : 4617570800\n}, \n{\n \"ETH_account\" : ", +"\"0xdecf4edcebf2c36ea444a13ff14a43b83bf23", +"72b\",\n \"name\" : \"0xdecf4edcebf2c36ea4", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 3772000000\n}, \n{\n \"ETH_account\" : ", +"\"0x9b35371fb81086a8d55ed28924ba9ca7ac8d5", +"598\",\n \"name\" : \"0x9b35371fb81086a8d5", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1489400800\n}, \n{\n \"ETH_account\" : ", +"\"0xab41783b2e59c5485e891e6f5d312022d7dcf", +"812\",\n \"name\" : \"alexsophia\",\n \"pu", +"blicKey\" : \"SPH6xYutovxAqTkmiLB21Ga39ZCt", +"bDYvzUbNxKttjVg6NSzYRaeEs\",\n \"balance", +"\" : 1052000000\n}, \n{\n \"ETH_account\" :", +" \"0x14289728e33a14d52a044e1acb4315c21f93", +"55fd\",\n \"name\" : \"0x14289728e33a14d52", +"a\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 990000000\n}, \n{\n \"ETH_account\" : ", +"\"0x941d7d4b2c73a27189a03061d54b301f7838e", +"65d\",\n \"name\" : \"sytwychdi\",\n \"pub", +"licKey\" : \"SPH51BW7Z82thSmRhQbTUADtmDHds", +"zvwU7Z1WoNZvCVVu75oH1Eyy\",\n \"balance\"", +" : 3087723200\n}, \n{\n \"ETH_account\" : ", +"\"0x0a6b4355a331122561abb0f692bda3947ae9a", +"755\",\n \"name\" : \"0x0a6b4355a331122561", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 509000000\n}, \n{\n \"ETH_account\" : \"", +"0xdb26a6bc23f6c2f44f7fc1890e6473d18c52a4", +"88\",\n \"name\" : \"0xdb26a6bc23f6c2f44f\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 9913000000\n}, \n{\n \"ETH_account\" : \"", +"0x4ea39f566900f0a5e2c5cd6deecc289fa64037", +"17\",\n \"name\" : \"0x4ea39f566900f0a5e2\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 47803800\n}, \n{\n \"ETH_account\" : \"0x", +"8b02df4b3babbe8a4ea2cacfdc008f19623fd509", +"\",\n \"name\" : \"skyscraper\",\n \"publi", +"cKey\" : \"SPH7TbaKcUZxZG6WNtoc53PEhncDUA5", +"AaU4bACz6p75LcTDqkMAKY\",\n \"balance\" :", +" 2916000000\n}, \n{\n \"ETH_account\" : \"0", +"xd0317dbac2007be5a9fbe19e7056fff9dd1b0b2", +"9\",\n \"name\" : \"0xd0317dbac2007be5a9\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 7550000000\n}, \n{\n \"ETH_account\" : \"0", +"x72375ca5cd3396e71a6b10efb163acf03cc88f1", +"9\",\n \"name\" : \"0x72375ca5cd3396e71a\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1400000000\n}, \n{\n \"ETH_account\" : \"0", +"x9f232faa372baf1e93f6d862eb45d5654cadae3", +"2\",\n \"name\" : \"0x9f232faa372baf1e93\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 557856000\n}, \n{\n \"ETH_account\" : \"0x", +"8b20519fa46f3d526a834e41895d1d91d59c517d", +"\",\n \"name\" : \"0x8b20519fa46f3d526a\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"765000000\n}, \n{\n \"ETH_account\" : \"0xf", +"c196e2f5560360ef3449674de813430d1909afc\"", +",\n \"name\" : \"0xfc196e2f5560360ef3\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"50000000\n}, \n{\n \"ETH_account\" : \"0xff", +"183fe9d68546cee68c46bcff81cd156418ab76\",", +"\n \"name\" : \"0xff183fe9d68546cee6\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 11", +"3926800\n}, \n{\n \"ETH_account\" : \"0xf1a", +"ad0b85098e623957bece3a3d6c662b8a9c5b2\",\n", +" \"name\" : \"0xf1aad0b85098e62395\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 100", +"000000\n}, \n{\n \"ETH_account\" : \"0x761f", +"3298028963722d851aa11efac7783a83d31a\",\n ", +" \"name\" : \"0x761f3298028963722d\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 9000", +"00000\n}, \n{\n \"ETH_account\" : \"0x33d25", +"6594420ac48255aee05ea0ab03836dc0d92\",\n ", +" \"name\" : \"0x33d256594420ac4825\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 15000", +"0000\n}, \n{\n \"ETH_account\" : \"0x8046bc", +"2af3556c8657995d5c268195286925c67c\",\n ", +" \"name\" : \"0x8046bc2af3556c8657\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 810000", +"000\n}, \n{\n \"ETH_account\" : \"0x88e3ce9", +"9cf832ee1299a05323db9dd0690d0986f\",\n ", +"\"name\" : \"0x88e3ce99cf832ee129\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 9000000", +"00\n}, \n{\n \"ETH_account\" : \"0x83fad94e", +"aa0fa69df6a9f13f7c3577be6180b3bb\",\n \"", +"name\" : \"0x83fad94eaa0fa69df6\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 27584740", +"00\n}, \n{\n \"ETH_account\" : \"0x832bec7d", +"456d5b373c9c00d960e35e14a2f56c5a\",\n \"", +"name\" : \"0x832bec7d456d5b373c\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 23200000", +"0\n}, \n{\n \"ETH_account\" : \"0x19f1b6c25", +"0649013e4349ed9fe5c50b0e427cf4d\",\n \"n", +"ame\" : \"0x19f1b6c250649013e4\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 8000000\n}", +", \n{\n \"ETH_account\" : \"0x05182424c60c", +"37d4445b67be8cc5db9a5929b277\",\n \"name", +"\" : \"0x05182424c60c37d444\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 307109296\n},", +" \n{\n \"ETH_account\" : \"0x247990e6a71a9", +"2aa747cc5bfcf39a186d3ff598c\",\n \"name\"", +" : \"0x247990e6a71a92aa74\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1570000000\n},", +" \n{\n \"ETH_account\" : \"0xb0086b1559432", +"bc4e34b2d1b9804146a4b12ecb1\",\n \"name\"", +" : \"0xb0086b1559432bc4e3\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1533000000\n},", +" \n{\n \"ETH_account\" : \"0xa34eaf829cbad", +"2826345351356976901be0507af\",\n \"name\"", +" : \"0xa34eaf829cbad28263\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 291150372\n}, ", +"\n{\n \"ETH_account\" : \"0x3653be1c98e999", +"69705bd696aa636dccad09b51c\",\n \"name\" ", +": \"0x3653be1c98e9996970\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1643\n}, \n{\n ", +" \"ETH_account\" : \"0x2d46cbb523ebf692fb49", +"d613864382f63efb8e45\",\n \"name\" : \"0x2", +"d46cbb523ebf692fb\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 2746800000\n}, \n{\n ", +" \"ETH_account\" : \"0xb8c50d882aa5133b4b57", +"7fbb8324bbcdb7cee874\",\n \"name\" : \"0xb", +"8c50d882aa5133b4b\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 14111000000\n}, \n{\n ", +" \"ETH_account\" : \"0xdf8f8e7caadc488e662", +"fde34b830b3df3db9ce6f\",\n \"name\" : \"0x", +"df8f8e7caadc488e66\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 7704078300\n}, \n{\n ", +" \"ETH_account\" : \"0x0dd720ddfcfb5e9aed5", +"e9e0a622a475ce72dcbb2\",\n \"name\" : \"0x", +"0dd720ddfcfb5e9aed\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 297565079\n}, \n{\n ", +" \"ETH_account\" : \"0x717ddf56a7c21eec6016", +"c87a0c637819b4185b48\",\n \"name\" : \"0x7", +"17ddf56a7c21eec60\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 58332040399\n}, \n{\n ", +" \"ETH_account\" : \"0x72b27bdca711570afef", +"1f5430aa98ecb495fc639\",\n \"name\" : \"0x", +"72b27bdca711570afe\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 10000000\n}, \n{\n ", +"\"ETH_account\" : \"0x77c6f95521c82b61b1062", +"e8d5b1ec5e0db34728e\",\n \"name\" : \"0x77", +"c6f95521c82b61b1\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 876000000\n}, \n{\n \"", +"ETH_account\" : \"0xb6100b7250d8ff3e2980c2", +"683420941442ffd2db\",\n \"name\" : \"0xb61", +"00b7250d8ff3e29\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 30000000\n}, \n{\n \"ET", +"H_account\" : \"0x5a86ee185592ec8415210764", +"9e38ed290e591ba2\",\n \"name\" : \"0x5a86e", +"e185592ec8415\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 6150788085\n}, \n{\n \"ET", +"H_account\" : \"0xf9b360261753051a8aab6b97", +"2fa22e9c89590932\",\n \"name\" : \"0xf9b36", +"0261753051a8a\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 19971841\n}, \n{\n \"ETH_", +"account\" : \"0x11ff6bf1e93b38520e973d9a26", +"1c4de3ab517ef6\",\n \"name\" : \"0x11ff6bf", +"1e93b38520e\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 6122\n}, \n{\n \"ETH_accoun", +"t\" : \"0x31c8a7766dc5a66b91c852318fc4e71f", +"0dc9b458\",\n \"name\" : \"0x31c8a7766dc5a", +"66b91\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 3684000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x94cdeef0f802212ffaef0d185c5f6cc4", +"d73b7c75\",\n \"name\" : \"0x94cdeef0f8022", +"12ffa\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 2778000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x0be1c351a4455f7b4f105ee897e2e959", +"2f57540b\",\n \"name\" : \"0x0be1c351a4455", +"f7b4f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1691632542\n}, \n{\n \"ETH_accoun", +"t\" : \"0x572f9013618636b7c1eb1a7da150d196", +"fdfb3d7c\",\n \"name\" : \"0x572f901361863", +"6b7c1\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 2008864262\n}, \n{\n \"ETH_accoun", +"t\" : \"0x9de3c63da250c1a3430017d654bff473", +"9a083bbd\",\n \"name\" : \"0x9de3c63da250c", +"1a343\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 80000000\n}, \n{\n \"ETH_account\"", +" : \"0x5293d026257f08efa8666aebfa824f0dad", +"3acba0\",\n \"name\" : \"0x5293d026257f08e", +"fa8\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1800000000\n}, \n{\n \"ETH_account\"", +" : \"0xb323e43cbf3aadbdd595a695ebe958330f", +"897b8f\",\n \"name\" : \"0xb323e43cbf3aadb", +"dd5\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 474792500\n}, \n{\n \"ETH_account\" ", +": \"0x6857f172bed70f3435b1f59cc6c1c608105", +"5c1ed\",\n \"name\" : \"0x6857f172bed70f34", +"35\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 51558255\n}, \n{\n \"ETH_account\" : ", +"\"0x3a034e4aa364f6a8e96ecffad5543cf468e63", +"d9f\",\n \"name\" : \"0x3a034e4aa364f6a8e9", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 990144565\n}, \n{\n \"ETH_account\" : \"", +"0x8ae35ec1765f6f2c8c9d44483f10fe53f5d297", +"84\",\n \"name\" : \"0x8ae35ec1765f6f2c8c\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 200000000\n}, \n{\n \"ETH_account\" : \"0", +"x51ced63512eaba7d14b8f39d88f280583dcdb00", +"d\",\n \"name\" : \"0x51ced63512eaba7d14\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 14926\n}, \n{\n \"ETH_account\" : \"0xb883", +"b4ac468629b93a2edba274da102ab9929e67\",\n ", +" \"name\" : \"0xb883b4ac468629b93a\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 4365", +"306500\n}, \n{\n \"ETH_account\" : \"0xe54f", +"bd754bea2db5be54381ee351805fd0c669f8\",\n ", +" \"name\" : \"0xe54fbd754bea2db5be\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5693", +"60000\n}, \n{\n \"ETH_account\" : \"0x465b1", +"ca433630fbecf3fd565d9a303c1f4662453\",\n ", +" \"name\" : \"0x465b1ca433630fbecf\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 22700", +"00000\n}, \n{\n \"ETH_account\" : \"0xff24b", +"44d0f7c5724272583e78b8a5018be245f57\",\n ", +" \"name\" : \"0xff24b44d0f7c572427\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 53100", +"000000\n}, \n{\n \"ETH_account\" : \"0x1546", +"51d2e0b7550b220d148e65968b3a1d2f5cdc\",\n ", +" \"name\" : \"0x154651d2e0b7550b22\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 8034", +"700000\n}, \n{\n \"ETH_account\" : \"0xf0bd", +"f1d9c36271b2dff44275a84c0a966c23b5ed\",\n ", +" \"name\" : \"0xf0bdf1d9c36271b2df\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1000", +"0000000\n}, \n{\n \"ETH_account\" : \"0xb07", +"96f4daf75ddb2553e8729e576e8089d0c0287\",\n", +" \"name\" : \"0xb0796f4daf75ddb255\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 523", +"040000\n}, \n{\n \"ETH_account\" : \"0x9ee3", +"e803b1cec2d713b1b171856e40fcc6714f45\",\n ", +" \"name\" : \"0x9ee3e803b1cec2d713\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5000", +"0000\n}, \n{\n \"ETH_account\" : \"0x5b828e", +"cd6c827a4cc91bbdc4ef7da0c84810f031\",\n ", +" \"name\" : \"0x5b828ecd6c827a4cc9\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 167404", +"0000\n}, \n{\n \"ETH_account\" : \"0x9906c0", +"b6f3b9f084273649236ba25c63547c114a\",\n ", +" \"name\" : \"0x9906c0b6f3b9f08427\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 169000", +"000\n}, \n{\n \"ETH_account\" : \"0xc85794c", +"eed821c5fc549fb60736f932fc889763a\",\n ", +"\"name\" : \"0xc85794ceed821c5fc5\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 185\n}, ", +"\n{\n \"ETH_account\" : \"0x28cbfcc18ef4b5", +"41ba3347150ca3f9f593dc7c1b\",\n \"name\" ", +": \"ekibastuz\",\n \"publicKey\" : \"SPH82u", +"pT61AG1LrwatahFVauL6hmssyoXJ3Dd8y1omC6aN", +"P4aXbd6\",\n \"balance\" : 35570085180\n},", +" \n{\n \"ETH_account\" : \"0x55fc6efa8be1c", +"5c66d027f9882762e7af0bd2b9b\",\n \"name\"", +" : \"0x55fc6efa8be1c5c66d\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 3290000000\n},", +" \n{\n \"ETH_account\" : \"0x103c837f9b072", +"745ec14fe5daa192736d98d1799\",\n \"name\"", +" : \"0x103c837f9b072745ec\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 951366712\n}, ", +"\n{\n \"ETH_account\" : \"0xfdad9c58e3e70a", +"a5012a13e4d7aad2cd5d9784d4\",\n \"name\" ", +": \"0xfdad9c58e3e70aa501\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1352391000\n}, ", +"\n{\n \"ETH_account\" : \"0x8277fce34efba4", +"e596e40dde7e95c09c3c7b27ca\",\n \"name\" ", +": \"jedisurfersphtx\",\n \"publicKey\" : \"", +"SPH5UysekayT8Bdrxqfz6iisWmpPMMmUnz1biTt9", +"XRazz2DtfuTt4\",\n \"balance\" : 21755808", +"037\n}, \n{\n \"ETH_account\" : \"0x0b102bf", +"6947be4e50c090c30d5855184f66bf63e\",\n ", +"\"name\" : \"lebowski\",\n \"publicKey\" : \"", +"SPH7Jgs1Xbd2fskvHes5Ue24pvJ2kGCKMxJnGPNx", +"Te8mmtYWWwd2S\",\n \"balance\" : 31907232", +"00\n}, \n{\n \"ETH_account\" : \"0xcc062209", +"e4d148e41062b62c9ea4f1af390960f4\",\n \"", +"name\" : \"0xcc062209e4d148e410\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 22812176", +"6\n}, \n{\n \"ETH_account\" : \"0x471c4947f", +"6c1e81b801cb070a7f2ea083ca80eb2\",\n \"n", +"ame\" : \"0x471c4947f6c1e81b80\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 150000000", +"00\n}, \n{\n \"ETH_account\" : \"0xc248ff78", +"7fd1b281f4c2e9a13f6ebff90870c9f9\",\n \"", +"name\" : \"0xc248ff787fd1b281f4\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 32050000", +"00\n}, \n{\n \"ETH_account\" : \"0x4a69986a", +"9c46e1f3f1a8e306eb4804e192a8646d\",\n \"", +"name\" : \"0x4a69986a9c46e1f3f1\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10290000", +"000\n}, \n{\n \"ETH_account\" : \"0xca165b6", +"1ccc560957e08e0b3dc4324f5a8a298ba\",\n ", +"\"name\" : \"0xca165b61ccc560957e\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2000000", +"0\n}, \n{\n \"ETH_account\" : \"0xa667bba59", +"46d701fd95c17bee607e2c69269c1bb\",\n \"n", +"ame\" : \"0xa667bba5946d701fd9\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 270821100", +"\n}, \n{\n \"ETH_account\" : \"0x45c84feec3", +"43b8bd2d5306de180defd36a8fd310\",\n \"na", +"me\" : \"0x45c84feec343b8bd2d\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 3372811500", +"\n}, \n{\n \"ETH_account\" : \"0x1bdb7a41fd", +"cf13702787c9e82576d568cacdfba2\",\n \"na", +"me\" : \"0x1bdb7a41fdcf137027\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 3065741600", +"\n}, \n{\n \"ETH_account\" : \"0x89323ee168", +"fb49f6f4a6d8d822b5e0f7f7a8a42b\",\n \"na", +"me\" : \"0x89323ee168fb49f6f4\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2240000000", +"\n}, \n{\n \"ETH_account\" : \"0x10626b7e86", +"696fc10fcce8c9b09b37f2be263c3a\",\n \"na", +"me\" : \"jamessutton\",\n \"publicKey\" : \"", +"SPH8J1rhDHdXJxtRuhPAL48Str4F7eqJYA4eW8vn", +"bTFGdtgCjPBBr\",\n \"balance\" : 14770000", +"00\n}, \n{\n \"ETH_account\" : \"0xecb6f48e", +"44a9a7322e2ac13b2066b551e98473ed\",\n \"", +"name\" : \"0xecb6f48e44a9a7322e\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 29960000", +"000\n}, \n{\n \"ETH_account\" : \"0x5243d8f", +"e9903bcd50359a88cbe68a83f8ce1be29\",\n ", +"\"name\" : \"0x5243d8fe9903bcd503\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 6000000", +"00\n}, \n{\n \"ETH_account\" : \"0x6d56ef3a", +"53e5488f20345a445c70d7c4fa25d97c\",\n \"", +"name\" : \"0x6d56ef3a53e5488f20\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 33000000", +"0\n}, \n{\n \"ETH_account\" : \"0x19005a516", +"d05207cbf42dde23caa533c0ab4be64\",\n \"n", +"ame\" : \"sophiatxtokens\",\n \"publicKey\"", +" : \"SPH53rNM6gcKMK1QjJFCpgFUdFoPQQTWDMCf", +"skE434fNVchAsFfKM\",\n \"balance\" : 1237", +"2000000\n}, \n{\n \"ETH_account\" : \"0x70c", +"412435a9354cabb4d16148d6248c6d5f7bee9\",\n", +" \"name\" : \"0x70c412435a9354cabb\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 617", +"000000\n}, \n{\n \"ETH_account\" : \"0xd953", +"0443e5b3732b47c61d489c70d27b11b04636\",\n ", +" \"name\" : \"0xd9530443e5b3732b47\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1074", +"779100\n}, \n{\n \"ETH_account\" : \"0x48ab", +"6a2ff97ba6d2473dd34f60628c674c0e0551\",\n ", +" \"name\" : \"0x48ab6a2ff97ba6d247\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1500", +"00000\n}, \n{\n \"ETH_account\" : \"0xdad20", +"1ea32736abc05d52ed1c0d77a129c6e02e0\",\n ", +" \"name\" : \"0xdad201ea32736abc05\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 81467", +"5400\n}, \n{\n \"ETH_account\" : \"0x3a57b6", +"f47f68fc3721f17fdc895b60b1cc1a2e40\",\n ", +" \"name\" : \"0x3a57b6f47f68fc3721\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 119179", +"9982\n}, \n{\n \"ETH_account\" : \"0x700541", +"bbced4858f911d47398ae912e8e907a6ed\",\n ", +" \"name\" : \"0x700541bbced4858f91\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 644895", +"9000\n}, \n{\n \"ETH_account\" : \"0xd5572f", +"42e552a4e17b2970b5f550e8e4e8392016\",\n ", +" \"name\" : \"0xd5572f42e552a4e17b\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 500003", +"42640\n}, \n{\n \"ETH_account\" : \"0xf3adf", +"1941653078d19df60528b1857339c472b5d\",\n ", +" \"name\" : \"0xf3adf1941653078d19\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 48910", +"00000\n}, \n{\n \"ETH_account\" : \"0xca71d", +"0217221f5abc035f6a2ac37f649a3b4d52e\",\n ", +" \"name\" : \"malina\",\n \"publicKey\" : \"", +"SPH7TWrpjaZZ73mSYAK8VQDC1XwyS6f3wnit121e", +"rtcQsjwVrnJP7\",\n \"balance\" : 33500059", +"19\n}, \n{\n \"ETH_account\" : \"0x26ec702e", +"bdd9a80c1ef0cddb118e10350442e754\",\n \"", +"name\" : \"0x26ec702ebdd9a80c1e\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 49700000", +"0\n}, \n{\n \"ETH_account\" : \"0xd78516211", +"bade39a55733b7f3bed9879e860b60f\",\n \"n", +"ame\" : \"0xd78516211bade39a55\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 312278511", +"8\n}, \n{\n \"ETH_account\" : \"0x6be459eab", +"e441738bc28a2b5ca156ebd32ffb2bb\",\n \"n", +"ame\" : \"0x6be459eabe441738bc\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 945216000", +"\n}, \n{\n \"ETH_account\" : \"0x900198c81b", +"7d8837beba69c3b4dfa9292e20e44d\",\n \"na", +"me\" : \"0x900198c81b7d8837be\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2143681753", +"\n}, \n{\n \"ETH_account\" : \"0x32da5efd1f", +"9bc2ae50243fd56d0c9d95c51f6190\",\n \"na", +"me\" : \"0x32da5efd1f9bc2ae50\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 867967000\n", +"}, \n{\n \"ETH_account\" : \"0xb848c7e94a5", +"d28b70d9a5423b538ce707a5fb67f\",\n \"nam", +"e\" : \"0xb848c7e94a5d28b70d\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 528400000\n}", +", \n{\n \"ETH_account\" : \"0x5dd59d080fdb", +"9614d20f8e597c99a3bb0082d9cd\",\n \"name", +"\" : \"0x5dd59d080fdb9614d2\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 117472947\n},", +" \n{\n \"ETH_account\" : \"0xa434d98d86dc7", +"c1145b3610ef5a86c79eae7eb3c\",\n \"name\"", +" : \"0xa434d98d86dc7c1145\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 25000000000\n}", +", \n{\n \"ETH_account\" : \"0x9ee4bc4ea876", +"632d0ec384654bfb20360cfa88c7\",\n \"name", +"\" : \"0x9ee4bc4ea876632d0e\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 6640259500\n}", +", \n{\n \"ETH_account\" : \"0x556d9ce54f60", +"7c7cc42755319d9bd759dda2a43a\",\n \"name", +"\" : \"0x556d9ce54f607c7cc4\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 930000000\n},", +" \n{\n \"ETH_account\" : \"0xbc58256744bca", +"103bff179728f90f3006b9a3101\",\n \"name\"", +" : \"0xbc58256744bca103bf\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 18555541\n}, \n", +"{\n \"ETH_account\" : \"0x9038267fcb25a48", +"937c8b282a166b81dfba9eff4\",\n \"name\" :", +" \"mojizetonce\",\n \"publicKey\" : \"SPH6q", +"8dfYP154zMMEvyynyM8G61fng3vU8E7LwfDjazBP", +"A4Rzrae7\",\n \"balance\" : 694043631\n}, ", +"\n{\n \"ETH_account\" : \"0x4dd7cb50b4e230", +"78ed3251dcce86e71cc161cf08\",\n \"name\" ", +": \"0x4dd7cb50b4e23078ed\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3883000000\n}, ", +"\n{\n \"ETH_account\" : \"0xc4dab343831740", +"91f03675734769ca25f14c149d\",\n \"name\" ", +": \"0xc4dab34383174091f0\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1000000\n}, \n{\n", +" \"ETH_account\" : \"0x5b8a37b92e085c69c", +"79dd1ac52056de37215bb35\",\n \"name\" : \"", +"0x5b8a37b92e085c69c7\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1361025408\n}, \n{\n", +" \"ETH_account\" : \"0x2e36ae81d5fd0bf1a", +"6be5bd63b1a72f8fa8c5ea0\",\n \"name\" : \"", +"0x2e36ae81d5fd0bf1a6\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 730288400\n}, \n{\n ", +" \"ETH_account\" : \"0x948c1b8d9dedcda069", +"0e78aac727d127fce191f2\",\n \"name\" : \"0", +"x948c1b8d9dedcda069\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 213495005\n}, \n{\n ", +" \"ETH_account\" : \"0x9a29e608db902614d3e", +"5c941ad612838515e5829\",\n \"name\" : \"0x", +"9a29e608db902614d3\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 908875000\n}, \n{\n ", +" \"ETH_account\" : \"0xec5ddd98a8985ce839bf", +"bc91a924974f306fd8e0\",\n \"name\" : \"0xe", +"c5ddd98a8985ce839\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 89582886861\n}, \n{\n ", +" \"ETH_account\" : \"0x320fbd62fbc9d2154e1", +"aab3d131548a3d8dc1177\",\n \"name\" : \"0x", +"320fbd62fbc9d2154e\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 2752738589\n}, \n{\n ", +" \"ETH_account\" : \"0xfd13922d5d2d7f24e4e", +"49520ad506c58f5524e8a\",\n \"name\" : \"0x", +"fd13922d5d2d7f24e4\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 497597200\n}, \n{\n ", +" \"ETH_account\" : \"0xc013e149f0ee911db6c1", +"109db361676c034c8c79\",\n \"name\" : \"0xc", +"013e149f0ee911db6\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 123000000\n}, \n{\n ", +"\"ETH_account\" : \"0x4fa03eac78ccc2d3755c1", +"99b2bb45f6742e05cb3\",\n \"name\" : \"0x4f", +"a03eac78ccc2d375\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1997567650\n}, \n{\n ", +"\"ETH_account\" : \"0x5324e611ac7da49506b05", +"6c169ec60e27ee5b24b\",\n \"name\" : \"0x53", +"24e611ac7da49506\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 93454489\n}, \n{\n \"E", +"TH_account\" : \"0x7452fbeeb730a4090e2b876", +"5df8d1f5f7bc1c361\",\n \"name\" : \"0x7452", +"fbeeb730a4090e\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 187950000\n}, \n{\n \"ET", +"H_account\" : \"0x6bdbf30ae304903562a690a4", +"ee0576c89f72cffb\",\n \"name\" : \"0x6bdbf", +"30ae304903562\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 9156520000\n}, \n{\n \"ET", +"H_account\" : \"0x33e636d63a7fcc333beb2d53", +"5293d73067c7d864\",\n \"name\" : \"0x33e63", +"6d63a7fcc333b\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 2000000000\n}, \n{\n \"ET", +"H_account\" : \"0xbe242ae5b3e7e600880229b3", +"55d1555c7e1f8d8e\",\n \"name\" : \"0xbe242", +"ae5b3e7e60088\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 2\n}, \n{\n \"ETH_account", +"\" : \"0xc5e4ecbe1ec4c407e9459d68a8e14f7fa", +"c7f169d\",\n \"name\" : \"0xc5e4ecbe1ec4c4", +"07e9\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 382441280\n}, \n{\n \"ETH_account\"", +" : \"0xf82a0e915bcff370a8909d6fd630e497f3", +"2e1216\",\n \"name\" : \"0xf82a0e915bcff37", +"0a8\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 12924000\n}, \n{\n \"ETH_account\" :", +" \"0xe16d80a9ba91901431ba189ebdef43e55d6c", +"7515\",\n \"name\" : \"0xe16d80a9ba9190143", +"1\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1143000000\n}, \n{\n \"ETH_account\" :", +" \"0xcfb31247ccde8e70959c5d6352be7133805c", +"e3eb\",\n \"name\" : \"0xcfb31247ccde8e709", +"5\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 524732\n}, \n{\n \"ETH_account\" : \"0x", +"0006a9644f1fa0fb84d4c678cecdd6ed0be5199b", +"\",\n \"name\" : \"0x0006a9644f1fa0fb84\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"257646976\n}, \n{\n \"ETH_account\" : \"0xf", +"24049173edfa11686e959fe19736d7a7aca3352\"", +",\n \"name\" : \"0xf24049173edfa11686\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"200000000\n}, \n{\n \"ETH_account\" : \"0xf", +"f57625c0d90b4c4048f60f82c002ed8390a98ad\"", +",\n \"name\" : \"sohphiatxswap\",\n \"pub", +"licKey\" : \"SPH58VjxgFpucyp7zirEyzAmN5M1L", +"CDD5wQxJz1ZX6CX2cMpxUxRG\",\n \"balance\"", +" : 608712876\n}, \n{\n \"ETH_account\" : \"", +"0x6c54a8c52430d2d2614571de17c5930da09f9d", +"8c\",\n \"name\" : \"0x6c54a8c52430d2d261\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 363325569\n}, \n{\n \"ETH_account\" : \"0", +"xbb3c1db6b3aa64d6a097f5d3bbdfc3218934162", +"a\",\n \"name\" : \"0xbb3c1db6b3aa64d6a0\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 253000000\n}, \n{\n \"ETH_account\" : \"0x", +"050b169f1cd05f3d682e2f95184262b8643daf7b", +"\",\n \"name\" : \"0x050b169f1cd05f3d68\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"6928269000\n}, \n{\n \"ETH_account\" : \"0x", +"d6d1bddd8b6347f34b9ce686ea129d0975dd9857", +"\",\n \"name\" : \"0xd6d1bddd8b6347f34b\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"10045000000\n}, \n{\n \"ETH_account\" : \"0", +"xbc9348f8a1073d771e1b73552f9d4876e82f7a4", +"5\",\n \"name\" : \"punkyc\",\n \"publicKe", +"y\" : \"SPH5q8Mgx5b8gpitj5rtVjgapdWW1aKhiu", +"ECTVHhaC2DgMaumKYwX\",\n \"balance\" : 79", +"32775500\n}, \n{\n \"ETH_account\" : \"0x39", +"4407f555b4536656c870f3717bc071a85f5e6c\",", +"\n \"name\" : \"0x394407f555b4536656\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 13", +"16800000\n}, \n{\n \"ETH_account\" : \"0xc6", +"c28ea2ade91b2a76281ae4179247f0c7306fea\",", +"\n \"name\" : \"0xc6c28ea2ade91b2a76\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 10", +"019743400\n}, \n{\n \"ETH_account\" : \"0x7", +"b642fd77a678190b05773e308c22cb04de3588f\"", +",\n \"name\" : \"0x7b642fd77a678190b0\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"060842650\n}, \n{\n \"ETH_account\" : \"0x2", +"1c9a48bf0b237c742d41ab5f617792719162a32\"", +",\n \"name\" : \"sphtxandrea\",\n \"publi", +"cKey\" : \"SPH5X8xsT61EzP16n1cWAuyqLkLb1hf", +"doUBA5RwgjnnEB9X6JfRHF\",\n \"balance\" :", +" 2999999827\n}, \n{\n \"ETH_account\" : \"0", +"x7a08af18d15da7723371eab8e4e53ebd9c36460", +"b\",\n \"name\" : \"0x7a08af18d15da77233\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 31000\n}, \n{\n \"ETH_account\" : \"0x5eb8", +"0c7c7a3c93f9c14bbb11c76810a1580ef351\",\n ", +" \"name\" : \"tomaskucera\",\n \"publicKe", +"y\" : \"SPH8hdpwnKCFJqv1UwbYRonSQGoW4p6jCg", +"FKnKXHHpzCyVB8iURCR\",\n \"balance\" : 27", +"46466902\n}, \n{\n \"ETH_account\" : \"0x1a", +"0600ca1c4b7839be05409e0cbd4e9069ad5099\",", +"\n \"name\" : \"0x1a0600ca1c4b7839be\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 16", +"1895000\n}, \n{\n \"ETH_account\" : \"0x18c", +"16fe9c09d1abcee84e99ab295e14c9ae5beb0\",\n", +" \"name\" : \"0x18c16fe9c09d1abcee\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 250", +"554146\n}, \n{\n \"ETH_account\" : \"0x536a", +"30da345d7967d14e2d84829337755bb4c72a\",\n ", +" \"name\" : \"0x536a30da345d7967d1\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1747", +"000000\n}, \n{\n \"ETH_account\" : \"0x1a75", +"d938948d5b4bbc43784bae3f4077536d335b\",\n ", +" \"name\" : \"0x1a75d938948d5b4bbc\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 4000", +"00000\n}, \n{\n \"ETH_account\" : \"0xadff8", +"116d11a518a6228dbcfb22365cd5048b2c2\",\n ", +" \"name\" : \"0xadff8116d11a518a62\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 16673", +"40276\n}, \n{\n \"ETH_account\" : \"0xb6024", +"79f8e7910d515c66a29a16d6fc3eb1ca7a5\",\n ", +" \"name\" : \"0xb602479f8e7910d515\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 81761", +"575\n}, \n{\n \"ETH_account\" : \"0x1bc78ae", +"c02afd79a36bbd528c1276e6c4b5137c5\",\n ", +"\"name\" : \"0x1bc78aec02afd79a36\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1148749", +"00\n}, \n{\n \"ETH_account\" : \"0x666fea26", +"4862d88bdc550abc838f49e950542aef\",\n \"", +"name\" : \"0x666fea264862d88bdc\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 11964977", +"99\n}, \n{\n \"ETH_account\" : \"0xdff7fa4e", +"d78d76c47ab957cb203de973cc5ddc3c\",\n \"", +"name\" : \"0xdff7fa4ed78d76c47a\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 721556\n}", +", \n{\n \"ETH_account\" : \"0x5b48eaeb564f", +"dc59236c2ce5191d8ebb94c6b91a\",\n \"name", +"\" : \"0x5b48eaeb564fdc5923\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 2205000000\n}", +", \n{\n \"ETH_account\" : \"0xa6a8b7ab140d", +"50c98581df2ae34658bd8700dae4\",\n \"name", +"\" : \"0xa6a8b7ab140d50c985\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 641437494\n},", +" \n{\n \"ETH_account\" : \"0x4f4e741e38aab", +"6b3cd88875242fedc0fdc41d7f6\",\n \"name\"", +" : \"0x4f4e741e38aab6b3cd\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1606100000\n},", +" \n{\n \"ETH_account\" : \"0xa7fe861dbe139", +"a93b0081ae12eaac213b6b2ffc2\",\n \"name\"", +" : \"0xa7fe861dbe139a93b0\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 214000000\n}, ", +"\n{\n \"ETH_account\" : \"0xb9fba00f923170", +"b71f031b5e6b184e0db2aa7ece\",\n \"name\" ", +": \"0xb9fba00f923170b71f\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1131000000\n}, ", +"\n{\n \"ETH_account\" : \"0x809749e8dcdaae", +"516e20810c7788b3aa498e8626\",\n \"name\" ", +": \"0x809749e8dcdaae516e\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 117000000\n}, \n", +"{\n \"ETH_account\" : \"0x1179a63d53fce63", +"f2469926ec367caaa86fe4f8d\",\n \"name\" :", +" \"0x1179a63d53fce63f24\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 2137069200\n}, \n", +"{\n \"ETH_account\" : \"0x8f2d911d811e5f5", +"c687ff26f0054d7aea04d0ffd\",\n \"name\" :", +" \"0x8f2d911d811e5f5c68\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 131195\n}, \n{\n ", +" \"ETH_account\" : \"0xa2a064c7946aeec7c14", +"9dd65bd5ef7f76aea5dda\",\n \"name\" : \"0x", +"a2a064c7946aeec7c1\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 25588102324\n}, \n{\n ", +" \"ETH_account\" : \"0x65247d18f929cfc0e2", +"5c7e9143dcc54381677aa6\",\n \"name\" : \"0", +"x65247d18f929cfc0e2\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 490000000\n}, \n{\n ", +" \"ETH_account\" : \"0x61bc51a2fe73ea970d8", +"0e8eb82edb5f19471c0b8\",\n \"name\" : \"0x", +"61bc51a2fe73ea970d\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 4155845500\n}, \n{\n ", +" \"ETH_account\" : \"0x16957624a1ae8d5edc0", +"2b0efc30ba5b27f52055d\",\n \"name\" : \"0x", +"16957624a1ae8d5edc\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 254904520\n}, \n{\n ", +" \"ETH_account\" : \"0x15e91118807843715d3d", +"8087392cb3a0809551de\",\n \"name\" : \"0x1", +"5e91118807843715d\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 501000000\n}, \n{\n ", +"\"ETH_account\" : \"0xe4dfa46b547eb91632ce2", +"9a4d6f50d1f028baa0a\",\n \"name\" : \"0xe4", +"dfa46b547eb91632\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 406651200\n}, \n{\n \"", +"ETH_account\" : \"0x97af375fe80a69c7e6cf70", +"ab4004243e3ef9e726\",\n \"name\" : \"0x97a", +"f375fe80a69c7e6\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1345510000\n}, \n{\n \"", +"ETH_account\" : \"0x644018081eaf1aa387f9b9", +"45ca8af9767adbdd3b\",\n \"name\" : \"0x644", +"018081eaf1aa387\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 105772640\n}, \n{\n \"E", +"TH_account\" : \"0x0fa7ca9f3657ed64ce284eb", +"8e910937b184d2a69\",\n \"name\" : \"0x0fa7", +"ca9f3657ed64ce\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 200000000\n}, \n{\n \"ET", +"H_account\" : \"0x12a3c1d0f1a09dc2f523342c", +"3a9e274f04097e4b\",\n \"name\" : \"0x12a3c", +"1d0f1a09dc2f5\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 109495518\n}, \n{\n \"ETH", +"_account\" : \"0xca36f65a46b2886e0f87c7278", +"b881df8f7e9b42e\",\n \"name\" : \"0xca36f6", +"5a46b2886e0f\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 683253000\n}, \n{\n \"ETH_", +"account\" : \"0x4c0e1da6f41b448d72247f68b9", +"ffe4942f57556f\",\n \"name\" : \"pjfjansen", +"\",\n \"publicKey\" : \"SPH5v1GeW9uQaF4M6T", +"j8Pka1aFBqrUFGYbhYDf7qUtacSSzgqZ426\",\n ", +" \"balance\" : 5435000000\n}, \n{\n \"ETH_", +"account\" : \"0xf07ff380384ae3b0f887512b3f", +"ce2296a5260aa5\",\n \"name\" : \"0xf07ff38", +"0384ae3b0f8\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 225000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x17bde0a3703f1e3af070455dd32", +"097891b880c0a\",\n \"name\" : \"0x17bde0a3", +"703f1e3af0\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 182000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x969193a55b6f29599a9cda496301", +"fa548c64bb49\",\n \"name\" : \"0x969193a55", +"b6f29599a\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1822330000\n}, \n{\n \"ETH_ac", +"count\" : \"0x115ebf0e4f44618f90c245599f00", +"5935f8db7ff5\",\n \"name\" : \"0x115ebf0e4", +"f44618f90\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 200504995\n}, \n{\n \"ETH_acc", +"ount\" : \"0xda1a434f58439b811d3a0ea376f39", +"49e61190356\",\n \"name\" : \"0xda1a434f58", +"439b811d\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 130000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x189a85362210eb4a82c82a51b386c2", +"1e762c1bb2\",\n \"name\" : \"0x189a8536221", +"0eb4a82\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 398763832\n}, \n{\n \"ETH_accou", +"nt\" : \"0x9cbc2c0e03922e25916cc6ad49f5c42", +"34654af4a\",\n \"name\" : \"speed\",\n \"p", +"ublicKey\" : \"SPH696yQKvsYrEaMfR3GQ6oRkst", +"zbN8MoxrRDv7NQABRiYkQHVE4g\",\n \"balanc", +"e\" : 498805000\n}, \n{\n \"ETH_account\" :", +" \"0xc382f139f4d3590750e979cf0fc191694f52", +"94bd\",\n \"name\" : \"0xc382f139f4d359075", +"0\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 7\n}, \n{\n \"ETH_account\" : \"0xf8b56", +"2ba6f000e92636dd12200d1a2645999a61b\",\n ", +" \"name\" : \"0xf8b562ba6f000e9263\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 20000", +"00\n}, \n{\n \"ETH_account\" : \"0x3678ffb2", +"ef864fb79f4c1376482c23cea9b05473\",\n \"", +"name\" : \"sophiapm\",\n \"publicKey\" : \"S", +"PH8Gd9d7zYNTGSD4KfReue7uwCS6PLsYd9iC51dB", +"ujMXaqZn2xEW\",\n \"balance\" : 534000000", +"0\n}, \n{\n \"ETH_account\" : \"0x132ae2214", +"69734dfe14f5242ec99f4c708b87b4c\",\n \"n", +"ame\" : \"0x132ae221469734dfe1\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 462582774", +"\n}, \n{\n \"ETH_account\" : \"0x16e2d79216", +"79544ee2d0c8c80487960f94ccb6cb\",\n \"na", +"me\" : \"0x16e2d7921679544ee2\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1427319410", +"0\n}, \n{\n \"ETH_account\" : \"0xdb6c96128", +"0c8a7273fb6a4451fedbee9d53211e7\",\n \"n", +"ame\" : \"0xdb6c961280c8a7273f\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 100000000", +"00\n}, \n{\n \"ETH_account\" : \"0xea5c05b5", +"9047f4ab4198050e366e279e143aa02e\",\n \"", +"name\" : \"cryptophizz\",\n \"publicKey\" :", +" \"SPH5ZteMEDqBsGSTWszYNHcftsnHpLZnabU6b2", +"4PVPWNu6edCC3uj\",\n \"balance\" : 292000", +"000\n}, \n{\n \"ETH_account\" : \"0xde151b7", +"332c85fe17966d0735df8f9c8d596c165\",\n ", +"\"name\" : \"0xde151b7332c85fe179\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 9300000", +"000\n}, \n{\n \"ETH_account\" : \"0xe40caed", +"a87d31550bd70282ec4767d9eedc80c29\",\n ", +"\"name\" : \"0xe40caeda87d31550bd\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5000000", +"0\n}, \n{\n \"ETH_account\" : \"0x80abb8e3a", +"a8a971b358a33a1a3e4a9f4f4ed4b1c\",\n \"n", +"ame\" : \"noboarder\",\n \"publicKey\" : \"S", +"PH5JfQKYBFWgBhdm5bXeHg1cYYsVkXrD5gbDPHHu", +"kGpgM2JZAGNW\",\n \"balance\" : 190000000", +"\n}, \n{\n \"ETH_account\" : \"0x9b55f5d6b8", +"6dad9939defb0e7fe0ad1e7fda89cb\",\n \"na", +"me\" : \"cryptoflux\",\n \"publicKey\" : \"S", +"PH7EcfVfpUmEB6vkpngbXeR7SgMAz9w55VQe2mKf", +"oiK2AvjeEgcB\",\n \"balance\" : 166500000", +"\n}, \n{\n \"ETH_account\" : \"0xfd7217efae", +"36f4ed58a6800dbe52bfa489d85723\",\n \"na", +"me\" : \"0xfd7217efae36f4ed58\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 685134300\n", +"}, \n{\n \"ETH_account\" : \"0xedabdf3e009", +"0e1f9b49b5bc62a830c11bd694b19\",\n \"nam", +"e\" : \"0xedabdf3e0090e1f9b4\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 46028925375", +"5\n}, \n{\n \"ETH_account\" : \"0x9c141dfc4", +"23176dca2954123332007cb00d3e388\",\n \"n", +"ame\" : \"0x9c141dfc423176dca2\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 985180563", +"\n}, \n{\n \"ETH_account\" : \"0xd6ae203e60", +"6f7e26c01df2b05d53da3380a559fd\",\n \"na", +"me\" : \"0xd6ae203e606f7e26c0\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 355500618\n", +"}, \n{\n \"ETH_account\" : \"0x813ddcec5b5", +"7911d1e88028192cd63dafba5a509\",\n \"nam", +"e\" : \"0x813ddcec5b57911d1e\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 332772338\n}", +", \n{\n \"ETH_account\" : \"0x74dbc2d656f5", +"5c17bdfabcd9726293c8767abdeb\",\n \"name", +"\" : \"0x74dbc2d656f55c17bd\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 9500000000\n}", +", \n{\n \"ETH_account\" : \"0x571b4aa3c080", +"c669c261e3c17192f68132e15e80\",\n \"name", +"\" : \"0x571b4aa3c080c669c2\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 888000000\n},", +" \n{\n \"ETH_account\" : \"0x0bed0bd43a703", +"885fb1aca2bfa49609abf885253\",\n \"name\"", +" : \"0x0bed0bd43a703885fb\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 2064584100\n},", +" \n{\n \"ETH_account\" : \"0xbabb53b113890", +"ba53f8dfda5421d29f2690988dd\",\n \"name\"", +" : \"0xbabb53b113890ba53f\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 9401760000\n},", +" \n{\n \"ETH_account\" : \"0xeaa9e5b24d5e1", +"81afaae1d037dc4d62bca675db6\",\n \"name\"", +" : \"0xeaa9e5b24d5e181afa\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 18016485012\n}", +", \n{\n \"ETH_account\" : \"0x88f74c6d828c", +"84649fed91fa59d95b500dd6f4a1\",\n \"name", +"\" : \"0x88f74c6d828c84649f\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 609537448\n},", +" \n{\n \"ETH_account\" : \"0x930b01abb91d5", +"776aabc750b46e5c34cfac92cd2\",\n \"name\"", +" : \"0x930b01abb91d5776aa\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 25571733993\n}", +", \n{\n \"ETH_account\" : \"0xfac0b6d0598d", +"50e08a6590e153b38c85c808555a\",\n \"name", +"\" : \"0xfac0b6d0598d50e08a\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 268000000\n},", +" \n{\n \"ETH_account\" : \"0x51484fdfa208d", +"310d7e5260cc0341632bd9a96d3\",\n \"name\"", +" : \"0x51484fdfa208d310d7\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 6060100126\n},", +" \n{\n \"ETH_account\" : \"0xfdea49e8ff4f0", +"cdb064d44265880a73dff06abe7\",\n \"name\"", +" : \"0xfdea49e8ff4f0cdb06\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 670000000\n}, ", +"\n{\n \"ETH_account\" : \"0x430f6a22b0c683", +"23d80dc0849f189845d6c741bc\",\n \"name\" ", +": \"0x430f6a22b0c68323d8\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 52000000000\n},", +" \n{\n \"ETH_account\" : \"0xa4e57a4ee5c82", +"f0052af70980c42e718f28095e9\",\n \"name\"", +" : \"0xa4e57a4ee5c82f0052\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 100000000\n}, ", +"\n{\n \"ETH_account\" : \"0x5433c3f4d872af", +"ec05827f3edbb38b1b097296b7\",\n \"name\" ", +": \"0x5433c3f4d872afec05\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 5000000\n}, \n{\n", +" \"ETH_account\" : \"0x2312c9612674c1eae", +"4fbf0b7fb0efdddb3bb1a40\",\n \"name\" : \"", +"0x2312c9612674c1eae4\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 999999\n}, \n{\n ", +"\"ETH_account\" : \"0x1f18d4e7dcfa45b307732", +"73335c3d4aa7bc4d902\",\n \"name\" : \"0x1f", +"18d4e7dcfa45b307\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 599000000\n}, \n{\n \"", +"ETH_account\" : \"0x3ace42f4964160e66782ba", +"398a95eaa1ce746472\",\n \"name\" : \"0x3ac", +"e42f4964160e667\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 21000000\n}, \n{\n \"ET", +"H_account\" : \"0x3bfed9830456f910ae695826", +"c1685b854ca1c225\",\n \"name\" : \"0x3bfed", +"9830456f910ae\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 412000000\n}, \n{\n \"ETH", +"_account\" : \"0x0b22a8845e4e5e964ed8a5bd6", +"e78a4ab382003bb\",\n \"name\" : \"basoutsp", +"htx\",\n \"publicKey\" : \"SPH7KsyYvP9wTiq", +"3k2EY924VBvKS9Y6uxjoFA88ndPTap3ndp4nWo\",", +"\n \"balance\" : 11654000000\n}, \n{\n \"", +"ETH_account\" : \"0xd2c2787ed30c0fb527b452", +"0b4b88ea3c5d8dd3b9\",\n \"name\" : \"0xd2c", +"2787ed30c0fb527\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2770822700\n}, \n{\n \"", +"ETH_account\" : \"0x523571346de07dab50a389", +"83d7da8717c1fd6d3b\",\n \"name\" : \"mmrid", +"er\",\n \"publicKey\" : \"SPH7BQyY7fRu5Qav", +"2MTDXGBfRGofYN6u3nDQfqpDmpU8qti3u6bVy\",\n", +" \"balance\" : 1046035240\n}, \n{\n \"ET", +"H_account\" : \"0x74b6627a88cf20903a56311b", +"acca958ec054c7da\",\n \"name\" : \"tinyric", +"k\",\n \"publicKey\" : \"SPH7LRATex9Watqy3", +"jY2qxupuyrwrDhk7TUyPTwpJoUwUrLNsaGAZ\",\n ", +" \"balance\" : 2150000000\n}, \n{\n \"ETH", +"_account\" : \"0x98df22b844f59d055cb756608", +"fe7bd8463da8be2\",\n \"name\" : \"0x98df22", +"b844f59d055c\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 790180269\n}, \n{\n \"ETH_", +"account\" : \"0x5f6f9325733d1a6c28a1f7d022", +"6afbbacead2844\",\n \"name\" : \"0x5f6f932", +"5733d1a6c28\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 220128884\n}, \n{\n \"ETH_a", +"ccount\" : \"0x2be61271469a736e1fe1f75fb8f", +"d24ed9996675b\",\n \"name\" : \"frankjvg\",", +"\n \"publicKey\" : \"SPH7RycZTGThuFfrKAG9", +"ES6u7ZJHu2s1bcQdUCJohz1YUMgFy1hYy\",\n ", +"\"balance\" : 1663416811\n}, \n{\n \"ETH_ac", +"count\" : \"0x3e1e27d7cabc90620118879d69f9", +"fee18a8a0ad9\",\n \"name\" : \"csphinxtx\",", +"\n \"publicKey\" : \"SPH6B3JrGaXNGg6iDBw9", +"HuREUJGJ9Hny9vUBRQsnWi4VT7nVbVHWv\",\n ", +"\"balance\" : 71387463998\n}, \n{\n \"ETH_a", +"ccount\" : \"0xe18b6ece053c1fa6b90deff6bd3", +"40bd47cde2b80\",\n \"name\" : \"0xe18b6ece", +"053c1fa6b9\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 731720000\n}, \n{\n \"ETH_ac", +"count\" : \"0xbcbcd39b4270b175f9f7726a3efe", +"7faef6aa7539\",\n \"name\" : \"0xbcbcd39b4", +"270b175f9\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 610599219\n}, \n{\n \"ETH_acc", +"ount\" : \"0x7758fdf93ef3f190851f485e5adb2", +"ec3c7099d1d\",\n \"name\" : \"0x7758fdf93e", +"f3f19085\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1157508116\n}, \n{\n \"ETH_acc", +"ount\" : \"0x7939da0c61ce7dddcb250a1d962d5", +"affc480a93c\",\n \"name\" : \"0x7939da0c61", +"ce7dddcb\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 155107999\n}, \n{\n \"ETH_acco", +"unt\" : \"0x1bce7714f28d8b763825231fd082b3", +"da0b444d42\",\n \"name\" : \"0x1bce7714f28", +"d8b7638\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 13000000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x1e8499eed5985f7f455fc6bc83fc2", +"0a1f98c6058\",\n \"name\" : \"0x1e8499eed5", +"985f7f45\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 350727657\n}, \n{\n \"ETH_acco", +"unt\" : \"0x9267e0f4578d92ffdb7adcfe077b1d", +"5dd1223d31\",\n \"name\" : \"0x9267e0f4578", +"d92ffdb\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 236900000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x9186724e8e23cc26fd7742af8cdee00", +"16a03a766\",\n \"name\" : \"0x9186724e8e23", +"cc26fd\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1100000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x180e66bb6a2ed6e40a5a5e119ac0919", +"cb34fefbf\",\n \"name\" : \"rudie100\",\n ", +" \"publicKey\" : \"SPH7q4EkEWR4agmu5SUFNkkA", +"wMsuYGzAZZ42TYN2RaNcqYvgF5h6X\",\n \"bal", +"ance\" : 453000000\n}, \n{\n \"ETH_account", +"\" : \"0x602fd5be88bab542113527066855c9fbb", +"dfe0d48\",\n \"name\" : \"0x602fd5be88bab5", +"4211\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 856000000\n}, \n{\n \"ETH_account\"", +" : \"0xc849c25c646dce8ba0661181bf721f8416", +"968a55\",\n \"name\" : \"0xc849c25c646dce8", +"ba0\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 96000000\n}, \n{\n \"ETH_account\" :", +" \"0x9b4797bbbbdef4e7333cd48361f149f53159", +"ff78\",\n \"name\" : \"0x9b4797bbbbdef4e73", +"3\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 2053093000\n}, \n{\n \"ETH_account\" :", +" \"0xdb08a6d38286c3afe02b9e426e41e72aefa8", +"69f0\",\n \"name\" : \"0xdb08a6d38286c3afe", +"0\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 3400000000\n}, \n{\n \"ETH_account\" :", +" \"0x1982220ac16d93005fa6077e1b9000aa3f44", +"c781\",\n \"name\" : \"0x1982220ac16d93005", +"f\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 627888706\n}, \n{\n \"ETH_account\" : ", +"\"0x668ed82da5c3caa5d0ff69533578529740142", +"705\",\n \"name\" : \"0x668ed82da5c3caa5d0", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1280000000\n}, \n{\n \"ETH_account\" : ", +"\"0xe1b027d3e39dbb0a8b82b09554fa41308862b", +"a00\",\n \"name\" : \"0xe1b027d3e39dbb0a8b", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 14297957464\n}, \n{\n \"ETH_account\" :", +" \"0x068cc6e9f6ae88b92516e744719634044033", +"75d1\",\n \"name\" : \"0x068cc6e9f6ae88b92", +"5\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 946896861\n}, \n{\n \"ETH_account\" : ", +"\"0x1a7942f7520ddd0f340834262ea81de113335", +"806\",\n \"name\" : \"0x1a7942f7520ddd0f34", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 199988000\n}, \n{\n \"ETH_account\" : \"", +"0xd69c32cea484ca1fb1a8d43ef4eadf3a77aa6e", +"58\",\n \"name\" : \"0xd69c32cea484ca1fb1\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 27000000\n}, \n{\n \"ETH_account\" : \"0x", +"7583c7048f064800363bc31d8036f9f7deb598fa", +"\",\n \"name\" : \"lambocalrissian\",\n \"", +"publicKey\" : \"SPH6TB4L2M55ANvew9DJkUyo7V", +"FrmvB8MyAuR8rTBmbqazBV7qKBh\",\n \"balan", +"ce\" : 2789225300\n}, \n{\n \"ETH_account\"", +" : \"0x2aceb39bec19bed4b9904aee79b7fec380", +"9fbc1d\",\n \"name\" : \"0x2aceb39bec19bed", +"4b9\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 2080000000\n}, \n{\n \"ETH_account\"", +" : \"0xcdf66dd4c2659faf08e6a9bb751d8d3e77", +"c184bf\",\n \"name\" : \"0xcdf66dd4c2659fa", +"f08\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 10634661200\n}, \n{\n \"ETH_account", +"\" : \"0xfc232a0566c515b43a10a8a978af1f373", +"5efe75d\",\n \"name\" : \"0xfc232a0566c515", +"b43a\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 71000000\n}, \n{\n \"ETH_account\" ", +": \"0x1ef0e6ad093f38975cb03e371bd19e3fed8", +"2cbef\",\n \"name\" : \"0x1ef0e6ad093f3897", +"5c\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 80000000000\n}, \n{\n \"ETH_account\"", +" : \"0x124277d9de455531bb3e850f19b9bf415c", +"fede35\",\n \"name\" : \"0x124277d9de45553", +"1bb\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 3973981323\n}, \n{\n \"ETH_account\"", +" : \"0x7ece438c8098827fa68585aec17261a5b8", +"5db6c8\",\n \"name\" : \"0x7ece438c8098827", +"fa6\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 450000000\n}, \n{\n \"ETH_account\" ", +": \"0x98921fa05b390b0d1a5fe4e2b616f99d438", +"4c9aa\",\n \"name\" : \"0x98921fa05b390b0d", +"1a\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 698000000\n}, \n{\n \"ETH_account\" :", +" \"0xddd8851a102687cfa827663467ee1e2a80f2", +"0090\",\n \"name\" : \"0xddd8851a102687cfa", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1710000000\n}, \n{\n \"ETH_account\" :", +" \"0x238a81dc6846e13841408b9a04819c74bf0a", +"681d\",\n \"name\" : \"0x238a81dc6846e1384", +"1\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 620000000\n}, \n{\n \"ETH_account\" : ", +"\"0x4c29781d1696ec256bbb5f5c9c596d3d30179", +"98b\",\n \"name\" : \"0x4c29781d1696ec256b", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 22338572\n}, \n{\n \"ETH_account\" : \"0", +"xe16f6a6837937ca9c8136c64c42dc9e2c45a5ac", +"5\",\n \"name\" : \"0xe16f6a6837937ca9c8\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 683187090\n}, \n{\n \"ETH_account\" : \"0x", +"86341e73d9deb4696b1ae50dbce8f2d62fa06023", +"\",\n \"name\" : \"fleshproperty\",\n \"pu", +"blicKey\" : \"SPH5S4RcCvMgKLQNQdGHGthQUAfg", +"tKkKARRtRVF7Yyk3mu58EJS1T\",\n \"balance", +"\" : 892720000\n}, \n{\n \"ETH_account\" : ", +"\"0xeeba0b1b28996c5b6c236997c767ab5a09172", +"3f1\",\n \"name\" : \"0xeeba0b1b28996c5b6c", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 359000000\n}, \n{\n \"ETH_account\" : \"", +"0x7e3f47d30de0f572b38590e01a5dcd7b104ea4", +"bd\",\n \"name\" : \"0x7e3f47d30de0f572b3\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 240\n}, \n{\n \"ETH_account\" : \"0xfab5c", +"e26339642dbc4137b12b51d2b3d2770423c\",\n ", +" \"name\" : \"0xfab5ce26339642dbc4\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10000", +"0\n}, \n{\n \"ETH_account\" : \"0x0342efed8", +"bf307a40fb81b5ba7f7426ce8c1dd45\",\n \"n", +"ame\" : \"0x0342efed8bf307a40f\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 455978000", +"\n}, \n{\n \"ETH_account\" : \"0x4647161ddf", +"f1d0763084e90f692d076d1bc7c3c1\",\n \"na", +"me\" : \"0x4647161ddff1d07630\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1300000000", +"\n}, \n{\n \"ETH_account\" : \"0x64f91f1ca3", +"dfa18b0c225bd349bb6cc8fb6948b2\",\n \"na", +"me\" : \"0x64f91f1ca3dfa18b0c\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1592306300", +"\n}, \n{\n \"ETH_account\" : \"0x00b63dc734", +"47cadb78dfce341bd59b4e3cf6bca5\",\n \"na", +"me\" : \"0x00b63dc73447cadb78\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 594492709\n", +"}, \n{\n \"ETH_account\" : \"0x4dc29af0871", +"2fc1405fbf610ed6a2da6f7ceb50b\",\n \"nam", +"e\" : \"0x4dc29af08712fc1405\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 498252942\n}", +", \n{\n \"ETH_account\" : \"0x58e820a6f96c", +"5983cbc4abe7ff4db8bf809f5cc3\",\n \"name", +"\" : \"0x58e820a6f96c5983cb\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 250000000\n},", +" \n{\n \"ETH_account\" : \"0x9aff4dfd7783d", +"ecef6d9c1ed4d86387eeeca8c37\",\n \"name\"", +" : \"0x9aff4dfd7783decef6\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 82000000000\n}", +", \n{\n \"ETH_account\" : \"0x13c10950c813", +"0b6a119bbbcc3135ba6200c32863\",\n \"name", +"\" : \"0x13c10950c8130b6a11\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 527436839\n},", +" \n{\n \"ETH_account\" : \"0xae022f74e2930", +"fb50106ae0139eff0cfafba4a09\",\n \"name\"", +" : \"dansphtx\",\n \"publicKey\" : \"SPH8hs", +"tXTJXjjYaVh83aDpJqyq5hekHJxWgTU34i4Ht7sm", +"3Hei8wW\",\n \"balance\" : 38727560382\n},", +" \n{\n \"ETH_account\" : \"0x112b9f857ece2", +"0d8cd6fdc9b1e417736cb9c55b0\",\n \"name\"", +" : \"0x112b9f857ece20d8cd\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 2587010000\n},", +" \n{\n \"ETH_account\" : \"0x7017adb97c719", +"a9fbe18936592df06e4f949eeb1\",\n \"name\"", +" : \"contractsphtxrm\",\n \"publicKey\" : ", +"\"SPH8AfFSTA7XXGgXSAbJTbYcJfsAPy8bsZvPe87", +"1tWaQ8di8UhAoH\",\n \"balance\" : 1251345", +"8561\n}, \n{\n \"ETH_account\" : \"0xe05421", +"b3b67b9082b807e86736ac48a10afcfe6c\",\n ", +" \"name\" : \"0xe05421b3b67b9082b8\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 243229", +"9970\n}, \n{\n \"ETH_account\" : \"0xcd4c93", +"2adbb4e1d504ea9d87fc2f4fae6108d873\",\n ", +" \"name\" : \"0xcd4c932adbb4e1d504\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 20000\n", +"}, \n{\n \"ETH_account\" : \"0x819e62b4895", +"298fa4a4c1d2d62070fd3e84387eb\",\n \"nam", +"e\" : \"0x819e62b4895298fa4a\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 507034883\n}", +", \n{\n \"ETH_account\" : \"0xe69c1335878e", +"0c6175eb10fd23f55cf9d55f2897\",\n \"name", +"\" : \"0xe69c1335878e0c6175\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 197423381\n},", +" \n{\n \"ETH_account\" : \"0x5f77e2982ad77", +"a02bd4d0aee0786a28d53e78988\",\n \"name\"", +" : \"0x5f77e2982ad77a02bd\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 32000000\n}, \n", +"{\n \"ETH_account\" : \"0x2a5d259deb0bbfd", +"4325dd85e233986a3e38488e8\",\n \"name\" :", +" \"0x2a5d259deb0bbfd432\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 185101084\n}, \n{", +"\n \"ETH_account\" : \"0x29837c1c7141c713", +"717532e00a8bbee5c0b0abea\",\n \"name\" : ", +"\"delsignordaniel\",\n \"publicKey\" : \"SP", +"H89XfCYzyQvRQbVDBpYCjomku5U8Nsf1bMgbqm7G", +"63VKerSfA1d\",\n \"balance\" : 637535507\n", +"}, \n{\n \"ETH_account\" : \"0xc33a83ff245", +"2128510c6e249c1c4c019c06a88ec\",\n \"nam", +"e\" : \"0xc33a83ff2452128510\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 500000\n}, \n", +"{\n \"ETH_account\" : \"0x63fbf50b30f160f", +"00902e3fd8f3eb613d810565c\",\n \"name\" :", +" \"ejhx\",\n \"publicKey\" : \"SPH89kQb2mF8", +"C5gvTDzsjYHNtuzRMT5pkFSVBRWPpULB5h8AeA1j", +"m\",\n \"balance\" : 82544176284\n}, \n{\n ", +" \"ETH_account\" : \"0xccee5cb8512d3adc26d", +"5a5185a4d47b0d02f1455\",\n \"name\" : \"0x", +"ccee5cb8512d3adc26\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 10000000\n}, \n{\n ", +"\"ETH_account\" : \"0x614684d73e5d7008dc0b4", +"5cd9e9d2580d1d11bff\",\n \"name\" : \"evil", +"cyclotron\",\n \"publicKey\" : \"SPH8CMy3f", +"ttGWCprUNxu8FB2uwp6o5AfJqpCGwU7fim59zzqi", +"CJpc\",\n \"balance\" : 1542720000\n}, \n{\n", +" \"ETH_account\" : \"0x5437a30773f76e513", +"a286e8bfbcfc4aed0b31046\",\n \"name\" : \"", +"0x5437a30773f76e513a\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 817000000\n}, \n{\n ", +" \"ETH_account\" : \"0x12de01a12b8bc02c28", +"ffc4946c46e6abe348c7eb\",\n \"name\" : \"a", +"debosschere\",\n \"publicKey\" : \"SPH6BTG", +"wmm68G7aFeNjhhNVawRXshRfm78xS7FcF8yPZMfi", +"i82PYB\",\n \"balance\" : 2438056098\n}, \n", +"{\n \"ETH_account\" : \"0x42558220ab91139", +"7e02f1f31ef120026bef19112\",\n \"name\" :", +" \"0x42558220ab911397e0\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 40000000\n}, \n{\n", +" \"ETH_account\" : \"0xc502261d9249a30f3", +"cb8715c54d41f4424019a3a\",\n \"name\" : \"", +"scheich\",\n \"publicKey\" : \"SPH6KYPe8tL", +"XVAcgdHB1i3rx5PUL4JHHLTMU6sE7idQ4Uc9y2i1", +"Qg\",\n \"balance\" : 14190381942\n}, \n{\n ", +" \"ETH_account\" : \"0x71b4288e21170fac0a", +"507b49467933e14ed715fa\",\n \"name\" : \"0", +"x71b4288e21170fac0a\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 156460628\n}, \n{\n ", +" \"ETH_account\" : \"0xd981e58fcce8324eb08", +"0dae55f6a04e72898e054\",\n \"name\" : \"0x", +"d981e58fcce8324eb0\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 4910000000\n}, \n{\n ", +" \"ETH_account\" : \"0xc90e8a76dbc332768ec", +"ef6ae8fb7d8aceda831cb\",\n \"name\" : \"0x", +"c90e8a76dbc332768e\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 30000000\n}, \n{\n ", +"\"ETH_account\" : \"0xbf67b17d7f37bcee8dc99", +"02184955caefb4be8de\",\n \"name\" : \"0xbf", +"67b17d7f37bcee8d\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 448358963\n}, \n{\n \"", +"ETH_account\" : \"0xf2fdfdb081a68fee6b4dbb", +"a867bdd121479d1a7a\",\n \"name\" : \"jrnuf", +"h\",\n \"publicKey\" : \"SPH5vDCTXanhXEKVn", +"SBwevP2KsfCnS7fSpVbRF4Aq7p24rS9CGiKF\",\n ", +" \"balance\" : 4759500000\n}, \n{\n \"ETH", +"_account\" : \"0x5f89dfa542d6c763bce536a58", +"bbaac5827eef20c\",\n \"name\" : \"oozewall", +"et\",\n \"publicKey\" : \"SPH7JJTwpcsNobp2", +"X2DeYYvMAVp6icJbon5nw8aBwV5G9CbEukCVf\",\n", +" \"balance\" : 991073428\n}, \n{\n \"ETH", +"_account\" : \"0x529ab4cbc491cfee94c03cfed", +"37ec9752e29d897\",\n \"name\" : \"0x529ab4", +"cbc491cfee94\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 430263\n}, \n{\n \"ETH_acc", +"ount\" : \"0xfabd38e19d18765b606755a48b17e", +"947da26d9c4\",\n \"name\" : \"0xfabd38e19d", +"18765b60\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 995582254\n}, \n{\n \"ETH_acco", +"unt\" : \"0xb20c7e84f001bdea0803466261a69b", +"66a3ed1239\",\n \"name\" : \"0xb20c7e84f00", +"1bdea08\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 77899764\n}, \n{\n \"ETH_accoun", +"t\" : \"0x628684fc0bbaa3d09f56d69e578c77e1", +"d630f5a2\",\n \"name\" : \"0x628684fc0bbaa", +"3d09f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 127265400\n}, \n{\n \"ETH_account", +"\" : \"0xb47ae344f18fa39c76774d2b6d0458745", +"e6847da\",\n \"name\" : \"0xb47ae344f18fa3", +"9c76\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 116318100\n}, \n{\n \"ETH_account\"", +" : \"0x9f9c86a1c6b3ca15f3c2b507f54ed721bd", +"79eb1d\",\n \"name\" : \"0x9f9c86a1c6b3ca1", +"5f3\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 8280000000\n}, \n{\n \"ETH_account\"", +" : \"0x84cb9b540fb57877e13157d67050eccd52", +"48987e\",\n \"name\" : \"0x84cb9b540fb5787", +"7e1\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 251000000\n}, \n{\n \"ETH_account\" ", +": \"0xbc48e0001d94fcffecbebd1bb3e82fb1eff", +"56c44\",\n \"name\" : \"0xbc48e0001d94fcff", +"ec\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 28560000000\n}, \n{\n \"ETH_account\"", +" : \"0x67d50c840234874a292e27c69237c2eaea", +"5a8e82\",\n \"name\" : \"0x67d50c840234874", +"a29\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 2288010000\n}, \n{\n \"ETH_account\"", +" : \"0x688ba89cf568cb4f3334bc56c4691454ce", +"93a500\",\n \"name\" : \"0x688ba89cf568cb4", +"f33\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 48600033600\n}, \n{\n \"ETH_account", +"\" : \"0x6fe8596d8f7cf42a209d6b87921234706", +"29ff502\",\n \"name\" : \"0x6fe8596d8f7cf4", +"2a20\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 2243077500\n}, \n{\n \"ETH_account", +"\" : \"0xd1d4ca7263b6fefe278bfc6e6881d0bac", +"4896aed\",\n \"name\" : \"0xd1d4ca7263b6fe", +"fe27\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1722243300\n}, \n{\n \"ETH_account", +"\" : \"0xc24e9015d6d88a76b310547d631ca5361", +"b14be64\",\n \"name\" : \"0xc24e9015d6d88a", +"76b3\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 75710000\n}, \n{\n \"ETH_account\" ", +": \"0xcde22c488b66e4c0af02cb0c946dac9e371", +"e9390\",\n \"name\" : \"0xcde22c488b66e4c0", +"af\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 1928000000\n}, \n{\n \"ETH_account\" ", +": \"0x89f733fbf6ff245f983d95d98bcccf1ff23", +"62118\",\n \"name\" : \"0x89f733fbf6ff245f", +"98\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 2500615280\n}, \n{\n \"ETH_account\" ", +": \"0x7e9b9bd78ed22f31761e50abc695af1f901", +"883d3\",\n \"name\" : \"0x7e9b9bd78ed22f31", +"76\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 152000000\n}, \n{\n \"ETH_account\" :", +" \"0x99f7b0c6e2124df496d8cc89c01e6323cd49", +"4b04\",\n \"name\" : \"0x99f7b0c6e2124df49", +"6\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1500000000\n}, \n{\n \"ETH_account\" :", +" \"0xab4ae626cbc93297e1ccce1dcd907cfa198b", +"84c1\",\n \"name\" : \"0xab4ae626cbc93297e", +"1\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1436500000\n}, \n{\n \"ETH_account\" :", +" \"0xa6031d5910501a0cd231224c76ba0c6d529a", +"786f\",\n \"name\" : \"0xa6031d5910501a0cd", +"2\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 96200000\n}, \n{\n \"ETH_account\" : \"", +"0x7739d43dba975c2e95ac7414a13c7f3ec969e7", +"35\",\n \"name\" : \"svenhokke\",\n \"publ", +"icKey\" : \"SPH7XQp7tb288uXzNdGj1QAsN3ixjp", +"KoCJim9gfZpFtqwj2aGGzpx\",\n \"balance\" ", +": 7500000000\n}, \n{\n \"ETH_account\" : \"", +"0x45db533e620c1b0a1400ca41bdff429030ee53", +"91\",\n \"name\" : \"0x45db533e620c1b0a14\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 502000000\n}, \n{\n \"ETH_account\" : \"0", +"x9df56080d31cf156e4078aee013549917afd305", +"d\",\n \"name\" : \"0x9df56080d31cf156e4\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 629000000\n}, \n{\n \"ETH_account\" : \"0x", +"42cc40f5a8516ab48d116716aab090b7a7794e71", +"\",\n \"name\" : \"0x42cc40f5a8516ab48d\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"33000000\n}, \n{\n \"ETH_account\" : \"0xa0", +"8c5f29955696cd2e6dbcd11004e82dd4ecab31\",", +"\n \"name\" : \"0xa08c5f29955696cd2e\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 28", +"7000000\n}, \n{\n \"ETH_account\" : \"0xbbb", +"3b5011347c64b3d57dba007263e27959787fa\",\n", +" \"name\" : \"0xbbb3b5011347c64b3d\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 109", +"85000000\n}, \n{\n \"ETH_account\" : \"0xc2", +"ba77a1e9a5842333f2962712c7fb3b6d973588\",", +"\n \"name\" : \"0xc2ba77a1e9a5842333\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 97", +"500000\n}, \n{\n \"ETH_account\" : \"0xea21", +"c6b31ff490dc742dde30ba7fc89ac216bbe3\",\n ", +" \"name\" : \"0xea21c6b31ff490dc74\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5320", +"00000\n}, \n{\n \"ETH_account\" : \"0x0a5c9", +"606ee6a32e0add7eb3132781806e18bc27e\",\n ", +" \"name\" : \"0x0a5c9606ee6a32e0ad\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 66638", +"3000\n}, \n{\n \"ETH_account\" : \"0xa221cf", +"fd88bd4a61834ae22fa3c346bcfe762445\",\n ", +" \"name\" : \"0xa221cffd88bd4a6183\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 300070", +"0000\n}, \n{\n \"ETH_account\" : \"0x6c5504", +"c5d80f39bb35b1dc25bc271bdbc4b04a99\",\n ", +" \"name\" : \"0x6c5504c5d80f39bb35\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 560268", +"334\n}, \n{\n \"ETH_account\" : \"0xc1a4ce8", +"f312f2e44a402c0e4fc6360019566e8ff\",\n ", +"\"name\" : \"0xc1a4ce8f312f2e44a4\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 3370000", +"00\n}, \n{\n \"ETH_account\" : \"0x6e571bf4", +"1ac14280bd18b7216773fe577af244c8\",\n \"", +"name\" : \"0x6e571bf41ac14280bd\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 34100000", +"00\n}, \n{\n \"ETH_account\" : \"0x1508e175", +"600c9b74e5a40f7ae4749ee83975412f\",\n \"", +"name\" : \"0x1508e175600c9b74e5\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 14102400", +"00\n}, \n{\n \"ETH_account\" : \"0x7149528b", +"cef8766adc958cc74a47df98d95c3a32\",\n \"", +"name\" : \"0x7149528bcef8766adc\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10000000", +"\n}, \n{\n \"ETH_account\" : \"0xf1dd75ef1e", +"05549c2ee4caf1d82e539d8f3fbf27\",\n \"na", +"me\" : \"0xf1dd75ef1e05549c2e\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1707088000", +"\n}, \n{\n \"ETH_account\" : \"0x266e69a810", +"b20a8ee17a1dc4a576fa5345db41db\",\n \"na", +"me\" : \"0x266e69a810b20a8ee1\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1512445645", +"\n}, \n{\n \"ETH_account\" : \"0xaf849d35b9", +"429098650b9ea35c0f377a1efe75aa\",\n \"na", +"me\" : \"0xaf849d35b942909865\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 20000000\n}", +", \n{\n \"ETH_account\" : \"0x5551d5d059ad", +"db097fb06ed294d9a15da30235c8\",\n \"name", +"\" : \"0x5551d5d059addb097f\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 916050597\n},", +" \n{\n \"ETH_account\" : \"0xfabd70bd8f265", +"73e98e586b453b562e03dafa1ef\",\n \"name\"", +" : \"0xfabd70bd8f26573e98\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 175320000\n}, ", +"\n{\n \"ETH_account\" : \"0xfb4b5fcc31ab6b", +"960a2b46aabce928b82bac617b\",\n \"name\" ", +": \"0xfb4b5fcc31ab6b960a\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1815000000\n}, ", +"\n{\n \"ETH_account\" : \"0x454c1f94df8178", +"575f7d1603a063515a18446988\",\n \"name\" ", +": \"0x454c1f94df8178575f\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 7459584300\n}, ", +"\n{\n \"ETH_account\" : \"0x2959e3f2cbe109", +"2e695c7509aeda141181ba9b1a\",\n \"name\" ", +": \"0x2959e3f2cbe1092e69\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 259310482\n}, \n", +"{\n \"ETH_account\" : \"0x0d4038ecffc87b2", +"1090ab77ae0ebf36a5ab29c7d\",\n \"name\" :", +" \"amcsphtx\",\n \"publicKey\" : \"SPH7YVpR", +"6FXUybeReL2NiwUqgkie9nLG5mUoGrLBFKtMg9kd", +"ZofZM\",\n \"balance\" : 5105163926\n}, \n{", +"\n \"ETH_account\" : \"0xed53036721b299a5", +"d8d766a75fb9e4ecf90d4038\",\n \"name\" : ", +"\"0xed53036721b299a5d8\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 98995051\n}, \n{\n ", +" \"ETH_account\" : \"0x04c19ba52106efeec2", +"b2a360d2616fec6b934fe3\",\n \"name\" : \"0", +"x04c19ba52106efeec2\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 14824280136\n}, \n{\n", +" \"ETH_account\" : \"0xa308c8775b70fe575", +"d7a8a95a8e6e339ebda90d9\",\n \"name\" : \"", +"0xa308c8775b70fe575d\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 455729764\n}, \n{\n ", +" \"ETH_account\" : \"0x40f3fa2739f82abc57", +"c4176addad2cc57f5823cb\",\n \"name\" : \"0", +"x40f3fa2739f82abc57\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 995391679\n}, \n{\n ", +" \"ETH_account\" : \"0xb3d2a24537dcdfbd0fa", +"5bde37445d31ed0215607\",\n \"name\" : \"0x", +"b3d2a24537dcdfbd0f\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1415846667\n}, \n{\n ", +" \"ETH_account\" : \"0x45e64e5025abb6a41b4", +"39d2b6b32db6fccf070e4\",\n \"name\" : \"sp", +"leeky\",\n \"publicKey\" : \"SPH6oYCxtZbnk", +"wa7cpWYcxLkmM7WaDpioXaxDpdMtWFGDYbpi7LhA", +"\",\n \"balance\" : 14601590000\n}, \n{\n ", +" \"ETH_account\" : \"0xb24deaa915ae79152107", +"7a300f7d6becdb921bf6\",\n \"name\" : \"0xb", +"24deaa915ae791521\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 996179801\n}, \n{\n ", +"\"ETH_account\" : \"0xc34153e89ff7936b7000d", +"db6807dd6575b7c4329\",\n \"name\" : \"0xc3", +"4153e89ff7936b70\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 10021000000\n}, \n{\n ", +" \"ETH_account\" : \"0xa4088ceb6ea9134f5a45", +"7ae559ec611cd37510c6\",\n \"name\" : \"0xa", +"4088ceb6ea9134f5a\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 582451604\n}, \n{\n ", +"\"ETH_account\" : \"0xff6a1b3af822479a00476", +"571c33eaa2e39587b49\",\n \"name\" : \"0xff", +"6a1b3af822479a00\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 31000000\n}, \n{\n \"E", +"TH_account\" : \"0x8fe98ad69b1378b011db787", +"3087f55f86e385e36\",\n \"name\" : \"0x8fe9", +"8ad69b1378b011\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 3400000000\n}, \n{\n \"E", +"TH_account\" : \"0xa5939abdec1ee8a91ab56cd", +"1490bdfe0f89964c0\",\n \"name\" : \"0xa593", +"9abdec1ee8a91a\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 20639000000\n}, \n{\n \"", +"ETH_account\" : \"0x55307745db0c5c3faeebef", +"58af1696d7a5031248\",\n \"name\" : \"0x553", +"07745db0c5c3fae\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1843493803\n}, \n{\n \"", +"ETH_account\" : \"0xa4186287c3caa796c0133b", +"f3cc4d09289789cb4f\",\n \"name\" : \"0xa41", +"86287c3caa796c0\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 62000000\n}, \n{\n \"ET", +"H_account\" : \"0x1828185008fc5b89a0923f74", +"3ad3d6a4c71635c5\",\n \"name\" : \"0x18281", +"85008fc5b89a0\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 800000000\n}, \n{\n \"ETH", +"_account\" : \"0xfb5f900b62365efe56eabfb84", +"033c5ffcf22a46c\",\n \"name\" : \"0xfb5f90", +"0b62365efe56\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 50000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x2760581a6f5bb0d3f53047a80c9", +"280229b36093e\",\n \"name\" : \"0x2760581a", +"6f5bb0d3f5\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 172000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x4636553f6c8ae71d14eb34600616", +"38e0475a9cd7\",\n \"name\" : \"0x4636553f6", +"c8ae71d14\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 152000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x975d74f868bdd630e0655454b9ece", +"9e0dcb63c1b\",\n \"name\" : \"0x975d74f868", +"bdd630e0\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1269000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x47f34cdc8ded1b4313e5a701411e5", +"0cc7ab22188\",\n \"name\" : \"0x47f34cdc8d", +"ed1b4313\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 7395707100\n}, \n{\n \"ETH_acc", +"ount\" : \"0x83ceb0f0a7ebac1d764680d9455bb", +"a24ff52a1a6\",\n \"name\" : \"0x83ceb0f0a7", +"ebac1d76\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 4370000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xa16e37864c1bb1c34160f1d55cf7a", +"3786079af19\",\n \"name\" : \"0xa16e37864c", +"1bb1c341\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 14202960000\n}, \n{\n \"ETH_ac", +"count\" : \"0x76f785adf443be85928b56771ef3", +"087e8e5fb33a\",\n \"name\" : \"0x76f785adf", +"443be8592\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 34793203\n}, \n{\n \"ETH_acco", +"unt\" : \"0x2abaead300d4447bfabffea79a8abd", +"c174a01b1b\",\n \"name\" : \"0x2abaead300d", +"4447bfa\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 327298811\n}, \n{\n \"ETH_accou", +"nt\" : \"0x0026f1d819e9f3a2a836da969c7fe98", +"ed72d9454\",\n \"name\" : \"0x0026f1d819e9", +"f3a2a8\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 350000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x3340a0606fb39202080706632b8bf68a", +"98ba2dd5\",\n \"name\" : \"0x3340a0606fb39", +"20208\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 2017720000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x4d937aa42a7c4d2389e271bd9f359e40", +"a758d7f8\",\n \"name\" : \"0x4d937aa42a7c4", +"d2389\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1030354088\n}, \n{\n \"ETH_accoun", +"t\" : \"0x2cc4f04c8d6e3350dfc166a5264f085a", +"42d25906\",\n \"name\" : \"0x2cc4f04c8d6e3", +"350df\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 2630429900\n}, \n{\n \"ETH_accoun", +"t\" : \"0x3688ed0738f7d8ee0be3e755ddbedf86", +"3c683997\",\n \"name\" : \"0x3688ed0738f7d", +"8ee0b\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 517983284\n}, \n{\n \"ETH_account", +"\" : \"0xd704906e8395d3c753b20fdda88ba83a4", +"c89d15b\",\n \"name\" : \"0xd704906e8395d3", +"c753\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 25\n}, \n{\n \"ETH_account\" : \"0xc", +"4da44b9b928c5bf15b974aa65cdab48f041c771\"", +",\n \"name\" : \"0xc4da44b9b928c5bf15\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"015126237\n}, \n{\n \"ETH_account\" : \"0xd", +"ecfe644a306ae8a2eb102133995aaa29860a9f5\"", +",\n \"name\" : \"0xdecfe644a306ae8a2e\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"427237977\n}, \n{\n \"ETH_account\" : \"0x1", +"53ce52e10c1b47efc9e6f0604e95d713f808998\"", +",\n \"name\" : \"0x153ce52e10c1b47efc\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 7", +"2629090\n}, \n{\n \"ETH_account\" : \"0x6fd", +"5a0d8018d56ce1e8695d4a93413d9fcb76be4\",\n", +" \"name\" : \"0x6fd5a0d8018d56ce1e\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 242", +"4380000\n}, \n{\n \"ETH_account\" : \"0xe78", +"7308582e508515d212b6371a8a8be3bc33b46\",\n", +" \"name\" : \"0xe787308582e508515d\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 720", +"000\n}, \n{\n \"ETH_account\" : \"0x465c82b", +"3e1c1aed870ac2086e14cfcf07bab0465\",\n ", +"\"name\" : \"0x465c82b3e1c1aed870\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1001930", +"000\n}, \n{\n \"ETH_account\" : \"0x4fc15f8", +"6d163f70c3cb210f27ddf4ccb9f5cba82\",\n ", +"\"name\" : \"0x4fc15f86d163f70c3c\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4672509", +"584\n}, \n{\n \"ETH_account\" : \"0xb516bc9", +"9cb09125c7379efc1e04ca3ddceb419c7\",\n ", +"\"name\" : \"0xb516bc99cb09125c73\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 8398681", +"39\n}, \n{\n \"ETH_account\" : \"0x1fd64249", +"83e36b9e1cae5da7a1f73aa053906130\",\n \"", +"name\" : \"0x1fd6424983e36b9e1c\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 33720000", +"00\n}, \n{\n \"ETH_account\" : \"0xb0220d91", +"199e4b83a84c5108212c47a3410ea787\",\n \"", +"name\" : \"qazxswedcvfrtgb\",\n \"publicKe", +"y\" : \"SPH8BPCa4R7839nBTfMH6V1GAkieTnic2F", +"D2RyyT5nfF9x1m8XKrC\",\n \"balance\" : 10", +"195159540\n}, \n{\n \"ETH_account\" : \"0x4", +"6c5ef63cded9a411ee43a86199d8a1c4d9c1c81\"", +",\n \"name\" : \"0x46c5ef63cded9a411e\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"25950267\n}, \n{\n \"ETH_account\" : \"0x59", +"b0333fdddae7c758e67ae5b64d21073dc25ce3\",", +"\n \"name\" : \"0x59b0333fdddae7c758\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 45", +"04000000\n}, \n{\n \"ETH_account\" : \"0x21", +"4ab21a658d70a4006655c74cdf0441def73be0\",", +"\n \"name\" : \"0x214ab21a658d70a400\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 20", +"35993000\n}, \n{\n \"ETH_account\" : \"0x5f", +"114867d351a38ebfe57f459bc651afdf667e42\",", +"\n \"name\" : \"0x5f114867d351a38ebf\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 12", +"1663000\n}, \n{\n \"ETH_account\" : \"0xca6", +"4472a42866a82409623ffcfa58b5a0019d50b\",\n", +" \"name\" : \"0xca64472a42866a8240\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 399", +"000000\n}, \n{\n \"ETH_account\" : \"0x6250", +"173790cd3005a694af5bf52c6f0959133c15\",\n ", +" \"name\" : \"0x6250173790cd3005a6\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2300", +"00000\n}, \n{\n \"ETH_account\" : \"0x324ba", +"0a8fc1f93179adebbb57f3d07cd66bcd626\",\n ", +" \"name\" : \"0x324ba0a8fc1f93179a\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 79672", +"0000\n}, \n{\n \"ETH_account\" : \"0xd29f4f", +"7294fbaf8e57849834ca6bdcdfa06adcb3\",\n ", +" \"name\" : \"victorsophia\",\n \"publicKey", +"\" : \"SPH5TcVugHcmBrBWzuH2SNgB33TznEqb53Z", +"GTzexdC2vHcZzaVQrT\",\n \"balance\" : 120", +"000000\n}, \n{\n \"ETH_account\" : \"0xf1b2", +"11041c605472067825f575642fac28e6b191\",\n ", +" \"name\" : \"0xf1b211041c60547206\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2343", +"01696\n}, \n{\n \"ETH_account\" : \"0x297eb", +"7877064bd23e1f62104601452ba174e65f6\",\n ", +" \"name\" : \"0x297eb7877064bd23e1\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 59405", +"6\n}, \n{\n \"ETH_account\" : \"0x7a5a61c46", +"a85a7fba9bd39247aec09b02a4c220c\",\n \"n", +"ame\" : \"0x7a5a61c46a85a7fba9\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 93000000\n", +"}, \n{\n \"ETH_account\" : \"0x2f8f715e716", +"84000dc0ca4ba4277dce6e1e4529a\",\n \"nam", +"e\" : \"0x2f8f715e71684000dc\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 95000000\n},", +" \n{\n \"ETH_account\" : \"0x751ddb17f2b22", +"bad74ebd6a94f87fe318a877d1f\",\n \"name\"", +" : \"0x751ddb17f2b22bad74\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 107899137\n}, ", +"\n{\n \"ETH_account\" : \"0x191d29e4bc7778", +"7e6a45829c90dbf854cd81f10e\",\n \"name\" ", +": \"0x191d29e4bc77787e6a\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 5660000\n}, \n{\n", +" \"ETH_account\" : \"0xa64d4c28b4f07d105", +"9235bf615b078c33abcb618\",\n \"name\" : \"", +"0xa64d4c28b4f07d1059\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 10114360342\n}, \n{", +"\n \"ETH_account\" : \"0x7e7435fc96bb0fe9", +"7c853962eaaed2c71fd66a28\",\n \"name\" : ", +"\"0x7e7435fc96bb0fe97c\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 526554426\n}, \n{\n", +" \"ETH_account\" : \"0x78179c46cb84ec3fb", +"df3e3c3118593c921793cf2\",\n \"name\" : \"", +"0x78179c46cb84ec3fbd\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 605913953\n}, \n{\n ", +" \"ETH_account\" : \"0x803cb32abfe7bf7ed9", +"fb4fbe6fe2b93d55d49ddc\",\n \"name\" : \"0", +"x803cb32abfe7bf7ed9\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 6500000000\n}, \n{\n ", +" \"ETH_account\" : \"0x060dcb0f683d480f55", +"c696a607c8defb82b9bb06\",\n \"name\" : \"0", +"x060dcb0f683d480f55\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 848678078\n}, \n{\n ", +" \"ETH_account\" : \"0xac594e3e1a13141d4ab", +"8740a8e59bc14aa0c2832\",\n \"name\" : \"0x", +"ac594e3e1a13141d4a\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 5000000000\n}, \n{\n ", +" \"ETH_account\" : \"0xd6551c7af6721527f80", +"02f1d29f6a7e9be734834\",\n \"name\" : \"0x", +"d6551c7af6721527f8\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1859000000\n}, \n{\n ", +" \"ETH_account\" : \"0xf0669b87ba951baee6c", +"a1877db5f2a33ce61bbc9\",\n \"name\" : \"gr", +"een\",\n \"publicKey\" : \"SPH5cAgBBJton38", +"WG7dieN41bNy3xeRC7GmyzAu6mnWy1PNvPaiVb\",", +"\n \"balance\" : 16887124277\n}, \n{\n \"", +"ETH_account\" : \"0xb3760357455f01f56e1278", +"85a9b312c05035bc19\",\n \"name\" : \"molso", +"n\",\n \"publicKey\" : \"SPH6LZd3HbYc1AL1d", +"6PnQ3VY5syA43kfAzuHQZCcajYDG12UmxyAm\",\n ", +" \"balance\" : 9149191587\n}, \n{\n \"ETH", +"_account\" : \"0x536340f03642901f00256a9c3", +"47cdbc78390a295\",\n \"name\" : \"0x536340", +"f03642901f00\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 468623928\n}, \n{\n \"ETH_", +"account\" : \"0xb9cd258f971741c9e273467b4a", +"521d3178f54d05\",\n \"name\" : \"0xb9cd258", +"f971741c9e2\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2539565145\n}, \n{\n \"ETH_", +"account\" : \"0x35b8be899dde1e725252644a77", +"700e8d5b8e1f75\",\n \"name\" : \"0x35b8be8", +"99dde1e7252\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 12733000000\n}, \n{\n \"ETH", +"_account\" : \"0x4d2e78a6882eb396e78389dd8", +"071a74a6cce700c\",\n \"name\" : \"0x4d2e78", +"a6882eb396e7\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 5262806823\n}, \n{\n \"ETH", +"_account\" : \"0xe8b0e8d33f52d5986cd2ba52e", +"942d847371a3e29\",\n \"name\" : \"0xe8b0e8", +"d33f52d5986c\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 13497000000\n}, \n{\n \"ET", +"H_account\" : \"0xd048261ba81c8c952891d29b", +"d9a94d0a7b94c3c6\",\n \"name\" : \"0xd0482", +"61ba81c8c9528\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 10800000\n}, \n{\n \"ETH_", +"account\" : \"0xa0bb8e3f9f447c0ae8bf9a67ec", +"a6b43d618bbaca\",\n \"name\" : \"0xa0bb8e3", +"f9f447c0ae8\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 400000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x8ad13bf10b606ad30690dab1634", +"99c412f6468a7\",\n \"name\" : \"0x8ad13bf1", +"0b606ad306\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 57550000000\n}, \n{\n \"ETH_", +"account\" : \"0x313a7bfc9bc77b7360b6665481", +"9033b9bcf118a8\",\n \"name\" : \"0x313a7bf", +"c9bc77b7360\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1206179000\n}, \n{\n \"ETH_", +"account\" : \"0x51d3547e21cc0f63c043c318e5", +"7f236a8b940c2d\",\n \"name\" : \"0x51d3547", +"e21cc0f63c0\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 4757000000\n}, \n{\n \"ETH_", +"account\" : \"0xfa929891388befc66d3cb7ad96", +"ddb88ec1df920d\",\n \"name\" : \"0xfa92989", +"1388befc66d\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2500000000\n}, \n{\n \"ETH_", +"account\" : \"0x399b02422f268ea7b53038f1db", +"8aa5c3a9989aa8\",\n \"name\" : \"0x399b024", +"22f268ea7b5\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 100000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xab6523974f48ca4a5e580319765", +"20f60051ac664\",\n \"name\" : \"0xab652397", +"4f48ca4a5e\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2142717900\n}, \n{\n \"ETH_a", +"ccount\" : \"0x73fcd27f5da1f3a7b7bcfd26538", +"75bb311d3698c\",\n \"name\" : \"0x73fcd27f", +"5da1f3a7b7\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 9984055267\n}, \n{\n \"ETH_a", +"ccount\" : \"0x579d31de8050f87bb1067dbac82", +"7d89e2e1df5dc\",\n \"name\" : \"0x579d31de", +"8050f87bb1\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1194930000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x7b50d6c8000745c8d078456ae3e", +"7c650b76a643b\",\n \"name\" : \"0x7b50d6c8", +"000745c8d0\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1524227260\n}, \n{\n \"ETH_a", +"ccount\" : \"0x1f73d74fecb522e1dfcd844cc4c", +"afbb6a31caa66\",\n \"name\" : \"0x1f73d74f", +"ecb522e1df\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 983999987\n}, \n{\n \"ETH_ac", +"count\" : \"0x8bf0d09ba8dfb6105cd2232b4cab", +"dc7b804ba491\",\n \"name\" : \"0x8bf0d09ba", +"8dfb6105c\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 2898447790\n}, \n{\n \"ETH_ac", +"count\" : \"0xd1fccfddd22be6597324c5f5a8ea", +"1d7bdc2d9359\",\n \"name\" : \"0xd1fccfddd", +"22be65973\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 10000000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x1c51ed62663889de300b0993416", +"064737a274852\",\n \"name\" : \"0x1c51ed62", +"663889de30\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 240947876\n}, \n{\n \"ETH_ac", +"count\" : \"0xef591e2be31b54f8af52c8ace9dd", +"ff654b32022e\",\n \"name\" : \"0xef591e2be", +"31b54f8af\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1833218012\n}, \n{\n \"ETH_ac", +"count\" : \"0x210a60f5ff78ab65910edafc9b19", +"2cd1fea035b1\",\n \"name\" : \"0x210a60f5f", +"f78ab6591\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 821583366\n}, \n{\n \"ETH_acc", +"ount\" : \"0xf00115fb4c70f24c1540ff0ca5309", +"3e27a7a1649\",\n \"name\" : \"0xf00115fb4c", +"70f24c15\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 900\n}, \n{\n \"ETH_account\" :", +" \"0xa797c320f1bf2bbe730ef0c48c9737f2e020", +"ef94\",\n \"name\" : \"0xa797c320f1bf2bbe7", +"3\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 95974878\n}, \n{\n \"ETH_account\" : \"", +"0xad8b1ebc7aa0f016463f28e3c7cbfa9cf11fd2", +"74\",\n \"name\" : \"0xad8b1ebc7aa0f01646\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 234932000000\n}, \n{\n \"ETH_account\" :", +" \"0x3ccaf896873d31ef0620f7199f20455d4ecd", +"ed69\",\n \"name\" : \"daisy\",\n \"public", +"Key\" : \"SPH741mzay3ArbHupu3ojPs5pPKEuP6n", +"4tYu1kQ2kA6sMmsp1pqxK\",\n \"balance\" : ", +"701017200\n}, \n{\n \"ETH_account\" : \"0xb", +"64d0877e256575b127d19b133baa92c1cb6e52f\"", +",\n \"name\" : \"0xb64d0877e256575b12\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"732347387\n}, \n{\n \"ETH_account\" : \"0x9", +"8b6df06b9c31831ac073239c508c1c6978cc691\"", +",\n \"name\" : \"0x98b6df06b9c31831ac\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"61\n}, \n{\n \"ETH_account\" : \"0x1ab56269", +"888eb2209abcc2e958aec2756c32ab90\",\n \"", +"name\" : \"0x1ab56269888eb2209a\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 69883070", +"0\n}, \n{\n \"ETH_account\" : \"0xee1e75a3a", +"e13e5c3a43ce918f0f40c45a8679ccf\",\n \"n", +"ame\" : \"0xee1e75a3ae13e5c3a4\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 590684\n},", +" \n{\n \"ETH_account\" : \"0x5429401d86942", +"75fe1738ed67046763bda94b06f\",\n \"name\"", +" : \"0x5429401d8694275fe1\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 106441767628\n", +"}, \n{\n \"ETH_account\" : \"0x6e659904270", +"9567eaa46f6063b10d8380d0a86d1\",\n \"nam", +"e\" : \"0x6e6599042709567eaa\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 170330335\n}", +", \n{\n \"ETH_account\" : \"0x84d6149f0aa4", +"6fa43989224f434ca934b1a84a53\",\n \"name", +"\" : \"0x84d6149f0aa46fa439\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 500000000\n},", +" \n{\n \"ETH_account\" : \"0xc0f56603743b8", +"f4dc39c86a68d164bab964da232\",\n \"name\"", +" : \"0xc0f56603743b8f4dc3\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 3340000000\n},", +" \n{\n \"ETH_account\" : \"0x3927c48a11832", +"17a7532fc752ca9ff6812ca883d\",\n \"name\"", +" : \"0x3927c48a1183217a75\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 150000000\n}, ", +"\n{\n \"ETH_account\" : \"0xbe983b6aa60520", +"6d304e72c4d0441fed9f2afd95\",\n \"name\" ", +": \"0xbe983b6aa605206d30\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 7740000000\n}, ", +"\n{\n \"ETH_account\" : \"0xba6b94865bd26b", +"b12ce9c4ef59706551b9737dba\",\n \"name\" ", +": \"0xba6b94865bd26bb12c\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 351361003\n}, \n", +"{\n \"ETH_account\" : \"0x7f6b5ede5b5bc9f", +"7aa04a42b8c2ea014da072a60\",\n \"name\" :", +" \"0x7f6b5ede5b5bc9f7aa\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 7414038065\n}, \n", +"{\n \"ETH_account\" : \"0x943febbdddedf17", +"28d17997865ec6bdf22687db3\",\n \"name\" :", +" \"0x943febbdddedf1728d\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 4126669876\n}, \n", +"{\n \"ETH_account\" : \"0xd98d33559d85d70", +"d46d4facbcdee6d1ffaa4cbba\",\n \"name\" :", +" \"wissy\",\n \"publicKey\" : \"SPH7UHGHMYK", +"XvjnjgmoqcPDmPsbxefg7TY4xrJUz9fpwwucmNxB", +"Hk\",\n \"balance\" : 5827003366\n}, \n{\n ", +" \"ETH_account\" : \"0xcda58aac2b5d984a115", +"d399117335e0da88c5df2\",\n \"name\" : \"0x", +"cda58aac2b5d984a11\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1756373743\n}, \n{\n ", +" \"ETH_account\" : \"0x3012f64794b2376c8ea", +"1a5cdee8bd1721af084a9\",\n \"name\" : \"sp", +"htxseros\",\n \"publicKey\" : \"SPH7PERjKG", +"yXamNXej6yKX3FBAurTinzBpktGqJCMA6DgkoHWK", +"bSo\",\n \"balance\" : 245000000\n}, \n{\n ", +" \"ETH_account\" : \"0x7805f95ec3a83ddf2a4", +"da31af596ba7895a6f804\",\n \"name\" : \"0x", +"7805f95ec3a83ddf2a\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 3266864000\n}, \n{\n ", +" \"ETH_account\" : \"0x7ed70232df2aa569082", +"04c8679bcb78d44731070\",\n \"name\" : \"0x", +"7ed70232df2aa56908\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 60682730792\n}, \n{\n ", +" \"ETH_account\" : \"0x07e351da0f0bcedd0e", +"ed76029e9c4e901e9bffee\",\n \"name\" : \"0", +"x07e351da0f0bcedd0e\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 712923559\n}, \n{\n ", +" \"ETH_account\" : \"0x00d44426ca561c35e5c", +"469b2c83ae1bb94f92472\",\n \"name\" : \"0x", +"00d44426ca561c35e5\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1775000000\n}, \n{\n ", +" \"ETH_account\" : \"0x180f1d236f9f46e0dde", +"20e4ced1c8792d23c69d3\",\n \"name\" : \"ad", +"amov\",\n \"publicKey\" : \"SPH7KvEF39TQ9m", +"P5cbRHyva8Mu5gCKkEYQipMC8NFCi2VXuj4RDEu\"", +",\n \"balance\" : 3599822700\n}, \n{\n \"", +"ETH_account\" : \"0x8876bd9f5d3b0faa5bb999", +"f759714f0eda3fdf5e\",\n \"name\" : \"0x887", +"6bd9f5d3b0faa5b\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 621\n}, \n{\n \"ETH_acc", +"ount\" : \"0xa1171dea8897c89af612ab30df5d7", +"4999de38093\",\n \"name\" : \"0xa1171dea88", +"97c89af6\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 295886500\n}, \n{\n \"ETH_acco", +"unt\" : \"0x5af197caeec0647a1e66fd00b355c4", +"680a2dee49\",\n \"name\" : \"0x5af197caeec", +"0647a1e\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1134344673\n}, \n{\n \"ETH_acco", +"unt\" : \"0x96b9aafd45768b6206884926b9ac2a", +"f1ab3ea67e\",\n \"name\" : \"0x96b9aafd457", +"68b6206\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 16491423300\n}, \n{\n \"ETH_acc", +"ount\" : \"0xe49067260fcc9af4414011a04194e", +"4f3a16d5041\",\n \"name\" : \"0xe49067260f", +"cc9af441\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 4344933300\n}, \n{\n \"ETH_acc", +"ount\" : \"0x29e847f6af498adce7d9a19b463c9", +"28d374cc196\",\n \"name\" : \"0x29e847f6af", +"498adce7\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 263000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x92b6c4d71dd322f798b95101bb035e", +"184906e99f\",\n \"name\" : \"0x92b6c4d71dd", +"322f798\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 2037000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x63aeec3e6b5b32aa00cbb9e1538d32", +"ffdc68539f\",\n \"name\" : \"0x63aeec3e6b5", +"b32aa00\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 5096724600\n}, \n{\n \"ETH_acco", +"unt\" : \"0x7e8ec116a535c08002a2312a87e4ab", +"783ee60cb0\",\n \"name\" : \"0x7e8ec116a53", +"5c08002\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1163000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x260f971ef7444ebe1da66a6913b7df", +"387562e5cb\",\n \"name\" : \"0x260f971ef74", +"44ebe1d\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 2035000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x754b54e466a36cef00b0d53805cd3d", +"66c794fa18\",\n \"name\" : \"0x754b54e466a", +"36cef00\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 7300\n}, \n{\n \"ETH_account\" :", +" \"0x05a81e4a46af85aa51c4bdc4850986f55482", +"5b55\",\n \"name\" : \"oliviabangbank\",\n ", +" \"publicKey\" : \"SPH56yVon1pLfBfSGAd2civ", +"saswF934v2Cpv9z4x9EJKQK73JxqdZ\",\n \"ba", +"lance\" : 4382514200\n}, \n{\n \"ETH_accou", +"nt\" : \"0x215c3f138ab90a5ec95a082b5199829", +"8779540f7\",\n \"name\" : \"vitawur\",\n ", +"\"publicKey\" : \"SPH77FMDjEhAvN7dXdL6UFXS5", +"eSpucKJmY64TZeeg4QMDbm7Wcrbx\",\n \"bala", +"nce\" : 7381923624\n}, \n{\n \"ETH_account", +"\" : \"0xcf5009f0e53b5e921e43326dedc3a3f36", +"c2a6a10\",\n \"name\" : \"0xcf5009f0e53b5e", +"921e\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 716947073\n}, \n{\n \"ETH_account\"", +" : \"0xe29968ba8e62e8c33e9742eb0ef661a908", +"f392fa\",\n \"name\" : \"0xe29968ba8e62e8c", +"33e\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 4000000\n}, \n{\n \"ETH_account\" : ", +"\"0x64375ac83dc742a0acf1ee5ae5c9fde02f97f", +"e14\",\n \"name\" : \"0x64375ac83dc742a0ac", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 3550000000\n}, \n{\n \"ETH_account\" : ", +"\"0x525151625efbf89dadb9ef5845ce30b1829b2", +"e51\",\n \"name\" : \"0x525151625efbf89dad", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 131841817\n}, \n{\n \"ETH_account\" : \"", +"0x48eb5b0c059fd5f8b84a8e72cea7a5fc9cb441", +"c5\",\n \"name\" : \"0x48eb5b0c059fd5f8b8\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 13162696209\n}, \n{\n \"ETH_account\" : ", +"\"0x2160050a37c1ee91751440b8383574a881080", +"d28\",\n \"name\" : \"shakitano\",\n \"pub", +"licKey\" : \"SPH5xhtMHWsGP83yr2iUeNGRJdAuQ", +"BqtArZd4moe5wGtn25dHfUgu\",\n \"balance\"", +" : 1740228666\n}, \n{\n \"ETH_account\" : ", +"\"0x1ce5743f385e70e62644e3baf1abf3d115905", +"66c\",\n \"name\" : \"0x1ce5743f385e70e626", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1749912059\n}, \n{\n \"ETH_account\" : ", +"\"0xc6b117dd4538a094bb1e0be87df043bbc9549", +"bde\",\n \"name\" : \"0xc6b117dd4538a094bb", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 834000000\n}, \n{\n \"ETH_account\" : \"", +"0xeff5cf0fe0422d642448ba3b54c34c7ed14bd2", +"34\",\n \"name\" : \"0xeff5cf0fe0422d6424\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 147266045\n}, \n{\n \"ETH_account\" : \"0", +"x2b2482f19bc931aca3e3cfd77f1869fb1a196e4", +"3\",\n \"name\" : \"0x2b2482f19bc931aca3\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 392420000\n}, \n{\n \"ETH_account\" : \"0x", +"4e5223aa4a4d443b284ee6bd6fdacb6431d5b70b", +"\",\n \"name\" : \"0x4e5223aa4a4d443b28\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"275536605\n}, \n{\n \"ETH_account\" : \"0x3", +"1a974839911e593ced3ac9402baa12edef9172e\"", +",\n \"name\" : \"rdship\",\n \"publicKey\"", +" : \"SPH5SdjDEy1ydtExURVpEuZ4WLBMLJr9umyG", +"4seYDjCnnXShuhqcQ\",\n \"balance\" : 5595", +"000000\n}, \n{\n \"ETH_account\" : \"0xfa33", +"2f70063f638ea56e1fb9d3ec11a9a3062ca3\",\n ", +" \"name\" : \"0xfa332f70063f638ea5\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1902", +"35757\n}, \n{\n \"ETH_account\" : \"0xba43b", +"1ce305c39c829efcb116d3bdf6dc4ed500e\",\n ", +" \"name\" : \"0xba43b1ce305c39c829\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 14160", +"00000\n}, \n{\n \"ETH_account\" : \"0xca96f", +"4bc53be3d6e6f80c2adf3268c7a5fb23f34\",\n ", +" \"name\" : \"0xca96f4bc53be3d6e6f\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 16000", +"0000\n}, \n{\n \"ETH_account\" : \"0xd24c01", +"3b2452b1e434fbdd4dbc92652c374d9209\",\n ", +" \"name\" : \"sphtxswapabc\",\n \"publicKey", +"\" : \"SPH5MTaq2RH3JWJfjatMPZbCNwnNch8xht2", +"KdXwktUM1ocT5CGmvH\",\n \"balance\" : 165", +"48801670\n}, \n{\n \"ETH_account\" : \"0x3e", +"dde9346c0f5b015d9a49f185c759db5eea9009\",", +"\n \"name\" : \"0x3edde9346c0f5b015d\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 98", +"1660382\n}, \n{\n \"ETH_account\" : \"0x007", +"99bbc833d5b168f0410312d2a8fd9e0e3079c\",\n", +" \"name\" : \"0x00799bbc833d5b168f\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 115", +"6000000\n}, \n{\n \"ETH_account\" : \"0xdf6", +"620bf2e81dbb287f3bd6c070f1d1a60be03e0\",\n", +" \"name\" : \"0xdf6620bf2e81dbb287\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 203", +"58952847\n}, \n{\n \"ETH_account\" : \"0x0b", +"467d294d35fcfdda05aaacdf818d64c918d5fe\",", +"\n \"name\" : \"0x0b467d294d35fcfdda\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 84", +"0613\n}, \n{\n \"ETH_account\" : \"0x1303eb", +"c398664f2916c97ef8faea7031cad38929\",\n ", +" \"name\" : \"0x1303ebc398664f2916\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 153570", +"0000\n}, \n{\n \"ETH_account\" : \"0x2b1e3f", +"ca761feb4140fae66609bb765f14bb1f20\",\n ", +" \"name\" : \"0x2b1e3fca761feb4140\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 400000", +"0000\n}, \n{\n \"ETH_account\" : \"0x42b29f", +"2cb1fdc9a8e2b3111b7116d323fa1e114e\",\n ", +" \"name\" : \"0x42b29f2cb1fdc9a8e2\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 397508", +"074\n}, \n{\n \"ETH_account\" : \"0x8d35549", +"5d51683287b777ae1b25fe7ab1f33887b\",\n ", +"\"name\" : \"0x8d355495d51683287b\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5360000", +"0000\n}, \n{\n \"ETH_account\" : \"0xbd3c0e", +"89aaca8f35eebc139a0b4883e7922e6af5\",\n ", +" \"name\" : \"0xbd3c0e89aaca8f35ee\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 120903", +"1300\n}, \n{\n \"ETH_account\" : \"0x64e7e6", +"b48640e068e47e1e9059d011138e39158f\",\n ", +" \"name\" : \"htecsphtx\",\n \"publicKey\" :", +" \"SPH6dpDuBoQ9cxKRepj1kzNxKydY6iydy6Pq1Q", +"9LP91eAzLjuqUtE\",\n \"balance\" : 252399", +"7097\n}, \n{\n \"ETH_account\" : \"0x8b3407", +"a964510ebbd67d1c68878bb48cf1df8706\",\n ", +" \"name\" : \"0x8b3407a964510ebbd6\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 39\n}, ", +"\n{\n \"ETH_account\" : \"0x94c150e63eb20c", +"fa9b6bd7ac817caf32e6e05177\",\n \"name\" ", +": \"0x94c150e63eb20cfa9b\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 10000000000\n},", +" \n{\n \"ETH_account\" : \"0xa96ae2438a7be", +"b34f5ffbb722db81f08a1edacdb\",\n \"name\"", +" : \"horebez\",\n \"publicKey\" : \"SPH5yRH", +"YE5RV2etBVhpttbYU8NkRmW1bSCpw7faJfsAKB7a", +"k8Pb95\",\n \"balance\" : 10000000000\n}, ", +"\n{\n \"ETH_account\" : \"0xa4ed22e16ec4eb", +"6a24c307062ac2270c790ada18\",\n \"name\" ", +": \"dancingtank\",\n \"publicKey\" : \"SPH8", +"2fwb2yiy2JjJyLMU3DUW1bjCAiZc8tnUBE7FHMKZ", +"LWHoqpi4V\",\n \"balance\" : 8704000000\n}", +", \n{\n \"ETH_account\" : \"0xc4a1abcdb11b", +"95d3111d543b1e23d6c74f2acba1\",\n \"name", +"\" : \"0xc4a1abcdb11b95d311\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 3000000000\n}", +", \n{\n \"ETH_account\" : \"0xf6b7016ccad3", +"7d3f4d94072a92b02e410464f053\",\n \"name", +"\" : \"0xf6b7016ccad37d3f4d\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 4830000000\n}", +", \n{\n \"ETH_account\" : \"0xfba37a53bd54", +"832a80f5d87883e8d062defa56ac\",\n \"name", +"\" : \"0xfba37a53bd54832a80\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 13020000000\n", +"}, \n{\n \"ETH_account\" : \"0x0d08d1bd7d4", +"8cf8c169433ed518e4421e9622518\",\n \"nam", +"e\" : \"0x0d08d1bd7d48cf8c16\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 4711424601\n", +"}, \n{\n \"ETH_account\" : \"0x94f09ca5d8d", +"15a8383f66e850ca0a7cb651a80e1\",\n \"nam", +"e\" : \"0x94f09ca5d8d15a8383\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 480715632\n}", +", \n{\n \"ETH_account\" : \"0xed881bdfcb95", +"29d7770403f2b86697a4bc0cdf62\",\n \"name", +"\" : \"m65bim\",\n \"publicKey\" : \"SPH84ux", +"dUDnji7uDighnJbFwfSEvDMfWWWtC9wJwkqwYiKB", +"J7cBVa\",\n \"balance\" : 996731116\n}, \n{", +"\n \"ETH_account\" : \"0xeec3f1c5fcbec804", +"775661391b2c83bae6294a0c\",\n \"name\" : ", +"\"0xeec3f1c5fcbec80477\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 2263716536\n}, \n{", +"\n \"ETH_account\" : \"0x3ddbee801becf26b", +"8d2d8e071e5b76efa29355ab\",\n \"name\" : ", +"\"0x3ddbee801becf26b8d\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 743704000000\n}, ", +"\n{\n \"ETH_account\" : \"0x1ba6ccce70381b", +"5abae6ae63fbc161e84ca7f559\",\n \"name\" ", +": \"0x1ba6ccce70381b5aba\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 288749070\n}, \n", +"{\n \"ETH_account\" : \"0xc052ff0367c20aa", +"470f077b41311ccde3c1f4a6b\",\n \"name\" :", +" \"0xc052ff0367c20aa470\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 18500000\n}, \n{\n", +" \"ETH_account\" : \"0xf2f38bda472f18525", +"46c9f547856d0f7711e55fb\",\n \"name\" : \"", +"0xf2f38bda472f185254\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 5850049300\n}, \n{\n", +" \"ETH_account\" : \"0xf2419862a8180a4b7", +"c28e1676669a45bf3096fae\",\n \"name\" : \"", +"0xf2419862a8180a4b7c\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 16747235000\n}, \n{", +"\n \"ETH_account\" : \"0x34d79ac362a199b3", +"756538732e7c0b3f599cd442\",\n \"name\" : ", +"\"0x34d79ac362a199b375\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 3516323120\n}, \n{", +"\n \"ETH_account\" : \"0xc9be3c3cab7aca54", +"9b6330d88e264ee60f89e2c5\",\n \"name\" : ", +"\"0xc9be3c3cab7aca549b\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1663697021\n}, \n{", +"\n \"ETH_account\" : \"0x9e125bdaf3cb6f7f", +"b01700203fb380df96e46c9d\",\n \"name\" : ", +"\"juju\",\n \"publicKey\" : \"SPH7HmHxvYFSz", +"3qtKBXxn8pE49rCVF3jV5Nehkxj9zWhQDnhQ8jbX", +"\",\n \"balance\" : 301000000\n}, \n{\n \"", +"ETH_account\" : \"0x3c0edd20f8813b79ef30cc", +"6f57ea1ca45ae74aee\",\n \"name\" : \"0x3c0", +"edd20f8813b79ef\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1471481999\n}, \n{\n \"", +"ETH_account\" : \"0xf443399d433a546d7434e6", +"107deac3aa867902ed\",\n \"name\" : \"0xf44", +"3399d433a546d74\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 958\n}, \n{\n \"ETH_acc", +"ount\" : \"0xc2be618971e364803d1a11b10af11", +"1688a265efa\",\n \"name\" : \"0xc2be618971", +"e364803d\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 7000000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xbdf44236d13649c3c3cd373706155", +"8db2dd0b365\",\n \"name\" : \"0xbdf44236d1", +"3649c3c3\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 11999900\n}, \n{\n \"ETH_accou", +"nt\" : \"0x5bfc2bda4e00a4e20ecb4bbbf6a5521", +"f9fe47590\",\n \"name\" : \"0x5bfc2bda4e00", +"a4e20e\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 7414000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x7bda6b83351ea1cbe6e794b11bf7696", +"6c466152c\",\n \"name\" : \"0x7bda6b83351e", +"a1cbe6\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 2337120000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x54a4a021c2fa8a5d5d5b9272e488e26", +"54591c8e6\",\n \"name\" : \"0x54a4a021c2fa", +"8a5d5d\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 557\n}, \n{\n \"ETH_account\" : \"", +"0x20551a8c235242949bbec22302ff5cc5dda6bf", +"d1\",\n \"name\" : \"0x20551a8c235242949b\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 4455\n}, \n{\n \"ETH_account\" : \"0x6722", +"6186385b2368e6a631a56374909dfe0fb454\",\n ", +" \"name\" : \"cryptogregi\",\n \"publicKe", +"y\" : \"SPH5m7V5Dj8ewt1dKd9Vy23yLs5Ugi7Diy", +"kDYne6F8VgMPH7atfAa\",\n \"balance\" : 20", +"37400000\n}, \n{\n \"ETH_account\" : \"0x59", +"99953a0f024f1a019d38b50e8197bc71ae3200\",", +"\n \"name\" : \"cssophiacoins\",\n \"publ", +"icKey\" : \"SPH5pKvSsbyTfuyxwR9LkrAg3nxdGw", +"8CpEJPjrZQS5SRWMV8qt5jW\",\n \"balance\" ", +": 2503092892\n}, \n{\n \"ETH_account\" : \"", +"0x5b129dd524ee7d567fd12da3392ec684bddb70", +"2a\",\n \"name\" : \"0x5b129dd524ee7d567f\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1061710870\n}, \n{\n \"ETH_account\" : \"", +"0xb2888de6fffc0860d6fdfe03af14d4ed973a5a", +"9f\",\n \"name\" : \"0xb2888de6fffc0860d6\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 50000000000\n}, \n{\n \"ETH_account\" : ", +"\"0x4d3a2fb7eeec877b88753413e2fcec14f61b8", +"997\",\n \"name\" : \"0x4d3a2fb7eeec877b88", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1074680541\n}, \n{\n \"ETH_account\" : ", +"\"0xee3297dcf0299131acc96564e5dbc2bdd9df4", +"947\",\n \"name\" : \"0xee3297dcf0299131ac", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 998504\n}, \n{\n \"ETH_account\" : \"0x7", +"e494a77dab5b972c178c4a1e0ea851834f570f5\"", +",\n \"name\" : \"0x7e494a77dab5b972c1\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"013556884\n}, \n{\n \"ETH_account\" : \"0x5", +"b8c225b23a817fd7ee8daf8e6a00b757612cca5\"", +",\n \"name\" : \"witus\",\n \"publicKey\" ", +": \"SPH6Vo6DE3ZAViYKx6NvWQRwYQqJVCPjjPbQQ", +"V79TnoarW2fZNHh1\",\n \"balance\" : 51906", +"9000\n}, \n{\n \"ETH_account\" : \"0x767262", +"032cd6d0be1df9560aed3f5bd4d287224c\",\n ", +" \"name\" : \"0x767262032cd6d0be1d\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 113300", +"0000\n}, \n{\n \"ETH_account\" : \"0xe1134d", +"4fb86ca1b7497911423597b4393efef149\",\n ", +" \"name\" : \"0xe1134d4fb86ca1b749\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 135076", +"67150\n}, \n{\n \"ETH_account\" : \"0xd2dab", +"cf616bbddfa6fd6db306e66b4fad6b4b149\",\n ", +" \"name\" : \"0xd2dabcf616bbddfa6f\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 50750", +"09854\n}, \n{\n \"ETH_account\" : \"0xd1efb", +"cb4d0aadc07a8ee15f2acbac9b4bc2fc366\",\n ", +" \"name\" : \"0xd1efbcb4d0aadc07a8\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 22234", +"000000\n}, \n{\n \"ETH_account\" : \"0x2ef7", +"950223f49f6fbe71c8db48c43a4170dcf4ca\",\n ", +" \"name\" : \"0x2ef7950223f49f6fbe\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3990", +"00000\n}, \n{\n \"ETH_account\" : \"0xb9e00", +"5d12fad3460a308c931c2f2b3f4a9ef7323\",\n ", +" \"name\" : \"0xb9e005d12fad3460a3\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10000", +"000\n}, \n{\n \"ETH_account\" : \"0xc1913e9", +"87817d415dfeaa4896670651d783e5fc4\",\n ", +"\"name\" : \"tommyj\",\n \"publicKey\" : \"SP", +"H5i3LKk9m7d1WBGewvvjNiKrFr2fbmqnWafQHeqS", +"kuWVvQZo9CK\",\n \"balance\" : 409348964\n", +"}, \n{\n \"ETH_account\" : \"0x2b5634c4205", +"5806a59e9107ed44d43c426e58258\",\n \"nam", +"e\" : \"kucoin\",\n \"publicKey\" : \"SPH6aw", +"UuZ83QWQA9u8vabaLm3fTTJ3DvcSh7YEcmoMeAe8", +"fMhW1HQ\",\n \"balance\" : 23546098111977", +"\n}, \n{\n \"ETH_account\" : \"0x6d2e49581f", +"5810f6cd9ccb189344dd5e9269da8a\",\n \"na", +"me\" : \"0x6d2e49581f5810f6cd\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 234789\n}, ", +"\n{\n \"ETH_account\" : \"0x8eb56fb566eb06", +"62522e3e7bda27ec697bfbbf53\",\n \"name\" ", +": \"0x8eb56fb566eb066252\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 2993081157\n}, ", +"\n{\n \"ETH_account\" : \"0x87de6f0b394039", +"8e0a14cdd43a6d01011a5b94b0\",\n \"name\" ", +": \"0x87de6f0b3940398e0a\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 95842\n}, \n{\n ", +" \"ETH_account\" : \"0xea6e3e41ebaa09d550d", +"3c3f0d72971b3c5ccc261\",\n \"name\" : \"0x", +"ea6e3e41ebaa09d550\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 171923\n}, \n{\n \"E", +"TH_account\" : \"0xa5fe521a60a3b3a1871e050", +"7640b778002f54a41\",\n \"name\" : \"0xa5fe", +"521a60a3b3a187\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 2021\n}, \n{\n \"ETH_acc", +"ount\" : \"0xbe7e680704e6bb0b19fa9058b5917", +"6d04260bc33\",\n \"name\" : \"0xbe7e680704", +"e6bb0b19\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 299000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x590e9a4a7829c6e86ee98f53978d09", +"f60951558f\",\n \"name\" : \"0x590e9a4a782", +"9c6e86e\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 6991999900\n}, \n{\n \"ETH_acco", +"unt\" : \"0x8615e4615dade2e0dbb4e327c0362c", +"0b02d9ca9b\",\n \"name\" : \"0x8615e4615da", +"de2e0db\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 828002518\n}, \n{\n \"ETH_accou", +"nt\" : \"0x71d2c1f4a3e80978738cc7aeed8a49e", +"94083c3b8\",\n \"name\" : \"0x71d2c1f4a3e8", +"097873\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 931000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x7c4a3bdeb01ea3a1a2419128a6b4caee", +"b03b438f\",\n \"name\" : \"0x7c4a3bdeb01ea", +"3a1a2\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1032631600\n}, \n{\n \"ETH_accoun", +"t\" : \"0xb64051d0ad12652dee6ae034a0f95089", +"32e44984\",\n \"name\" : \"0xb64051d0ad126", +"52dee\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 373636400\n}, \n{\n \"ETH_account", +"\" : \"0xee4aaf86c47a3d2bf2098253d72133599", +"f88d8c2\",\n \"name\" : \"0xee4aaf86c47a3d", +"2bf2\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 1552993000\n}, \n{\n \"ETH_account", +"\" : \"0x8e04dd2b48cd552346990212de3e79498", +"5debf2e\",\n \"name\" : \"bravo\",\n \"pub", +"licKey\" : \"SPH6Bg7EzCGoxCAoZbSN2NWWAbUbw", +"eEevDQD14TeT84eJu7DrQ641\",\n \"balance\"", +" : 360420000\n}, \n{\n \"ETH_account\" : \"", +"0x759dd38eb07c49a08f4617923876e6872ad67f", +"0e\",\n \"name\" : \"0x759dd38eb07c49a08f\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 38000000\n}, \n{\n \"ETH_account\" : \"0x", +"3cb838156d50d480de23a7f9497b03ac39d7ed54", +"\",\n \"name\" : \"0x3cb838156d50d480de\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"281000000\n}, \n{\n \"ETH_account\" : \"0x5", +"a96e1b5c3a8c9227b6ce3059dbfc90f7fd6a35e\"", +",\n \"name\" : \"0x5a96e1b5c3a8c9227b\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 8", +"7068\n}, \n{\n \"ETH_account\" : \"0xdac59e", +"c90895d084616b779f2dc305a137476a03\",\n ", +" \"name\" : \"0xdac59ec90895d08461\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 100000", +"\n}, \n{\n \"ETH_account\" : \"0x8c2a6e713b", +"b18ce1a3cc7214eb198adcec3e3913\",\n \"na", +"me\" : \"0x8c2a6e713bb18ce1a3\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1206000000", +"\n}, \n{\n \"ETH_account\" : \"0xc097743371", +"f2a672c176191b4dd46575c38510a7\",\n \"na", +"me\" : \"0xc097743371f2a672c1\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 309000000\n", +"}, \n{\n \"ETH_account\" : \"0x30635d06400", +"e9b7208a918df934e080df6801119\",\n \"nam", +"e\" : \"0x30635d06400e9b7208\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 844000\n}, \n", +"{\n \"ETH_account\" : \"0xc5786126b3ae061", +"620859b04d418e5427ba51bc1\",\n \"name\" :", +" \"sparverius\",\n \"publicKey\" : \"SPH4wK", +"ruLUNwVeVnZtUSb9UPDwpybYaR8WMsmKvJDRzr25", +"TSN4Zok\",\n \"balance\" : 12524666575\n},", +" \n{\n \"ETH_account\" : \"0x9300909a77e76", +"5872022e7db5dfceb1330c836fb\",\n \"name\"", +" : \"0x9300909a77e7658720\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 80079600\n}, \n", +"{\n \"ETH_account\" : \"0xfd3ba7c963db22d", +"0659a982b5e9ef8a89429626b\",\n \"name\" :", +" \"0xfd3ba7c963db22d065\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 2543000000\n}, \n", +"{\n \"ETH_account\" : \"0x961cec32f516b85", +"457f6ce4042ed260b5604972d\",\n \"name\" :", +" \"0x961cec32f516b85457\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 436000000\n}, \n{", +"\n \"ETH_account\" : \"0x73f836b5014ee697", +"c6e0419fbb8d6ae704b5082d\",\n \"name\" : ", +"\"0x73f836b5014ee697c6\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 225890508\n}, \n{\n", +" \"ETH_account\" : \"0x0dc81ca2ce880403b", +"f05207c3ea8ce946e038d82\",\n \"name\" : \"", +"0x0dc81ca2ce880403bf\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 25004967000\n}, \n{", +"\n \"ETH_account\" : \"0x7755486f7afc6b88", +"be701dce7a25fc473d0cd21e\",\n \"name\" : ", +"\"0x7755486f7afc6b88be\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 25000000000\n}, \n", +"{\n \"ETH_account\" : \"0x2411b10c48dc4a0", +"4b1bca7fee62b0ad81a76e2d7\",\n \"name\" :", +" \"0x2411b10c48dc4a04b1\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 10000459400\n}, ", +"\n{\n \"ETH_account\" : \"0x05f14c683e395b", +"8eebf00ac6e6b953f565a15353\",\n \"name\" ", +": \"0x05f14c683e395b8eeb\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 90000000\n}, \n{", +"\n \"ETH_account\" : \"0xb651f5d7f78f4fd7", +"f6c14a79c9bdfa7b272952e0\",\n \"name\" : ", +"\"0xb651f5d7f78f4fd7f6\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 461000000\n}, \n{\n", +" \"ETH_account\" : \"0x613f25cf604d0849f", +"2a973b5ab5ac82ad377dcd8\",\n \"name\" : \"", +"0x613f25cf604d0849f2\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 241849500\n}, \n{\n ", +" \"ETH_account\" : \"0x4069ec8aa6cf571b25", +"282a1cc0f6fbf1722450f0\",\n \"name\" : \"0", +"x4069ec8aa6cf571b25\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 344095587\n}, \n{\n ", +" \"ETH_account\" : \"0x39deb852060a9579457", +"83eed103fc944e18b6bab\",\n \"name\" : \"0x", +"39deb852060a957945\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 2934239700\n}, \n{\n ", +" \"ETH_account\" : \"0xcdc33510be11d0f599d", +"ffad1db278e7a809047d7\",\n \"name\" : \"0x", +"cdc33510be11d0f599\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 50\n}, \n{\n \"ETH_a", +"ccount\" : \"0x0d5794e434b5ee28280cd83ceaa", +"f43ad38faf4b9\",\n \"name\" : \"0x0d5794e4", +"34b5ee2828\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 20000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x61a54ef268b150d171b7c81990f05", +"b88ca13c1e4\",\n \"name\" : \"0x61a54ef268", +"b150d171\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2141074600\n}, \n{\n \"ETH_acc", +"ount\" : \"0x4966e8c4ccc0931c052a07bfeba5c", +"9b962af5bbc\",\n \"name\" : \"0x4966e8c4cc", +"c0931c05\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 998630000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x8aa9773c73323a43ec8b9917ac39e5", +"b85f085840\",\n \"name\" : \"0x8aa9773c733", +"23a43ec\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 213000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x6a19bc8ff9525684a9e2ac9c7cc38f4", +"4be393475\",\n \"name\" : \"0x6a19bc8ff952", +"5684a9\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 115000000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x3c7279d9c7c17636b5f8fd11db753", +"c22f04a5b15\",\n \"name\" : \"0x3c7279d9c7", +"c17636b5\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 4000000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x082e72b8c7f4bd0c5a1c2cfabe831", +"55be6735370\",\n \"name\" : \"0x082e72b8c7", +"f4bd0c5a\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 683671993\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa0069f46d715dfd7e83cc97292f11b", +"c49c0d0979\",\n \"name\" : \"0xa0069f46d71", +"5dfd7e8\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 7731819228\n}, \n{\n \"ETH_acco", +"unt\" : \"0x565a786ee7ceb39d88cb269ed54158", +"04c899a7e7\",\n \"name\" : \"0x565a786ee7c", +"eb39d88\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 35\n}, \n{\n \"ETH_account\" : \"", +"0xf1f89275ad659748ed4e53c555a1beac098595", +"8a\",\n \"name\" : \"0xf1f89275ad659748ed\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1568670000\n}, \n{\n \"ETH_account\" : \"", +"0xa4e06fd754484592cbeff90144a67dae514a56", +"17\",\n \"name\" : \"0xa4e06fd754484592cb\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1205000000\n}, \n{\n \"ETH_account\" : \"", +"0x6c131067001960bb7b2fc1ad239a9ea7f18cd2", +"c6\",\n \"name\" : \"0x6c131067001960bb7b\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 3743580\n}, \n{\n \"ETH_account\" : \"0xb", +"d384fada55eb3af2d9d209d9129cbc99db9bf1e\"", +",\n \"name\" : \"0xbd384fada55eb3af2d\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"300000000\n}, \n{\n \"ETH_account\" : \"0x2", +"d7937f836a0de78c48cb1bc83871bfae243c4b7\"", +",\n \"name\" : \"0x2d7937f836a0de78c4\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"18677249\n}, \n{\n \"ETH_account\" : \"0x6d", +"cd44b0ee5d4648242f04ca159e7f22d3b26ca8\",", +"\n \"name\" : \"0x6dcd44b0ee5d464824\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 12", +"67271923\n}, \n{\n \"ETH_account\" : \"0x2c", +"9ea5e27fd8e6f4bd44b1c829f072ac76b9c537\",", +"\n \"name\" : \"0x2c9ea5e27fd8e6f4bd\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 18", +"429\n}, \n{\n \"ETH_account\" : \"0xcf92eb9", +"d20aca421829bf59f8eaf5d0840c4fddc\",\n ", +"\"name\" : \"lalatoc\",\n \"publicKey\" : \"S", +"PH8Gy5bYZvNZxoaftzZ9sD8vwkghkermszPUdYyp", +"HHmvJunfVE2N\",\n \"balance\" : 204096100", +"29\n}, \n{\n \"ETH_account\" : \"0x5bdba255", +"d8e3ac8e249b0b167837e9fd56ca9f57\",\n \"", +"name\" : \"newshptx\",\n \"publicKey\" : \"S", +"PH6FGuAQDD3bhg31YPtczXZCFk62LGRAmaAYCfmF", +"cSYy19uss316\",\n \"balance\" : 126414749", +"00\n}, \n{\n \"ETH_account\" : \"0xc1d81fa8", +"de0dc07887424250fe067088fd5ac8fd\",\n \"", +"name\" : \"0xc1d81fa8de0dc07887\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 97332900", +"\n}, \n{\n \"ETH_account\" : \"0xb76f1deb77", +"8d6ddccc3bea50f70b6e746117a8e1\",\n \"na", +"me\" : \"0xb76f1deb778d6ddccc\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 97332700\n}", +", \n{\n \"ETH_account\" : \"0x0a61e655ed7d", +"802e70106919de4d1f56691ff7ca\",\n \"name", +"\" : \"0x0a61e655ed7d802e70\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 396730000\n},", +" \n{\n \"ETH_account\" : \"0xf8700dffabac0", +"7a280069419298545387b4d5357\",\n \"name\"", +" : \"0xf8700dffabac07a280\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1000000\n}, \n{", +"\n \"ETH_account\" : \"0x040c10d48f4be148", +"3745a2ef40de645659bc5eeb\",\n \"name\" : ", +"\"0x040c10d48f4be14837\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 511577300\n}, \n{\n", +" \"ETH_account\" : \"0x5aa59428f984afa4a", +"8a38a7adeef4f5d3c43fb8b\",\n \"name\" : \"", +"0x5aa59428f984afa4a8\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 8574383000\n}, \n{\n", +" \"ETH_account\" : \"0x8b3f2b9c483fa7a2d", +"a79e59373af3ed4f76eaf3e\",\n \"name\" : \"", +"0x8b3f2b9c483fa7a2da\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 3026442536\n}, \n{\n", +" \"ETH_account\" : \"0x05e003ec40da90eae", +"a91589986258773b29b5639\",\n \"name\" : \"", +"0x05e003ec40da90eaea\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 27803000000\n}, \n{", +"\n \"ETH_account\" : \"0xc0699c6bbf715023", +"8a3c6f63e25f77f224c15d8a\",\n \"name\" : ", +"\"0xc0699c6bbf7150238a\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 419000000\n}, \n{\n", +" \"ETH_account\" : \"0xe6c39859f899aab60", +"fa7eeccd0026ac244bcf299\",\n \"name\" : \"", +"panxiaolong\",\n \"publicKey\" : \"SPH6snB", +"CxfnCxDBykqCGEJgqjyJEbCqXnM1iR8ZXCt5tgvV", +"zacRQA\",\n \"balance\" : 73080067300\n}, ", +"\n{\n \"ETH_account\" : \"0x5c8789556781bb", +"67b7d36f02cbcfccf71f82cfb2\",\n \"name\" ", +": \"0x5c8789556781bb67b7\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1780825332\n}, ", +"\n{\n \"ETH_account\" : \"0xf3e8613f15cadc", +"6690ddfd2c1b283e05df54f6f1\",\n \"name\" ", +": \"0xf3e8613f15cadc6690\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 100000000000\n}", +", \n{\n \"ETH_account\" : \"0x909627cac002", +"7407602d84ac380f736faa4b7493\",\n \"name", +"\" : \"0x909627cac002740760\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 174000000\n},", +" \n{\n \"ETH_account\" : \"0x546d6d8a57ec6", +"e645a8a0572258385d0356aeffb\",\n \"name\"", +" : \"0x546d6d8a57ec6e645a\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 306730000\n}, ", +"\n{\n \"ETH_account\" : \"0x78ac1fd3bed6ce", +"f2200a6f357c79d139f7f93d13\",\n \"name\" ", +": \"0x78ac1fd3bed6cef220\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 19582000000\n},", +" \n{\n \"ETH_account\" : \"0x388e418f1557c", +"d16f4c32de629d1c88a95916688\",\n \"name\"", +" : \"0x388e418f1557cd16f4\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 2723539000\n},", +" \n{\n \"ETH_account\" : \"0xbadffcb79efe5", +"7e954fd79621b29b0c2dc170171\",\n \"name\"", +" : \"0xbadffcb79efe57e954\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 117989\n}, \n{\n", +" \"ETH_account\" : \"0x7ad0f5daf1eb75a4d", +"14014aa0672cc7488861b41\",\n \"name\" : \"", +"0x7ad0f5daf1eb75a4d1\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1023266374\n}, \n{\n", +" \"ETH_account\" : \"0xea96eb430387dbb50", +"f0f9d79ca97f80ac43a4861\",\n \"name\" : \"", +"0xea96eb430387dbb50f\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 71\n}, \n{\n \"ETH", +"_account\" : \"0x5c8b909a51995781a84846253", +"fc7b0a590dbe206\",\n \"name\" : \"minimalw", +"erk\",\n \"publicKey\" : \"SPH6xknFcKSDXhf", +"pg38pyQ5X19eykLy374PXg5aJP2yRs4EMGPP2K\",", +"\n \"balance\" : 616393200\n}, \n{\n \"ET", +"H_account\" : \"0xcdaf2a96cb086c86cc5574bc", +"dc49f71c52a8193e\",\n \"name\" : \"0xcdaf2", +"a96cb086c86cc\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 300000000\n}, \n{\n \"ETH", +"_account\" : \"0xa9fc0fcba072aa306d71610dd", +"ff6a3529375e33d\",\n \"name\" : \"0xa9fc0f", +"cba072aa306d\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1826455929\n}, \n{\n \"ETH", +"_account\" : \"0xeaf10f9a4f88b44b9d6890d87", +"228fd9255ef0a7c\",\n \"name\" : \"0xeaf10f", +"9a4f88b44b9d\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 94143268\n}, \n{\n \"ETH_a", +"ccount\" : \"0xb137d8baeef2e9b14e82f455dbb", +"f6fe837a4eac9\",\n \"name\" : \"0xb137d8ba", +"eef2e9b14e\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 749900\n}, \n{\n \"ETH_accou", +"nt\" : \"0x3375e4e2575a195542793277a064a99", +"e61597864\",\n \"name\" : \"0x3375e4e2575a", +"195542\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 80000000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa001e93495ee1e750a46acb6c3962b", +"fabb25060a\",\n \"name\" : \"0xa001e93495e", +"e1e750a\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 257598800\n}, \n{\n \"ETH_accou", +"nt\" : \"0xd44a438bd7c154897640a80a86d1baa", +"583b06c91\",\n \"name\" : \"0xd44a438bd7c1", +"548976\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 950000\n}, \n{\n \"ETH_account\" ", +": \"0x17875b3fa4d4c5bc8367b5b6f01455dedfc", +"1a336\",\n \"name\" : \"0x17875b3fa4d4c5bc", +"83\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 842730000\n}, \n{\n \"ETH_account\" :", +" \"0xe49a94eac86b506d47baf735266d077f3035", +"4289\",\n \"name\" : \"0xe49a94eac86b506d4", +"7\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 122101700\n}, \n{\n \"ETH_account\" : ", +"\"0x40be75a0b29b43faa148f56719fa87f87f3f2", +"341\",\n \"name\" : \"0x40be75a0b29b43faa1", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 4490000000\n}, \n{\n \"ETH_account\" : ", +"\"0x5e19929fcf62f3db8f90140c4eb0e3b6babdf", +"59d\",\n \"name\" : \"0x5e19929fcf62f3db8f", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 481192307\n}, \n{\n \"ETH_account\" : \"", +"0x6de71d18a535f4fdfab67e321d2b5d7998ee54", +"a6\",\n \"name\" : \"0x6de71d18a535f4fdfa\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 96895000\n}, \n{\n \"ETH_account\" : \"0x", +"deab330800d9be00cfb3964828b66c78b7585aad", +"\",\n \"name\" : \"0xdeab330800d9be00cf\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"615176000\n}, \n{\n \"ETH_account\" : \"0xd", +"565de62e7c56fa99996d9d379a1f0a0d0960bb2\"", +",\n \"name\" : \"0xd565de62e7c56fa999\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"5040000000\n}, \n{\n \"ETH_account\" : \"0x", +"410e9a6a012d95b5f4350d6bf813ee5d2755f841", +"\",\n \"name\" : \"0x410e9a6a012d95b5f4\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"3047132900\n}, \n{\n \"ETH_account\" : \"0x", +"37325f622e1066ba72bc88e74f727112df7f47df", +"\",\n \"name\" : \"niki\",\n \"publicKey\" ", +": \"SPH7oZoRtWyNPyfb1JW41yNTh4uY1pA3UDjnm", +"cS8Qg5ggFZTy6JkP\",\n \"balance\" : 73000", +"000\n}, \n{\n \"ETH_account\" : \"0x89f0948", +"a501c778b7a098c677f13d832a578ab07\",\n ", +"\"name\" : \"0x89f0948a501c778b7a\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1349091", +"62\n}, \n{\n \"ETH_account\" : \"0xae20a4f0", +"57acdd672bb51071d52321d8a7565d1b\",\n \"", +"name\" : \"noxzi\",\n \"publicKey\" : \"SPH8", +"ECicuKRecjRV5p4wgyQSYbQtyWMyTChpLTWjxSfx", +"MsWzpMqsJ\",\n \"balance\" : 3662373078\n}", +", \n{\n \"ETH_account\" : \"0xfc37140958f0", +"da16efbd37e1ccc92a55cd8ea198\",\n \"name", +"\" : \"0xfc37140958f0da16ef\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 4628185700\n}", +", \n{\n \"ETH_account\" : \"0x87e1129e02a4", +"0e868a6d785b73a98c1db42b62bb\",\n \"name", +"\" : \"0x87e1129e02a40e868a\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1982910000\n}", +", \n{\n \"ETH_account\" : \"0xe9fd2a4ec605", +"14187da318194efc66e23dff35b6\",\n \"name", +"\" : \"0xe9fd2a4ec60514187d\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 50000000000\n", +"}, \n{\n \"ETH_account\" : \"0x1485ac14924", +"480a35016b0675f706ccdbc7d02ab\",\n \"nam", +"e\" : \"0x1485ac14924480a350\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 5498363667\n", +"}, \n{\n \"ETH_account\" : \"0xd1e84325b71", +"492ff1b21638e8135c51aafd27501\",\n \"nam", +"e\" : \"0xd1e84325b71492ff1b\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 24847000000", +"\n}, \n{\n \"ETH_account\" : \"0x2618fd58c2", +"ae8b5a8b62fa1991bd77e3fc28332c\",\n \"na", +"me\" : \"0x2618fd58c2ae8b5a8b\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 295000000\n", +"}, \n{\n \"ETH_account\" : \"0xaecbad313cb", +"21cb6922ed642a3cca6dff0367418\",\n \"nam", +"e\" : \"0xaecbad313cb21cb692\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 65540000\n},", +" \n{\n \"ETH_account\" : \"0x8bd2590979820", +"e2b4c674613bb88e23b260b9b37\",\n \"name\"", +" : \"0x8bd2590979820e2b4c\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 110000000\n}, ", +"\n{\n \"ETH_account\" : \"0x8fd35112aa8a75", +"b8a33e5e1bf59b2b0f3d7e22ba\",\n \"name\" ", +": \"jakemonster\",\n \"publicKey\" : \"SPH7", +"CV3vjiqy9dWxFHWtyw8yV3mpXDEEFHKuVtwCdFy6", +"LNydJ9ijn\",\n \"balance\" : 331073300\n},", +" \n{\n \"ETH_account\" : \"0x644f1834b4085", +"97a75cce9c6dd808a559ff0d480\",\n \"name\"", +" : \"0x644f1834b408597a75\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 9966000000\n},", +" \n{\n \"ETH_account\" : \"0x24741218e4ab0", +"cf1ad4452cc1b6cf3eb1a34492d\",\n \"name\"", +" : \"0x24741218e4ab0cf1ad\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 3499999864\n},", +" \n{\n \"ETH_account\" : \"0xef4fc88f1dd64", +"b21cca9f33c5dd6caeee6946f3a\",\n \"name\"", +" : \"0xef4fc88f1dd64b21cc\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 512977000\n}, ", +"\n{\n \"ETH_account\" : \"0x05a61522c2497f", +"4dfe51621680e4d2cd68c70936\",\n \"name\" ", +": \"0x05a61522c2497f4dfe\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 587800800\n}, \n", +"{\n \"ETH_account\" : \"0x7577deaaf4ca6d2", +"34d61bc5b723f22c226e379c2\",\n \"name\" :", +" \"0x7577deaaf4ca6d234d\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 111900000000\n},", +" \n{\n \"ETH_account\" : \"0xa2c873e9383ad", +"392fec8934e0d8b95918917bef8\",\n \"name\"", +" : \"0xa2c873e9383ad392fe\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 185011000000\n", +"}, \n{\n \"ETH_account\" : \"0xde549b3b011", +"362ea3fbfc90553fe9cb8bfb1f7de\",\n \"nam", +"e\" : \"0xde549b3b011362ea3f\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 194028800\n}", +", \n{\n \"ETH_account\" : \"0x1a25a0908184", +"461d599868c53bb49087cde44dce\",\n \"name", +"\" : \"0x1a25a0908184461d59\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 9058278255\n}", +", \n{\n \"ETH_account\" : \"0x4687466ac9bd", +"165ca3bf2f6b6446822560b9fc3d\",\n \"name", +"\" : \"0x4687466ac9bd165ca3\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 131257000000", +"\n}, \n{\n \"ETH_account\" : \"0xa66a74907e", +"9860a6a5815001e90990f032701186\",\n \"na", +"me\" : \"0xa66a74907e9860a6a5\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 3392000000", +"0\n}, \n{\n \"ETH_account\" : \"0x0a5ad8f54", +"efeed4b5281fcf3a28d5f26bb21177c\",\n \"n", +"ame\" : \"0x0a5ad8f54efeed4b52\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 930000\n},", +" \n{\n \"ETH_account\" : \"0x8bc85dd31ce81", +"3845a1f03a94ecfc9166910d811\",\n \"name\"", +" : \"sophiatxaj\",\n \"publicKey\" : \"SPH6", +"rjy8TF24AhVCRQFXEdcZ7S8dj7mGbNnzvvmjh5xC", +"EzaYpyjGi\",\n \"balance\" : 945754739\n},", +" \n{\n \"ETH_account\" : \"0x6abc1ac636c53", +"0a100cc18d6ea84551b8fe91019\",\n \"name\"", +" : \"0x6abc1ac636c530a100\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 378305000\n}, ", +"\n{\n \"ETH_account\" : \"0xa380d05ddd16f2", +"a8fb67cac535fe0b2e400f0133\",\n \"name\" ", +": \"0xa380d05ddd16f2a8fb\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3255932766\n}, ", +"\n{\n \"ETH_account\" : \"0xe7c215145eed67", +"75c5c0773c8c7e36a6ab65d7c5\",\n \"name\" ", +": \"whatsappy\",\n \"publicKey\" : \"SPH5XS", +"1CDBQKDkbse6sNWbK1qaT1HMyTeh583duebQoNp3", +"wszoxDh\",\n \"balance\" : 639641000\n}, \n", +"{\n \"ETH_account\" : \"0xc37c7f0fa20d4c4", +"079a647e00666e000069ae779\",\n \"name\" :", +" \"0xc37c7f0fa20d4c4079\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 200000000000\n},", +" \n{\n \"ETH_account\" : \"0x7d8f575d070f0", +"ee24b9110a1c95e2952ec6fe851\",\n \"name\"", +" : \"0x7d8f575d070f0ee24b\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 10000000000\n}", +", \n{\n \"ETH_account\" : \"0xf9de70477695", +"0e4c47c1a2649d3055929338c7d9\",\n \"name", +"\" : \"0xf9de704776950e4c47\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 386730000\n},", +" \n{\n \"ETH_account\" : \"0x87a97204cc8b8", +"a8ef863fca9bc60870e3f34f5cd\",\n \"name\"", +" : \"0x87a97204cc8b8a8ef8\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1582161374\n},", +" \n{\n \"ETH_account\" : \"0xd2ab823855f3c", +"bd2aa97b50c36681587897c3c14\",\n \"name\"", +" : \"0xd2ab823855f3cbd2aa\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 10197337633\n}", +", \n{\n \"ETH_account\" : \"0x3126a5b5ad15", +"3d1c1db85c83d312501888d87e7f\",\n \"name", +"\" : \"0x3126a5b5ad153d1c1d\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 7000000000\n}", +", \n{\n \"ETH_account\" : \"0xf9dc7db12a6b", +"46dc229cdea6804809b8f34cdc69\",\n \"name", +"\" : \"0xf9dc7db12a6b46dc22\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 94\n}, \n{\n ", +" \"ETH_account\" : \"0x3b31ce3106c567ae07e1", +"ba94ccdd86645946d332\",\n \"name\" : \"0x3", +"b31ce3106c567ae07\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 3897176901\n}, \n{\n ", +" \"ETH_account\" : \"0xd575c470ae9cef23c366", +"5bd85bcdf2998ab0b227\",\n \"name\" : \"0xd", +"575c470ae9cef23c3\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 2574361112\n}, \n{\n ", +" \"ETH_account\" : \"0x77388c9fee4f1a3cab57", +"3451d6dc9ebdb92f625b\",\n \"name\" : \"0x7", +"7388c9fee4f1a3cab\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1678312000\n}, \n{\n ", +" \"ETH_account\" : \"0x281c2c8720cf75d27b64", +"d3cf67e5b227cc36890c\",\n \"name\" : \"0x2", +"81c2c8720cf75d27b\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 532700000\n}, \n{\n ", +"\"ETH_account\" : \"0xa291d8a5108f72fd3d89a", +"d9f87e71f95ba017b12\",\n \"name\" : \"0xa2", +"91d8a5108f72fd3d\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 2476000000\n}, \n{\n ", +"\"ETH_account\" : \"0x45850f32422f3fd829f27", +"3128330df898c9047cc\",\n \"name\" : \"0x45", +"850f32422f3fd829\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 122423000\n}, \n{\n \"", +"ETH_account\" : \"0x75682337a195ee36f19022", +"a2e8ca3962caeb3ea5\",\n \"name\" : \"0x756", +"82337a195ee36f1\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1971150700\n}, \n{\n \"", +"ETH_account\" : \"0x3223ae8bb0579cd9081183", +"9206d55497fdd8def9\",\n \"name\" : \"malca", +"in\",\n \"publicKey\" : \"SPH4xZZ9oVZvjc7N", +"Q3o9twxyi4Zj3cLf1KDKhvcVF8Jn7L9kwz7Ai\",\n", +" \"balance\" : 3124531944\n}, \n{\n \"ET", +"H_account\" : \"0xbe1c8fa9821261f8d0a01b69", +"d80206c11d886faf\",\n \"name\" : \"sophiat", +"xmun1\",\n \"publicKey\" : \"SPH7LjNgTNwjT", +"Tqq1qSxMLLyp6iJ2Nts2fcuWCPHBrUNHRs2Urz4C", +"\",\n \"balance\" : 2087603700\n}, \n{\n ", +"\"ETH_account\" : \"0xc1b48e8490be402b0b58d", +"ecf648a9946c57168b5\",\n \"name\" : \"blan", +"ka\",\n \"publicKey\" : \"SPH6q4cnN7gmq1MJ", +"wymGoihghxjLsBVSR7wG84Yfdt6LhYAdDjK7V\",\n", +" \"balance\" : 12987432400\n}, \n{\n \"E", +"TH_account\" : \"0x6b3af0f313e449725e70914", +"8668c8f4dec6d0453\",\n \"name\" : \"0x6b3a", +"f0f313e449725e\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 5482000000\n}, \n{\n \"E", +"TH_account\" : \"0x38e8db0a4e9d887ea10e0a5", +"24e444f13e3abd35a\",\n \"name\" : \"0x38e8", +"db0a4e9d887ea1\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 400000000\n}, \n{\n \"ET", +"H_account\" : \"0x3f8e73e4a8c421c08f7d8921", +"d6f66f8c6b0d581f\",\n \"name\" : \"0x3f8e7", +"3e4a8c421c08f\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 149242500\n}, \n{\n \"ETH", +"_account\" : \"0xc713816183c2190ce06e19d8a", +"9406dff5172d3c7\",\n \"name\" : \"0xc71381", +"6183c2190ce0\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 290500\n}, \n{\n \"ETH_acc", +"ount\" : \"0x14005e07086026daf0d1040316112", +"df1a287e0b0\",\n \"name\" : \"0x14005e0708", +"6026daf0\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 4767737900\n}, \n{\n \"ETH_acc", +"ount\" : \"0x940a9367c83fb119bd4b031e17d0a", +"d405a8de41f\",\n \"name\" : \"0x940a9367c8", +"3fb119bd\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 65170566600\n}, \n{\n \"ETH_ac", +"count\" : \"0x5475140142b1cc5745bf3cc7cadb", +"42eeba6fc0d0\",\n \"name\" : \"0x547514014", +"2b1cc5745\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1180348300\n}, \n{\n \"ETH_ac", +"count\" : \"0x96cff2f03acf700213b43c10c00b", +"6627a9631809\",\n \"name\" : \"0x96cff2f03", +"acf700213\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 9106248600\n}, \n{\n \"ETH_ac", +"count\" : \"0xe66c2ae565bf93d3dffde166465c", +"11b05de1f0fa\",\n \"name\" : \"0xe66c2ae56", +"5bf93d3df\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 292934186\n}, \n{\n \"ETH_acc", +"ount\" : \"0xe302309a8572cb88862f4470a9a34", +"d12d904a10c\",\n \"name\" : \"0xe302309a85", +"72cb8886\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 874182603\n}, \n{\n \"ETH_acco", +"unt\" : \"0xcbec66da6ab27fbb19fde8491aa10e", +"881a29bccd\",\n \"name\" : \"0xcbec66da6ab", +"27fbb19\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1795059814\n}, \n{\n \"ETH_acco", +"unt\" : \"0x027fac5e1b28ae4b137c1a32829382", +"7b5fe05693\",\n \"name\" : \"0x027fac5e1b2", +"8ae4b13\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 191384771\n}, \n{\n \"ETH_accou", +"nt\" : \"0x16f1d1ffd8f6242f8bcc84a9a882349", +"6789be5e7\",\n \"name\" : \"0x16f1d1ffd8f6", +"242f8b\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1054917100\n}, \n{\n \"ETH_accou", +"nt\" : \"0x3e22b134bc1ea921cd1b75aff672421", +"59443208c\",\n \"name\" : \"0x3e22b134bc1e", +"a921cd\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 180000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x87ee54af47d8117814012218fedff4b1", +"eeb58cc1\",\n \"name\" : \"0x87ee54af47d81", +"17814\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 483000000\n}, \n{\n \"ETH_account", +"\" : \"0x2c7f452416bc083de198042ce04e6556f", +"f2bdb9c\",\n \"name\" : \"0x2c7f452416bc08", +"3de1\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 4838933800\n}, \n{\n \"ETH_account", +"\" : \"0x2fa46c3662f870990d1bbf32130ac14a5", +"94a5dc1\",\n \"name\" : \"0x2fa46c3662f870", +"990d\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 3821221200\n}, \n{\n \"ETH_account", +"\" : \"0xdea3fc0be3414ae05fd1d56dd13c4e34d", +"1256947\",\n \"name\" : \"0xdea3fc0be3414a", +"e05f\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 9941005\n}, \n{\n \"ETH_account\" :", +" \"0xf502e0ce2aba0a7b9cbacdd57c4208254413", +"aa4e\",\n \"name\" : \"0xf502e0ce2aba0a7b9", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 691245014\n}, \n{\n \"ETH_account\" : ", +"\"0x26022f10f52a9c8819fc9d0a2b5f3531f1248", +"cdb\",\n \"name\" : \"0x26022f10f52a9c8819", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 102420000\n}, \n{\n \"ETH_account\" : \"", +"0x5af9d5c1e03ada6755c1c8210bc826594feab8", +"79\",\n \"name\" : \"0x5af9d5c1e03ada6755\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 90900000\n}, \n{\n \"ETH_account\" : \"0x", +"a22b5680d42516d35890952c56592afc88fd3838", +"\",\n \"name\" : \"0xa22b5680d42516d358\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"51055118300\n}, \n{\n \"ETH_account\" : \"0", +"xc0bbc1a1507911ce3d5980be1e1adab40e060b8", +"c\",\n \"name\" : \"0xc0bbc1a1507911ce3d\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 11128193000\n}, \n{\n \"ETH_account\" : \"", +"0xf44d0be73a8b798a707b4f76874263df9303ea", +"56\",\n \"name\" : \"kasperaalsmeer\",\n ", +"\"publicKey\" : \"SPH6DBMvs2hYBTkWNDaugMaNE", +"deHC5nx6rsgX6MfU7L35eoDngcTU\",\n \"bala", +"nce\" : 4183248577\n}, \n{\n \"ETH_account", +"\" : \"0x6ae8ae91b4a89b94600afa8dae311b65a", +"04a25ad\",\n \"name\" : \"0x6ae8ae91b4a89b", +"9460\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 3276750000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa19354adf18d0acc012333252d55c0", +"5a54d5ac47\",\n \"name\" : \"0xa19354adf18", +"d0acc01\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 650647600\n}, \n{\n \"ETH_accou", +"nt\" : \"0x55e10ba92711865c4b7f5b523328b01", +"e57925f54\",\n \"name\" : \"0x55e10ba92711", +"865c4b\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 892000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xc75c1f96b6fd2a7b10bea6f31b3ad6c6", +"ef593699\",\n \"name\" : \"0xc75c1f96b6fd2", +"a7b10\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1187000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x338480fa130f668aeed3675f4e20d3ba", +"0077bdff\",\n \"name\" : \"0x338480fa130f6", +"68aee\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 24900000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xdc6e60c2fe5ebac2dc626ba68a231e3", +"56ca44676\",\n \"name\" : \"0xdc6e60c2fe5e", +"bac2dc\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 5937963316\n}, \n{\n \"ETH_accou", +"nt\" : \"0x9117f19ca30abe89cef9305067fd33b", +"1475949a3\",\n \"name\" : \"0x9117f19ca30a", +"be89ce\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1592290000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x2e1bfb63fb937b0d8b5d48983c64067", +"7c5cd7eac\",\n \"name\" : \"cnn\",\n \"pub", +"licKey\" : \"SPH6JH7tb17XLkrab6SSdrm7Cjxhj", +"RXXDMTjEwLsHJw9uQgrX2v3q\",\n \"balance\"", +" : 1660000000\n}, \n{\n \"ETH_account\" : ", +"\"0x8ee3c9d7c1312cbde55268e73b9d46a79fdc5", +"247\",\n \"name\" : \"0x8ee3c9d7c1312cbde5", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 3307304000\n}, \n{\n \"ETH_account\" : ", +"\"0x88c4921d54e480471bf5ca61c085b4106440c", +"a7b\",\n \"name\" : \"0x88c4921d54e480471b", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1500000000\n}, \n{\n \"ETH_account\" : ", +"\"0xec54e6d7864a8a877395451d3822d436a741f", +"25f\",\n \"name\" : \"0xec54e6d7864a8a8773", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 991000000\n}, \n{\n \"ETH_account\" : \"", +"0x38aa05012a184de2829aee24284a899b28331e", +"1f\",\n \"name\" : \"0x38aa05012a184de282\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 3358237209\n}, \n{\n \"ETH_account\" : \"", +"0x7b567cc1058ce9225bea18767ce5d567f5adbf", +"89\",\n \"name\" : \"0x7b567cc1058ce9225b\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 850000000\n}, \n{\n \"ETH_account\" : \"0", +"x051fcabd1d63bdef155613e805c4ddf105de7c2", +"7\",\n \"name\" : \"0x051fcabd1d63bdef15\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 775000000\n}, \n{\n \"ETH_account\" : \"0x", +"cc1a9f40d655b32350621bf055434bced6ae6d8b", +"\",\n \"name\" : \"0xcc1a9f40d655b32350\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"18847581400\n}, \n{\n \"ETH_account\" : \"0", +"xa0f1512df2fae05e9a5cf7b4fe2de266c83be5d", +"4\",\n \"name\" : \"0xa0f1512df2fae05e9a\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 10739000\n}, \n{\n \"ETH_account\" : \"0x7", +"1f44750197dc547a536123f8beed998bf4c9765\"", +",\n \"name\" : \"0x71f44750197dc547a5\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"00000000\n}, \n{\n \"ETH_account\" : \"0x13", +"f35c7b31ddbbd555310a903298bfc3b9cd4ce9\",", +"\n \"name\" : \"0x13f35c7b31ddbbd555\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 14", +"00000000\n}, \n{\n \"ETH_account\" : \"0x0f", +"2cfc1f1221e3fec16fba19d5e8c09812ce34bb\",", +"\n \"name\" : \"0x0f2cfc1f1221e3fec1\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 20", +"0000000\n}, \n{\n \"ETH_account\" : \"0x89e", +"43d3836c259a7ed168085e1225e1dda5931f4\",\n", +" \"name\" : \"0x89e43d3836c259a7ed\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 500", +"000000\n}, \n{\n \"ETH_account\" : \"0x790d", +"af3be0eabec9f35db5754dfae01ef4b6a3e8\",\n ", +" \"name\" : \"0x790daf3be0eabec9f3\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5000", +"00000\n}, \n{\n \"ETH_account\" : \"0x184fa", +"fb1812e9ba088470a9b18f211872cad8c79\",\n ", +" \"name\" : \"0x184fafb1812e9ba088\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 17240", +"09\n}, \n{\n \"ETH_account\" : \"0xc34cc135", +"286625bdc6073d93751ce6330ec126b0\",\n \"", +"name\" : \"0xc34cc135286625bdc6\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 56000000", +"00\n}, \n{\n \"ETH_account\" : \"0x91bd5863", +"16bd0110b69033e7442c5dc7fa68576c\",\n \"", +"name\" : \"0x91bd586316bd0110b6\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 22862980", +"0\n}, \n{\n \"ETH_account\" : \"0xeb24986ed", +"ec817dc346b80dd87678b3cf90f232b\",\n \"n", +"ame\" : \"0xeb24986edec817dc34\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 396056134", +"00\n}, \n{\n \"ETH_account\" : \"0xc065d52c", +"4bd98c262266a8ab348e79a4f6a51ebd\",\n \"", +"name\" : \"0xc065d52c4bd98c2622\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 80067189", +"24\n}, \n{\n \"ETH_account\" : \"0x25ff2e40", +"e75a7263c1f79a1d17720d752b3acb41\",\n \"", +"name\" : \"0x25ff2e40e75a7263c1\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 29964507", +"29\n}, \n{\n \"ETH_account\" : \"0x647eeabd", +"db51856225a54853fe8485feb2eb2f5e\",\n \"", +"name\" : \"0x647eeabddb51856225\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 48496950", +"\n}, \n{\n \"ETH_account\" : \"0x427cbcb672", +"6888d9c99eb3cec272ddf18e8f6264\",\n \"na", +"me\" : \"0x427cbcb6726888d9c9\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 635472030\n", +"}, \n{\n \"ETH_account\" : \"0x68e38cc74bc", +"e70406f8eb3c82d59de53a9de94f3\",\n \"nam", +"e\" : \"0x68e38cc74bce70406f\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 247000000\n}", +", \n{\n \"ETH_account\" : \"0xed6b99933f01", +"dd31f396bfa787f5c3499dbadc10\",\n \"name", +"\" : \"0xed6b99933f01dd31f3\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 855000000\n},", +" \n{\n \"ETH_account\" : \"0x851c093b15a46", +"3d1195c2f516d4ef10319cc1eaa\",\n \"name\"", +" : \"0x851c093b15a463d119\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 18644649389\n}", +", \n{\n \"ETH_account\" : \"0xedf3625d4327", +"9827d03a60530ede7f68fdcf6a32\",\n \"name", +"\" : \"0xedf3625d43279827d0\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1001862000\n}", +", \n{\n \"ETH_account\" : \"0x4372bc66b008", +"87954a8f23d72c73e098918a2bfb\",\n \"name", +"\" : \"dalecooper\",\n \"publicKey\" : \"SPH", +"7PvgBcbPxKB9gEhtepJ5jQXCmC6HHMhXmZQfVQw6", +"m4fQFvAdWa\",\n \"balance\" : 500000000\n}", +", \n{\n \"ETH_account\" : \"0x95b87c4f3281", +"e88430f1bbaa98573e214e981398\",\n \"name", +"\" : \"0x95b87c4f3281e88430\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 164088500\n},", +" \n{\n \"ETH_account\" : \"0x1a4acbc074bfe", +"ef32cc4a19c45ddbe04fecf97a4\",\n \"name\"", +" : \"0x1a4acbc074bfeef32c\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 493498000\n}, ", +"\n{\n \"ETH_account\" : \"0x88f9a7585cfa6f", +"c02a34b4d6fdc6670e814dcd1a\",\n \"name\" ", +": \"0x88f9a7585cfa6fc02a\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 2145000000\n}, ", +"\n{\n \"ETH_account\" : \"0x9eafa1b9edab86", +"ee9182b65c4665e4635f1a9e2d\",\n \"name\" ", +": \"0x9eafa1b9edab86ee91\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3591254568\n}, ", +"\n{\n \"ETH_account\" : \"0xa1521a6eb5d3f1", +"95635f4c71c19569d48b6b0dd5\",\n \"name\" ", +": \"parsa76\",\n \"publicKey\" : \"SPH7Qn6T", +"H9rsJhEcCMiuajfL3ZLDVzk8T5r3PkY3kRuvXqT9", +"F5Qzn\",\n \"balance\" : 130000000\n}, \n{\n", +" \"ETH_account\" : \"0x7b1dd86098b47f2d9", +"d55b0139bfb38501ae54aa0\",\n \"name\" : \"", +"0x7b1dd86098b47f2d9d\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 90000000\n}, \n{\n ", +" \"ETH_account\" : \"0xdb6f47e34ea7b6b4095", +"009e90dfa91d39fbc5cc0\",\n \"name\" : \"0x", +"db6f47e34ea7b6b409\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 410710\n}, \n{\n \"E", +"TH_account\" : \"0xa1241d8ac45a371e8ccba76", +"0c10e0795f6c7c8f8\",\n \"name\" : \"0xa124", +"1d8ac45a371e8c\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 293848645\n}, \n{\n \"ET", +"H_account\" : \"0x0c2c2ec01e50afcf66ee7a83", +"58e420a678629717\",\n \"name\" : \"anyspht", +"xwall\",\n \"publicKey\" : \"SPH7DPtJxvExy", +"EQsJxeMMVipif439Rtk7jTtTTWrd7mBXzhsGBvUZ", +"\",\n \"balance\" : 489751076\n}, \n{\n \"", +"ETH_account\" : \"0x136021d786490b0e3178ed", +"863ff569c6d0daa4af\",\n \"name\" : \"0x136", +"021d786490b0e31\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1000000\n}, \n{\n \"ETH", +"_account\" : \"0x80a25606d599a5169800ca11b", +"ccdc55e150cba09\",\n \"name\" : \"0x80a256", +"06d599a51698\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 461859500\n}, \n{\n \"ETH_", +"account\" : \"0x8d5e72d6171e99cdcf16a29860", +"27eb3a43d7a7e5\",\n \"name\" : \"0x8d5e72d", +"6171e99cdcf\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 126486087533\n}, \n{\n \"ET", +"H_account\" : \"0x2c75ae7123696a55265f9d60", +"c74e885e43bed2d2\",\n \"name\" : \"0x2c75a", +"e7123696a5526\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 458339000\n}, \n{\n \"ETH", +"_account\" : \"0x1feb0ebb04ab2510dd4fd1df5", +"5a968d64e6b1e20\",\n \"name\" : \"0x1feb0e", +"bb04ab2510dd\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 130925067\n}, \n{\n \"ETH_", +"account\" : \"0xabff91777f1373a0102f1bdfc0", +"b3f9df2e33ca66\",\n \"name\" : \"0xabff917", +"77f1373a010\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3056329162\n}, \n{\n \"ETH_", +"account\" : \"0x72ec128cc277e31ca174d59e8f", +"1ffa86a9210733\",\n \"name\" : \"hootie\",\n", +" \"publicKey\" : \"SPH8XUtRoh2MP1aLkriRR", +"mWGsJ2pjKFyzUKRYs3wctsxGwaZrmyXc\",\n \"", +"balance\" : 1806387300\n}, \n{\n \"ETH_acc", +"ount\" : \"0xaab2a925d5879e78d5be0dad3e847", +"c4320051376\",\n \"name\" : \"0xaab2a925d5", +"879e78d5\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 4398411819\n}, \n{\n \"ETH_acc", +"ount\" : \"0x54bb337189968bc25f6ae6655c406", +"f02a65b19fe\",\n \"name\" : \"mmm3458\",\n ", +" \"publicKey\" : \"SPH6Gk5wMjt8UEaJ7JPheww", +"dzrXBFbHTeZCsKKSuCFC13QcAa4mhE\",\n \"ba", +"lance\" : 200459000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x69f1c7888cd929953240a9ff346998fb", +"85ea5daf\",\n \"name\" : \"0x69f1c7888cd92", +"99532\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 157400000\n}, \n{\n \"ETH_account", +"\" : \"0x0292698b485e0ff1623afe6a966fc0e83", +"c2b99cd\",\n \"name\" : \"leoyu\",\n \"pub", +"licKey\" : \"SPH53iGnro9b1mbFNpfEt58ZQDvh3", +"65rF812sbbsaBZSAYRhEGckU\",\n \"balance\"", +" : 386040425800\n}, \n{\n \"ETH_account\" ", +": \"0x519fe9ffa9f6ba4724c8fcbaa0ff03d1d8b", +"6a5ac\",\n \"name\" : \"0x519fe9ffa9f6ba47", +"24\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 872099521\n}, \n{\n \"ETH_account\" :", +" \"0x1e1f00c4e4a9e7947439547e94fd59bc1c39", +"3774\",\n \"name\" : \"0x1e1f00c4e4a9e7947", +"4\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 549578579\n}, \n{\n \"ETH_account\" : ", +"\"0x15b2fc3811434444e0b13df98f1ef5b41f9ad", +"658\",\n \"name\" : \"0x15b2fc3811434444e0", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 100000000\n}, \n{\n \"ETH_account\" : \"", +"0x79b3dadd217e7cc8aad9bda10abf310356bfef", +"20\",\n \"name\" : \"0x79b3dadd217e7cc8aa\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 800000000\n}, \n{\n \"ETH_account\" : \"0", +"x1954e2f9ed09e2d616bdadfb91cc0aa1cb80702", +"c\",\n \"name\" : \"0x1954e2f9ed09e2d616\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 62000000\n}, \n{\n \"ETH_account\" : \"0x8", +"d8a520fb36371216420735ef16447b110d25a60\"", +",\n \"name\" : \"0x8d8a520fb363712164\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"574000000\n}, \n{\n \"ETH_account\" : \"0x9", +"628f11c8fbf15df1307ad5284398ad7dcdf573c\"", +",\n \"name\" : \"0x9628f11c8fbf15df13\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 5", +"29999794\n}, \n{\n \"ETH_account\" : \"0x98", +"4b4eb4554135bed620560dc982adf31701087d\",", +"\n \"name\" : \"belushiwushi\",\n \"publi", +"cKey\" : \"SPH7VvUkk4De2cfLgrABwFbzqa2J7YD", +"1VLNxiwK5HRxzDVy6FCXpb\",\n \"balance\" :", +" 10742604600\n}, \n{\n \"ETH_account\" : \"", +"0x2790879f62713135ea123c451a0cb7ed9dd08b", +"3b\",\n \"name\" : \"0x2790879f62713135ea\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1468000000\n}, \n{\n \"ETH_account\" : \"", +"0x021f4aa7babb2f66811e43bfe1fca21c368ec1", +"06\",\n \"name\" : \"0x021f4aa7babb2f6681\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 3000000000\n}, \n{\n \"ETH_account\" : \"", +"0x8375bdffeec568dcf076b6febc4f6f56baadd0", +"96\",\n \"name\" : \"0x8375bdffeec568dcf0\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 250000000\n}, \n{\n \"ETH_account\" : \"0", +"xebde649a46b611cbc144b88a852abf7e0b818bd", +"7\",\n \"name\" : \"0xebde649a46b611cbc1\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1000000\n}, \n{\n \"ETH_account\" : \"0x65", +"46b938e33c754b17abeaf69657dae0c7675bec\",", +"\n \"name\" : \"0x6546b938e33c754b17\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 33", +"713000000\n}, \n{\n \"ETH_account\" : \"0x4", +"2ebe4f4013f5cd6fb02621dc4bc84d70bb8f675\"", +",\n \"name\" : \"0x42ebe4f4013f5cd6fb\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"217000000\n}, \n{\n \"ETH_account\" : \"0x4", +"54206ed77e1b6f51b90e8ce2d85104df6129d6c\"", +",\n \"name\" : \"0x454206ed77e1b6f51b\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"261000000\n}, \n{\n \"ETH_account\" : \"0x5", +"a6fc2de011d93842411aa5f91a0a4acd3feffde\"", +",\n \"name\" : \"0x5a6fc2de011d938424\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 9", +"999\n}, \n{\n \"ETH_account\" : \"0x4b7f9b6", +"6ff32ad4e7c066785a8b9697cff5394b5\",\n ", +"\"name\" : \"0x4b7f9b66ff32ad4e7c\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1032642", +"6700\n}, \n{\n \"ETH_account\" : \"0x1aac4b", +"294873482bb428d7f6a4dab2693fc13739\",\n ", +" \"name\" : \"0x1aac4b294873482bb4\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 209972", +"81075\n}, \n{\n \"ETH_account\" : \"0xfb75d", +"0a34739db0ffaba8f63d9fd0f24fad72903\",\n ", +" \"name\" : \"0xfb75d0a34739db0ffa\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 62672", +"8743\n}, \n{\n \"ETH_account\" : \"0x319acb", +"99505a01fb15b2be6dd1fd2b108318be72\",\n ", +" \"name\" : \"0x319acb99505a01fb15\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 209960", +"00000\n}, \n{\n \"ETH_account\" : \"0x4915b", +"754c2c45a4705c9700be0df220362213546\",\n ", +" \"name\" : \"0x4915b754c2c45a4705\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 14744", +"37000\n}, \n{\n \"ETH_account\" : \"0x1a771", +"0954642aefb2ae89a7ff42a72880ddd8505\",\n ", +" \"name\" : \"0x1a7710954642aefb2a\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 16872", +"937000\n}, \n{\n \"ETH_account\" : \"0x8125", +"e8c9641cf603c43edfcfc49ae6ad727e158d\",\n ", +" \"name\" : \"0x8125e8c9641cf603c4\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5049", +"3000000\n}, \n{\n \"ETH_account\" : \"0x1ec", +"bd4568f5f80787a70f463b249739d75d1420a\",\n", +" \"name\" : \"0x1ecbd4568f5f80787a\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 312", +"198700\n}, \n{\n \"ETH_account\" : \"0xfb12", +"88e1a7e768865a3ee21b486c0c90885e7f4a\",\n ", +" \"name\" : \"tadziusss1\",\n \"publicKey", +"\" : \"SPH8Z2HnyR6udehViJ4i6AFvuRJksPuKbKS", +"gj7xLSCCDdAjXWD22P\",\n \"balance\" : 980", +"00000\n}, \n{\n \"ETH_account\" : \"0x4ab8f", +"137ae6c1c2aa4d7f85d02e96e0bfb3af9ab\",\n ", +" \"name\" : \"0x4ab8f137ae6c1c2aa4\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10000", +"0000\n}, \n{\n \"ETH_account\" : \"0xc2c269", +"6d2ac899e42ed0d7937fb5612fb58cfab8\",\n ", +" \"name\" : \"0xc2c2696d2ac899e42e\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 200000", +"000\n}, \n{\n \"ETH_account\" : \"0x57d6c10", +"69a45f7a0d4c7f32c30980f70e7851d6b\",\n ", +"\"name\" : \"0x57d6c1069a45f7a0d4\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 8223250", +"00\n}, \n{\n \"ETH_account\" : \"0x427ed4bc", +"a47d5918397d8acb14ca3d7d25cf961d\",\n \"", +"name\" : \"0x427ed4bca47d591839\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 14570000", +"00\n}, \n{\n \"ETH_account\" : \"0x07b54549", +"c82e17aad5d1690ed492326b81e44b80\",\n \"", +"name\" : \"0x07b54549c82e17aad5\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 22641267", +"78\n}, \n{\n \"ETH_account\" : \"0x50400b2d", +"4714cfb84cc83a995010ed38b2ec14ac\",\n \"", +"name\" : \"0x50400b2d4714cfb84c\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 12216990", +"00\n}, \n{\n \"ETH_account\" : \"0xfdbf3e0c", +"9ac0344456cac1dff03cc4d311af064c\",\n \"", +"name\" : \"0xfdbf3e0c9ac0344456\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 18667255", +"68\n}, \n{\n \"ETH_account\" : \"0x37b65ef9", +"ba8ee6dce71094f5aee00e7eb9e62d9e\",\n \"", +"name\" : \"0x37b65ef9ba8ee6dce7\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 42580000", +"00\n}, \n{\n \"ETH_account\" : \"0x4b50462d", +"8432c840124e400226b15b5f6509f5ed\",\n \"", +"name\" : \"0x4b50462d8432c84012\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 23300000", +"\n}, \n{\n \"ETH_account\" : \"0xf1332e8a89", +"6dbae4aa9f47bae56c5856294aeefe\",\n \"na", +"me\" : \"0xf1332e8a896dbae4aa\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 4000000000", +"0\n}, \n{\n \"ETH_account\" : \"0xb56fa78b6", +"8f514e8a9f014134097a53905ab0f4c\",\n \"n", +"ame\" : \"0xb56fa78b68f514e8a9\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 225729850", +"0\n}, \n{\n \"ETH_account\" : \"0x58fa1d615", +"a46a3244db453147b3159b046671ca7\",\n \"n", +"ame\" : \"0x58fa1d615a46a3244d\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 330043382", +"00\n}, \n{\n \"ETH_account\" : \"0x35e2ffc6", +"b5033dc56b61416e8fe4b3eced176857\",\n \"", +"name\" : \"scutch\",\n \"publicKey\" : \"SPH", +"6gW6mgUZ2ftuUk6kTLN357oz4cknUWiw6iLcKves", +"ZxR9KJ37vk\",\n \"balance\" : 3992000000\n", +"}, \n{\n \"ETH_account\" : \"0x70b2314032c", +"ff0ff21288481ca4fd93ae7b3d950\",\n \"nam", +"e\" : \"0x70b2314032cff0ff21\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 83000000\n},", +" \n{\n \"ETH_account\" : \"0x084dc66cd1c1d", +"90e9262f7e5d798373c8a96a9e3\",\n \"name\"", +" : \"0x084dc66cd1c1d90e92\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1971754000\n},", +" \n{\n \"ETH_account\" : \"0xbca762ec97ebf", +"5066d851d01e159928402014ce7\",\n \"name\"", +" : \"0xbca762ec97ebf5066d\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 301460500\n}, ", +"\n{\n \"ETH_account\" : \"0x34e89c43c545ae", +"b7f1f0b2a185cefea29439eac8\",\n \"name\" ", +": \"0x34e89c43c545aeb7f1\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 163430100\n}, \n", +"{\n \"ETH_account\" : \"0x22173d154c3dd3c", +"5f7d488368e3fd99ad1e822f9\",\n \"name\" :", +" \"0x22173d154c3dd3c5f7\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 235658\n}, \n{\n ", +" \"ETH_account\" : \"0x4abdf5d200c58d69477", +"876f2fea13e439ce1458d\",\n \"name\" : \"0x", +"4abdf5d200c58d6947\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 2524024000\n}, \n{\n ", +" \"ETH_account\" : \"0xf4c317c356c22caa121", +"462a81571a275276c52b9\",\n \"name\" : \"0x", +"f4c317c356c22caa12\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 539443423696\n}, \n{\n", +" \"ETH_account\" : \"0xadd0cc9e04c63fab7", +"89d278fe8459e542bd2f0ef\",\n \"name\" : \"", +"sophiatxjeroen\",\n \"publicKey\" : \"SPH6", +"nFueVpWB1Ut4gcSMZbZtjiYQtchhkzP9rrgBLZTv", +"RdGwKUSD9\",\n \"balance\" : 1262264100\n}", +", \n{\n \"ETH_account\" : \"0x2899ccedbb8b", +"b93d251cbdcb1ecf5be9696a5a88\",\n \"name", +"\" : \"0x2899ccedbb8bb93d25\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1102724000\n}", +", \n{\n \"ETH_account\" : \"0xd6226833094c", +"25d19658af577b9a996fb25b0beb\",\n \"name", +"\" : \"dimisophiatx\",\n \"publicKey\" : \"S", +"PH5PnkyL417agctmJEyoaV94BR2tdRLjzjP9FCzL", +"sM6vNnQpRDJD\",\n \"balance\" : 152128214", +"00\n}, \n{\n \"ETH_account\" : \"0x59281678", +"b69900559eb3e82a4f5fc95054a70335\",\n \"", +"name\" : \"0x59281678b69900559e\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 55000000", +"0\n}, \n{\n \"ETH_account\" : \"0x1ed0d1269", +"70c4e6070d372ee3537476dd93d500a\",\n \"n", +"ame\" : \"0x1ed0d126970c4e6070\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 756192946", +"\n}, \n{\n \"ETH_account\" : \"0x02e89c4264", +"287e651f862e6afd10ae7dab4f2ddf\",\n \"na", +"me\" : \"0x02e89c4264287e651f\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 614930000\n", +"}, \n{\n \"ETH_account\" : \"0x223558d2287", +"3b22942d79501c276d5badff59b6a\",\n \"nam", +"e\" : \"0x223558d22873b22942\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 823181600\n}", +", \n{\n \"ETH_account\" : \"0x5c7239651f7b", +"66e6031e1d95deb8c2aedba3eb70\",\n \"name", +"\" : \"0x5c7239651f7b66e603\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 300000000\n},", +" \n{\n \"ETH_account\" : \"0xecd989df0427f", +"8a9fbe5cb7d9d556646f6f45831\",\n \"name\"", +" : \"0xecd989df0427f8a9fb\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 139477308\n}, ", +"\n{\n \"ETH_account\" : \"0xcec76dc9e5967c", +"415873178293de0925c29d2dd8\",\n \"name\" ", +": \"0xcec76dc9e5967c4158\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 180000000\n}, \n", +"{\n \"ETH_account\" : \"0xf24018a2fabaf15", +"8ae6e635e818854af1f53e64e\",\n \"name\" :", +" \"0xf24018a2fabaf158ae\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 40000000000\n}, ", +"\n{\n \"ETH_account\" : \"0x23757d3507cf9f", +"16cac4a18a37efc8f1669ec0e7\",\n \"name\" ", +": \"0x23757d3507cf9f16ca\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 25000000000\n},", +" \n{\n \"ETH_account\" : \"0x8a4e1cf8dbd88", +"1356032247104cc2071e0c7566f\",\n \"name\"", +" : \"0x8a4e1cf8dbd8813560\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 960000000\n}, ", +"\n{\n \"ETH_account\" : \"0xcff9dd2c80140a", +"8c72b9d6a04fb68a8a845c46e5\",\n \"name\" ", +": \"0xcff9dd2c80140a8c72\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 2290857535\n}, ", +"\n{\n \"ETH_account\" : \"0xd8193725764e7a", +"d2dcbc91c9104f9cc8aa23e475\",\n \"name\" ", +": \"0xd8193725764e7ad2dc\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1019068600\n}, ", +"\n{\n \"ETH_account\" : \"0x765e6b572eeeb6", +"7f150b2ffe5a6ca81928158059\",\n \"name\" ", +": \"0x765e6b572eeeb67f15\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3324000000\n}, ", +"\n{\n \"ETH_account\" : \"0x43a70927cabea3", +"5e20f9ac6b1784925d30b35921\",\n \"name\" ", +": \"0x43a70927cabea35e20\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 7168587500\n}, ", +"\n{\n \"ETH_account\" : \"0xc93501696c5941", +"a24114df29dcae13c31650ecca\",\n \"name\" ", +": \"0xc93501696c5941a241\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1345000000\n}, ", +"\n{\n \"ETH_account\" : \"0xc9559633a53ff2", +"aa82f6b13b76a9751cb3a6d4b8\",\n \"name\" ", +": \"tigerkamp\",\n \"publicKey\" : \"SPH83K", +"jPybZzNWXybz3wxXtkUKC2V9BYrqyoXg2CPNUv3Y", +"9TQoLPp\",\n \"balance\" : 5504782037\n}, ", +"\n{\n \"ETH_account\" : \"0xf7dd737639e6c9", +"c07ab17c5124f3f799936d559e\",\n \"name\" ", +": \"0xf7dd737639e6c9c07a\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 318300000\n}, \n", +"{\n \"ETH_account\" : \"0xac6cb5ff1de7dd1", +"47b239dfd9a5e1a1646c4b506\",\n \"name\" :", +" \"0xac6cb5ff1de7dd147b\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 361799200\n}, \n{", +"\n \"ETH_account\" : \"0x5831ef003c34e0b4", +"627622bbf67ceee593b5f596\",\n \"name\" : ", +"\"0x5831ef003c34e0b462\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 249467000\n}, \n{\n", +" \"ETH_account\" : \"0xfe1eda689c345c464", +"5f68ed9a5d316d6422486f6\",\n \"name\" : \"", +"0xfe1eda689c345c4645\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 8305080500\n}, \n{\n", +" \"ETH_account\" : \"0x56861463ebf168f1d", +"70cb2e3949522253a7bf6d2\",\n \"name\" : \"", +"0x56861463ebf168f1d7\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 11985770801\n}, \n{", +"\n \"ETH_account\" : \"0x7ca0788f4e429957", +"f36477707f425c6b108ba661\",\n \"name\" : ", +"\"jaggajatt45199\",\n \"publicKey\" : \"SPH", +"6jzDjnNk2aHNDcNQP8tVUxof28HwvzZ6YG91azJg", +"kLN3He7j8N\",\n \"balance\" : 5249107429\n", +"}, \n{\n \"ETH_account\" : \"0x1a7f63ca817", +"d146c09e115d518b98966694cdf04\",\n \"nam", +"e\" : \"0x1a7f63ca817d146c09\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 463812590\n}", +", \n{\n \"ETH_account\" : \"0x50155fae87a8", +"b5d7c96a06212a9bb55634e54749\",\n \"name", +"\" : \"0x50155fae87a8b5d7c9\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 4156000000\n}", +", \n{\n \"ETH_account\" : \"0xc7e9a9a9cd0a", +"e3e279338945d8884b165c8d53a0\",\n \"name", +"\" : \"0xc7e9a9a9cd0ae3e279\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 154624700\n},", +" \n{\n \"ETH_account\" : \"0xa43b097d4fbf6", +"b039628881541251f0bc01592ff\",\n \"name\"", +" : \"0xa43b097d4fbf6b0396\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 796803000\n}, ", +"\n{\n \"ETH_account\" : \"0x7d9b6211fa8db3", +"9b70debaf9514f64c7095dc994\",\n \"name\" ", +": \"0x7d9b6211fa8db39b70\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 3699696000\n}, ", +"\n{\n \"ETH_account\" : \"0xd5c8561b57a990", +"579a6c343cec8a04f1406a5fe3\",\n \"name\" ", +": \"0xd5c8561b57a990579a\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 6820000000\n}, ", +"\n{\n \"ETH_account\" : \"0x6e9c2fd5c7b002", +"c3c4255fcb9019d00bba86977e\",\n \"name\" ", +": \"0x6e9c2fd5c7b002c3c4\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 190297882594\n}", +", \n{\n \"ETH_account\" : \"0x53173177caee", +"56c30f352698339263e0d918067e\",\n \"name", +"\" : \"0x53173177caee56c30f\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1254651000\n}", +", \n{\n \"ETH_account\" : \"0xc4382e954372", +"498012347a5f3ebe96b2a0f23cd7\",\n \"name", +"\" : \"0xc4382e954372498012\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 100000000\n},", +" \n{\n \"ETH_account\" : \"0x446a7cff6f00b", +"1fec1ea4b74e23d97380c27c759\",\n \"name\"", +" : \"0x446a7cff6f00b1fec1\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 5076200000\n},", +" \n{\n \"ETH_account\" : \"0x6d7f6b558d5ce", +"6292dca1325106772cf4d257274\",\n \"name\"", +" : \"0x6d7f6b558d5ce6292d\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 8545836300\n},", +" \n{\n \"ETH_account\" : \"0x2045d18d2a325", +"ea4d31802b25eefdd10046b37c5\",\n \"name\"", +" : \"jatin\",\n \"publicKey\" : \"SPH8fiCwV", +"Cqr6UqPjHRFPYW8r34vuUvP3Vj3G4vJJn3Yx3ksG", +"4Kpa\",\n \"balance\" : 872846000\n}, \n{\n ", +" \"ETH_account\" : \"0x9859856cea1238441b", +"0d4acfe8f01ff45b5287ea\",\n \"name\" : \"0", +"x9859856cea1238441b\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 150000000\n}, \n{\n ", +" \"ETH_account\" : \"0x4933660d7f44af5d7f2", +"d7addc4fbee0eafca39dd\",\n \"name\" : \"0x", +"4933660d7f44af5d7f\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 2016000000\n}, \n{\n ", +" \"ETH_account\" : \"0x1de77ebbf18855eb5fa", +"0005f5c2d8d12eac3f5a9\",\n \"name\" : \"0x", +"1de77ebbf18855eb5f\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1000000\n}, \n{\n \"", +"ETH_account\" : \"0xc532d5862d2a9e63a8be45", +"1e448e3e7fdbddf140\",\n \"name\" : \"0xc53", +"2d5862d2a9e63a8\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1720000000\n}, \n{\n \"", +"ETH_account\" : \"0xab635cf54c4e6f84d2e755", +"95c5c20045fdb5f793\",\n \"name\" : \"0xab6", +"35cf54c4e6f84d2\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 584000000\n}, \n{\n \"E", +"TH_account\" : \"0xaba13e396bb03f819a9e805", +"df25181f9aa697692\",\n \"name\" : \"0xaba1", +"3e396bb03f819a\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 2547171124\n}, \n{\n \"E", +"TH_account\" : \"0x218fcd0a38e9d9cd30f948c", +"f93cc40f67d4bf444\",\n \"name\" : \"tman\",", +"\n \"publicKey\" : \"SPH8gPYdoKBgX3jLdev2", +"dS5ZzFqT4iP2uByutpbtYPiyPRQye2hzu\",\n ", +"\"balance\" : 2968455565\n}, \n{\n \"ETH_ac", +"count\" : \"0xa35278833e98835cf6096c9794fb", +"7ede2b0fece2\",\n \"name\" : \"sophiatxdv\"", +",\n \"publicKey\" : \"SPH4wmSXzfRC228yS6D", +"a5yumGxGhDhAs5pBAMUafPRUmpnzPwW99V\",\n ", +" \"balance\" : 1011760000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x3e214264b9ec23311a383b8cefd", +"40eb5ef83a8ed\",\n \"name\" : \"0x3e214264", +"b9ec23311a\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 7038000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x99b9501d084600d311b96cef60f", +"bc17f41e03342\",\n \"name\" : \"0x99b9501d", +"084600d311\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 324667000\n}, \n{\n \"ETH_ac", +"count\" : \"0x059bfa0235ac1bf00310bf711a6e", +"0f5be5682d5f\",\n \"name\" : \"0x059bfa023", +"5ac1bf003\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 20864440000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xfb27318b61a8d800024726e92a1", +"fba16b138e5ab\",\n \"name\" : \"0xfb27318b", +"61a8d80002\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1085000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x93cce42882bbf9b2939f98e9723", +"d3d7b3bb6f554\",\n \"name\" : \"0x93cce428", +"82bbf9b293\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1392000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x675c002976797ab10461c4231ef", +"ea359ef520f8d\",\n \"name\" : \"0x675c0029", +"76797ab104\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 70\n}, \n{\n \"ETH_account\" ", +": \"0x062c4deef7d068a729260d5057ea553de75", +"aa6cd\",\n \"name\" : \"0x062c4deef7d068a7", +"29\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 11\n}, \n{\n \"ETH_account\" : \"0xfd0", +"641feacd5206edc7a4f2ed7f97cbb405f539b\",\n", +" \"name\" : \"0xfd0641feacd5206edc\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 16\n", +"}, \n{\n \"ETH_account\" : \"0xe7414289d26", +"719dc35a5674580db7508b041fa47\",\n \"nam", +"e\" : \"0xe7414289d26719dc35\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 8282000000\n", +"}, \n{\n \"ETH_account\" : \"0x568cbdd99da", +"79418f81fb5304661c18b84e7b609\",\n \"nam", +"e\" : \"0x568cbdd99da79418f8\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 999001000\n}", +", \n{\n \"ETH_account\" : \"0xae71fd12a05f", +"c6acabcd23029e656e434e510526\",\n \"name", +"\" : \"0xae71fd12a05fc6acab\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 7000000000\n}", +", \n{\n \"ETH_account\" : \"0x17ecd0545d46", +"ea2768ea3f987f0b8a4651b357c2\",\n \"name", +"\" : \"0x17ecd0545d46ea2768\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 723280000\n},", +" \n{\n \"ETH_account\" : \"0xdc268e304711a", +"11dc4cef973b866eea6236db64e\",\n \"name\"", +" : \"0xdc268e304711a11dc4\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 446046615\n}, ", +"\n{\n \"ETH_account\" : \"0x6a6866cb9a271a", +"c824bcac04f9f3d7679a335fd0\",\n \"name\" ", +": \"0x6a6866cb9a271ac824\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1445035464\n}, ", +"\n{\n \"ETH_account\" : \"0x7c513ae23f5cb8", +"f0a2cb113c76ae0d8a87bfe402\",\n \"name\" ", +": \"0x7c513ae23f5cb8f0a2\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 138313\n}, \n{\n ", +" \"ETH_account\" : \"0xf8f9b8153a7b083bdf", +"278599a13b5c45307fb699\",\n \"name\" : \"0", +"xf8f9b8153a7b083bdf\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 11514517208\n}, \n{\n", +" \"ETH_account\" : \"0x90b2348219e9761ce", +"3cc1d9f4a30e26718a37cac\",\n \"name\" : \"", +"0x90b2348219e9761ce3\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 388883\n}, \n{\n ", +"\"ETH_account\" : \"0xe6d805bbba90e883bdb15", +"ff31135b92777168ac1\",\n \"name\" : \"0xe6", +"d805bbba90e883bd\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 2843350269\n}, \n{\n ", +"\"ETH_account\" : \"0x8404fa5c448c5a68900d5", +"16d1ff5cbed21866983\",\n \"name\" : \"0x84", +"04fa5c448c5a6890\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 171368400\n}, \n{\n \"", +"ETH_account\" : \"0xfdd9bb70f2a2f20e3c0262", +"b4c4b14e75db54b1d8\",\n \"name\" : \"0xfdd", +"9bb70f2a2f20e3c\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 596964075\n}, \n{\n \"E", +"TH_account\" : \"0x3bd0647a6df8467111c3c6f", +"28652cb4a17643f4d\",\n \"name\" : \"garyji", +"tters\",\n \"publicKey\" : \"SPH6W9gkyoKUj", +"99dMy9ekocGVADkgUtL8qwKpxaQYgRpWQ8kSZxpG", +"\",\n \"balance\" : 10607148600\n}, \n{\n ", +" \"ETH_account\" : \"0xa02a0224208c85fea7ee", +"96723173d2a304ec2bb4\",\n \"name\" : \"0xa", +"02a0224208c85fea7\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1047504655\n}, \n{\n ", +" \"ETH_account\" : \"0x8d5cc0cac7211293ce75", +"6437cd576c2ea2660f26\",\n \"name\" : \"0x8", +"d5cc0cac7211293ce\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 330803000\n}, \n{\n ", +"\"ETH_account\" : \"0x908e277614c62f6bfed47", +"d4490784378fa52b7e6\",\n \"name\" : \"0x90", +"8e277614c62f6bfe\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 333000000\n}, \n{\n \"", +"ETH_account\" : \"0xca099ad37ba8b63682e6d2", +"814dc64025f1aa82b8\",\n \"name\" : \"mlola", +"bitcoins\",\n \"publicKey\" : \"SPH4wnEn67", +"zo9VqEPPdkGRyzvmnehVKwE14WqdCjAbvTyFiBYj", +"HUv\",\n \"balance\" : 599000000\n}, \n{\n ", +" \"ETH_account\" : \"0x93930b20206000c7a11", +"74e6d2f45558108c6d068\",\n \"name\" : \"al", +"eks\",\n \"publicKey\" : \"SPH8N7wtQjvfD7P", +"4C3wSsGU1kufc9CLxMhku8tCZBvwxPyA5ZYyHz\",", +"\n \"balance\" : 5442040318\n}, \n{\n \"E", +"TH_account\" : \"0x6529021b515d78da2ba7752", +"4a32573b350e289b9\",\n \"name\" : \"0x6529", +"021b515d78da2b\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 50000000000\n}, \n{\n \"", +"ETH_account\" : \"0x647676ffaf299fd6c08720", +"251d727accab64ae95\",\n \"name\" : \"gtsph", +"tx\",\n \"publicKey\" : \"SPH81ye999bHU3dP", +"Wg5PQNh7wubazt24hVeiaptk9StzM1mTMAjhm\",\n", +" \"balance\" : 9746623500\n}, \n{\n \"ET", +"H_account\" : \"0x2ea1331950304271a1d2844b", +"941daf92ad1c0cd7\",\n \"name\" : \"0x2ea13", +"31950304271a1\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 984877600\n}, \n{\n \"ETH", +"_account\" : \"0xe8efa5e4d9599769043fc3171", +"5cec064b49442ab\",\n \"name\" : \"0xe8efa5", +"e4d959976904\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 632276000\n}, \n{\n \"ETH_", +"account\" : \"0xb828e669321f33d0ffd806b226", +"667c67ed361580\",\n \"name\" : \"alexander", +"\",\n \"publicKey\" : \"SPH6D8KMGbwv2yGgHB", +"99ZXkdmyJ8XFRDBQfi3iUCeGHFafr6QZQGG\",\n ", +" \"balance\" : 1990254700\n}, \n{\n \"ETH_", +"account\" : \"0xa54badc85cbde1493228d6c68d", +"497e41c0e154d1\",\n \"name\" : \"0xa54badc", +"85cbde14932\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 64420252448\n}, \n{\n \"ETH", +"_account\" : \"0x241be547b539734d5b6e95d9c", +"c14ee859f59c21f\",\n \"name\" : \"0x241be5", +"47b539734d5b\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 850000000\n}, \n{\n \"ETH_", +"account\" : \"0xcd7e7eb47466fb46428c18ae59", +"54e82d434e9889\",\n \"name\" : \"0xcd7e7eb", +"47466fb4642\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 9323150000\n}, \n{\n \"ETH_", +"account\" : \"0x4baa0950e7ff2a0279e816b83a", +"fbed286a3ce727\",\n \"name\" : \"0x4baa095", +"0e7ff2a0279\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3925600000\n}, \n{\n \"ETH_", +"account\" : \"0xa91c2ceb9d2e343bfd5a12d5b3", +"b3794346a8c473\",\n \"name\" : \"0xa91c2ce", +"b9d2e343bfd\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1630200763\n}, \n{\n \"ETH_", +"account\" : \"0xf3383b8d71b2414c94ad0b9333", +"114f57be2b31a9\",\n \"name\" : \"0xf3383b8", +"d71b2414c94\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 540000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x0b736bca41c2f9653995e8d4792", +"452261536d7fe\",\n \"name\" : \"0x0b736bca", +"41c2f96539\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3031826800\n}, \n{\n \"ETH_a", +"ccount\" : \"0x1076ef8d916b07d0817dc438298", +"94d3650b5d7a9\",\n \"name\" : \"0x1076ef8d", +"916b07d081\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 4666917332\n}, \n{\n \"ETH_a", +"ccount\" : \"0x6915a8561913b1bb98080a1eab6", +"3a11bd4fa488d\",\n \"name\" : \"0x6915a856", +"1913b1bb98\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 99940000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x1ab25c14563b66ad868e5d329f4ee", +"5147bb1d30c\",\n \"name\" : \"0x1ab25c1456", +"3b66ad86\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 4169609600\n}, \n{\n \"ETH_acc", +"ount\" : \"0x211f722a42653ff493447767fb6f7", +"343177530f7\",\n \"name\" : \"0x211f722a42", +"653ff493\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 350799611\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa8cc8533da482f8008e29888547917", +"c14777b989\",\n \"name\" : \"0xa8cc8533da4", +"82f8008\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 822130600\n}, \n{\n \"ETH_accou", +"nt\" : \"0x03a2c68022f1b9c8aebb7dc9e11f679", +"5526f3130\",\n \"name\" : \"0x03a2c68022f1", +"b9c8ae\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 204350267\n}, \n{\n \"ETH_accoun", +"t\" : \"0x0ce5bbb61eb5d2b02514dd2ba5278c44", +"3d8dcbfc\",\n \"name\" : \"stephen1245\",\n ", +" \"publicKey\" : \"SPH5R27H8RNmDpmTXXQ8Wn", +"yVYyDfTG81Lk4v5f18CQpsVvaPVJ3D5\",\n \"b", +"alance\" : 1700000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x9d3592092e23606e899fb8f05692ed", +"1a3b323f4e\",\n \"name\" : \"0x9d3592092e2", +"3606e89\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 202154000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xfce78e0bbf1e54ee05efd990aeb1614", +"d8f07a36a\",\n \"name\" : \"0xfce78e0bbf1e", +"54ee05\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 22125731200\n}, \n{\n \"ETH_acco", +"unt\" : \"0xe4ff2bf2d61719d5ad5343c36d31e9", +"ab10535198\",\n \"name\" : \"atxwqert\",\n ", +" \"publicKey\" : \"SPH6xJ6Eq6asYNNowduT6Ua", +"t2GXgC95TEDGZ96EQND7PE3omuahwZ\",\n \"ba", +"lance\" : 4179745678\n}, \n{\n \"ETH_accou", +"nt\" : \"0xd1cf7fa1fd44c5c53f090224088c45a", +"a565e4aa0\",\n \"name\" : \"0xd1cf7fa1fd44", +"c5c53f\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 10000000\n}, \n{\n \"ETH_account", +"\" : \"0xac955c1241cafb442913a8b10605c0093", +"8d65fb1\",\n \"name\" : \"0xac955c1241cafb", +"4429\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 2003000000\n}, \n{\n \"ETH_account", +"\" : \"0x94294ab5bfc9162d41ae7f650a1a05325", +"2d4b293\",\n \"name\" : \"0x94294ab5bfc916", +"2d41\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 710000000\n}, \n{\n \"ETH_account\"", +" : \"0x64fddaafff115cc9f92e04d0c917a18a2b", +"b544d1\",\n \"name\" : \"dwaynos\",\n \"pu", +"blicKey\" : \"SPH6AyFdU7dKtUzB7DLvHCaWakKg", +"2rnocwaT612gBAGpbtdxbXuNT\",\n \"balance", +"\" : 1500000000\n}, \n{\n \"ETH_account\" :", +" \"0x3eda6ae60f170975be03847ab8e0cf3ff550", +"bdfc\",\n \"name\" : \"dng\",\n \"publicKe", +"y\" : \"SPH6J4SGkDF3Hw9grZMq9jtTCb3g8hBDVj", +"SL4qWvYXzpx7uKStYJA\",\n \"balance\" : 18", +"10000000\n}, \n{\n \"ETH_account\" : \"0xd7", +"bb15f7aeffe417255326126f7f3959f8f193e6\",", +"\n \"name\" : \"0xd7bb15f7aeffe41725\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 15", +"70000000\n}, \n{\n \"ETH_account\" : \"0x63", +"70d43033cdf7d6fd2c267b08a623adb78500cf\",", +"\n \"name\" : \"0x6370d43033cdf7d6fd\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 12", +"6720000\n}, \n{\n \"ETH_account\" : \"0xdb5", +"acb04242472ef70c0fff39bcfe0af281e6a83\",\n", +" \"name\" : \"teddydergrosse\",\n \"publ", +"icKey\" : \"SPH7eqFsHabbgz3Q4oofxqJDGgzivf", +"u248oDejJ3RMkyuyFfkEE7A\",\n \"balance\" ", +": 34996137799\n}, \n{\n \"ETH_account\" : ", +"\"0xfbeaeedffa80efe5c2a030bfa7790dfb43d27", +"cbe\",\n \"name\" : \"0xfbeaeedffa80efe5c2", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1692999559\n}, \n{\n \"ETH_account\" : ", +"\"0xce431be47776951dc0e480608894dd36bbbdc", +"7fe\",\n \"name\" : \"0xce431be47776951dc0", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1662780000\n}, \n{\n \"ETH_account\" : ", +"\"0x6d2be4193c472b987d11621adcac889806367", +"ff0\",\n \"name\" : \"0x6d2be4193c472b987d", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 9603805100\n}, \n{\n \"ETH_account\" : ", +"\"0xf780ec47a6bc70636b9b4838dca3c10f062dd", +"f79\",\n \"name\" : \"0xf780ec47a6bc70636b", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 256000000\n}, \n{\n \"ETH_account\" : \"", +"0x77e92a2699ce4baa52a1490e5bb81590362085", +"6f\",\n \"name\" : \"0x77e92a2699ce4baa52\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 2394939771\n}, \n{\n \"ETH_account\" : \"", +"0xf9c4474da9e3a53d2e3b03612c7ab58ba3c2b0", +"7c\",\n \"name\" : \"0xf9c4474da9e3a53d2e\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1415795107\n}, \n{\n \"ETH_account\" : \"", +"0x7ed448e7b908bebcea55e9d9844a57d2350dfd", +"26\",\n \"name\" : \"0x7ed448e7b908bebcea\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1375922\n}, \n{\n \"ETH_account\" : \"0x2", +"239f113e611d3081cc5564d9cac5c40809cc1ed\"", +",\n \"name\" : \"0x2239f113e611d3081c\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"0000000\n}, \n{\n \"ETH_account\" : \"0x8a3", +"27dedcb96e426240e2fda646139f9def26264\",\n", +" \"name\" : \"rob\",\n \"publicKey\" : \"S", +"PH5kTrrgHxedJqgHZpeudYKY4YR48HWpT7vQn3jW", +"BqRo67n7DmVZ\",\n \"balance\" : 157300000", +"0\n}, \n{\n \"ETH_account\" : \"0xf78676d53", +"c3b17997031028ecfcf8c0163719f9f\",\n \"n", +"ame\" : \"0xf78676d53c3b179970\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 160000000", +"\n}, \n{\n \"ETH_account\" : \"0xde18847609", +"f4586d88fe5e3cfbbfbc8a3b000c13\",\n \"na", +"me\" : \"0xde18847609f4586d88\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 100000000\n", +"}, \n{\n \"ETH_account\" : \"0xabb11c0f48b", +"bea96d4d291b5fbfa7c01dd9acef6\",\n \"nam", +"e\" : \"0xabb11c0f48bbea96d4\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 72343305\n},", +" \n{\n \"ETH_account\" : \"0xd2bfd7cb56340", +"adc6c542ce5ee5188e2d8a37ea9\",\n \"name\"", +" : \"0xd2bfd7cb56340adc6c\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1039388930\n},", +" \n{\n \"ETH_account\" : \"0x9afbd21082cce", +"6c784008f9c63593c01ca8f77bb\",\n \"name\"", +" : \"0x9afbd21082cce6c784\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 100000000\n}, ", +"\n{\n \"ETH_account\" : \"0xf0d926148393c2", +"0ab1df5a073547dcfdcc48c5e0\",\n \"name\" ", +": \"0xf0d926148393c20ab1\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 166023000000\n}", +", \n{\n \"ETH_account\" : \"0x471b08df0961", +"77b004049e1ff554f360ae4b5537\",\n \"name", +"\" : \"0x471b08df096177b004\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 14939999696\n", +"}, \n{\n \"ETH_account\" : \"0x00353346830", +"8868cab965df7121acdd6cd67d523\",\n \"nam", +"e\" : \"0x003533468308868cab\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 498191200\n}", +", \n{\n \"ETH_account\" : \"0xdab82af4e6be", +"b7090280430b75776536fb94383a\",\n \"name", +"\" : \"0xdab82af4e6beb70902\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 780456959\n},", +" \n{\n \"ETH_account\" : \"0x72dd5cdcc805d", +"03846721e2fc158f64c93566f77\",\n \"name\"", +" : \"0x72dd5cdcc805d03846\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 627981000\n}, ", +"\n{\n \"ETH_account\" : \"0xb91a05d0fd2841", +"af42712dbc7497ea6712a97dd4\",\n \"name\" ", +": \"0xb91a05d0fd2841af42\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 615030000\n}, \n", +"{\n \"ETH_account\" : \"0x484ce6d79f3eff8", +"5917994b583e771a2fa64ad64\",\n \"name\" :", +" \"0x484ce6d79f3eff8591\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 100000000\n}, \n{", +"\n \"ETH_account\" : \"0x3faf44565c296c45", +"beb2645f3343a4390b724f5c\",\n \"name\" : ", +"\"0x3faf44565c296c45be\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 247998039\n}, \n{\n", +" \"ETH_account\" : \"0x87a54a1c1b94f8f82", +"0640d7c9b076069cc028828\",\n \"name\" : \"", +"0x87a54a1c1b94f8f820\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 16647706821\n}, \n{", +"\n \"ETH_account\" : \"0xc186e11a243f55ef", +"da38a317b93a0a6e20c0291c\",\n \"name\" : ", +"\"0xc186e11a243f55efda\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 5825605903\n}, \n{", +"\n \"ETH_account\" : \"0x1fe697fd43b3881a", +"0c3de44aaf4de2fc5f24a22b\",\n \"name\" : ", +"\"0x1fe697fd43b3881a0c\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 214746800\n}, \n{\n", +" \"ETH_account\" : \"0x2ef507853ab25d4bc", +"016d9733f6a71eeea9df238\",\n \"name\" : \"", +"0x2ef507853ab25d4bc0\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 475000\n}, \n{\n ", +"\"ETH_account\" : \"0x735aa8bd8aef29d052730", +"61fd056d8a902559d92\",\n \"name\" : \"0x73", +"5aa8bd8aef29d052\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 3002026700\n}, \n{\n ", +"\"ETH_account\" : \"0x8c73bd2aba288564d444f", +"8b7b0530197300055d7\",\n \"name\" : \"0x8c", +"73bd2aba288564d4\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 185000000\n}, \n{\n \"", +"ETH_account\" : \"0x85fa61626f58ffeed098a5", +"b925cd10753a0eb135\",\n \"name\" : \"0x85f", +"a61626f58ffeed0\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2185787700\n}, \n{\n \"", +"ETH_account\" : \"0xf0f01bb9fe06b504e9598f", +"0061c575e4294e72f2\",\n \"name\" : \"0xf0f", +"01bb9fe06b504e9\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 315409200\n}, \n{\n \"E", +"TH_account\" : \"0x678b2861d7378d40d4cdb04", +"743f32a9e1710075b\",\n \"name\" : \"0x678b", +"2861d7378d40d4\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 278050209\n}, \n{\n \"ET", +"H_account\" : \"0x2d755590d233019a2a4c584a", +"c423083dfa44aa2f\",\n \"name\" : \"0x2d755", +"590d233019a2a\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 12161000000\n}, \n{\n \"E", +"TH_account\" : \"0x8678c67876b83b596326a09", +"bbc3443691778023a\",\n \"name\" : \"0x8678", +"c67876b83b5963\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 993100000\n}, \n{\n \"ET", +"H_account\" : \"0xda802cab966a352216f179c6", +"18fda0399577382c\",\n \"name\" : \"0xda802", +"cab966a352216\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 900000000\n}, \n{\n \"ETH", +"_account\" : \"0x381f01817a30d102c10b95c3f", +"b893e3e0e31e78b\",\n \"name\" : \"0x381f01", +"817a30d102c1\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 28433000000\n}, \n{\n \"ET", +"H_account\" : \"0x39ba1733854e56bf6c5c29b4", +"c567330055ad3042\",\n \"name\" : \"0x39ba1", +"733854e56bf6c\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 499187030\n}, \n{\n \"ETH", +"_account\" : \"0x347ea38e30c45061c4cd9fabc", +"9cd0c691bfbd81e\",\n \"name\" : \"0x347ea3", +"8e30c45061c4\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 50000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x590174d8246288bb00a5ee9bf79", +"54a24d914a2e3\",\n \"name\" : \"0x590174d8", +"246288bb00\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 124000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x72325228a13ee226a5775bd87de3", +"0800c8bba3d1\",\n \"name\" : \"jeezusecl\",", +"\n \"publicKey\" : \"SPH7sBAfY9j3tR11SVby", +"nQ1CDVPvi4n7yAgHMmTPDBMAayCeDABte\",\n ", +"\"balance\" : 60889163\n}, \n{\n \"ETH_acco", +"unt\" : \"0x9b8832dfd6e176834832021a84c6f7", +"753c0296e4\",\n \"name\" : \"0x9b8832dfd6e", +"1768348\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1193540831\n}, \n{\n \"ETH_acco", +"unt\" : \"0x807d2d216a6bf1045530f0aa85a376", +"0fe548688b\",\n \"name\" : \"0x807d2d216a6", +"bf10455\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1382615706\n}, \n{\n \"ETH_acco", +"unt\" : \"0x01c6d20cf18c5176a70635c01425be", +"90b3ee10d8\",\n \"name\" : \"0x01c6d20cf18", +"c5176a7\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 152257123\n}, \n{\n \"ETH_accou", +"nt\" : \"0x78bb282c3ca3a3d64ee5f234ce13ec9", +"d713b240f\",\n \"name\" : \"0x78bb282c3ca3", +"a3d64e\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1256941700\n}, \n{\n \"ETH_accou", +"nt\" : \"0x321d5a4c9f9f0c9607df5464d993beb", +"b0ad25fb1\",\n \"name\" : \"0x321d5a4c9f9f", +"0c9607\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 3740692200\n}, \n{\n \"ETH_accou", +"nt\" : \"0xa6ed6833901112cbd833831c346773a", +"65295c811\",\n \"name\" : \"0xa6ed68339011", +"12cbd8\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 162068900\n}, \n{\n \"ETH_accoun", +"t\" : \"0xcdb0cd8934208d81f38c9b7798b13d46", +"bffa741b\",\n \"name\" : \"0xcdb0cd8934208", +"d81f3\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 2644240426\n}, \n{\n \"ETH_accoun", +"t\" : \"0x80e7d7efdbd1e292352809da301ad2b1", +"40ccb192\",\n \"name\" : \"0x80e7d7efdbd1e", +"29235\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 87980323\n}, \n{\n \"ETH_account\"", +" : \"0x2047f37c96f09de529331794459db5c0f5", +"cd9c21\",\n \"name\" : \"0x2047f37c96f09de", +"529\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 5000000000\n}, \n{\n \"ETH_account\"", +" : \"0x0fabd1d1a8cce637e8ae7a4e44af8c01fa", +"bd5382\",\n \"name\" : \"0x0fabd1d1a8cce63", +"7e8\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 257287614\n}, \n{\n \"ETH_account\" ", +": \"0x07efe4524df84fdbd4b92709b4e323caac3", +"df8d8\",\n \"name\" : \"0x07efe4524df84fdb", +"d4\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 7200410900\n}, \n{\n \"ETH_account\" ", +": \"0x25d300b996e16746c95d9e410ab99da9b3c", +"2aa2d\",\n \"name\" : \"lemarquis\",\n \"p", +"ublicKey\" : \"SPH81RnbWKaCw3JPLuUA5NmEXma", +"s3ix53LMVTLeL9dLELjmk6Li8T\",\n \"balanc", +"e\" : 1074696862\n}, \n{\n \"ETH_account\" ", +": \"0x5ba9f9fb896ae9e41163c0266ab709250f1", +"d28df\",\n \"name\" : \"0x5ba9f9fb896ae9e4", +"11\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 1106799831\n}, \n{\n \"ETH_account\" ", +": \"0x98b7d0ecdb62595703259101bd45654f6f1", +"1b1b1\",\n \"name\" : \"0x98b7d0ecdb625957", +"03\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 47000000\n}, \n{\n \"ETH_account\" : ", +"\"0x943eaeaf113197630c073cc3a791bd7f046ab", +"345\",\n \"name\" : \"0x943eaeaf113197630c", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 10000000\n}, \n{\n \"ETH_account\" : \"0", +"xb2d8c662cf53fb98bb0f761ac2c3d29fab9aa16", +"5\",\n \"name\" : \"0xb2d8c662cf53fb98bb\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 2859952200\n}, \n{\n \"ETH_account\" : \"0", +"x838bab416493f1bbe6cd27d73478b65fa8c124c", +"e\",\n \"name\" : \"0x838bab416493f1bbe6\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 2827957200\n}, \n{\n \"ETH_account\" : \"0", +"xc03370e384c219ed72426e5baa05c5a131164dc", +"8\",\n \"name\" : \"0xc03370e384c219ed72\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 392500000\n}, \n{\n \"ETH_account\" : \"0x", +"ed6cc5c26af16234c8ce5f7d48bfaa03a07ecf00", +"\",\n \"name\" : \"0xed6cc5c26af16234c8\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"650000000\n}, \n{\n \"ETH_account\" : \"0x9", +"8fc560df03f0e18a841e33179bb87ad90c75461\"", +",\n \"name\" : \"0x98fc560df03f0e18a8\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"96420406\n}, \n{\n \"ETH_account\" : \"0xc7", +"97a8f40bf1552477901a02271a936d96348cd9\",", +"\n \"name\" : \"0xc797a8f40bf1552477\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 26", +"514563818\n}, \n{\n \"ETH_account\" : \"0x0", +"7982f0eb163123d10fd294081e3998ee6ce2b8e\"", +",\n \"name\" : \"0x07982f0eb163123d10\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"924\n}, \n{\n \"ETH_account\" : \"0x26724a8", +"f5fb9b50c000510354099f17a07a45c36\",\n ", +"\"name\" : \"0x26724a8f5fb9b50c00\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1259131", +"3036\n}, \n{\n \"ETH_account\" : \"0x17f82b", +"1a10402550de8dc901b73178ac356b9c25\",\n ", +" \"name\" : \"0x17f82b1a10402550de\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 249800", +"0000\n}, \n{\n \"ETH_account\" : \"0x404d17", +"10a5c02412eca436e25c6e6a3295e2d267\",\n ", +" \"name\" : \"kristijansphtx\",\n \"publicK", +"ey\" : \"SPH6QFnBKfN44Ejdx4HrMB7Cwc1ZshRNM", +"8mi4s5iJZRUAmC8ntjcW\",\n \"balance\" : 4", +"314725700\n}, \n{\n \"ETH_account\" : \"0x3", +"d4732e9d6efae277ab6a94fc7f583aebdeb2879\"", +",\n \"name\" : \"0x3d4732e9d6efae277a\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"54102832\n}, \n{\n \"ETH_account\" : \"0x74", +"e0f9c6e92da58ee6faa1df3a43b34251eef962\",", +"\n \"name\" : \"0x74e0f9c6e92da58ee6\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 36", +"92000000\n}, \n{\n \"ETH_account\" : \"0x78", +"ec3b864bc456cbdf2fa93fd1dbb57fdc3d02a7\",", +"\n \"name\" : \"0x78ec3b864bc456cbdf\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 70", +"7600000\n}, \n{\n \"ETH_account\" : \"0xdbc", +"c59184df6766e67e3bcf38b9d61ca01995010\",\n", +" \"name\" : \"cryptobruno\",\n \"publicK", +"ey\" : \"SPH7XiDE2YcQREg2qiCiT7fMfakCtautb", +"hT5ffAhsYe1hzpuXNucx\",\n \"balance\" : 1", +"29124359\n}, \n{\n \"ETH_account\" : \"0x1b", +"88dd314b1da5890f7336b6f9e8218916a974a9\",", +"\n \"name\" : \"0x1b88dd314b1da5890f\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 39", +"61\n}, \n{\n \"ETH_account\" : \"0x3e27c0d2", +"431d14378fe702ce98a7262a79380eff\",\n \"", +"name\" : \"0x3e27c0d2431d14378f\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 9964\n}, ", +"\n{\n \"ETH_account\" : \"0xf37738983dc916", +"f222e8ba20565fe705028e248f\",\n \"name\" ", +": \"0xf37738983dc916f222\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 8156800000\n}, ", +"\n{\n \"ETH_account\" : \"0xa040bff363d914", +"7065b9dae53471e7fe5f2b96e6\",\n \"name\" ", +": \"0xa040bff363d9147065\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 200000000\n}, \n", +"{\n \"ETH_account\" : \"0x0136c2296460bab", +"f665cb7a687ade9a676b85b73\",\n \"name\" :", +" \"0x0136c2296460babf66\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1167152858\n}, \n", +"{\n \"ETH_account\" : \"0xabe9a9eba97e194", +"557d5b22df1f32b618e7e07c6\",\n \"name\" :", +" \"0xabe9a9eba97e194557\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 469134000\n}, \n{", +"\n \"ETH_account\" : \"0xf48e8d690c4f9419", +"18879e374fec65b31a57c836\",\n \"name\" : ", +"\"0xf48e8d690c4f941918\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 995822875\n}, \n{\n", +" \"ETH_account\" : \"0x014c34c7f5ca5c65d", +"f60ba0cb3b555b8ff73b01f\",\n \"name\" : \"", +"0x014c34c7f5ca5c65df\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 20090000\n}, \n{\n ", +" \"ETH_account\" : \"0x0ad88f8753a69543599", +"8a5f18d77bb509a29513c\",\n \"name\" : \"0x", +"0ad88f8753a6954359\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 318000000\n}, \n{\n ", +" \"ETH_account\" : \"0xb4398eb741c9c9bac65c", +"9f2bd90bbf517678b0fd\",\n \"name\" : \"0xb", +"4398eb741c9c9bac6\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 2916448055\n}, \n{\n ", +" \"ETH_account\" : \"0x9ff9b4508e30a5b7de41", +"f021fc9634df1f7d5c87\",\n \"name\" : \"sik", +"kan\",\n \"publicKey\" : \"SPH81ZLAt2vxHq2", +"6Niro1hxj2orBB5vKPaH2cKEuNpJVo8xWsnDWZ\",", +"\n \"balance\" : 1462000000\n}, \n{\n \"E", +"TH_account\" : \"0xb17434167923fa5404ac6b7", +"03f1dbd85620a77f1\",\n \"name\" : \"0xb174", +"34167923fa5404\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 5450000000\n}, \n{\n \"E", +"TH_account\" : \"0xd2816cbd395c9003341b77e", +"686d65a3ba6375d4b\",\n \"name\" : \"fiex\",", +"\n \"publicKey\" : \"SPH8hbmVJHkYd19xKeqr", +"icYh9tKzdZGkRZSbXZPmLkwWuu1y9EvYu\",\n ", +"\"balance\" : 8813485655\n}, \n{\n \"ETH_ac", +"count\" : \"0x101ba83c5c80b78d10bcfe1b7b05", +"4e2004c27a0c\",\n \"name\" : \"0x101ba83c5", +"c80b78d10\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 20000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xf4df06d04a9c4aa06f361c390def97", +"c7c01a0a98\",\n \"name\" : \"0xf4df06d04a9", +"c4aa06f\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 534758\n}, \n{\n \"ETH_account\"", +" : \"0x4c6df76d41355d5d4227d147dfd778624b", +"aedfff\",\n \"name\" : \"0x4c6df76d41355d5", +"d42\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 304715000\n}, \n{\n \"ETH_account\" ", +": \"0x670d469116f1cc8cad435847ca661b37ed0", +"7b9df\",\n \"name\" : \"0x670d469116f1cc8c", +"ad\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 291310000\n}, \n{\n \"ETH_account\" :", +" \"0x9062438b00cbef275709b753de114a325be3", +"78f5\",\n \"name\" : \"0x9062438b00cbef275", +"7\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 2756670000\n}, \n{\n \"ETH_account\" :", +" \"0xa7401ee2f2eff6a8f673e29d4f6a34497ec0", +"d8a5\",\n \"name\" : \"0xa7401ee2f2eff6a8f", +"6\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 352000000\n}, \n{\n \"ETH_account\" : ", +"\"0xd7a89e6e711d9dc57514d5e1bd5bd947eca39", +"17f\",\n \"name\" : \"0xd7a89e6e711d9dc575", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 2325000000\n}, \n{\n \"ETH_account\" : ", +"\"0x4bf009c7d8df7c970e564d5ce2b70ed1d20fe", +"383\",\n \"name\" : \"0x4bf009c7d8df7c970e", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 4250460000\n}, \n{\n \"ETH_account\" : ", +"\"0x6caf0b12777f647944d713e604b9da403f8d7", +"456\",\n \"name\" : \"0x6caf0b12777f647944", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 5\n}, \n{\n \"ETH_account\" : \"0xb00e50", +"4bd65e0c6beb52dc8a2764ccf8848fa731\",\n ", +" \"name\" : \"0xb00e504bd65e0c6beb\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 680975", +"7905\n}, \n{\n \"ETH_account\" : \"0xee379c", +"a4965e13ac3e134de2e75facf4a7988046\",\n ", +" \"name\" : \"0xee379ca4965e13ac3e\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 100300", +"0000\n}, \n{\n \"ETH_account\" : \"0x007d8d", +"b979528acfa01527365122777f4d863df5\",\n ", +" \"name\" : \"0x007d8db979528acfa0\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 810000", +"0000\n}, \n{\n \"ETH_account\" : \"0x4209c9", +"ea64fb4fa437eb950b3839a43c99d96c06\",\n ", +" \"name\" : \"0x4209c9ea64fb4fa437\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 101442", +"720959\n}, \n{\n \"ETH_account\" : \"0xa26d", +"9fead3fee383b398d5aa83e19f886667698f\",\n ", +" \"name\" : \"0xa26d9fead3fee383b3\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 5419", +"641600\n}, \n{\n \"ETH_account\" : \"0x0c23", +"1e2e26917a6760c5b87f5d9424aa5e3b4769\",\n ", +" \"name\" : \"0x0c231e2e26917a6760\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 9850", +"48800\n}, \n{\n \"ETH_account\" : \"0x94138", +"c9e96b95714d18b506a7936237e97a41120\",\n ", +" \"name\" : \"0x94138c9e96b95714d1\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 99300", +"0000\n}, \n{\n \"ETH_account\" : \"0x0735fc", +"f55ed0d30f570cbf78277a097a75c926ef\",\n ", +" \"name\" : \"0x0735fcf55ed0d30f57\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 486100", +"33600\n}, \n{\n \"ETH_account\" : \"0xbdeeb", +"645eafd33df9056d3816e9fa3a1624e9f44\",\n ", +" \"name\" : \"0xbdeeb645eafd33df90\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 48610", +"00000\n}, \n{\n \"ETH_account\" : \"0x8f92e", +"674a4dbc7fa49a30623c6a0abb3b1ae0f65\",\n ", +" \"name\" : \"hifihihi\",\n \"publicKey\" :", +" \"SPH6RSLPQAHQXQxQ6vZwEoWFdAE7MN2ygL43B5", +"Npdm39L42R7YBza\",\n \"balance\" : 112010", +"00000\n}, \n{\n \"ETH_account\" : \"0xc80a1", +"af8d3753914e31f5f2aa634475d1e721e22\",\n ", +" \"name\" : \"0xc80a1af8d3753914e3\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10000", +"0000\n}, \n{\n \"ETH_account\" : \"0x36139b", +"dd22a71cef37bdb25862f3b90c7fb76f04\",\n ", +" \"name\" : \"0x36139bdd22a71cef37\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 175700", +"0000\n}, \n{\n \"ETH_account\" : \"0x764d04", +"3ab46e3322bfbf54eaef4a2d1fbc872401\",\n ", +" \"name\" : \"0x764d043ab46e3322bf\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 237327", +"0800\n}, \n{\n \"ETH_account\" : \"0xd1ef04", +"207179ee7b3711910c97a4114d11f6d2db\",\n ", +" \"name\" : \"0xd1ef04207179ee7b37\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 110900", +"0000\n}, \n{\n \"ETH_account\" : \"0x22cf8a", +"737963fbff00990a460751d63be828b025\",\n ", +" \"name\" : \"0x22cf8a737963fbff00\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 180715", +"587\n}, \n{\n \"ETH_account\" : \"0xd59d4d3", +"e229f25c89f75610bb2e24086694f9796\",\n ", +"\"name\" : \"0xd59d4d3e229f25c89f\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 2010000", +"000\n}, \n{\n \"ETH_account\" : \"0x999f8bd", +"19bfd874f0132f80526952428f6380222\",\n ", +"\"name\" : \"0x999f8bd19bfd874f01\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 9190000", +"0\n}, \n{\n \"ETH_account\" : \"0xb6a33e9b7", +"68fd987719a586be62896dbd244f513\",\n \"n", +"ame\" : \"0xb6a33e9b768fd98771\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 541659843", +"1\n}, \n{\n \"ETH_account\" : \"0xea823839e", +"78ee418ec0152596f0ebf62096ce8c7\",\n \"n", +"ame\" : \"0xea823839e78ee418ec\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 314797950", +"5\n}, \n{\n \"ETH_account\" : \"0x84295e95f", +"68c5cfb0e9c0b3fb1f5bbfb3070da07\",\n \"n", +"ame\" : \"gurug\",\n \"publicKey\" : \"SPH87", +"Fc6rWuHM5TTnLDqVXBHtUB1rbX5Beb7ngc1jHPq1", +"TLFwU47r\",\n \"balance\" : 7043477795\n},", +" \n{\n \"ETH_account\" : \"0x4dce0eab01ff6", +"eae21dcaa9eb3e7eba8eea3d033\",\n \"name\"", +" : \"alejandro\",\n \"publicKey\" : \"SPH6b", +"XjMm2apiHy6a4FXpQYmvtBNAx9DVMoAfj7dkRxeK", +"rChaFjUB\",\n \"balance\" : 1641991724\n},", +" \n{\n \"ETH_account\" : \"0x75d9feba450ff", +"ded349f9c2744b8c668ac1763ae\",\n \"name\"", +" : \"0x75d9feba450ffded34\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 2169160621\n},", +" \n{\n \"ETH_account\" : \"0xf3154c58930a6", +"7685db1559147d5ef439b8230f6\",\n \"name\"", +" : \"0xf3154c58930a67685d\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 191668900\n}, ", +"\n{\n \"ETH_account\" : \"0xdaa9d01ff199ce", +"4e0383891bb314db4dbdc22cb6\",\n \"name\" ", +": \"karsten\",\n \"publicKey\" : \"SPH69TwJ", +"HWux2eTEuJPZFSebd51LisuD3mVSun3MHS5tCfJg", +"uiwM9\",\n \"balance\" : 2865987430\n}, \n{", +"\n \"ETH_account\" : \"0x3c664016a293352b", +"1e301bc78f2b68343ada5a03\",\n \"name\" : ", +"\"0x3c664016a293352b1e\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1000000000\n}, \n{", +"\n \"ETH_account\" : \"0x2a6b0e53eb22c27d", +"b85253249cc72c99ebf982ee\",\n \"name\" : ", +"\"meinesophias\",\n \"publicKey\" : \"SPH8C", +"o2mMYzWx55pcQw7v4pRYyXVjHNfbbcNXoLAnqg51", +"XyhK31Tc\",\n \"balance\" : 100715500\n}, ", +"\n{\n \"ETH_account\" : \"0xe15bc7c4efdeab", +"3eefe4b44406ae5667202ca514\",\n \"name\" ", +": \"0xe15bc7c4efdeab3eef\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 2077000000\n}, ", +"\n{\n \"ETH_account\" : \"0xb475adaea277ce", +"7c51d82ab879d89bb375f4368f\",\n \"name\" ", +": \"0xb475adaea277ce7c51\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 121614460\n}, \n", +"{\n \"ETH_account\" : \"0xc2587a32f37cfcf", +"fb79b1e11a77d8a90913c0c1b\",\n \"name\" :", +" \"0xc2587a32f37cfcffb7\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 718695300\n}, \n{", +"\n \"ETH_account\" : \"0x023f2ada48004097", +"5ef70f71e60d89f31242b89c\",\n \"name\" : ", +"\"0x023f2ada480040975e\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 450000000\n}, \n{\n", +" \"ETH_account\" : \"0x49b63480f395b46d4", +"a66e7c20155823e96b7fa12\",\n \"name\" : \"", +"0x49b63480f395b46d4a\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1078071000\n}, \n{\n", +" \"ETH_account\" : \"0x9e98f85295d9543e4", +"5e924a920c3cb48ff5de67a\",\n \"name\" : \"", +"0x9e98f85295d9543e45\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 10185136345\n}, \n{", +"\n \"ETH_account\" : \"0xf60f30e51ba00869", +"4dc1f91222ac8cedbb940804\",\n \"name\" : ", +"\"0xf60f30e51ba008694d\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 830000000\n}, \n{\n", +" \"ETH_account\" : \"0x15a5795a65a4492eb", +"d600df3ffe5ecf1cc76128f\",\n \"name\" : \"", +"0x15a5795a65a4492ebd\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 20000000\n}, \n{\n ", +" \"ETH_account\" : \"0x45a3e56e047e6503320", +"406463bc6a3681a7379f5\",\n \"name\" : \"0x", +"45a3e56e047e650332\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 197689774\n}, \n{\n ", +" \"ETH_account\" : \"0xf9b6aae381d3c645c46a", +"6a2b2fb70bcf89bf5c21\",\n \"name\" : \"0xf", +"9b6aae381d3c645c4\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 250000000\n}, \n{\n ", +"\"ETH_account\" : \"0xcd1d8683114d2d35a0f2b", +"26a9b513f66ad6172d6\",\n \"name\" : \"0xcd", +"1d8683114d2d35a0\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 748324799\n}, \n{\n \"", +"ETH_account\" : \"0x3962be784ca3dafcb6cd60", +"20d188933f83c29819\",\n \"name\" : \"0x396", +"2be784ca3dafcb6\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 20300000000\n}, \n{\n ", +"\"ETH_account\" : \"0xb296c702e7e9d7c709c5d", +"750e3d7e8246b1a663a\",\n \"name\" : \"0xb2", +"96c702e7e9d7c709\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 13284300000\n}, \n{\n ", +" \"ETH_account\" : \"0x4cd60f180feb7309bc2f", +"854368751ef9e1eb4a20\",\n \"name\" : \"0x4", +"cd60f180feb7309bc\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 11084000000\n}, \n{\n ", +" \"ETH_account\" : \"0xd04e1e5972e98774451", +"75fbdcdeaca023e0be8cc\",\n \"name\" : \"0x", +"d04e1e5972e9877445\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 2000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x10497613684e3a7d547", +"f3e2cd6478d82b4ebf50c\",\n \"name\" : \"0x", +"10497613684e3a7d54\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 100000000\n}, \n{\n ", +" \"ETH_account\" : \"0x3c42581ca8e73b9b1d8e", +"5509368f1c15329f129f\",\n \"name\" : \"0x3", +"c42581ca8e73b9b1d\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 2501805000\n}, \n{\n ", +" \"ETH_account\" : \"0x7bf8179a70add2a727c2", +"991f9a9597fc0b1c2aaf\",\n \"name\" : \"0x7", +"bf8179a70add2a727\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 3614607000\n}, \n{\n ", +" \"ETH_account\" : \"0xb5c20f389bdb36921f9d", +"9e5103c60b56409d4b7f\",\n \"name\" : \"0xb", +"5c20f389bdb36921f\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1146323393\n}, \n{\n ", +" \"ETH_account\" : \"0xf6e2b1dffe7b092e8e16", +"5455f4b5a392a541a49e\",\n \"name\" : \"0xf", +"6e2b1dffe7b092e8e\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1550000000\n}, \n{\n ", +" \"ETH_account\" : \"0x33abd5e2acd50dd7644d", +"e04c3dda876660b4b4c6\",\n \"name\" : \"0x3", +"3abd5e2acd50dd764\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 1500000000\n}, \n{\n ", +" \"ETH_account\" : \"0x4f16e8946a2443bc4eb2", +"63d38212b7767e199ad7\",\n \"name\" : \"0x4", +"f16e8946a2443bc4e\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 278808200\n}, \n{\n ", +"\"ETH_account\" : \"0x1348367ffab77dcded9f4", +"d5a29cfbc33234aeb77\",\n \"name\" : \"0x13", +"48367ffab77dcded\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 581000000\n}, \n{\n \"", +"ETH_account\" : \"0x55815e72c17127920562d8", +"e818ce4865df7e55fe\",\n \"name\" : \"0x558", +"15e72c171279205\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 24836000000\n}, \n{\n ", +"\"ETH_account\" : \"0xe9dac8549679e19d7cec4", +"dd8d7b10992e32947ec\",\n \"name\" : \"0xe9", +"dac8549679e19d7c\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 340099000\n}, \n{\n \"", +"ETH_account\" : \"0xcb760c0a8f4ccc7114fc82", +"64d9b35a77428126b1\",\n \"name\" : \"0xcb7", +"60c0a8f4ccc7114\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 10000000\n}, \n{\n \"ET", +"H_account\" : \"0x0b8e4609004734a5160fde58", +"3c55b2525804f9ab\",\n \"name\" : \"0x0b8e4", +"609004734a516\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 1000000000\n}, \n{\n \"ET", +"H_account\" : \"0x0f0488a827af7cf2d64477c1", +"07eaa6de077af73f\",\n \"name\" : \"0x0f048", +"8a827af7cf2d6\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 689125543\n}, \n{\n \"ETH", +"_account\" : \"0x250377eb09bed161dc2057215", +"3cddbaa9e8fba1e\",\n \"name\" : \"0x250377", +"eb09bed161dc\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 100000000\n}, \n{\n \"ETH_", +"account\" : \"0xb402543540cca5386fddde226b", +"b8b83bd8d0fb86\",\n \"name\" : \"0xb402543", +"540cca5386f\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 5721000000\n}, \n{\n \"ETH_", +"account\" : \"0xae314da390ea408700d72301c2", +"350ff023af2952\",\n \"name\" : \"0xae314da", +"390ea408700\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 240000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x12907c9c2de6d02dd92f8a6644a", +"2b07e157d57f5\",\n \"name\" : \"0x12907c9c", +"2de6d02dd9\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 816046604\n}, \n{\n \"ETH_ac", +"count\" : \"0x43cc02cdb295679664560bac7757", +"edd87703b05d\",\n \"name\" : \"0x43cc02cdb", +"295679664\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 466917529\n}, \n{\n \"ETH_acc", +"ount\" : \"0x951475e1885397370282620845884", +"84a3873f4c9\",\n \"name\" : \"agadoin\",\n ", +" \"publicKey\" : \"SPH7bYR8egiXyEJghHPH56o", +"q6im8GU1zhHeo9YcRFWbZbLKULdArJ\",\n \"ba", +"lance\" : 96470600\n}, \n{\n \"ETH_account", +"\" : \"0x08a48ca0f222358b4dd403cdb6f792aa4", +"3dda9a9\",\n \"name\" : \"0x08a48ca0f22235", +"8b4d\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 62700000\n}, \n{\n \"ETH_account\" ", +": \"0x890f69160eb098685d57c9b487a557ac281", +"8bc01\",\n \"name\" : \"0x890f69160eb09868", +"5d\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 68991804\n}, \n{\n \"ETH_account\" : ", +"\"0xfb0ba39d06a28883c0cae82701598c79e4ecc", +"190\",\n \"name\" : \"0xfb0ba39d06a28883c0", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 437308000\n}, \n{\n \"ETH_account\" : \"", +"0x3cac460a5e4c7dfc4b8b41dd47750d76da55d2", +"25\",\n \"name\" : \"0x3cac460a5e4c7dfc4b\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 3502700000\n}, \n{\n \"ETH_account\" : \"", +"0xc2d7369b76e6233bbc9660b47b62b35368e1d3", +"0a\",\n \"name\" : \"0xc2d7369b76e6233bbc\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 310792\n}, \n{\n \"ETH_account\" : \"0x7b", +"22c26061e530e98c9e292f7d2d89966bab5dbb\",", +"\n \"name\" : \"0x7b22c26061e530e98c\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 34", +"3000000\n}, \n{\n \"ETH_account\" : \"0xadb", +"89d2ac02b5227affeab2ee17b4aa0dc1cf9dc\",\n", +" \"name\" : \"0xadb89d2ac02b5227af\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 471", +"749727\n}, \n{\n \"ETH_account\" : \"0x4937", +"c2843e9e73d6b46061a69abfa36b29d2b927\",\n ", +" \"name\" : \"0x4937c2843e9e73d6b4\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1155", +"68606\n}, \n{\n \"ETH_account\" : \"0x0bdca", +"c33b5cee6f9a12cd101fe6f5d8f3b258879\",\n ", +" \"name\" : \"0x0bdcac33b5cee6f9a1\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 25982", +"69236\n}, \n{\n \"ETH_account\" : \"0x77cc1", +"948c8e96154a3b928e394c95c026e694e30\",\n ", +" \"name\" : \"0x77cc1948c8e96154a3\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 29727", +"438900\n}, \n{\n \"ETH_account\" : \"0x6608", +"69f08d33d2e5d6ed3ecb55416bf7c241cd5a\",\n ", +" \"name\" : \"0x660869f08d33d2e5d6\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 4000", +"0000000\n}, \n{\n \"ETH_account\" : \"0xd90", +"0e6cdb0bc8946184da2d5c75cdf6e608d71c9\",\n", +" \"name\" : \"0xd900e6cdb0bc894618\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 186", +"78000000\n}, \n{\n \"ETH_account\" : \"0x8f", +"9f217ae5d0eb8a61de7a69ef942a4b4603dab8\",", +"\n \"name\" : \"0x8f9f217ae5d0eb8a61\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 24", +"35740918\n}, \n{\n \"ETH_account\" : \"0x71", +"3d7731965e649d38d68f5db85273a3206b0df7\",", +"\n \"name\" : \"0x713d7731965e649d38\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 27", +"0130000\n}, \n{\n \"ETH_account\" : \"0x3ad", +"c2e05a26c36e605945af867f9d7ac4fb7bc89\",\n", +" \"name\" : \"0x3adc2e05a26c36e605\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 681", +"000000\n}, \n{\n \"ETH_account\" : \"0x7dc4", +"f010cd8f7a4831adf69ede7bfb126867f6b6\",\n ", +" \"name\" : \"0x7dc4f010cd8f7a4831\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1958", +"06265\n}, \n{\n \"ETH_account\" : \"0x8783d", +"eb6128efe4301e21dd55f1d6dce01eb074d\",\n ", +" \"name\" : \"0x8783deb6128efe4301\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 12000", +"8000\n}, \n{\n \"ETH_account\" : \"0xb15e37", +"d48e9dd61e74a24fc2b1419f14c46f0d79\",\n ", +" \"name\" : \"0xb15e37d48e9dd61e74\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 695383", +"1587\n}, \n{\n \"ETH_account\" : \"0xdc2357", +"ec65cb4cd619d6c5622db3cfae31374ac9\",\n ", +" \"name\" : \"0xdc2357ec65cb4cd619\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 123726", +"4521\n}, \n{\n \"ETH_account\" : \"0x53f40f", +"3a65f7d2bad7b04614b73ef9ddda48bb27\",\n ", +" \"name\" : \"0x53f40f3a65f7d2bad7\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 218793", +"800\n}, \n{\n \"ETH_account\" : \"0xca53dbd", +"a873f2643cb8a7d3e9b0173c658a76ccb\",\n ", +"\"name\" : \"0xca53dbda873f2643cb\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 6259085", +"97\n}, \n{\n \"ETH_account\" : \"0xbcd0c4ca", +"9d0e98b0aaf69cd75e875594c3f54ffa\",\n \"", +"name\" : \"0xbcd0c4ca9d0e98b0aa\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 71841966", +"08\n}, \n{\n \"ETH_account\" : \"0xc21d4fb7", +"903941dfa3252184d28287bb44ca08d8\",\n \"", +"name\" : \"0xc21d4fb7903941dfa3\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 116000\n}", +", \n{\n \"ETH_account\" : \"0x1771ca00014c", +"0206304eba053885f938f6ee7ae8\",\n \"name", +"\" : \"0x1771ca00014c020630\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 20000000\n}, ", +"\n{\n \"ETH_account\" : \"0x0fd35b7f0ce205", +"2b678b16ea7e23a31bcfa5b073\",\n \"name\" ", +": \"0x0fd35b7f0ce2052b67\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 305000000\n}, \n", +"{\n \"ETH_account\" : \"0xb0678cdbff11a30", +"947081a7207413e64edf424a9\",\n \"name\" :", +" \"0xb0678cdbff11a30947\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 3000000000\n}, \n", +"{\n \"ETH_account\" : \"0xdce5370940164e0", +"a9b0340a7d0acf59f3babf7fe\",\n \"name\" :", +" \"0xdce5370940164e0a9b\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 3550000000\n}, \n", +"{\n \"ETH_account\" : \"0xea051f9f6c61d8b", +"226b5fbfe4f36466b3efb40b9\",\n \"name\" :", +" \"oxvund\",\n \"publicKey\" : \"SPH6FJoHcF", +"fKoLD9euvHSBCQs52WEdkmZYwmj5tG5yzgNi1Mbx", +"ooh\",\n \"balance\" : 18954000000\n}, \n{\n", +" \"ETH_account\" : \"0x655374642640ea8b1", +"15a34e83d85b462dad4f35a\",\n \"name\" : \"", +"0x655374642640ea8b11\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 2000000000\n}, \n{\n", +" \"ETH_account\" : \"0x443e2ad026116a7fc", +"1327925c9c635e77774f5f6\",\n \"name\" : \"", +"0x443e2ad026116a7fc1\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 20000000000\n}, \n{", +"\n \"ETH_account\" : \"0x666b5dbc910a1411", +"274d5c3748afa4b18437a30f\",\n \"name\" : ", +"\"0x666b5dbc910a141127\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 48509033600\n}, \n", +"{\n \"ETH_account\" : \"0x77c5c0823e403f0", +"44e348f7e69544405070d0cfb\",\n \"name\" :", +" \"0x77c5c0823e403f044e\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 500000000\n}, \n{", +"\n \"ETH_account\" : \"0x6c0b5d60b45eb5af", +"417adde4481a3faecb0c91b5\",\n \"name\" : ", +"\"0x6c0b5d60b45eb5af41\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 862500000\n}, \n{\n", +" \"ETH_account\" : \"0x98b3214e91f793c7c", +"6f969eb1c82d61dcffcecd0\",\n \"name\" : \"", +"0x98b3214e91f793c7c6\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 27673782285\n}, \n{", +"\n \"ETH_account\" : \"0x050b2f68edccf374", +"3d916abe6bbb1fbda34eb497\",\n \"name\" : ", +"\"xenophobe\",\n \"publicKey\" : \"SPH56nFK", +"Fr8D4t1ojwx2JzncetJ3shsskkmtfP8KKsiESKFz", +"4prxJ\",\n \"balance\" : 18964000000\n}, \n", +"{\n \"ETH_account\" : \"0x7c86be686e3d7c1", +"db111f813ca55494e95317e1b\",\n \"name\" :", +" \"0x7c86be686e3d7c1db1\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 27999635673\n}, ", +"\n{\n \"ETH_account\" : \"0x7a8de2813766db", +"4d2dcba810f9114e1833e71ca7\",\n \"name\" ", +": \"0x7a8de2813766db4d2d\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 500000000\n}, \n", +"{\n \"ETH_account\" : \"0xcdb921352f72fbf", +"e5eecf0fa34d1b26a4e0c57ad\",\n \"name\" :", +" \"0xcdb921352f72fbfe5e\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 241240000\n}, \n{", +"\n \"ETH_account\" : \"0x859249c69c685d7f", +"68a6c0235b2130fad26b8b65\",\n \"name\" : ", +"\"0x859249c69c685d7f68\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 309000000\n}, \n{\n", +" \"ETH_account\" : \"0xfc29d25c5be7c7af8", +"18ee7a8dbd218e958f01a51\",\n \"name\" : \"", +"0xfc29d25c5be7c7af81\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1535261400\n}, \n{\n", +" \"ETH_account\" : \"0x50850db06b5225edc", +"8a69fb9dd34538ba69b6a1a\",\n \"name\" : \"", +"0x50850db06b5225edc8\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 3329000000\n}, \n{\n", +" \"ETH_account\" : \"0x56b1c2686f7da04f0", +"ff9c18f55dc1d0095e768b9\",\n \"name\" : \"", +"0x56b1c2686f7da04f0f\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 5040000000\n}, \n{\n", +" \"ETH_account\" : \"0x0051e6a3d0d25921c", +"d9227d7e72da2b0580e064e\",\n \"name\" : \"", +"0x0051e6a3d0d25921cd\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1920000000\n}, \n{\n", +" \"ETH_account\" : \"0xaf346dda1a6da6f0f", +"7dead45c4ae0c15f085026a\",\n \"name\" : \"", +"orcosophiawallet\",\n \"publicKey\" : \"SP", +"H6ecyNrfZtYtGcXBuG3Aptb55H3XQ31KyTcAVrny", +"JqWDAGqf95G\",\n \"balance\" : 3163191700", +"\n}, \n{\n \"ETH_account\" : \"0xfca6215d8f", +"262c1d9af878f180c489245a78d16a\",\n \"na", +"me\" : \"0xfca6215d8f262c1d9a\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 5600000000", +"\n}, \n{\n \"ETH_account\" : \"0xe543f6ca95", +"d7387bf120a61359542b321fd71e87\",\n \"na", +"me\" : \"0xe543f6ca95d7387bf1\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 90000000\n}", +", \n{\n \"ETH_account\" : \"0x4bdc787e15ae", +"7a0aa03910261b1e95d8e88d304a\",\n \"name", +"\" : \"0x4bdc787e15ae7a0aa0\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 948585000\n},", +" \n{\n \"ETH_account\" : \"0x4ea0540beab02", +"08b6b0998ff04800f997d535a9d\",\n \"name\"", +" : \"0x4ea0540beab0208b6b\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 23288735204\n}", +", \n{\n \"ETH_account\" : \"0x4a15c1d012dc", +"a8807025f8ec54168f112f0c35da\",\n \"name", +"\" : \"0x4a15c1d012dca88070\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 8983000000\n}", +", \n{\n \"ETH_account\" : \"0x5e5b561925eb", +"d8ea37f48c6039a45c9f74c00980\",\n \"name", +"\" : \"0x5e5b561925ebd8ea37\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 333438578\n},", +" \n{\n \"ETH_account\" : \"0xb7beb4bf65505", +"a8edf8f617dd6e15fb23089e6dd\",\n \"name\"", +" : \"0xb7beb4bf65505a8edf\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 2738000000\n},", +" \n{\n \"ETH_account\" : \"0xfe418f57a718f", +"85b70a3e0b0683a9dc297ea2746\",\n \"name\"", +" : \"0xfe418f57a718f85b70\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 529537500\n}, ", +"\n{\n \"ETH_account\" : \"0xbbd4b05d21741a", +"c78812249bee1d5e8c2dbbc9ba\",\n \"name\" ", +": \"0xbbd4b05d21741ac788\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1005000000\n}, ", +"\n{\n \"ETH_account\" : \"0x8bd6395620b387", +"9ea2ead18cddb42c77e60591f6\",\n \"name\" ", +": \"0x8bd6395620b3879ea2\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1127008100\n}, ", +"\n{\n \"ETH_account\" : \"0xfebddaa280f5e8", +"852e2d068c7d000c49291f0142\",\n \"name\" ", +": \"0xfebddaa280f5e8852e\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 66477000\n}, \n{", +"\n \"ETH_account\" : \"0x70046ffe9a1af2ac", +"eac9879d61870c31145fab99\",\n \"name\" : ", +"\"0x70046ffe9a1af2acea\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 532083400\n}, \n{\n", +" \"ETH_account\" : \"0x1876d0cab8c947d3a", +"fd822225716c074b7e0c3a7\",\n \"name\" : \"", +"0x1876d0cab8c947d3af\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 21557717\n}, \n{\n ", +" \"ETH_account\" : \"0x333a41e68b1d0378bc3", +"d56424fc782a29885efe0\",\n \"name\" : \"ks", +"int\",\n \"publicKey\" : \"SPH6b5FCXZABWne", +"hQYhRW1zfYEoKEB3ozRu4g6q6sB3FyQDeNYtXi\",", +"\n \"balance\" : 5152200000\n}, \n{\n \"E", +"TH_account\" : \"0xe5f8ce913d49e6fd2ed15f2", +"b4740c5d4f93ba5d2\",\n \"name\" : \"secsof", +"t\",\n \"publicKey\" : \"SPH8bUyi6Kv9ELm2w", +"RHEtuMVdLvttecRaXp4pCzp1aWxHv8afBCtT\",\n ", +" \"balance\" : 20000000000\n}, \n{\n \"ET", +"H_account\" : \"0x9c4997aca401da9cf09be3c8", +"c16a4b8ea6a84234\",\n \"name\" : \"0x9c499", +"7aca401da9cf0\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 65841900\n}, \n{\n \"ETH_", +"account\" : \"0xd19b8d199ca2c10ac32938c3c1", +"dc5a92ff4758b4\",\n \"name\" : \"joshuagri", +"m\",\n \"publicKey\" : \"SPH5n6bP3VQq29bxk", +"m1FUB9sN7n8PJ7AB2EgqGNywY6fsymyutujM\",\n ", +" \"balance\" : 2462446500\n}, \n{\n \"ETH", +"_account\" : \"0xd674c92fa1c4bb675a96a984b", +"f7f7750381c0e08\",\n \"name\" : \"0xd674c9", +"2fa1c4bb675a\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 422000000\n}, \n{\n \"ETH_", +"account\" : \"0x5ceac136540020fe8190ae07ad", +"88da40d0a32bbb\",\n \"name\" : \"0x5ceac13", +"6540020fe81\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 11583397000\n}, \n{\n \"ETH", +"_account\" : \"0xe183a9a6e93a32a186b8ffd66", +"2bddb7208529cf8\",\n \"name\" : \"0xe183a9", +"a6e93a32a186\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1000456673\n}, \n{\n \"ETH", +"_account\" : \"0x30e97f3a41656a609a22f257f", +"f03d816eb5b394d\",\n \"name\" : \"0x30e97f", +"3a41656a609a\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 7337182904\n}, \n{\n \"ETH", +"_account\" : \"0x2e2daf207ce2ca4d0acc71b9a", +"cc9ddfe11a82fe8\",\n \"name\" : \"mapescma", +"i\",\n \"publicKey\" : \"SPH5TymuEQ2VuAzFA", +"XoLsBdKdKtFw2DTAnLae8w2D87wpugGQzDjJ\",\n ", +" \"balance\" : 31883000000\n}, \n{\n \"ET", +"H_account\" : \"0x4f9fcbcb2364772bd994bcb4", +"53e1cecdfc0325e3\",\n \"name\" : \"0x4f9fc", +"bcb2364772bd9\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 2650000000\n}, \n{\n \"ET", +"H_account\" : \"0xa0764f0a62d7d2cbf447943d", +"5bc00ddd16c55354\",\n \"name\" : \"0xa0764", +"f0a62d7d2cbf4\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 7\n}, \n{\n \"ETH_account", +"\" : \"0xa363cfdcdd9339802222d626d627cf2a7", +"cd89e8d\",\n \"name\" : \"panna\",\n \"pub", +"licKey\" : \"SPH69MRyiRddotYyZZB5NJtiGpcWE", +"9gt37NVSy3nbXu8T2voYdmLE\",\n \"balance\"", +" : 1948200000\n}, \n{\n \"ETH_account\" : ", +"\"0x6ac3f6463db28391e32291ca7ab504f9af779", +"0b5\",\n \"name\" : \"0x6ac3f6463db28391e3", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1246670000\n}, \n{\n \"ETH_account\" : ", +"\"0x06d21894645a9faa42c64139a354daa49d5b1", +"ffd\",\n \"name\" : \"0x06d21894645a9faa42", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 56227000000\n}, \n{\n \"ETH_account\" :", +" \"0x8f788e9190b00146f7228c1b82b0b209e206", +"9b2b\",\n \"name\" : \"0x8f788e9190b00146f", +"7\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 8838187939\n}, \n{\n \"ETH_account\" :", +" \"0xb7268e6cb4bd0ccf76683aa3214b5a106c20", +"8d1a\",\n \"name\" : \"0xb7268e6cb4bd0ccf7", +"6\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 978691000\n}, \n{\n \"ETH_account\" : ", +"\"0x1216ec8f9365064ed9110e1121ab1ebce07e3", +"bdb\",\n \"name\" : \"0x1216ec8f9365064ed9", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 199999999\n}, \n{\n \"ETH_account\" : \"", +"0x4fcdbc3d9d65c63f593d2d185535c51bef5e8a", +"03\",\n \"name\" : \"0x4fcdbc3d9d65c63f59\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1775418500\n}, \n{\n \"ETH_account\" : \"", +"0xbcbae7e240f3e969c302e471be95b79573e0d6", +"57\",\n \"name\" : \"scottssopiatx\",\n \"", +"publicKey\" : \"SPH7b4wtLWW3x87oui4MqqRWNp", +"H5hxefmL2i2igg2Zss8USzeBejZ\",\n \"balan", +"ce\" : 242690400\n}, \n{\n \"ETH_account\" ", +": \"0xf5d3670c433e5c9d576d9aee73d62483a71", +"1f980\",\n \"name\" : \"0xf5d3670c433e5c9d", +"57\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 1381854326\n}, \n{\n \"ETH_account\" ", +": \"0x32773d3d12ea8ec8288a7dbe3e7dcfe39fd", +"554cd\",\n \"name\" : \"0x32773d3d12ea8ec8", +"28\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 184196700\n}, \n{\n \"ETH_account\" :", +" \"0x145ac17e541ab0dbacf8694aa5a892019944", +"7f34\",\n \"name\" : \"0x145ac17e541ab0dba", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 9360000000\n}, \n{\n \"ETH_account\" :", +" \"0x3308f043698b9adf1727026e8bb77eaa583c", +"2d8b\",\n \"name\" : \"0x3308f043698b9adf1", +"7\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 437000000\n}, \n{\n \"ETH_account\" : ", +"\"0xcf05a7df1bc57b21a1455ce3252eb006ba4f9", +"479\",\n \"name\" : \"0xcf05a7df1bc57b21a1", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 340000000\n}, \n{\n \"ETH_account\" : \"", +"0x19501140d734ced002da09ca84e965aa554b2d", +"1f\",\n \"name\" : \"0x19501140d734ced002\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 996909580\n}, \n{\n \"ETH_account\" : \"0", +"xc850cfaa93d38a827e1af0ff165fcaa2aca7c06", +"d\",\n \"name\" : \"0xc850cfaa93d38a827e\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 700306800\n}, \n{\n \"ETH_account\" : \"0x", +"df2aa8373b9f5bb34d4eb45c5dd723aa6b5e3ab7", +"\",\n \"name\" : \"remyslowgo\",\n \"publi", +"cKey\" : \"SPH8kb3Knhyvdb7NrBsh2Xmd7W8fSDv", +"4nRYuyrf8smsGjkZso6tcE\",\n \"balance\" :", +" 306761500\n}, \n{\n \"ETH_account\" : \"0x", +"8b1cff28eed2ad03fb019f9e952d417de12c848f", +"\",\n \"name\" : \"jackwagonsph\",\n \"pub", +"licKey\" : \"SPH89at1grNXRj1qoJxH2crS8paiw", +"a7ssD4nENBG2hLAFCzHTf6Jq\",\n \"balance\"", +" : 10846460625\n}, \n{\n \"ETH_account\" :", +" \"0xe330ad8e61199b454f6e89a895d03eb420ca", +"bb72\",\n \"name\" : \"0xe330ad8e61199b454", +"f\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 921067000\n}, \n{\n \"ETH_account\" : ", +"\"0xe3eb0e7a646f2622b607108238ee3949c7b93", +"2dc\",\n \"name\" : \"0xe3eb0e7a646f2622b6", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 404000000\n}, \n{\n \"ETH_account\" : \"", +"0x79e09e8c421800142a68f91648b489d0dc957f", +"82\",\n \"name\" : \"0x79e09e8c421800142a\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1101141141\n}, \n{\n \"ETH_account\" : \"", +"0xacc8223e27831a8467b9a5a742f5e327a1a0dd", +"7c\",\n \"name\" : \"0xacc8223e27831a8467\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 496111766\n}, \n{\n \"ETH_account\" : \"0", +"xd114929c5108ce553c7bcced5dc341f93430e25", +"0\",\n \"name\" : \"0xd114929c5108ce553c\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 100000000\n}, \n{\n \"ETH_account\" : \"0x", +"126398fdd24df205b0bc773607c022ad37789b0a", +"\",\n \"name\" : \"0x126398fdd24df205b0\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"541450000\n}, \n{\n \"ETH_account\" : \"0x8", +"52c6b14f77dfa3612d2abc321108a063a24de0d\"", +",\n \"name\" : \"cryptodarkforce\",\n \"p", +"ublicKey\" : \"SPH4txGnJYfCT5bmGVR4kEm6wTm", +"wZ5p2jMDkE3wQBGBnDGcuPCAdv\",\n \"balanc", +"e\" : 33808876300\n}, \n{\n \"ETH_account\"", +" : \"0xf6e53843920776df045124b29d79ace160", +"c835a3\",\n \"name\" : \"cortesgab\",\n \"", +"publicKey\" : \"SPH6VaT7RqZqkR8zz4vX8AjAnT", +"3PUu9UjJ8Jjif1kLGa8HAFwj5XB\",\n \"balan", +"ce\" : 4209940000\n}, \n{\n \"ETH_account\"", +" : \"0xc55f2aa68015fecece500438da98241cec", +"0c1b36\",\n \"name\" : \"0xc55f2aa68015fec", +"ece\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 642101006\n}, \n{\n \"ETH_account\" ", +": \"0xeb5362fdc5855b496cfc25c2578e5757c6c", +"ec322\",\n \"name\" : \"0xeb5362fdc5855b49", +"6c\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 295646\n}, \n{\n \"ETH_account\" : \"0", +"xe6ae59959185adb1e43594bd0cac7dafe9ab3f1", +"5\",\n \"name\" : \"0xe6ae59959185adb1e4\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 51201000000\n}, \n{\n \"ETH_account\" : \"", +"0x7dbdd5231b1af00ee39f03bbd7eb06d3579794", +"46\",\n \"name\" : \"0x7dbdd5231b1af00ee3\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 35021026000\n}, \n{\n \"ETH_account\" : ", +"\"0xee96de0dc4591d3bd3fa2fc0b03d1702f3690", +"df7\",\n \"name\" : \"sophiatxswap\",\n \"", +"publicKey\" : \"SPH6Q6Yi2bhwE3zHxmGMvbDXE1", +"5BVXGT33cr6HuJo7ShqDR3A2L4b\",\n \"balan", +"ce\" : 1714839667\n}, \n{\n \"ETH_account\"", +" : \"0x4ca10a29387712c64012af8f53591d7b77", +"c6558e\",\n \"name\" : \"0x4ca10a29387712c", +"640\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 21150000000\n}, \n{\n \"ETH_account", +"\" : \"0x63082d5709efbc66e3f8aaeaa298aee6a", +"bb77ff3\",\n \"name\" : \"0x63082d5709efbc", +"66e3\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 299862862\n}, \n{\n \"ETH_account\"", +" : \"0x95bf9e69ca6aa29debc32c0dcf80c89110", +"91aa09\",\n \"name\" : \"0x95bf9e69ca6aa29", +"deb\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 455341000\n}, \n{\n \"ETH_account\" ", +": \"0xcc8646ae5c689505bf5b43450f4ee6e49ec", +"63b22\",\n \"name\" : \"0xcc8646ae5c689505", +"bf\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 688798000\n}, \n{\n \"ETH_account\" :", +" \"0x7b4be6643598dcc499c905b905f36c2b26cb", +"6b7a\",\n \"name\" : \"0x7b4be6643598dcc49", +"9\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 2637924746\n}, \n{\n \"ETH_account\" :", +" \"0x850c53779d46244b98f84e1add4ba01ee494", +"f3fd\",\n \"name\" : \"0x850c53779d46244b9", +"8\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 2207000000\n}, \n{\n \"ETH_account\" :", +" \"0xe13cefe51cd737aa2979bbaf70a0e994eb9b", +"a068\",\n \"name\" : \"0xe13cefe51cd737aa2", +"9\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 20363047300\n}, \n{\n \"ETH_account\" ", +": \"0x6811f0139d652568fdcd5a7626e72718de7", +"a637b\",\n \"name\" : \"0x6811f0139d652568", +"fd\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 1963000000\n}, \n{\n \"ETH_account\" ", +": \"0xfc981335350849e29a97ca22ce0a77ee2f4", +"0cc60\",\n \"name\" : \"0xfc981335350849e2", +"9a\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 1800000000\n}, \n{\n \"ETH_account\" ", +": \"0x03a50269555176f0b2f874bf014e89ac914", +"36370\",\n \"name\" : \"0x03a50269555176f0", +"b2\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 58000000\n}, \n{\n \"ETH_account\" : ", +"\"0xd87a9e444bb8286cbcf5ae0306a6416472eff", +"30c\",\n \"name\" : \"0xd87a9e444bb8286cbc", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 100000000\n}, \n{\n \"ETH_account\" : \"", +"0x82de475e58925927663aef29cebc17cf6d2d6d", +"d8\",\n \"name\" : \"0x82de475e5892592766\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 832647498\n}, \n{\n \"ETH_account\" : \"0", +"xede464a7e63e8d19229e380d6895acc24065f0a", +"6\",\n \"name\" : \"0xede464a7e63e8d1922\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 5482424500\n}, \n{\n \"ETH_account\" : \"0", +"x7f65301fd20f2ad8347ddb681a10bba5a97d436", +"1\",\n \"name\" : \"0x7f65301fd20f2ad834\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1677000000\n}, \n{\n \"ETH_account\" : \"0", +"x6d05fa60f30aefd5a659bbfbb2bc2d7922514c5", +"8\",\n \"name\" : \"0x6d05fa60f30aefd5a6\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 10618934100\n}, \n{\n \"ETH_account\" : \"", +"0x9d676d9393ea288b068a68c980c2729a2a4676", +"d6\",\n \"name\" : \"0x9d676d9393ea288b06\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 216518236\n}, \n{\n \"ETH_account\" : \"0", +"xc9533e9cc54e5a99383c7a8a8e6d663ad97e87d", +"3\",\n \"name\" : \"sophiasophia\",\n \"pu", +"blicKey\" : \"SPH6o5cRsgU26ePcCP8ydeq1swVr", +"vBmRVYhHp1B7PUZhp2p79iNjB\",\n \"balance", +"\" : 1360000000\n}, \n{\n \"ETH_account\" :", +" \"0x911c990d3a12d7ae5ab9c9ebc3a614a2e028", +"9aa4\",\n \"name\" : \"0x911c990d3a12d7ae5", +"a\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 13376000000\n}, \n{\n \"ETH_account\" ", +": \"0x0e36ea6c562276098f62d037591bc7ae23a", +"4bf9e\",\n \"name\" : \"0x0e36ea6c56227609", +"8f\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 3780000000\n}, \n{\n \"ETH_account\" ", +": \"0xb8e37db0c2fcbf67fc85d0841afbff2e70f", +"77401\",\n \"name\" : \"ryansphtxname\",\n ", +" \"publicKey\" : \"SPH6kzuz5WftT5csr1UcPFx", +"uwh9aeZvHRihcMk7mC79Ki8R6qTQay\",\n \"ba", +"lance\" : 1797000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x3793cad1b5ed6330212201b5bfae698", +"2dd5d77dc\",\n \"name\" : \"0x3793cad1b5ed", +"633021\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 3471000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0xc6557e99f33cdbd1745c31cca7b881c", +"e678f8c4e\",\n \"name\" : \"0xc6557e99f33c", +"dbd174\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 702000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xec9bb300975d7c8d8f1174a03cfaa26a", +"d39b9e71\",\n \"name\" : \"0xec9bb300975d7", +"c8d8f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 4996990000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xccf56698a8ea998ff456b732a0354ea5", +"23039fe8\",\n \"name\" : \"0xccf56698a8ea9", +"98ff4\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 734348000\n}, \n{\n \"ETH_account", +"\" : \"0x170a6332bf0d741394c0c5ec33edb7e0a", +"2656ba5\",\n \"name\" : \"0x170a6332bf0d74", +"1394\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 991000000\n}, \n{\n \"ETH_account\"", +" : \"0x6db63358837393753265c98e14f2123cdd", +"bfa58d\",\n \"name\" : \"0x6db633588373937", +"532\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 20000000\n}, \n{\n \"ETH_account\" :", +" \"0x9c5dc330c026a567de590222dfff3cc5ef7b", +"1e00\",\n \"name\" : \"0x9c5dc330c026a567d", +"e\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 120000000\n}, \n{\n \"ETH_account\" : ", +"\"0x8fd84a1d18c4f728713a0dc496de34161748f", +"f7b\",\n \"name\" : \"0x8fd84a1d18c4f72871", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 3488500000\n}, \n{\n \"ETH_account\" : ", +"\"0xfdf65361feae79ec417d3d70837d8c62d9dd2", +"433\",\n \"name\" : \"0xfdf65361feae79ec41", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 274104100\n}, \n{\n \"ETH_account\" : \"", +"0x5bdcf430619de8edb5b736fdac0cd0fdff5c3c", +"4c\",\n \"name\" : \"0x5bdcf430619de8edb5\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 294649000\n}, \n{\n \"ETH_account\" : \"0", +"xf588019f07f4ffc791833da9477324d3b13b249", +"1\",\n \"name\" : \"0xf588019f07f4ffc791\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1300000000\n}, \n{\n \"ETH_account\" : \"0", +"x430ba8132441b8f583aa4473baab5120de2340e", +"f\",\n \"name\" : \"0x430ba8132441b8f583\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 5191641522\n}, \n{\n \"ETH_account\" : \"0", +"xf4a5ce2cbe512adc16d4049e4d8a6c2d0476a51", +"c\",\n \"name\" : \"cucamonga\",\n \"publi", +"cKey\" : \"SPH5bNmqv9AVrrgR7frXQxSdoT3WTmV", +"fQsfXMnPDM3ZwLZE8aKAzk\",\n \"balance\" :", +" 384001849\n}, \n{\n \"ETH_account\" : \"0x", +"574a0111a8c6868d23361742bd9fb8e111653e0e", +"\",\n \"name\" : \"0x574a0111a8c6868d23\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"7086173200\n}, \n{\n \"ETH_account\" : \"0x", +"ec9ef557392966bdc6cad9afd65d4e40128de76f", +"\",\n \"name\" : \"0xec9ef557392966bdc6\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"466000000\n}, \n{\n \"ETH_account\" : \"0x0", +"62ad0ad9c0b046954cdb86edd735912a6247e32\"", +",\n \"name\" : \"0x062ad0ad9c0b046954\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"066000000\n}, \n{\n \"ETH_account\" : \"0x2", +"0990b7688861fd6d8f45efc1ffb051bb030532c\"", +",\n \"name\" : \"0x20990b7688861fd6d8\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"242000000\n}, \n{\n \"ETH_account\" : \"0xd", +"5a2c9e7c085e3efe7fc4899817ef8e5f20e10c7\"", +",\n \"name\" : \"0xd5a2c9e7c085e3efe7\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"40347388\n}, \n{\n \"ETH_account\" : \"0xa6", +"0e321b166b8527359fe4e679ae8a894404585b\",", +"\n \"name\" : \"0xa60e321b166b852735\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 10", +"12000000\n}, \n{\n \"ETH_account\" : \"0xf4", +"9f2cb72bce5f3847c474f97224e6ef488a1f52\",", +"\n \"name\" : \"0xf49f2cb72bce5f3847\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 15", +"59399300\n}, \n{\n \"ETH_account\" : \"0xc4", +"3df36e46c16f037d801e01765a769ae474bccc\",", +"\n \"name\" : \"0xc43df36e46c16f037d\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 12", +"2752000\n}, \n{\n \"ETH_account\" : \"0x54f", +"4aff30c620eafc8cebcf2ebf28efd4681b6b9\",\n", +" \"name\" : \"0x54f4aff30c620eafc8\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 956", +"090000\n}, \n{\n \"ETH_account\" : \"0xd1a1", +"9777010dcf3cdddd5ec7c911241ea6e5d75d\",\n ", +" \"name\" : \"0xd1a19777010dcf3cdd\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2560", +"00000\n}, \n{\n \"ETH_account\" : \"0x8eb48", +"5e78ed1991cb3effc16d863dcfc6592d248\",\n ", +" \"name\" : \"0x8eb485e78ed1991cb3\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 20000", +"000000\n}, \n{\n \"ETH_account\" : \"0x2d75", +"d400d63d6afc43b414d87a948d048c41c59f\",\n ", +" \"name\" : \"0x2d75d400d63d6afc43\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2000", +"0000000\n}, \n{\n \"ETH_account\" : \"0x0c2", +"2882f967444d11d3d0b09c61ddff9076df90f\",\n", +" \"name\" : \"0x0c22882f967444d11d\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 801", +"1386\n}, \n{\n \"ETH_account\" : \"0xd1876b", +"b066a438f06c42ee0aec8c286885047440\",\n ", +" \"name\" : \"0xd1876bb066a438f06c\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 337059", +"600\n}, \n{\n \"ETH_account\" : \"0xde6aa42", +"ff6abc682e2e76e6dff1e91bdd05d1c60\",\n ", +"\"name\" : \"0xde6aa42ff6abc682e2\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5050000", +"000\n}, \n{\n \"ETH_account\" : \"0x1c3e391", +"875572668c68cd8584dfec7f45501b706\",\n ", +"\"name\" : \"0x1c3e391875572668c6\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1500006", +"04\n}, \n{\n \"ETH_account\" : \"0xd28e65a2", +"fd9166cbbcbf8d9225d33f1bdba5fc3a\",\n \"", +"name\" : \"comfycrypto\",\n \"publicKey\" :", +" \"SPH7SZCD5HWfnvnsQP6gT5829MnsjzdSsdktgF", +"Q7t7beVNV1bR1JW\",\n \"balance\" : 264995", +"19000\n}, \n{\n \"ETH_account\" : \"0x1f6e8", +"ba65f9263e8eac63d7a76407e5982bbec83\",\n ", +" \"name\" : \"0x1f6e8ba65f9263e8ea\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 19897", +"27536\n}, \n{\n \"ETH_account\" : \"0x63e24", +"c9ea5f07368603631a22eb2b99a7e3e313d\",\n ", +" \"name\" : \"0x63e24c9ea5f0736860\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 20000", +"0\n}, \n{\n \"ETH_account\" : \"0xf3b393bc0", +"a3b721509f6663340b59be08b6fcd84\",\n \"n", +"ame\" : \"0xf3b393bc0a3b721509\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 138342785", +"00\n}, \n{\n \"ETH_account\" : \"0xcfa1519d", +"61cfcb889087385c67ec162b89b7f8e4\",\n \"", +"name\" : \"0xcfa1519d61cfcb8890\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10000000", +"0\n}, \n{\n \"ETH_account\" : \"0xfef17e03f", +"b3b14a71daee11d895e001c69dbf5d7\",\n \"n", +"ame\" : \"0xfef17e03fb3b14a71d\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 109090000", +"\n}, \n{\n \"ETH_account\" : \"0x9e4e32f1df", +"53822ec53101f71c1e5b9572069f79\",\n \"na", +"me\" : \"0x9e4e32f1df53822ec5\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 166081795\n", +"}, \n{\n \"ETH_account\" : \"0x5c1ea7ca39d", +"7529f199b9bd296bf9e0940fd7913\",\n \"nam", +"e\" : \"altcoinjules\",\n \"publicKey\" : \"", +"SPH6F9EdgA9udvz3SJagVarELBmi3dVeWQ18fJAA", +"jFpazjeGRkAhV\",\n \"balance\" : 16528190", +"00\n}, \n{\n \"ETH_account\" : \"0x0dab6d62", +"7a1ee071e8c5d83dc087538baccb5116\",\n \"", +"name\" : \"0x0dab6d627a1ee071e8\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 37645790", +"894\n}, \n{\n \"ETH_account\" : \"0x945b244", +"0e5790702b579d4eec4cd0f85c3e9c467\",\n ", +"\"name\" : \"0x945b2440e5790702b5\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 3087388", +"673\n}, \n{\n \"ETH_account\" : \"0x9a0fab4", +"8bb880fa296dcfe3bb42cf3d8eb4cc05c\",\n ", +"\"name\" : \"0x9a0fab48bb880fa296\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 6000000", +"0\n}, \n{\n \"ETH_account\" : \"0xd13422809", +"b87840ac66946ed6112d980ff6ec897\",\n \"n", +"ame\" : \"0xd13422809b87840ac6\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 144100000", +"0\n}, \n{\n \"ETH_account\" : \"0xfd1eb7e10", +"71aae56fc7022866eb6f2daf00539db\",\n \"n", +"ame\" : \"sebaconcon\",\n \"publicKey\" : \"", +"SPH7T9hz59kPSfA3Tx6jgoRmxcGwpcy2qKaCG5N4", +"AoZmoeaKpSTgU\",\n \"balance\" : 11038130", +"5551\n}, \n{\n \"ETH_account\" : \"0x3b40b1", +"29a6931b5341a45e773d4411d74b9e4aec\",\n ", +" \"name\" : \"0x3b40b129a6931b5341\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 680300", +"225\n}, \n{\n \"ETH_account\" : \"0xee5b989", +"98c49d29915d35c0b752bb86e476b7503\",\n ", +"\"name\" : \"0xee5b98998c49d29915\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4700000", +"0\n}, \n{\n \"ETH_account\" : \"0xd333d67fe", +"cc76b8a12ee84e625775bc77fba1d42\",\n \"n", +"ame\" : \"0xd333d67fecc76b8a12\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 375672100", +"\n}, \n{\n \"ETH_account\" : \"0xf395dabfb8", +"c95406379411c02446b73dbf717ac0\",\n \"na", +"me\" : \"0xf395dabfb8c9540637\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2269100000", +"0\n}, \n{\n \"ETH_account\" : \"0xea369297e", +"629f3c5b805dce7c163c9665cb201e1\",\n \"n", +"ame\" : \"0xea369297e629f3c5b8\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 925921747", +"45\n}, \n{\n \"ETH_account\" : \"0xc3d154d8", +"fd9bc17bf71717bf2bba415cdf97bd3e\",\n \"", +"name\" : \"0xc3d154d8fd9bc17bf7\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 82660000", +"\n}, \n{\n \"ETH_account\" : \"0x6a71194c50", +"e032aba99720fc7e13a7480b903b2f\",\n \"na", +"me\" : \"0x6a71194c50e032aba9\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 92899000\n}", +", \n{\n \"ETH_account\" : \"0xb493be57be51", +"2bd9f176eae420b8398216196d97\",\n \"name", +"\" : \"0xb493be57be512bd9f1\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1844000000\n}", +", \n{\n \"ETH_account\" : \"0x2e6f5eaefcdc", +"77971db040c56561ce5f0d511a14\",\n \"name", +"\" : \"0x2e6f5eaefcdc77971d\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 294420446\n},", +" \n{\n \"ETH_account\" : \"0x828c95657555d", +"6a56d4f80f2515bb3dcb0e0a1e5\",\n \"name\"", +" : \"0x828c95657555d6a56d\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 138911700\n}, ", +"\n{\n \"ETH_account\" : \"0x536bd993bdbfdf", +"45c4f71bb012826ac8dace72b0\",\n \"name\" ", +": \"0x536bd993bdbfdf45c4\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 223775927\n}, \n", +"{\n \"ETH_account\" : \"0x5cfb03b8d6618c7", +"6b74fa02ade20633bbcd08701\",\n \"name\" :", +" \"0x5cfb03b8d6618c76b7\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 2567520000\n}, \n", +"{\n \"ETH_account\" : \"0xfcf99e1580cd1dd", +"152e7f4aabc4879c8482be446\",\n \"name\" :", +" \"0xfcf99e1580cd1dd152\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 6750000000\n}, \n", +"{\n \"ETH_account\" : \"0x12dcecc88ad1ac6", +"76e2949ccaf30c652ce19474a\",\n \"name\" :", +" \"0x12dcecc88ad1ac676e\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 25000000\n}, \n{\n", +" \"ETH_account\" : \"0x71bb93fffc711c4ac", +"fe0be92133334ba438849dd\",\n \"name\" : \"", +"0x71bb93fffc711c4acf\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 10481771744\n}, \n{", +"\n \"ETH_account\" : \"0xa0c3fad7e08a8176", +"fe3a371aa473c49b07eabc35\",\n \"name\" : ", +"\"0xa0c3fad7e08a8176fe\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 200000000\n}, \n{\n", +" \"ETH_account\" : \"0xc798cccfc1ebfecd1", +"998c90233e330031c46ecde\",\n \"name\" : \"", +"0xc798cccfc1ebfecd19\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 20000000\n}, \n{\n ", +" \"ETH_account\" : \"0xb38d9670418bc8b0610", +"8e417855559d550b9baad\",\n \"name\" : \"0x", +"b38d9670418bc8b061\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 600000000\n}, \n{\n ", +" \"ETH_account\" : \"0xaf67b5e1e0d6ff5f99d1", +"9afc81789f00342809ea\",\n \"name\" : \"0xa", +"f67b5e1e0d6ff5f99\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 133425800\n}, \n{\n ", +"\"ETH_account\" : \"0xe1eca39f4130436d550f3", +"ff1f28292466b88df2d\",\n \"name\" : \"0xe1", +"eca39f4130436d55\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 4242131900\n}, \n{\n ", +"\"ETH_account\" : \"0xedb2af62ccdaf8bab2ee5", +"905ca95fb844d948a1e\",\n \"name\" : \"0xed", +"b2af62ccdaf8bab2\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 132298932\n}, \n{\n \"", +"ETH_account\" : \"0xc2fa04d1a9f6a8bd191f5f", +"576303fbdcda578b24\",\n \"name\" : \"0xc2f", +"a04d1a9f6a8bd19\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 392391080\n}, \n{\n \"E", +"TH_account\" : \"0x21da7691674722016b6198a", +"ec5a6189afd2b8567\",\n \"name\" : \"sphstr", +"ingbugge\",\n \"publicKey\" : \"SPH5KJLjB8", +"4fz1CoH95dfChhC9WVRJHH5Vi4j3yE87gPMs8fkf", +"s7C\",\n \"balance\" : 28305087103\n}, \n{\n", +" \"ETH_account\" : \"0x2ed5031da36764664", +"b7087bcd40418ba93823b52\",\n \"name\" : \"", +"0x2ed5031da36764664b\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 2908000000\n}, \n{\n", +" \"ETH_account\" : \"0x823cf164eb4b17879", +"ad68c234f696ac604602d63\",\n \"name\" : \"", +"0x823cf164eb4b17879a\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 2588673286\n}, \n{\n", +" \"ETH_account\" : \"0x09a98b8b15c9fadff", +"8524503768479b26ede3ec7\",\n \"name\" : \"", +"0x09a98b8b15c9fadff8\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1214982869\n}, \n{\n", +" \"ETH_account\" : \"0xe97a5e5cb7c06359f", +"9b92cf1d789f60935f4ac9b\",\n \"name\" : \"", +"0xe97a5e5cb7c06359f9\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 16263834000\n}, \n{", +"\n \"ETH_account\" : \"0xd5493f25d2230cd4", +"923ed68ac6b15dd344abfb6b\",\n \"name\" : ", +"\"0xd5493f25d2230cd492\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 495774285\n}, \n{\n", +" \"ETH_account\" : \"0xfb3f70b8b119c191f", +"5a2a2d7f83568cd19d65646\",\n \"name\" : \"", +"0xfb3f70b8b119c191f5\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1742981100\n}, \n{\n", +" \"ETH_account\" : \"0xa531cf7cdbe4b86a0", +"63dce0bd23e26afef3f979a\",\n \"name\" : \"", +"soepenberg\",\n \"publicKey\" : \"SPH6yiVm", +"yVFT7eq7i7osYbSrWqzLiv5cMcqo7ap9CDBRzUPT", +"1rasN\",\n \"balance\" : 8886339589\n}, \n{", +"\n \"ETH_account\" : \"0x9b2e7a51f4fc9769", +"665ab975d9808feb7116401e\",\n \"name\" : ", +"\"tradeformersphtx\",\n \"publicKey\" : \"S", +"PH6QsJC49RdVCpbqhyhRnynCRKipMyiD5jUq68ct", +"UvZYBvWgiJvJ\",\n \"balance\" : 991016700", +"0\n}, \n{\n \"ETH_account\" : \"0x0954ac769", +"26d033b569799ada3cdab4862740c58\",\n \"n", +"ame\" : \"0x0954ac76926d033b56\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 360000000", +"\n}, \n{\n \"ETH_account\" : \"0xcfc12c816e", +"3d20d2ff5035ce7b64ab801b1cd512\",\n \"na", +"me\" : \"0xcfc12c816e3d20d2ff\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 372480992\n", +"}, \n{\n \"ETH_account\" : \"0x24fe4290b15", +"499f1710e850d002e756e91bf4559\",\n \"nam", +"e\" : \"0x24fe4290b15499f171\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 123000000\n}", +", \n{\n \"ETH_account\" : \"0xff54308621ee", +"ddf887aa2d1470b480e2c0a195f5\",\n \"name", +"\" : \"0xff54308621eeddf887\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 998205410\n},", +" \n{\n \"ETH_account\" : \"0x782cd63ef9590", +"782d82da22e2392305374f32702\",\n \"name\"", +" : \"0x782cd63ef9590782d8\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 10000000\n}, \n", +"{\n \"ETH_account\" : \"0xd53bf7bee9e358c", +"d405c3579cd0ed1e1e6ee0aa0\",\n \"name\" :", +" \"0xd53bf7bee9e358cd40\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 45609238248\n}, ", +"\n{\n \"ETH_account\" : \"0xf9bccc7451dd72", +"862f6e3e0eac8d1b428fae87e7\",\n \"name\" ", +": \"0xf9bccc7451dd72862f\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 81185000\n}, \n{", +"\n \"ETH_account\" : \"0x1890dc24d348740e", +"8e2dd04785d84c3a8b5cdb14\",\n \"name\" : ", +"\"meganmargit\",\n \"publicKey\" : \"SPH5sa", +"VFugzTGkFKCiHg9dFecWiPKhnvHYRbwDcKjtwFoc", +"RApJR3a\",\n \"balance\" : 919000000\n}, \n", +"{\n \"ETH_account\" : \"0x0e6f7a8968c19e9", +"ce90a2cd5c60096de68467997\",\n \"name\" :", +" \"paulaerkul\",\n \"publicKey\" : \"SPH84B", +"YBV5nbo9mmkqqLgmtftFx7avZoLmzXwfkar4tYds", +"Fg7Fijy\",\n \"balance\" : 182240000\n}, \n", +"{\n \"ETH_account\" : \"0x1254f1d05449bb2", +"cbc8c1880d9a54a636e488097\",\n \"name\" :", +" \"0x1254f1d05449bb2cbc\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 3026396635\n}, \n", +"{\n \"ETH_account\" : \"0x56a054854122618", +"b605cce90e2a907eca44c8f1f\",\n \"name\" :", +" \"0x56a054854122618b60\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 2596797583\n}, \n", +"{\n \"ETH_account\" : \"0xd6657c87ce10763", +"a3509ff45cd8ec58dddfbb95d\",\n \"name\" :", +" \"0xd6657c87ce10763a35\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 462000000\n}, \n{", +"\n \"ETH_account\" : \"0x649350e617a0f91f", +"2a989c00689e1c3aaa7680bf\",\n \"name\" : ", +"\"0x649350e617a0f91f2a\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 10020000000\n}, \n", +"{\n \"ETH_account\" : \"0x59c9e7e3266139d", +"11f429afc8a67eccfc47f9738\",\n \"name\" :", +" \"0x59c9e7e3266139d11f\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 3836070976\n}, \n", +"{\n \"ETH_account\" : \"0x7e2c5621ca98dab", +"609ac7bc7360e07f558be65fc\",\n \"name\" :", +" \"0x7e2c5621ca98dab609\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 25000000000\n}, ", +"\n{\n \"ETH_account\" : \"0xa6b791fa6b2697", +"4f960c8dd5e17b1813f1ad4bb3\",\n \"name\" ", +": \"0xa6b791fa6b26974f96\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 991000000\n}, \n", +"{\n \"ETH_account\" : \"0x5ac4225d0c45886", +"67de9e7ca9df77768f3fb5ed9\",\n \"name\" :", +" \"0x5ac4225d0c4588667d\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 3140260000\n}, \n", +"{\n \"ETH_account\" : \"0xf7534428d25c4b4", +"8c1bac9e3cd6aac8ba1075b35\",\n \"name\" :", +" \"marcello\",\n \"publicKey\" : \"SPH7UPFw", +"APExuwzNZ3BFarQQewukEpJgoXdM9RzzPLnAp82s", +"an2yi\",\n \"balance\" : 2263322827\n}, \n{", +"\n \"ETH_account\" : \"0x6a53fdae4e5326b2", +"42dbdc756686ba3faffb0a27\",\n \"name\" : ", +"\"0x6a53fdae4e5326b242\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 975982387\n}, \n{\n", +" \"ETH_account\" : \"0xcef58358e11dbd188", +"66dc6b38f39f8bb989fdcc9\",\n \"name\" : \"", +"0xcef58358e11dbd1886\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 3300000000\n}, \n{\n", +" \"ETH_account\" : \"0x86df5b6a50413615e", +"c62c8ff22f3b698b58d7c3c\",\n \"name\" : \"", +"0x86df5b6a50413615ec\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 20599224\n}, \n{\n ", +" \"ETH_account\" : \"0x76f9704e3c7de9df2bf", +"519067447f40a8440888f\",\n \"name\" : \"0x", +"76f9704e3c7de9df2b\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 584296277\n}, \n{\n ", +" \"ETH_account\" : \"0x8e5f949bf46ba430ee20", +"7bd63e30e06177f47c5d\",\n \"name\" : \"0x8", +"e5f949bf46ba430ee\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 723344000\n}, \n{\n ", +"\"ETH_account\" : \"0x4354c0ee8f55b3733cc93", +"b4409249cb2d9b9fa95\",\n \"name\" : \"0x43", +"54c0ee8f55b3733c\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 96123174\n}, \n{\n \"E", +"TH_account\" : \"0x1eacf59ad5063dadeece7dc", +"f86010858cbd6b6e2\",\n \"name\" : \"0x1eac", +"f59ad5063dadee\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1537137577\n}, \n{\n \"E", +"TH_account\" : \"0x301725a50db2580e2b7cdfc", +"131b900cdd5825428\",\n \"name\" : \"0x3017", +"25a50db2580e2b\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 3200198900\n}, \n{\n \"E", +"TH_account\" : \"0x7be8197ef046b497ddda5d9", +"55dfa84ce931df5f7\",\n \"name\" : \"0x7be8", +"197ef046b497dd\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 427709500\n}, \n{\n \"ET", +"H_account\" : \"0x8cd3bec93d81f900f4faef7f", +"40259d392b616a7e\",\n \"name\" : \"biddu\",", +"\n \"publicKey\" : \"SPH67r2ufMaiSiPCNcRw", +"MvxaY3WbDyZM82oQgnq9DSaDABWd4DbD8\",\n ", +"\"balance\" : 4303858000\n}, \n{\n \"ETH_ac", +"count\" : \"0x8785d70fa41fe967a6257dbcc108", +"d37ed1e8ed0f\",\n \"name\" : \"0x8785d70fa", +"41fe967a6\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 9249980000\n}, \n{\n \"ETH_ac", +"count\" : \"0x6ca0961003434978435ab8311419", +"f0e6f336ec99\",\n \"name\" : \"0x6ca096100", +"343497843\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 16\n}, \n{\n \"ETH_account\" :", +" \"0xcc751b68ad0d7fdc26190b6571734981a602", +"b813\",\n \"name\" : \"0xcc751b68ad0d7fdc2", +"6\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 500843800\n}, \n{\n \"ETH_account\" : ", +"\"0xf83965e8efc51d5db64d5cec8a4d5fabd5448", +"47d\",\n \"name\" : \"0xf83965e8efc51d5db6", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 178857887\n}, \n{\n \"ETH_account\" : \"", +"0xe21c7e1cc273e9bfed28a94030d5056ca3a386", +"02\",\n \"name\" : \"0xe21c7e1cc273e9bfed\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 843109500\n}, \n{\n \"ETH_account\" : \"0", +"xc4393b6e53badf2166cb7e6ffb49151c58ef257", +"d\",\n \"name\" : \"0xc4393b6e53badf2166\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 19810177052\n}, \n{\n \"ETH_account\" : \"", +"0x9922f22812bb3041c09eceeeac38c063cd881d", +"43\",\n \"name\" : \"jemcp\",\n \"publicKe", +"y\" : \"SPH8YbA9LM2Ng9wD2XYKrQNhfa5emhbh1R", +"KT9uHPcz86HReA8Xv8u\",\n \"balance\" : 38", +"72544600\n}, \n{\n \"ETH_account\" : \"0xce", +"db44ede1685687b027171136cc6e27df1ab6c4\",", +"\n \"name\" : \"0xcedb44ede1685687b0\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 60", +"457200000\n}, \n{\n \"ETH_account\" : \"0xc", +"8c45e03c71f9341244528ade06861056b888a2a\"", +",\n \"name\" : \"0xc8c45e03c71f934124\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"3617253281\n}, \n{\n \"ETH_account\" : \"0x", +"bf1e7b8a518a09943885fe60cd08eb37094ac039", +"\",\n \"name\" : \"0xbf1e7b8a518a099438\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"631030376\n}, \n{\n \"ETH_account\" : \"0xe", +"1fa11206c2a4a8a65bc838ddddef08da1f39b81\"", +",\n \"name\" : \"0xe1fa11206c2a4a8a65\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 3", +"4623000000\n}, \n{\n \"ETH_account\" : \"0x", +"3ca55ecb987edd94028a29e19fb69b8c68092dfd", +"\",\n \"name\" : \"0x3ca55ecb987edd9402\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1850777400\n}, \n{\n \"ETH_account\" : \"0x", +"538530650eba60c5821dd56238204cec2ff5f492", +"\",\n \"name\" : \"0x538530650eba60c582\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"356754000\n}, \n{\n \"ETH_account\" : \"0x1", +"2c33a4c04bea1b69acc498f183ad517c99c0344\"", +",\n \"name\" : \"0x12c33a4c04bea1b69a\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 2", +"63288497\n}, \n{\n \"ETH_account\" : \"0xa4", +"751db317b015e876abf910ec2dc4ecf8af95e1\",", +"\n \"name\" : \"0xa4751db317b015e876\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 96", +"3972000\n}, \n{\n \"ETH_account\" : \"0xdb3", +"e56575db7ecd610ab4168ec9b5e7f5c2d2d64\",\n", +" \"name\" : \"0xdb3e56575db7ecd610\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 526", +"313376\n}, \n{\n \"ETH_account\" : \"0xa193", +"36925671db414048758840b4fdff6e124a99\",\n ", +" \"name\" : \"0xa19336925671db4140\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1518", +"047400\n}, \n{\n \"ETH_account\" : \"0x13a6", +"b929203d51ac981ff6896938e4f1aafda2d7\",\n ", +" \"name\" : \"digicap\",\n \"publicKey\" :", +" \"SPH5E5VruQ3C36mwQqFejoXfbqtth9KhtpJmGH", +"ozWcKKfMUuJAeMZ\",\n \"balance\" : 517731", +"00900\n}, \n{\n \"ETH_account\" : \"0x0fcd5", +"ee147cc0062298ec239b0676effef742930\",\n ", +" \"name\" : \"garry\",\n \"publicKey\" : \"S", +"PH5L7B41dprzsTguQ4XdMeNP6kxRyXxG6nL24iPX", +"1Zr5uDi7Hk2W\",\n \"balance\" : 473520100", +"\n}, \n{\n \"ETH_account\" : \"0xe0e93672ca", +"ab3a7bed8fde383166020a1cd76f61\",\n \"na", +"me\" : \"0xe0e93672caab3a7bed\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2361480000", +"\n}, \n{\n \"ETH_account\" : \"0x48907e9dfb", +"f2d3cac6f724f898b7fef3a3f9b14c\",\n \"na", +"me\" : \"0x48907e9dfbf2d3cac6\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 891587519\n", +"}, \n{\n \"ETH_account\" : \"0x853cb8a313b", +"719c96d4ab437a80e0dc212e0f1d3\",\n \"nam", +"e\" : \"0x853cb8a313b719c96d\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1040000000\n", +"}, \n{\n \"ETH_account\" : \"0x8c679f6a0bd", +"bf702f113633938b5e99c898eabe1\",\n \"nam", +"e\" : \"0x8c679f6a0bdbf702f1\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 327152845\n}", +", \n{\n \"ETH_account\" : \"0x1f4230816d80", +"f6d83dedbbccca5d6d896698e1c4\",\n \"name", +"\" : \"0x1f4230816d80f6d83d\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 915354400\n},", +" \n{\n \"ETH_account\" : \"0xf55de1ee405ca", +"b5830da288ebfd0c1b41424288f\",\n \"name\"", +" : \"0xf55de1ee405cab5830\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 304450767\n}, ", +"\n{\n \"ETH_account\" : \"0x6ad5ffcb38712c", +"aea53f2852cc6c768459964a60\",\n \"name\" ", +": \"0x6ad5ffcb38712caea5\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 40001000000\n},", +" \n{\n \"ETH_account\" : \"0x1af7dd00929f9", +"21c198e6e89c01725c928de0bb0\",\n \"name\"", +" : \"0x1af7dd00929f921c19\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 30000000\n}, \n", +"{\n \"ETH_account\" : \"0xc70fdd5b286d9f5", +"b8eb8e40fdefb4158be35c534\",\n \"name\" :", +" \"0xc70fdd5b286d9f5b8e\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 3470135000\n}, \n", +"{\n \"ETH_account\" : \"0x0159ec10d01d7ef", +"ee547a46fbda78f5a41879243\",\n \"name\" :", +" \"0x0159ec10d01d7efee5\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 8716114238\n}, \n", +"{\n \"ETH_account\" : \"0x3d1e6cf32e2bbd9", +"4082e754a0f93c55211259ca0\",\n \"name\" :", +" \"0x3d1e6cf32e2bbd9408\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 52321830\n}, \n{\n", +" \"ETH_account\" : \"0xeb179815cb218b775", +"2596d42c1db53312fd9458c\",\n \"name\" : \"", +"0xeb179815cb218b7752\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1323571041\n}, \n{\n", +" \"ETH_account\" : \"0x64caf5fef891f84ef", +"34b4b7d80bd6a18f61256ce\",\n \"name\" : \"", +"0x64caf5fef891f84ef3\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1500000000\n}, \n{\n", +" \"ETH_account\" : \"0x03a4096cac4e8cc02", +"3e971053c3d3bc84e45eb8a\",\n \"name\" : \"", +"0x03a4096cac4e8cc023\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 209344600\n}, \n{\n ", +" \"ETH_account\" : \"0xfde21ecbb7ae6ffa95", +"976ce320e54b2913effb42\",\n \"name\" : \"0", +"xfde21ecbb7ae6ffa95\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 165932708\n}, \n{\n ", +" \"ETH_account\" : \"0x2007035a0ac890636cc", +"223efe34b4647bb73d8c8\",\n \"name\" : \"0x", +"2007035a0ac890636c\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 127236922\n}, \n{\n ", +" \"ETH_account\" : \"0xe63c4006d5edcb28afa5", +"2493862b0c8bbd8d7b2b\",\n \"name\" : \"0xe", +"63c4006d5edcb28af\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 184000000\n}, \n{\n ", +"\"ETH_account\" : \"0x92a219eb3bab1aba29d83", +"12985f708fd7254f39b\",\n \"name\" : \"0x92", +"a219eb3bab1aba29\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 860056488\n}, \n{\n \"", +"ETH_account\" : \"0x425dd61a01ac8a76c33d9a", +"1b75156a91106b6963\",\n \"name\" : \"0x425", +"dd61a01ac8a76c3\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2626000000\n}, \n{\n \"", +"ETH_account\" : \"0x508d24d9856553ade146c3", +"ef56dd24c9264d254e\",\n \"name\" : \"0x508", +"d24d9856553ade1\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 3100000000\n}, \n{\n \"", +"ETH_account\" : \"0x41565d5e812d44e293f26d", +"0b93278e0d530369ad\",\n \"name\" : \"0x415", +"65d5e812d44e293\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 10208107069\n}, \n{\n ", +"\"ETH_account\" : \"0xab7742552da843558fc23", +"3380cf08a8dd358e260\",\n \"name\" : \"0xab", +"7742552da843558f\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 498036314\n}, \n{\n \"", +"ETH_account\" : \"0x680d4d88a6cd76d4437bae", +"35bdd58bb967bccc98\",\n \"name\" : \"0x680", +"d4d88a6cd76d443\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 50000000000\n}, \n{\n ", +"\"ETH_account\" : \"0xd762205476ea5649c689a", +"8a703488572c8b3007d\",\n \"name\" : \"0xd7", +"62205476ea5649c6\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 76711390000\n}, \n{\n ", +" \"ETH_account\" : \"0xb06a029979935a2aa94a", +"6b74f52c7c9d630cfea9\",\n \"name\" : \"0xb", +"06a029979935a2aa9\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 24305016800\n}, \n{\n ", +" \"ETH_account\" : \"0xd27f4afc132208b4563", +"53073ba76678bc3da05d4\",\n \"name\" : \"0x", +"d27f4afc132208b456\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 798255523\n}, \n{\n ", +" \"ETH_account\" : \"0xf3ae59584a5ab0e1a98b", +"157c849bdd9a433a7e7b\",\n \"name\" : \"0xf", +"3ae59584a5ab0e1a9\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 866486365\n}, \n{\n ", +"\"ETH_account\" : \"0x7db0b9d746bcacad557bb", +"db3642723e1510ab0fb\",\n \"name\" : \"0x7d", +"b0b9d746bcacad55\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1535049900\n}, \n{\n ", +"\"ETH_account\" : \"0x0a361e4f7f952f3c1e9b2", +"1a7ac7faefb34a189a9\",\n \"name\" : \"entr", +"opywolf\",\n \"publicKey\" : \"SPH5iNJuyzz", +"Mx5VF2jARp2HVZJQbbH4mjM2oxr9dAnuwWmkuhab", +"LW\",\n \"balance\" : 391600000\n}, \n{\n ", +" \"ETH_account\" : \"0x13c61bb3020d0cdb8338", +"d67e43834573e8f83a04\",\n \"name\" : \"0x1", +"3c61bb3020d0cdb83\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 3823000000\n}, \n{\n ", +" \"ETH_account\" : \"0x57196ff99d519a65e666", +"58e2c898812dad64def8\",\n \"name\" : \"phe", +"ntrin\",\n \"publicKey\" : \"SPH7Yotxtoro7", +"dm6mHZjS46G8yHknQz1fzNRsV7DkcDTihkV61pd9", +"\",\n \"balance\" : 728061221\n}, \n{\n \"", +"ETH_account\" : \"0x6297a3d8d98f108c8f6b12", +"b802b7a88041d59241\",\n \"name\" : \"0x629", +"7a3d8d98f108c8f\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 929919354\n}, \n{\n \"E", +"TH_account\" : \"0x3cfb1e282541f5b13b79b47", +"cd6e280cccaae3865\",\n \"name\" : \"sophia", +"txmun2\",\n \"publicKey\" : \"SPH56frdh9jq", +"SNP9jVwSBjJ9arvUErX2baZu1SUydeBQjoqasuYT", +"F\",\n \"balance\" : 4400825302\n}, \n{\n ", +" \"ETH_account\" : \"0x245f0725a5f7f9165f47", +"263713f825f24b1e52ef\",\n \"name\" : \"con", +"tractsphtxsc\",\n \"publicKey\" : \"SPH6Gg", +"6tWgNUdJoCaRzgxWWdDrVM1iupJ2Pod3RkdjfEeX", +"ZBqCgoZ\",\n \"balance\" : 1082183597\n}, ", +"\n{\n \"ETH_account\" : \"0xcf33c07570e745", +"98fb0074a3a7e5e3ac1926f132\",\n \"name\" ", +": \"0xcf33c07570e74598fb\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 2626930450\n}, ", +"\n{\n \"ETH_account\" : \"0x761279a1759d9b", +"09a0549eb73ae8d4f62f789002\",\n \"name\" ", +": \"0x761279a1759d9b09a0\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1062477345\n}, ", +"\n{\n \"ETH_account\" : \"0x68361779aca6d4", +"56cee8eb75ef99e855bef168f0\",\n \"name\" ", +": \"0x68361779aca6d456ce\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 90000000\n}, \n{", +"\n \"ETH_account\" : \"0x03cf659c87b12f35", +"8af2325dba6cd185062929cf\",\n \"name\" : ", +"\"0x03cf659c87b12f358a\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 5468426092\n}, \n{", +"\n \"ETH_account\" : \"0x51ac53eec04d4e79", +"079bbeff1cc702ad37814701\",\n \"name\" : ", +"\"0x51ac53eec04d4e7907\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1\n}, \n{\n \"ETH", +"_account\" : \"0x554cf7f2c3a73eb222ced78ae", +"9a4a4a5dd90cc26\",\n \"name\" : \"0x554cf7", +"f2c3a73eb222\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2000000000\n}, \n{\n \"ETH", +"_account\" : \"0x8903a25b52a253ba8d975ea84", +"a5702669f2c527b\",\n \"name\" : \"0x8903a2", +"5b52a253ba8d\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 256845661\n}, \n{\n \"ETH_", +"account\" : \"0xa1326eb56127c4834798ae6652", +"e9ae0729ee2159\",\n \"name\" : \"rah5sphtx", +"\",\n \"publicKey\" : \"SPH8WoEhs7AZJSGrSu", +"F52hNcNbMGpGZjzULEgXGmq1cFx2d6xRFvx\",\n ", +" \"balance\" : 3900860000\n}, \n{\n \"ETH_", +"account\" : \"0xef68c1356c9851a0e38fb769f9", +"16f8b069e34665\",\n \"name\" : \"0xef68c13", +"56c9851a0e3\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 845989000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x4b592bb4420039ff859808ed588", +"068733b50bba9\",\n \"name\" : \"0x4b592bb4", +"420039ff85\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 800000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xbe72d0cf5fe92c59176736542566", +"6d64b0c278df\",\n \"name\" : \"0xbe72d0cf5", +"fe92c5917\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 3480378839\n}, \n{\n \"ETH_ac", +"count\" : \"0x5d2b10dfe505d82b5799a371afa9", +"14dc6623c2cc\",\n \"name\" : \"0x5d2b10dfe", +"505d82b57\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 2529720907\n}, \n{\n \"ETH_ac", +"count\" : \"0x14dcec9a3049d83c0b23a47161c1", +"0f0a3764707e\",\n \"name\" : \"0x14dcec9a3", +"049d83c0b\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1592000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x30211266c93b7e20c1141607057f112", +"6b5b5e232\",\n \"name\" : \"palo\",\n \"pu", +"blicKey\" : \"SPH5Y3BdobvMwk3A4hLWgDntCcUC", +"Eo4fmUfJHkcrzaEqaPfR3Aqfr\",\n \"balance", +"\" : 8238465000\n}, \n{\n \"ETH_account\" :", +" \"0x658059415259810adddafa40b6f67678f9bf", +"9a19\",\n \"name\" : \"0x658059415259810ad", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 129417169\n}, \n{\n \"ETH_account\" : ", +"\"0x02523d88aaf1394c580aaa1f7973177679d91", +"c37\",\n \"name\" : \"0x02523d88aaf1394c58", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 2226312099\n}, \n{\n \"ETH_account\" : ", +"\"0x77846087496928831813e5a30ad76a2143111", +"1ac\",\n \"name\" : \"0x778460874969288318", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1247000000\n}, \n{\n \"ETH_account\" : ", +"\"0x8b9bd9d69089bca99bee9fb0974c2a2dd5271", +"9fe\",\n \"name\" : \"0x8b9bd9d69089bca99b", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1846200000\n}, \n{\n \"ETH_account\" : ", +"\"0xdcbb980886fb0ab10bc393f2a4c7d5a6d2d5f", +"657\",\n \"name\" : \"0xdcbb980886fb0ab10b", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 475022000\n}, \n{\n \"ETH_account\" : \"", +"0xa5abe4d40e41531c232d53cb490701d2f3fd9f", +"00\",\n \"name\" : \"nhtp\",\n \"publicKey", +"\" : \"SPH7FVVxDuNxVyjswLbHe65fHw5y8YuPfvf", +"4P8Rhx2uanVGeN6Gvo\",\n \"balance\" : 231", +"88516600\n}, \n{\n \"ETH_account\" : \"0xe2", +"954620829f54bbc9875ce03a72474fc7dee19f\",", +"\n \"name\" : \"0xe2954620829f54bbc9\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 15", +"86000000\n}, \n{\n \"ETH_account\" : \"0x8c", +"68ace2f5267bb733de38b6cd8aaae23985996c\",", +"\n \"name\" : \"0x8c68ace2f5267bb733\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 17", +"24510\n}, \n{\n \"ETH_account\" : \"0xc8baf", +"fc935bc62b8a79e3482531f775ee26d7a49\",\n ", +" \"name\" : \"0xc8baffc935bc62b8a7\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 61930", +"000\n}, \n{\n \"ETH_account\" : \"0x4519f0d", +"e74d6ef5b53f0b930523cb1bd6a210764\",\n ", +"\"name\" : \"0x4519f0de74d6ef5b53\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5169230", +"0\n}, \n{\n \"ETH_account\" : \"0x452b598b7", +"35dbfe272c15127434548dd4c5d287d\",\n \"n", +"ame\" : \"0x452b598b735dbfe272\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 286998939", +"7\n}, \n{\n \"ETH_account\" : \"0xb442beb7b", +"b7b570857aa44e36d792b56b675b7ec\",\n \"n", +"ame\" : \"ouaouared\",\n \"publicKey\" : \"S", +"PH67SwczkwHAzVpSKPpDFQFid4xsnJ5u1uBNktBc", +"81eJmovbzdj8\",\n \"balance\" : 162451640", +"0\n}, \n{\n \"ETH_account\" : \"0x6dcc131c0", +"cbd1602b39a75fb3cdaf86e860be529\",\n \"n", +"ame\" : \"0x6dcc131c0cbd1602b3\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 6913\n}, \n", +"{\n \"ETH_account\" : \"0x09dcba04c455c67", +"9259f1ee841431f7b4c49b25b\",\n \"name\" :", +" \"scottchesley\",\n \"publicKey\" : \"SPH6", +"LXmcXHvy1M1U4oUB14VVEQ4wPLEW9PX9FJCZQwqQ", +"k28CNCG96\",\n \"balance\" : 2992657700\n}", +", \n{\n \"ETH_account\" : \"0xb058d8ad6afc", +"eed942987180f7e4feaee6a5128c\",\n \"name", +"\" : \"0xb058d8ad6afceed942\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 15693290000\n", +"}, \n{\n \"ETH_account\" : \"0x14e4743eea7", +"7ed2e39d7f9db10fda525152eddb9\",\n \"nam", +"e\" : \"0x14e4743eea77ed2e39\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 65876245\n},", +" \n{\n \"ETH_account\" : \"0x2a2013e3def55", +"8bd646175507a88b6cd6cbf20f3\",\n \"name\"", +" : \"0x2a2013e3def558bd64\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 146763376\n}, ", +"\n{\n \"ETH_account\" : \"0x0577ef8d70832c", +"7269b9fe711032a939fdb8b5a3\",\n \"name\" ", +": \"0x0577ef8d70832c7269\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 100\n}, \n{\n ", +"\"ETH_account\" : \"0xf54e92ee8f7f3ff05190c", +"8c4acaf86370c6a6d77\",\n \"name\" : \"0xf5", +"4e92ee8f7f3ff051\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 12052072876\n}, \n{\n ", +" \"ETH_account\" : \"0xa758db3684031136b887", +"4d9216b413e420bbf706\",\n \"name\" : \"0xa", +"758db3684031136b8\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 5\n}, \n{\n \"ETH_acc", +"ount\" : \"0x30e6b6820310c6640a02a7a1997fb", +"4e19251c398\",\n \"name\" : \"0x30e6b68203", +"10c6640a\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 5525397000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xb500ec2f3c8f5f556024b13812a23", +"86756ffdbbf\",\n \"name\" : \"0xb500ec2f3c", +"8f5f5560\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 9040200000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x1275d1ba3c2a0213f1b90b4f99470", +"f425605a275\",\n \"name\" : \"0x1275d1ba3c", +"2a0213f1\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 329991426\n}, \n{\n \"ETH_acco", +"unt\" : \"0xb37d3cbf693e88e31e08f670eff12c", +"978c7bc48d\",\n \"name\" : \"0xb37d3cbf693", +"e88e31e\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 108391000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x243baf9a113cd9a274950a50569aef6", +"46c96f133\",\n \"name\" : \"0x243baf9a113c", +"d9a274\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 309969400\n}, \n{\n \"ETH_accoun", +"t\" : \"0xaada36cee737f094cb5ba3ceac5c61dc", +"42f16cc7\",\n \"name\" : \"0xaada36cee737f", +"094cb\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 795520000\n}, \n{\n \"ETH_account", +"\" : \"0x5d35c7eceaf5d3328a280324f2640f78f", +"260e945\",\n \"name\" : \"sphtxbyjk\",\n ", +"\"publicKey\" : \"SPH7MFMrUpZNhdVMysqiNqZtQ", +"Pn17BPWSqDc18YQXbZWuoJW441mZ\",\n \"bala", +"nce\" : 247000000\n}, \n{\n \"ETH_account\"", +" : \"0x2b5a7553554ee0c7b9a5a896c3f38cbc51", +"61f486\",\n \"name\" : \"meberl\",\n \"pub", +"licKey\" : \"SPH4tvSyehGR5me6JK4JWGasnikv6", +"1GmfQ3RRMCRGwWdGT1rczGJp\",\n \"balance\"", +" : 320000000\n}, \n{\n \"ETH_account\" : \"", +"0x099e5f31fc625917544e5e84ff25e0a8d97253", +"80\",\n \"name\" : \"0x099e5f31fc62591754\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 22002000000\n}, \n{\n \"ETH_account\" : ", +"\"0xd7ff4d11d15befc2cfeaa52a211cd1f04b43c", +"bac\",\n \"name\" : \"0xd7ff4d11d15befc2cf", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 991017300\n}, \n{\n \"ETH_account\" : \"", +"0x851cd0f53ab3ebbe9cc83d06bcb52af6e6c7ad", +"24\",\n \"name\" : \"0x851cd0f53ab3ebbe9c\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 387000000\n}, \n{\n \"ETH_account\" : \"0", +"x759f1dbb931556bbeaefaeda15904027dbded9a", +"1\",\n \"name\" : \"0x759f1dbb931556bbea\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 10000000000\n}, \n{\n \"ETH_account\" : \"", +"0xbcd358e06a4be448b8b25dba6e56cca74df3f7", +"59\",\n \"name\" : \"greenpurple\",\n \"pu", +"blicKey\" : \"SPH7KAY9m9iTdamXFRuF4hhgKL3m", +"iZewDUj8GL5QahBTVx23QSfpm\",\n \"balance", +"\" : 201050750\n}, \n{\n \"ETH_account\" : ", +"\"0x645f7f5bb5749aa905c2bd2fef3f767b5ba36", +"35c\",\n \"name\" : \"cryptodavysphtx\",\n ", +" \"publicKey\" : \"SPH6vdtdL2zCNqmbR7mjWZy", +"zXsgy436yBjzQ5r6tEY2ZPZEEbtD3f\",\n \"ba", +"lance\" : 5548507900\n}, \n{\n \"ETH_accou", +"nt\" : \"0x6dd0953f34ea4b7bd2900bd88a61251", +"5cb03f2d0\",\n \"name\" : \"0x6dd0953f34ea", +"4b7bd2\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 1609536503\n}, \n{\n \"ETH_accou", +"nt\" : \"0x49cf8d8f25f6217214b34ef4a11c658", +"deb3893c7\",\n \"name\" : \"0x49cf8d8f25f6", +"217214\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 12180349921\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa9b91d856e6b7c44a844220c8dacc4", +"fc34740925\",\n \"name\" : \"0xa9b91d856e6", +"b7c44a8\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 4796000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0xa03ee5f003f8ac08bca599e6b8844f", +"ba087729cb\",\n \"name\" : \"0xa03ee5f003f", +"8ac08bc\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 1346567700\n}, \n{\n \"ETH_acco", +"unt\" : \"0xf79afa81c23060161d1062b29955cd", +"1c78cd0ae0\",\n \"name\" : \"0xf79afa81c23", +"060161d\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 3124915072\n}, \n{\n \"ETH_acco", +"unt\" : \"0xdbb9eb055ddb197ce3f873d5eb1cbe", +"d283e6ce7d\",\n \"name\" : \"0xdbb9eb055dd", +"b197ce3\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 11336978100\n}, \n{\n \"ETH_acc", +"ount\" : \"0x3260eb070b83568993c69ff8b5b3f", +"663b382e8a8\",\n \"name\" : \"0x3260eb070b", +"83568993\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1000000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xa3f4f941ae3c4784e5edecb44f23e", +"2fa1cad7fd3\",\n \"name\" : \"0xa3f4f941ae", +"3c4784e5\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1364485500\n}, \n{\n \"ETH_acc", +"ount\" : \"0x6fad326f3bcee3781d5652057e0dc", +"2ffbb17d59a\",\n \"name\" : \"0x6fad326f3b", +"cee3781d\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 18905217743\n}, \n{\n \"ETH_ac", +"count\" : \"0x73707827f4d62f5f95690bc91563", +"3396274a6e27\",\n \"name\" : \"0x73707827f", +"4d62f5f95\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 841996200\n}, \n{\n \"ETH_acc", +"ount\" : \"0x52872ebe95c8b03e7fe91fcf16db4", +"b1941ce9f8d\",\n \"name\" : \"0x52872ebe95", +"c8b03e7f\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 898756500\n}, \n{\n \"ETH_acco", +"unt\" : \"0xde91c562f7dde683a038bd1754c951", +"5b9c429686\",\n \"name\" : \"0xde91c562f7d", +"de683a0\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 28938000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xa6732db064ebaa9665b0f67e972f9452", +"92741ea3\",\n \"name\" : \"0xa6732db064eba", +"a9665\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 788127\n}, \n{\n \"ETH_account\" :", +" \"0xd1eb505c693748bbe9134d9f7a4ada22f725", +"739f\",\n \"name\" : \"0xd1eb505c693748bbe", +"9\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 291320000\n}, \n{\n \"ETH_account\" : ", +"\"0x5ce95f80507c99cd0a120be56d67a66fa9676", +"cb3\",\n \"name\" : \"0x5ce95f80507c99cd0a", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 11926419000\n}, \n{\n \"ETH_account\" :", +" \"0xbbaface58a00d7f1033b3aa579eca801cd7a", +"824b\",\n \"name\" : \"0xbbaface58a00d7f10", +"3\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 3797000000\n}, \n{\n \"ETH_account\" :", +" \"0x5361f8b3a8b56c84eeb1173024eb041673f2", +"2466\",\n \"name\" : \"0x5361f8b3a8b56c84e", +"e\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1240750000\n}, \n{\n \"ETH_account\" :", +" \"0x16d3a734679d36e42cdceb70f43d91865a5a", +"63c2\",\n \"name\" : \"0x16d3a734679d36e42", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 794447661\n}, \n{\n \"ETH_account\" : ", +"\"0xd0eb41d951cc02a1fbc2544ba2764a46990e3", +"779\",\n \"name\" : \"0xd0eb41d951cc02a1fb", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 184580000\n}, \n{\n \"ETH_account\" : \"", +"0x5c773521260ac94e99805ee6857624485ef46e", +"61\",\n \"name\" : \"0x5c773521260ac94e99\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 125052000\n}, \n{\n \"ETH_account\" : \"0", +"x33e10eeb388038ac60d477486e1185f68680208", +"3\",\n \"name\" : \"0x33e10eeb388038ac60\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 1446553800\n}, \n{\n \"ETH_account\" : \"0", +"xadf3953f5942fd0da9f58f84e118fd97c174699", +"2\",\n \"name\" : \"0xadf3953f5942fd0da9\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 2141074600\n}, \n{\n \"ETH_account\" : \"0", +"xe515ccdd9c37a3069b3bbed456c7be999ccb047", +"b\",\n \"name\" : \"0xe515ccdd9c37a3069b\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 2574500000\n}, \n{\n \"ETH_account\" : \"0", +"x97b1284fde7d81243c757653d564a1d38634438", +"a\",\n \"name\" : \"0x97b1284fde7d81243c\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 320000000\n}, \n{\n \"ETH_account\" : \"0x", +"c85b38bcaded09598c6ab3f31710bc6153fb28a8", +"\",\n \"name\" : \"0xc85b38bcaded09598c\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1651480000\n}, \n{\n \"ETH_account\" : \"0x", +"950a41bbe11d69164086ac206c79dafa68057ecf", +"\",\n \"name\" : \"0x950a41bbe11d691640\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"58565610\n}, \n{\n \"ETH_account\" : \"0x92", +"0abebeebcbd05129840c6689b29475fae34992\",", +"\n \"name\" : \"0x920abebeebcbd05129\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 28", +"7356800\n}, \n{\n \"ETH_account\" : \"0x84f", +"54d45c5618ce60e40f94bf178dfcd1f6d1049\",\n", +" \"name\" : \"0x84f54d45c5618ce60e\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 109", +"7911300\n}, \n{\n \"ETH_account\" : \"0x3bc", +"86d2a872080bc4e9bf608fd70b9258d9ffc16\",\n", +" \"name\" : \"0x3bc86d2a872080bc4e\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 176", +"000000\n}, \n{\n \"ETH_account\" : \"0x4a56", +"646065eac74a2d21ea402e7913aa20075585\",\n ", +" \"name\" : \"0x4a56646065eac74a2d\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 7785", +"00\n}, \n{\n \"ETH_account\" : \"0xd9e3003f", +"100aec57db2a738660c8fcf8a08a83d0\",\n \"", +"name\" : \"0xd9e3003f100aec57db\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10160970", +"0\n}, \n{\n \"ETH_account\" : \"0xe163dbf2a", +"1e938a0541c03a352f29ef297b5514e\",\n \"n", +"ame\" : \"0xe163dbf2a1e938a054\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 300000000", +"\n}, \n{\n \"ETH_account\" : \"0xef7813db77", +"d9f297b00cc77b5c255a72fa9c679d\",\n \"na", +"me\" : \"dimitri\",\n \"publicKey\" : \"SPH8", +"1WwBhF9gpU1SEJCnmbCjvHqqNKwjb9Gq4UTq9gD5", +"4Vd32t8A9\",\n \"balance\" : 12765187900\n", +"}, \n{\n \"ETH_account\" : \"0x8cdb9c9cb31", +"de778a580c9a4e005cc835f21adaf\",\n \"nam", +"e\" : \"0x8cdb9c9cb31de778a5\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 2680736300\n", +"}, \n{\n \"ETH_account\" : \"0x32833bb6d09", +"03a6818c92ce859a3e0737b0a1750\",\n \"nam", +"e\" : \"0x32833bb6d0903a6818\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 50000740000", +"\n}, \n{\n \"ETH_account\" : \"0xa1b65f511b", +"c2cd9181fa42e452c74b3c7e7e64db\",\n \"na", +"me\" : \"0xa1b65f511bc2cd9181\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 6583196160", +"0\n}, \n{\n \"ETH_account\" : \"0x3e7eb3ae9", +"12aaf22be45087d61a4c3c443361fba\",\n \"n", +"ame\" : \"0x3e7eb3ae912aaf22be\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 254319978", +"\n}, \n{\n \"ETH_account\" : \"0x7446ca122d", +"fae6012d5ce13d9938a5afdbef6828\",\n \"na", +"me\" : \"0x7446ca122dfae6012d\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1993112832", +"\n}, \n{\n \"ETH_account\" : \"0x76bb8cbbcd", +"1f49d086ca401df8e47a5d84c6c1d4\",\n \"na", +"me\" : \"0x76bb8cbbcd1f49d086\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1266990000", +"\n}, \n{\n \"ETH_account\" : \"0xd5b054c054", +"eed091d2a68d3af84b9df115f23d07\",\n \"na", +"me\" : \"0xd5b054c054eed091d2\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 448631100\n", +"}, \n{\n \"ETH_account\" : \"0x5d81f0835a3", +"ee862476ec97460718d5d0661308a\",\n \"nam", +"e\" : \"0x5d81f0835a3ee86247\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 10167773535", +"\n}, \n{\n \"ETH_account\" : \"0x946f0711df", +"ea25dc2ab60e6ff0df6dbda32ee6c6\",\n \"na", +"me\" : \"0x946f0711dfea25dc2a\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 693130535\n", +"}, \n{\n \"ETH_account\" : \"0x66d670d6793", +"c5b31595c657bd2ede9863d999907\",\n \"nam", +"e\" : \"0x66d670d6793c5b3159\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 352260240\n}", +", \n{\n \"ETH_account\" : \"0x8f1276af643c", +"193f005aef29f635a3e599946dd1\",\n \"name", +"\" : \"0x8f1276af643c193f00\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 6403800000\n}", +", \n{\n \"ETH_account\" : \"0x6577ad24fd8c", +"088e29d3fc9db2b6ab864ac857cd\",\n \"name", +"\" : \"0x6577ad24fd8c088e29\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 251956582\n},", +" \n{\n \"ETH_account\" : \"0x1ccada8ab930e", +"337ed95a8949174982e837267d6\",\n \"name\"", +" : \"0x1ccada8ab930e337ed\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 8957017770\n},", +" \n{\n \"ETH_account\" : \"0x798616f39ae48", +"c306796cb9b74732e973822b1f8\",\n \"name\"", +" : \"0x798616f39ae48c3067\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1180566800\n},", +" \n{\n \"ETH_account\" : \"0xc62124bb4c01d", +"87338c83470b4eb2927ec6ba13a\",\n \"name\"", +" : \"0xc62124bb4c01d87338\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 512063000\n}, ", +"\n{\n \"ETH_account\" : \"0x33987c2f2e0766", +"4c3a476fa0c67bb83e5de117d8\",\n \"name\" ", +": \"0x33987c2f2e07664c3a\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 66002\n}, \n{\n ", +" \"ETH_account\" : \"0x800683b81e94eef9fe0", +"a2c32f80d37e18b41fb95\",\n \"name\" : \"0x", +"800683b81e94eef9fe\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 6237000000\n}, \n{\n ", +" \"ETH_account\" : \"0x60bca81a28a18048523", +"ad3a6577dfc190892d9ac\",\n \"name\" : \"0x", +"60bca81a28a1804852\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1090030000\n}, \n{\n ", +" \"ETH_account\" : \"0xfa8221505bb1554a1a0", +"5e2adfa78dad6e339974c\",\n \"name\" : \"0x", +"fa8221505bb1554a1a\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 2133653000\n}, \n{\n ", +" \"ETH_account\" : \"0xaf55460dd285c974503", +"48afa30e7f1ca954bd25e\",\n \"name\" : \"0x", +"af55460dd285c97450\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 11200648997\n}, \n{\n ", +" \"ETH_account\" : \"0x4f5deb813b7af29ff5", +"a388bf074cd8a4c32c2866\",\n \"name\" : \"0", +"x4f5deb813b7af29ff5\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 332012979\n}, \n{\n ", +" \"ETH_account\" : \"0x7b6c82032e2a23fea2c", +"95a995b83837093c25787\",\n \"name\" : \"sm", +"sophiacoins\",\n \"publicKey\" : \"SPH5ijp", +"ywq6cTGGr6tQyTzA8j82BEUMyQgLxSJoUrBY2tF3", +"ew4HQ8\",\n \"balance\" : 621497400\n}, \n{", +"\n \"ETH_account\" : \"0x84ce370e416330d4", +"96119ecf493253ed336db2c2\",\n \"name\" : ", +"\"0x84ce370e416330d496\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 785044452\n}, \n{\n", +" \"ETH_account\" : \"0xda50f95ec0a99ed55", +"29d66473ad11b007e4233dc\",\n \"name\" : \"", +"0xda50f95ec0a99ed552\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 950000000\n}, \n{\n ", +" \"ETH_account\" : \"0x00e3ce15d86422d84a", +"0a8ac487a9357fea89a518\",\n \"name\" : \"0", +"x00e3ce15d86422d84a\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 458805000\n}, \n{\n ", +" \"ETH_account\" : \"0x57142d13bb63be7137f", +"83876e3477d4a1634a025\",\n \"name\" : \"0x", +"57142d13bb63be7137\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 6115000000\n}, \n{\n ", +" \"ETH_account\" : \"0x07905af7a5cb5080a48", +"f3375d2fcf68ea521c327\",\n \"name\" : \"an", +"drewaralacyjoy\",\n \"publicKey\" : \"SPH5", +"VgMMn2EHmTsnghcpewbKxzAjs6XhvmfBLnA7mCjq", +"sPAVACTsb\",\n \"balance\" : 30654880000\n", +"}, \n{\n \"ETH_account\" : \"0x33cf5b77596", +"8bf599968091b08114507ea6c2d0e\",\n \"nam", +"e\" : \"0x33cf5b775968bf5999\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 8035000000\n", +"}, \n{\n \"ETH_account\" : \"0xb44a8d9d9b9", +"ae9d87e5c5a707bb854350925291e\",\n \"nam", +"e\" : \"0xb44a8d9d9b9ae9d87e\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 6832396800\n", +"}, \n{\n \"ETH_account\" : \"0x14724f0d7fb", +"6080bc0c118471d01e458b53a464e\",\n \"nam", +"e\" : \"0x14724f0d7fb6080bc0\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1173867993\n", +"}, \n{\n \"ETH_account\" : \"0x6f1a96f4f88", +"db028db43206ea9c6cae05a23da97\",\n \"nam", +"e\" : \"0x6f1a96f4f88db028db\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1537985600\n", +"}, \n{\n \"ETH_account\" : \"0x9f029c322d9", +"1d9b0a9766648707531e6a8f4fb56\",\n \"nam", +"e\" : \"0x9f029c322d91d9b0a9\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1137228000\n", +"}, \n{\n \"ETH_account\" : \"0x1b44013e3ff", +"31a957bbdf0ee32b92e6749ad77a2\",\n \"nam", +"e\" : \"tonypeee\",\n \"publicKey\" : \"SPH8", +"7WajhDtz6rNJjXiGX9Qi9uN2eEqeHxhXiPHXptvn", +"HnUZNK9Gy\",\n \"balance\" : 1109889700\n}", +", \n{\n \"ETH_account\" : \"0xf3559c4b2d58", +"a422e54723aef7a3953dce1dc773\",\n \"name", +"\" : \"0xf3559c4b2d58a422e5\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 43994671\n}, ", +"\n{\n \"ETH_account\" : \"0x50aff952f58b7f", +"ce115c367423ef3a07de2de364\",\n \"name\" ", +": \"0x50aff952f58b7fce11\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1845100000\n}, ", +"\n{\n \"ETH_account\" : \"0x0ee7ba6fca9eba", +"fc40651849a6e999b9b90fab2f\",\n \"name\" ", +": \"0x0ee7ba6fca9ebafc40\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 432279300\n}, \n", +"{\n \"ETH_account\" : \"0xef5175bf2513576", +"bd529a2fa3885b744945e473b\",\n \"name\" :", +" \"0xef5175bf2513576bd5\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 48140578600\n}, ", +"\n{\n \"ETH_account\" : \"0x3b9b57ff78bc40", +"bf010981e7063eb4af6f89b791\",\n \"name\" ", +": \"spaceamoeba\",\n \"publicKey\" : \"SPH6", +"DPjUfDor6nFxwLY4fcNVb4p9DyxfuBKmPHV6ezMJ", +"9hNA6895a\",\n \"balance\" : 11000222000\n", +"}, \n{\n \"ETH_account\" : \"0x6950da3f9e7", +"efe455c29270d4f98f232070a4b08\",\n \"nam", +"e\" : \"0x6950da3f9e7efe455c\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 31525100000", +"0\n}, \n{\n \"ETH_account\" : \"0xaba9478ef", +"4c22da8a5fd9f76e6e5ddff99c9a891\",\n \"n", +"ame\" : \"0xaba9478ef4c22da8a5\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 943000000", +"\n}, \n{\n \"ETH_account\" : \"0x163bf0dfff", +"3d4830c71f6585ccc2e37784ab263f\",\n \"na", +"me\" : \"0x163bf0dfff3d4830c7\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1177350459", +"00\n}, \n{\n \"ETH_account\" : \"0x5101d7fd", +"86d8a98f1a4ab21428db2521e1aad790\",\n \"", +"name\" : \"0x5101d7fd86d8a98f1a\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 25000000", +"00\n}, \n{\n \"ETH_account\" : \"0xc01db3c8", +"5f356da35149e61aeb513afe3d8c9e9c\",\n \"", +"name\" : \"0xc01db3c85f356da351\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 27677550", +"00\n}, \n{\n \"ETH_account\" : \"0x8f91127a", +"89a199d9f210f9b9442fd1bc18c2bde8\",\n \"", +"name\" : \"0x8f91127a89a199d9f2\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 44000000", +"0\n}, \n{\n \"ETH_account\" : \"0xd3e85af02", +"a637cdf3514c8ff08ede2ca1087e8d5\",\n \"n", +"ame\" : \"0xd3e85af02a637cdf35\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 441550000", +"\n}, \n{\n \"ETH_account\" : \"0x3cb42a780e", +"14ac1c4cfc1f19e82ce99d7b711052\",\n \"na", +"me\" : \"0x3cb42a780e14ac1c4c\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2200000000", +"\n}, \n{\n \"ETH_account\" : \"0xfd0e9ea5dd", +"db948ea2948894e59d0bff168d8547\",\n \"na", +"me\" : \"dposking\",\n \"publicKey\" : \"SPH", +"8gWaPKajNG5LsEoaxnkHG8Qxx5BTPqXebezdBxy1", +"pPGkD8C8mr\",\n \"balance\" : 3547365200\n", +"}, \n{\n \"ETH_account\" : \"0x777487cff70", +"9f3ff3b1a2c52675b0ccd5b40721c\",\n \"nam", +"e\" : \"0x777487cff709f3ff3b\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 2176135566\n", +"}, \n{\n \"ETH_account\" : \"0x4ebb857b91e", +"d78d970101acd8cb7905aeab9d1b2\",\n \"nam", +"e\" : \"0x4ebb857b91ed78d970\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 24996752753", +"\n}, \n{\n \"ETH_account\" : \"0x52615badf8", +"67600a8ebefb305890766bd4828b08\",\n \"na", +"me\" : \"0x52615badf867600a8e\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 4941370000", +"\n}, \n{\n \"ETH_account\" : \"0x4a34a4714a", +"62a90012c2b24d7ae36bb7e77047f4\",\n \"na", +"me\" : \"0x4a34a4714a62a90012\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1409263528", +"\n}, \n{\n \"ETH_account\" : \"0xf1a1580b80", +"6bc1978ac139474d1bb1236848874e\",\n \"na", +"me\" : \"andywolf\",\n \"publicKey\" : \"SPH", +"71N2WNegTXAEjAYemti5poqmDL8HEGLtrq2SkERF", +"Rn2qyBB9zq\",\n \"balance\" : 757396900\n}", +", \n{\n \"ETH_account\" : \"0x5424018354ef", +"56c5805a57f6fef41e92f5b2d302\",\n \"name", +"\" : \"0x5424018354ef56c580\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 31254528100\n", +"}, \n{\n \"ETH_account\" : \"0x77fcd5e909c", +"f055335b38c755edac2d2d3d2659d\",\n \"nam", +"e\" : \"0x77fcd5e909cf055335\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 6450136350\n", +"}, \n{\n \"ETH_account\" : \"0xdf1cfe9b5b4", +"e0da3ff24c080479c5628160dbde7\",\n \"nam", +"e\" : \"0xdf1cfe9b5b4e0da3ff\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 100000000\n}", +", \n{\n \"ETH_account\" : \"0x8ac8ad942a5f", +"78f5e41b49034bc3a84403170559\",\n \"name", +"\" : \"0x8ac8ad942a5f78f5e4\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 2521212314\n}", +", \n{\n \"ETH_account\" : \"0xecf6e22e8abc", +"fe913f35c95dd578e3fdab5cf23f\",\n \"name", +"\" : \"0xecf6e22e8abcfe913f\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 4822800000\n}", +", \n{\n \"ETH_account\" : \"0xfebecf3344e3", +"8b4e82ba82ece696eb479680e606\",\n \"name", +"\" : \"0xfebecf3344e38b4e82\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1888000000\n}", +", \n{\n \"ETH_account\" : \"0x37fc94acf85a", +"c0aec847619a5ecd20fc7a3f4471\",\n \"name", +"\" : \"0x37fc94acf85ac0aec8\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 361720000\n},", +" \n{\n \"ETH_account\" : \"0xcc30791c2a0f2", +"4093995335e4a1002da073b830b\",\n \"name\"", +" : \"0xcc30791c2a0f240939\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 539750000\n}, ", +"\n{\n \"ETH_account\" : \"0x30432ff2077d93", +"32099367452f3ebca8a585cdbe\",\n \"name\" ", +": \"0x30432ff2077d933209\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 8315240000\n}, ", +"\n{\n \"ETH_account\" : \"0x5d02df9533ed9f", +"0f6fa9e7ae21f2c44adcfa71fb\",\n \"name\" ", +": \"0x5d02df9533ed9f0f6f\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 50203238823\n},", +" \n{\n \"ETH_account\" : \"0x20942a4824fbd", +"be8fa79776d924bc963317d1b7f\",\n \"name\"", +" : \"0x20942a4824fbdbe8fa\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 332029026\n}, ", +"\n{\n \"ETH_account\" : \"0x7c4cf8713f74cf", +"af603a596ad1ec6e0a0c89bf03\",\n \"name\" ", +": \"0x7c4cf8713f74cfaf60\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 97482152\n}, \n{", +"\n \"ETH_account\" : \"0xd196a16fdb0d3a79", +"064aa59e6e1a64c57855e020\",\n \"name\" : ", +"\"0xd196a16fdb0d3a7906\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 1599550000\n}, \n{", +"\n \"ETH_account\" : \"0xf36a5f1e4c6e8e0c", +"8025b173cedab61597d04b17\",\n \"name\" : ", +"\"0xf36a5f1e4c6e8e0c80\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 94703150\n}, \n{\n ", +" \"ETH_account\" : \"0xaccb07f1d1e7e0a50f", +"d6cd9d1f210de2f3214774\",\n \"name\" : \"0", +"xaccb07f1d1e7e0a50f\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 522976000\n}, \n{\n ", +" \"ETH_account\" : \"0x5fa092aee8c41831a03", +"fb87826ec74d01af65f88\",\n \"name\" : \"0x", +"5fa092aee8c41831a0\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 25094598510\n}, \n{\n ", +" \"ETH_account\" : \"0x2fc65ffedb3381231a", +"45bb38949b75a59b840fa1\",\n \"name\" : \"k", +"ouwenhoven\",\n \"publicKey\" : \"SPH6jDYu", +"YAV6BCEHo5s7g4zTyCtHz6Ak1rccHzM1uDhW1qvx", +"vp1K2\",\n \"balance\" : 2237569792\n}, \n{", +"\n \"ETH_account\" : \"0x680dd4fc6f18d089", +"2e2302e7041877ecce843b7a\",\n \"name\" : ", +"\"0x680dd4fc6f18d0892e\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 4389674000\n}, \n{", +"\n \"ETH_account\" : \"0x20a97b2ff36b6e02", +"0edcda68330df611767b7d8d\",\n \"name\" : ", +"\"0x20a97b2ff36b6e020e\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 327882135\n}, \n{\n", +" \"ETH_account\" : \"0x814f66f9b94acfc0f", +"50c0a90f18cc045ba7f2ebc\",\n \"name\" : \"", +"bluepit1\",\n \"publicKey\" : \"SPH6WFjRx7", +"eD6D4peYrpnQTiFJW6yzZ7rQ1zSR7eRNwooxbjGb", +"sUz\",\n \"balance\" : 4932000000\n}, \n{\n ", +" \"ETH_account\" : \"0xb9a2148f41d9345a67", +"dcf1a23d1c78b3155a8b9c\",\n \"name\" : \"0", +"xb9a2148f41d9345a67\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 3350056247\n}, \n{\n ", +" \"ETH_account\" : \"0xe354781e0109f96804", +"83919461bf66cfd46a93a9\",\n \"name\" : \"w", +"outer\",\n \"publicKey\" : \"SPH8Zx3R7NdzK", +"d383NcqARgSYXj9SSAUY7KGbzqgb6B1jbmEhQUYd", +"\",\n \"balance\" : 4216993778\n}, \n{\n ", +"\"ETH_account\" : \"0x045a44878093da66c2bf6", +"73e161a2f970eafd560\",\n \"name\" : \"0x04", +"5a44878093da66c2\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 604711300\n}, \n{\n \"", +"ETH_account\" : \"0x5d225a0b8734754c1048c1", +"adefa8075d9f0aeb29\",\n \"name\" : \"jojoc", +"hinto\",\n \"publicKey\" : \"SPH7xfhBAntjF", +"WJXEqXKCrB8wdSJUFBG3dqMAghMbeYSxt2bVWsGw", +"\",\n \"balance\" : 463083900\n}, \n{\n \"", +"ETH_account\" : \"0x0b7105a1070feb7b78de69", +"15ee7cd78e87938732\",\n \"name\" : \"jadeh", +"arper\",\n \"publicKey\" : \"SPH7yT16iS3YR", +"gw6dyuWEXksLU3Ag5rqFcDyAJ2a87azSziaQZ4uK", +"\",\n \"balance\" : 1077512000\n}, \n{\n ", +"\"ETH_account\" : \"0xa5a9f51f3cbf3e61d518b", +"478469dd22640cff12a\",\n \"name\" : \"0xa5", +"a9f51f3cbf3e61d5\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 1260000000\n}, \n{\n ", +"\"ETH_account\" : \"0x82c4e1c7fa07bdde81e35", +"dd378e18ec2b42e99b6\",\n \"name\" : \"0x82", +"c4e1c7fa07bdde81\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 9971\n}, \n{\n \"ETH_a", +"ccount\" : \"0x1ecee058ebcecb0f17c3cf124ac", +"d139cf0d38710\",\n \"name\" : \"0x1ecee058", +"ebcecb0f17\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 264000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x8900ef12b8850f01d70e7191e952", +"f072186c74dd\",\n \"name\" : \"0x8900ef12b", +"8850f01d7\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 436312871\n}, \n{\n \"ETH_acc", +"ount\" : \"0x61beed14bff6f4ee3bd53294ca9bb", +"3b3937d1dd0\",\n \"name\" : \"0x61beed14bf", +"f6f4ee3b\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 50000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x0a09d4b4c4eace3e8cffe17d0b56d8c", +"b2fecd36f\",\n \"name\" : \"0x0a09d4b4c4ea", +"ce3e8c\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 683282300\n}, \n{\n \"ETH_accoun", +"t\" : \"0xfe884808c393ac6da06e0ce12f2eed43", +"8615b4ad\",\n \"name\" : \"0xfe884808c393a", +"c6da0\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 4432779393\n}, \n{\n \"ETH_accoun", +"t\" : \"0x1795125f9061f75c1f857a1ac0e8dff9", +"afebb754\",\n \"name\" : \"0x1795125f9061f", +"75c1f\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 3879266385\n}, \n{\n \"ETH_accoun", +"t\" : \"0xce4bd2e8dd19eea450a27a1b2b375ea1", +"65f178dd\",\n \"name\" : \"0xce4bd2e8dd19e", +"ea450\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1621000\n}, \n{\n \"ETH_account\" ", +": \"0x5806f369363abd07ecfc2406cc918f08538", +"bd784\",\n \"name\" : \"0x5806f369363abd07", +"ec\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 1612613070\n}, \n{\n \"ETH_account\" ", +": \"0xa13315193b2f23638a716859b25f1718cdc", +"3008a\",\n \"name\" : \"0xa13315193b2f2363", +"8a\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 508000000\n}, \n{\n \"ETH_account\" :", +" \"0xb4afeffba2e487c38ac96319299e3949134d", +"3e41\",\n \"name\" : \"0xb4afeffba2e487c38", +"a\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 3000000000\n}, \n{\n \"ETH_account\" :", +" \"0xb935bd4afa018a6c434c4f50c78e54e2d39d", +"7c84\",\n \"name\" : \"0xb935bd4afa018a6c4", +"3\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 1262715366\n}, \n{\n \"ETH_account\" :", +" \"0xe5072a1f8f859117edda69e56905e78a7c03", +"0375\",\n \"name\" : \"0xe5072a1f8f859117e", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 374969839\n}, \n{\n \"ETH_account\" : ", +"\"0xd62d5deab2dec45574d20b0e7cc79cd4cceab", +"3ba\",\n \"name\" : \"0xd62d5deab2dec45574", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 12497305800\n}, \n{\n \"ETH_account\" :", +" \"0x0f80433d19fd16714b9909b8af6b88da30db", +"10ea\",\n \"name\" : \"0x0f80433d19fd16714", +"b\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 7528465100\n}, \n{\n \"ETH_account\" :", +" \"0x2c88cf08121512cc1b610bd2c06d56b7c646", +"b80c\",\n \"name\" : \"0x2c88cf08121512cc1", +"b\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 142000000\n}, \n{\n \"ETH_account\" : ", +"\"0xbb8d1db1f83f12afbe8aac77dfdc57624fcc9", +"8fa\",\n \"name\" : \"0xbb8d1db1f83f12afbe", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 2595000000\n}, \n{\n \"ETH_account\" : ", +"\"0x235d501c7e0eb71bf602c8c8fc9269ed09e30", +"6d2\",\n \"name\" : \"0x235d501c7e0eb71bf6", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1000000000\n}, \n{\n \"ETH_account\" : ", +"\"0x7ed1e469fcb3ee19c0366d829e291451be638", +"e59\",\n \"name\" : \"0x7ed1e469fcb3ee19c0", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 29610214843\n}, \n{\n \"ETH_account\" :", +" \"0x5a3d6f3564b871dc7f616a01fc2bcd9ce000", +"b8b3\",\n \"name\" : \"0x5a3d6f3564b871dc7", +"f\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 100000000\n}, \n{\n \"ETH_account\" : ", +"\"0xaf014e631ad5a2c6e9af9afbb16323d6171a9", +"cdf\",\n \"name\" : \"0xaf014e631ad5a2c6e9", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 137568100\n}, \n{\n \"ETH_account\" : \"", +"0x94698f7cf2b3890f4654a53d46ab5de2cd3c36", +"1f\",\n \"name\" : \"0x94698f7cf2b3890f46\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1498737000\n}, \n{\n \"ETH_account\" : \"", +"0xb2e0a0a3186f33e88c3ebc98112efd7a406d17", +"bb\",\n \"name\" : \"pradeepsophia\",\n \"", +"publicKey\" : \"SPH61g5LnpU5zLunaQ63qfbTiT", +"GxmQkmAYnUK7pUmnie5Xg8DSzDL\",\n \"balan", +"ce\" : 491246500\n}, \n{\n \"ETH_account\" ", +": \"0xa4ed73d5b1e93594c94e3504b6d08085349", +"5c9ce\",\n \"name\" : \"sophiatxftw\",\n ", +"\"publicKey\" : \"SPH7kBrEhNxdvjZ55uVBbV3es", +"qEYY3vKHwYv3bVaMkGKfy4EPY67z\",\n \"bala", +"nce\" : 29646441691\n}, \n{\n \"ETH_accoun", +"t\" : \"0x2b765dc7aacda21d31fb68e1370cc3a4", +"6f120772\",\n \"name\" : \"0x2b765dc7aacda", +"21d31\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 20000000\n}, \n{\n \"ETH_account\"", +" : \"0x9d0ceeb3781df72aaa4989aed813745af8", +"06fc17\",\n \"name\" : \"0x9d0ceeb3781df72", +"aaa\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 3999200000\n}, \n{\n \"ETH_account\"", +" : \"0x4b2ed0a0b04abf14bd073ad4ebe26c5e28", +"85f447\",\n \"name\" : \"0x4b2ed0a0b04abf1", +"4bd\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 4722000000\n}, \n{\n \"ETH_account\"", +" : \"0x1fa8478a796f31af17a3e5b1b3c9cd57ec", +"6559c6\",\n \"name\" : \"0x1fa8478a796f31a", +"f17\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1137096000\n}, \n{\n \"ETH_account\"", +" : \"0x6d04561b3cf56d7e6dad0f004dcab1428c", +"a74da8\",\n \"name\" : \"0x6d04561b3cf56d7", +"e6d\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 1000000\n}, \n{\n \"ETH_account\" : ", +"\"0x0a9072131ed84a91cd4f7ea542ce348334ee6", +"72a\",\n \"name\" : \"0x0a9072131ed84a91cd", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 200000000\n}, \n{\n \"ETH_account\" : \"", +"0x1640f2b1c0f23a906eb6a062307db772a5907b", +"b0\",\n \"name\" : \"0x1640f2b1c0f23a906e\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 110503964\n}, \n{\n \"ETH_account\" : \"0", +"x3c6d5a09836757e6933704f3506ca0ee6683fa7", +"3\",\n \"name\" : \"temp2\",\n \"publicKey", +"\" : \"SPH6dZHCBtcYbsSm7skJWGaY12m8o7T3nb8", +"aFDDw6L1ZyuEzp7znK\",\n \"balance\" : 152", +"56237200\n}, \n{\n \"ETH_account\" : \"0x55", +"5afb0650362fd16f16570e2255bcb533e4c00c\",", +"\n \"name\" : \"0x555afb0650362fd16f\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 51", +"8389734\n}, \n{\n \"ETH_account\" : \"0x695", +"ec6a91747678af5c380a69334e9f1ce72e62f\",\n", +" \"name\" : \"0x695ec6a91747678af5\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 696", +"111400\n}, \n{\n \"ETH_account\" : \"0xceb8", +"fc1935f75eedc40344fbb0bb1aa2b96720a6\",\n ", +" \"name\" : \"0xceb8fc1935f75eedc4\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1701", +"05481\n}, \n{\n \"ETH_account\" : \"0x50f5d", +"bbb5136504e1468cefc30e4dd48cc921f62\",\n ", +" \"name\" : \"0x50f5dbbb5136504e14\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 39177", +"4600\n}, \n{\n \"ETH_account\" : \"0x3327a0", +"ecd76f46574ea695fd0d6c2c0546d33074\",\n ", +" \"name\" : \"0x3327a0ecd76f46574e\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 386410", +"00000\n}, \n{\n \"ETH_account\" : \"0x21878", +"f4b5efae68196641c012505cffa60e42a21\",\n ", +" \"name\" : \"0x21878f4b5efae68196\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 51408", +"110100\n}, \n{\n \"ETH_account\" : \"0x6154", +"d6bbfdc497e2caadd3c58113b04eadd1334b\",\n ", +" \"name\" : \"0x6154d6bbfdc497e2ca\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 3290", +"000000\n}, \n{\n \"ETH_account\" : \"0x9c23", +"5db270c1ce199b8121cf8e99e549900b1645\",\n ", +" \"name\" : \"0x9c235db270c1ce199b\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2000", +"0000\n}, \n{\n \"ETH_account\" : \"0x626b1c", +"4bfa7e2b196e92b7bff2f51a25142ddfe4\",\n ", +" \"name\" : \"0x626b1c4bfa7e2b196e\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 114253", +"6000\n}, \n{\n \"ETH_account\" : \"0xbfe711", +"45104e13e2a0fea6c56448fe4993b16a66\",\n ", +" \"name\" : \"0xbfe71145104e13e2a0\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 171249", +"443\n}, \n{\n \"ETH_account\" : \"0x7e32480", +"cc12a3d0083a8dbdaa5b1865d43d68e6d\",\n ", +"\"name\" : \"0x7e32480cc12a3d0083\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 4389211", +"800\n}, \n{\n \"ETH_account\" : \"0xfa4939a", +"544c9df6da02e773c3e65d9f8ad914a02\",\n ", +"\"name\" : \"0xfa4939a544c9df6da0\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 6705042", +"24\n}, \n{\n \"ETH_account\" : \"0x96e12823", +"ac0ce53da8785d16e678abfd7092c967\",\n \"", +"name\" : \"0x96e12823ac0ce53da8\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 25000000", +"00\n}, \n{\n \"ETH_account\" : \"0xb7074f9b", +"b6366ad27491ca874c86fcd9aad5a986\",\n \"", +"name\" : \"0xb7074f9bb6366ad274\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 65783200", +"\n}, \n{\n \"ETH_account\" : \"0x7ebf6714ef", +"e9cf92767b30179c214586814ab754\",\n \"na", +"me\" : \"0x7ebf6714efe9cf9276\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 6955000000", +"\n}, \n{\n \"ETH_account\" : \"0x964a76ec6a", +"c221108186db490e549ec20ec7855f\",\n \"na", +"me\" : \"0x964a76ec6ac2211081\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 511630000\n", +"}, \n{\n \"ETH_account\" : \"0x96487757fec", +"06f3c6fed1fcd9805d16bb95a5625\",\n \"nam", +"e\" : \"0x96487757fec06f3c6f\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 15919743200", +"\n}, \n{\n \"ETH_account\" : \"0x513965fd3c", +"deba63eef4ba0c9b0ffd82cfd45744\",\n \"na", +"me\" : \"0x513965fd3cdeba63ee\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2480750280", +"0\n}, \n{\n \"ETH_account\" : \"0xa112bade1", +"81dcb71b1091d5e2ede651e362d2061\",\n \"n", +"ame\" : \"0xa112bade181dcb71b1\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 135000000", +"\n}, \n{\n \"ETH_account\" : \"0xb181b888ec", +"a8fa7919bc6e6e5dc56e979bd62427\",\n \"na", +"me\" : \"robertkmueller\",\n \"publicKey\" ", +": \"SPH6fMvMJc2f3LoSCzjuboPndTi9GCcLDgfb5", +"g5DVoPc9hUCHPkKg\",\n \"balance\" : 59783", +"666425\n}, \n{\n \"ETH_account\" : \"0x0a79", +"6062214cf4fc232dd8538a19035ac79a595c\",\n ", +" \"name\" : \"0x0a796062214cf4fc23\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 7652", +"0893\n}, \n{\n \"ETH_account\" : \"0x47d7c7", +"ca8eaf20b6ebc805bee039315d13e95dcb\",\n ", +" \"name\" : \"0x47d7c7ca8eaf20b6eb\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 200000", +"0000\n}, \n{\n \"ETH_account\" : \"0xe2d3eb", +"aa3a07fb4e46409f4e28bba0b5226463e2\",\n ", +" \"name\" : \"0xe2d3ebaa3a07fb4e46\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 173360", +"0000\n}, \n{\n \"ETH_account\" : \"0xe17054", +"9b3ae759f638b84f56574b322140f6d43e\",\n ", +" \"name\" : \"0xe170549b3ae759f638\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 195362", +"57400\n}, \n{\n \"ETH_account\" : \"0x14ee5", +"8d9cf39f879455941174f5715969288c63f\",\n ", +" \"name\" : \"0x14ee58d9cf39f87945\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 61783", +"51806\n}, \n{\n \"ETH_account\" : \"0x94f3a", +"ae56d514a944121301393cb1394f6599a93\",\n ", +" \"name\" : \"0x94f3aae56d514a9441\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 11065", +"85300\n}, \n{\n \"ETH_account\" : \"0x8337d", +"db93e3c767b07477837a08557ddb51215f2\",\n ", +" \"name\" : \"0x8337ddb93e3c767b07\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10601", +"53818\n}, \n{\n \"ETH_account\" : \"0xcbc0d", +"913a1edc6e70c4fa4d199ad06b76c941fee\",\n ", +" \"name\" : \"0xcbc0d913a1edc6e70c\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 35110", +"6700\n}, \n{\n \"ETH_account\" : \"0x8b6e7a", +"57f504d70d3b07613107144e4fec1b6a73\",\n ", +" \"name\" : \"0x8b6e7a57f504d70d3b\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 381433", +"1144\n}, \n{\n \"ETH_account\" : \"0xa25d86", +"a28c38a99d354fe446d0ae5f44b46705de\",\n ", +" \"name\" : \"0xa25d86a28c38a99d35\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 592610", +"0000\n}, \n{\n \"ETH_account\" : \"0xf8a1d9", +"f5a25638ec0646cbb52baa325c8d3763cb\",\n ", +" \"name\" : \"0xf8a1d9f5a25638ec06\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 964000", +"000\n}, \n{\n \"ETH_account\" : \"0x32e1854", +"edb582b4b206bfb6c14a238996a2179fe\",\n ", +"\"name\" : \"0x32e1854edb582b4b20\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 7235784", +"00\n}, \n{\n \"ETH_account\" : \"0x10f75edf", +"f56de3cba305427abce70fc60a4d8613\",\n \"", +"name\" : \"sphtxtaekim\",\n \"publicKey\" :", +" \"SPH8dWrXFQyaWCZmMrRHJxURxXGLTy9smPr9AA", +"JtAu3S716c6HTpG\",\n \"balance\" : 105927", +"80100\n}, \n{\n \"ETH_account\" : \"0x927e4", +"a022871524b016bfb82a9a7c6cbb7cc5edb\",\n ", +" \"name\" : \"0x927e4a022871524b01\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 83466", +"9283\n}, \n{\n \"ETH_account\" : \"0xa3f390", +"052bfc39f8a688a839b014a9552052fb7b\",\n ", +" \"name\" : \"0xa3f390052bfc39f8a6\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 883818", +"793\n}, \n{\n \"ETH_account\" : \"0xc94f2b5", +"857df7903dcfb0341f68225cb28e58925\",\n ", +"\"name\" : \"0xc94f2b5857df7903dc\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1000000", +"00\n}, \n{\n \"ETH_account\" : \"0x9e650ef1", +"3d0893a8729b3685285fbc918b4850c6\",\n \"", +"name\" : \"0x9e650ef13d0893a872\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 20530090", +"43\n}, \n{\n \"ETH_account\" : \"0xc558ad3d", +"61fe7006dd7014f785764dcaf8fd672a\",\n \"", +"name\" : \"0xc558ad3d61fe7006dd\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 493307\n}", +", \n{\n \"ETH_account\" : \"0x14555deb6e7e", +"7a382e84da207b22ad81614e0cab\",\n \"name", +"\" : \"0x14555deb6e7e7a382e\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 2651000000\n}", +", \n{\n \"ETH_account\" : \"0x9587469dba58", +"db3e36cfead339daf7dbe7e4dc1d\",\n \"name", +"\" : \"ppc1300\",\n \"publicKey\" : \"SPH4yM", +"qcAjViux4jxfSYc3tokY2LYCxNcSAVj8gwsTPnnJ", +"RuS4x5C\",\n \"balance\" : 1982000000\n}, ", +"\n{\n \"ETH_account\" : \"0xdaf61606dd4210", +"81b44b19edd9baadc1eb418c2b\",\n \"name\" ", +": \"0xdaf61606dd421081b4\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 180349218\n}, \n", +"{\n \"ETH_account\" : \"0x434e116b7682469", +"5aa08cfa8009d4cb441112e34\",\n \"name\" :", +" \"0x434e116b76824695aa\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1910867590\n}, \n", +"{\n \"ETH_account\" : \"0x6f7511c34ba574d", +"c7d3107e7e03dfe32eb6d375f\",\n \"name\" :", +" \"0x6f7511c34ba574dc7d\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 304300\n}, \n{\n ", +" \"ETH_account\" : \"0x1e1a108b9108e5ff669", +"2053b175095c726682892\",\n \"name\" : \"0x", +"1e1a108b9108e5ff66\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 660074441\n}, \n{\n ", +" \"ETH_account\" : \"0x40c43f3f758bbbdecee6", +"57c7cbfb8b575d113f64\",\n \"name\" : \"0x4", +"0c43f3f758bbbdece\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 100000000\n}, \n{\n ", +"\"ETH_account\" : \"0x8d84790fd8aafd5c7fc5c", +"296283dc1de7b59db3b\",\n \"name\" : \"0x8d", +"84790fd8aafd5c7f\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 8000925618\n}, \n{\n ", +"\"ETH_account\" : \"0x2859b2ad5cb65636976e9", +"a3b3a4f2906372f00f2\",\n \"name\" : \"fren", +"chmedium\",\n \"publicKey\" : \"SPH8iF1wco", +"2AH8MBJtsD15pDJTvDWCi2CAZPyaVHMZpqAnSeZ6", +"vEo\",\n \"balance\" : 4991996700\n}, \n{\n ", +" \"ETH_account\" : \"0x1da1c7f10f2baffdbc", +"237c63fc9bad9690ceb818\",\n \"name\" : \"f", +"loridagator\",\n \"publicKey\" : \"SPH8gBZ", +"8QBp2N25hNdjjg1PeQae9TNePDBPUVABzYc32pxk", +"C2zAoW\",\n \"balance\" : 12910794300\n}, ", +"\n{\n \"ETH_account\" : \"0x4336c450ab5e50", +"a95d6b896ec56372afef8444cf\",\n \"name\" ", +": \"coupersphtx\",\n \"publicKey\" : \"SPH6", +"BL5Wu8FVnJ8ioS8VC9DsFLQzcQBpKWdwfWZbWZGg", +"UFk2SR15x\",\n \"balance\" : 2095128100\n}", +", \n{\n \"ETH_account\" : \"0xc5a8603726ee", +"da2ab55987bf6ca6aff4c9a2eac6\",\n \"name", +"\" : \"lucsreis\",\n \"publicKey\" : \"SPH7e", +"nfvxYeuPzeyhsRFrHpU8nE22y5YqhapNLLwzR43Z", +"q7u8Fv3p\",\n \"balance\" : 63000000000\n}", +", \n{\n \"ETH_account\" : \"0x9dfe28104510", +"d76340c964cdd3465b2ca08d8acc\",\n \"name", +"\" : \"0x9dfe28104510d76340\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 9000000000\n}", +", \n{\n \"ETH_account\" : \"0xcc6a8b56fc6b", +"372fe2d9c1901d0c216ff0add97b\",\n \"name", +"\" : \"0xcc6a8b56fc6b372fe2\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 274000000\n},", +" \n{\n \"ETH_account\" : \"0x79d16bde907fa", +"4b434f842ec57dd8756ab8fb0f7\",\n \"name\"", +" : \"0x79d16bde907fa4b434\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1087336100\n},", +" \n{\n \"ETH_account\" : \"0x923f118215aea", +"98a510caffc53c5a197de5f4b93\",\n \"name\"", +" : \"0x923f118215aea98a51\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 41008028616\n}", +", \n{\n \"ETH_account\" : \"0x0f8b8801a738", +"ba366b1703c35057c0fa6bcef5dd\",\n \"name", +"\" : \"0x0f8b8801a738ba366b\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 2515143100\n}", +", \n{\n \"ETH_account\" : \"0x657c9cb3f739", +"5ef1a9790b82fa56041f49c38c34\",\n \"name", +"\" : \"0x657c9cb3f7395ef1a9\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 507243483\n},", +" \n{\n \"ETH_account\" : \"0x2d24ce19d2007", +"1f61346ebd06f8ad56698195100\",\n \"name\"", +" : \"0x2d24ce19d20071f613\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 312234533\n}, ", +"\n{\n \"ETH_account\" : \"0xf7c8850c080d7d", +"86e12207128f54f48d6b4c26f0\",\n \"name\" ", +": \"0xf7c8850c080d7d86e1\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1000000\n}, \n{\n", +" \"ETH_account\" : \"0x1b74fac4e0a0858c2", +"07160c18b72947735ef5a01\",\n \"name\" : \"", +"0x1b74fac4e0a0858c20\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 995548200\n}, \n{\n ", +" \"ETH_account\" : \"0x2cc60c798b62e6e6a8", +"86fdae0ae4da8d0dc0b211\",\n \"name\" : \"0", +"x2cc60c798b62e6e6a8\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 2800000000000\n}, \n", +"{\n \"ETH_account\" : \"0x502a9d4ed201d31", +"c5fc153e72b58b8ab129fdde0\",\n \"name\" :", +" \"0x502a9d4ed201d31c5f\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1502970900\n}, \n", +"{\n \"ETH_account\" : \"0x2af43cc99701b40", +"1a5bf64e1544627e59d13507a\",\n \"name\" :", +" \"0x2af43cc99701b401a5\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 1611568720\n}, \n", +"{\n \"ETH_account\" : \"0xcd0ca4b9bd3ca80", +"01341fa06489a994e9c0a7a9b\",\n \"name\" :", +" \"0xcd0ca4b9bd3ca80013\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 4690000\n}, \n{\n ", +" \"ETH_account\" : \"0x053a442cdcdfed6913", +"f46f7338232ea0ee9c1f0f\",\n \"name\" : \"m", +"ahdi\",\n \"publicKey\" : \"SPH8LhWrLySAKe", +"s2xK756K5p59cZNnfGkbhAxe9HwAZmY7hCUZ9kY\"", +",\n \"balance\" : 5696290000\n}, \n{\n \"", +"ETH_account\" : \"0x8904899285aa3ddbbce52f", +"28e7bd26cc706acb0d\",\n \"name\" : \"0x890", +"4899285aa3ddbbc\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 125092813700\n}, \n{\n ", +" \"ETH_account\" : \"0x8b9310e47cd2d4aad777", +"35a3218d9420cb152709\",\n \"name\" : \"0x8", +"b9310e47cd2d4aad7\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 90000000\n}, \n{\n \"", +"ETH_account\" : \"0x88b5599d5fc1bb248b9008", +"740a97e2e4d673edb6\",\n \"name\" : \"0x88b", +"5599d5fc1bb248b\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 3337034400\n}, \n{\n \"", +"ETH_account\" : \"0x1fcd434c75e755820f8c22", +"db8d672ded9393edb9\",\n \"name\" : \"0x1fc", +"d434c75e755820f\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 6853044400\n}, \n{\n \"", +"ETH_account\" : \"0x6d26d2b84cb2c7d8866ff6", +"94efc41ef1ed4c242a\",\n \"name\" : \"0x6d2", +"6d2b84cb2c7d886\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 100432100\n}, \n{\n \"E", +"TH_account\" : \"0xe73d3822c3bfbab845df0b0", +"c465db7a879255397\",\n \"name\" : \"0xe73d", +"3822c3bfbab845\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 515288000\n}, \n{\n \"ET", +"H_account\" : \"0x1a8d2c7468a92cdb0fbab3d0", +"4e8f628cc4743c45\",\n \"name\" : \"0x1a8d2", +"c7468a92cdb0f\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 13609900000\n}, \n{\n \"E", +"TH_account\" : \"0x26f9fecdb8cd8bd7d759f37", +"70361dcaf44012c2e\",\n \"name\" : \"0x26f9", +"fecdb8cd8bd7d7\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 51739000000\n}, \n{\n \"", +"ETH_account\" : \"0x7210954c9561cf4b47c869", +"dc4cd242021d103c60\",\n \"name\" : \"0x721", +"0954c9561cf4b47\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 779640628\n}, \n{\n \"E", +"TH_account\" : \"0x8533a0bd9310eb63e7cc8e1", +"116c18a3d67b1976a\",\n \"name\" : \"0x8533", +"a0bd9310eb63e7\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 119992000000\n}, \n{\n ", +"\"ETH_account\" : \"0xb064689a51bcd978043b4", +"0d7bae3320340af86c7\",\n \"name\" : \"0xb0", +"64689a51bcd97804\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 771196886\n}, \n{\n \"", +"ETH_account\" : \"0x9ca914e0adec2bcfe15857", +"debb4258372c77951e\",\n \"name\" : \"0x9ca", +"914e0adec2bcfe1\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 2025255000\n}, \n{\n \"", +"ETH_account\" : \"0xc6b09b2ca85a2b4a2df69b", +"24f5d145b9719df2b4\",\n \"name\" : \"murph", +"y\",\n \"publicKey\" : \"SPH6k9f6V2siPpyRF", +"yZ3QuYHaD5Tb2u8CpZDXJv5SGwCZP7GnKngs\",\n ", +" \"balance\" : 684343700\n}, \n{\n \"ETH_", +"account\" : \"0x5abdda609174222772b8b32158", +"05ec183ab28f75\",\n \"name\" : \"0x5abdda6", +"09174222772\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 2600000000\n}, \n{\n \"ETH_", +"account\" : \"0x3e9441a8ac2dfe5571fb734663", +"53fdadcf34573d\",\n \"name\" : \"gypsespth", +"x\",\n \"publicKey\" : \"SPH8FMVEjtu1vnzQA", +"JptHGyXWiypKTcdzyEWDynRL3LeBj8or4d2d\",\n ", +" \"balance\" : 5740000000\n}, \n{\n \"ETH", +"_account\" : \"0xba5c37b8b9be286e85578fa9f", +"b23fd7139ecb7d9\",\n \"name\" : \"0xba5c37", +"b8b9be286e85\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 401475600\n}, \n{\n \"ETH_", +"account\" : \"0x1c99fa613b144d27b7be91cf16", +"2749419985e46a\",\n \"name\" : \"andrejsph", +"tx\",\n \"publicKey\" : \"SPH8aqSLPDvaPTEA", +"HL7zkaRNdhpCqzMxGgGJBjzV8AjLMTgmN4auN\",\n", +" \"balance\" : 10000000000\n}, \n{\n \"E", +"TH_account\" : \"0xb9117060181256c1c965779", +"bed97e6af0762740c\",\n \"name\" : \"0xb911", +"7060181256c1c9\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 3480000000\n}, \n{\n \"E", +"TH_account\" : \"0x00ee7474fd7bc64e47c6ec5", +"9075b112a32283b57\",\n \"name\" : \"timsop", +"hiatx\",\n \"publicKey\" : \"SPH5KssZJADMj", +"TBCcY5XfYjsdDSMXYf5Gc9Pq7qDD6LXCc5EsbkAM", +"\",\n \"balance\" : 10008000000\n}, \n{\n ", +" \"ETH_account\" : \"0x453f96121a341aac7c65", +"8283a0c494b77a94a2ce\",\n \"name\" : \"0x4", +"53f96121a341aac7c\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 3205285500\n}, \n{\n ", +" \"ETH_account\" : \"0xdbfbf087a3c83c5d3b31", +"29a3ffc728e030cfdb58\",\n \"name\" : \"0xd", +"bfbf087a3c83c5d3b\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 531460000\n}, \n{\n ", +"\"ETH_account\" : \"0x892b7ea893e3cd91e60da", +"20874b8a65f26e58a99\",\n \"name\" : \"0x89", +"2b7ea893e3cd91e6\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 10000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x37db745386fcf84105fd", +"ec8df12ae4333cfde214\",\n \"name\" : \"0x3", +"7db745386fcf84105\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 2737668300\n}, \n{\n ", +" \"ETH_account\" : \"0x1a80ea8c0c02ca571460", +"2775e43f82e2b81360f3\",\n \"name\" : \"0x1", +"a80ea8c0c02ca5714\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 3000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x182057ca8e1f0a5293c1", +"be38598e10bb09ba8e05\",\n \"name\" : \"0x1", +"82057ca8e1f0a5293\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 390801078\n}, \n{\n ", +"\"ETH_account\" : \"0xf89d26febcbf81e5ff278", +"6630fe0757c70cf1dec\",\n \"name\" : \"madi", +"sonvecchio\",\n \"publicKey\" : \"SPH8h22B", +"xjR9UNKHo44YMf85o4gTiiW6JSxMLqPgh2aXiWho", +"e89ok\",\n \"balance\" : 17555000000\n}, \n", +"{\n \"ETH_account\" : \"0xdc3787c38d0f292", +"d21a17b50e0a26718783ebe17\",\n \"name\" :", +" \"0xdc3787c38d0f292d21\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 4108000000\n}, \n", +"{\n \"ETH_account\" : \"0x659459ca3609e1a", +"313c0626771f85e6ae8d66571\",\n \"name\" :", +" \"0x659459ca3609e1a313\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 100002548351\n},", +" \n{\n \"ETH_account\" : \"0x7970067cf8342", +"6450dd1c7e2b414c41dd07895fc\",\n \"name\"", +" : \"0x7970067cf83426450d\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 5515000000\n},", +" \n{\n \"ETH_account\" : \"0x9d010c3da9412", +"2a42e86dd29cf28242da505c82b\",\n \"name\"", +" : \"antoineyoung\",\n \"publicKey\" : \"SP", +"H7GhEb5fmXv8Gm1K1H4Di1v8RRZsAByPLsaPyB1S", +"z4MDWnx6gNR\",\n \"balance\" : 1109476804", +"\n}, \n{\n \"ETH_account\" : \"0xc8b6a0bc4a", +"6740ad2ee189e8352309e9901211bf\",\n \"na", +"me\" : \"massomsphtx\",\n \"publicKey\" : \"", +"SPH6fak4PcRx9brte1rtfJHzXuPwvCRS8Rou13Yu", +"K1tcEqnE6Kdpe\",\n \"balance\" : 22400000", +"00\n}, \n{\n \"ETH_account\" : \"0x9eb3edfb", +"5a5ec79ee3a8a384103495b68f3cb10b\",\n \"", +"name\" : \"0x9eb3edfb5a5ec79ee3\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10434810", +"8\n}, \n{\n \"ETH_account\" : \"0x958b4555d", +"1373614c0389501a769e378444b1c80\",\n \"n", +"ame\" : \"0x958b4555d1373614c0\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 151950000", +"00\n}, \n{\n \"ETH_account\" : \"0x3efcc16b", +"b81aa6448cdbb2009c733208f5ea054a\",\n \"", +"name\" : \"0x3efcc16bb81aa6448c\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 55000000", +"\n}, \n{\n \"ETH_account\" : \"0x576d461af2", +"b661d2366a5aa012f386e823029911\",\n \"na", +"me\" : \"0x576d461af2b661d236\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1193170300", +"\n}, \n{\n \"ETH_account\" : \"0x81c1cfc271", +"b0b092991b0cea016dc3ee82c4c1eb\",\n \"na", +"me\" : \"0x81c1cfc271b0b09299\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 371923500\n", +"}, \n{\n \"ETH_account\" : \"0xc1f031e96cb", +"14d7a12987c28696e09d1396378c0\",\n \"nam", +"e\" : \"0xc1f031e96cb14d7a12\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1960000000\n", +"}, \n{\n \"ETH_account\" : \"0x5dec5a49799", +"62363962ddac5788a881c854048cf\",\n \"nam", +"e\" : \"0x5dec5a497996236396\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 6079000000\n", +"}, \n{\n \"ETH_account\" : \"0x173d13f39f7", +"0bb469995e25e2d1d81c7393e312f\",\n \"nam", +"e\" : \"0x173d13f39f70bb4699\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 48840000000", +"\n}, \n{\n \"ETH_account\" : \"0xc47acee9fc", +"96f6b3645dc372f78c5f1983fa88e6\",\n \"na", +"me\" : \"0xc47acee9fc96f6b364\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 6062708100", +"\n}, \n{\n \"ETH_account\" : \"0xe6b0330562", +"735028e33bebce491bcacf10d2fab0\",\n \"na", +"me\" : \"sophiatxmn\",\n \"publicKey\" : \"S", +"PH7WgRgn83jQxfTCfziNEscM5RALtwB8dGuZWVwN", +"8Z3SzeAQ4iGz\",\n \"balance\" : 149299800", +"0\n}, \n{\n \"ETH_account\" : \"0x6c2322f6f", +"da5ecd4e365ffa48ace07df5ec4fa51\",\n \"n", +"ame\" : \"0x6c2322f6fda5ecd4e3\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 232500000", +"00\n}, \n{\n \"ETH_account\" : \"0xb6fc48cc", +"fa9c406d5675f7153a085864f643f7d3\",\n \"", +"name\" : \"0xb6fc48ccfa9c406d56\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 22041500", +"0\n}, \n{\n \"ETH_account\" : \"0xbf1e63b3b", +"fb2fd80be3a2c74cd82ec3d114ed05c\",\n \"n", +"ame\" : \"sebbyssphtx\",\n \"publicKey\" : ", +"\"SPH88zh5h5i6zF1BmimJ3NiPDLvNqBT6dcN31XZ", +"QppgvwsoVbJUfR\",\n \"balance\" : 6998157", +"654\n}, \n{\n \"ETH_account\" : \"0xee4c39d", +"0939576b3d8cfc9aac6afda05d95f5ac9\",\n ", +"\"name\" : \"0xee4c39d0939576b3d8\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 6442935", +"49\n}, \n{\n \"ETH_account\" : \"0xacbe443f", +"e93a5c563eb0856f719da0ffe39d8b36\",\n \"", +"name\" : \"0xacbe443fe93a5c563e\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 50000000", +"\n}, \n{\n \"ETH_account\" : \"0x7bf1856278", +"885123ff0a59a53c4d21092248c48b\",\n \"na", +"me\" : \"paccvet\",\n \"publicKey\" : \"SPH8", +"LL9kNREhUAR3uaBGiNrArCPsz7Vc4YEk8d3sSxuK", +"3deXqxCKq\",\n \"balance\" : 1968214000\n}", +", \n{\n \"ETH_account\" : \"0x08cd39c4a041", +"56a658124c03f5ca15932117adea\",\n \"name", +"\" : \"0x08cd39c4a04156a658\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 16540831400\n", +"}, \n{\n \"ETH_account\" : \"0x2cf20736911", +"deaaa1d78acb483b2ab382eb59bc6\",\n \"nam", +"e\" : \"0x2cf20736911deaaa1d\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1709603100\n", +"}, \n{\n \"ETH_account\" : \"0x3c8b4d25867", +"32cd4e7efcd3c68e66ebb3534ccc2\",\n \"nam", +"e\" : \"0x3c8b4d2586732cd4e7\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 962660138\n}", +", \n{\n \"ETH_account\" : \"0x8fe4f03fdc1d", +"88f147a540278113628e77295e7c\",\n \"name", +"\" : \"0x8fe4f03fdc1d88f147\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1000000\n}, \n", +"{\n \"ETH_account\" : \"0x82f9bf1832d9c8b", +"2e4fc46368f378c93edffb0ea\",\n \"name\" :", +" \"0x82f9bf1832d9c8b2e4\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 10685828655\n}, ", +"\n{\n \"ETH_account\" : \"0x76106a15c15b7d", +"568639968355d6166769536dfe\",\n \"name\" ", +": \"0x76106a15c15b7d5686\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 68870\n}, \n{\n ", +" \"ETH_account\" : \"0x3b4029f0c33f1b4ea7d", +"51a390bf9f1b099d3c804\",\n \"name\" : \"0x", +"3b4029f0c33f1b4ea7\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 12575074600\n}, \n{\n ", +" \"ETH_account\" : \"0x874eee42b1d51c5518", +"6e2f06b2a755132c8c03fb\",\n \"name\" : \"0", +"x874eee42b1d51c5518\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 8053763100\n}, \n{\n ", +" \"ETH_account\" : \"0x11b04f31785c117159", +"33379ac1eba812766d6677\",\n \"name\" : \"0", +"x11b04f31785c117159\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 100762000000\n}, \n{", +"\n \"ETH_account\" : \"0x3fc36162edce83e5", +"519c509683e1c111f0b6cea6\",\n \"name\" : ", +"\"0x3fc36162edce83e551\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 2117227000\n}, \n{", +"\n \"ETH_account\" : \"0x9dcd72b09fc70786", +"6310c38d311624a1b3bc6faa\",\n \"name\" : ", +"\"0x9dcd72b09fc7078663\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 127600000\n}, \n{\n", +" \"ETH_account\" : \"0xfa8f58fc035444182", +"850464d731229a8af0b2c1e\",\n \"name\" : \"", +"0xfa8f58fc0354441828\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 128244000\n}, \n{\n ", +" \"ETH_account\" : \"0xd030b4235ca33ccfaf", +"2bdd217f72e74d2c0cbc95\",\n \"name\" : \"0", +"xd030b4235ca33ccfaf\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 40304800000\n}, \n{\n", +" \"ETH_account\" : \"0x45a67a68661b99435", +"049dd33e72b629270db04ca\",\n \"name\" : \"", +"0x45a67a68661b994350\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 1797560000\n}, \n{\n", +" \"ETH_account\" : \"0x977a776613a45ac26", +"16b98387a1fb389465571cb\",\n \"name\" : \"", +"0x977a776613a45ac261\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 726736500\n}, \n{\n ", +" \"ETH_account\" : \"0x9cc860e73d113f5985", +"840fc0b077aca55e306425\",\n \"name\" : \"0", +"x9cc860e73d113f5985\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 3581576682\n}, \n{\n ", +" \"ETH_account\" : \"0xc4acafd006c93e8a75", +"d96c1364541d4160ce78c9\",\n \"name\" : \"0", +"xc4acafd006c93e8a75\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 82209700\n}, \n{\n ", +" \"ETH_account\" : \"0xbb0808311c964d97563c", +"7bf2fe299b15b39ede3a\",\n \"name\" : \"oni", +"onoreo\",\n \"publicKey\" : \"SPH6h4je13Q3", +"3oxwt6nJH68qWsfynSAMRQwqyzYHNgzDKweWZ49d", +"C\",\n \"balance\" : 184589635000\n}, \n{\n ", +" \"ETH_account\" : \"0x4281fca95bc3aff813", +"5265c75e643ee7fde5392a\",\n \"name\" : \"0", +"x4281fca95bc3aff813\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 2000000\n}, \n{\n ", +"\"ETH_account\" : \"0x25b5208068c77e8350358", +"604ebb2dbf7ed33bc63\",\n \"name\" : \"0x25", +"b5208068c77e8350\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 108408250\n}, \n{\n \"", +"ETH_account\" : \"0x4715186ed61111f188eeab", +"a9c571ad202ba3e152\",\n \"name\" : \"0x471", +"5186ed61111f188\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 189399600\n}, \n{\n \"E", +"TH_account\" : \"0x632e9121f5196bd37f1623f", +"6cff56ea9156cc7ec\",\n \"name\" : \"0x632e", +"9121f5196bd37f\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 8000000000\n}, \n{\n \"E", +"TH_account\" : \"0x455a131831f4685086d75f0", +"7b3edeb923e33412e\",\n \"name\" : \"0x455a", +"131831f4685086\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 202382800\n}, \n{\n \"ET", +"H_account\" : \"0xb8170134c411e55a8ff3c058", +"e284ff0ec897ca19\",\n \"name\" : \"0xb8170", +"134c411e55a8f\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 15000000000\n}, \n{\n \"E", +"TH_account\" : \"0xa6def0dd2d98cf06e66e656", +"cf6cbfa1ffe6b5d89\",\n \"name\" : \"0xa6de", +"f0dd2d98cf06e6\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 5302912065\n}, \n{\n \"E", +"TH_account\" : \"0x685d3393de575aa97b16330", +"ecff1f4ab6010a7ca\",\n \"name\" : \"0x685d", +"3393de575aa97b\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 2477507357\n}, \n{\n \"E", +"TH_account\" : \"0x5efc5f3d168162205f9a172", +"12a5ccad3c909fe15\",\n \"name\" : \"0x5efc", +"5f3d168162205f\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 65674\n}, \n{\n \"ETH_ac", +"count\" : \"0xf45a1e6b56cccdc56ec182dc2530", +"2162673fc462\",\n \"name\" : \"0xf45a1e6b5", +"6cccdc56e\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 108860000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x593d8abca3ca03d1ae21ba3e95651", +"1af2f26bfcb\",\n \"name\" : \"0x593d8abca3", +"ca03d1ae\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 1621639800\n}, \n{\n \"ETH_acc", +"ount\" : \"0x97d5272fe2ef5e1d72e54a569072b", +"87cdf8d6b13\",\n \"name\" : \"skylerelon\",", +"\n \"publicKey\" : \"SPH6WkGRH9HAH1qzLdbs", +"JvZr6k3Nxw7P8MgN2fovS4MLA6Z2FRfAe\",\n ", +"\"balance\" : 673254100\n}, \n{\n \"ETH_acc", +"ount\" : \"0xda758b01b4fddd54924f6cdc2333c", +"ff6baadec9d\",\n \"name\" : \"0xda758b01b4", +"fddd5492\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 2522426021\n}, \n{\n \"ETH_acc", +"ount\" : \"0xe11eb0bc4b34dea57dcb0b74019ba", +"05b28b6f91c\",\n \"name\" : \"0xe11eb0bc4b", +"34dea57d\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 10260000000\n}, \n{\n \"ETH_ac", +"count\" : \"0x3f44d68161a46e464aa6393e6126", +"1b75afdf819a\",\n \"name\" : \"sophiakhiar", +"azoe\",\n \"publicKey\" : \"SPH6jHVn9zXjUG", +"4yM1MG73v8j5oWE9RwwqShq8KDRnun5ebYTYVoc\"", +",\n \"balance\" : 10000000000\n}, \n{\n ", +"\"ETH_account\" : \"0x95dd10fdbce6d5a00aaf9", +"b5ecdfc767fc1e523c0\",\n \"name\" : \"0x95", +"dd10fdbce6d5a00a\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 42588000000\n}, \n{\n ", +" \"ETH_account\" : \"0xd91b2cede1d2f580715e", +"aaeb95d1397dcce1d9a3\",\n \"name\" : \"0xd", +"91b2cede1d2f58071\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 151840000\n}, \n{\n ", +"\"ETH_account\" : \"0xb958ddbf40f29502bd89d", +"1497e7c7ac56bf0f89f\",\n \"name\" : \"0xb9", +"58ddbf40f29502bd\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 868000000\n}, \n{\n \"", +"ETH_account\" : \"0x8b2a81d7d997468da4114f", +"a9e82c3e4353d1da5e\",\n \"name\" : \"0x8b2", +"a81d7d997468da4\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 853000000\n}, \n{\n \"E", +"TH_account\" : \"0xb2736a404222a7b6c242f1e", +"0e1d2aa2f2d6705d4\",\n \"name\" : \"0xb273", +"6a404222a7b6c2\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 1053700000\n}, \n{\n \"E", +"TH_account\" : \"0xac243a4b68488be23d1bce2", +"0683911119a7c83fe\",\n \"name\" : \"0xac24", +"3a4b68488be23d\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 191960900\n}, \n{\n \"ET", +"H_account\" : \"0x80962e76fd16506100f91984", +"e4db617a0d172fb1\",\n \"name\" : \"0x80962", +"e76fd16506100\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 336000000\n}, \n{\n \"ETH", +"_account\" : \"0xdc50f486d740a8b6efc209428", +"90b7d090113740a\",\n \"name\" : \"0xdc50f4", +"86d740a8b6ef\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 3255161885\n}, \n{\n \"ETH", +"_account\" : \"0xbecd07ae54bf7c026558b1327", +"268e3e5efb2659b\",\n \"name\" : \"0xbecd07", +"ae54bf7c0265\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1999900\n}, \n{\n \"ETH_ac", +"count\" : \"0x1a3d87320166e885d4f3d911fa82", +"0372ba279c75\",\n \"name\" : \"novak\",\n ", +" \"publicKey\" : \"SPH74Zha6G8U327aXgmR8Etj", +"guuaAM4TVHr95hgHTh7sZv54qebM9\",\n \"bal", +"ance\" : 116363636\n}, \n{\n \"ETH_account", +"\" : \"0x23c9c6a968024bc73a39155f45491c3ef", +"fe6efd8\",\n \"name\" : \"0x23c9c6a968024b", +"c73a\",\n \"publicKey\" : \"SPH11111111111", +"11111111111111111111114T1Anm\",\n \"bala", +"nce\" : 500000000\n}, \n{\n \"ETH_account\"", +" : \"0x091ae3faa903e88f30b398f21c99a78a3f", +"87642f\",\n \"name\" : \"0x091ae3faa903e88", +"f30\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 625794714\n}, \n{\n \"ETH_account\" ", +": \"0x3d62cea88052cc6f0cb970ebc686da2c882", +"d932f\",\n \"name\" : \"0x3d62cea88052cc6f", +"0c\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 137000000\n}, \n{\n \"ETH_account\" :", +" \"0x6e9170e6a5aca940182eae871bf74511d0f2", +"98cb\",\n \"name\" : \"jonathansophia\",\n ", +" \"publicKey\" : \"SPH6jM7ma89gLP8JXLxVfLp", +"6p3Gwi3iRS5bJ58YvdoAYYkSQijM7y\",\n \"ba", +"lance\" : 5326660000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x4a645804b92372297fd064c9067d967", +"ea3ea5a8a\",\n \"name\" : \"0x4a645804b923", +"72297f\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 9399809298\n}, \n{\n \"ETH_accou", +"nt\" : \"0x203972c8979f6d1f9cf6d1a763cbac4", +"bcc581760\",\n \"name\" : \"0x203972c8979f", +"6d1f9c\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 613300000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x82d3f4ff32d844d46c5f143598918415", +"81d7fbae\",\n \"name\" : \"0x82d3f4ff32d84", +"4d46c\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 13239668000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x7d680ecf2d9906a96f068542e17ad95", +"9450c36f3\",\n \"name\" : \"0x7d680ecf2d99", +"06a96f\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 3128718500\n}, \n{\n \"ETH_accou", +"nt\" : \"0xe88b4534674816371d779595a66699f", +"a88d9e83e\",\n \"name\" : \"0xe88b45346748", +"16371d\",\n \"publicKey\" : \"SPH111111111", +"1111111111111111111111114T1Anm\",\n \"ba", +"lance\" : 32732221900\n}, \n{\n \"ETH_acco", +"unt\" : \"0x0a64eccec268b86df4d0eaf8db67db", +"0e5f581e5c\",\n \"name\" : \"0x0a64eccec26", +"8b86df4\",\n \"publicKey\" : \"SPH11111111", +"11111111111111111111111114T1Anm\",\n \"b", +"alance\" : 53998682630\n}, \n{\n \"ETH_acc", +"ount\" : \"0xaaed6a05aee4bac313c7aee300ff3", +"22c54104bf8\",\n \"name\" : \"0xaaed6a05ae", +"e4bac313\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 4222695600\n}, \n{\n \"ETH_acc", +"ount\" : \"0x20a49096f35b735c3dca787b9b71e", +"9eec9b2e04b\",\n \"name\" : \"tomjones\",\n ", +" \"publicKey\" : \"SPH5M2FgK64Tu2mfpnkyzQ", +"o4cjTqSzrj2y4oK7KC6bThwdnebgmdA\",\n \"b", +"alance\" : 62131414500\n}, \n{\n \"ETH_acc", +"ount\" : \"0x1e418ba35e39716d2e3570c4f9b9f", +"2a12c9f2673\",\n \"name\" : \"0x1e418ba35e", +"39716d2e\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 25104284700\n}, \n{\n \"ETH_ac", +"count\" : \"0x88ab31ab3dc11e9b0f911dc97243", +"a818187eb483\",\n \"name\" : \"0x88ab31ab3", +"dc11e9b0f\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 30780140000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xcf57b56663c5cbec38a184e287a", +"59815acc27d24\",\n \"name\" : \"0xcf57b566", +"63c5cbec38\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 10000000000\n}, \n{\n \"ETH_", +"account\" : \"0xc028e77c5a074a8193540ee583", +"5d9c6faaced4a0\",\n \"name\" : \"0xc028e77", +"c5a074a8193\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 10154000000\n}, \n{\n \"ETH", +"_account\" : \"0xa236e46cc3834a89458809ee1", +"b603c3358b9257c\",\n \"name\" : \"corpusde", +"licti\",\n \"publicKey\" : \"SPH66eRrockt5", +"MqfkKF6tHQXAuQUAH89BfWmKmBmmYazWUCmJtMct", +"\",\n \"balance\" : 2839000000\n}, \n{\n ", +"\"ETH_account\" : \"0xd825e02d4ab2db51bd5f4", +"7172420c560c27b1e58\",\n \"name\" : \"0xd8", +"25e02d4ab2db51bd\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 3233282992\n}, \n{\n ", +"\"ETH_account\" : \"0x37eeaef04bd8d90ad000b", +"7ad3907727c789628b5\",\n \"name\" : \"0x37", +"eeaef04bd8d90ad0\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 176413400\n}, \n{\n \"", +"ETH_account\" : \"0x27ca0fc4822445009dce04", +"a2a94e29bd1df40d27\",\n \"name\" : \"0x27c", +"a0fc4822445009d\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1420205994\n}, \n{\n \"", +"ETH_account\" : \"0xc1d3a8c8422c1694e7abe6", +"3d87afa16f3df49967\",\n \"name\" : \"aviza", +"r\",\n \"publicKey\" : \"SPH8fFgUSD3tGx3Mz", +"Yrm6Mmkh4nSfwbLEBAPTpRuYNSrQdkeECyWA\",\n ", +" \"balance\" : 513546737\n}, \n{\n \"ETH_", +"account\" : \"0x648262cd9620adb89ef46f0e27", +"8534cf4321eea0\",\n \"name\" : \"0x648262c", +"d9620adb89e\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 93713000000\n}, \n{\n \"ETH", +"_account\" : \"0xbb55df2b278bdcb7f985c519f", +"1aaf044fc315ae4\",\n \"name\" : \"0xbb55df", +"2b278bdcb7f9\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 24000000000\n}, \n{\n \"ET", +"H_account\" : \"0x674cc6e8aa33074e4643cd83", +"b529b56f59531f26\",\n \"name\" : \"0x674cc", +"6e8aa33074e46\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 23428000000\n}, \n{\n \"E", +"TH_account\" : \"0x4d17c234c8d6a07b83c550e", +"8e9bf13123fcf4ab6\",\n \"name\" : \"silver", +"lining\",\n \"publicKey\" : \"SPH6S24zPJGT", +"Ghhbii57PmxV4QuZdRYucyDh9jZE7n4wPMYodJgY", +"n\",\n \"balance\" : 25000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x0dbff5c319c23c70c1e", +"9f92415d4eeebfd24486a\",\n \"name\" : \"0x", +"0dbff5c319c23c70c1\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1300021\n}, \n{\n \"", +"ETH_account\" : \"0xdb4d3184107cf739c6fbb0", +"59d78a66004bce6bbb\",\n \"name\" : \"0xdb4", +"d3184107cf739c6\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 26797652200\n}, \n{\n ", +"\"ETH_account\" : \"0xf5392be471ad7225542de", +"e5c74d6be485e5f38c3\",\n \"name\" : \"0xf5", +"392be471ad722554\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 65000000\n}, \n{\n \"E", +"TH_account\" : \"0x6b9b32bf72893f8158f7e92", +"965233a5edfec60a6\",\n \"name\" : \"0x6b9b", +"32bf72893f8158\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 50000000\n}, \n{\n \"ETH", +"_account\" : \"0x8d452c1f4bae385b13933c83e", +"cff70d74229915f\",\n \"name\" : \"main\",\n ", +" \"publicKey\" : \"SPH6mXjwU7jmCJx2unF5VD", +"Hgg2LucJ5Pr2c8RwrXJUnYPD2GVqRnv\",\n \"b", +"alance\" : 970000000\n}, \n{\n \"ETH_accou", +"nt\" : \"0x2c797034d08b25df0d4529db68e5ec4", +"510f03ecf\",\n \"name\" : \"xandersphtxswa", +"p\",\n \"publicKey\" : \"SPH5oGoSuqkPX3iXV", +"d2r9aJdYnc2rKDrAZQBVsDrwNV8fLgTNZEYh\",\n ", +" \"balance\" : 21668000000\n}, \n{\n \"ET", +"H_account\" : \"0x03e89c3421e74e13ec6e7165", +"7d2cd519d9b46b8f\",\n \"name\" : \"0x03e89", +"c3421e74e13ec\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 39794222400\n}, \n{\n \"E", +"TH_account\" : \"0xd20a34dc6a0e0341d5ff730", +"3f85cae860cec1057\",\n \"name\" : \"0xd20a", +"34dc6a0e0341d5\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 7877000000\n}, \n{\n \"E", +"TH_account\" : \"0x630ca21c60ec6fbcd39febf", +"f96e4e1693df73e8f\",\n \"name\" : \"0x630c", +"a21c60ec6fbcd3\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 25005875847\n}, \n{\n \"", +"ETH_account\" : \"0x038c399cf6d9dece36ba33", +"1c5bb40416ad77ba6a\",\n \"name\" : \"0x038", +"c399cf6d9dece36\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 231640600\n}, \n{\n \"E", +"TH_account\" : \"0x144f1cf5fcfa410908bf2c1", +"3cb6937b5abe4ffbc\",\n \"name\" : \"0x144f", +"1cf5fcfa410908\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 46856000000\n}, \n{\n \"", +"ETH_account\" : \"0xe375b27886447f137855ce", +"c04e216ab246867cb3\",\n \"name\" : \"roy\",", +"\n \"publicKey\" : \"SPH7orUpjs5GPxpu2mNG", +"Lv2p25NPSDv4tYHF6SVgr3LHCZVzGePaC\",\n ", +"\"balance\" : 943000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0xbbc33ded48a88ab000a8af8f4bd8e", +"ab5ccd5f57e\",\n \"name\" : \"0xbbc33ded48", +"a88ab000\",\n \"publicKey\" : \"SPH1111111", +"111111111111111111111111114T1Anm\",\n \"", +"balance\" : 100\n}, \n{\n \"ETH_account\" :", +" \"0x5bc81f74b39da2bb2c520ecc067ee751fc11", +"cf83\",\n \"name\" : \"0x5bc81f74b39da2bb2", +"c\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 14056000000\n}, \n{\n \"ETH_account\" ", +": \"0xcba42faea3880a2317b10c4bffce1f2d698", +"e056d\",\n \"name\" : \"0xcba42faea3880a23", +"17\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 30456000000\n}, \n{\n \"ETH_account\"", +" : \"0xd3038ec3c4ee64aabeb8d5106f3d40371b", +"5cc3f4\",\n \"name\" : \"strophy\",\n \"pu", +"blicKey\" : \"SPH7ZoSrymtECcMH4reY5hjsM9ju", +"hkrHCNr5fc5HGPKXtN1a9KXbx\",\n \"balance", +"\" : 2965000000\n}, \n{\n \"ETH_account\" :", +" \"0x3dee4a4e076e8d82859d241db0baf46f112c", +"fa23\",\n \"name\" : \"0x3dee4a4e076e8d828", +"5\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 326665\n}, \n{\n \"ETH_account\" : \"0x", +"6258c32aa6ae524f4c46b5737e11c9ea3e9d2dc4", +"\",\n \"name\" : \"0x6258c32aa6ae524f4c\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"1363000000\n}, \n{\n \"ETH_account\" : \"0x", +"fb6582be6c5b113d6563ba831063752a7b214329", +"\",\n \"name\" : \"0xfb6582be6c5b113d65\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"11187000000\n}, \n{\n \"ETH_account\" : \"0", +"x44670a22aa90d806a3dea12badd363f2d0e7ee9", +"f\",\n \"name\" : \"0x44670a22aa90d806a3\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 500000000\n}, \n{\n \"ETH_account\" : \"0x", +"24674f924275be1e5f79ed94f7bcf5929295dea4", +"\",\n \"name\" : \"0x24674f924275be1e5f\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"488000000\n}, \n{\n \"ETH_account\" : \"0xf", +"9f4a2bf5d138c477ee6b8051a61a9767a88306a\"", +",\n \"name\" : \"herroyuyji\",\n \"public", +"Key\" : \"SPH8LcnsDxMJwu9xqMEZ7LVrHDtv6bym", +"9DfqiUCi5W812iDWmKpbJ\",\n \"balance\" : ", +"252227844900\n}, \n{\n \"ETH_account\" : \"", +"0xc2429c45c1a02b09a8d2ce8318e0ec81e7fa61", +"9c\",\n \"name\" : \"0xc2429c45c1a02b09a8\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 50200000000\n}, \n{\n \"ETH_account\" : ", +"\"0xbc6e11edfab3f4daa6731fb73fb8518868ec2", +"f7e\",\n \"name\" : \"0xbc6e11edfab3f4daa6", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 10000000000\n}, \n{\n \"ETH_account\" :", +" \"0x8f49f927b0f962f60ded491ad564ec72edc7", +"0c1e\",\n \"name\" : \"0x8f49f927b0f962f60", +"d\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 10000000000\n}, \n{\n \"ETH_account\" ", +": \"0x0ed64eb880b1688e2d0ecf33dbfaca030ca", +"2da6e\",\n \"name\" : \"baftales\",\n \"pu", +"blicKey\" : \"SPH6fap2JFvdiro9YzxwKmyTJ6Mj", +"FCzCRG5GfGzQXkhN2y5SRxuVD\",\n \"balance", +"\" : 13220548945\n}, \n{\n \"ETH_account\" ", +": \"0x710c4e4e22f846b2b2c53a22e20edceb125", +"13596\",\n \"name\" : \"0x710c4e4e22f846b2", +"b2\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 20000000\n}, \n{\n \"ETH_account\" : ", +"\"0x5151a3a27a91062d79aec65d097ab2e35a3b9", +"ebb\",\n \"name\" : \"0x5151a3a27a91062d79", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1770410139\n}, \n{\n \"ETH_account\" : ", +"\"0x57017d13c1e41ed9fceb7c4cc7beee4b06aa9", +"7a5\",\n \"name\" : \"0x57017d13c1e41ed9fc", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 1428939600\n}, \n{\n \"ETH_account\" : ", +"\"0x3bc1d39e90459d9862e832d19e08cfcb83d27", +"b35\",\n \"name\" : \"0x3bc1d39e90459d9862", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 10457000000\n}, \n{\n \"ETH_account\" :", +" \"0x00a6ecf26a0c725950f1247075b79c273e21", +"f89e\",\n \"name\" : \"test12345\",\n \"pu", +"blicKey\" : \"SPH6cRzwuPyzoNxsPi1ecfGHPme5", +"GHKDsunG7vSTPuPPbPSMEcoHu\",\n \"balance", +"\" : 50000000\n}, \n{\n \"ETH_account\" : \"", +"0xf5f12037ebc7cd71e744a944b422fa90fc85a0", +"6b\",\n \"name\" : \"0xf5f12037ebc7cd71e7\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 1215250841\n}, \n{\n \"ETH_account\" : \"", +"0x583513b6be750abd69caa9086ddf8341ee6120", +"13\",\n \"name\" : \"krypto69\",\n \"publi", +"cKey\" : \"SPH61wDbKywYr4p6Qdgbmj8asjy2rjS", +"nyE8M8rkGffvRFRqAoGmMb\",\n \"balance\" :", +" 5126842000\n}, \n{\n \"ETH_account\" : \"0", +"xd53737112a41d0ec91c51946dc94504960e328c", +"a\",\n \"name\" : \"0xd53737112a41d0ec91\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 23991261161\n}, \n{\n \"ETH_account\" : \"", +"0x196bf1e9611324bb24e7edc6f8cd3fa2391914", +"2e\",\n \"name\" : \"0x196bf1e9611324bb24\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 909800000\n}, \n{\n \"ETH_account\" : \"0", +"xb9996a5b98c3e8de0bc26152f38bfe406110c86", +"8\",\n \"name\" : \"nadroj\",\n \"publicKe", +"y\" : \"SPH7nkG5yq5EBmLA9s78iYGtSPybU25zXH", +"Fn6XfN8nsEZFaR9pep2\",\n \"balance\" : 21", +"2705096\n}, \n{\n \"ETH_account\" : \"0x269", +"d54915542d3aba190dc46002eab1fdf56e636\",\n", +" \"name\" : \"wussy\",\n \"publicKey\" : ", +"\"SPH72J1pJVVVrGu15xyVg6KAaeFYMGVEbDQ1Atu", +"uRDPvf34Cc11nG\",\n \"balance\" : 3625000", +"00\n}, \n{\n \"ETH_account\" : \"0x7adf30dc", +"a721f792a4308dcac6607117e697a432\",\n \"", +"name\" : \"mysophy\",\n \"publicKey\" : \"SP", +"H7kEW8HHMBjAj6FYjWZcsHtPgrbAFb3fjSgGiPXh", +"ooCHBTc7ZJh\",\n \"balance\" : 567861350\n", +"}, \n{\n \"ETH_account\" : \"0x9991d7e6d8d", +"5fe2a1b7185479922adc46c8e67a1\",\n \"nam", +"e\" : \"0x9991d7e6d8d5fe2a1b\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 4934920800\n", +"}, \n{\n \"ETH_account\" : \"0x1f6c3e1b2d4", +"807af43491a3fbe52914f3a45feba\",\n \"nam", +"e\" : \"0x1f6c3e1b2d4807af43\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 4258000000\n", +"}, \n{\n \"ETH_account\" : \"0xe5607761fd4", +"36d3147393bf434f0a0c512163dce\",\n \"nam", +"e\" : \"0xe5607761fd436d3147\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 696007800\n}", +", \n{\n \"ETH_account\" : \"0xc7b630c04d85", +"521ecee9299257bf0b3b7bf5404c\",\n \"name", +"\" : \"alex\",\n \"publicKey\" : \"SPH6PBLHH", +"H2egNLRwixKudPi1c2USMzotsXXZZeRHZkiiE8m9", +"MmUB\",\n \"balance\" : 39972030900\n}, \n{", +"\n \"ETH_account\" : \"0xadbc97b077093b38", +"6e34c319eb20fbb00ef38042\",\n \"name\" : ", +"\"0xadbc97b077093b386e\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 366399900\n}, \n{\n", +" \"ETH_account\" : \"0xf286f56310df6c4f0", +"8ca38832e80c43e5bab866e\",\n \"name\" : \"", +"romoventura\",\n \"publicKey\" : \"SPH5Hsj", +"vdmq57SnZCRpwFtLUpDaF5jHdLjVhcReNypYRRBw", +"d6XViY\",\n \"balance\" : 1865852261800\n}", +", \n{\n \"ETH_account\" : \"0x4481c2c091b6", +"47dd959d4f690c9cf47873a1b7f7\",\n \"name", +"\" : \"0x4481c2c091b647dd95\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 463145700\n},", +" \n{\n \"ETH_account\" : \"0xda9c77a167b7f", +"f3a3ea27472e2dca5ff97eb30fa\",\n \"name\"", +" : \"0xda9c77a167b7ff3a3e\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 20000000\n}, \n", +"{\n \"ETH_account\" : \"0x5d1340bfb566e4f", +"d43635369312277dfe62505bc\",\n \"name\" :", +" \"0x5d1340bfb566e4fd43\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 90632800000\n}, ", +"\n{\n \"ETH_account\" : \"0xbdfe024756c6e0", +"1e7825be22a90f32c9dbd0f991\",\n \"name\" ", +": \"mingoso\",\n \"publicKey\" : \"SPH4yRZw", +"hWqkn6grapjMWdWUduUTmWPoJL6mRQsyG9JUp4MZ", +"SbAhL\",\n \"balance\" : 571813900\n}, \n{\n", +" \"ETH_account\" : \"0xed0eb8166fedae8a6", +"30f11d7822f8c8832a6baaf\",\n \"name\" : \"", +"0xed0eb8166fedae8a63\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 50200000000\n}, \n{", +"\n \"ETH_account\" : \"0xa4506c67b3233a28", +"78d4bd41b442b9c028c26cb6\",\n \"name\" : ", +"\"0xa4506c67b3233a2878\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 63202851800\n}, \n", +"{\n \"ETH_account\" : \"0xa70795264eb9910", +"230e33749d3fb9fc8505acd01\",\n \"name\" :", +" \"0xa70795264eb9910230\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 12763000000\n}, ", +"\n{\n \"ETH_account\" : \"0xe5d17edbded30b", +"ee8851f219296161107dbc1a56\",\n \"name\" ", +": \"0xe5d17edbded30bee88\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 5735603500\n}, ", +"\n{\n \"ETH_account\" : \"0x4eeda143c26a12", +"08e71b4daf08582ad9f1fd7233\",\n \"name\" ", +": \"0x4eeda143c26a1208e7\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 15569013400\n},", +" \n{\n \"ETH_account\" : \"0xbca8788b6cbf5", +"2ebff90b4dfe15f4aa5e2b53e0b\",\n \"name\"", +" : \"kaandsophia\",\n \"publicKey\" : \"SPH", +"7a9pLuwrcxp2CsYgCFHXiAZeGQXchss77VmyvUHg", +"M5r1ZYVR7K\",\n \"balance\" : 4138083800\n", +"}, \n{\n \"ETH_account\" : \"0x067ccd7d0e8", +"b58bd096b8bb40f6150fc6e012a60\",\n \"nam", +"e\" : \"0x067ccd7d0e8b58bd09\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 16240423083", +"\n}, \n{\n \"ETH_account\" : \"0x163a2412cc", +"f0ac2179da6fcf0978389c887c3d19\",\n \"na", +"me\" : \"0x163a2412ccf0ac2179\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 107398832\n", +"}, \n{\n \"ETH_account\" : \"0x1557ecb5ecb", +"90ff5336a8abf6ccc541446835c06\",\n \"nam", +"e\" : \"ebrak\",\n \"publicKey\" : \"SPH5jAc", +"i7d7sqWTSMxwGPsdJr1Nym6nk4kePQN8PP4Gj6AB", +"1sjy1W\",\n \"balance\" : 40002765220\n}, ", +"\n{\n \"ETH_account\" : \"0xfb5215d08eb153", +"91b27e62a896092d97d1127e18\",\n \"name\" ", +": \"0xfb5215d08eb15391b2\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 55000000\n}, \n{", +"\n \"ETH_account\" : \"0xd61ea73b824270d6", +"ebc5951abb6f6503a4850538\",\n \"name\" : ", +"\"0xd61ea73b824270d6eb\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 2167778104\n}, \n{", +"\n \"ETH_account\" : \"0x3145191e77c3eb1e", +"30009056030e444b9fb828c7\",\n \"name\" : ", +"\"0x3145191e77c3eb1e30\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 4188473000\n}, \n{", +"\n \"ETH_account\" : \"0xd0d3e6d1a8185412", +"d6c3dcec6a561f04b465d6c1\",\n \"name\" : ", +"\"0xd0d3e6d1a8185412d6\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 199562400\n}, \n{\n", +" \"ETH_account\" : \"0xf1800d281277d7c35", +"4c43540002e1ae46423a30e\",\n \"name\" : \"", +"0xf1800d281277d7c354\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 4627570876\n}, \n{\n", +" \"ETH_account\" : \"0x97309a6ba218a7f39", +"9e5107061f0fecf08befa5d\",\n \"name\" : \"", +"hisanash\",\n \"publicKey\" : \"SPH5Y4s6E2", +"q3AwbSKFu8jdncBnymqTsMmv1EMUDjbV8M8SAmbk", +"HVj\",\n \"balance\" : 33685144520\n}, \n{\n", +" \"ETH_account\" : \"0xa8b23477bbd632388", +"5660d6a53d26189de8efd54\",\n \"name\" : \"", +"0xa8b23477bbd6323885\",\n \"publicKey\" :", +" \"SPH1111111111111111111111111111111114T", +"1Anm\",\n \"balance\" : 10000000\n}, \n{\n ", +" \"ETH_account\" : \"0xdc5fcf79acb9fba6e93", +"1dd9e76869a943c055841\",\n \"name\" : \"0x", +"dc5fcf79acb9fba6e9\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 500000000\n}, \n{\n ", +" \"ETH_account\" : \"0x488f91c923a296821e0b", +"483d0e85aebc66c1d8b6\",\n \"name\" : \"0x4", +"88f91c923a296821e\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 840000000\n}, \n{\n ", +"\"ETH_account\" : \"0x5ab6aea184e7686136f27", +"74c46e05903bc1ae04f\",\n \"name\" : \"0x5a", +"b6aea184e7686136\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 7291505000\n}, \n{\n ", +"\"ETH_account\" : \"0xa2efa246300822bf3d480", +"c84c8d890a2fca42c1e\",\n \"name\" : \"0xa2", +"efa246300822bf3d\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 806000000\n}, \n{\n \"", +"ETH_account\" : \"0x9b57e05c104e02d4968d8e", +"8c991a7fd3ce952cc3\",\n \"name\" : \"lphri", +"chter\",\n \"publicKey\" : \"SPH77ESnkEppL", +"8cUprpJZUaNANBqxJpTucKcy3eLHmF5YRWJcbFAU", +"\",\n \"balance\" : 1847645600\n}, \n{\n ", +"\"ETH_account\" : \"0x151e120f6a0a0cf3e4901", +"3fd1d64c3d0dc261c60\",\n \"name\" : \"0x15", +"1e120f6a0a0cf3e4\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 830803042\n}, \n{\n \"", +"ETH_account\" : \"0x7b9c5a8acb0715e31a083c", +"04618b9f851ec79f80\",\n \"name\" : \"0x7b9", +"c5a8acb0715e31a\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 33090933\n}, \n{\n \"ET", +"H_account\" : \"0x3db09dfd4657289fbf81412e", +"a8ef2eed792543fa\",\n \"name\" : \"0x3db09", +"dfd4657289fbf\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 128204\n}, \n{\n \"ETH_ac", +"count\" : \"0x36e7c97a374d0aef93ce82ff4947", +"bb68f844d391\",\n \"name\" : \"0x36e7c97a3", +"74d0aef93\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1111193818\n}, \n{\n \"ETH_ac", +"count\" : \"0x636f2208ffd9a4cf35d5a4018d8e", +"a519fd45d1ca\",\n \"name\" : \"0x636f2208f", +"fd9a4cf35\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 40523991800\n}, \n{\n \"ETH_a", +"ccount\" : \"0xe2d4cbaa5e011739dfb8770f784", +"f9ce1f4c447a8\",\n \"name\" : \"0xe2d4cbaa", +"5e011739df\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 10000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x36ffa82c828991f52f128f230d892", +"1599ff3a276\",\n \"name\" : \"gal\",\n \"p", +"ublicKey\" : \"SPH7rYYtN7RNdqWocPEh7MMpqYb", +"p2z8L4U1e5TPF3KbXvT1C76RZh\",\n \"balanc", +"e\" : 643220000\n}, \n{\n \"ETH_account\" :", +" \"0xd5679602ef308dc4478445b2c553bdb4de4a", +"d45a\",\n \"name\" : \"0xd5679602ef308dc44", +"7\",\n \"publicKey\" : \"SPH11111111111111", +"11111111111111111114T1Anm\",\n \"balance", +"\" : 23428000000\n}, \n{\n \"ETH_account\" ", +": \"0xdf56a2664346ef57857396d6db368148a6b", +"38c3e\",\n \"name\" : \"0xdf56a2664346ef57", +"85\",\n \"publicKey\" : \"SPH1111111111111", +"111111111111111111114T1Anm\",\n \"balanc", +"e\" : 15299000000\n}, \n{\n \"ETH_account\"", +" : \"0xbd617f72b205fb151e683ba1a5bc496994", +"d4962c\",\n \"name\" : \"0xbd617f72b205fb1", +"51e\",\n \"publicKey\" : \"SPH111111111111", +"1111111111111111111114T1Anm\",\n \"balan", +"ce\" : 2877690884\n}, \n{\n \"ETH_account\"", +" : \"0x5f1411c381834e4e7aa9aa71d48cfa8bf6", +"61ff37\",\n \"name\" : \"mrdancrypto\",\n ", +" \"publicKey\" : \"SPH5mgZmi22w5xQNG1jNKZss", +"tkwwYNk7jm7kAE1AbrZ4QntMykDAW\",\n \"bal", +"ance\" : 2420560000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x0d8c48d3a2dee874ccc5912977ad589f", +"a3f015a0\",\n \"name\" : \"alysianation\",\n", +" \"publicKey\" : \"SPH6dh27rKC24QQiZeB2a", +"VG173VT14tDaatoKnnytab9Zhzzs6psd\",\n \"", +"balance\" : 3000000000000\n}, \n{\n \"ETH_", +"account\" : \"0xa68d67cab554a2f7b42b06f936", +"5fbc2c8152e67d\",\n \"name\" : \"sammiebre", +"eden\",\n \"publicKey\" : \"SPH5Gjd1jiL7t2", +"PXtLgsT5HMjqg5rV2fCro5HGHJSjNJGJoyRqGq3\"", +",\n \"balance\" : 3100000000000\n}, \n{\n ", +" \"ETH_account\" : \"0xab167f3b95f8c95d70e", +"af86dedb3202d96865260\",\n \"name\" : \"fa", +"iryspeer\",\n \"publicKey\" : \"SPH8EMiiaG", +"RGeQa9cW726DSAWDrYS4VqCBJnDgkeu1UjjQc7JJ", +"bbP\",\n \"balance\" : 3200000000000\n}, \n", +"{\n \"ETH_account\" : \"0x281519d0e415b01", +"a5f2fe99968e473c3a0aea44b\",\n \"name\" :", +" \"laylalevy\",\n \"publicKey\" : \"SPH8aKa", +"hpjiU59zYjrXnmTeLb2UBcNR7XQzN3zPJFXCEwC7", +"dXJx59\",\n \"balance\" : 3300000000000\n}", +", \n{\n \"ETH_account\" : \"0x38118d77dd45", +"a38cc729192c8e727efc908773cf\",\n \"name", +"\" : \"delciestackhouse\",\n \"publicKey\" ", +": \"SPH8HLVwqReJP7vhLX9wAbQp7HRR8qKTbn1Gq", +"t83ztA9SWPfAFTzL\",\n \"balance\" : 34000", +"00000000\n}, \n{\n \"ETH_account\" : \"0xcf", +"1a7476a2cd193bd82cf4d338443e66a20b8c25\",", +"\n \"name\" : \"detrabrewster\",\n \"publ", +"icKey\" : \"SPH7p5QicKNkGQKs3pBK5sSkzDMLNM", +"hbccet4Auw7iwQV77A5DeiK\",\n \"balance\" ", +": 3500000000000\n}, \n{\n \"ETH_account\" ", +": \"0xa993723ed5cf8ebbc8aad2bfaf2afbc23d0", +"0fa52\",\n \"name\" : \"jettiebabcock\",\n ", +" \"publicKey\" : \"SPH57opGKdogUSg8wYiWW8D", +"tMTxyWDw37KQ7zv4BFb1MzesVZQsLq\",\n \"ba", +"lance\" : 3600000000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xddbdf7d8bf2e2ee2ea0253da9334", +"159d82225d1f\",\n \"name\" : \"adelchristo", +"pher\",\n \"publicKey\" : \"SPH71qsjnCA6uD", +"J8NWWz9WfWXR3AbTxZGLHdBURd2znwTRgF4tHgV\"", +",\n \"balance\" : 2500000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x876b3a34ab895af8fe8", +"33b9e4edc9953eb934c37\",\n \"name\" : \"oz", +"ieknudson\",\n \"publicKey\" : \"SPH74i4nD", +"H5uHMTukEokpsYrAnfSYzdPdWLfCivTYABHvMG4o", +"RXJw\",\n \"balance\" : 2600000000000\n}, ", +"\n{\n \"ETH_account\" : \"0x9400c9796376d3", +"492f276224865a8ba22f92c251\",\n \"name\" ", +": \"aronhilton\",\n \"publicKey\" : \"SPH6G", +"4fTbh8skedEiXP5ZraApYFo54devm97bj3S5bbTT", +"4yEchwmW\",\n \"balance\" : 4830262878812", +"\n}, \n{\n \"ETH_account\" : \"0x1f89df390a", +"b1ed7d557276b431f5c5a0cfda8b21\",\n \"na", +"me\" : \"pegleyva\",\n \"publicKey\" : \"SPH", +"5ncVyWML5FXqL2xMTT777Z2zUvCe4zAJcJNEEaKw", +"cDyJazJS2p\",\n \"balance\" : 23000000000", +"00\n}, \n{\n \"ETH_account\" : \"0x0e19428d", +"628d302768d52024daad83590bca9b66\",\n \"", +"name\" : \"kimberbrannon\",\n \"publicKey\"", +" : \"SPH8Q3ehSFy6VUyU2AR7QJvgNJTGijveMWH4", +"HrHZFUqZy39kGJkRT\",\n \"balance\" : 2100", +"000000000\n}, \n{\n \"ETH_account\" : \"0xa", +"d0ad9b4bdce0e784870f9c153bed450be1b7bd7\"", +",\n \"name\" : \"marileestacey\",\n \"pub", +"licKey\" : \"SPH7WVTfUktgx3SW2efR8qD9xxyvo", +"QmhsU8WMmFFQeGpjNCET5NM7\",\n \"balance\"", +" : 2200000000000\n}, \n{\n \"ETH_account\"", +" : \"0x869abc2cc29e32816b3fd089577bb4b434", +"3b9aa9\",\n \"name\" : \"dustylarsen\",\n ", +" \"publicKey\" : \"SPH4u2AC8JcxjdKn9v6NjcfQ", +"7woKtQzHdh12kptYWgz5ivN6Cf9mH\",\n \"bal", +"ance\" : 2000000000000\n}, \n{\n \"ETH_acc", +"ount\" : \"0x99b3ec86e272dd4dc313a8e72aa68", +"e3f0a8c351f\",\n \"name\" : \"shaneli\",\n ", +" \"publicKey\" : \"SPH5Cs4uKgqjr8GLiBdeuM2", +"qg3i46zn5CpXmjQzUzYShecf6QHiBG\",\n \"ba", +"lance\" : 1900000000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xa7be1e4590a409810a309b6b0aff", +"154bab2b74a9\",\n \"name\" : \"marceleneyo", +"unt\",\n \"publicKey\" : \"SPH7RKh5PpRZyVe", +"JWaynbg5VVVTEW7voHrJmbuztSepgoSo7THe31\",", +"\n \"balance\" : 1900000000000\n}, \n{\n ", +" \"ETH_account\" : \"0x6d663bcb0b7b147e839c", +"f56c53884a01e29eaa89\",\n \"name\" : \"fri", +"dafedbetter\",\n \"publicKey\" : \"SPH8Hz4", +"QNpG8ZG4pMZf4UdFq6Qi2wpbECMYLLZhabWz5M1Q", +"QvxvyD\",\n \"balance\" : 1800000000000\n}", +", \n{\n \"ETH_account\" : \"0x3d29cce1349f", +"e5af04d2cb5bb1fd98a5f1d59170\",\n \"name", +"\" : \"karanhong\",\n \"publicKey\" : \"SPH5", +"vp1K7VxuoALxPuxd4z4rrYj7S1n7EHqgodo61iQD", +"mUmp7u5iJ\",\n \"balance\" : 180000000000", +"0\n}, \n{\n \"ETH_account\" : \"0xf03e9271b", +"05116207573af33408264359f47e002\",\n \"n", +"ame\" : \"kileydaly\",\n \"publicKey\" : \"S", +"PH8AVDuKR4uWwnVAan2Y6ZrXnjR8Xd7thtwV3rfo", +"dHwQmQXAE46n\",\n \"balance\" : 120000000", +"0000\n}, \n{\n \"ETH_account\" : \"0xde9074", +"a957c86e63bcbe9efd55939e2b03086776\",\n ", +" \"name\" : \"loraleeanders\",\n \"publicKe", +"y\" : \"SPH76e275tdLsUgDVyZQCTuzjW1gHFXvEm", +"X2926ktYe7SdrCngCfi\",\n \"balance\" : 12", +"37714743893\n}, \n{\n \"ETH_account\" : \"0", +"x0a7e3c07870875eb173c02350debdf9220789fb", +"1\",\n \"name\" : \"0x0a7e3c07870875eb17\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 123221514000\n}, \n{\n \"ETH_account\" : ", +"\"0x56f44b0d1e22135ac7b628317bedde677251e", +"1a0\",\n \"name\" : \"0x56f44b0d1e22135ac7", +"\",\n \"publicKey\" : \"SPH111111111111111", +"1111111111111111114T1Anm\",\n \"balance\"", +" : 550000000\n}, \n{\n \"ETH_account\" : \"", +"0xdf9a1859d9a949a959c304e6740258b005033e", +"da\",\n \"name\" : \"0xdf9a1859d9a949a959\"", +",\n \"publicKey\" : \"SPH1111111111111111", +"111111111111111114T1Anm\",\n \"balance\" ", +": 515000000\n}, \n{\n \"ETH_account\" : \"0", +"x877215afa6dab31ae7d2ed8c20a19adedde8718", +"e\",\n \"name\" : \"0x877215afa6dab31ae7\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 3609000000\n}, \n{\n \"ETH_account\" : \"0", +"x247ae05c9d81863f588c69717bcae06742a6e94", +"a\",\n \"name\" : \"0x247ae05c9d81863f58\",", +"\n \"publicKey\" : \"SPH11111111111111111", +"11111111111111114T1Anm\",\n \"balance\" :", +" 212556900\n}, \n{\n \"ETH_account\" : \"0x", +"cd2340d8ddd304892462d68267e5adf35d074a09", +"\",\n \"name\" : \"0xcd2340d8ddd3048924\",\n", +" \"publicKey\" : \"SPH111111111111111111", +"1111111111111114T1Anm\",\n \"balance\" : ", +"50054825044\n}, \n{\n \"ETH_account\" : \"0", +"x98948c895864e8f9b8b91e290b1318d428c637c", +"d\",\n \"name\" : \"colfax\",\n \"publicKe", +"y\" : \"SPH531ECCND3KR2i8nFtpfULXAkVBcDSHL", +"VNSkG7nbiuRP8DZgX48\",\n \"balance\" : 17", +"21248900\n}, \n{\n \"ETH_account\" : \"0x6a", +"320d994a2970288d5873a34edc558ef4b1629c\",", +"\n \"name\" : \"0x6a320d994a2970288d\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 14", +"94363242\n}, \n{\n \"ETH_account\" : \"0x23", +"80a720ac78a48300aa520c3de7e17aadaa8237\",", +"\n \"name\" : \"0x2380a720ac78a48300\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 26", +"16040062\n}, \n{\n \"ETH_account\" : \"0x5e", +"5375c9455507fa6328d74d26ec47f9b86c2c3a\",", +"\n \"name\" : \"0x5e5375c9455507fa63\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 22", +"000000\n}, \n{\n \"ETH_account\" : \"0x23d5", +"cb9e437c0eeda2cdb75bb857af5d2a11dd10\",\n ", +" \"name\" : \"0x23d5cb9e437c0eeda2\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 2965", +"70267\n}, \n{\n \"ETH_account\" : \"0x772e1", +"cc6de7b00f4a85cf1b6225378bb4bcfee39\",\n ", +" \"name\" : \"0x772e1cc6de7b00f4a8\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 11779", +"000000\n}, \n{\n \"ETH_account\" : \"0x6c04", +"b754cd0330777378e4a37a8b083387a9e17f\",\n ", +" \"name\" : \"magicfluppe\",\n \"publicKe", +"y\" : \"SPH715xuFxhVUi8iSDuL4Npakti1Q7Zqjq", +"D3rvrbKgoaJkqq1KaV\",\n \"balance\" : 395", +"834795\n}, \n{\n \"ETH_account\" : \"0x7b5d", +"b188eed1b4f12b53444f559a961115d62c31\",\n ", +" \"name\" : \"0x7b5db188eed1b4f12b\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1650", +"00000\n}, \n{\n \"ETH_account\" : \"0xbb1ea", +"eac570614531e4e4ef7dcb199c98fae8115\",\n ", +" \"name\" : \"0xbb1eaeac570614531e\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 10684", +"297600\n}, \n{\n \"ETH_account\" : \"0x9e32", +"13238453adfff49aa147d37a924b9c8d6c5d\",\n ", +" \"name\" : \"0x9e3213238453adfff4\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1277", +"000000\n}, \n{\n \"ETH_account\" : \"0x6498", +"8ab8378569043243591b2667ac2abf6355f2\",\n ", +" \"name\" : \"josephzpayne\",\n \"publicK", +"ey\" : \"SPH8kvo8vhjFPJipQq3C2mLApq1YvEwbt", +"B5B5SkaYFQePewbMPnyV\",\n \"balance\" : 4", +"72267734\n}, \n{\n \"ETH_account\" : \"0x67", +"e77baaa6ec270d57ef07ec7b2ae3ea43fa628f\",", +"\n \"name\" : \"0x67e77baaa6ec270d57\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 99", +"5083584\n}, \n{\n \"ETH_account\" : \"0xcb2", +"83e8037c07270e543de3dcf343c5b7fea77b1\",\n", +" \"name\" : \"0xcb283e8037c07270e5\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 300", +"000000\n}, \n{\n \"ETH_account\" : \"0x0b57", +"64f57c5e94a495c2e0cebd40472eb3b6dd9e\",\n ", +" \"name\" : \"0x0b5764f57c5e94a495\",\n ", +"\"publicKey\" : \"SPH1111111111111111111111", +"111111111114T1Anm\",\n \"balance\" : 1765", +"6000000\n}, \n{\n \"ETH_account\" : \"0x337", +"0dd85e728431f03f61b4814f2ec5f36ff3136\",\n", +" \"name\" : \"0x3370dd85e728431f03\",\n ", +" \"publicKey\" : \"SPH111111111111111111111", +"1111111111114T1Anm\",\n \"balance\" : 145", +"83000000\n}, \n{\n \"ETH_account\" : \"0x97", +"28cb1f8f2c6e56ee351d5f30f57ad91ceb74fc\",", +"\n \"name\" : \"0x9728cb1f8f2c6e56ee\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 10", +"23760800\n}, \n{\n \"ETH_account\" : \"0x63", +"a39f2ee172797dfd4707ea4065d8b37af9d532\",", +"\n \"name\" : \"0x63a39f2ee172797dfd\",\n ", +" \"publicKey\" : \"SPH11111111111111111111", +"11111111111114T1Anm\",\n \"balance\" : 73", +"27985945\n}, \n{\n \"ETH_account\" : \"0xab", +"d4d8ce2993481365e7f033e6eecea810bce5e5\",", +"\n \"name\" : \"jaydensamuel\",\n \"publi", +"cKey\" : \"SPH5BKQP9ELdwJdwLgQZhQ2kaZr8vEX", +"JKcYr5vuW5Za55EUmpNeCT\",\n \"balance\" :", +" 4636400000\n}, \n{\n \"ETH_account\" : \"0", +"xda02f92e0a8371da30361e39c2058eb1061bfdb", +"a\",\n \"name\" : \"sheng\",\n \"publicKey", +"\" : \"SPH58TowTFU8iLHj1PbTGUAb4rHE65YZKA1", +"KpdTPSBwqVW3Ezg6by\",\n \"balance\" : 250", +"000000000\n}, \n{\n \"ETH_account\" : \"0x8", +"6a95f3424c3c2a981875115710f553f51f2978d\"", +",\n \"name\" : \"twismmm\",\n \"publicKey", +"\" : \"SPH8bQnkQPva2WyTzZu9htHvcSqAUxR3oj2", +"kAMn1LtY2ktRKTPHMz\",\n \"balance\" : 339", +"64769\n}, \n{\n \"ETH_account\" : \"0xc7d5e", +"f04a8b8592694903353c6fb5b06d1a3ce1b\",\n ", +" \"name\" : \"0xc7d5ef04a8b8592694\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 14800", +"92577\n}, \n{\n \"ETH_account\" : \"0xc197b", +"495ee1bff372ca923ed720d99a0734ac169\",\n ", +" \"name\" : \"0xc197b495ee1bff372c\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 38000", +"000\n}, \n{\n \"ETH_account\" : \"0xc8c5a6b", +"603dffc8ae7d2f390681d788d5045511d\",\n ", +"\"name\" : \"0xc8c5a6b603dffc8ae7\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 7999000", +"000\n}, \n{\n \"ETH_account\" : \"0x1966ce7", +"3a2c7c30d1b6923e28720059de70478b1\",\n ", +"\"name\" : \"0x1966ce73a2c7c30d1b\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 8516000", +"000\n}, \n{\n \"ETH_account\" : \"0x9b4c5d9", +"7b82497198ded4ce643960404c27acf62\",\n ", +"\"name\" : \"0x9b4c5d97b82497198d\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1899696", +"000\n}, \n{\n \"ETH_account\" : \"0xbcd9c52", +"ded3f2ec56eb8b9540d0a458b1128300f\",\n ", +"\"name\" : \"0xbcd9c52ded3f2ec56e\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 5000000", +"00\n}, \n{\n \"ETH_account\" : \"0x0e6a0a83", +"af76d5be5c595553fddd24f7f62edf74\",\n \"", +"name\" : \"lynx\",\n \"publicKey\" : \"SPH8N", +"qmpjGNPmkoAgmYj5mfWrXVUZ9g91EdAvczEwtXae", +"mCV1EdLe\",\n \"balance\" : 1855247691\n},", +" \n{\n \"ETH_account\" : \"0x621f49aa1fb39", +"dc35bad34f4b7ad692949874b53\",\n \"name\"", +" : \"0x621f49aa1fb39dc35b\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1138047114\n},", +" \n{\n \"ETH_account\" : \"0xa8c690d497ce4", +"9fa416132f8cf540e5b91dc7959\",\n \"name\"", +" : \"0xa8c690d497ce49fa41\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 802838300\n}, ", +"\n{\n \"ETH_account\" : \"0xbdaefa53c85d16", +"8e8488156c193d7fe58d9c8a31\",\n \"name\" ", +": \"palahniuk\",\n \"publicKey\" : \"SPH78h", +"jKUEhF4yta32AGMbyaea5vbwwDwMhZ6Hr6Srb88a", +"8CLRGUK\",\n \"balance\" : 38000000\n}, \n{", +"\n \"ETH_account\" : \"0xa05816ed65e053fa", +"5a7907f5904bcfa6d2ba93f2\",\n \"name\" : ", +"\"benitezduran\",\n \"publicKey\" : \"SPH6S", +"S49McDNVPAsu6Et42N39inHhSbMB7t569T6Z3uMy", +"5ZAnZYFZ\",\n \"balance\" : 26408745960\n}", +", \n{\n \"ETH_account\" : \"0xf3f7a4f1bfda", +"9de226ebde4bbb2a7be39bdc8405\",\n \"name", +"\" : \"ahmadt\",\n \"publicKey\" : \"SPH8Sm2", +"dogybPzaSsNWYkxfb3Rq4fBxPzP1hbYVNFhG87yX", +"vEfMJ2\",\n \"balance\" : 32306000000\n}, ", +"\n{\n \"ETH_account\" : \"0x87776af8bf8b89", +"78c55f7df62cc3572a6f0d5a16\",\n \"name\" ", +": \"0x87776af8bf8b8978c5\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 4022550000\n}, ", +"\n{\n \"ETH_account\" : \"0xd8411968ec7407", +"935501d7bde52204d7a7bd35c0\",\n \"name\" ", +": \"0xd8411968ec74079355\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1430000000\n}, ", +"\n{\n \"ETH_account\" : \"0x58868f49f6e3fb", +"cef518b5b0156bf36f9bc4acbc\",\n \"name\" ", +": \"0x58868f49f6e3fbcef5\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 64286580705\n},", +" \n{\n \"ETH_account\" : \"0x67e46be459eac", +"259d1c1a99ab916dcd73bbc1b09\",\n \"name\"", +" : \"0x67e46be459eac259d1\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 1055453853\n},", +" \n{\n \"ETH_account\" : \"0x0d037ca75f1af", +"eba681d128020561ce3aec95dfc\",\n \"name\"", +" : \"0x0d037ca75f1afeba68\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 95256000000\n}", +", \n{\n \"ETH_account\" : \"0xcc363237acda", +"601621d489adbda53e8d46c5b6ed\",\n \"name", +"\" : \"0xcc363237acda601621\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 36112000000\n", +"}, \n{\n \"ETH_account\" : \"0x50721ee44bc", +"bd6d7ee50e4a24c426eb964542194\",\n \"nam", +"e\" : \"0x50721ee44bcbd6d7ee\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 209438000\n}", +", \n{\n \"ETH_account\" : \"0x9f9499623342", +"79e588558139fc8ebdb8d22f32af\",\n \"name", +"\" : \"0x9f949962334279e588\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 280000000\n},", +" \n{\n \"ETH_account\" : \"0x143284d3b0c64", +"6dbc6174fe6619637c6a78088cd\",\n \"name\"", +" : \"0x143284d3b0c646dbc6\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 2534845782\n},", +" \n{\n \"ETH_account\" : \"0x2dd8fa8f67ac2", +"cf5c10f481e983bf48118e2d285\",\n \"name\"", +" : \"wsophia1\",\n \"publicKey\" : \"SPH7Ag", +"uyezNJY6pBMwqZ26AgTTrq27Uj4HRpV5FFXD2NsE", +"VweFq8V\",\n \"balance\" : 251000000000\n}", +", \n{\n \"ETH_account\" : \"0x4d99c4f63ff8", +"43ae1fe4263d9716c72f28a02e1d\",\n \"name", +"\" : \"wsophia3\",\n \"publicKey\" : \"SPH7f", +"kHEfkiG4GssQm5SeyNaFHiCK8hv3TNjCqJhzyzxP", +"W6YXDfCX\",\n \"balance\" : 251000000000\n", +"}, \n{\n \"ETH_account\" : \"0xce1c4399afa", +"dbf2786076a273554fba85e716002\",\n \"nam", +"e\" : \"wsophia4\",\n \"publicKey\" : \"SPH5", +"zKdDUd1axUDNhJViXXqtqxSc263vcccW3WXMNiRR", +"3eLFkjhG8\",\n \"balance\" : 251000000000", +"\n}, \n{\n \"ETH_account\" : \"0xfe4fa3981b", +"b378565f39c71c533dbde2c097db73\",\n \"na", +"me\" : \"wsophia2\",\n \"publicKey\" : \"SPH", +"5CsXdZvSB9JCSV6otocLWyi3ZRgSe2UFzsD3hV3z", +"fSjoRmMbu7\",\n \"balance\" : 25100000000", +"0\n}, \n{\n \"ETH_account\" : \"0x6cd749ebd", +"04ce9deaa2b6be21744af1bb18a2f47\",\n \"n", +"ame\" : \"0x6cd749ebd04ce9deaa\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 237100000", +"0\n}, \n{\n \"ETH_account\" : \"0x84a2d0ec1", +"9b045fe611ebcc378b0ceb7765a3559\",\n \"n", +"ame\" : \"0x84a2d0ec19b045fe61\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 150000000", +"\n}, \n{\n \"ETH_account\" : \"0x549a156141", +"561821dcd5c113770fc9d047b9bc79\",\n \"na", +"me\" : \"0x549a156141561821dc\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2933826000", +"\n}, \n{\n \"ETH_account\" : \"0xf42d469780", +"c859608523b22c37d57dcb9219c2ef\",\n \"na", +"me\" : \"0xf42d469780c8596085\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 4135852266", +"\n}, \n{\n \"ETH_account\" : \"0xbb6851dced", +"2f0a306cefde44704595838e5f73aa\",\n \"na", +"me\" : \"0xbb6851dced2f0a306c\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 29000000\n}", +", \n{\n \"ETH_account\" : \"0x98dcb607fb48", +"37798211ef1f50a380d296414433\",\n \"name", +"\" : \"0x98dcb607fb48377982\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 5575544218\n}", +", \n{\n \"ETH_account\" : \"0x87bbfdff2eb6", +"d064833e20cfda357ebcda9bbdbe\",\n \"name", +"\" : \"zacsbrown\",\n \"publicKey\" : \"SPH6", +"M8gcTFKK6YKqwpVBudoKYTednDCRZbW9N7TmEHRo", +"VmAjcWAgg\",\n \"balance\" : 471907400\n},", +" \n{\n \"ETH_account\" : \"0xcf32bff3f7d2d", +"fcf0ae1f799449645752bb3ed77\",\n \"name\"", +" : \"0xcf32bff3f7d2dfcf0a\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 10033227600\n}", +", \n{\n \"ETH_account\" : \"0x17d23476e56f", +"c60e9c15a2a0658d090b5d75d07d\",\n \"name", +"\" : \"0x17d23476e56fc60e9c\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 5000000000\n}", +", \n{\n \"ETH_account\" : \"0x483d1a1010b1", +"c64bf98c37058796d59ab08e2c39\",\n \"name", +"\" : \"0x483d1a1010b1c64bf9\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 20712191366\n", +"}, \n{\n \"ETH_account\" : \"0x69da159d002", +"1f899d55337e68404163295cca624\",\n \"nam", +"e\" : \"0x69da159d0021f899d5\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 16897020199", +"\n}, \n{\n \"ETH_account\" : \"0x6e44964560", +"2264b5c2352d7241906efd04ed16f3\",\n \"na", +"me\" : \"0x6e449645602264b5c2\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 4743000000", +"\n}, \n{\n \"ETH_account\" : \"0xd2217cdb9f", +"f6e4f1c601e094d322348e6883d387\",\n \"na", +"me\" : \"0xd2217cdb9ff6e4f1c6\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 3210527200", +"\n}, \n{\n \"ETH_account\" : \"0xa3a804cc71", +"1581a597c3abdecae5f8a02de93595\",\n \"na", +"me\" : \"sore\",\n \"publicKey\" : \"SPH5Gy3", +"2t4kBhfa9dxxB2nbjtYK22EjJ3ehUBqbDaSkNkdA", +"4gT2WT\",\n \"balance\" : 1000000000\n}, \n", +"{\n \"ETH_account\" : \"0xa9a1206cda8a9fb", +"1591dc415f4d26702c577137e\",\n \"name\" :", +" \"cawsxtriplsfu\",\n \"publicKey\" : \"SPH", +"7PGFVzzbiunAqHv7eG1uh9WuhVHPq9fEg2fzy2yA", +"ATy6dBoXwW\",\n \"balance\" : 53220883814", +"3\n}, \n{\n \"ETH_account\" : \"0x4c089456d", +"94898f430ab5e2fb2b071eb1adf7864\",\n \"n", +"ame\" : \"0x4c089456d94898f430\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 151461000", +"\n}, \n{\n \"ETH_account\" : \"0x87d61c57e2", +"7696c7d26206cc68d297d4a124a215\",\n \"na", +"me\" : \"0x87d61c57e27696c7d2\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 1300000000", +"\n}, \n{\n \"ETH_account\" : \"0xd990433aa9", +"16e483adee933a616887e1a4479b50\",\n \"na", +"me\" : \"0xd990433aa916e483ad\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 501589300\n", +"}, \n{\n \"ETH_account\" : \"0xaa730ef82e9", +"a476b9f8156db362bdec21e80a615\",\n \"nam", +"e\" : \"0xaa730ef82e9a476b9f\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 1637000000\n", +"}, \n{\n \"ETH_account\" : \"0xe0ece575692", +"7a3619e311b9d9de98fea3c3c8787\",\n \"nam", +"e\" : \"0xe0ece5756927a3619e\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 23428000000", +"\n}, \n{\n \"ETH_account\" : \"0x7cb9f57bf9", +"f75185b1739062db495b94db0cfef1\",\n \"na", +"me\" : \"bluephilsix\",\n \"publicKey\" : \"", +"SPH6umEbDpFQ1YSsVrCN9pV6EVb347jus2zQGGBH", +"2j6sqA5y5S7ka\",\n \"balance\" : 10000000", +"0\n}, \n{\n \"ETH_account\" : \"0xa536655df", +"0e809cc8d019f8a673ec4ccfe6078c7\",\n \"n", +"ame\" : \"0xa536655df0e809cc8d\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 506500000", +"\n}, \n{\n \"ETH_account\" : \"0x35bb1d6778", +"64865cd62cf6f6cb47068869d8a530\",\n \"na", +"me\" : \"0x35bb1d677864865cd6\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 403755761\n", +"}, \n{\n \"ETH_account\" : \"0xe50775a92ed", +"9d87e009f60b46cba30dd7f4b3cb8\",\n \"nam", +"e\" : \"0xe50775a92ed9d87e00\",\n \"public", +"Key\" : \"SPH11111111111111111111111111111", +"11114T1Anm\",\n \"balance\" : 11319000000", +"\n}, \n{\n \"ETH_account\" : \"0xcd58bce1c8", +"da510e94ab193937295cd2557cb531\",\n \"na", +"me\" : \"0xcd58bce1c8da510e94\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 3111042154", +"\n}, \n{\n \"ETH_account\" : \"0x9b1a7fd861", +"c56b26cefdb34e624a7fc742edb0a4\",\n \"na", +"me\" : \"0x9b1a7fd861c56b26ce\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2087315000", +"0\n}, \n{\n \"ETH_account\" : \"0x0424b5801", +"2b879831169e94de5051a47277cf841\",\n \"n", +"ame\" : \"0x0424b58012b8798311\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 112625582", +"00\n}, \n{\n \"ETH_account\" : \"0x0dd3e1c5", +"2f217e29ff6ca0c8eb26631a99ff3238\",\n \"", +"name\" : \"sphtxswapx\",\n \"publicKey\" : ", +"\"SPH67W7Aj2vuRJb3v71cKDL6bReKyZn7HpTNSyG", +"JUN3Hu8tV2zR2z\",\n \"balance\" : 2500000", +"00\n}, \n{\n \"ETH_account\" : \"0xa01a92d4", +"9feef7a94270102525a8ddaba11cf23c\",\n \"", +"name\" : \"0xa01a92d49feef7a942\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 19600000", +"00\n}, \n{\n \"ETH_account\" : \"0x3418bc35", +"42e3989d56dcb03d7777fa151bb63ef9\",\n \"", +"name\" : \"0x3418bc3542e3989d56\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 83144280", +"18\n}, \n{\n \"ETH_account\" : \"0x284c0033", +"7ac1b555387e0690bd5a82fc6d083db8\",\n \"", +"name\" : \"0x284c00337ac1b55538\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 49757599", +"29\n}, \n{\n \"ETH_account\" : \"0x1992514e", +"1082499406120ccf1d5254a30f9fe6de\",\n \"", +"name\" : \"gingfinger\",\n \"publicKey\" : ", +"\"SPH5YLFfWz8ZdZPcAwM7DrGGrcggnLoyM89Doks", +"vLWFskf8LvP2Sa\",\n \"balance\" : 2478392", +"867\n}, \n{\n \"ETH_account\" : \"0x225961f", +"97def6a3c6da2a2d4f80b3d69157ab8a4\",\n ", +"\"name\" : \"0x225961f97def6a3c6d\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 9715000", +"000\n}, \n{\n \"ETH_account\" : \"0xf8cea13", +"4cdb9db583300c4dd9c695174244f82f3\",\n ", +"\"name\" : \"0xf8cea134cdb9db5833\",\n \"pu", +"blicKey\" : \"SPH1111111111111111111111111", +"111111114T1Anm\",\n \"balance\" : 1004655", +"170\n}, \n{\n \"ETH_account\" : \"0xcd8a309", +"5a941defeaf14e4976d2c757794439692\",\n ", +"\"name\" : \"rmsophiatx\",\n \"publicKey\" :", +" \"SPH7qHMJ5WihQFKMXjdgEe7CgbmSN9GmGBqbur", +"hszT617tbPoFqYY\",\n \"balance\" : 400000", +"0\n}, \n{\n \"ETH_account\" : \"0x77b8fd435", +"eff7ee02a9f5e1351ddf77c10c18326\",\n \"n", +"ame\" : \"0x77b8fd435eff7ee02a\",\n \"publ", +"icKey\" : \"SPH111111111111111111111111111", +"1111114T1Anm\",\n \"balance\" : 264281853", +"25\n}, \n{\n \"ETH_account\" : \"0xbfc62ae2", +"ebc305f6b3ab2f2c855c30e26bbbbee7\",\n \"", +"name\" : \"0xbfc62ae2ebc305f6b3\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 99217500", +"00\n}, \n{\n \"ETH_account\" : \"0x23d8e12b", +"a10003acc5ba60002ddb6128e54bc5cc\",\n \"", +"name\" : \"boom\",\n \"publicKey\" : \"SPH7A", +"9GupBg5ekCXYfk4LYjv8fnDm51R3S7gdfzPeo61z", +"f9Ya7AVF\",\n \"balance\" : 3425000000\n},", +" \n{\n \"ETH_account\" : \"0xa0888e44ec3b5", +"a311c1316c4d1be44578d023fc3\",\n \"name\"", +" : \"0xa0888e44ec3b5a311c\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 275715518\n}, ", +"\n{\n \"ETH_account\" : \"0x2e383bcddcb205", +"83d93e93a4af575a6db1c92546\",\n \"name\" ", +": \"0x2e383bcddcb20583d9\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 11454233800\n},", +" \n{\n \"ETH_account\" : \"0x62b32a3d148c0", +"e5c78256805eb4da3da7be4a93e\",\n \"name\"", +" : \"tokenalain\",\n \"publicKey\" : \"SPH6", +"eAGEnc79tLQsq1nqFW6bZhQCySWrGq4rB3CLqd4X", +"zmFgt4Ji2\",\n \"balance\" : 140000000\n},", +" \n{\n \"ETH_account\" : \"0x48406c8dd3651", +"fc3ed94e101e602fe415aa0f888\",\n \"name\"", +" : \"decembertoken\",\n \"publicKey\" : \"S", +"PH7uAkn3f6XdsfyYH7wQTgD52vhm8y7xff5JeKgA", +"U38jWSuwug4T\",\n \"balance\" : 100000000", +"\n}, \n{\n \"ETH_account\" : \"0x8b627d7e59", +"9bd09de5221b4a80cc31fb013b4bda\",\n \"na", +"me\" : \"0x8b627d7e599bd09de5\",\n \"publi", +"cKey\" : \"SPH1111111111111111111111111111", +"111114T1Anm\",\n \"balance\" : 2518588000", +"\n}, \n{\n \"ETH_account\" : \"0xaf6bcf3725", +"2903a1d839139bb920005d8e8c9c1e\",\n \"na", +"me\" : \"muid\",\n \"publicKey\" : \"SPH5RW8", +"cHC2CKtANmCgk2mNihpJBV4bFz3WPXJH4NCBZAU7", +"D1zpFb\",\n \"balance\" : 253700000\n}, \n{", +"\n \"ETH_account\" : \"0x0384df33fc059741", +"25794707caaeb14f51a0e1ca\",\n \"name\" : ", +"\"0x0384df33fc05974125\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 7029000000\n}, \n{", +"\n \"ETH_account\" : \"0xe66540143076c032", +"1017c420f96f0570f877bd1b\",\n \"name\" : ", +"\"0xe66540143076c03210\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 2002523983\n}, \n{", +"\n \"ETH_account\" : \"0x5cafe5d7e9a9a122", +"6b96bbbedb5fab1e21de86fd\",\n \"name\" : ", +"\"0x5cafe5d7e9a9a1226b\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 13606340338\n}, \n", +"{\n \"ETH_account\" : \"0x1bf872592c64ff9", +"e735366ec4152daa19ad45e77\",\n \"name\" :", +" \"0x1bf872592c64ff9e73\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 10100000000\n}, ", +"\n{\n \"ETH_account\" : \"0x7721f041514819", +"fadf047c790124e65a199de466\",\n \"name\" ", +": \"jmy\",\n \"publicKey\" : \"SPH7SkdMWY7R", +"69GDG5iQReU57AnrBNAckpFH1Z2ZgKdHhvvSg9mj", +"J\",\n \"balance\" : 22856000000\n}, \n{\n ", +" \"ETH_account\" : \"0x3bbc2de66365a5ee830", +"b31fc0ce294a0e370346c\",\n \"name\" : \"0x", +"3bbc2de66365a5ee83\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 8571577238\n}, \n{\n ", +" \"ETH_account\" : \"0x58798a244fe0fa9b026", +"f29e1856ca145f2a7b548\",\n \"name\" : \"0x", +"58798a244fe0fa9b02\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 158100000\n}, \n{\n ", +" \"ETH_account\" : \"0x727dbaa53030f1df7cf8", +"cee014a7dac1633b3362\",\n \"name\" : \"0x7", +"27dbaa53030f1df7c\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 2096911644\n}, \n{\n ", +" \"ETH_account\" : \"0x630c1a2a46269402b578", +"636485c708e11e509aa9\",\n \"name\" : \"0x6", +"30c1a2a46269402b5\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 138920000\n}, \n{\n ", +"\"ETH_account\" : \"0xc677e066284face940584", +"d274200aa73b3f5d0d7\",\n \"name\" : \"0xc6", +"77e066284face940\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 559866000\n}, \n{\n \"", +"ETH_account\" : \"0x58ff7c164e9c7e23e27c94", +"31ad67171526eabbf6\",\n \"name\" : \"0x58f", +"f7c164e9c7e23e2\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 23714718834\n}, \n{\n ", +"\"ETH_account\" : \"0xe386d1421d9ffad796cc8", +"efb5ccaf19830844ec7\",\n \"name\" : \"camo", +"ka\",\n \"publicKey\" : \"SPH6DT5whUz6NiQv", +"apJquCqS4MsQLbj5Buuo1GZgDWxYymLWkUNXW\",\n", +" \"balance\" : 1111994000\n}, \n{\n \"ET", +"H_account\" : \"0xdd70fd82bba8e45200df93eb", +"941c8200ff9c4d23\",\n \"name\" : \"0xdd70f", +"d82bba8e45200\",\n \"publicKey\" : \"SPH11", +"11111111111111111111111111111114T1Anm\",\n", +" \"balance\" : 300000000\n}, \n{\n \"ETH", +"_account\" : \"0x68f4f8b70fff0e2f7667e37db", +"20d3b3f4bf14788\",\n \"name\" : \"federico", +"genoni\",\n \"publicKey\" : \"SPH7BUf3LR7z", +"ueb9Q9MURFHAUns3aW6uuV43RZZVSGGbezTSjY2o", +"4\",\n \"balance\" : 6235192053\n}, \n{\n ", +" \"ETH_account\" : \"0xb37c82619e098d02ced9", +"b1902b103f07e1c7a95b\",\n \"name\" : \"0xb", +"37c82619e098d02ce\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 3538275740\n}, \n{\n ", +" \"ETH_account\" : \"0x55792b9b83e400db2ad0", +"7a70715fb58d0a562842\",\n \"name\" : \"0x5", +"5792b9b83e400db2a\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 738407100\n}, \n{\n ", +"\"ETH_account\" : \"0x382488889ad47db58ffc3", +"c3b69a07845603e38f9\",\n \"name\" : \"pal\"", +",\n \"publicKey\" : \"SPH5fdQ4rUo5yJWvmKb", +"nq2ZbiCWHbPEw2hJMQ1u6U1kh9oPSVfYfL\",\n ", +" \"balance\" : 268400860\n}, \n{\n \"ETH_ac", +"count\" : \"0x685d863fed687b4a4b67d49aeac9", +"f2234ed5e80f\",\n \"name\" : \"0x685d863fe", +"d687b4a4b\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1000000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xf2efe6cd8def6f8e9a81ab839ca7", +"4ffae46a9dae\",\n \"name\" : \"ficovababka", +"\",\n \"publicKey\" : \"SPH6MhaGzGDesFHUDU", +"oexySyYup6QAJKojHnRw5ZYCzjX47Fs9n9t\",\n ", +" \"balance\" : 10137492900\n}, \n{\n \"ETH", +"_account\" : \"0xd574000f93401a57bcfcf0594", +"43cc36ed73c166c\",\n \"name\" : \"0xd57400", +"0f93401a57bc\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 46071645200\n}, \n{\n \"ET", +"H_account\" : \"0xf5c5aa7b579d4c4a0640bfa5", +"609ec7f5bee718d4\",\n \"name\" : \"actyper", +"\",\n \"publicKey\" : \"SPH5dcNxvsLP2g4Bz9", +"Vyvwi9i8uy9oLtCvxwq9s5xkAdvSWynH5Z7\",\n ", +" \"balance\" : 660566504\n}, \n{\n \"ETH_a", +"ccount\" : \"0x8378c03a6092665740891d409fd", +"831d6dbc896ec\",\n \"name\" : \"0x8378c03a", +"6092665740\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1459891883\n}, \n{\n \"ETH_a", +"ccount\" : \"0x83b237e04c490299780de243ac8", +"46c266508653f\",\n \"name\" : \"0x83b237e0", +"4c49029978\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1730000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xd5ef1b2bce8af35c06f6595ef0f", +"4d14799bc86c7\",\n \"name\" : \"0xd5ef1b2b", +"ce8af35c06\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1664000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xe6c8e870601c89e224d946e3b3b", +"5d2107c4324a5\",\n \"name\" : \"0xe6c8e870", +"601c89e224\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 7706159359\n}, \n{\n \"ETH_a", +"ccount\" : \"0x4e5c4012860ff7301d7b49d6b7e", +"694c4062cf894\",\n \"name\" : \"0x4e5c4012", +"860ff7301d\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1171550000\n}, \n{\n \"ETH_a", +"ccount\" : \"0xe263dab7b769c4f420928ad565a", +"cee0dd84bd2b3\",\n \"name\" : \"0xe263dab7", +"b769c4f420\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 621240000\n}, \n{\n \"ETH_ac", +"count\" : \"0xb2d3df731ffa6d9d29225ccc7664", +"1b4064cf131c\",\n \"name\" : \"0xb2d3df731", +"ffa6d9d29\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 1382983453\n}, \n{\n \"ETH_ac", +"count\" : \"0x57e26d9a3675a42aa6c8e8d5aa2d", +"2120a1de066c\",\n \"name\" : \"0x57e26d9a3", +"675a42aa6\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 3306000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xd4b367b272e4b421b4925ec600f6", +"aebd992db0a6\",\n \"name\" : \"0xd4b367b27", +"2e4b421b4\",\n \"publicKey\" : \"SPH111111", +"1111111111111111111111111114T1Anm\",\n ", +"\"balance\" : 468751556\n}, \n{\n \"ETH_acc", +"ount\" : \"0x80a35c3086eb680e192072efd8036", +"adfe5ada804\",\n \"name\" : \"strovi\",\n ", +" \"publicKey\" : \"SPH6nGrjbeRPiVWa6g7UUugY", +"L1137TTWGrHZhQ8Lgpnh8mTLTJk6Q\",\n \"bal", +"ance\" : 6492893550\n}, \n{\n \"ETH_accoun", +"t\" : \"0x9c3db7578dc5e33a438c0b45f6103a0d", +"a3b1360b\",\n \"name\" : \"0x9c3db7578dc5e", +"33a43\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 2275153921\n}, \n{\n \"ETH_accoun", +"t\" : \"0xe242b5aa01fe2408b05e8a110e9525b9", +"c497baab\",\n \"name\" : \"0xe242b5aa01fe2", +"408b0\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 3341864867\n}, \n{\n \"ETH_accoun", +"t\" : \"0xf098c234674e4baa33321994d02f322a", +"c6440e9c\",\n \"name\" : \"0xf098c234674e4", +"baa33\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1305000000\n}, \n{\n \"ETH_accoun", +"t\" : \"0xf1703b74a51af4fc216b372be51a88bf", +"582220fa\",\n \"name\" : \"0xf1703b74a51af", +"4fc21\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 1098504000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x20faf326725d4b3a95ad482f02be7265", +"9d596275\",\n \"name\" : \"0x20faf326725d4", +"b3a95\",\n \"publicKey\" : \"SPH1111111111", +"111111111111111111111114T1Anm\",\n \"bal", +"ance\" : 9934163000\n}, \n{\n \"ETH_accoun", +"t\" : \"0x5e0c70268cbeb964d7f1cc137b93c970", +"7da4c587\",\n \"name\" : \"sphirish20tx\",\n", +" \"publicKey\" : \"SPH5YTiExjKW4iLVif4E6", +"poLGCATZRQmkXYY5bswT567fe2NvdXXh\",\n \"", +"balance\" : 3394081741\n}, \n{\n \"ETH_acc", +"ount\" : \"0x30d1073ac70e401cc47738a9375d3", +"24392e84c34\",\n \"name\" : \"saphirevin\",", +"\n \"publicKey\" : \"SPH6Y8bSFddhs1XBe5YT", +"tiEwyEDTj1zu3KLq6Y2HrrnugBLFSimYX\",\n ", +"\"balance\" : 5480000000\n}, \n{\n \"ETH_ac", +"count\" : \"0xd53d99fbce1f563dd67a52878981", +"27ed86848a09\",\n \"name\" : \"cryptocoine", +"r\",\n \"publicKey\" : \"SPH5LfPNmKFkYnKBf", +"HxK9X3QoRUoPqV7V5UUd7zjq4w4seYQB5HKj\",\n ", +" \"balance\" : 2779361224\n}, \n{\n \"ETH", +"_account\" : \"0x063f6c1f0144d19637789ff6e", +"9773d0fdd7a549b\",\n \"name\" : \"fireball", +"\",\n \"publicKey\" : \"SPH6WDCWfgNYjqezkr", +"zeE7vQLgcaTpGap17dmYxTevv3VWcQGiPH5\",\n ", +" \"balance\" : 305036787\n}, \n{\n \"ETH_a", +"ccount\" : \"0x1244da1d383838d4a0b2b7d89b1", +"7182432fe0cb5\",\n \"name\" : \"0x1244da1d", +"383838d4a0\",\n \"publicKey\" : \"SPH11111", +"11111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1686000000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x4f2659d0b580fcb8cb335c16ce1", +"1b568fb19cab1\",\n \"name\" : \"sophiayoko", +"hama\",\n \"publicKey\" : \"SPH6uBhCoTUjTE", +"dWi3KQ54UfiGonTcLhYSgAW9p7gzMYtYhuYsyYh\"", +",\n \"balance\" : 6427072734\n}, \n{\n \"", +"ETH_account\" : \"0x07a546004c6d9a5bcada59", +"6b87421a2515a36186\",\n \"name\" : \"0x07a", +"546004c6d9a5bca\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 1077000000\n}, \n{\n \"", +"ETH_account\" : \"0x177e7ab39f0c8b95cc02cb", +"d57af549dc1825071e\",\n \"name\" : \"0x177", +"e7ab39f0c8b95cc\",\n \"publicKey\" : \"SPH", +"1111111111111111111111111111111114T1Anm\"", +",\n \"balance\" : 78736907000\n}, \n{\n ", +"\"ETH_account\" : \"0xa5e9740d0c75e92335e40", +"b3018aed0b0772c5366\",\n \"name\" : \"0xa5", +"e9740d0c75e92335\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 4800000000\n}, \n{\n ", +"\"ETH_account\" : \"0x1e675e05153fdd5ec6222", +"5afcda52074edd735df\",\n \"name\" : \"hhfc", +"\",\n \"publicKey\" : \"SPH7fMEFcaEyoJVP4L", +"LrVKASNg53fZpjc3e4XKSrvxNddspNgLyUq\",\n ", +" \"balance\" : 303550000\n}, \n{\n \"ETH_a", +"ccount\" : \"0x0b5e48a210a439d5b3189de453d", +"4f18b513f25f8\",\n \"name\" : \"jjnozo\",\n ", +" \"publicKey\" : \"SPH58HYHTNVhMc4Y9AnFPi", +"Q4WB4VWpjQP7Qaj8Q3HB7ixuE43w66t\",\n \"b", +"alance\" : 5000000000\n}, \n{\n \"ETH_acco", +"unt\" : \"0x7c477fef290c426fb8e05aaf478507", +"546068345e\",\n \"name\" : \"sophiatxmagic", +"\",\n \"publicKey\" : \"SPH7UsZp9pep1PKtGG", +"cQjHiPL37r4SwTP2m9nBa3HgANVnmhYkc6F\",\n ", +" \"balance\" : 4641370000\n}, \n{\n \"ETH_", +"account\" : \"0xa52248e897c596d9dabd517a0c", +"41b016b0afa2e7\",\n \"name\" : \"0xa52248e", +"897c596d9da\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 1098000000\n}, \n{\n \"ETH_", +"account\" : \"0xc29c211674882e571c0630d5f1", +"9bca4f47bf4702\",\n \"name\" : \"parvesh\",", +"\n \"publicKey\" : \"SPH4xTnnyTSZXiEgH8n5", +"ahEPqHYtBCRzsbroq1nVDW7Deo7dc4UvK\",\n ", +"\"balance\" : 1749999633\n}, \n{\n \"ETH_ac", +"count\" : \"0x89cc45da9aee67525add90a626af", +"fbfb91aac374\",\n \"name\" : \"wolfganghoe", +"hl\",\n \"publicKey\" : \"SPH8MeXgExwM16qb", +"qgj1zvzeH1oNuAmXCoZoCVdCZPsfYDvphD5pf\",\n", +" \"balance\" : 11647199771\n}, \n{\n \"E", +"TH_account\" : \"0x1401508387ecae174e07d6d", +"0738ba720134bdb4a\",\n \"name\" : \"0x1401", +"508387ecae174e\",\n \"publicKey\" : \"SPH1", +"111111111111111111111111111111114T1Anm\",", +"\n \"balance\" : 234148000000\n}, \n{\n ", +"\"ETH_account\" : \"0x865dde7fec2997fcd3a08", +"14cff439a462036371c\",\n \"name\" : \"0x86", +"5dde7fec2997fcd3\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 17323220931\n}, \n{\n ", +" \"ETH_account\" : \"0x0d462924bb9d24000ae9", +"2a3f7c9aba5c905f2a13\",\n \"name\" : \"0x0", +"d462924bb9d24000a\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 112420000\n}, \n{\n ", +"\"ETH_account\" : \"0x644f0d5f19f8fb1eb3556", +"85159b2e6a228d0c72d\",\n \"name\" : \"0x64", +"4f0d5f19f8fb1eb3\",\n \"publicKey\" : \"SP", +"H1111111111111111111111111111111114T1Anm", +"\",\n \"balance\" : 4405277312\n}, \n{\n ", +"\"ETH_account\" : \"0xd9bcd1787bad02b70f875", +"1ae2659a9830763595b\",\n \"name\" : \"char", +"lz\",\n \"publicKey\" : \"SPH66E1Pz3fEi348", +"AHxsiYbYH7j4vrdVF54e5ekCJAqcgAkGd2ZFr\",\n", +" \"balance\" : 400000000\n}, \n{\n \"ETH", +"_account\" : \"0x0212f6deb8435082863c2c7ec", +"bb9d363e0f98860\",\n \"name\" : \"0x0212f6", +"deb843508286\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 315617849\n}, \n{\n \"ETH_", +"account\" : \"0x632fdc961a38f7592a4d023c16", +"3e456387f5c785\",\n \"name\" : \"0x632fdc9", +"61a38f7592a\",\n \"publicKey\" : \"SPH1111", +"111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 15026007000\n}, \n{\n \"ETH", +"_account\" : \"0x903a8df43fdcefff00a7b64c3", +"0b44641b8fb3eb6\",\n \"name\" : \"0x903a8d", +"f43fdcefff00\",\n \"publicKey\" : \"SPH111", +"1111111111111111111111111111114T1Anm\",\n ", +" \"balance\" : 329130168700\n}, \n{\n \"E", +"TH_account\" : \"0xb4fc8b124498077911e3a9e", +"4a2a93c36d092b410\",\n \"name\" : \"chschn", +"eiatsoph\",\n \"publicKey\" : \"SPH7p4QZh8", +"BURSJbvxgGFwinVHhW3dhXrshRXGbzjfCDZiGJrw", +"98a\",\n \"balance\" : 316000000\n}, \n{\n ", +" \"ETH_account\" : \"0x7e3c18250888f081653", +"a6d731c517ea8706af7a7\",\n \"name\" : \"0x", +"7e3c18250888f08165\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 645065448\n}, \n{\n ", +" \"ETH_account\" : \"0x43a126dc05ed791b0580", +"0734aa84bf5ad5a0a80e\",\n \"name\" : \"kup", +"kakekrew\",\n \"publicKey\" : \"SPH7WRLDSR", +"qSNxADt9bAUE2LDvfGm15hgKacgQxAVkSMUoiGKk", +"XgK\",\n \"balance\" : 982550000\n}, \n{\n ", +" \"ETH_account\" : \"0x376cabb52c062433dd3", +"3b16e1b87c5bb5801d41d\",\n \"name\" : \"ge", +"rlierosesophia\",\n \"publicKey\" : \"SPH7", +"rgqfqchgvdPLpzuzUtD6Wrg6qwcyHYKR4pwHdifE", +"w49CcQuzf\",\n \"balance\" : 232550000\n},", +" \n{\n \"ETH_account\" : \"0xb6a375b7215e9", +"cc9baaa619f2d23e3fc74ae3c20\",\n \"name\"", +" : \"0xb6a375b7215e9cc9ba\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 97673683\n}, \n", +"{\n \"ETH_account\" : \"0xd1e70841518fd41", +"94a8ef7a9777851a4d1d85a57\",\n \"name\" :", +" \"igloosphtx\",\n \"publicKey\" : \"SPH7no", +"hkYFXzHQxyozQzPYxLC2jQCR78qyWxk41Jy3FdZJ", +"qNbj69Y\",\n \"balance\" : 7720639678\n}, ", +"\n{\n \"ETH_account\" : \"0xed806b44473c5f", +"511328719254cc3893c3edd7f7\",\n \"name\" ", +": \"0xed806b44473c5f5113\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 400000000\n}, \n", +"{\n \"ETH_account\" : \"0x3814dd3bf6c79df", +"f442aa1ce78f3dc8ca668ba2d\",\n \"name\" :", +" \"transfer\",\n \"publicKey\" : \"SPH72UU5", +"gyNS6g278wbXkdFLrKK5wXyL7mArc25Mqr1FaPtQ", +"q6VyF\",\n \"balance\" : 39515359502\n}, \n", +"{\n \"ETH_account\" : \"0xd5b72627fc7fa32", +"f455c9e6f8804021bc881150e\",\n \"name\" :", +" \"0xd5b72627fc7fa32f45\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 639000000\n}, \n{", +"\n \"ETH_account\" : \"0x71b0e23802a53889", +"5e95e34b7b07a3dc3d3dc271\",\n \"name\" : ", +"\"0x71b0e23802a538895e\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 14030636400\n}, \n", +"{\n \"ETH_account\" : \"0xe8ab8017a9bdb48", +"68b815328a303e53a4f3f6d4f\",\n \"name\" :", +" \"dfa\",\n \"publicKey\" : \"SPH72o4anCh68", +"98YqMNMmskikMSjT3H9wnD556rTrzeKEGM1Auoyo", +"\",\n \"balance\" : 38569393870\n}, \n{\n ", +" \"ETH_account\" : \"0xaf1f448e3fe36e9b3e78", +"41272164d4a5ea2fc9f1\",\n \"name\" : \"fly", +"upmoon\",\n \"publicKey\" : \"SPH55zf2Lc54", +"t9T2gWuTbpsVQeg19xnf4Wnx4P6Px5yut4GEF25S", +"A\",\n \"balance\" : 243536000000\n}, \n{\n ", +" \"ETH_account\" : \"0x3782ee596b94538c0a", +"17926488e52098d15f51d3\",\n \"name\" : \"r", +"obcrypto\",\n \"publicKey\" : \"SPH5AaTuuw", +"4R5YHBm4J6KPzDN97YexdyRm2RTZkfmANjtCYach", +"7Wv\",\n \"balance\" : 1819013945\n}, \n{\n ", +" \"ETH_account\" : \"0xddb3d951717936b51d", +"5f80651ee8343c834980d8\",\n \"name\" : \"0", +"xddb3d951717936b51d\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 1331000000\n}, \n{\n ", +" \"ETH_account\" : \"0x44113e90b39bbd5e32", +"f255955d53fd70c94b2e4d\",\n \"name\" : \"z", +"abchdqr\",\n \"publicKey\" : \"SPH7Kf3ATy9", +"WzYC9X3XkWNqTNxNKryci6LM4UQTxnNci2pJLqaw", +"Yi\",\n \"balance\" : 1207896722\n}, \n{\n ", +" \"ETH_account\" : \"0x9144cb3d07c22082c13", +"e954d3b698b85efbc7023\",\n \"name\" : \"0x", +"9144cb3d07c22082c1\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 1593870641\n}, \n{\n ", +" \"ETH_account\" : \"0x825c6840b35726d1f96", +"a1af02c52bd33443ff1c0\",\n \"name\" : \"0x", +"825c6840b35726d1f9\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 234057366\n}, \n{\n ", +" \"ETH_account\" : \"0xa04e084b4865f8b40d14", +"64f85b434318f8cd0ab1\",\n \"name\" : \"0xa", +"04e084b4865f8b40d\",\n \"publicKey\" : \"S", +"PH1111111111111111111111111111111114T1An", +"m\",\n \"balance\" : 516479581\n}, \n{\n ", +"\"ETH_account\" : \"0x421b1533c81ce31352c0a", +"e5f90c24459012bc751\",\n \"name\" : \"jaza", +"niahjaden\",\n \"publicKey\" : \"SPH8eK1zB", +"KtkPsC972beTzLkZcy7WSVqd8TjHg6eXTkcuSJTG", +"QCJ3\",\n \"balance\" : 606237846\n}, \n{\n ", +" \"ETH_account\" : \"0xfd920417a707c61f83", +"cece0656a64c54f2b054d2\",\n \"name\" : \"0", +"xfd920417a707c61f83\",\n \"publicKey\" : ", +"\"SPH1111111111111111111111111111111114T1", +"Anm\",\n \"balance\" : 500000000\n}, \n{\n ", +" \"ETH_account\" : \"0xcc46c12ed2e2ee6e76d", +"6d2264c6747587b88c04e\",\n \"name\" : \"0x", +"cc46c12ed2e2ee6e76\",\n \"publicKey\" : \"", +"SPH1111111111111111111111111111111114T1A", +"nm\",\n \"balance\" : 982000000\n}, \n{\n ", +" \"ETH_account\" : \"0x88dc2d6fe8cc3c461b92", +"94ca9b381a00e86f8347\",\n \"name\" : \"sop", +"hiatxwallet\",\n \"publicKey\" : \"SPH688C", +"jH1c1QAC61K7goB5yLxccc6yWpSaYzjtxE13vouJ", +"LGw9sG\",\n \"balance\" : 592550000\n}, \n{", +"\n \"ETH_account\" : \"0x29a3f36468021044", +"8677c5fda25e35c3004cd935\",\n \"name\" : ", +"\"0x29a3f3646802104486\",\n \"publicKey\" ", +": \"SPH1111111111111111111111111111111114", +"T1Anm\",\n \"balance\" : 200000000\n}, \n{\n", +" \"ETH_account\" : \"0x5bf04d4be742df84a", +"58df70d6a46b1ef6db7432b\",\n \"name\" : \"", +"vladimirzeman\",\n \"publicKey\" : \"SPH8h", +"nhYo3mb1yt4rfgwbrHe29aqsS1tV3sT7W5onvtWr", +"BKDKnCSA\",\n \"balance\" : 60561690555\n}", +", \n{\n \"ETH_account\" : \"0xf5fcba08a68f", +"155245ea9ea2830c64b97a32d647\",\n \"name", +"\" : \"salmonofwisdom\",\n \"publicKey\" : ", +"\"SPH8jV9Kg2evdYEbAtaVA2uncxqLEfpWkCCVcZB", +"LpEgRoVsqW93gE\",\n \"balance\" : 6265500", +"00\n}, \n{\n \"ETH_account\" : \"0xde7628b1", +"36963ecc284eba4666c9a8c38be75002\",\n \"", +"name\" : \"0xde7628b136963ecc28\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10561858", +"00\n}, \n{\n \"ETH_account\" : \"0x51885a4f", +"89e4b83efd34405ff0e421295c11bd44\",\n \"", +"name\" : \"0x51885a4f89e4b83efd\",\n \"pub", +"licKey\" : \"SPH11111111111111111111111111", +"11111114T1Anm\",\n \"balance\" : 10411960", +"0973\n}, \n{\n \"ETH_account\" : \"0xe3fade", +"f284b5dcfda6777453a929fbdd375f4fbe\",\n ", +" \"name\" : \"0xe3fadef284b5dcfda6\",\n \"p", +"ublicKey\" : \"SPH111111111111111111111111", +"1111111114T1Anm\",\n \"balance\" : 388691", +"88691\n}, \n{\n \"ETH_account\" : \"0xc2694", +"1f9ac6bc89802097a6408c96ba661184dc4\",\n ", +" \"name\" : \"heisme95827\",\n \"publicKey", +"\" : \"SPH7h4KtRQL9DaHaPT1TL4qq8XAVbs58SWX", +"J3yKE9sMGC5tkYPpiU\",\n \"balance\" : 210", +"53827896\n}, \n{\n \"ETH_account\" : \"0x80", +"4ac6f74d1bad65a6c398bd59b79578ed733588\",", +"\n \"name\" : \"javedsphtxrci\",\n \"publ", +"icKey\" : \"SPH6MdzzZzbzgNrUsMZxg2KhLdU719", +"LFFhB9GjnU5vFygdKQHAeUU\",\n \"balance\" ", +": 630754940\n}, \n{\n \"ETH_account\" : \"0", +"x6e80d9024f81c8676d4d22896a1f21652b65019", +"1\",\n \"name\" : \"flesphtx\",\n \"public", +"Key\" : \"SPH8QxpPB57ek92sfUvmkf4SzQV37yBA", +"dfsfwQM9BHm91Zki3Vxns\",\n \"balance\" : ", +"543550000\n}, \n{\n \"ETH_account\" : \"0xd", +"b382f4c926142d095215467d2727ae60d6c85f8\"", +",\n \"name\" : \"chetan\",\n \"publicKey\"", +" : \"SPH6JhoSMfqkhxcrog1zco3rmh2bNFXT9esr", +"K9tjyh7Kd7tkrJQzP\",\n \"balance\" : 2000", +"00000\n}, \n{\n \"ETH_account\" : \"0xabb69", +"887468b7bfaac753d9980ed8880a68ed5e8\",\n ", +" \"name\" : \"0xabb69887468b7bfaac\",\n \"", +"publicKey\" : \"SPH11111111111111111111111", +"11111111114T1Anm\",\n \"balance\" : 42164", +"1000\n}, \n{\n \"ETH_account\" : \"0x19a427", +"631bffcdc1102d7585fb5e0052b1de76a4\",\n ", +" \"name\" : \"sophiatxcode\",\n \"publicKey", +"\" : \"SPH551oLreZ13A4eW196J6uWTFu7ty9kj7w", +"gzapZ3nV6JtQYWpYQf\",\n \"balance\" : 993", +"444148\n}, \n{\n \"ETH_account\" : \"0x79a1", +"4910689b6c055a1fc4e4ef85925c1382c634\",\n ", +" \"name\" : \"ledgersphtxfa\",\n \"public", +"Key\" : \"SPH8ZkoWq53LkQwMoSJ7YPQfxtxwwE3E", +"DFGNXQ4MDtM4N3HZd5nKL\",\n \"balance\" : ", +"182871408\n}, \n{\n \"ETH_account\" : \"0x0", +"3dffb5789578849900cd60a4c0c384633d194c8\"", +",\n \"name\" : \"0x03dffb578957884990\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 4", +"500000000\n}, \n{\n \"ETH_account\" : \"0x0", +"ff605819e53780928977f87a7cb2d387267a9e3\"", +",\n \"name\" : \"0x0ff605819e53780928\",\n ", +" \"publicKey\" : \"SPH1111111111111111111", +"111111111111114T1Anm\",\n \"balance\" : 1", +"18414592\n}, \n{\n \"ETH_account\" : \"0x40", +"df1e21ac3d7658ff62a38d95f0004eb4a52e10\",", +"\n \"name\" : \"skurysphtx\",\n \"publicK", +"ey\" : \"SPH7pqeWiC4tvoZH81gcWTotwnvnRHA8D", +"NiUSXjwAaDH7XVqCzNAt\",\n \"balance\" : 7", +"52678692\n}, \n{\n \"ETH_account\" : \"0x4e", +"0e0c3241741756d1a1dc764c7c51362785174b\",", +"\n \"name\" : \"sophiatex\",\n \"publicKe", +"y\" : \"SPH7MWfX6pzWfAexPF5soZWGxYjTjr3a4t", +"S3JiWbSkc3aghuR4JBQ\",\n \"balance\" : 43", +"1759686\n}, \n{\n \"ETH_account\" : \"0x244", +"de0468620cb10c0a240a0a8cdb07478588385\",\n", +" \"name\" : \"alejo\",\n \"publicKey\" : ", +"\"SPH8LWi3aUxtPTMwVfapZfTLcSDZHoPv7hptsYh", +"GxXjKTwWZJyTb3\",\n \"balance\" : 3266623", +"000\n}, \n{\n \"ETH_account\" : \"0x622447f", +"7a63bda1fa241bb43b6aa1cb41c9f42c6\",\n ", +"\"name\" : \"rpetrice\",\n \"publicKey\" : \"", +"SPH7eNkVZfaeaVpJxQH9n5HEVpSUopb4tems6iYS", +"EwriSh3eUeUr1\",\n \"balance\" : 10000000", +"\n}, \n{\n \"ETH_account\" : \"0xad73b15106", +"76798599a8e18fd70997846638e61c\",\n \"na", +"me\" : \"sosoph\",\n \"publicKey\" : \"SPH7y", +"JhfydK65S99b77GSHuBE61DzXSjLzGsrCPtMnboR", +"pkgTqJrJ\",\n \"balance\" : 360550000\n}, ", +"\n{\n \"ETH_account\" : \"0x0cd25ac6fe3945", +"78a837554ba85c793e891df769\",\n \"name\" ", +": \"marcuitsphtx\",\n \"publicKey\" : \"SPH", +"57cARXg7KvAKkYYkiepj1Wh13crCch7MPX4ANRJN", +"n39UM4hTm4\",\n \"balance\" : 216550000\n}", +", \n{\n \"ETH_account\" : \"0x26c96c9a559d", +"92e4e26b0db5c5dccebc067b94fb\",\n \"name", +"\" : \"0x26c96c9a559d92e4e2\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 1992000000\n}", +", \n{\n \"ETH_account\" : \"0x63c35cbbe091", +"b2fcabb1cf1504b1f092390e0de4\",\n \"name", +"\" : \"petricek\",\n \"publicKey\" : \"SPH73", +"zAs8gnv6qXDP5w72GwQfrWozgg4W456ZdUhSHKAd", +"47cpwWCK\",\n \"balance\" : 10000000\n}, \n", +"{\n \"ETH_account\" : \"0x5721ae7b6369c4d", +"fa2202af34465e126b67e64eb\",\n \"name\" :", +" \"blackexhausttips\",\n \"publicKey\" : \"", +"SPH5Kxs8VnBwbWzDKFNPVpYXtcsKtmE4vou9zRSu", +"E49xSoz1e7Jre\",\n \"balance\" : 26655000", +"0\n}, \n{\n \"ETH_account\" : \"0x63839f948", +"717b4548797521a1eb1d5be8c7edc1e\",\n \"n", +"ame\" : \"rpetricek\",\n \"publicKey\" : \"S", +"PH5aD4awwV3xWt8jXeiN5bvc8zwB3uhF2tBXi7Rz", +"2DrtwjEehSeM\",\n \"balance\" : 10000000\n", +"}, \n{\n \"ETH_account\" : \"0x91237dfc2f7", +"a96b28aa103080dbf4cad056a879b\",\n \"nam", +"e\" : \"newcoins\",\n \"publicKey\" : \"SPH5", +"YvDLE1YoELWWeKa18MgGFFcmopDubJZzcNo6wWbR", +"e3b6wDY6Q\",\n \"balance\" : 456458782\n},", +" \n{\n \"ETH_account\" : \"0xc37c74a49b82c", +"ea3ac7d64d9d6f5dcdd0e02aa27\",\n \"name\"", +" : \"xxforsalon\",\n \"publicKey\" : \"SPH8", +"6t37k5zEMAe6hWFJdmDrRFSZgJiMvTvftQ1UBRWm", +"kLJh4Kxsd\",\n \"balance\" : 1580944788\n}", +", \n{\n \"ETH_account\" : \"0x516a6aed4501", +"7d0c78ed2b451e575364b3a80374\",\n \"name", +"\" : \"0x516a6aed45017d0c78\",\n \"publicK", +"ey\" : \"SPH111111111111111111111111111111", +"1114T1Anm\",\n \"balance\" : 170000000\n},", +" \n{\n \"ETH_account\" : \"0x1fcba1c8bb169", +"2067fd327da3334231b2d507b99\",\n \"name\"", +" : \"0x1fcba1c8bb1692067f\",\n \"publicKe", +"y\" : \"SPH1111111111111111111111111111111", +"114T1Anm\",\n \"balance\" : 291000000\n}, ", +"\n{\n \"ETH_account\" : \"0xf6a12e3792dc82", +"a81add956adde7aa3e3912d80f\",\n \"name\" ", +": \"0xf6a12e3792dc82a81a\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 1000000000\n}, ", +"\n{\n \"ETH_account\" : \"0x07013b9765f4b5", +"5340d56143547ab1a1b82e70ff\",\n \"name\" ", +": \"0x07013b9765f4b55340\",\n \"publicKey", +"\" : \"SPH11111111111111111111111111111111", +"14T1Anm\",\n \"balance\" : 564228075\n}, \n", +"{\n \"ETH_account\" : \"0xcc28ce54f0bc4fc", +"a89d0a3fa1b8adca994bb240d\",\n \"name\" :", +" \"0xcc28ce54f0bc4fca89\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 2376741966\n}, \n", +"{\n \"ETH_account\" : \"0x7d45f22814a9c88", +"2d707e4dd10d2c55841280fe2\",\n \"name\" :", +" \"0x7d45f22814a9c882d7\",\n \"publicKey\"", +" : \"SPH111111111111111111111111111111111", +"4T1Anm\",\n \"balance\" : 667564062\n}\n ", +"],\n \"genesis_time\" :\"2018-07-24T11:00:", +"00\",\n \"initial_chain_id\" : \"\"\n}\n\n" +}; + +chain_id_type get_egenesis_chain_id() +{ + return chain_id_type( "c6c45e1dc73503491d4ac152de95d4e7b4ae4ee70d7e4a2991f1ee5d487776a9" ); +} + +void compute_egenesis_json( std::string& result ) +{ + result.reserve( 1419075 ); + result.resize(0); + for( size_t i=0; i<35477-1; i++ ) + { + result.append( genesis_json_array[i], 40 ); + } + result.append( std::string( genesis_json_array[ 35477-1 ] ) ); + return; +} + +fc::sha256 get_egenesis_json_hash() +{ + return fc::sha256( "c6c45e1dc73503491d4ac152de95d4e7b4ae4ee70d7e4a2991f1ee5d487776a9" ); +} + +} } diff --git a/libraries/egenesis/egenesis_full.cpp.tmpl b/libraries/egenesis/egenesis_full.cpp.tmpl new file mode 100644 index 00000000..68ff1bf9 --- /dev/null +++ b/libraries/egenesis/egenesis_full.cpp.tmpl @@ -0,0 +1,54 @@ +${generated_file_banner} +/* + * Copyright (c) 2015, Cryptonomex, Inc. + * All rights reserved. + * + * This source code is provided for evaluation in private test networks only, until September 8, 2015. After this date, this license expires and + * the code may not be used, modified or distributed for any purpose. Redistribution and use in source and binary forms, with or without modification, + * are permitted until September 8, 2015, provided that the following conditions are met: + * + * 1. The code and/or derivative works are used only for private test networks consisting of no more than 10 P2P nodes. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +namespace sophiatx { namespace egenesis { + +using namespace sophiatx::chain; + +static const char genesis_json_array[${genesis_json_array_height}$][${genesis_json_array_width}$+1] = +{ +${genesis_json_array}$ +}; + +chain_id_type get_egenesis_chain_id() +{ + return chain_id_type( "${chain_id}$" ); +} + +void compute_egenesis_json( std::string& result ) +{ + result.reserve( ${genesis_json_length}$ ); + result.resize(0); + for( size_t i=0; i<${genesis_json_array_height}$-1; i++ ) + { + result.append( genesis_json_array[i], ${genesis_json_array_width}$ ); + } + result.append( std::string( genesis_json_array[ ${genesis_json_array_height}$-1 ] ) ); + return; +} + +fc::sha256 get_egenesis_json_hash() +{ + return fc::sha256( "${genesis_json_hash}" ); +} + +} } diff --git a/libraries/egenesis/egenesis_none.cpp b/libraries/egenesis/egenesis_none.cpp new file mode 100644 index 00000000..6c626810 --- /dev/null +++ b/libraries/egenesis/egenesis_none.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2015 Cryptonomex, Inc., and contributors. + * + * The MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include + +namespace sophiatx { namespace egenesis { + +using namespace sophiatx::chain; + +chain_id_type get_egenesis_chain_id() +{ + return chain_id_type(); +} + +void compute_egenesis_json( std::string& result ) +{ + result = ""; +} + +fc::sha256 get_egenesis_json_hash() +{ + return fc::sha256::hash( "" ); +} + +} } diff --git a/libraries/egenesis/embed_genesis.cpp b/libraries/egenesis/embed_genesis.cpp new file mode 100644 index 00000000..03986b39 --- /dev/null +++ b/libraries/egenesis/embed_genesis.cpp @@ -0,0 +1,291 @@ +/* + * Copyright (c) 2015 Cryptonomex, Inc., and contributors. + * + * The MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include + +#include +#include // required for gcc in release mode +#include +#include +#include +#include +#include + +using namespace sophiatx::chain; + +static const char generated_file_banner[] = +"// _ _ __ _ _ //\n" +"// | | | | / _(_) | //\n" +"// __ _ ___ _ __ ___ _ __ __ _| |_ ___ __| | | |_ _| | ___ //\n" +"// / _` |/ _ \\ '_ \\ / _ \\ '__/ _` | __/ _ \\/ _` | | _| | |/ _ \\ //\n" +"// | (_| | __/ | | | __/ | | (_| | || __/ (_| | | | | | | __/ //\n" +"// \\__, |\\___|_| |_|\\___|_| \\__,_|\\__\\___|\\__,_| |_| |_|_|\\___| //\n" +"// __/ | //\n" +"// |___/ //\n" +"// //\n" +"// Generated by: libraries/chain_id/identify_chain.cpp //\n" +"// //\n" +"// Warning: This is a generated file, any changes made here will be //\n" +"// overwritten by the build process. If you need to change what //\n" +"// is generated here, you should use the CMake variable //\n" +"// SOPHIATX_EGENESIS_JSON to specify an embedded genesis state. //\n" +"// //\n" +; + + +genesis_state_type create_example_genesis(){ + sophiatx::chain::genesis_state_type::initial_account_type example_account("test", SOPHIATX_INIT_PUBLIC_KEY, SOPHIATX_INIT_SUPPLY); + genesis_state_type ret; + ret.initial_balace = 0; + ret.initial_accounts.push_back(example_account); + return ret; +}; + + +fc::path get_path( + const boost::program_options::variables_map& options, + const std::string& name ) +{ + fc::path result = options[name].as(); + if( result.is_relative() ) + result = fc::current_path() / result; + return result; +} + +void convert_to_c_array( + const std::string& src, + std::string& dest, + int width = 40 ) +{ + dest.reserve( src.length() * 6 / 5 ); + bool needs_comma = false; + int row = 0; + for( std::string::size_type i=0; i': case '@': + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': + case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': + case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': + case '[': case ']': case '^': case '_': case '`': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': + case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': + case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': + case '{': case '|': case '}': case '~': + dest.append(&c, 1); + break; + + // use shortest octal escape for everything else + default: + dest.append("\\"); + char dg[3]; + dg[0] = '0' + ((c >> 6) & 3); + dg[1] = '0' + ((c >> 3) & 7); + dg[2] = '0' + ((c ) & 7); + int start = (dg[0] == '0' ? (dg[1] == '0' ? 2 : 1) : 0); + dest.append( dg+start, 3-start ); + } + } + dest.append("\""); + needs_comma = true; + row++; + } + std::cerr << "\n"; + return; +} + +struct egenesis_info +{ + fc::optional< genesis_state_type > genesis; + fc::optional< chain_id_type > chain_id; + fc::optional< std::string > genesis_json; + fc::optional< fc::sha256 > genesis_json_hash; + fc::optional< std::string > genesis_json_array; + int genesis_json_array_width, + genesis_json_array_height; + + void fillin() + { + // must specify either genesis_json or genesis + if( genesis.valid() ) + { + if( !genesis_json.valid() ) + // If genesis_json not exist, generate from genesis + genesis_json = fc::json::to_string( *genesis ); + } + else if( genesis_json.valid() ) + { + // If genesis not exist, generate from genesis_json + genesis = fc::json::from_string( *genesis_json ).as< genesis_state_type >(); + } + else + { + // Neither genesis nor genesis_json exists, crippled + std::cerr << "embed_genesis: Need genesis or genesis_json\n"; + exit(1); + } + // init genesis_json_hash from genesis_json + if( !genesis_json_hash.valid() ) + genesis_json_hash = fc::sha256::hash( *genesis_json ); + // init chain_id from genesis_json_hash + if( !chain_id.valid() ) + chain_id = genesis_json_hash; + // init genesis_json_array from genesis_json + if( !genesis_json_array.valid() ) + { + genesis_json_array = std::string(); + // TODO: gzip + int width = 40; + convert_to_c_array( *genesis_json, *genesis_json_array, width ); + int height = (genesis_json->length() + width-1) / width; + genesis_json_array_width = width; + genesis_json_array_height = height; + } + } +}; + +void load_genesis( + const boost::program_options::variables_map& options, + egenesis_info& info + ) +{ + if( options.count("genesis-json") ) + { + fc::path genesis_json_filename = get_path( options, "genesis-json" ); + std::cerr << "embed_genesis: Reading genesis from file " << genesis_json_filename.preferred_string() << "\n"; + info.genesis_json = std::string(); + read_file_contents( genesis_json_filename, *info.genesis_json ); + } + else + info.genesis = create_example_genesis(); + + if( options.count("chain-id") ) + { + std::string chain_id_str = options["chain-id"].as(); + std::cerr << "embed_genesis: Genesis ID from argument is " << chain_id_str << "\n"; + info.chain_id = chain_id_str; + } + return; +} + +int main( int argc, char** argv ) +{ + int main_return = 0; + boost::program_options::options_description cli_options("Graphene Chain Identifier"); + cli_options.add_options() + ("help,h", "Print this help message and exit.") + ("genesis-json,g", boost::program_options::value(), "File to read genesis state from") + ("tmplsub,t", boost::program_options::value >()->composing(), + "Given argument of form src.cpp.tmpl---dest.cpp, write dest.cpp expanding template invocations in src") + ; + + boost::program_options::variables_map options; + try + { + boost::program_options::store( boost::program_options::parse_command_line(argc, argv, cli_options), options ); + } + catch (const boost::program_options::error& e) + { + std::cerr << "embed_genesis: error parsing command line: " << e.what() << "\n"; + return 1; + } + + if( options.count("help") ) + { + std::cout << cli_options << "\n"; + return 0; + } + + egenesis_info info; + + load_genesis( options, info ); + info.fillin(); + + fc::mutable_variant_object template_context = fc::mutable_variant_object() + ( "generated_file_banner", generated_file_banner ) + ( "chain_id", (*info.chain_id).str() ) + ; + if( info.genesis_json.valid() ) + { + template_context["genesis_json_length"] = info.genesis_json->length(); + template_context["genesis_json_array"] = (*info.genesis_json_array); + template_context["genesis_json_hash"] = (*info.genesis_json_hash).str(); + template_context["genesis_json_array_width"] = info.genesis_json_array_width; + template_context["genesis_json_array_height"] = info.genesis_json_array_height; + } + + for( const std::string& src_dest : options["tmplsub"].as< std::vector< std::string > >() ) + { + std::cerr << "embed_genesis: parsing tmplsub parameter \"" << src_dest << "\"\n"; + size_t pos = src_dest.find( "---" ); + if( pos == std::string::npos ) + { + std::cerr << "embed_genesis: could not parse tmplsub parameter: '---' not found\n"; + main_return = 1; + continue; + } + std::string src = src_dest.substr( 0, pos ); + std::string dest = src_dest.substr( pos+3 ); + + std::string tmpl; + read_file_contents( fc::path( src ), tmpl ); + std::string out_str = fc::format_string( tmpl, template_context ); + fc::path dest_filename = fc::path( dest ); + fc::ofstream outfile( dest_filename ); + outfile.write( out_str.c_str(), out_str.size() ); + outfile.close(); + } + + return main_return; +} diff --git a/libraries/egenesis/genesis.json b/libraries/egenesis/genesis.json new file mode 100644 index 00000000..a2331793 --- /dev/null +++ b/libraries/egenesis/genesis.json @@ -0,0 +1,42742 @@ +{ + "initial_public_key" : "SPH7VNqGPfHXVu7try6KqdxG1feVt3SDwgkXZYdw44jkWdrUNDBhY", + "initial_balace" : 1000001363, + "initial_accounts" : + [ +{ + "ETH_account" : "0x7a7b6aafd46beb765848337568b46fa9235bc78c", + "name" : "lenaltman", + "publicKey" : "SPH7k5hcKq6Vm1uJAzYkhtVHtWNmYdLzVz27zj7pi18jB2jSkQ8yL", + "balance" : 89141184764 +}, +{ + "ETH_account" : "0xb9c88624c8b59990645b28fa34a18d551549f441", + "name" : "0xb9c88624c8b5999064", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33 +}, +{ + "ETH_account" : "0xfc9c1fc04b84875ef46fff184785478f051d5e30", + "name" : "0xfc9c1fc04b84875ef4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2071986058 +}, +{ + "ETH_account" : "0x57554746d78a31df22e5a9a57250a68827dfd504", + "name" : "0x57554746d78a31df22", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1568682797 +}, +{ + "ETH_account" : "0x66efd6167021c9d1793d6ebac5068c7b96189dda", + "name" : "0x66efd6167021c9d179", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6733 +}, +{ + "ETH_account" : "0x8369dd6732fea921bdf6c92538abcbaa6c9be2c6", + "name" : "0x8369dd6732fea921bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66 +}, +{ + "ETH_account" : "0xdd77c46a6f39a7de6be5628d4d5af7523d76f771", + "name" : "0xdd77c46a6f39a7de6b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7777605386 +}, +{ + "ETH_account" : "0xbbf52f84df70c70d58b50b6bcf4ec90254d7eb13", + "name" : "0xbbf52f84df70c70d58", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19 +}, +{ + "ETH_account" : "0x98cda62cb3e1b96aae5ba5c4ed49ea7f7c384987", + "name" : "0x98cda62cb3e1b96aae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3366 +}, +{ + "ETH_account" : "0xd78a5c443c7c30b13d394c1d8cbf48dfd93079e2", + "name" : "mgineer", + "publicKey" : "SPH53VVQnz4JL9VG2n5ZroRJvynsedpFZjwcjHKCyQFkkSonevNBg", + "balance" : 21945220653 +}, +{ + "ETH_account" : "0x97d1063d58b9591cd6e2f611e8e1946dcbcbf93d", + "name" : "0x97d1063d58b9591cd6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3373536336 +}, +{ + "ETH_account" : "0x0342d1a7e22baa5410ee8c72873e7a67c7b20c77", + "name" : "0x0342d1a7e22baa5410", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99 +}, +{ + "ETH_account" : "0x2f2e0f8678eda4babff95c341fd2ca4793ccf76f", + "name" : "0x2f2e0f8678eda4babf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66 +}, +{ + "ETH_account" : "0x8d12a197cb00d4747a1fe03395095ce2a5cc6819", + "name" : "0x8d12a197cb00d4747a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000762161981 +}, +{ + "ETH_account" : "0x7eb39ba964132497b5e734a9f19352b7bf1c1b2e", + "name" : "0x7eb39ba964132497b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65 +}, +{ + "ETH_account" : "0xbf8887fc01b2cb22dddf6129c7dc6302ca59a350", + "name" : "0xbf8887fc01b2cb22dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 93 +}, +{ + "ETH_account" : "0x1c84eee83a26caf505e45f3736291365e77574f6", + "name" : "0x1c84eee83a26caf505", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 471240 +}, +{ + "ETH_account" : "0x775d8bb769448c20a545c582088db5bff3751e84", + "name" : "0x775d8bb769448c20a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14583010099 +}, +{ + "ETH_account" : "0x5cf35d539634aea83d494ec0dfdff9b2dbe8fc78", + "name" : "0x5cf35d539634aea83d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66 +}, +{ + "ETH_account" : "0x18d7339d6f3ef1569c691019046ea54163eeccbc", + "name" : "0x18d7339d6f3ef1569c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1190545349 +}, +{ + "ETH_account" : "0x628658b52bd8ed4bb32788b48604fd74cf2f640a", + "name" : "0x628658b52bd8ed4bb3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3 +}, +{ + "ETH_account" : "0xbc595da2877a258a431226ac8a337a80127b0856", + "name" : "0xbc595da2877a258a43", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 31983 +}, +{ + "ETH_account" : "0xa07a9002a1be93301df889f1bd04b1904b24762d", + "name" : "0xa07a9002a1be93301d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000020 +}, +{ + "ETH_account" : "0x2abd16bc6a64fedfc221efb5950aef13fd398397", + "name" : "0x2abd16bc6a64fedfc2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 41 +}, +{ + "ETH_account" : "0xa2a826452cf39bfdd15086a7167f22a877f5048c", + "name" : "0xa2a826452cf39bfdd1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66 +}, +{ + "ETH_account" : "0x6c6fa1938a03e41c8dd7af30384d21471becbce8", + "name" : "0x6c6fa1938a03e41c8d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3366 +}, +{ + "ETH_account" : "0xb10d4d83491e7be1f9451065c9dc5909b717a28c", + "name" : "0xb10d4d83491e7be1f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6733 +}, +{ + "ETH_account" : "0x635041f527accff7eac09bbac24605d5308717c1", + "name" : "0x635041f527accff7ea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 35 +}, +{ + "ETH_account" : "0x5b35061cc9891c3616ea05d1423e4cbcfddf1829", + "name" : "0x5b35061cc9891c3616", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4861003366 +}, +{ + "ETH_account" : "0x66fcb0b6d006d27748dd4087d9134eb56e0946d1", + "name" : "0x66fcb0b6d006d27748", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 940200673 +}, +{ + "ETH_account" : "0x4f61101356f7a9fafaf67fcd5c3e11b658930e23", + "name" : "0x4f61101356f7a9fafa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 32 +}, +{ + "ETH_account" : "0xd22974164c9cf8c5267982d22c57a628340aec08", + "name" : "0xd22974164c9cf8c526", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19 +}, +{ + "ETH_account" : "0x7ded6b31e0198779cbac733150cd4bb446a64c14", + "name" : "0x7ded6b31e0198779cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1458301009 +}, +{ + "ETH_account" : "0xa3bf55377d46d1ddfce36092890d0ff8e3d88bbf", + "name" : "0xa3bf55377d46d1ddfc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16833 +}, +{ + "ETH_account" : "0xf38f2725310f266032d7bae522b2a2e053d6c2f0", + "name" : "0xf38f2725310f266032", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 673 +}, +{ + "ETH_account" : "0x6b3f661dd76c553471bdc0f1d0aab31383eaa412", + "name" : "0x6b3f661dd76c553471", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10099 +}, +{ + "ETH_account" : "0x7feee4d29851b5839a62ef6006ee43a037e98f84", + "name" : "0x7feee4d29851b5839a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30 +}, +{ + "ETH_account" : "0x8bbcae3e2fbad85c061a9b8279793a1de3e9deb3", + "name" : "0x8bbcae3e2fbad85c06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 44555733787 +}, +{ + "ETH_account" : "0x08206fb90e016610f9cde480a2ab13ad171210b0", + "name" : "0x08206fb90e016610f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 34 +}, +{ + "ETH_account" : "0x8b30a9c2de959bbd1904caf65c4065880918f987", + "name" : "0x8b30a9c2de959bbd19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 623504419 +}, +{ + "ETH_account" : "0xf237c7e52e7c0632f25c4ce0d2b632aa114f968b", + "name" : "0xf237c7e52e7c0632f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1655211108 +}, +{ + "ETH_account" : "0xc2923d3bd296bba2ae298a0c70d727c82cda2ace", + "name" : "0xc2923d3bd296bba2ae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33 +}, +{ + "ETH_account" : "0x94ef531595ffe510f8dc92e0e07a987f57784338", + "name" : "0x94ef531595ffe510f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4861003366 +}, +{ + "ETH_account" : "0xdc2ebbce39063b7f41f563ce124bb42ebae0b194", + "name" : "0xdc2ebbce39063b7f41", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5006833467 +}, +{ + "ETH_account" : "0xdaefeb3cb9c35729806dec893be6473cc99f7fda", + "name" : "0xdaefeb3cb9c3572980", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4138852638 +}, +{ + "ETH_account" : "0x64bfd0be84a48cb0a7bc662b6696461b7423953a", + "name" : "0x64bfd0be84a48cb0a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 97280067333 +}, +{ + "ETH_account" : "0x1c8fb701967baf8c588fa96748de289740a0d15f", + "name" : "0x1c8fb701967baf8c58", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 486100336 +}, +{ + "ETH_account" : "0x38b2197106123387a0d4de368431a8bacdda30e2", + "name" : "0x38b2197106123387a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 267355185166 +}, +{ + "ETH_account" : "0xf779939ba353d1fd1c0bc91180bbca339ac9e9d1", + "name" : "0xf779939ba353d1fd1c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5467985261 +}, +{ + "ETH_account" : "0xec0a9ffd3c2ef5fc88166b655dbb821d801af328", + "name" : "0xec0a9ffd3c2ef5fc88", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4032306729 +}, +{ + "ETH_account" : "0x8ddac589d703e854e22f71b8f2fb6efce134e5c0", + "name" : "0x8ddac589d703e854e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 81 +}, +{ + "ETH_account" : "0xaafacad8450296e02525baf1412ded16b7649bd4", + "name" : "0xaafacad8450296e025", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9722006733 +}, +{ + "ETH_account" : "0xd23f5e4b18a6062c9b634466504d99436367b151", + "name" : "0xd23f5e4b18a6062c9b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 596915901 +}, +{ + "ETH_account" : "0xac5b785afa2b13456761a5224453327bbb6bc0e5", + "name" : "0xac5b785afa2b134567", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 43689891046 +}, +{ + "ETH_account" : "0x8b584cf38bfe7d50809bbc2a622c7bd118a82577", + "name" : "0x8b584cf38bfe7d5080", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 990000 +}, +{ + "ETH_account" : "0xb3564e977b2990eabec176f26fd53b667745af7d", + "name" : "0xb3564e977b2990eabe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000026933 +}, +{ + "ETH_account" : "0x7f4a382b254636dc9f819abf4cc34f05b4733b13", + "name" : "0x7f4a382b254636dc9f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 43749047133 +}, +{ + "ETH_account" : "0x203e9cfd431db3ac1c23f7267671522801ccdae9", + "name" : "0x203e9cfd431db3ac1c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5784594006 +}, +{ + "ETH_account" : "0xc63146cd5330ae8bb87eb912e77e57bf4b9c88ce", + "name" : "chinwaikong", + "publicKey" : "SPH5mC4UmPYsHWWk1RQa46dYb9htHzdBFdKNNvNy3WJmjEvPtWd2w", + "balance" : 486100336 +}, +{ + "ETH_account" : "0xb811c0ffcb5865370a5ebb3ae98384bf0fde5ccc", + "name" : "zoad", + "publicKey" : "SPH82xvesCvbNwHTS3CB7dNmiMLgYGfzGE7LHmKwKKZvZ4pUnhuY2", + "balance" : 402123082673 +}, +{ + "ETH_account" : "0xb4cdc33562148e745c2a7c8809735d23eb0cd3c3", + "name" : "0xb4cdc33562148e745c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1999 +}, +{ + "ETH_account" : "0x4daf690a5f8a466cb49b424a776ad505d2cd7b7d", + "name" : "0x4daf690a5f8a466cb4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 475299181799 +}, +{ + "ETH_account" : "0x4e5663d2098ee3948199441f74235b7ae75fafca", + "name" : "0x4e5663d2098ee39481", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 49 +}, +{ + "ETH_account" : "0xd1277ab154da1e77acf6498e4feb0e23dbf4e6be", + "name" : "0xd1277ab154da1e77ac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50168 +}, +{ + "ETH_account" : "0x1fe31f397604f85e9b74aa5c99fed81ff8084adf", + "name" : "yabsilboy", + "publicKey" : "SPH8Q44jDVEVunJjT3HnFDbeVRKzNiEUkBVF7EFFP4oGLa1anq6Tb", + "balance" : 72785635221 +}, +{ + "ETH_account" : "0x1499bb338d94c5bc2f1ae126db6c8d2fc500e7cf", + "name" : "0x1499bb338d94c5bc2f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20328109566 +}, +{ + "ETH_account" : "0xc1c828de7733d6025200042783285a61b9895eb2", + "name" : "0xc1c828de7733d60252", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19444013466 +}, +{ + "ETH_account" : "0x757ef533bc4169ec3fa9af673ef7d87c705a5e0a", + "name" : "0x757ef533bc4169ec3f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 622538979 +}, +{ + "ETH_account" : "0xe2076fc824e67b752f40b5a61b58def1e60b7e19", + "name" : "sedex", + "publicKey" : "SPH5oUKQ7yqRU49BGNsRLSfUWFjWqXVhvczPeiKXk1fAi34T1HnWM", + "balance" : 9722006733 +}, +{ + "ETH_account" : "0xa7c95e8d8dbd108ce67550ce1bf60d6bdb3b705d", + "name" : "0xa7c95e8d8dbd108ce6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2423 +}, +{ + "ETH_account" : "0x7b98cde1c2b21e753f90aefbdd02d764c80a4881", + "name" : "0x7b98cde1c2b21e753f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4861003366 +}, +{ + "ETH_account" : "0x751f6102a51047d148e510c20ff88c60ec9a9d9f", + "name" : "0x751f6102a51047d148", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66 +}, +{ + "ETH_account" : "0xe9056ecfabead2dd16efae3215ed9da65bea6156", + "name" : "0xe9056ecfabead2dd16", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66 +}, +{ + "ETH_account" : "0x27b24e69918c5a9636bee45d6313dd22f406f873", + "name" : "0x27b24e69918c5a9636", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24305016833 +}, +{ + "ETH_account" : "0xa013ff8dca16219c125eec19be3b2cc5a63d505c", + "name" : "0xa013ff8dca16219c12", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8072500526 +}, +{ + "ETH_account" : "0xbfb0cece9e3bdc3af46640ddc99c07f6c408e808", + "name" : "0xbfb0cece9e3bdc3af4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60 +}, +{ + "ETH_account" : "0xe5389809fedfb0225719d136d9734845a7252542", + "name" : "0xe5389809fedfb02257", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33 +}, +{ + "ETH_account" : "0xddf11cad4d1ff8fb47b74e8828b7ba1f9c46f3d3", + "name" : "0xddf11cad4d1ff8fb47", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2758619410 +}, +{ + "ETH_account" : "0x5b3f79bd1805cfc7caade5535def734db1839b68", + "name" : "0x5b3f79bd1805cfc7ca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 700000000 +}, +{ + "ETH_account" : "0xc57ea67750ded06a98763d5251f062785eabf8f6", + "name" : "0xc57ea67750ded06a98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3402702356 +}, +{ + "ETH_account" : "0xc452b2cca2ee29fe5f65fae360294cb750637ed3", + "name" : "0xc452b2cca2ee29fe5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99 +}, +{ + "ETH_account" : "0xc16109b3ecf51dfa9a46461cef821ce1e2647e2a", + "name" : "0xc16109b3ecf51dfa9a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3366 +}, +{ + "ETH_account" : "0x89aa2f6d129c1fe84fdcc6d8bc71f53808ee053b", + "name" : "0x89aa2f6d129c1fe84f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 534710370 +}, +{ + "ETH_account" : "0xfb8de55bab1a97da653dc7fd314e39d99564edcf", + "name" : "0xfb8de55bab1a97da65", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7291505049 +}, +{ + "ETH_account" : "0x8f197adf29ed886321d981edebd2e8344a910341", + "name" : "0x8f197adf29ed886321", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8752006733 +}, +{ + "ETH_account" : "0xccb0279c61cacbce92a11ddbac01781b183527d9", + "name" : "0xccb0279c61cacbce92", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 73525570696 +}, +{ + "ETH_account" : "0x77c2c274b77613e8cbb96d6680eef8655d6ef7be", + "name" : "georgi", + "publicKey" : "SPH7wjgXn3dusVa8f8ontCgSFAFK9cmsCWKehUZ96wJPf5Q2t1Wnv", + "balance" : 70002159114 +}, +{ + "ETH_account" : "0x9e32271752ad2cbd1f3f03980496c237686e64f7", + "name" : "0x9e32271752ad2cbd1f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22846715823 +}, +{ + "ETH_account" : "0xed02d9831a56bfa997d8c071499b8af3fdff1052", + "name" : "0xed02d9831a56bfa997", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4768644302 +}, +{ + "ETH_account" : "0xb3cc7e75482009842e3bae0a46624808276b9411", + "name" : "0xb3cc7e75482009842e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3888802693 +}, +{ + "ETH_account" : "0x33918e5df85241cd957b05b3d9f6910e314370d0", + "name" : "0x33918e5df85241cd95", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4861003366 +}, +{ + "ETH_account" : "0x6946e3998aec4bffe79f0621b475ac67d878d3fb", + "name" : "0x6946e3998aec4bffe7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 49 +}, +{ + "ETH_account" : "0x95a0fa608563fcb2bfe63b1ac5fa17b9c5a3d79f", + "name" : "0x95a0fa608563fcb2bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28315028 +}, +{ + "ETH_account" : "0x3f7fb7bd171ea9804a05bd8e3ceaae674cfc868e", + "name" : "0x3f7fb7bd171ea9804a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6733 +}, +{ + "ETH_account" : "0x7b4723ef3faa4748ae8d53c876a68db0768d0e39", + "name" : "0x7b4723ef3faa4748ae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1167117417 +}, +{ + "ETH_account" : "0xdf3fff1b9c9e8fcf6a37e84c9218490689236f65", + "name" : "pihugarnaik", + "publicKey" : "SPH5kFa3XkiPFZPxCAPNka8GdMcjP9PKQpPLMu89JAExayrDuApmt", + "balance" : 11666408079 +}, +{ + "ETH_account" : "0x89a94b48b21d3b5f959305643d3c71dc88cc7fbc", + "name" : "cryptogen", + "publicKey" : "SPH7KLwffZ6gUenvqazsRxtP23nLth7xSDYwYr6xbraqFfML6QTQ9", + "balance" : 9746000000 +}, +{ + "ETH_account" : "0xdc65205f54c806535375d4eefded606cd957e66b", + "name" : "0xdc65205f54c8065353", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 91505049 +}, +{ + "ETH_account" : "0x6014d4081cdff8aa2b29f24c10af1b9f525110c5", + "name" : "0x6014d4081cdff8aa2b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2328445841 +}, +{ + "ETH_account" : "0xbd307baa0d36799cd7eaf27116f85ca0de8e9bed", + "name" : "0xbd307baa0d36799cd7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19438909413 +}, +{ + "ETH_account" : "0xa1b312e9d21b9bf1f631e7a765223af4279c4c5a", + "name" : "0xa1b312e9d21b9bf1f6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 79 +}, +{ + "ETH_account" : "0xac1645891c54cd077dd07dacd7467ebb179127ed", + "name" : "0xac1645891c54cd077d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1125341568 +}, +{ + "ETH_account" : "0xe857a8b02babc4fe91f36fd20bd47ad63a66a621", + "name" : "0xe857a8b02babc4fe91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 70219997333 +}, +{ + "ETH_account" : "0x219ddaa7b4ccb914625e0ff61e41464005c0e1d4", + "name" : "pjsabje", + "publicKey" : "SPH6qRUbXoFv5HJCMN1X3Uc1cN11j5ax4A2rSnUeUJ6pqqb3RRXz6", + "balance" : 3675314288 +}, +{ + "ETH_account" : "0x3fe666d86bb4b6cbfde503d4cda5fb18eece0454", + "name" : "0x3fe666d86bb4b6cbfd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1231505049 +}, +{ + "ETH_account" : "0xaff9e02af272964b5d09788419a5afe722b4a498", + "name" : "0xaff9e02af272964b5d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14587112487 +}, +{ + "ETH_account" : "0xa6d0c02766c5153bdbaae14b598de237ebd25ee7", + "name" : "0xa6d0c02766c5153bdb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3819542354 +}, +{ + "ETH_account" : "0x8d87e5f50934931041b6d434bbd0b90b1a6a11d0", + "name" : "0x8d87e5f50934931041", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66 +}, +{ + "ETH_account" : "0x6b58ba57caec1b54ffac809bcb3cc82ceaadbe49", + "name" : "0x6b58ba57caec1b54ff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 690134973 +}, +{ + "ETH_account" : "0x6e7dbb450531914ae2e9f5e8fa022cc71d26aea9", + "name" : "0x6e7dbb450531914ae2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x9d17c14a16dc04d2651fc087044eb86cafc2091c", + "name" : "0x9d17c14a16dc04d265", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900690 +}, +{ + "ETH_account" : "0x911023139bc0f73060616a76138594cb0c93ffdc", + "name" : "ctrevos", + "publicKey" : "SPH8AkjqDV6aFWCChoJAM4ze7W17o37bwpLDZmubbPevJMGWkxzsB", + "balance" : 5779818878121 +}, +{ + "ETH_account" : "0x16f47ce56ba90e12d6be71ec85093467a4aea367", + "name" : "0x16f47ce56ba90e12d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6918608454 +}, +{ + "ETH_account" : "0xb48eaf22121c5090df38caa3150be0872b9de6ce", + "name" : "0xb48eaf22121c5090df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14 +}, +{ + "ETH_account" : "0x283b5e9dbe16eae3c7210a01fb35000732aaed9e", + "name" : "esco", + "publicKey" : "SPH5WQkcbhJo4PCvQWruxEKX5jMUpSTvgdUtKbnEmTTyqKRqsJrwB", + "balance" : 45997105296 +}, +{ + "ETH_account" : "0x08ef720ca2596bad5333fedf818f1bc148d9b8c6", + "name" : "0x08ef720ca2596bad53", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 496321 +}, +{ + "ETH_account" : "0x60974faeb25f39e126f6b67ca49d3a439ba50f23", + "name" : "0x60974faeb25f39e126", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1711526951 +}, +{ + "ETH_account" : "0x00ec4388d27e0e8e4030c8b8381cb858b389842a", + "name" : "0x00ec4388d27e0e8e40", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 79831272500 +}, +{ + "ETH_account" : "0x4b88ffbc66fad86b3f626c4659f63a30b6a3dda3", + "name" : "sebastianr", + "publicKey" : "SPH6iSBp4bMfk68tUNoh6r4nehrHA4phqqvXKsyhVA8XqFMrYR7v1", + "balance" : 34040601007 +}, +{ + "ETH_account" : "0x9cc720a603045a5cd9c9617956c5dd1928b22b1d", + "name" : "corisophiatx", + "publicKey" : "SPH5UqhU2qCUCRzZ7UyKPPCsxKzW8RwsJ2XRfUGMcJDzwmKPjmcQi", + "balance" : 11682795240 +}, +{ + "ETH_account" : "0x7d212564df90ed03c7008eeecde6f2f4881a9cd2", + "name" : "bobsaget7594", + "publicKey" : "SPH5EJUJbd3ftGomGnLC8uMqWaZEgP5jHUZgpFeeV7SqS6PNC7QVF", + "balance" : 8030130204 +}, +{ + "ETH_account" : "0x0b7819053e523c47afee2656efe756a130d5a8e8", + "name" : "0x0b7819053e523c47af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1685079808 +}, +{ + "ETH_account" : "0x3fa5fef6dec2269504cd5f941159da2c494b4ba5", + "name" : "geezee", + "publicKey" : "5J5MDaoMw92szWqWd5yRU2YSopacaJYf98qdfmNTevdMjv2y4v9", + "balance" : 212883535257 +}, +{ + "ETH_account" : "0x6b97407dbfcb595ce679b02dd104b263b5292a52", + "name" : "0x6b97407dbfcb595ce6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1458301009 +}, +{ + "ETH_account" : "0x6f1b78c66724c4051e934e6157f191d8c1e65062", + "name" : "jongkwan", + "publicKey" : "SPH65nzMXDe34H8yQVB5b6asJmtgBNbNCvF5iZtXqH8QHAeoxsQti", + "balance" : 47896453714 +}, +{ + "ETH_account" : "0xd0b2580057355e9a83b753cd2fbf8e3897ed4576", + "name" : "0xd0b2580057355e9a83", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000000000 +}, +{ + "ETH_account" : "0xedf8c9afe494b39e5bd60d24d13b42710354e540", + "name" : "0xedf8c9afe494b39e5b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1149571090 +}, +{ + "ETH_account" : "0xb90df25fb60922c201c01c9a1eac79c26d3ea22f", + "name" : "0xb90df25fb60922c201", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2768582308 +}, +{ + "ETH_account" : "0x038dc9e95c3e766f187af3569bb6d338071864f8", + "name" : "sopeli", + "publicKey" : "SPH5ByihdwHSaMoYGsNjeEqdSQRCW4B9sNX1thV6tKs2JbVXbC72W", + "balance" : 10717305509 +}, +{ + "ETH_account" : "0x794d85bfede9c2ea7d26506dd3355df15eee2e00", + "name" : "sophiatxswapluke", + "publicKey" : "SPH53rfKsZkvSDmpCnsNMUjdv8LrpaM4j1JF6nwHVimTz7N3Magw8", + "balance" : 2192700413 +}, +{ + "ETH_account" : "0xc0c16e7240f6fed4abedfedc66014031521807e7", + "name" : "0xc0c16e7240f6fed4ab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99 +}, +{ + "ETH_account" : "0x062011983059e4275ad09ca7872b4fcd806c0f4a", + "name" : "sophiatxcom", + "publicKey" : "SPH8T4XAD1VbGpfLbkGkD9jREqHPWvjxionTZ3a6J5vE2J85p2f4N", + "balance" : 38640124727 +}, +{ + "ETH_account" : "0x5e7cfebd2c7d4ec7734dbea41fc37f85871ee7c9", + "name" : "0x5e7cfebd2c7d4ec773", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 268669 +}, +{ + "ETH_account" : "0x9739b1310e6ed7cf91ad1998f46e0a2c00ac1783", + "name" : "0x9739b1310e6ed7cf91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 34189263684 +}, +{ + "ETH_account" : "0x4f2446915ec4f2f31af9f46e098636eac9fd7885", + "name" : "sophiardnldxxzm", + "publicKey" : "SPH5Wv4CrraThNRiDMV13jw6AmLkZo1VzCVwPDbZZYd5fU5iKxwdx", + "balance" : 11767869198 +}, +{ + "ETH_account" : "0x3d615aa5caf59655312f4b1b7619c43f4cfb96af", + "name" : "0x3d615aa5caf5965531", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 425767070514 +}, +{ + "ETH_account" : "0x92283a01994e0bf63f246e4bc4e093d195f1cdd4", + "name" : "0x92283a01994e0bf63f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 105324129 +}, +{ + "ETH_account" : "0xb4450bc0c152cb75045e06e72e70b3abdbc8399c", + "name" : "aursof", + "publicKey" : "SPH7Ud8NcatiS27NeFGjPmEZfz8gR4t4cjEabubMZEx4JEKDjyupc", + "balance" : 1714107014 +}, +{ + "ETH_account" : "0xf3a1f29a7c061d5f5fc5581e068597b301cea594", + "name" : "0xf3a1f29a7c061d5f5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 106441767628 +}, +{ + "ETH_account" : "0xb8a96e91817afdb90f94012342ea6de5fe3bd54c", + "name" : "0xb8a96e91817afdb90f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 143 +}, +{ + "ETH_account" : "0xa0a2051bd656fcb794b64c49c8adc9e69460364a", + "name" : "keramkicvel", + "publicKey" : "SPH73ZjiQYL8DKnFPWFN43P5mUxyh7oL9EGosU6NytS521Mgdkw77", + "balance" : 47318112764 +}, +{ + "ETH_account" : "0xbf38f569d1cf1f635ac4d9b5da29f06663110865", + "name" : "0xbf38f569d1cf1f635a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 795432 +}, +{ + "ETH_account" : "0x112b5f9403285b32473e7d83d289e17de2f20e3a", + "name" : "0x112b5f9403285b3247", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7000000000 +}, +{ + "ETH_account" : "0xb51af46f9fd962d8f78e2f1b3e1fd1469a82778a", + "name" : "0xb51af46f9fd962d8f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 730000 +}, +{ + "ETH_account" : "0x3be48c6ebc235df52c3160bed00f32f4014c8d70", + "name" : "0x3be48c6ebc235df52c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2028859525 +}, +{ + "ETH_account" : "0x0f6fb5fa1b960e1c3ac193732db8fb40b2d02169", + "name" : "0x0f6fb5fa1b960e1c3a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33 +}, +{ + "ETH_account" : "0x698455f2a26ca12f1941efc4e6a6af483bb88842", + "name" : "0x698455f2a26ca12f19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23 +}, +{ + "ETH_account" : "0x2462e24574ec8471054b02d2bc175c921f21ce1f", + "name" : "0x2462e24574ec847105", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 48067984622 +}, +{ + "ETH_account" : "0x0482617a7ea8ccf1bd61ee3d35b8d247e970e6e0", + "name" : "aydanlovesanimes", + "publicKey" : "SPH6XDqjP1kd6sE6VHoCRAsypMtbRuaWJ65FMZR6gEhUSTRszriLP", + "balance" : 10688006733 +}, +{ + "ETH_account" : "0xc2962211e0349ad7e5b0cb6c4d358c1fbfaedae8", + "name" : "jvper", + "publicKey" : "SPH7gremGs8FTrNWBKKzPN3wveGCqYb5LGnKqfS1ZXHssn4xDqPdz", + "balance" : 1300000000 +}, +{ + "ETH_account" : "0xbe42c652cf7d1247d8045a8e0b25db49c6c0afea", + "name" : "0xbe42c652cf7d1247d8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000006733 +}, +{ + "ETH_account" : "0xb12a380bb925f8e2a766a2d50b1b39d371fe115b", + "name" : "0xb12a380bb925f8e2a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1370550365 +}, +{ + "ETH_account" : "0xd78b56d3b1cc6c7638d6a9f67cebbb73f0a6e52d", + "name" : "0xd78b56d3b1cc6c7638", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16030253352 +}, +{ + "ETH_account" : "0xb8e63a24dc898201867d251d93564a0caf2d35e8", + "name" : "0xb8e63a24dc89820186", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 74 +}, +{ + "ETH_account" : "0x1aab05fc1dc2f20db03559496c2e96299ac3c545", + "name" : "gutielgrande", + "publicKey" : "SPH71q9Duy1nGkWiKxkq9usMM7xfvcQSExSwyxZMbERAYJNvNZTU1", + "balance" : 14079357911 +}, +{ + "ETH_account" : "0x08e11b7ce4cbc246dd50d3904b37faa4e32d34c8", + "name" : "0x08e11b7ce4cbc246dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53 +}, +{ + "ETH_account" : "0xf7c1140da86eedae46d3eff0774402518bf3b0db", + "name" : "0xf7c1140da86eedae46", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4719806059 +}, +{ + "ETH_account" : "0x740197a9555599d1760775d2420a78c74d01ccf2", + "name" : "0x740197a9555599d176", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30624321209 +}, +{ + "ETH_account" : "0x706bbd2aac61e1ba8d0e60cba34f4be79bb2c74b", + "name" : "0x706bbd2aac61e1ba8d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 486100336 +}, +{ + "ETH_account" : "0x8658065866b052c2509e3b35986771aac11d40d0", + "name" : "0x8658065866b052c250", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6951234814 +}, +{ + "ETH_account" : "0x2a53805f560e4c8ee7da8e937476ac87fe73db8d", + "name" : "0x2a53805f560e4c8ee7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6581384442 +}, +{ + "ETH_account" : "0x4a369474f49688f71dc96aa1d200a78517558f2d", + "name" : "0x4a369474f49688f71d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30 +}, +{ + "ETH_account" : "0x01c08575d845acf2bdd1df6b449afebe9e8910cf", + "name" : "0x01c08575d845acf2bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66 +}, +{ + "ETH_account" : "0x1db3f7a9f026e379b14afebce2a0b47047e4d404", + "name" : "0x1db3f7a9f026e379b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8400535824 +}, +{ + "ETH_account" : "0x2abf8bb7037cd95c4a7779a584a63b92ad0575dd", + "name" : "0x2abf8bb7037cd95c4a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28 +}, +{ + "ETH_account" : "0xff6e2d75027caa5e8e7ae5f4f3062fbd14784655", + "name" : "0xff6e2d75027caa5e8e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6500000000 +}, +{ + "ETH_account" : "0x6757f4569abb6e49d3a7b787ad5e3730c416d668", + "name" : "meacuna", + "publicKey" : "SPH5SUNE3yp7XEKfNomctB1AEnihNDcXMyiYB7hHR36G86gULAU3z", + "balance" : 2998159934 +}, +{ + "ETH_account" : "0x4a61c9f1bcd354d8349821391327e110b79307fd", + "name" : "0x4a61c9f1bcd354d834", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28 +}, +{ + "ETH_account" : "0x0a2ec33ffdc1f4238cc95b4a382d5288b0258d83", + "name" : "0x0a2ec33ffdc1f4238c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6717717026 +}, +{ + "ETH_account" : "0xbc34b48e8df14bd4974a1dc021983fb61c72b911", + "name" : "0xbc34b48e8df14bd497", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5383497036 +}, +{ + "ETH_account" : "0xebafbf032c7967947ee9267e561d803d4871c45f", + "name" : "0xebafbf032c7967947e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xd44bebb45bf915930a203da2fbae854c2362eaee", + "name" : "0xd44bebb45bf915930a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1031188694 +}, +{ + "ETH_account" : "0x2b0d94f8acd29f55a39b283d9b5fc0b310adf1df", + "name" : "leodflho", + "publicKey" : "SPH7v9KrwQ4zDsegqYtsgVeKBuZqUXveGhjjnVmwE7zAWNmB1M4uy", + "balance" : 1211514961 +}, +{ + "ETH_account" : "0x9fdb958883a858f87e6f2ee18057a27ee23b8d95", + "name" : "0x9fdb958883a858f87e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1689552728 +}, +{ + "ETH_account" : "0x1d741c6edc8a3216b28c0ff0182780f137f0b443", + "name" : "0x1d741c6edc8a3216b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11608707189 +}, +{ + "ETH_account" : "0x7ed06e42f0e3367532533ae21ab2786f7e6a61e6", + "name" : "0x7ed06e42f0e3367532", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7138608753 +}, +{ + "ETH_account" : "0x396eb3a7dd841a1dacc884ab3f73bc8707f48b7d", + "name" : "0x396eb3a7dd841a1dac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33 +}, +{ + "ETH_account" : "0x746a0df3e566b428f2e63e5985baffd59877dd00", + "name" : "0x746a0df3e566b428f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2430501683 +}, +{ + "ETH_account" : "0x735edd79093e8f4799060134523ee0a8d1bda175", + "name" : "smajdalf", + "publicKey" : "SPH5LYFcUgUQD5xme8dXMWBW54XxN95wRjNENezw95N3oh3aNLTvu", + "balance" : 5834120833 +}, +{ + "ETH_account" : "0xb0a68077b56f07fc57958b9569f9f5eff1e1d57f", + "name" : "0xb0a68077b56f07fc57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3402702356 +}, +{ + "ETH_account" : "0xb1dd29ebd7b7692998c6e6ef9987f22988fd9692", + "name" : "0xb1dd29ebd7b7692998", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66 +}, +{ + "ETH_account" : "0x36130eb7bd66329aa4d81b759e75c7229e169d28", + "name" : "0x36130eb7bd66329aa4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65 +}, +{ + "ETH_account" : "0x73c0ca323623b482bf6978542715425a88193c25", + "name" : "0x73c0ca323623b482bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 38 +}, +{ + "ETH_account" : "0x2651177cc13cffe2658cb3a92c9e9516f80431ac", + "name" : "0x2651177cc13cffe265", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21185537645 +}, +{ + "ETH_account" : "0x40ed2cf7a19ed97f84a9ab28cab4c9fcc2f366c4", + "name" : "0x40ed2cf7a19ed97f84", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11 +}, +{ + "ETH_account" : "0x8b5347e12ece13475157b712ed601a7ec5962bb9", + "name" : "0x8b5347e12ece134751", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3490105248 +}, +{ + "ETH_account" : "0xb7f0e6ec667118b548631ac68c1a0b682c0b60c8", + "name" : "0xb7f0e6ec667118b548", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 277077191 +}, +{ + "ETH_account" : "0x6242b50797c79a87beafcd51a94df84f6d5d2e54", + "name" : "0x6242b50797c79a87be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 17007386919 +}, +{ + "ETH_account" : "0xb6c478dcdf76e72079cbf7f0771d80b8ffe21303", + "name" : "neo", + "publicKey" : "SPH8AJypEpi8KE4zviQeMTyMzFADvoAw7iVVxuGYfYsvVdHhNbTms", + "balance" : 65833903339 +}, +{ + "ETH_account" : "0x7ab6c31747049bbe34a19253c0abe5001ccbe8c6", + "name" : "0x7ab6c31747049bbe34", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2916602019 +}, +{ + "ETH_account" : "0x8ede5994b122d0c946275b05965db17dccf6234e", + "name" : "0x8ede5994b122d0c946", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4833697006 +}, +{ + "ETH_account" : "0xcb9afee59ce36bb79dceb5dc1644d275a91eb35f", + "name" : "0xcb9afee59ce36bb79d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8782569222 +}, +{ + "ETH_account" : "0xbd0133899eb4d84f9daf46bc0b64d902aef7cccf", + "name" : "0xbd0133899eb4d84f9d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 486100336 +}, +{ + "ETH_account" : "0x46233b5760e95b803916723daee3775dfa4abe2d", + "name" : "0x46233b5760e95b8039", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1955865439 +}, +{ + "ETH_account" : "0x5c749e3a8c9d6e42917bb32a2e0cca4118acebbc", + "name" : "0x5c749e3a8c9d6e4291", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000000773 +}, +{ + "ETH_account" : "0xd32aaa08c368e6b7d751da157a6715780d40829f", + "name" : "0xd32aaa08c368e6b7d7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 45715183523 +}, +{ + "ETH_account" : "0x954ba574eef07cf4d7f5ac244b43ed86aa5c23f6", + "name" : "0x954ba574eef07cf4d7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5800436407 +}, +{ + "ETH_account" : "0xe1898f4e7c193e153374ddcecfa0a1f3a781b862", + "name" : "0xe1898f4e7c193e1533", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9722006733 +}, +{ + "ETH_account" : "0x1c032408c5b3f48488a8d261bedaebdce1e78ddb", + "name" : "0x1c032408c5b3f48488", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 154724861 +}, +{ + "ETH_account" : "0xce6e6b361c7a6947bccefcf6cd14729e8e357035", + "name" : "0xce6e6b361c7a6947bc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000842202 +}, +{ + "ETH_account" : "0xc790dff7e79c9a7b0f386461c3c6e62dc588f8d2", + "name" : "0xc790dff7e79c9a7b0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5507095448 +}, +{ + "ETH_account" : "0x0ae8441d900bdbcd11753fae2c176c2e8c3fd3b6", + "name" : "0x0ae8441d900bdbcd11", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19439726061 +}, +{ + "ETH_account" : "0xd4c940cdc62f0f7fd17fdbf2ad70ebf421f77e5b", + "name" : "0xd4c940cdc62f0f7fd1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 442 +}, +{ + "ETH_account" : "0x542d489c68431a93604551b9b7e2e30e381f301a", + "name" : "0x542d489c68431a9360", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60577 +}, +{ + "ETH_account" : "0xed59a6875cab3367b62aeb0bad55ccd45817c727", + "name" : "soopersophiatx", + "publicKey" : "SPH7kewB44ZySFVBtx7936rTnPsNAdWVgvmM837BHh5PWLXWwxuBx", + "balance" : 2796798892 +}, +{ + "ETH_account" : "0xddeac0907a6b19cd591c29fa4a93f4be2dcaeaa4", + "name" : "0xddeac0907a6b19cd59", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2253737924 +}, +{ + "ETH_account" : "0x1dc022cf6b27656edc2b8214f7600909f2e60250", + "name" : "0x1dc022cf6b27656edc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8904 +}, +{ + "ETH_account" : "0x88c81ab04acaa6c71d63fe681b9163029d051b10", + "name" : "0x88c81ab04acaa6c71d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1020810706 +}, +{ + "ETH_account" : "0xa1658175cfaf408e7b7541493246676ddadc6582", + "name" : "0xa1658175cfaf408e7b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9722006733 +}, +{ + "ETH_account" : "0x81f647f6c532fa412892ee237bf24e730b7dff22", + "name" : "0x81f647f6c532fa4128", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 75676033643 +}, +{ + "ETH_account" : "0xfec619d9ee26ee4983935cf613564f19e1ed661d", + "name" : "ambconitsult", + "publicKey" : "SPH5dRBpRxC3p5otMRwffQSs7zv7R8ikYW6gXSQ2sDSAS6LWypzL8", + "balance" : 12438297352 +}, +{ + "ETH_account" : "0x0b6c0c6b6e049f567e9f7aa4ca04add4cd022abc", + "name" : "0x0b6c0c6b6e049f567e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9722006733 +}, +{ + "ETH_account" : "0x48c92910da5d713fb8b1e1e6b397ebae3ea73211", + "name" : "0x48c92910da5d713fb8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3858257365 +}, +{ + "ETH_account" : "0x5c2e883b16d73180f60febf687b74ec615d1d544", + "name" : "andy", + "publicKey" : "SPH6t6SbNxzPcxTJDEwgUXL9fRaP6B28JX3t8wbnk1mdiXzuKHFWz", + "balance" : 34770428699 +}, +{ + "ETH_account" : "0x8d0abd7c2d927446998b5598fd30d171700dedd8", + "name" : "0x8d0abd7c2d92744699", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1862035137 +}, +{ + "ETH_account" : "0x1d3e92732bd502e65c04ff1cfb6e8384a7d18238", + "name" : "0x1d3e92732bd502e65c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3402702356 +}, +{ + "ETH_account" : "0x0a50bf8557efca9bf179727c88f4bddaeaae94d5", + "name" : "0x0a50bf8557efca9bf1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 486100336 +}, +{ + "ETH_account" : "0x9a28b3e23f10ed0140b33f794216fadbf43de394", + "name" : "0x9a28b3e23f10ed0140", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6600000000 +}, +{ + "ETH_account" : "0xc4b80f353b373e624a3c55fc36bd15076b49a6d1", + "name" : "0xc4b80f353b373e624a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2430501683 +}, +{ + "ETH_account" : "0x4ee7eb3eb6aa34e70ac761496c6fe79b10a098e3", + "name" : "0x4ee7eb3eb6aa34e70a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 890589385 +}, +{ + "ETH_account" : "0x95dfe0137b85b94a503d05a3fc460360b888c307", + "name" : "0x95dfe0137b85b94a50", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7025156663 +}, +{ + "ETH_account" : "0x4f5c8dc1db877e2fccc61c8d4851cad50878106b", + "name" : "peterchmelar", + "publicKey" : "SPH6zW4a2QbBATBUZmDW7NawCFMEDiiSbW65i2531LqXiCwpCSHgv", + "balance" : 33997002280 +}, +{ + "ETH_account" : "0x0bc7ebca23bde439fec9791e2a245a440e24d0fd", + "name" : "0x0bc7ebca23bde439fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9722006733 +}, +{ + "ETH_account" : "0x197e4c5994f23b8c058386a8b908ef0269133258", + "name" : "0x197e4c5994f23b8c05", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1336775925 +}, +{ + "ETH_account" : "0x3e0b67ad58fa57e0b08ff27ee3d75492c660ac9e", + "name" : "0x3e0b67ad58fa57e0b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9706159862 +}, +{ + "ETH_account" : "0xed7a7564c9ade3ce2c621ded4f4214ab08826d91", + "name" : "0xed7a7564c9ade3ce2c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1323005 +}, +{ + "ETH_account" : "0x02e9f69682bfa36698b6aecf261531552003b1ad", + "name" : "crifernandez", + "publicKey" : "SPH5LJcsEuugpaGFCGKVo8CM6FinD9KuJVTbPHgFzGYv7AhEjzF52", + "balance" : 1277301211 +}, +{ + "ETH_account" : "0x9be66b84e33fe92f9140571ada03fbc911014600", + "name" : "0x9be66b84e33fe92f91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16833 +}, +{ + "ETH_account" : "0x39c4b9637461cc310aead667680c8e59f7f421cc", + "name" : "0x39c4b9637461cc310a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2061003366 +}, +{ + "ETH_account" : "0xedcd5d2eea5ef9d2c41528355b85cb87ba981e91", + "name" : "0xedcd5d2eea5ef9d2c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 486100336 +}, +{ + "ETH_account" : "0x56be952f6717fed69e3c1405ecd650a0b32e9806", + "name" : "0x56be952f6717fed69e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2489 +}, +{ + "ETH_account" : "0xa520cab3360abaa83eec9b7e98c894bdab34a718", + "name" : "softy", + "publicKey" : "SPH634thLXAaK63qnE77LB1KzHBTbXNfjBdnmLbS2ZtRobcLreB1a", + "balance" : 25726511500 +}, +{ + "ETH_account" : "0x25c6ac44cf400776e075439931aad975a197d613", + "name" : "0x25c6ac44cf400776e0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1611232335 +}, +{ + "ETH_account" : "0xb1053587b28c0f13f0089f05d1cf1f5e35fbb369", + "name" : "0xb1053587b28c0f13f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1083874380 +}, +{ + "ETH_account" : "0xe484a9951cf5a3ade3cac1b37c1c0d4517f6954c", + "name" : "0xe484a9951cf5a3ade3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10208107069 +}, +{ + "ETH_account" : "0x8d25f564b59eb49173f5574c5ad54856f5a31e7a", + "name" : "0x8d25f564b59eb49173", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4861003366 +}, +{ + "ETH_account" : "0x91a635d2262cfd566518576116c2945d9e3c9531", + "name" : "0x91a635d2262cfd5665", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2241658921 +}, +{ + "ETH_account" : "0x1e38aa9db32313030cecb2328bbd2e683afc8218", + "name" : "lukehrowland", + "publicKey" : "SPH73ACu3HjXxEbikrJxjNjogiijCVnDM1EU2rSygRK6JP9obYXpi", + "balance" : 7000224114 +}, +{ + "ETH_account" : "0x2c29739ab9e4753d59790795e42b75b9f3c758d5", + "name" : "gainnear", + "publicKey" : "SPH7jJrTPxs7gHbQtwXn9TCn7VmoUDXNneqky8JyaxmEEmGqTqVsM", + "balance" : 5598040700 +}, +{ + "ETH_account" : "0x4fa071a3a314e62db19aba34f79c231ebedb512e", + "name" : "0x4fa071a3a314e62db1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2916451766 +}, +{ + "ETH_account" : "0x017be8169866e9be5ce3beaa09e78c7695563e38", + "name" : "0x017be8169866e9be5c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 587020984 +}, +{ + "ETH_account" : "0xa33c5f802c7433647b5cc6be5886da28a9226926", + "name" : "invoice", + "publicKey" : "SPH79agjmEFFzMPvvwpcCDTNpZHvNJ6CvSZqFxuvSqT34zL5wgtQh", + "balance" : 110000000000 +}, +{ + "ETH_account" : "0xf0af6d449b06b1299d2ab0d85120c75064407d19", + "name" : "0xf0af6d449b06b1299d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10099 +}, +{ + "ETH_account" : "0x1b20935dc9db5601cf7574edc68bd8f613b8fe7a", + "name" : "0x1b20935dc9db5601cf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9 +}, +{ + "ETH_account" : "0xe20c48d408cab179736cfaac4dd12d8bba444020", + "name" : "0xe20c48d408cab17973", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33 +}, +{ + "ETH_account" : "0x73344a7a6f515b82f774050e99abe22dd532b011", + "name" : "0x73344a7a6f515b82f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 73 +}, +{ + "ETH_account" : "0x820350229bc38faf2885ce9a2968e61b7cb1dd8e", + "name" : "ethsophiatx", + "publicKey" : "SPH7Dpx1e9SjPQUn9iCrMjnq292egnTgjwgpPZvDS7Hom2GiE6375", + "balance" : 4854802693 +}, +{ + "ETH_account" : "0xb8552c3459ed89f087d1f9fb53d568b725ca0d9d", + "name" : "0xb8552c3459ed89f087", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30 +}, +{ + "ETH_account" : "0xf3be742cd890946dbd0e999582d8b52d95189efb", + "name" : "0xf3be742cd890946dbd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99 +}, +{ + "ETH_account" : "0x72b3ae408ffdeea6f59d3dd071b2f16197d2de1a", + "name" : "0x72b3ae408ffdeea6f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22 +}, +{ + "ETH_account" : "0x2747c74a20acc2d1637f10b291de9da41be2e494", + "name" : "0x2747c74a20acc2d163", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2430501683 +}, +{ + "ETH_account" : "0xcf8917e502309070b57d30f7d8f01236958b8c01", + "name" : "0xcf8917e502309070b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8067668087 +}, +{ + "ETH_account" : "0x0a9847f217364b7a410a9b089ae774492c9bfcc6", + "name" : "0x0a9847f217364b7a41", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3667847994 +}, +{ + "ETH_account" : "0x0e4762495fafe9c39f2d0d0e5eacec2d6be00b96", + "name" : "0x0e4762495fafe9c39f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3366 +}, +{ + "ETH_account" : "0x94264e032a759660e8221aae42a0e9b42a5f33cf", + "name" : "0x94264e032a759660e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1783501074 +}, +{ + "ETH_account" : "0x3b86283430dc4ddb0acb87c87e70ba7ce8da7e7e", + "name" : "0x3b86283430dc4ddb0a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1506911043 +}, +{ + "ETH_account" : "0xcb9a73447e8abbb8e90db808b3169287c9bdbad1", + "name" : "0xcb9a73447e8abbb8e9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15000518516 +}, +{ + "ETH_account" : "0xc391cb1d2bd298a599ba24cb9f56ffdfcce7624f", + "name" : "0xc391cb1d2bd298a599", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 395938446 +}, +{ + "ETH_account" : "0xc2e439b425b44f9167f06d88c0ffa1bb399b5a19", + "name" : "0xc2e439b425b44f9167", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66 +}, +{ + "ETH_account" : "0xc0077e847bf25e9a09ac0c0960661e8faea3dc8e", + "name" : "0xc0077e847bf25e9a09", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25121063966 +}, +{ + "ETH_account" : "0x5acde36a900f9e9e4689c894ba9e914c64661b07", + "name" : "0x5acde36a900f9e9e46", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 729150504 +}, +{ + "ETH_account" : "0xc1af025c5fff49f4f0129d5770bbe9d94e40bbd9", + "name" : "0xc1af025c5fff49f4f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 639798025 +}, +{ + "ETH_account" : "0x3cd0e4dd3dfa09c75cac82da75c45a12adb8df2c", + "name" : "0x3cd0e4dd3dfa09c75c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24154325728 +}, +{ + "ETH_account" : "0xf287fce23ed23d8386bd96a32f3d36d85272b3b0", + "name" : "0xf287fce23ed23d8386", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7163717552 +}, +{ + "ETH_account" : "0xe354300ceb444911e130293bc5837cf4d558ca5e", + "name" : "0xe354300ceb444911e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1161026349 +}, +{ + "ETH_account" : "0x858255a23f52513731a73220adb57c7f32b3c5e3", + "name" : "tibrah", + "publicKey" : "SPH8XKXD8DQx9h4cfhcu8zWVv1nExcUT8RGvxiWuSnQ4LF5v55jUX", + "balance" : 2674829743 +}, +{ + "ETH_account" : "0xae4237ab3d2368230c9104563ba25fddb24529f7", + "name" : "0xae4237ab3d2368230c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66 +}, +{ + "ETH_account" : "0x0074eadfff4c1ee38d88f194282b83d0273fc6e9", + "name" : "0x0074eadfff4c1ee38d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5293632666 +}, +{ + "ETH_account" : "0x9b6a557b8bd169ab9699a81fbdf6dbf9d84d7d00", + "name" : "0x9b6a557b8bd169ab96", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 243050168 +}, +{ + "ETH_account" : "0x92a4f58009df9eac5f2af6d05977683639f0060e", + "name" : "0x92a4f58009df9eac5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 306502 +}, +{ + "ETH_account" : "0x4b11f86a69ed65e8e2266d936c55dc66f43da055", + "name" : "0x4b11f86a69ed65e8e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 894266 +}, +{ + "ETH_account" : "0x1ca3c61f3d2ebcf5ce63de0234b974a38572f527", + "name" : "0x1ca3c61f3d2ebcf5ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9552 +}, +{ + "ETH_account" : "0x02edeb4b0549e0679726efd1d88afcf9bd92b1ac", + "name" : "panda", + "publicKey" : "SPH8eMWExNiZFTvFxvvoSQqhY6kkNC556K5GBhEXGtTpMgfkZJ2Wz", + "balance" : 79238937886 +}, +{ + "ETH_account" : "0x9982aa853ecc2f0f5811842ef71acfd46e60e533", + "name" : "ejossev", + "publicKey" : "SPH5Me5WbKPagTkRUDWWwL7tMi9gsUTqn4owYCuEdpTxDYguSEgk5", + "balance" : 184662651443 +}, +{ + "ETH_account" : "0x314106933f094cd3140c874709add9939d4c1f62", + "name" : "0x314106933f094cd314", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 486100336 +}, +{ + "ETH_account" : "0xdbd9f022b5085db853c9fbc2d3edbfd0c1859aad", + "name" : "0xdbd9f022b5085db853", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2430501683 +}, +{ + "ETH_account" : "0xb540fed15578331134b3a510cc140e9c407de3dd", + "name" : "srisophiatxlit", + "publicKey" : "SPH66aCW4r8aQ1UeEDTJ1cmC2kuipfF29UgkmLjNGMWjGqncAVh6z", + "balance" : 413079269222 +}, +{ + "ETH_account" : "0x594ffffed6836d2112cb9a4dfc186c87c5dc550d", + "name" : "0x594ffffed6836d2112", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 956572525 +}, +{ + "ETH_account" : "0xfa52dce19fb1f058bb771b6fda58a92b41319281", + "name" : "0xfa52dce19fb1f058bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1612843567 +}, +{ + "ETH_account" : "0x73ec5b3f53ea5bedb702f9d84559ea8376f64fb0", + "name" : "0x73ec5b3f53ea5bedb7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7228160245 +}, +{ + "ETH_account" : "0x15bd486228318c503729eb80ef3e157ea4b63e9a", + "name" : "0x15bd486228318c5037", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 529973561 +}, +{ + "ETH_account" : "0x0d5037886b34f0a389000c246a0dd256f8e5e2d4", + "name" : "0x0d5037886b34f0a389", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3366 +}, +{ + "ETH_account" : "0x84d7a3202156e57b98cf4685c5cda2a27bba1097", + "name" : "0x84d7a3202156e57b98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 204039 +}, +{ + "ETH_account" : "0x000a74ae93990325a443d4255a55b134a3bbc731", + "name" : "0x000a74ae93990325a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3366 +}, +{ + "ETH_account" : "0x9e94e7002cd234805f85ea0fcaa273725f14f654", + "name" : "pelssersdavy", + "publicKey" : "SPH6pXwttt2ChqKfRTf8L7xC6jB4eg5MFxRv7qjHwfTHnhtFt4mCX", + "balance" : 179857124566 +}, +{ + "ETH_account" : "0xd11e34f77e3f82f165fe96fc3c3f6de309ee9b38", + "name" : "meto", + "publicKey" : "SPH8PZjcUQq5LggghdBKmX1kPrYjtpwQ3JwEzDsJ6KZbqJx84NoRK", + "balance" : 121525084166 +}, +{ + "ETH_account" : "0x66fdeddb02de60acfd9630344f7a2278a26f86fb", + "name" : "0x66fdeddb02de60acfd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 29282520 +}, +{ + "ETH_account" : "0x490ce4234e096fcdbc88ed7e5434686a3ea16909", + "name" : "0x490ce4234e096fcdbc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6154722261 +}, +{ + "ETH_account" : "0x8ce04751c61bcd8445531988ea02af31d3381d19", + "name" : "0x8ce04751c61bcd8445", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1486070044 +}, +{ + "ETH_account" : "0x7557a26fe18f5a0fcd3849a926176b9a47fc7e01", + "name" : "mysophiatx", + "publicKey" : "SPH66sVF8NJNx5HSWxg7pVVDVXY5suRGKeJ2MJHEEEyLbiYVgLQxu", + "balance" : 286556148 +}, +{ + "ETH_account" : "0x6c43c8de503701df63069177e9f4f2c49cad7fcd", + "name" : "0x6c43c8de503701df63", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 534710370 +}, +{ + "ETH_account" : "0xef69281de58df9e7326b8c06f24ac69a746bd2cc", + "name" : "0xef69281de58df9e732", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33 +}, +{ + "ETH_account" : "0x242cb5b0b7a72021b74369eb82e1896b5ebd5c08", + "name" : "0x242cb5b0b7a72021b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60646538930 +}, +{ + "ETH_account" : "0xf003e39ca527964b3a3b7cccee62ad4b2fa74e48", + "name" : "0xf003e39ca527964b3a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 143164177 +}, +{ + "ETH_account" : "0x305d04989d2ed971f6fdcb26451065c6335b8649", + "name" : "minjinnho", + "publicKey" : "SPH6WEkdankja5o2bxfK2Kn4f3hwtS7wr7gxVG1H6ay88y9rAuNkX", + "balance" : 8092636504 +}, +{ + "ETH_account" : "0x9eac6d7e9d97ffcad2d2c1134b7d885e8aeb0438", + "name" : "myfortune", + "publicKey" : "SPH8c6yQ3tiTKtBbdxDUnM66JF8Ecmu1PjVNuonXmuJnkjMxSei1X", + "balance" : 38813210209 +}, +{ + "ETH_account" : "0xd5e006e40ba90c3ffdf2bcf2fc8a1e75ed5fe6bd", + "name" : "0xd5e006e40ba90c3ffd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13518239295 +}, +{ + "ETH_account" : "0x257bdffeab9ed25e41a2163f138249ad1c1b15c7", + "name" : "0x257bdffeab9ed25e41", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4861003366 +}, +{ + "ETH_account" : "0x0e3e0c29e6bb917f0b6d117e6b97369c5220d4ef", + "name" : "0x0e3e0c29e6bb917f0b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4947348334 +}, +{ + "ETH_account" : "0x3ad70fbeb2de752cab6bf4b619a1c69f69d08475", + "name" : "0x3ad70fbeb2de752cab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 154977873 +}, +{ + "ETH_account" : "0xe4cac770860d2feed6bcc2a5044010768db1f6a1", + "name" : "0xe4cac770860d2feed6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6602019 +}, +{ + "ETH_account" : "0x5cf2c668cb50a3d7b5f766a379842c41935fc829", + "name" : "0x5cf2c668cb50a3d7b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 87439131299 +}, +{ + "ETH_account" : "0x726664263ff0605f46ae6a57d2a6e5bbadfa4545", + "name" : "0x726664263ff0605f46", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 972200673 +}, +{ + "ETH_account" : "0x261a6b5188c5561e02c004c356248b40d2b75371", + "name" : "0x261a6b5188c5561e02", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33 +}, +{ + "ETH_account" : "0x7cf1e475384bb7393a209edccf89ca5aad5243f1", + "name" : "0x7cf1e475384bb7393a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7766376468 +}, +{ + "ETH_account" : "0xffe20923b9ea4ea59eeb4f97f979ccd437b49248", + "name" : "0xffe20923b9ea4ea59e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 903029 +}, +{ + "ETH_account" : "0xdad98953131f58912f87df33932e02dbadd05a31", + "name" : "0xdad98953131f58912f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 46725737731 +}, +{ + "ETH_account" : "0xc2c1f924c5c3dc5b562dec1b968464d78641ed8d", + "name" : "0xc2c1f924c5c3dc5b56", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33 +}, +{ + "ETH_account" : "0xaf308156c2a172747592111dd4c01fd1c739d9ab", + "name" : "0xaf308156c2a1727475", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65 +}, +{ + "ETH_account" : "0x9a7a9580394d42762fbac0fd3ad1cdd9f260c065", + "name" : "0x9a7a9580394d42762f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1611232335 +}, +{ + "ETH_account" : "0x7d452d834ceed8ffb2a34904e1a9043ab2b2658d", + "name" : "0x7d452d834ceed8ffb2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9498475897 +}, +{ + "ETH_account" : "0x30940e443c86d3f315190e921c06804150407803", + "name" : "0x30940e443c86d3f315", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12018151693 +}, +{ + "ETH_account" : "0xe4fbeebea76801d9710f19843fd47040fd39d5f6", + "name" : "0xe4fbeebea76801d971", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6624528433 +}, +{ + "ETH_account" : "0x18dfcbae9c122847ab33ed92bb52ef93b32d8ff8", + "name" : "0x18dfcbae9c122847ab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4778366309 +}, +{ + "ETH_account" : "0xfd8d9ff1a91678e2959a235b2c9739dd70c5bd7a", + "name" : "0xfd8d9ff1a91678e295", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2661044190 +}, +{ + "ETH_account" : "0x016325836efd7b473ef02df02b57082c20f55121", + "name" : "0x016325836efd7b473e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13655000366 +}, +{ + "ETH_account" : "0x48c6feb76b71a5bac4b7af58e1671e56616e93dd", + "name" : "0x48c6feb76b71a5bac4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 657806 +}, +{ + "ETH_account" : "0xb7ea301e43cc6c926dbbcbf63c5eb0bf54983790", + "name" : "0xb7ea301e43cc6c926d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1377451514 +}, +{ + "ETH_account" : "0xf54036a07cdfc8e85daa92171fa3f82cc8d5326d", + "name" : "azn", + "publicKey" : "SPH8mk2YvPBiyMEqCnJcsdt4ggzU8bL83DvibEARjFjFykoE1uf9T", + "balance" : 12645281994 +}, +{ + "ETH_account" : "0x9013974d74ab770556e67bec9878deb4897b0ac7", + "name" : "0x9013974d74ab770556", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10996144476 +}, +{ + "ETH_account" : "0xd1931c8949f4225a1a3d7c718a3c8056c8964692", + "name" : "0xd1931c8949f4225a1a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 604150504 +}, +{ + "ETH_account" : "0xd75d331d776da13ae29425412606c0ff41c139c0", + "name" : "0xd75d331d776da13ae2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 237150059 +}, +{ + "ETH_account" : "0x1d284e7678cb48ae641695d43c1ef25ac3a139bd", + "name" : "0x1d284e7678cb48ae64", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99270922 +}, +{ + "ETH_account" : "0xeb2cade3635074502a5a61c570469033431ebf89", + "name" : "0xeb2cade3635074502a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 441909396 +}, +{ + "ETH_account" : "0x0e394c38e97f05b2bc657951ef39adac7e188a32", + "name" : "0x0e394c38e97f05b2bc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3314320477 +}, +{ + "ETH_account" : "0x59e74c79a20d0be97eab855c30f4d85a2dc0cbc6", + "name" : "0x59e74c79a20d0be97e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8838187939 +}, +{ + "ETH_account" : "0x12ecb2a699e92fe2ff63a5a9fbe566abb231d7b8", + "name" : "0x12ecb2a699e92fe2ff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3212708214 +}, +{ + "ETH_account" : "0x62035cff209b75774595a00ef067eb0ad25684e5", + "name" : "0x62035cff209b757745", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10080755758 +}, +{ + "ETH_account" : "0x1047ffce44931bb2b7f031667834fdaa37236339", + "name" : "0x1047ffce44931bb2b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 575278865 +}, +{ + "ETH_account" : "0xfcbf16e91c8a6777cb09e101a883ebb6a188c5f8", + "name" : "0xfcbf16e91c8a6777cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 145830100 +}, +{ + "ETH_account" : "0x0c2ce00e722bd42048c429842f9e1aaf42590140", + "name" : "roootbox", + "publicKey" : "SPH6aD5sbBivQG4BsryVvQQdopi9yTBrQdBiSYFThxAdcUnTwyCrw", + "balance" : 8838187939 +}, +{ + "ETH_account" : "0x72d825da79f2041b6770985041163fb8843bca4f", + "name" : "0x72d825da79f2041b67", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4772621487 +}, +{ + "ETH_account" : "0x540f856a7ebd537891067c98e61d70d235257e5d", + "name" : "0x540f856a7ebd537891", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9696 +}, +{ + "ETH_account" : "0x5a60357a85b440d77a9881eeb8d660d7142049ac", + "name" : "0x5a60357a85b440d77a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 945362985 +}, +{ + "ETH_account" : "0xfbf7731253485701f79e5fc705a758ead19c7aa8", + "name" : "0xfbf7731253485701f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5744822160 +}, +{ + "ETH_account" : "0x4f3247dd6804ef2d80018fae40f3e368b3c6cb98", + "name" : "0x4f3247dd6804ef2d80", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 750627715 +}, +{ + "ETH_account" : "0x3f8d267d3dc6e3f0648a33d1901d9db4391264b7", + "name" : "0x3f8d267d3dc6e3f064", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22095469848 +}, +{ + "ETH_account" : "0x24773f5941ebc851860bd8b737ab08860bd77f4e", + "name" : "gumaser", + "publicKey" : "SPH5mGGfvZ6NnZQcp42M5affgjyhS4std95Yi5FqMuvfmwbrU2dTH", + "balance" : 12855545564 +}, +{ + "ETH_account" : "0xbdf447585d7d31e12896033616391fa5c9e8cfa0", + "name" : "0xbdf447585d7d31e128", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 957540019 +}, +{ + "ETH_account" : "0x16eab4b3d8ac152b24cc9693d3fa14210ca57a36", + "name" : "0x16eab4b3d8ac152b24", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 522690434 +}, +{ + "ETH_account" : "0xd24837f7f25164e13730af7b5460d96df616a06a", + "name" : "0xd24837f7f25164e137", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 191583749 +}, +{ + "ETH_account" : "0xa8e7022a6aa7a9cb9dd865e791941a4dff576f36", + "name" : "aristipsedixit", + "publicKey" : "SPH7atb4jd6CwvH6AmvZm4qYDz6JVqD5afPashCaBgbf4Pm9T6YCD", + "balance" : 4419093969 +}, +{ + "ETH_account" : "0x530f30d091cb0c07faa620c7d1496e2413f00690", + "name" : "0x530f30d091cb0c07fa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 411065310 +}, +{ + "ETH_account" : "0x32acda52db68d1f5797e732ba0499279d623fd60", + "name" : "0x32acda52db68d1f579", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2210099769 +}, +{ + "ETH_account" : "0x33fadbf5576d5723a5ad355bfb682a8d4174c449", + "name" : "0x33fadbf5576d5723a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4419093969 +}, +{ + "ETH_account" : "0xde970034543f0be2bf3a6880d620890e14083915", + "name" : "0xde970034543f0be2bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7733414446 +}, +{ + "ETH_account" : "0x019ca8184121a6ec921c8c0d333d9e751f92424a", + "name" : "0x019ca8184121a6ec92", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10095359043 +}, +{ + "ETH_account" : "0xd314f5851f0b4701b5932edb910c33f8ffb73efd", + "name" : "0xd314f5851f0b4701b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4419093969 +}, +{ + "ETH_account" : "0x7ecfbc79f6bbacb1b1540a59a5527dffe957ed3d", + "name" : "0x7ecfbc79f6bbacb1b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4602954241 +}, +{ + "ETH_account" : "0x3fa1b28e276a73e780d858be0ccfe6bc3e98bed5", + "name" : "0x3fa1b28e276a73e780", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 36 +}, +{ + "ETH_account" : "0x7673ce0f8edf9001d997e33390b9dc9b43ef79da", + "name" : "0x7673ce0f8edf9001d9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14 +}, +{ + "ETH_account" : "0xa7f2cd4958dc6b8861b54a764029eb30e9e23511", + "name" : "0xa7f2cd4958dc6b8861", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 916588343 +}, +{ + "ETH_account" : "0x4c7a2b71536651459d308d9fa59613395bf8e25e", + "name" : "0x4c7a2b71536651459d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 86 +}, +{ + "ETH_account" : "0x35278c9b572b9f95cc294709e1d386509227a236", + "name" : "0x35278c9b572b9f95cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 47439810 +}, +{ + "ETH_account" : "0xf9466f91712b5b0b1e70429913e09a7ae34f85dd", + "name" : "0xf9466f91712b5b0b1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 335 +}, +{ + "ETH_account" : "0xc2d73a45088e8760b71dcba88d046e5656e712c9", + "name" : "0xc2d73a45088e8760b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 544 +}, +{ + "ETH_account" : "0xfa6416f670c60c29b813609a14a7b9901c3846c6", + "name" : "0xfa6416f670c60c29b8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 974 +}, +{ + "ETH_account" : "0x88cb1afaeb4c1bcb78a4908f5240938c4a427ccc", + "name" : "0x88cb1afaeb4c1bcb78", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4413989916 +}, +{ + "ETH_account" : "0xd5430b3f79b0146f4881a6078a8cd553114d58df", + "name" : "0xd5430b3f79b0146f48", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 199 +}, +{ + "ETH_account" : "0xcc4b6dfd760ff1eec953ae994ef35e43ab79d6f7", + "name" : "0xcc4b6dfd760ff1eec9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20010000000 +}, +{ + "ETH_account" : "0xd0e991d2c27fb6bf9f0b3495316f331d9ac5a663", + "name" : "0xd0e991d2c27fb6bf9f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4419093969 +}, +{ + "ETH_account" : "0xfa6d746003230377fce651d69652b76890b5bf3c", + "name" : "0xfa6d746003230377fc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10847281463 +}, +{ + "ETH_account" : "0x3aab27309c2ea55600c3fa08e43df2945869fd81", + "name" : "0x3aab27309c2ea55600", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24 +}, +{ + "ETH_account" : "0x42bb5c66bb336364d63176395c95301c5796dca4", + "name" : "0x42bb5c66bb336364d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14578370051 +}, +{ + "ETH_account" : "0xd0e78a9f15dfd295061b89ec6e7e86b4a4496f4d", + "name" : "0xd0e78a9f15dfd29506", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 651474129 +}, +{ + "ETH_account" : "0x53f2bca8a994e68937240b66af960294e74c66c8", + "name" : "0x53f2bca8a994e68937", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6186731557 +}, +{ + "ETH_account" : "0x7ad8d3e3dc38818004042a08b5c3abbe00a383b3", + "name" : "0x7ad8d3e3dc38818004", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 441909396 +}, +{ + "ETH_account" : "0xc6a5a5879343ae52c4e40a10ebaad19f4311804d", + "name" : "kwakuabebrese", + "publicKey" : "SPH6XyJje3FspYajpzByFJcjiSYVkVxroPL65MGUjJHY6r3XQKcyq", + "balance" : 1000875171 +}, +{ + "ETH_account" : "0xa6031aa7a61e246e41bf5bcd9410103c6acad9df", + "name" : "0xa6031aa7a61e246e41", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 48 +}, +{ + "ETH_account" : "0xdee73fc21f9dc19ceadec9c155ba12758a7a1ec1", + "name" : "0xdee73fc21f9dc19cea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6 +}, +{ + "ETH_account" : "0x54dd344be176621bd3fa50dc12ae26a583fe7220", + "name" : "amirruss", + "publicKey" : "SPH5nVjSCLgCmR8oWrSGbR7qWimNjAYr1uQJ3mpC2bvpH3psyR2rK", + "balance" : 374734882 +}, +{ + "ETH_account" : "0x1eea537b3cc42db38aa388ea46e83e50085ba77f", + "name" : "0x1eea537b3cc42db38a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18274690580 +}, +{ + "ETH_account" : "0xde46dd5a7ec68ddedd876b37997485f89ba459b6", + "name" : "0xde46dd5a7ec68ddedd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4035187939 +}, +{ + "ETH_account" : "0x213a7f0491638131184c46baafa06ed540ffde28", + "name" : "0x213a7f049163813118", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12 +}, +{ + "ETH_account" : "0xeb0d1ec4d5118af05878e029714f0424b7076b52", + "name" : "0xeb0d1ec4d5118af058", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4628883000 +}, +{ + "ETH_account" : "0x901e45ebb4f308b6eae2054de14d324abc37c8f1", + "name" : "ljqlwx2005", + "publicKey" : "SPH4tk2zzurswLHmvmjShRQ3ywkTBJjPizLcvMPbCj1hjwmCBJ13C", + "balance" : 24100493413 +}, +{ + "ETH_account" : "0xd1556b40b94f82a9198fcd252d39061147d2beb8", + "name" : "0xd1556b40b94f82a919", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000096 +}, +{ + "ETH_account" : "0xa2563fd5c32e34155fd412b9307635e3f432fab5", + "name" : "0xa2563fd5c32e34155f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3095787442 +}, +{ + "ETH_account" : "0x69c8485de24c22889c23a34f80d99093ae2a9e12", + "name" : "0x69c8485de24c22889c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 17676375878 +}, +{ + "ETH_account" : "0xcfaa4f1a3537733349ad582a435caf67e05ecfd3", + "name" : "0xcfaa4f1a3537733349", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4419093969 +}, +{ + "ETH_account" : "0x279afc9899672214ab49f15ca774402081819132", + "name" : "0x279afc9899672214ab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3969 +}, +{ + "ETH_account" : "0x5536dd39f322da174313d5ad29610ecaccd325b8", + "name" : "0x5536dd39f322da1743", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 449310297 +}, +{ + "ETH_account" : "0x99c8b7ec221aba816c4ca1f3585ed6159bbe2a70", + "name" : "0x99c8b7ec221aba816c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9877057455 +}, +{ + "ETH_account" : "0xa3e3b898f7d7c103ab93abf5395dff213b234692", + "name" : "0xa3e3b898f7d7c103ab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 883818793 +}, +{ + "ETH_account" : "0xfac4bbb8cee19af403e94a0aba788c1fb4e47390", + "name" : "0xfac4bbb8cee19af403", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 283119728 +}, +{ + "ETH_account" : "0xeb7b0c9e60d4f2330fa768041f74b04f53fec5fc", + "name" : "0xeb7b0c9e60d4f2330f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1628703785 +}, +{ + "ETH_account" : "0x60c8bb91cef937281c3665c53e59d52ec574a56c", + "name" : "0x60c8bb91cef937281c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50576530 +}, +{ + "ETH_account" : "0x23b076ea39dc76855cf3001ea8f27494f350eff4", + "name" : "0x23b076ea39dc76855c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1299451860 +}, +{ + "ETH_account" : "0x9da94f8dbac30cb7c0d1e72b1f4bc4a94e1e4b25", + "name" : "lsvoboda", + "publicKey" : "SPH7U8a5GX6KRuYRtdRCMLBGVdcq4icdYRhgvdhcWu8sBU9jZCG6i", + "balance" : 3153365778 +}, +{ + "ETH_account" : "0x39a1177798613751316b36032c9acfbc55baf479", + "name" : "0x39a117779861375131", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 41421 +}, +{ + "ETH_account" : "0x32a901800edc15df241f6d4680a6bd3ed21e2dcf", + "name" : "0x32a901800edc15df24", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000558519 +}, +{ + "ETH_account" : "0x3c21aa88a4dc3dfacc68d33c5b00de004b895450", + "name" : "0x3c21aa88a4dc3dfacc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3 +}, +{ + "ETH_account" : "0x1e79d95afc6d79bb194d2d11f9f4c92234ec7afe", + "name" : "0x1e79d95afc6d79bb19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000626182 +}, +{ + "ETH_account" : "0x87e2de948eb819f8ef0ad42607b8e19f9e51e556", + "name" : "0x87e2de948eb819f8ef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 618673155 +}, +{ + "ETH_account" : "0xab880991f2ec6ba0763d5c579d65d4f22e634b71", + "name" : "0xab880991f2ec6ba076", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1644931029 +}, +{ + "ETH_account" : "0x2ab84cc51293ccd340a0c2b29e056e137181eddd", + "name" : "0x2ab84cc51293ccd340", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 260854807 +}, +{ + "ETH_account" : "0x8f52c47c8e51fc6a66991a9cd9d6e9f3ace662f0", + "name" : "nighthawk", + "publicKey" : "SPH5TfCZ6zNV3z7HEd8ETWcVh3tmJ2QD1AZ4kps2ZKccUoBH98Lsz", + "balance" : 1562684478 +}, +{ + "ETH_account" : "0x518591b505a71a52f2b85aeb19dfc2030ef445d0", + "name" : "sophiastring", + "publicKey" : "SPH4vRcdxaqGjLNRgmXitKUpxogDJYMEQwFhopXK8c2cpD8fXxzKo", + "balance" : 10955839826 +}, +{ + "ETH_account" : "0xf4c722c68e53eaeb5d8c4a712b37209d66889f91", + "name" : "0xf4c722c68e53eaeb5d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 69 +}, +{ + "ETH_account" : "0xb66250002d07b1f897f3165745500ac555839743", + "name" : "0xb66250002d07b1f897", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4419093969 +}, +{ + "ETH_account" : "0xccd785bcd117a33a7133fde7fd068262de295f64", + "name" : "0xccd785bcd117a33a71", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 751757 +}, +{ + "ETH_account" : "0x88abcf8c98bba299f77b48ea75fe2d2fda2eb596", + "name" : "0x88abcf8c98bba299f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 38 +}, +{ + "ETH_account" : "0x7fd185e8fb350895126a03f48c9724d3910a3429", + "name" : "0x7fd185e8fb35089512", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9496 +}, +{ + "ETH_account" : "0x255ae1b7ea3e90a693c577116a9a6b9e8ad9d7a0", + "name" : "0x255ae1b7ea3e90a693", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 691019 +}, +{ + "ETH_account" : "0x0b7920d5c82c65ee2aeba20d7c1458b0dffe2c7f", + "name" : "0x0b7920d5c82c65ee2a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22095469848 +}, +{ + "ETH_account" : "0x961b2b150d2722e2813e86b955472f2b85d9ee7c", + "name" : "0x961b2b150d2722e281", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 187939 +}, +{ + "ETH_account" : "0x9ba7e78aa57c7983d0412b16fe64842d1b736833", + "name" : "0x9ba7e78aa57c7983d0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 67001 +}, +{ + "ETH_account" : "0x6b292f7c55ac17c7173b878d9a4e0e8ccc22838d", + "name" : "0x6b292f7c55ac17c717", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000006733 +}, +{ + "ETH_account" : "0x04afe1d4eebb77448e2ee114988306c94c1e1f5f", + "name" : "0x04afe1d4eebb77448e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 255708 +}, +{ + "ETH_account" : "0x818797f572f64a012658135817be8ac86b9217be", + "name" : "0x818797f572f64a0126", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 69 +}, +{ + "ETH_account" : "0x2a90e92ab57fc73e92f0471ab9e20cae55fd7384", + "name" : "0x2a90e92ab57fc73e92", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8838187939 +}, +{ + "ETH_account" : "0x329f4435e0f22899b733756c71aa12c1004146b1", + "name" : "artem77777", + "publicKey" : "SPH8BXMRsBKAEDQkvLhZ2fxeeEYwNzFNi9u7uUxtQA2ZTPwMAadXE", + "balance" : 265145638 +}, +{ + "ETH_account" : "0x81ccb6457120ead2f9e1bb91916ffb9d892b9550", + "name" : "xujian", + "publicKey" : "SPH8Z632pn8YkaR9DR77DZbTNRBJUEsrdgHLVruwQuHyfbhzViKPu", + "balance" : 44190939696 +}, +{ + "ETH_account" : "0x5a18f3dd180ddef602695f264ed7f19030de5a88", + "name" : "mysophiatokens", + "publicKey" : "SPH6MkZZVHP8T2sg6pJoZW2KAJyvd5LgjHd5YRWf25es1F4QC5mnn", + "balance" : 4912138899 +}, +{ + "ETH_account" : "0xc071e6410a1db79b66068ed696668442702555f9", + "name" : "0xc071e6410a1db79b66", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1763218493 +}, +{ + "ETH_account" : "0xfec499f4ffc2dd8cfae13de1976cf558600f035a", + "name" : "0xfec499f4ffc2dd8cfa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1400000 +}, +{ + "ETH_account" : "0x81c86225293fc7b2a2688e7c812447d8b84eb249", + "name" : "0x81c86225293fc7b2a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8838187939 +}, +{ + "ETH_account" : "0x37855a7a0dabecbdabbfecebdd7f186fafda025b", + "name" : "0x37855a7a0dabecbdab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 296630823 +}, +{ + "ETH_account" : "0xf3a9c5d5d5109f999f80ae5a9dd177dfa9bc3e25", + "name" : "0xf3a9c5d5d5109f999f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 170070814065 +}, +{ + "ETH_account" : "0xfadf2dfe5087306c5b5fe7272ee3d1a5a1417287", + "name" : "0xfadf2dfe5087306c5b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 363 +}, +{ + "ETH_account" : "0x1dcf47ea9bb82f232d3f39e9ed86c9327974a9ca", + "name" : "0x1dcf47ea9bb82f232d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 574482216 +}, +{ + "ETH_account" : "0x1f115ff300a71b9e6a74376a5b01a71ca946add7", + "name" : "0x1f115ff300a71b9e6a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1100968652 +}, +{ + "ETH_account" : "0x42866464dc64c2dd3bb16e09d700c759645e9ff7", + "name" : "0x42866464dc64c2dd3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 37 +}, +{ + "ETH_account" : "0x5dab73c044ec6f29a55d9da0a64511840575986e", + "name" : "0x5dab73c044ec6f29a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2209546984 +}, +{ + "ETH_account" : "0x024440024666feb3ab591a421cf72a97ed77e050", + "name" : "0x024440024666feb3ab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 879393 +}, +{ + "ETH_account" : "0x6d4790116eafff2f11e7d6c47db708bfc26eb571", + "name" : "0x6d4790116eafff2f11", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 203527517 +}, +{ + "ETH_account" : "0x06a01f01e7c3f4d7a2012cc2d29af10c52d4ffe9", + "name" : "0x06a01f01e7c3f4d7a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1679469870 +}, +{ + "ETH_account" : "0x152c0652f373ecafd3eb73a153ac329b1f1c3fe7", + "name" : "0x152c0652f373ecafd3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 349108423 +}, +{ + "ETH_account" : "0xbeb2620647509b6142658d9085e4ff20d4dd75c0", + "name" : "0xbeb2620647509b6142", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30122759427 +}, +{ + "ETH_account" : "0xbcad5ab0f8ada4434a0a419502b6d7044f40c496", + "name" : "0xbcad5ab0f8ada4434a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1315944823 +}, +{ + "ETH_account" : "0x1d0f613af7238735e1b4697a40fd5abb3bfd0f8d", + "name" : "0x1d0f613af7238735e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 43 +}, +{ + "ETH_account" : "0xa2cf9b3e261b11a90831b754d2329fef00db63e7", + "name" : "0xa2cf9b3e261b11a908", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4595857728 +}, +{ + "ETH_account" : "0x6e2d06b3dc255356a248e190e973ee3bf00d91a2", + "name" : "0x6e2d06b3dc255356a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2319352751 +}, +{ + "ETH_account" : "0xfe5129477a3ce88fbbe443ab0fb720c43205ddac", + "name" : "0xfe5129477a3ce88fbb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1644931029 +}, +{ + "ETH_account" : "0x6f98763ff5f6ca0aff91acddf8b85032fe62f704", + "name" : "raspo", + "publicKey" : "SPH7YX9FmMgpdSPikV7GwX59iqACJX68Mw4mhnq1e28coNWC1Zzk2", + "balance" : 4419093969 +}, +{ + "ETH_account" : "0x6abade04ba0fd02ff82c5d9be5795a028b797271", + "name" : "0x6abade04ba0fd02ff8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1186950977 +}, +{ + "ETH_account" : "0x10b439d14ad4331caf92d1756da7d46dea403240", + "name" : "0x10b439d14ad4331caf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4802401761 +}, +{ + "ETH_account" : "0xfdef95c7343db913e1b4e24bac2d292746ad44f8", + "name" : "28822882", + "publicKey" : "5KVqatfNAMeVHQKqAoBNxV1mXkbEX6apYzWKyY1UejhDNGQCvuz", + "balance" : 4398420529 +}, +{ + "ETH_account" : "0xce74252990f1e176042563a02f4cdcb5c1e395d6", + "name" : "0xce74252990f1e17604", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39 +}, +{ + "ETH_account" : "0x4aeeb1c0181ff4252467612408a70e3e7c6974ce", + "name" : "cryptowenger", + "publicKey" : "SPH5rvjAiJF3VsABYFXgJKUoJwC62qGj1tXKB67SFaG8wdCN7BhbK", + "balance" : 55238674621 +}, +{ + "ETH_account" : "0x9e24ee4b4239134e77ab3c4d1cd6dff4efa345bd", + "name" : "0x9e24ee4b4239134e77", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2209546984 +}, +{ + "ETH_account" : "0x09de857cb747c297205da1a8481eb7fcc5413f66", + "name" : "0x09de857cb747c29720", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1710030094 +}, +{ + "ETH_account" : "0x129f09a95e9751ac327a4fd77107876bf6835b7a", + "name" : "0x129f09a95e9751ac32", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13257281909 +}, +{ + "ETH_account" : "0x36b6db0422ec971445c054e965b98c004ac7ea15", + "name" : "0x36b6db0422ec971445", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1195139271 +}, +{ + "ETH_account" : "0x9a3c4de10190a0e903f9a6c7cc33a7475081b7b1", + "name" : "0x9a3c4de10190a0e903", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1060582552 +}, +{ + "ETH_account" : "0x605c376002b4300de4d5be3345d3ec35783ae315", + "name" : "0x605c376002b4300de4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000003843 +}, +{ + "ETH_account" : "0x19a4334f017b7bff6154dd329c5b2dcb3daf666b", + "name" : "0x19a4334f017b7bff61", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 795436914 +}, +{ + "ETH_account" : "0x364d4c87c3077a54bf568bcf881efa29481228c4", + "name" : "0x364d4c87c3077a54bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14190939696 +}, +{ + "ETH_account" : "0xdf9a75f48c89955f8f6ecb41aaffd0fc4a1e6eb2", + "name" : "0xdf9a75f48c89955f8f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9 +}, +{ + "ETH_account" : "0x94475db5acac3019a11b91bca38aa4fd2161b2d5", + "name" : "0x94475db5acac3019a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 96660201999 +}, +{ + "ETH_account" : "0x081c74509f5690a94eabb1474c050f5279ae2e33", + "name" : "0x081c74509f5690a94e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19 +}, +{ + "ETH_account" : "0xb93841b8e5d902eca54c7821d872d310e1adaa0a", + "name" : "0xb93841b8e5d902eca5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 657972411 +}, +{ + "ETH_account" : "0x91a66d32bc5927805519b072491061da1c604134", + "name" : "0x91a66d32bc59278055", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1781213565 +}, +{ + "ETH_account" : "0x49e4780933c5626bf33ca4d7839264ebfc4ef2b4", + "name" : "0x49e4780933c5626bf3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1606943050 +}, +{ + "ETH_account" : "0x357b48395747aaf8f74b8c9cbfaa3364b91f03fd", + "name" : "0x357b48395747aaf8f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0x04dc24a99df7b0582e9c6b5dd23f558ab949b4fc", + "name" : "0x04dc24a99df7b0582e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 740402789 +}, +{ + "ETH_account" : "0xdd2dfd53ac6d66969cef784c7fb911d5c45da285", + "name" : "0xdd2dfd53ac6d66969c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5086788127 +}, +{ + "ETH_account" : "0xc15dea26fedeee37ccef2f248442f5611775500b", + "name" : "0xc15dea26fedeee37cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4002942701 +}, +{ + "ETH_account" : "0x4aaf221da70e796eb7d7835e8d1eb0598c45bb42", + "name" : "0x4aaf221da70e796eb7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1187577278 +}, +{ + "ETH_account" : "0xee56aee4bc70413d2c8f9d06b03302eef3047690", + "name" : "0xee56aee4bc70413d2c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 112199796 +}, +{ + "ETH_account" : "0x254efae1d14de3cf218d081c53d30eb768f6b330", + "name" : "sophiatxnew", + "publicKey" : "SPH7aKmxhbGZ6Ae4Nx7KvwhNz2PjgDys6NSSxGphWsJ2jYXwr9CR4", + "balance" : 80347152509 +}, +{ + "ETH_account" : "0xacc9b372dc231de4f5711d3277e34fe97e1a92ed", + "name" : "0xacc9b372dc231de4f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4017357625 +}, +{ + "ETH_account" : "0x43f27b17325d11a4740583a6038eabefebb430c8", + "name" : "0x43f27b17325d11a474", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1406075168 +}, +{ + "ETH_account" : "0xe8621c864f58f5244944f78ed61c0d5b033574c8", + "name" : "0xe8621c864f58f52449", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 79633 +}, +{ + "ETH_account" : "0xc4c0ef8eb996e7dfad69ba77a4aba7b64e60b1fc", + "name" : "droppedstar", + "publicKey" : "SPH6YArr2HKs42BRqUPqx3L4TVBNJcwHQTrYZSrTCag2Wm9Q12571", + "balance" : 4036737885 +}, +{ + "ETH_account" : "0x98d77b1654b632f55d68039372650d98df7e3baf", + "name" : "0x98d77b1654b632f55d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4404678827 +}, +{ + "ETH_account" : "0x8d00785d77495e33a4334829027c0d2c74ce4fbe", + "name" : "0x8d00785d77495e33a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1004339406 +}, +{ + "ETH_account" : "0x68fb50e8a1a2f65cac870bcdd2394c05c2715723", + "name" : "0x68fb50e8a1a2f65cac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2702585213 +}, +{ + "ETH_account" : "0x1cf791fac023e3c2f867e91176afbf1053ebd56c", + "name" : "0x1cf791fac023e3c2f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1807248501 +}, +{ + "ETH_account" : "0xf8ad360ea80cb75499cc0d59b8220d6ec1fc87cc", + "name" : "0xf8ad360ea80cb75499", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4017357625 +}, +{ + "ETH_account" : "0xc07885b8aa1892c5ce7c1019bb69dcd6986627fa", + "name" : "0xc07885b8aa1892c5ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8033027960 +}, +{ + "ETH_account" : "0x187bf4533c9fc19c9fb7439cbcfe6a5315021026", + "name" : "0x187bf4533c9fc19c9f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1259398316 +}, +{ + "ETH_account" : "0xd5525df12e7b64fee6ff52b3a1d159bf33177ccc", + "name" : "0xd5525df12e7b64fee6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 563105806806 +}, +{ + "ETH_account" : "0x56983f4e60b41fe6fead0dd65c2084214fb50487", + "name" : "0x56983f4e60b41fe6fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4070422741 +}, +{ + "ETH_account" : "0xce3946315016e6e1d6786a6a8b15e90bfd8fd70b", + "name" : "0xce3946315016e6e1d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1285554440 +}, +{ + "ETH_account" : "0x40d3e47b08f2f3aa1796f559d7f53f13bd49594c", + "name" : "0x40d3e47b08f2f3aa17", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2276589000 +}, +{ + "ETH_account" : "0x88238a5f5a46011dcfe22a31038801c00f153891", + "name" : "0x88238a5f5a46011dcf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2758082314 +}, +{ + "ETH_account" : "0x3b65abee5b7308090232d6f0ae1b5a38aa59b4b2", + "name" : "0x3b65abee5b73080902", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12052072876 +}, +{ + "ETH_account" : "0x11b07596390d6943da972b99a24d2b758223967c", + "name" : "0x11b07596390d6943da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9762357625 +}, +{ + "ETH_account" : "0xdfaffe587cae7a227d30d476ed23523efcd954ce", + "name" : "0xdfaffe587cae7a227d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2410414575 +}, +{ + "ETH_account" : "0x6537b96c6b549c728ba21ae2db3177a104a64b22", + "name" : "0x6537b96c6b549c728b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 389683689 +}, +{ + "ETH_account" : "0x400754e3c8ff982ab671631f82dde4cd0badbdfd", + "name" : "0x400754e3c8ff982ab6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2008678812 +}, +{ + "ETH_account" : "0x4efcf1740291f44c5fffdc4b3e05b3e359e7265e", + "name" : "0x4efcf1740291f44c5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2008678812 +}, +{ + "ETH_account" : "0x4fd76570818641e54247c2587141033ca5507bc5", + "name" : "0x4fd76570818641e542", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2040225273 +}, +{ + "ETH_account" : "0x6cf61714f75249042fb5fc8048b79d700247c4fe", + "name" : "serdardulger", + "publicKey" : "SPH7vVwDZg9sE9CxRFqWA6APseLzwvGp8sb8xepSETaFFKSFFNU9V", + "balance" : 2266916970 +}, +{ + "ETH_account" : "0x909baa25fcb5dee8584752285322b71c9be86409", + "name" : "0x909baa25fcb5dee858", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8034715250 +}, +{ + "ETH_account" : "0x1f252bff5da6741447601140680b2a33ffca0f67", + "name" : "0x1f252bff5da6741447", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3659812796 +}, +{ + "ETH_account" : "0x35462e405580e26f219e16115836f09e5adbb90e", + "name" : "0x35462e405580e26f21", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 548428925 +}, +{ + "ETH_account" : "0xa9ceba48d60f441f61829d5daf84793acdd90c53", + "name" : "0xa9ceba48d60f441f61", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2008678812 +}, +{ + "ETH_account" : "0xc85cac15972733da051cdc6342aa55c092add7dc", + "name" : "massomie", + "publicKey" : "SPH6L4rihb7kHhjWDCuFZtuNmNTAbKkZAfmAgYLdDiZr23PePraau", + "balance" : 1606943050 +}, +{ + "ETH_account" : "0x50eec14fbe6db11a2d35409e04c0b80ce176814d", + "name" : "0x50eec14fbe6db11a2d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7000999382 +}, +{ + "ETH_account" : "0xf4e01f703f71c7a27c7dde295ca5b760dedcbcc1", + "name" : "0xf4e01f703f71c7a27c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4017357625 +}, +{ + "ETH_account" : "0x57f0775191bea044366c56d36e0a6531ac07ecef", + "name" : "0x57f0775191bea04436", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1311781345 +}, +{ + "ETH_account" : "0x3b7b6b0a1fa87bca740c7df110d73f40c6077d66", + "name" : "0x3b7b6b0a1fa87bca74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15265958976 +}, +{ + "ETH_account" : "0x2dbb440af3b93119ba47ac3e7cf3256252b830ef", + "name" : "fetrati", + "publicKey" : "SPH6UESPanptwFYbS8hBZL3h9t8XKhdtj8oUKWrymtZAuzXcPZd1W", + "balance" : 1564777191 +}, +{ + "ETH_account" : "0xfd83c91bc172af1e57766e10c1335fbe6763e501", + "name" : "0xfd83c91bc172af1e57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4017357625 +}, +{ + "ETH_account" : "0xd54b39bdd5fc3d23c32a01789a343972565a3711", + "name" : "sandra", + "publicKey" : "SPH67BMMyfuWbST5TY4mNcS75xnmmX5fDcAxY9UDtB3tkd9rPPAsa", + "balance" : 5362995304 +}, +{ + "ETH_account" : "0x2015957e585847d4b6adac3cbb1ddca9b89a7d9b", + "name" : "0x2015957e585847d4b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 208861860 +}, +{ + "ETH_account" : "0x644c2c9871171e50e2bf6abead487ef1f88bb30a", + "name" : "javid", + "publicKey" : "SPH5TDoTpyTaiuJuqT9GtPaUn2g7F4MrEXSLCmE8TT1mT6iRpwiuK", + "balance" : 1627029838 +}, +{ + "ETH_account" : "0x67b995355458d77498fc9622c2d654848cb59133", + "name" : "0x67b995355458d77498", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 867881 +}, +{ + "ETH_account" : "0x5ba27425b0c10284694d352b979f916908c7e18f", + "name" : "0x5ba27425b0c1028469", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6715994269 +}, +{ + "ETH_account" : "0xe509d0afe3cc21c6177fb3a0773e2101279de6c5", + "name" : "0xe509d0afe3cc21c617", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1004339406 +}, +{ + "ETH_account" : "0x3a719965b9109a9edfc920264ad588a34d6d9965", + "name" : "0x3a719965b9109a9edf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2556322925 +}, +{ + "ETH_account" : "0xfd56418c7a2b1dfedaf8d7b10673dd57161cad47", + "name" : "0xfd56418c7a2b1dfeda", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 29 +}, +{ + "ETH_account" : "0x46c9eaad8df2b45eb0dce7b47210bf6c514f756d", + "name" : "thucungcuatoi", + "publicKey" : "SPH6LWBi9dEW1e96RreCPsUgadGqHDtTfTzJW4Zrwkhu3EC1YeSrm", + "balance" : 1807810931 +}, +{ + "ETH_account" : "0x827dd875ed12287d74ffc1cbbedfe585b8a1798d", + "name" : "0x827dd875ed12287d74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 840186156 +}, +{ + "ETH_account" : "0x2bacd2f6334348a1d9441106ece9c7f397c7383d", + "name" : "0x2bacd2f6334348a1d9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50 +}, +{ + "ETH_account" : "0x69aa1f76a72b0475d0cdd625634fbec86f986ee8", + "name" : "0x69aa1f76a72b0475d0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40173576254 +}, +{ + "ETH_account" : "0x0027d60244f1452c1ed39dabfe4cad886b8b4aac", + "name" : "0x0027d60244f1452c1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1995415 +}, +{ + "ETH_account" : "0x207a34260cf4afbe6df2b51d5e61ce7d6db45641", + "name" : "0x207a34260cf4afbe6d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 999999812 +}, +{ + "ETH_account" : "0x1b553ff2c7fd2b0158ddf4caa441b7f2dbdd46d3", + "name" : "0x1b553ff2c7fd2b0158", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25 +}, +{ + "ETH_account" : "0x91a61e2acf6b153fd8a5483040ba3397578f3283", + "name" : "ehsanmasoomi", + "publicKey" : "SPH7bRWQFPkuvMSu1ttJ78WHrM1KFqkQDQ5DUbwZGLP9C2Gzzq9Ld", + "balance" : 5712682543 +}, +{ + "ETH_account" : "0x33389eaf2c1f9f5099dc27f304e23f2a232e1a3b", + "name" : "0x33389eaf2c1f9f5099", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1888158083 +}, +{ + "ETH_account" : "0x3821edb6207a657b0ab460562b5cc69b5a786ed0", + "name" : "0x3821edb6207a657b0a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3323304547 +}, +{ + "ETH_account" : "0xd9b33d7ee43eb56b10a8b1a68dc54ecc57050543", + "name" : "nessgorsphtx", + "publicKey" : "SPH7g7DmcXkoHmG2iQaCgk32G4FHyab5BAMqWhRxakjmhZXZ5SktZ", + "balance" : 13000930000 +}, +{ + "ETH_account" : "0xd1c2abac8dbdd1f87476acda91842312990d8f97", + "name" : "0xd1c2abac8dbdd1f874", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 72299 +}, +{ + "ETH_account" : "0x915e3e236b1dcd759759437bbb2876e811565942", + "name" : "0x915e3e236b1dcd7597", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 832111267 +}, +{ + "ETH_account" : "0x10f32ad771a8d0cf148f2970690137eae017462b", + "name" : "kenchung", + "publicKey" : "SPH8KtYjoZcVXKwSq7Se9TLkXA3PH6yDxangnTvHnMmBvVANttnju", + "balance" : 4017357625 +}, +{ + "ETH_account" : "0x7ad4e1c9c32093db22f83f83e1ec88284650364f", + "name" : "0x7ad4e1c9c32093db22", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 359562186 +}, +{ + "ETH_account" : "0x38657d2eebe4e6c3c63dc9f6394feb5df77138d7", + "name" : "u3500690", + "publicKey" : "SPH7o4i7ZzfNVth6TtZ1EvPyAzosaME7nkhUfx4nM18Ev1ooVBEkZ", + "balance" : 40171804600 +}, +{ + "ETH_account" : "0x4c41c6f7dd50a4233dced6f834aa40c5a92e527c", + "name" : "0x4c41c6f7dd50a4233d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4017357625 +}, +{ + "ETH_account" : "0x4a01c9e4decc09831cf81fd82f17b29f2b35012d", + "name" : "0x4a01c9e4decc09831c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7231243725 +}, +{ + "ETH_account" : "0x5e1cc15f9346614e44e73996b22faab45a7f1d89", + "name" : "0x5e1cc15f9346614e44", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 27 +}, +{ + "ETH_account" : "0x5fbda2a0ea580e46210730a925ca2cb2ea4c6136", + "name" : "0x5fbda2a0ea580e4621", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 36156218 +}, +{ + "ETH_account" : "0xf8f813ff7983dbb83d5e457d107c78cf868fb9ca", + "name" : "0xf8f813ff7983dbb83d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1017357625 +}, +{ + "ETH_account" : "0xab5d7f9ec4d86a5840563e0b041874cb035fcbe8", + "name" : "0xab5d7f9ec4d86a5840", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1198795584 +}, +{ + "ETH_account" : "0x546dde59403497691fa105852054728325c5d9d7", + "name" : "manosophiatx", + "publicKey" : "SPH5L9tLv4RyVGLVUZYLmRxwEetxmZJKxAvgE9CsNpeLA3xoKHnp4", + "balance" : 1161864016 +}, +{ + "ETH_account" : "0xce7625779ed6fbb67e162e6abb341a58c29c9b4a", + "name" : "kzyz", + "publicKey" : "SPH7p7vk87YSN7xysCE2ViSNUJTydRSYNbtaDTqx1pq5bhkYdXZWR", + "balance" : 20083329182 +}, +{ + "ETH_account" : "0xce1c1e0cb722e3927e611683bb755f3be06f0072", + "name" : "0xce1c1e0cb722e3927e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2330067422 +}, +{ + "ETH_account" : "0x1059fffeec64a6610b46117b5337535e0f07e63e", + "name" : "0x1059fffeec64a6610b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 803471525 +}, +{ + "ETH_account" : "0x52005ccbf21b32f2bb14ca3faea4a6e42402bc30", + "name" : "0x52005ccbf21b32f2bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 482247 +}, +{ + "ETH_account" : "0xbc2f4ebe5e6647bf61c27bbbfd988a25316a335d", + "name" : "kristerrumi", + "publicKey" : "SPH6GH2Wh6gWTJnGP4UR7CcaFR9vbqF7xa5qqdDAVPj8HDzEsNe2E", + "balance" : 4017357625 +}, +{ + "ETH_account" : "0x109d4ac55464fe8092c790611c425b86a76c91ff", + "name" : "0x109d4ac55464fe8092", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250897482 +}, +{ + "ETH_account" : "0x323438d3998b81f3beffa2ebc6a7f676eab7cdb5", + "name" : "llpg", + "publicKey" : "SPH56oqfrg4XRdBxC9y6DPjWMkXhLcyWbdt4PUcLjAg37tKfmnaCk", + "balance" : 13455815260 +}, +{ + "ETH_account" : "0x78aa2849d0c9cafabd13fc4e3a0d0def13b8dc6b", + "name" : "0x78aa2849d0c9cafabd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 401735762 +}, +{ + "ETH_account" : "0xdacd25555513c10994727dfa340ac20712412f92", + "name" : "0xdacd25555513c10994", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4017020167 +}, +{ + "ETH_account" : "0x5ef52addae0120144daf733ca640042a0b76d368", + "name" : "0x5ef52addae0120144d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 88 +}, +{ + "ETH_account" : "0xddee5153cfbe97377ea9ada7565b094486d9913b", + "name" : "0xddee5153cfbe97377e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20086788127 +}, +{ + "ETH_account" : "0xa9cf5288f5c1f113bb1a0b234b3463c17c77bcbd", + "name" : "0xa9cf5288f5c1f113bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7231763330 +}, +{ + "ETH_account" : "0xfd8d47c1eb534d25914e46c812890b6f1d78f3e7", + "name" : "0xfd8d47c1eb534d2591", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15250 +}, +{ + "ETH_account" : "0xf44d42f0fef5322e69962f11be27bbec8dd5f61a", + "name" : "winahyos", + "publicKey" : "SPH6mq8hq7rpXX4CKM2wUVJiso1yzEE5J7rcDEW99YZPWaWoxStwR", + "balance" : 112357220 +}, +{ + "ETH_account" : "0xd34c34d3d36e24ee6d96ab061385a373c1e67be1", + "name" : "0xd34c34d3d36e24ee6d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 75200435 +}, +{ + "ETH_account" : "0xb262526e5b62e6dc6b982c51047681bd1b5969c7", + "name" : "wenfufeng", + "publicKey" : "SPH6trxZ1ManHqLm4Skmoake9CPCM3En1Qs5u2w3s7CYj8B9RoHwt", + "balance" : 31345496941 +}, +{ + "ETH_account" : "0x929dbeced5ecbdcf55a1bae440cc873d12f1c0e9", + "name" : "0x929dbeced5ecbdcf55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16 +}, +{ + "ETH_account" : "0x4cfffc22881bad8e9f4be94f575417a29a38f1ac", + "name" : "0x4cfffc22881bad8e9f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 637355 +}, +{ + "ETH_account" : "0x3630a288dc3bdde084191df831d7d7d03e106579", + "name" : "myantonsophiatx", + "publicKey" : "SPH6AxytkbiHjkEYkdRmChw3tsQGWNw5xnNoGDJt8QHfGLWtAtg5q", + "balance" : 1129783768 +}, +{ + "ETH_account" : "0xc5e72f32f729db3059195dd9d642cd726eddf050", + "name" : "0xc5e72f32f729db3059", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 964165830 +}, +{ + "ETH_account" : "0x95553ead0d95385019ad532ddf3d1a88cc45d3c3", + "name" : "0x95553ead0d95385019", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 184798450 +}, +{ + "ETH_account" : "0x8b8d906faa6a8a303f3b4badf2459af94d695eb8", + "name" : "0x8b8d906faa6a8a303f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4017357625 +}, +{ + "ETH_account" : "0x8aed646717d779d7e6a22c8b233b72ce893f7d8b", + "name" : "0x8aed646717d779d7e6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8032184315 +}, +{ + "ETH_account" : "0x573bc3a0a4fa3d5ce890ac65a991f717a1180c5f", + "name" : "0x573bc3a0a4fa3d5ce8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3017357625 +}, +{ + "ETH_account" : "0xc7d7eea2fc7ad4455c0c3c7c3624086c43f56ae8", + "name" : "0xc7d7eea2fc7ad4455c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 455902190 +}, +{ + "ETH_account" : "0xf1256a832b5e26857bcaca05d6f5ea563ff4e6fa", + "name" : "0xf1256a832b5e26857b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 801699870 +}, +{ + "ETH_account" : "0x5381c4501e2588fc4986035b277f458ee0f11384", + "name" : "0x5381c4501e2588fc49", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 494141195 +}, +{ + "ETH_account" : "0x0f4ee46bc16c19d366e53a5f3b7625e657563cae", + "name" : "dillon", + "publicKey" : "SPH8N6kZUfzB2nQnT2wJAkKoPafTqWtt9c5TciF5QJuA5rLrhh7iD", + "balance" : 197408936 +}, +{ + "ETH_account" : "0x58d5ebb5a7667feb53e676efcb60e2a1acd1a669", + "name" : "0x58d5ebb5a7667feb53", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 72 +}, +{ + "ETH_account" : "0x247a810717aa2eb8c91e93135dd511fdc1a3b28b", + "name" : "0x247a810717aa2eb8c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 339537023 +}, +{ + "ETH_account" : "0xb7ac3070addf2b0c99dd78661fc9ad89b50d4cdc", + "name" : "0xb7ac3070addf2b0c99", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1473599704 +}, +{ + "ETH_account" : "0x1e6f9bcce4a58f82027ce59575d02835fe313b96", + "name" : "0x1e6f9bcce4a58f8202", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 515417 +}, +{ + "ETH_account" : "0x40d44b8e53d6e461a56aaf7b9d366b1e6fb88bae", + "name" : "0x40d44b8e53d6e461a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1642476578 +}, +{ + "ETH_account" : "0xc81b2245f25110bbf6062339220b826d68c11d5a", + "name" : "0xc81b2245f25110bbf6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 222780675 +}, +{ + "ETH_account" : "0x3d09d00304fc20288ea53fcf0f911136537d24db", + "name" : "garylee", + "publicKey" : "SPH5c1EZh5LVP7rRY8tfpsTgPwBwmVCYbAzFfKCpjGjq3JjeZuZEY", + "balance" : 126111074175 +}, +{ + "ETH_account" : "0xbbee9cbc5d518db71cf081c8cf53f1d0756a5465", + "name" : "sophiatxnms", + "publicKey" : "SPH8i5b75KzuhukyaApud7uW8qTHNArhRDNrTss743pMYVdNt1XEd", + "balance" : 274224309455 +}, +{ + "ETH_account" : "0x87b1f9d53fdb8694bd94a41104e81a00058d8a18", + "name" : "0x87b1f9d53fdb8694bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 87651422 +}, +{ + "ETH_account" : "0x350a85ea9f5c3ea3615dd52c6843362db45727e3", + "name" : "0x350a85ea9f5c3ea361", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2008678812 +}, +{ + "ETH_account" : "0xda18a7d2ed13a004ef11588c144bb3fe63804535", + "name" : "0xda18a7d2ed13a004ef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 47 +}, +{ + "ETH_account" : "0x0c723d0735176ec4965597e3effb65d62e388478", + "name" : "karimpour", + "publicKey" : "SPH8NeeKsxYsydWtfBaZEVnx2tphQThSk7w5CA6jxPExADoKgNLxz", + "balance" : 4017357625 +}, +{ + "ETH_account" : "0x5bd26c411125f92e1ef8b172144aefe6c84d79d4", + "name" : "0x5bd26c411125f92e1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1012403202 +}, +{ + "ETH_account" : "0x8fb0c5879187a1ed2c6145f29f9dc14dd47303f0", + "name" : "0x8fb0c5879187a1ed2c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2506522799 +}, +{ + "ETH_account" : "0x6bc5876e59cc642863609e9c3b64dbfad46efb57", + "name" : "0x6bc5876e59cc642863", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6245162794 +}, +{ + "ETH_account" : "0xce7b17b57300cdc8b4c4b25fd0fc16d285df6ebc", + "name" : "pourya71", + "publicKey" : "SPH7HyZUdj1mLHKeERgqaNbw4Xigkz4mwnV7FbnUh7CTBXJB96tDA", + "balance" : 520246469 +}, +{ + "ETH_account" : "0x7bcf8246e5c233e83b5b348dec0ae765dc5908f0", + "name" : "ppc1301", + "publicKey" : "SPH875XMaVF7ZBgc3PdhEXADVA9bQDca6uuzAR2vaGFNJQGNCPZhb", + "balance" : 1862592412 +}, +{ + "ETH_account" : "0xf309601c5e8eb9bb663ecb2b50b5184712609ac9", + "name" : "0xf309601c5e8eb9bb66", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1702869000 +}, +{ + "ETH_account" : "0x12d8d0b6760401c5390d86cdcedde2ef0823a475", + "name" : "0x12d8d0b6760401c539", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2556499389 +}, +{ + "ETH_account" : "0xfa2d3f4368c878caf8ad217aa4455b0fe373463e", + "name" : "0xfa2d3f4368c878caf8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 365214198 +}, +{ + "ETH_account" : "0x45454c2fc50a1e2753b0357e6645df700285ad58", + "name" : "0x45454c2fc50a1e2753", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 165656531 +}, +{ + "ETH_account" : "0x632404aa642910a2f096550e83b520b118125cd1", + "name" : "0x632404aa642910a2f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 611079354 +}, +{ + "ETH_account" : "0xe21a2f8b80d4a24ac732311324e50e4b0ac9faf6", + "name" : "0xe21a2f8b80d4a24ac7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24 +}, +{ + "ETH_account" : "0x324f1ece068828347e001dc79688a6dd08093e4a", + "name" : "0x324f1ece068828347e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1095642595 +}, +{ + "ETH_account" : "0x3143c83636530025d64d669ec4fdcd1cfd28b28b", + "name" : "0x3143c83636530025d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 709359784 +}, +{ + "ETH_account" : "0x68e2d56d620a65c09603a75806df37202501d54a", + "name" : "0x68e2d56d620a65c096", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000153485 +}, +{ + "ETH_account" : "0xa513022e3963daed3fb83561ecfcf3dd591f83f8", + "name" : "0xa513022e3963daed3f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 17530281527 +}, +{ + "ETH_account" : "0x9f4c5f48d960a6637b99ac231cfbd5121d956704", + "name" : "0x9f4c5f48d960a6637b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 430587540 +}, +{ + "ETH_account" : "0x860bedb7aaf3d9624f187ce7fd24a355db8f8638", + "name" : "0x860bedb7aaf3d9624f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6578696706 +}, +{ + "ETH_account" : "0x8cd53627778b24322041faeb2ece9f24f2bf3e15", + "name" : "0x8cd53627778b243220", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 620312663 +}, +{ + "ETH_account" : "0x022911823f964a5d49fd234635afb015fe9d9c3f", + "name" : "0x022911823f964a5d49", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50074452 +}, +{ + "ETH_account" : "0xaaf811854213142d3bdb95176742166f9be99c44", + "name" : "0xaaf811854213142d3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9755 +}, +{ + "ETH_account" : "0x7cac0310673822c8344271d491db1310b177f3fd", + "name" : "0x7cac0310673822c834", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 691034656 +}, +{ + "ETH_account" : "0x4af257455b70e759de73f504e17ace8b24958a21", + "name" : "0x4af257455b70e759de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 70992 +}, +{ + "ETH_account" : "0xd71688e2a2fdd18c18ae969ab87fc595dc583863", + "name" : "0xd71688e2a2fdd18c18", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300930477 +}, +{ + "ETH_account" : "0x9cb089e1884de6fe12db7e4551cf356eef4bea6b", + "name" : "0x9cb089e1884de6fe12", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 179539299 +}, +{ + "ETH_account" : "0x79aabe30c1c84c78b1c6df40008c93c4a3178666", + "name" : "marcusvassoler", + "publicKey" : "SPH685Bhnr34JvKh7MPCreocnT5wMz2ztyDZxGvG8vcf3NaaZDVDM", + "balance" : 7093649867 +}, +{ + "ETH_account" : "0x7a2564b32ff55824a2abc17f31ddc0383689eda0", + "name" : "0x7a2564b32ff55824a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18260709924 +}, +{ + "ETH_account" : "0xdf4f6a14cdb4f0f9201fb11ada95d72aa6e92608", + "name" : "0xdf4f6a14cdb4f0f920", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1826070992 +}, +{ + "ETH_account" : "0x44eff33ae7020e90b8e6824753c12dc76dfe3f9c", + "name" : "0x44eff33ae7020e90b8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 372186486 +}, +{ + "ETH_account" : "0x8d0cc78fbe728bd85df373e8ad28daa979e009ca", + "name" : "0x8d0cc78fbe728bd85d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2885192168 +}, +{ + "ETH_account" : "0x86fb451ebe709a3cb0c10a2e14f77009e51e24db", + "name" : "0x86fb451ebe709a3cb0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6059977 +}, +{ + "ETH_account" : "0x10d90f7da166c9a5a77421ba02dfe6d1af4388fd", + "name" : "0x10d90f7da166c9a5a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 56614226 +}, +{ + "ETH_account" : "0xad2bdcbf2e572a5a6b45d7942c846b6419892ea3", + "name" : "0xad2bdcbf2e572a5a6b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1384197393 +}, +{ + "ETH_account" : "0x41f82a696e5a58eed682473e5591c31653aac1c6", + "name" : "0x41f82a696e5a58eed6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 495380005 +}, +{ + "ETH_account" : "0x28270f6010913b8c978b377aa9459e67704b59f4", + "name" : "0x28270f6010913b8c97", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 155946462 +}, +{ + "ETH_account" : "0x392c86d8d08730044a2eafad41f1a512f83b1f25", + "name" : "0x392c86d8d08730044a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 155946462 +}, +{ + "ETH_account" : "0x4c9d9f9c59cb427414bf71d0e9e54a26250391eb", + "name" : "0x4c9d9f9c59cb427414", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2921713587 +}, +{ + "ETH_account" : "0x16ca350d0082222bbe3704260c7621ba65840ff2", + "name" : "0x16ca350d0082222bbe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 182607099 +}, +{ + "ETH_account" : "0xb4ceabd6d7836752b03d6782e9b8fcbc726f3d4a", + "name" : "0xb4ceabd6d7836752b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 102734754 +}, +{ + "ETH_account" : "0x5dd203a6e4bc4ca2de0cf632982c922b398839a4", + "name" : "0x5dd203a6e4bc4ca2de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 444342534 +}, +{ + "ETH_account" : "0x37fadc021e3b802e0bf1cea00d9ef3986c00cb3f", + "name" : "0x37fadc021e3b802e0b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50600997 +}, +{ + "ETH_account" : "0xd3723938455aebbc0cbde03fc9d2ddc8d66f32b0", + "name" : "0xd3723938455aebbc0c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5450130576 +}, +{ + "ETH_account" : "0x75b0b366564bbbb8e3557c2eec98d1dbfd8b55b0", + "name" : "0x75b0b366564bbbb8e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39 +}, +{ + "ETH_account" : "0x21e4e13dc6a0acd80f4a353d908b38e813762dd9", + "name" : "0x21e4e13dc6a0acd80f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 365214198 +}, +{ + "ETH_account" : "0x5a1c24acfd993887ccb80c77bb745ebac4c130e9", + "name" : "0x5a1c24acfd993887cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4382570381 +}, +{ + "ETH_account" : "0x958faf3216fb1b5bb32da2735c03d51497458122", + "name" : "0x958faf3216fb1b5bb3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2559244960 +}, +{ + "ETH_account" : "0xf3de217e1273d2aa02b2ed118df055a3d82d249e", + "name" : "0xf3de217e1273d2aa02", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 321379782 +}, +{ + "ETH_account" : "0x326f26930deceaa749bde8dc758a426b87c58b95", + "name" : "0x326f26930deceaa749", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6146992782 +}, +{ + "ETH_account" : "0x500ee9968020d68468e42bd54b71bb909b6258d2", + "name" : "0x500ee9968020d68468", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7304283969 +}, +{ + "ETH_account" : "0xdf9fae86457c9c16105d10361799783a97be8852", + "name" : "tobechi", + "publicKey" : "SPH793VGTK1jeNMzH6g9WRiuWGAVHUzesKM7yUwn4aaWsy7PEiDWZ", + "balance" : 1750092348 +}, +{ + "ETH_account" : "0xc20e46f7b682cfbb59bab468adb88cafdd1a9abe", + "name" : "0xc20e46f7b682cfbb59", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7304283969 +}, +{ + "ETH_account" : "0x49180ad60f358f1c793870e361b68802c83f86ff", + "name" : "0x49180ad60f358f1c79", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 709359784 +}, +{ + "ETH_account" : "0x16cd45745e5d715ff80e0fdd844a9987db57910b", + "name" : "0x16cd45745e5d715ff8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1460856793 +}, +{ + "ETH_account" : "0x2e9896c4ba908bfe5b1f97d75ad30fc56d0b8c33", + "name" : "0x2e9896c4ba908bfe5b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 592110823 +}, +{ + "ETH_account" : "0xdf75a7024dae19b3a23d59baad58542d3848ac4b", + "name" : "0xdf75a7024dae19b3a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2771705132 +}, +{ + "ETH_account" : "0x0026a4542223d3ffac4fbd70a5d9757726b5b2b8", + "name" : "0x0026a4542223d3ffac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1231735668 +}, +{ + "ETH_account" : "0xd977a87b88cdcc6cd432b7e930e31fd074e05a6a", + "name" : "0xd977a87b88cdcc6cd4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 430952754 +}, +{ + "ETH_account" : "0x724c104cae8c00f35b30fd577baf6d263da06bd8", + "name" : "0x724c104cae8c00f35b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6793 +}, +{ + "ETH_account" : "0x137232586ce994104e5c74ad449885e7e8ec32f0", + "name" : "0x137232586ce994104e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10004690372 +}, +{ + "ETH_account" : "0xb95b6a95c82f872334ae43c41ee3917f0908c291", + "name" : "0xb95b6a95c82f872334", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 96 +}, +{ + "ETH_account" : "0x87c48d39126d606ccda4ed39bbe59d8c48cba2db", + "name" : "0x87c48d39126d606ccd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1660064899 +}, +{ + "ETH_account" : "0x4e237c67815e9b44ddaf33f86bf5cb7f32c453b6", + "name" : "0x4e237c67815e9b44dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 498019469 +}, +{ + "ETH_account" : "0x8c8ce7abc24cf957bb7e91b166de32bcfbcb6d89", + "name" : "0x8c8ce7abc24cf957bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1677957079 +}, +{ + "ETH_account" : "0x8f8e116667f710e33f6bc50ec69e98679f89e960", + "name" : "0x8f8e116667f710e33f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 228414984 +}, +{ + "ETH_account" : "0x684f6185238c57068f5ecfa756ba6b02a84ec0a9", + "name" : "0x684f6185238c57068f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 84369 +}, +{ + "ETH_account" : "0xa9629caf7e7b3821b7edf6c3e1d2ca896d6bff04", + "name" : "kieran", + "publicKey" : "SPH6A5vb3mc4v6gSVSEr61cUUek6JFFYiSyMo2Bd1amZfEHwwst4u", + "balance" : 539620792 +}, +{ + "ETH_account" : "0xbf320f572a10254cc40d1f8522886a19e3605326", + "name" : "0xbf320f572a10254cc4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3320129799 +}, +{ + "ETH_account" : "0xb131564129edd1ee77a82b7ed8b344e1d45f6f3f", + "name" : "0xb131564129edd1ee77", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 531220767 +}, +{ + "ETH_account" : "0x366793b71fdf50d6214bf6f21059522777752093", + "name" : "0x366793b71fdf50d621", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2024999759 +}, +{ + "ETH_account" : "0x7db7b0706dc3aeda691db85ecf0993699e6034b5", + "name" : "0x7db7b0706dc3aeda69", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3320129799 +}, +{ + "ETH_account" : "0x5f4a99fb03f01f61f40c964039427d37ea318f2f", + "name" : "0x5f4a99fb03f01f61f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5340663304 +}, +{ + "ETH_account" : "0xa69d9bd21c88869a8bc46f2e0d0893d0f1393505", + "name" : "0xa69d9bd21c88869a8b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 143823673 +}, +{ + "ETH_account" : "0x30f9a84f78d4d791fee4ef805e4440de8328b30d", + "name" : "0x30f9a84f78d4d791fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 642607802 +}, +{ + "ETH_account" : "0xc2809eb85fac3cab3c6dec274f6844298091520f", + "name" : "0xc2809eb85fac3cab3c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 244282578 +}, +{ + "ETH_account" : "0xac397b37f5437d8b92fcd02416bd4e5f2faa6120", + "name" : "mlab", + "publicKey" : "SPH5vE1c6MQosA4SUTyYPSP8UZwqSZTCd6P6prp5zxp3gvYHwa8bG", + "balance" : 15270443469 +}, +{ + "ETH_account" : "0x4db690a81f4a1e4ba0e576ac2cbab76dfc917aa7", + "name" : "0x4db690a81f4a1e4ba0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5605000000 +}, +{ + "ETH_account" : "0x901c017d5af99174529c995a4dfcb9a790ff7ff7", + "name" : "0x901c017d5af9917452", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 887234360 +}, +{ + "ETH_account" : "0x797e316b322a4590bed7f0aaf0d61b6542812b58", + "name" : "0x797e316b322a4590be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 407880983 +}, +{ + "ETH_account" : "0x3032c8826871b59c7ed7e3c9d7888fbdd4fdaa47", + "name" : "fredswap", + "publicKey" : "SPH86i9JamWaWtjcnXv9oPt9CMBHX5uEdsRVBXXNGXhoopuUzQgFa", + "balance" : 12978934581 +}, +{ + "ETH_account" : "0xdb4153c2bdac713b04b3fe95349307435baa3396", + "name" : "0xdb4153c2bdac713b04", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xc61d95ea44d907700f8ee01b3a6a9ed8a1a14bd4", + "name" : "0xc61d95ea44d907700f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 36620 +}, +{ + "ETH_account" : "0x03ab5125fd7b73548426aad157c0955d150246d0", + "name" : "0x03ab5125fd7b735484", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3320129799 +}, +{ + "ETH_account" : "0x2eeb5a38265d802bee17f0f8ec57d5a26216ec90", + "name" : "0x2eeb5a38265d802bee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 644105181 +}, +{ + "ETH_account" : "0xb812f4af4870756e8c82fd3108644e0d5a87e9a8", + "name" : "0xb812f4af4870756e8c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 551639566 +}, +{ + "ETH_account" : "0x5cf8dae9365111f003228c3c65dd5c7bf1bd8a7d", + "name" : "marcinkreft11", + "publicKey" : "SPH8ZBmHd2qD5AMMEjpbDPpo2LMNxgLjLgpG5QB2vnZeS8tLSqdSV", + "balance" : 51628018382 +}, +{ + "ETH_account" : "0xfc2fa86a6c2b333bfe9e376fa632492e098b9836", + "name" : "0xfc2fa86a6c2b333bfe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 64277712 +}, +{ + "ETH_account" : "0xbe5ab2e59810dc2563c68848e54978ccd49bd309", + "name" : "0xbe5ab2e59810dc2563", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 553491136 +}, +{ + "ETH_account" : "0x46348295dae30a96bb5c31f3c9bc0213ffdf2a1b", + "name" : "0x46348295dae30a96bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4702352757 +}, +{ + "ETH_account" : "0xaed0001be7c153ca734a16117f8f9dce4fb7c344", + "name" : "cochiece", + "publicKey" : "SPH6oqTTvtnf5RonWC2Qd2gRQhnniErhT46ZGZJSd6D1Nuz7SnMek", + "balance" : 1140333573 +}, +{ + "ETH_account" : "0x87b2090adffb102aaf52944de545894189954327", + "name" : "0x87b2090adffb102aaf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 996038939 +}, +{ + "ETH_account" : "0x1ba6db6dbb94629a39db5cdb9b82e25bab5e81b6", + "name" : "0x1ba6db6dbb94629a39", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 228006489 +}, +{ + "ETH_account" : "0x2cbdc160ea5c1ce0721de1fb00d238f998c87ab6", + "name" : "0x2cbdc160ea5c1ce072", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25959 +}, +{ + "ETH_account" : "0xd692a39ad70184f2ce63044d3902d0195fb6e002", + "name" : "0xd692a39ad70184f2ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 665458161 +}, +{ + "ETH_account" : "0x08cd3b3bf00032602e1bbc5d077c351566cc0d1c", + "name" : "0x08cd3b3bf00032602e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 704030685 +}, +{ + "ETH_account" : "0x5b7ee2c5c46eec1eb0ff4a7abb4e6ea4f371caee", + "name" : "0x5b7ee2c5c46eec1eb0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6640259598 +}, +{ + "ETH_account" : "0x90baf1f015f730b3368e02422ab1e300a6e73d80", + "name" : "0x90baf1f015f730b336", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9960389398 +}, +{ + "ETH_account" : "0x60f52798a12eb2b41c37e0f9bf3922d0823d0728", + "name" : "0x60f52798a12eb2b41c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1651731373 +}, +{ + "ETH_account" : "0x7e31c95dcc74e32337d786905d2b779db70c711f", + "name" : "0x7e31c95dcc74e32337", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3338510520 +}, +{ + "ETH_account" : "0xd5abf07705461645b0974b89b03103990e5e72e4", + "name" : "0xd5abf07705461645b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2198814223 +}, +{ + "ETH_account" : "0xa986183c417e58b744a7aa2282261919e73a3b64", + "name" : "0xa986183c417e58b744", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 265808031 +}, +{ + "ETH_account" : "0xdc176ee1573d8385654d89ad7d9ddda0365b47f8", + "name" : "0xdc176ee1573d838565", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1328051919 +}, +{ + "ETH_account" : "0x40cafc3daa5eb3342e4e8450ba4863b7afd053d9", + "name" : "0x40cafc3daa5eb3342e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 44277344 +}, +{ + "ETH_account" : "0x9522f0dc76dc01d6921cb8f1e69c2b8ef63d6ae2", + "name" : "0x9522f0dc76dc01d692", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 265610383 +}, +{ + "ETH_account" : "0xec0d7d3fa552193f09f4714f7e637d04a59ac51a", + "name" : "0xec0d7d3fa552193f09", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1005999329 +}, +{ + "ETH_account" : "0x93bddf4abf119059039c10c6bbdb0f3f8fe4e815", + "name" : "0x93bddf4abf11905903", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4790636399 +}, +{ + "ETH_account" : "0x30385cca00fbfbe151196a2547da4d442f2e12ea", + "name" : "0x30385cca00fbfbe151", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 996038939 +}, +{ + "ETH_account" : "0x83f12b36471d19d4bc4ca8e82293a6c3fdbfc34e", + "name" : "0x83f12b36471d19d4bc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3239585 +}, +{ + "ETH_account" : "0x03097a46ffb4d9f5291e1975a76f7bb9926b2a1f", + "name" : "0x03097a46ffb4d9f529", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9960389398 +}, +{ + "ETH_account" : "0x084dc49dc3f78d70affe6ec5b16a9e1bb7a78067", + "name" : "0x084dc49dc3f78d70af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99 +}, +{ + "ETH_account" : "0x2f35237dc15d4cbb679ca004d21a558b6a57f6c1", + "name" : "0x2f35237dc15d4cbb67", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13596462749 +}, +{ + "ETH_account" : "0x05ea96be25dd15bf599f7ef2ca2dbcce9dd39707", + "name" : "0x05ea96be25dd15bf59", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3318665622 +}, +{ + "ETH_account" : "0x6b081b11fb1e8139853f8f06ac4fe3bfe4ee7950", + "name" : "0x6b081b11fb1e813985", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 103839 +}, +{ + "ETH_account" : "0x45870841d6c51c13b1d5fe77376fc9f01e073684", + "name" : "0x45870841d6c51c13b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39841557 +}, +{ + "ETH_account" : "0xf5bebb7cde9ca7f72bf2fa5bd0a1414a204bfafb", + "name" : "0xf5bebb7cde9ca7f72b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3320129799 +}, +{ + "ETH_account" : "0x77a01d50749c67aea1283633c3d487e0fa8f2c95", + "name" : "0x77a01d50749c67aea1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3320129799 +}, +{ + "ETH_account" : "0x644fd6fc0952c2d969e713d687765898e60dfc61", + "name" : "0x644fd6fc0952c2d969", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0x9a9a27fac1a02caa939ea63a6513d926aff2fa7c", + "name" : "0x9a9a27fac1a02caa93", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 648997 +}, +{ + "ETH_account" : "0x4a00f3aaf333d57550a9a422ac7912e5d904a0d7", + "name" : "0x4a00f3aaf333d57550", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 994435317 +}, +{ + "ETH_account" : "0x6c250c8dc6920522d9d17f10f629f9265fa34295", + "name" : "freiburggingin", + "publicKey" : "SPH71GaTMZLP3KDkRDyEyueguFGURgWwUnDVuuVNKzDAXgRZDs8vn", + "balance" : 3652142779 +}, +{ + "ETH_account" : "0xb9f50045cf31db49dedae524d81100b4bdd07b37", + "name" : "0xb9f50045cf31db49de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13280519197 +}, +{ + "ETH_account" : "0xfc88584d56f0f1d81b929e626c71dda0507f8e2b", + "name" : "alfredospata", + "publicKey" : "SPH65xwoxs8CyBT4oSyTUPaC98Fm45LHXm4AVybYTXUA6mMZMS1Hp", + "balance" : 458333396 +}, +{ + "ETH_account" : "0x5133b8b4d35b30c90004516d3be53ff02fe4f821", + "name" : "0x5133b8b4d35b30c900", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 237971897 +}, +{ + "ETH_account" : "0x464f4fea381094aacaea439575ae18189cfaa68c", + "name" : "0x464f4fea381094aaca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2625075699 +}, +{ + "ETH_account" : "0x935e20f129d3a014c0d3af8ca807a5a7bc99f6df", + "name" : "0x935e20f129d3a014c0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2986652642 +}, +{ + "ETH_account" : "0x090ebce18d30d4c52c50517bb1f4b4cd167e9573", + "name" : "0x090ebce18d30d4c52c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 166006489 +}, +{ + "ETH_account" : "0x9ddfe61813ecdf6bf53a12f3075fde08a05a4a65", + "name" : "0x9ddfe61813ecdf6bf5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1400000000 +}, +{ + "ETH_account" : "0x854e8bb82e0b491f49bbe1b01059d0cef6d9be7f", + "name" : "0x854e8bb82e0b491f49", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1660064899 +}, +{ + "ETH_account" : "0x9177ce62785d981561846411c917f5ba50e947da", + "name" : "0x9177ce62785d981561", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4018541326 +}, +{ + "ETH_account" : "0x977e1a5d94cd7dd6dc17dae0b9cc2a9fc9e17158", + "name" : "0x977e1a5d94cd7dd6dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3479164016 +}, +{ + "ETH_account" : "0xb9704f77315560d312940aa32e39de1a08c9d8f6", + "name" : "0xb9704f77315560d312", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 578034598 +}, +{ + "ETH_account" : "0xb1f71c3ad449752c28f8d81070207eff3fe024b0", + "name" : "0xb1f71c3ad449752c28", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 297776797 +}, +{ + "ETH_account" : "0x2ef1268d8c324c9d95bf7f942af796a8c0574882", + "name" : "0x2ef1268d8c324c9d95", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 645961133 +}, +{ + "ETH_account" : "0xb4ffb523fbeec0761a6ba907fc7cc40a6d83cee7", + "name" : "0xb4ffb523fbeec0761a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 265610383 +}, +{ + "ETH_account" : "0x324a21787ddf7e9b92dfa07c2c76e5ef9b9c0486", + "name" : "0x324a21787ddf7e9b92", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 136125321779 +}, +{ + "ETH_account" : "0x1b47c8f3edf7c54aa4bc2af062224e361d927e07", + "name" : "0x1b47c8f3edf7c54aa4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2201246057 +}, +{ + "ETH_account" : "0xac554259350b7e6a4b08e5e0d6f90f86a4c163dd", + "name" : "0xac554259350b7e6a4b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 365214277 +}, +{ + "ETH_account" : "0xdeeb963f7ba5687c703680a8bc55e036deba3d9f", + "name" : "0xdeeb963f7ba5687c70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 180681463 +}, +{ + "ETH_account" : "0x694ab34f40611469706d2ff1ac4b430f431e5b05", + "name" : "0x694ab34f4061146970", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 285165948 +}, +{ + "ETH_account" : "0x7845a5e518c7d7fcf49eff1ea576698e677c1a24", + "name" : "0x7845a5e518c7d7fcf4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9960389398 +}, +{ + "ETH_account" : "0x9e4a44d2ed58e40ec5f57942d026ec3cfeb4f1eb", + "name" : "0x9e4a44d2ed58e40ec5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1 +}, +{ + "ETH_account" : "0x38c14342b21487cebfeb4cea8ad6365574f9719f", + "name" : "0x38c14342b21487cebf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 335698324 +}, +{ + "ETH_account" : "0x455349fd75fe8dfb91d6ab2939aa6ce757ba526b", + "name" : "0x455349fd75fe8dfb91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 504659729 +}, +{ + "ETH_account" : "0x0e05f225c558b19b2eeeb6e9b3e204409ae503c8", + "name" : "0x0e05f225c558b19b2e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3320129799 +}, +{ + "ETH_account" : "0x190f185ffa8fb455dad81dd541cb49da422d996d", + "name" : "0x190f185ffa8fb455da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 63 +}, +{ + "ETH_account" : "0x5d4b80d592bd5bca22a95890c8482268eac21c25", + "name" : "0x5d4b80d592bd5bca22", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1351314708 +}, +{ + "ETH_account" : "0xc26bff640cfc1f8bc87c413426a4e78e3474c929", + "name" : "0xc26bff640cfc1f8bc8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 548469737 +}, +{ + "ETH_account" : "0xad98dc3365be0708c8a10cfe46bdba7fe22eab52", + "name" : "mysphtxwlt", + "publicKey" : "SPH7SkTMTVrS5i2fwggMXLhauNFnMkJzL23zZLRxTyZQgtGiQRTKH", + "balance" : 1377193479 +}, +{ + "ETH_account" : "0xe377b7d984a023effb197d08562c9381e59c32f1", + "name" : "0xe377b7d984a023effb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3023545994 +}, +{ + "ETH_account" : "0x2d01568d468b9f99ea39bba476a3be1ff4ef6543", + "name" : "0x2d01568d468b9f99ea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000630908 +}, +{ + "ETH_account" : "0x8fd551fd8335f581490bab41f45a2e58bbe8464e", + "name" : "0x8fd551fd8335f58149", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 670047347 +}, +{ + "ETH_account" : "0xe37652f26988a587d4966ef1f83c77236bfe3319", + "name" : "0xe37652f26988a587d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99999979 +}, +{ + "ETH_account" : "0xc787ce2bfae07ad014d63306aa38b8353ea09f85", + "name" : "0xc787ce2bfae07ad014", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 419009 +}, +{ + "ETH_account" : "0xc63f6d12674bc241f55ac49672eb8a1e37097c45", + "name" : "0xc63f6d12674bc241f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1492752697 +}, +{ + "ETH_account" : "0x03c047d4eaf7768e9db3f3faf4fcabca1fa77795", + "name" : "0x03c047d4eaf7768e9d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 498019469 +}, +{ + "ETH_account" : "0x7de0564766e116dcb3a527782ae4bb6824ec3132", + "name" : "0x7de0564766e116dcb3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30001297994 +}, +{ + "ETH_account" : "0xbe66cc6c0467fbc67bcce2ae02fb11d150423828", + "name" : "0xbe66cc6c0467fbc67b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 498019469 +}, +{ + "ETH_account" : "0xfbdbdbcd65bf497e874a1a6351c5c217776c1046", + "name" : "0xfbdbdbcd65bf497e87", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6092752697 +}, +{ + "ETH_account" : "0xfcea74d50d29c376826dfa11ce5771c49fa7f54f", + "name" : "0xfcea74d50d29c37682", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 664025959 +}, +{ + "ETH_account" : "0x5db9630da2b6caa34d5af1e90b720d263cd5bdf1", + "name" : "0x5db9630da2b6caa34d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5288269487 +}, +{ + "ETH_account" : "0x767f4fe69e051c88ae9f8e40dd55adc54d7e63ad", + "name" : "0x767f4fe69e051c88ae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30079670672 +}, +{ + "ETH_account" : "0xc99f0e56acce1bbee66e6cad641f08d07cbeb282", + "name" : "0xc99f0e56acce1bbee6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 796831151 +}, +{ + "ETH_account" : "0x241457a01e891b7a5708ff2a2f803d46a633e0a0", + "name" : "0x241457a01e891b7a57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 236693215 +}, +{ + "ETH_account" : "0x5b9ed8566bf6f9d5301ac5f9c240219c6fbe475d", + "name" : "0x5b9ed8566bf6f9d530", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 263 +}, +{ + "ETH_account" : "0xdd46b3ed8748ccc5cc9f23dc490f3a7feffdf1d5", + "name" : "sphtxedlom", + "publicKey" : "SPH6UkBNXk9MWPde8oiuaWL6SjmcG65sKbLpvGGzHo9JXzwF9cSug", + "balance" : 3533511186 +}, +{ + "ETH_account" : "0xfdd03042371c064146bd4eea7790c2fb4e564ed5", + "name" : "0xfdd03042371c064146", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99 +}, +{ + "ETH_account" : "0x969600016abf67b4f4c6b9075cf2948a348f74f4", + "name" : "0x969600016abf67b4f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 582 +}, +{ + "ETH_account" : "0x47d2270b03c38c4130a3e6e11cfe6756731cdfe2", + "name" : "0x47d2270b03c38c4130", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1626863601 +}, +{ + "ETH_account" : "0x192336e9bd74ef2e584e8dfdd6189fe0506c29d7", + "name" : "0x192336e9bd74ef2e58", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 664084369 +}, +{ + "ETH_account" : "0xbd49c00ce5ab442c7a3d154131191ae918353c61", + "name" : "0xbd49c00ce5ab442c7a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 241263872 +}, +{ + "ETH_account" : "0x1b60f0993008f06463ccaea2440fd00a98875a35", + "name" : "0x1b60f0993008f06463", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4637912868 +}, +{ + "ETH_account" : "0x7fc1d33d7e0a711eed679f55e9defea3d57b0a58", + "name" : "0x7fc1d33d7e0a711eed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66438776413 +}, +{ + "ETH_account" : "0xcb9bc49dfaa882146e43cfc6e44abbb0ffc71f6c", + "name" : "0xcb9bc49dfaa882146e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 98 +}, +{ + "ETH_account" : "0x01445f576a798f58aeb2992f5d78f4d319a8f1d4", + "name" : "gordonswap", + "publicKey" : "SPH6zGdN1VB4tuwJ6bmxVTqXFXTgKQHoJ3TYtBrH4AatGgLfgo3t9", + "balance" : 10981583401 +}, +{ + "ETH_account" : "0x344a5f7f9e3105754b3056868c932c55eab3a642", + "name" : "0x344a5f7f9e3105754b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 964544 +}, +{ + "ETH_account" : "0xdd5a5de29765ff37ba3b0a3ed3106741e244f07a", + "name" : "0xdd5a5de29765ff37ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19197 +}, +{ + "ETH_account" : "0xcb9939297bb29d0acf8af3d2e045d4de10f48d5a", + "name" : "0xcb9939297bb29d0acf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2218000000 +}, +{ + "ETH_account" : "0x78c5b8b44adc0e50e03860d88c74e3b92622e51c", + "name" : "themayurchavan", + "publicKey" : "SPH5V2gjVr6aKaYabFuALamvCJrbVfkzKqy4gkTG3NV98oAankvCG", + "balance" : 231805191 +}, +{ + "ETH_account" : "0x96afb29cae2925a74297ec619d1681c9e51bf195", + "name" : "0x96afb29cae2925a742", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 249009734 +}, +{ + "ETH_account" : "0xd31bf290ca2e6e75ed22a90aa018e677e68eb52f", + "name" : "0xd31bf290ca2e6e75ed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 603893 +}, +{ + "ETH_account" : "0xabb3eed090a40395bded18f655ddc247b3707ac7", + "name" : "0xabb3eed090a40395bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4635039682 +}, +{ + "ETH_account" : "0xe0d6e881f308f6de799854259260b76df6d84cdb", + "name" : "0xe0d6e881f308f6de79", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2490097349 +}, +{ + "ETH_account" : "0x9044a8f287faf4530eaf8ec07661df8b068e6469", + "name" : "0x9044a8f287faf4530e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 166006489 +}, +{ + "ETH_account" : "0x70afca297d2d48705fa3029d1861fdfda7eccfc6", + "name" : "0x70afca297d2d48705f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80371228 +}, +{ + "ETH_account" : "0x3709c12cfbfc910421441cb945ea74098548cb81", + "name" : "0x3709c12cfbfc910421", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 564422065 +}, +{ + "ETH_account" : "0x8cf3827d2d8eee0b474211a299ca51765d8adc02", + "name" : "0x8cf3827d2d8eee0b47", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1058885676 +}, +{ + "ETH_account" : "0xb6dea7002bd6dbac9a8bdc2f8e337b67d5df6dd1", + "name" : "0xb6dea7002bd6dbac9a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 46643360 +}, +{ + "ETH_account" : "0x5718732c2691a13456e0aefc4f5b5698c876cd78", + "name" : "0x5718732c2691a13456", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 661237050 +}, +{ + "ETH_account" : "0x63d0345a991229c6e8f52d81fa81a4b1ddcec6a5", + "name" : "0x63d0345a991229c6e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1169061962 +}, +{ + "ETH_account" : "0x19e300e8bf9fb66a0450036bbdcf367a8a2fd16b", + "name" : "0x19e300e8bf9fb66a04", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8199256427 +}, +{ + "ETH_account" : "0xfbaf292cac6f2e58de69fdaa0393c8b9195535e8", + "name" : "0xfbaf292cac6f2e58de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 129799 +}, +{ + "ETH_account" : "0x476a02d39fbdd66ae703d33f47de3840e940a9d8", + "name" : "0x476a02d39fbdd66ae7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 799 +}, +{ + "ETH_account" : "0xf50bdd5e7e9b3496ea5403bc4000a37e9dae8dc2", + "name" : "0xf50bdd5e7e9b3496ea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3320129799 +}, +{ + "ETH_account" : "0x79b05bbeb6c73a03a02c61c762da8fb6c437bb10", + "name" : "0x79b05bbeb6c73a03a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5845152823 +}, +{ + "ETH_account" : "0x5e5cf0ac67f833c8215542347b6b201a5171cbcc", + "name" : "0x5e5cf0ac67f833c821", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3768347322 +}, +{ + "ETH_account" : "0x4a39913f3eb7e3c1a85691728c7bd9a2cae29750", + "name" : "leo", + "publicKey" : "SPH7W67fvG1q59R2vtF9oH2XM4Kstaw8fT34iEBfATz8QAyQJFKvq", + "balance" : 5245805083 +}, +{ + "ETH_account" : "0x3efb9e2ac2f1b1533c7c4330230dc38beb03b2b3", + "name" : "0x3efb9e2ac2f1b1533c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 36521427794 +}, +{ + "ETH_account" : "0x750fc69ffa68021a4fb94493aebb569641c439cc", + "name" : "0x750fc69ffa68021a4f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1998174399 +}, +{ + "ETH_account" : "0x2ddb82717da37287a64913c121a726946ded7e46", + "name" : "0x2ddb82717da37287a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 76362985 +}, +{ + "ETH_account" : "0x419643b2ac87f06fa00c78bddef4ea8cbb4d5d1c", + "name" : "jalex", + "publicKey" : "SPH6GT8gza9q9hMEpnMjJvfuoeJ3dAxpFjF466MvHs4MfwnZWpysd", + "balance" : 7712345186 +}, +{ + "ETH_account" : "0x49fb4692f1a0b315e83091d1f07c09978637757f", + "name" : "0x49fb4692f1a0b315e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 292643212 +}, +{ + "ETH_account" : "0x94d4a093ce8cbe788c6c61ec1beece02c1b0cd56", + "name" : "donteee", + "publicKey" : "SPH7DsShngy33TN6HkkvsCGRQV7vVQoACQ6UDwYzdFdLmVGZ8muHg", + "balance" : 10230129799 +}, +{ + "ETH_account" : "0x574b4e64d23ab7ec3b223a47f84bd972a062b545", + "name" : "0x574b4e64d23ab7ec3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 45782631 +}, +{ + "ETH_account" : "0x729a76162903abb7ebde443f745cfe04a19b20cf", + "name" : "0x729a76162903abb7eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3418106829 +}, +{ + "ETH_account" : "0x34850771ccba747b16867808e2801af252c7ff3f", + "name" : "0x34850771ccba747b16", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 196418878 +}, +{ + "ETH_account" : "0x78f30784af7edcc494972b5471eda979d46754aa", + "name" : "sophiaisleofman", + "publicKey" : "SPH7nKVisuD8HyRYGsd4A3rUFq6GQ8Q9wG2d1VuJpM6AN7vhyoL5z", + "balance" : 1005744769 +}, +{ + "ETH_account" : "0x57e974eabd223817095d1432cf5c9bf5125ad4aa", + "name" : "0x57e974eabd22381709", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1156851777 +}, +{ + "ETH_account" : "0xa0d9f41c0646fed104d617f89867c09c78e75485", + "name" : "0xa0d9f41c0646fed104", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 306 +}, +{ + "ETH_account" : "0xba3672d5a9d19874d178ae0dfcd6f9c3a3ea1205", + "name" : "muhammaddanish", + "publicKey" : "SPH88MQQGZBjrUbadtQrKfGGMn7iGgo3UNc7W9iDhiBEzMKMZptJt", + "balance" : 68435030546 +}, +{ + "ETH_account" : "0xbaf0dd0eba521606c8f65c22b7de201b81000854", + "name" : "0xbaf0dd0eba521606c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 382 +}, +{ + "ETH_account" : "0xab3eeec42b2fbbcc23ccba5439a2dd6e965b6ef6", + "name" : "0xab3eeec42b2fbbcc23", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3320000000 +}, +{ + "ETH_account" : "0x42b52cda226b1d8ac36128aa17a0b1b4a81a5ee9", + "name" : "0x42b52cda226b1d8ac3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 75000000000 +}, +{ + "ETH_account" : "0xdb5863c6b0e3b17b437b568d5f1aa2b53e10d78f", + "name" : "0xdb5863c6b0e3b17b43", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 70000 +}, +{ + "ETH_account" : "0xb43c0ca43c9b526dd548d166c3fa5942d5ae91bd", + "name" : "0xb43c0ca43c9b526dd5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 265972 +}, +{ + "ETH_account" : "0x29d21f38c8994ff170dee24b651c112cceebb336", + "name" : "0x29d21f38c8994ff170", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 799813 +}, +{ + "ETH_account" : "0xb85fb49ef9a4ee697c51764f99bd70501c52e33d", + "name" : "0xb85fb49ef9a4ee697c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1115000000 +}, +{ + "ETH_account" : "0xfce7bba19238fe7ef2ca24421fad9ab29f442e2d", + "name" : "0xfce7bba19238fe7ef2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6074000000 +}, +{ + "ETH_account" : "0xf3c119548d62b7e9a4e578aa8620dd046202c4da", + "name" : "0xf3c119548d62b7e9a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000000 +}, +{ + "ETH_account" : "0xf7bfa4b01e508cf0e1ea8c650be9bcb69f88f45e", + "name" : "0xf7bfa4b01e508cf0e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2410414575 +}, +{ + "ETH_account" : "0x21c8f8642ee6a317ce9b02e026dbbc100f901546", + "name" : "jfarah519", + "publicKey" : "SPH56GWsQT2yEQkqBhapuuVsPP6h1B5LiHHMiVJjaejJuxFV6fjAd", + "balance" : 10660829923 +}, +{ + "ETH_account" : "0x3d26b369e7f2f7c4514d27221d9944dabce4ef2a", + "name" : "americacagle", + "publicKey" : "SPH7x5YVqAyiupkTCuxuCYr1ovsYPMPQU4D5EGeNXUEZJ1yuMKYqD", + "balance" : 9268433350055 +}, +{ + "ETH_account" : "0x73a4ecd0d30ea32710ad7f9ce2111bfa856eff83", + "name" : "0x73a4ecd0d30ea32710", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x59066889711e2a020b892721ece70e1dbf2b04af", + "name" : "0x59066889711e2a020b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2008678812 +}, +{ + "ETH_account" : "0x91364516d3cad16e1666261dbdbb39c881dbe9ee", + "name" : "0x91364516d3cad16e16", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 407248217061 +}, +{ + "ETH_account" : "0x229c5620230026a87392d086a2174debb88642f7", + "name" : "0x229c5620230026a873", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7007000000 +}, +{ + "ETH_account" : "0x435229d6124aa7a1d78c04fd7d60e36e121b1380", + "name" : "zhenghy", + "publicKey" : "SPH6Fof8wJNjnkyAh26Q3uWtcYnKpHjPAqbJtT1fyPvdGipekySMS", + "balance" : 48610033600 +}, +{ + "ETH_account" : "0xff7d769d7dfe65c3d6e2bd16bf05cf7fecefb52e", + "name" : "0xff7d769d7dfe65c3d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6640389398 +}, +{ + "ETH_account" : "0xf7a574a4e6c5cf74242d587eb57f3e84c8f153af", + "name" : "0xf7a574a4e6c5cf7424", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7500000000 +}, +{ + "ETH_account" : "0xb3132f025031ebbe174c12a6309e4853678cda32", + "name" : "0xb3132f025031ebbe17", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 91 +}, +{ + "ETH_account" : "0xbdee76356f9cb0a9735eef234583fff4eb0e977d", + "name" : "0xbdee76356f9cb0a973", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7301000000 +}, +{ + "ETH_account" : "0xe701d6bb1a514b0d9c85f8b9f8e30adec3d90afd", + "name" : "0xe701d6bb1a514b0d9c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33833000000 +}, +{ + "ETH_account" : "0x70c0e3106c8353172af5f64be50129cf8335bd57", + "name" : "0x70c0e3106c8353172a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000 +}, +{ + "ETH_account" : "0x773b522680761199384d2cba1d2593127235b884", + "name" : "0x773b52268076119938", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 700000 +}, +{ + "ETH_account" : "0x70b8d196b9c4cc757c73ba8b004e35e03de1ca9f", + "name" : "0x70b8d196b9c4cc757c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80696700000 +}, +{ + "ETH_account" : "0x3c80e15223b97012de2c62bb070dd8ed0f1386d4", + "name" : "lucisommers", + "publicKey" : "SPH88PjvMr4ABh5hSFcdsb7PwTEeEBntRQ2qnenNX6DFE4ym6tTGf", + "balance" : 122500000000000 +}, +{ + "ETH_account" : "0x761e6b7227ad98ec3280520cfbff35a81be5047d", + "name" : "garypelletier", + "publicKey" : "SPH61g8BWEA3F1nx8jaFF3mMixih2eTLzHapVEfyrtrStUgYLpp4n", + "balance" : 25000000000000 +}, +{ + "ETH_account" : "0x5a027df0edb8c281d58e78075ac9db018daa812c", + "name" : "0x5a027df0edb8c281d5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6149162069654 +}, +{ + "ETH_account" : "0x92732996d0ce133aa560043cab96a1f252bc0ee0", + "name" : "0x92732996d0ce133aa5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19444013466 +}, +{ + "ETH_account" : "0x8c31a5f49c1f363fde4dfd9e2b6bea13975e3677", + "name" : "0x8c31a5f49c1f363fde", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1674552466 +}, +{ + "ETH_account" : "0x2c9f083cc86360da32234cfd129958817f175a59", + "name" : "gisilarhea", + "publicKey" : "SPH56bkZRKSUksiviTDV488MCeAKWeJkyS8tEWJxTLgoxwhmx7ZHq", + "balance" : 38370598764 +}, +{ + "ETH_account" : "0xcbf8a15e7a0c614aa016230d5d5cc5a5f1642856", + "name" : "ckm", + "publicKey" : "SPH69fu2nGHBHNm7SDwQGXe5jX8YA3n61XEyAeT9CcW9B4y12Ck8U", + "balance" : 23089998893 +}, +{ + "ETH_account" : "0x52dbb4620843b07b76e2058b7b4e3cad9fbec2ea", + "name" : "sofia", + "publicKey" : "SPH6fnjKG1raXDuoEQ9WAZh9B4EuToroxrbuJwYQBfpWKGkcREaiG", + "balance" : 27946865187 +}, +{ + "ETH_account" : "0xfaccf4d8457bd56450023c11bdcba7718873c9f7", + "name" : "0xfaccf4d8457bd56450", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1409690976 +}, +{ + "ETH_account" : "0x079aa05780a3ed87ba222dac21df653e5356c1b3", + "name" : "0x079aa05780a3ed87ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4850000000 +}, +{ + "ETH_account" : "0xcad19b9fd25cfc240772bc3e2c308dc5eb9915ad", + "name" : "0xcad19b9fd25cfc2407", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5684194990 +}, +{ + "ETH_account" : "0xdb5c121df460c928165e2fb326ca96d5ef45254c", + "name" : "0xdb5c121df460c92816", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 45153770 +}, +{ + "ETH_account" : "0xd77b16cd250c19fdc86c36a503f4ab4864405ae0", + "name" : "0xd77b16cd250c19fdc8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 826712320 +}, +{ + "ETH_account" : "0x9320eb35a83b584066847d940eea56462b304603", + "name" : "0x9320eb35a83b584066", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40000000 +}, +{ + "ETH_account" : "0xc0bc87316c28c3d70512c6e4049613adb31e40f1", + "name" : "0xc0bc87316c28c3d705", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13466 +}, +{ + "ETH_account" : "0x4dcb3a07f58e789e479f92c9db41dc3e0e629e3e", + "name" : "idahosk", + "publicKey" : "SPH7x42qKPxwSyKjB9vDoR9fDngbkUzVaR2vFbYDdLhwVw5SS8to8", + "balance" : 793954119323 +}, +{ + "ETH_account" : "0xf8b81cb87155c00129a91af9e5f458d46f6936dd", + "name" : "0xf8b81cb87155c00129", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33 +}, +{ + "ETH_account" : "0x666049249febc6a4df5752253edfcbabb3598c4d", + "name" : "0x666049249febc6a4df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 699 +}, +{ + "ETH_account" : "0xfee2437e6f15a42e25176e86660b9f4d2d872575", + "name" : "0xfee2437e6f15a42e25", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 98 +}, +{ + "ETH_account" : "0xc834395315ff25140d18cfd1fdf146363217bc60", + "name" : "0xc834395315ff25140d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 834251000 +}, +{ + "ETH_account" : "0x03615b8463938b67bb2c3cfd3c5f65b35042869a", + "name" : "tommyxz", + "publicKey" : "SPH4wTWNQNzPXF42rEhYi1BfsZYwabPAcjNocZnZWKvdh8dZDTPaB", + "balance" : 1789721691 +}, +{ + "ETH_account" : "0x0bc3db8b71af759af7a3e0adffdf39de8c78d2e4", + "name" : "0x0bc3db8b71af759af7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 425000000 +}, +{ + "ETH_account" : "0x1280ad41d8d80b16c3868c06ee8e07a4217e2380", + "name" : "teclaboleslav", + "publicKey" : "SPH8H3VNF2L3CbAm6hzczSPD47zm4YK3HsvyqGsqfZhNkiQ75GNMk", + "balance" : 55990932020 +}, +{ + "ETH_account" : "0x172b4883dafa04a26790954d0e9610bf1c2cf611", + "name" : "0x172b4883dafa04a267", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4017113797780 +}, +{ + "ETH_account" : "0xede47fcbb7372ce1282f9ebe5f7f50727579e45f", + "name" : "0xede47fcbb7372ce128", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 43883 +}, +{ + "ETH_account" : "0x3c8e484d2d87a6c95b3dbb8ec81f701a765810ef", + "name" : "0x3c8e484d2d87a6c95b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 81000000 +}, +{ + "ETH_account" : "0xca324431af6d3585013dc26b2a660f8a1e713e39", + "name" : "0xca324431af6d358501", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33 +}, +{ + "ETH_account" : "0x44c611886f63f208f17d9282a9bd74f549883110", + "name" : "ailwen", + "publicKey" : "SPH6w2sHn4YCcpdWMeRmML3CaxxWQJkU28z9XZXmjbD9XS68VwpsA", + "balance" : 3026266140000 +}, +{ + "ETH_account" : "0xe0d24eb59fa449f5d16290803125b8f0eef3e9f3", + "name" : "0xe0d24eb59fa449f5d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 310984 +}, +{ + "ETH_account" : "0xf6c74696bc25293e5fd156e8f5777ee2564cdb93", + "name" : "0xf6c74696bc25293e5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99 +}, +{ + "ETH_account" : "0xd427149e9b5edb86753332622e28ecf6f5066702", + "name" : "0xd427149e9b5edb8675", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3977184049 +}, +{ + "ETH_account" : "0x08f0677cb42efcb31e82f06ec66afe121c1e4702", + "name" : "0x08f0677cb42efcb31e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90703360473 +}, +{ + "ETH_account" : "0x1499493fd2fdb2c6d536569322fe37f5da24a5c9", + "name" : "0x1499493fd2fdb2c6d5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 58 +}, +{ + "ETH_account" : "0xd38e09bd8be587aef164f963ab66499e1d1ff5e3", + "name" : "0xd38e09bd8be587aef1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23428000000 +}, +{ + "ETH_account" : "0x3dc34069e9bde33f8254eeabef59642a3a1be249", + "name" : "0x3dc34069e9bde33f82", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 370000 +}, +{ + "ETH_account" : "0xf6b49109d320c8f7f22b4d44b4666a4f431bb6df", + "name" : "0xf6b49109d320c8f7f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0xbbbf096e48ae4fa2a2a7d185d79fa272396f2a11", + "name" : "0xbbbf096e48ae4fa2a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3120000000 +}, +{ + "ETH_account" : "0x1aa88dca2f93e3bd0dbeb580cc75b50a1d5d229f", + "name" : "0x1aa88dca2f93e3bd0d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000000 +}, +{ + "ETH_account" : "0x8662bfe5ab7f22656c976140f8a706dc46f6a057", + "name" : "0x8662bfe5ab7f22656c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0xb44c16f914a6fc44712c2d53eb1ce1ba65445774", + "name" : "0xb44c16f914a6fc4471", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 83400000000 +}, +{ + "ETH_account" : "0xf05b72e70042d5a6fd151056f4af24ae7f7eada0", + "name" : "0xf05b72e70042d5a6fd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 619000 +}, +{ + "ETH_account" : "0x3b4135bc77b5436b4c955daac227415886bc5799", + "name" : "0x3b4135bc77b5436b4c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 282000 +}, +{ + "ETH_account" : "0xf045c32cbe34e0bd3d3cb32608356a401d61c365", + "name" : "0xf045c32cbe34e0bd3d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000 +}, +{ + "ETH_account" : "0xa41b2ac8ca10e8164fb23ef388688db469820694", + "name" : "0xa41b2ac8ca10e8164f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x44714d5e4cd64069a39aeb2a59252d1ce60c3a3c", + "name" : "0x44714d5e4cd64069a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50229857000 +}, +{ + "ETH_account" : "0xddc18dadbc975db18b8e0794a89e1de51170ccd5", + "name" : "0xddc18dadbc975db18b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2216452000 +}, +{ + "ETH_account" : "0xe19a761e77141742cf38d0802113ecc656bded01", + "name" : "0xe19a761e77141742cf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 76500000 +}, +{ + "ETH_account" : "0xc8bab9b8e4ff783900d75d639ef7f0937aec53a5", + "name" : "0xc8bab9b8e4ff783900", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 894600 +}, +{ + "ETH_account" : "0xd918219fd9be2de265438128988a0716c2be1236", + "name" : "0xd918219fd9be2de265", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 928500 +}, +{ + "ETH_account" : "0x63a4d46fcc8debec6baa2e9c1f8da2e6be1612ed", + "name" : "0x63a4d46fcc8debec6b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000 +}, +{ + "ETH_account" : "0xc31b894d585986075a9f39a8d73ee424eedc6041", + "name" : "0xc31b894d585986075a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9500000 +}, +{ + "ETH_account" : "0x1609481dd1981f382db6060d07fc296d0dac0b7d", + "name" : "0x1609481dd1981f382d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 290500 +}, +{ + "ETH_account" : "0x07e510179448d1e83d4cfd603530366af249d96e", + "name" : "0x07e510179448d1e83d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5038100000 +}, +{ + "ETH_account" : "0x548bc3cb7ca9d6e149dc44e6b4ec6204cac1f2d7", + "name" : "0x548bc3cb7ca9d6e149", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 556200000 +}, +{ + "ETH_account" : "0xc21336ae66d0dd4a76fec4fdfc7bc48e76846ea2", + "name" : "0xc21336ae66d0dd4a76", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000000 +}, +{ + "ETH_account" : "0xfe29bf27e9be6df5d31f39522c661c8a9957cc45", + "name" : "0xfe29bf27e9be6df5d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400 +}, +{ + "ETH_account" : "0x182f7369b2dd69908ad7374f29b8f4b74460c132", + "name" : "0x182f7369b2dd69908a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 120000 +}, +{ + "ETH_account" : "0xb6ce6309989da5f24502da5956ba77ba1ae5f046", + "name" : "0xb6ce6309989da5f245", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000 +}, +{ + "ETH_account" : "0x94730f83ebbd3988b6c611dc4ed5b73dd9dc8bb3", + "name" : "0x94730f83ebbd3988b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 122652 +}, +{ + "ETH_account" : "0x4c9760843846f6b0372bcae11c6d7d400058bcdf", + "name" : "0x4c9760843846f6b037", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2300000 +}, +{ + "ETH_account" : "0x687a67c0bc1901d6104c22e61614b9abec42b61b", + "name" : "0x687a67c0bc1901d610", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90685800000 +}, +{ + "ETH_account" : "0x8cb8175385bba618e1a8476b64a1f394856ad9d9", + "name" : "0x8cb8175385bba618e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4800000 +}, +{ + "ETH_account" : "0xb517821bc4bd7c99a998b066c70e685ccc00958c", + "name" : "0xb517821bc4bd7c99a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 190500000 +}, +{ + "ETH_account" : "0x0c94e7f6464a43a02f0005dc01cb3c96bc0532b1", + "name" : "morena", + "publicKey" : "SPH7d9Y4cHeQjYnimtE3TFC6KvFBeSHsV5J7xjMUzojrMh4Np3m4S", + "balance" : 9900500000 +}, +{ + "ETH_account" : "0x812c770e706a6ea0f8500ba230d6ef766d74f17c", + "name" : "0x812c770e706a6ea0f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5038100000 +}, +{ + "ETH_account" : "0x4992a4705bc9079fc3ce17a6b0ff20a972beaefc", + "name" : "0x4992a4705bc9079fc3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000 +}, +{ + "ETH_account" : "0x1b2903b54fa14442ad3461a254220370a4cb2a33", + "name" : "0x1b2903b54fa14442ad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14000 +}, +{ + "ETH_account" : "0x529dc9f0817deb35986d1afd93b751c68b1dbe9a", + "name" : "0x529dc9f0817deb3598", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5038100000 +}, +{ + "ETH_account" : "0x68f0becdd1958592e320ce7b372718c37cd23399", + "name" : "0x68f0becdd1958592e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000 +}, +{ + "ETH_account" : "0x571e9296f4156bbb0c85e5bc00e9cb396f0fc219", + "name" : "0x571e9296f4156bbb0c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000 +}, +{ + "ETH_account" : "0x540c208386292b27f2a9bce7147f09b27c71dab0", + "name" : "0x540c208386292b27f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 538100000 +}, +{ + "ETH_account" : "0x35d9eaf84610375018076fbd52b57aa3ff996f3f", + "name" : "0x35d9eaf84610375018", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600000 +}, +{ + "ETH_account" : "0x9f7322f2ba52ff6f9f497411b39a1baf60ac84f7", + "name" : "0x9f7322f2ba52ff6f9f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 38100000 +}, +{ + "ETH_account" : "0xf22a00197de8dd42851fd074fec0040cbe0c5558", + "name" : "0xf22a00197de8dd4285", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1 +}, +{ + "ETH_account" : "0x5f148b4b0b396e01fc10b1b7f8b9299929f95042", + "name" : "0x5f148b4b0b396e01fc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 38000000 +}, +{ + "ETH_account" : "0x68c89c1f1b01d22efb8bf937cab4182f6dd9cd8b", + "name" : "0x68c89c1f1b01d22efb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 488000 +}, +{ + "ETH_account" : "0x0ce35434fa54e9475dde065fdb75d42869d02cfd", + "name" : "0x0ce35434fa54e9475d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000 +}, +{ + "ETH_account" : "0x80c67d467aa348e9b7d125e25f0735310850e68e", + "name" : "0x80c67d467aa348e9b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 506596513 +}, +{ + "ETH_account" : "0xc70b894a68013986465ae3370ceb76af38af5638", + "name" : "0xc70b894a6801398646", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7996938897 +}, +{ + "ETH_account" : "0x2ad58bc169f317fbc3d8b2caf503a617454e85cc", + "name" : "0x2ad58bc169f317fbc3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 76200000 +}, +{ + "ETH_account" : "0x93379b816e2048e965d57c5ac278f55c030f6034", + "name" : "0x93379b816e2048e965", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5018000000 +}, +{ + "ETH_account" : "0x690b09fe1ff7541b7ef739608db4daff272529d4", + "name" : "0x690b09fe1ff7541b7e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5576200000 +}, +{ + "ETH_account" : "0x743516c90b4a06ae5407acc1c7454826858fa0eb", + "name" : "0x743516c90b4a06ae54", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6826625500 +}, +{ + "ETH_account" : "0xd27349f762fa5fdbafe37684918b4036ffa2bd32", + "name" : "0xd27349f762fa5fdbaf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2568400000 +}, +{ + "ETH_account" : "0xd51502d6c130de11081a0552864d35a5751a0a67", + "name" : "0xd51502d6c130de1108", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 101000000 +}, +{ + "ETH_account" : "0xabb8cdd71ffca5d9607f8cc56c1aa8b1ed135f37", + "name" : "0xabb8cdd71ffca5d960", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30265000000 +}, +{ + "ETH_account" : "0x12b9cbd7f269ea488ac348c5b56d88af246cfe85", + "name" : "0x12b9cbd7f269ea488a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000300000 +}, +{ + "ETH_account" : "0x80212553c79ab9613f66f4f0abe0a3365b01e3a0", + "name" : "0x80212553c79ab9613f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1476000000 +}, +{ + "ETH_account" : "0x357528abf7fe167aab6c231b4282b8d3f549ffec", + "name" : "0x357528abf7fe167aab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0x005a7c986ad3fdf3fdb2fe4c72f35943c3a2f0ab", + "name" : "0x005a7c986ad3fdf3fd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15500 +}, +{ + "ETH_account" : "0x53f3fb819e3ec5758c7969874bf6b2e79ea9d0ea", + "name" : "0x53f3fb819e3ec5758c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10076200000 +}, +{ + "ETH_account" : "0x78204892097517fcd54eda526c7aac58e1aa20cc", + "name" : "0x78204892097517fcd5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2633350000 +}, +{ + "ETH_account" : "0xd0442d66b69deee46ed236d642eaa00fa533c049", + "name" : "0xd0442d66b69deee46e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99 +}, +{ + "ETH_account" : "0x7bf5ada4c8bad2a42abb009823b925ec41295bf1", + "name" : "0x7bf5ada4c8bad2a42a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28658000000 +}, +{ + "ETH_account" : "0x8aae50113d811edf6653ee28a779cdbd2a783707", + "name" : "0x8aae50113d811edf66", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 42587000000 +}, +{ + "ETH_account" : "0xa1c9a1105f5cdae1a6850c8eb6e151016a1df8c0", + "name" : "0xa1c9a1105f5cdae1a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8515000000 +}, +{ + "ETH_account" : "0x5c452683aba1d601e5eb0fce034120cd93473563", + "name" : "0x5c452683aba1d601e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 76 +}, +{ + "ETH_account" : "0xdc1019c8f392df3b7b76bad3705a1b22968424fb", + "name" : "0xdc1019c8f392df3b7b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 69000000 +}, +{ + "ETH_account" : "0x9d859d895d9f3336f8abd1c2583d4efa15fc5281", + "name" : "0x9d859d895d9f3336f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 56200000 +}, +{ + "ETH_account" : "0xe7d7cd7f64b56633028eb32b62d8ae017054ae33", + "name" : "0xe7d7cd7f64b5663302", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 113710000000 +}, +{ + "ETH_account" : "0x7feb907bde9be3cbfd0a1d676e75ab5bd9c82e37", + "name" : "0x7feb907bde9be3cbfd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000 +}, +{ + "ETH_account" : "0x4abdbe3beb76f416999b5e7271999aa6487e62fb", + "name" : "0x4abdbe3beb76f41699", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800200 +}, +{ + "ETH_account" : "0xdcb7e18b7cc581881500baf4b9c8bdb98873a70a", + "name" : "0xdcb7e18b7cc5818815", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5038200000 +}, +{ + "ETH_account" : "0xac020608f3bdd22d442e646c5f930f35c0542960", + "name" : "0xac020608f3bdd22d44", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5038000000 +}, +{ + "ETH_account" : "0x0e9b99e7bec7d8258f554dcebaab934513394890", + "name" : "0x0e9b99e7bec7d8258f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60000000 +}, +{ + "ETH_account" : "0xfbb3a753f1d9e43f58f79cba7ae303fb4e21afdf", + "name" : "matts", + "publicKey" : "SPH5FBNGZSYkQ7yjEyURqsqqZEhqGD9bnCWjgVHELPznFsVDaXnjY", + "balance" : 17779579 +}, +{ + "ETH_account" : "0xfe0add7ac1e287958c0bb0b8f91d40d34ceb23d3", + "name" : "0xfe0add7ac1e287958c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0x691302c0a6d0b4d9b8ca90d4ee443dc058e9344f", + "name" : "0x691302c0a6d0b4d9b8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 210381 +}, +{ + "ETH_account" : "0x8a55c9bd8c40058ec4448e4cc29d3bc62ba16041", + "name" : "0x8a55c9bd8c40058ec4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2431000000 +}, +{ + "ETH_account" : "0x563aed3199f264c6410b7e6f9b9e7d269865ce61", + "name" : "cryptonit", + "publicKey" : "SPH69RppRp3pA1264PouimgAzx98khDFJKnCuhjNNYF1eNnZ4kYne", + "balance" : 18650000000 +}, +{ + "ETH_account" : "0xe24d33f027be90eb2c355c77d37dac2b4d0a2f65", + "name" : "0xe24d33f027be90eb2c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 216000 +}, +{ + "ETH_account" : "0xe26152e44016ed72923b6821e262ef0070767a47", + "name" : "0xe26152e44016ed7292", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 109500000 +}, +{ + "ETH_account" : "0x54bbf603af39b028da873caa1218a220e07d65e6", + "name" : "0x54bbf603af39b028da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4055000000 +}, +{ + "ETH_account" : "0x8c131e27b56883606cbe762b37be1f96e654264f", + "name" : "0x8c131e27b56883606c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40600 +}, +{ + "ETH_account" : "0xd129b1e65261acc0d064e161ef942a3fc0650d91", + "name" : "0xd129b1e65261acc0d0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11900 +}, +{ + "ETH_account" : "0x962a82b1f6ce57c7ec62b0f17f7caf3638406c40", + "name" : "0x962a82b1f6ce57c7ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000 +}, +{ + "ETH_account" : "0x7c92ef916672f86e60557efcee366a65af905249", + "name" : "0x7c92ef916672f86e60", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23428000000 +}, +{ + "ETH_account" : "0x4db6137656bdc1371b6f4d340ad4df59c933fac2", + "name" : "0x4db6137656bdc1371b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15104300000 +}, +{ + "ETH_account" : "0xb4bca49c0d69a7189547761bebd0852001b93e6f", + "name" : "0xb4bca49c0d69a71895", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 981000 +}, +{ + "ETH_account" : "0x58c1c0291dc693cfb4f47748098a4965c7d84396", + "name" : "0x58c1c0291dc693cfb4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 114300000 +}, +{ + "ETH_account" : "0x3deae74d220a49a3a9b7c2983fec126a43e80d34", + "name" : "sophiatx1", + "publicKey" : "SPH5tEiAcZixiBCKHaH3YQeCDq7VXyvCm8pgYM7vzBYZNa9K5GrTe", + "balance" : 35372580000 +}, +{ + "ETH_account" : "0xbfd3169d2e44de7e9dee09b873fb7ed5c9bb5dba", + "name" : "0xbfd3169d2e44de7e9d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40571500000 +}, +{ + "ETH_account" : "0xc36ab79178785c0418e31d4d245e9f37de9e4b61", + "name" : "0xc36ab79178785c0418", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10076200000 +}, +{ + "ETH_account" : "0xb80900e2ae8eafb0aad237ade6fea5582ec85bdc", + "name" : "0xb80900e2ae8eafb0aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0xaf4d15aefec2e6c723e56337d104bde35dd49f32", + "name" : "0xaf4d15aefec2e6c723", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000 +}, +{ + "ETH_account" : "0x719542cb503c31b0d9886593951adcf872139519", + "name" : "0x719542cb503c31b0d9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000 +}, +{ + "ETH_account" : "0xcc7367a815ca4ac5aa26b916ea0332042ed2e65d", + "name" : "0xcc7367a815ca4ac5aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25190500000 +}, +{ + "ETH_account" : "0x0dee0cefd2e05ae7d8c1f3c65d1920ec3b1beff6", + "name" : "0x0dee0cefd2e05ae7d8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 95700 +}, +{ + "ETH_account" : "0xdac073bf7ab0ff2d1df7383be6ae36b9185af59a", + "name" : "0xdac073bf7ab0ff2d1d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5083250000 +}, +{ + "ETH_account" : "0xf12876577804daa4515c2732bc952b986404c417", + "name" : "0xf12876577804daa451", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 357223000 +}, +{ + "ETH_account" : "0xc86e5b3f4baa7cc4eb62f5e0e1b19e74f2558786", + "name" : "0xc86e5b3f4baa7cc4eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5038100000 +}, +{ + "ETH_account" : "0x721b99d6ffbf3e46786ccc0ffda2b08c76f0fb6e", + "name" : "0x721b99d6ffbf3e4678", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000 +}, +{ + "ETH_account" : "0x0e77a07524ba2dfc5f16824a1d2b431e1ceff782", + "name" : "0x0e77a07524ba2dfc5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 189243000 +}, +{ + "ETH_account" : "0xf65bd790ea9fd496b22fe715b063c8cb624f90ac", + "name" : "0xf65bd790ea9fd496b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 270594000 +}, +{ + "ETH_account" : "0x92e1c72463e0b35e94961a47343b5c3be9558c85", + "name" : "0x92e1c72463e0b35e94", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14304832900 +}, +{ + "ETH_account" : "0xf15b043cc667e4e020af7f8f0966dd88d0599ef8", + "name" : "0xf15b043cc667e4e020", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000000 +}, +{ + "ETH_account" : "0xe1e32091041c114d1d772812d4325b64c95f3d56", + "name" : "0xe1e32091041c114d1d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 36232792226 +}, +{ + "ETH_account" : "0x00310f80232fc6e491bd5fa7545302ab08c9b1dd", + "name" : "0x00310f80232fc6e491", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10076200000 +}, +{ + "ETH_account" : "0xabf929115b7abd885ae6a2ec8030ec8ba49a9437", + "name" : "0xabf929115b7abd885a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 110000000 +}, +{ + "ETH_account" : "0x30cbf66f4563384979cf16275fb4d046cf17ec89", + "name" : "0x30cbf66f4563384979", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 339000 +}, +{ + "ETH_account" : "0x269344d6417cbbfea7ad57fbea8af16b6afa8909", + "name" : "0x269344d6417cbbfea7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80000000 +}, +{ + "ETH_account" : "0x1d7bcbf7e727f94998c21b7e3da1f20839c1ef04", + "name" : "0x1d7bcbf7e727f94998", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39500000000 +}, +{ + "ETH_account" : "0xe4a3409cfc09521c61b0928b83b62edd501a2b66", + "name" : "0xe4a3409cfc09521c61", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 735541196400 +}, +{ + "ETH_account" : "0x56c07a29a18af40b0813668a000e9e2542788a50", + "name" : "0x56c07a29a18af40b08", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 38100000 +}, +{ + "ETH_account" : "0x6f16e7a9b6ca2e405a7fad34fa00c24ffab9335a", + "name" : "0x6f16e7a9b6ca2e405a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 51148690223 +}, +{ + "ETH_account" : "0xca218f461153d9118240c97ae9563461844517f6", + "name" : "0xca218f461153d91182", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 52588150000 +}, +{ + "ETH_account" : "0xc42cad227dcaad85a1f4943b5e1a971c9323ede5", + "name" : "0xc42cad227dcaad85a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000200000 +}, +{ + "ETH_account" : "0x0f0825a27a5e3b8d10cbd59e7ed4096c3af0f1ea", + "name" : "0x0f0825a27a5e3b8d10", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60000 +}, +{ + "ETH_account" : "0x8829883d878282c111319ee0a5e172faa4e7b4c1", + "name" : "0x8829883d878282c111", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15114300000 +}, +{ + "ETH_account" : "0xf36195d23c5c27eeafe738c92a56b5835391d6a2", + "name" : "0xf36195d23c5c27eeaf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22095469848 +}, +{ + "ETH_account" : "0x4eedf79769c3eecb9d0a22c8b9abc8262b0dcb7c", + "name" : "0x4eedf79769c3eecb9d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8418925790 +}, +{ + "ETH_account" : "0x63420f4bf6a216ce6cc200871c26ce2d4e78ac46", + "name" : "0x63420f4bf6a216ce6c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1660064899 +}, +{ + "ETH_account" : "0xf4dc69b03b667d7072dca721301d7328a49a1fab", + "name" : "0xf4dc69b03b667d7072", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4861003370 +}, +{ + "ETH_account" : "0x5ef9e2c1a7e40909756f0aba86fc82798960333b", + "name" : "0x5ef9e2c1a7e4090975", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 107376622880 +}, +{ + "ETH_account" : "0x1b343504856e9a2d0e7d43a5483b2efedf0694af", + "name" : "0x1b343504856e9a2d0e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30 +}, +{ + "ETH_account" : "0x71186aa61dd719d66fa9b47fe21fd0d9ef654510", + "name" : "0x71186aa61dd719d66f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 363172853030 +}, +{ + "ETH_account" : "0x1af6c0f7b2f618a1f194722cf230909c96f145df", + "name" : "hhassko", + "publicKey" : "SPH5uFjeaw97zCrwZPPVwphKC6Mw2nSFNgLJuGJPg3688nZ6vxEUf", + "balance" : 54159652190 +}, +{ + "ETH_account" : "0xb284bd39c9f22b327c04d8e3eafa73c6100aa82c", + "name" : "0xb284bd39c9f22b327c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 63000000000 +}, +{ + "ETH_account" : "0xeaa122a5c704f0e5e4fb0ba4373ea5e242c278d7", + "name" : "0xeaa122a5c704f0e5e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4090566583 +}, +{ + "ETH_account" : "0x4af76730bdf3262f62f1f1c0c26141b6ef6d775e", + "name" : "0x4af76730bdf3262f62", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4582000000 +}, +{ + "ETH_account" : "0x17c1c12ff6195970b03a72cd20319373735c9af9", + "name" : "0x17c1c12ff6195970b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x83e800b78a0361e56966ec80bc69fb989c281835", + "name" : "0x83e800b78a0361e569", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1761000000 +}, +{ + "ETH_account" : "0xe3a26f493f50e78f5df6b2807c06a27f57c6e9a7", + "name" : "0xe3a26f493f50e78f5d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 132386023 +}, +{ + "ETH_account" : "0x5ec6af4759ad9a1011cfd29244165d0e385b748c", + "name" : "0x5ec6af4759ad9a1011", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5721000000 +}, +{ + "ETH_account" : "0x424235b24b5e1daa498a0089ffac3898ee35a55c", + "name" : "0x424235b24b5e1daa49", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 47389000000 +}, +{ + "ETH_account" : "0xbfd83c36d9fd4cf4366965889d059307c75733fd", + "name" : "0xbfd83c36d9fd4cf436", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 36314000000 +}, +{ + "ETH_account" : "0xec598fc0d65737b3f2ee79a1d791b4fb0f08772e", + "name" : "0xec598fc0d65737b3f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40420196236 +}, +{ + "ETH_account" : "0x9af1670018a7d60a96da3b849e37e041a2e1f787", + "name" : "0x9af1670018a7d60a96", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9721000000 +}, +{ + "ETH_account" : "0xafc1ff5fb4cd70f909a38d19f574fc2fc5180fbc", + "name" : "0xafc1ff5fb4cd70f909", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3990000000 +}, +{ + "ETH_account" : "0xcf824aa715dec3d79ab8db33fd63ae0ba06d77dd", + "name" : "0xcf824aa715dec3d79a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3461000000 +}, +{ + "ETH_account" : "0xade142b9a313a6b905b4d4431724363f2c6c2df8", + "name" : "0xade142b9a313a6b905", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1721000000 +}, +{ + "ETH_account" : "0x8cc525118578ab2554fe00c256e2318a12d2c892", + "name" : "0x8cc525118578ab2554", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2988595999 +}, +{ + "ETH_account" : "0x2b91a9450a1226cb1ea912961372f405001381a2", + "name" : "0x2b91a9450a1226cb1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1396087 +}, +{ + "ETH_account" : "0x772691c319bfeeb08f3912b90a04a85f9f1407b0", + "name" : "somelemons", + "publicKey" : "SPH7DmxSHuGEdjxyK8VKWn9pku41qM1E8bKWmWpGu2P9MSTBLsijL", + "balance" : 368565918 +}, +{ + "ETH_account" : "0xaf00793f908648478c43c3ccbcf1604b165c5f39", + "name" : "0xaf00793f908648478c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000 +}, +{ + "ETH_account" : "0xf5bd4d941d504a3188aef9c07091502d5eba547c", + "name" : "0xf5bd4d941d504a3188", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 840000000 +}, +{ + "ETH_account" : "0xca15caa73fd305b087b076171dd20a650f2d9217", + "name" : "0xca15caa73fd305b087", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15114000000 +}, +{ + "ETH_account" : "0x255b5fdafcff23ac9730faeaaa5c047e88e2f479", + "name" : "0x255b5fdafcff23ac97", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5097650000 +}, +{ + "ETH_account" : "0x45b3adeb9fdce000f7617352354e1e76592fd68b", + "name" : "0x45b3adeb9fdce000f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10190000000 +}, +{ + "ETH_account" : "0xfdefb9e82171c75179697dc849129fae11611eae", + "name" : "0xfdefb9e82171c75179", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000000 +}, +{ + "ETH_account" : "0x65bbd789ca121a247da1de3b14e55f4133e83367", + "name" : "0x65bbd789ca121a247d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12000000 +}, +{ + "ETH_account" : "0x962f68f4bd7fa68876fe07233586c5d05882fcec", + "name" : "0x962f68f4bd7fa68876", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 97220067333 +}, +{ + "ETH_account" : "0xefe066f9111f8490ee8f7320f82435387e608728", + "name" : "0xefe066f9111f8490ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2560000000 +}, +{ + "ETH_account" : "0xedbd43a50a24f243cc3fef31f21718edffe3569e", + "name" : "0xedbd43a50a24f243cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 47800000000 +}, +{ + "ETH_account" : "0xd49eaad408dd89bd5e90f8eb994eb17cdcac3f02", + "name" : "0xd49eaad408dd89bd5e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12773000000 +}, +{ + "ETH_account" : "0xae0e8e7e8f43fc6dee23b09ac4243bbf155ad30b", + "name" : "0xae0e8e7e8f43fc6dee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9637000000 +}, +{ + "ETH_account" : "0xc76ccf2a4da08217dfa18b33e5c20c728ec53656", + "name" : "0xc76ccf2a4da08217df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 657382792 +}, +{ + "ETH_account" : "0xb7f674eb6a3f223f3819637f1c24289077c3cfed", + "name" : "0xb7f674eb6a3f223f38", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10076200000 +}, +{ + "ETH_account" : "0x4066c46014ad45045aa52330b2c88f2cc7ef5e17", + "name" : "jackschitt", + "publicKey" : "SPH5TdQXDxeraVEEe8sfQrSpdXCxFkH7D4QnaUXvLaPEQM3xVLQuu", + "balance" : 539620600 +}, +{ + "ETH_account" : "0x7d2ad5a82e1041b79c526acb01a8f372919867ab", + "name" : "0x7d2ad5a82e1041b79c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7000000000 +}, +{ + "ETH_account" : "0x3e06abda099da965190d0502b03729602788c9ba", + "name" : "0x3e06abda099da96519", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 82337470600 +}, +{ + "ETH_account" : "0xee4d7ce0c36275a36a571ac1743e9b0b8cb31c9a", + "name" : "0xee4d7ce0c36275a36a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1861000000 +}, +{ + "ETH_account" : "0x806838212dd28fa0ccfca98d7e83d8b0dbcbe18c", + "name" : "0x806838212dd28fa0cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000 +}, +{ + "ETH_account" : "0xc2202862bb9ab4b7ffe4b1c795584491ba36888f", + "name" : "0xc2202862bb9ab4b7ff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1550125363 +}, +{ + "ETH_account" : "0x18798f08950da702c6ea9dc282183771d58d6e67", + "name" : "0x18798f08950da702c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2361000000 +}, +{ + "ETH_account" : "0xd7304a17c54359b23e66a0641d4bb1922b5b177a", + "name" : "thefizzler", + "publicKey" : "SPH6qmMW9UR6WmQ9qPMYihACezw1dMiGR5dquoe8oM6spptpFYR65", + "balance" : 16530030998 +}, +{ + "ETH_account" : "0xc04df21fd4b1adab67399976046ae63553ebb48d", + "name" : "0xc04df21fd4b1adab67", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000 +}, +{ + "ETH_account" : "0x5fdefceb802b71736a33287bce6d163e89132d2c", + "name" : "0x5fdefceb802b71736a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 31173680798 +}, +{ + "ETH_account" : "0x72ca1d12ff9929838377bafd7586258ddda349eb", + "name" : "0x72ca1d12ff99298383", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 27177027021 +}, +{ + "ETH_account" : "0xf746410e5bd8c221950812d0094493745cb93df0", + "name" : "0xf746410e5bd8c22195", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1300000000 +}, +{ + "ETH_account" : "0x07af33077433d586409a93b7f5b14117de72465e", + "name" : "0x07af33077433d58640", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1190000000 +}, +{ + "ETH_account" : "0x64f2e89554c226a6340b12dc5f3126318783ba05", + "name" : "0x64f2e89554c226a634", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23832311772 +}, +{ + "ETH_account" : "0x0952bcb4b35cbcfcd08fdc75b581abeb84199ead", + "name" : "0x0952bcb4b35cbcfcd0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1592761727 +}, +{ + "ETH_account" : "0x535f6b9910db6a0bc488e1289f38280403ed2e46", + "name" : "levyashin", + "publicKey" : "SPH6qKFmuJKrKRCrFLJR5Kvi6E7wMbiN81pgLgRBRX8pkmv8nmj59", + "balance" : 28307486435 +}, +{ + "ETH_account" : "0xde579306607c071254d88e4646ee25e0483d9c00", + "name" : "0xde579306607c071254", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 966000000 +}, +{ + "ETH_account" : "0xbd185a16be20ba3c7495f732d5af30d8f1b6e74b", + "name" : "0xbd185a16be20ba3c74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 341000000 +}, +{ + "ETH_account" : "0x31c533127068634d1ab618917a501efb8fa18e7d", + "name" : "0x31c533127068634d1a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 158000000 +}, +{ + "ETH_account" : "0x0aa0d3c6e2d24c4fb37447c89612bbca6a687bd0", + "name" : "0x0aa0d3c6e2d24c4fb3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0x298fba3a8ad01afe85d65e38036f696483a018cb", + "name" : "0x298fba3a8ad01afe85", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 942000000 +}, +{ + "ETH_account" : "0xecf3928a6d5a31258613d761d9f32a4c272e4628", + "name" : "0xecf3928a6d5a312586", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 966000000 +}, +{ + "ETH_account" : "0x1cd26ed114e0201df444ce7d74020e7b0ddd4edc", + "name" : "0x1cd26ed114e0201df4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0x25094891e5b99c803820f8d39df616f9e8ebaaf7", + "name" : "frank", + "publicKey" : "SPH7RqUF6sJfkrmnPyPphTV3aQjhTPtYVSY1au3NZA6BNpXJ5JwsW", + "balance" : 404000000 +}, +{ + "ETH_account" : "0x2e6a4dc0031b5edb6e65ee4aa885d59e95049c91", + "name" : "0x2e6a4dc0031b5edb6e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 38888026933 +}, +{ + "ETH_account" : "0x2e6f75cbbe2bf7f9713301e85ce5a1ff43ed52b0", + "name" : "0x2e6f75cbbe2bf7f971", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 853000000 +}, +{ + "ETH_account" : "0x0fde94dcef2c3badd597223109f20db44cc82118", + "name" : "0x0fde94dcef2c3badd5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 207000000 +}, +{ + "ETH_account" : "0x6d17ffb1b3a369cf0dc9203c90e019830a258a76", + "name" : "0x6d17ffb1b3a369cf0d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 942000000 +}, +{ + "ETH_account" : "0xd83ad53c3930fc964efb12367c46815068d38118", + "name" : "0xd83ad53c3930fc964e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 318000000 +}, +{ + "ETH_account" : "0x9481898b9bb13d523ba8296d90dece7a955f92d1", + "name" : "sophiassister", + "publicKey" : "SPH7qjp3vzfjsihiMzHuQiXVVWaBV73VKQ66icUaK5ekAPhiDDTkf", + "balance" : 388000000 +}, +{ + "ETH_account" : "0x6aa2f76271304a0f590fa2e0396c0c6b81729149", + "name" : "0x6aa2f76271304a0f59", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 549000000 +}, +{ + "ETH_account" : "0x71301f6dcd1165cdb639acb4ce329cf464977fd5", + "name" : "0x71301f6dcd1165cdb6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 917000000 +}, +{ + "ETH_account" : "0x440c7efe7fdd489c39b12ad0fb8a8263c062ca72", + "name" : "0x440c7efe7fdd489c39", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 506000000 +}, +{ + "ETH_account" : "0xc4997a42bb6965391aef468f7975fe2424ac4762", + "name" : "pynetx", + "publicKey" : "SPH6EH7xZxM3yt8anepqDw6CdVjjbQVh5Y2f4s3mTAcmrs3hAVmsC", + "balance" : 605000000 +}, +{ + "ETH_account" : "0x7529e91ed76bdedff47ac323c85b09ef867d0371", + "name" : "turnstile", + "publicKey" : "SPH651xxw1mX61gbefDJ7Z4xkdtob6pXsPMTRyoCrfjkp2YUbWTaM", + "balance" : 808000000 +}, +{ + "ETH_account" : "0x75ada2f2490c5583ac3d4384724e18df46b192df", + "name" : "seanb", + "publicKey" : "SPH7SWby9D9pJnvC4EM4jUfjFrtT22JX8tFQBFhZrNWD4zCb8JTkY", + "balance" : 779000000 +}, +{ + "ETH_account" : "0xf7f0d95da8a07ecbfbfc67661c3ee1a38fc18293", + "name" : "0xf7f0d95da8a07ecbfb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 472000000 +}, +{ + "ETH_account" : "0x794fdd14ca79ac06123f8daac7cb13154819bf0e", + "name" : "0x794fdd14ca79ac0612", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 135000000 +}, +{ + "ETH_account" : "0x185e04bf6f3e6df52355012fd17492986e83cbc8", + "name" : "0x185e04bf6f3e6df523", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x1e09a8dd32b029f14d286be864f0d358cb8c3977", + "name" : "0x1e09a8dd32b029f14d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 247000000 +}, +{ + "ETH_account" : "0x488fa751cf31050b4db0bcfae25447afa7ee98b3", + "name" : "0x488fa751cf31050b4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 237000000 +}, +{ + "ETH_account" : "0x885f23994876dc0fbcb4c9855b1ef086d3baf07d", + "name" : "huehuehue", + "publicKey" : "SPH5bXPEWhNmcksXwQoaHcsfPw2C195etCejKi2EA4NxPCf7NPLCb", + "balance" : 917000000 +}, +{ + "ETH_account" : "0x2038cecc4a8c9b7b064a6a27f4369afcad191e51", + "name" : "0x2038cecc4a8c9b7b06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23000000 +}, +{ + "ETH_account" : "0x795bd67f690f7a09aa6354416e2520af4235dc3e", + "name" : "0x795bd67f690f7a09aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 59323783683 +}, +{ + "ETH_account" : "0xb44172eb7ef330b3bebda2d9167b3a23e84b271f", + "name" : "0xb44172eb7ef330b3be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 129999413173 +}, +{ + "ETH_account" : "0xad468ec723599917a4945624bd6216853dcae8cf", + "name" : "0xad468ec723599917a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28509529976 +}, +{ + "ETH_account" : "0x307951ac7bee494e71d88b37a2dc393830ede8bf", + "name" : "0x307951ac7bee494e71", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10833558690 +}, +{ + "ETH_account" : "0x4910f1047251a747ddb5d47370ac1751a7075d1d", + "name" : "0x4910f1047251a747dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 164921000000 +}, +{ + "ETH_account" : "0x1a989ae02dd9a3910123b433491bbe701b875e8e", + "name" : "0x1a989ae02dd9a39101", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 133775611000 +}, +{ + "ETH_account" : "0xd256f0c2111c0f11f98e6477a912dd7de63c3827", + "name" : "0xd256f0c2111c0f11f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000000000 +}, +{ + "ETH_account" : "0xd0e81b52f633bd6ea3d85ba45cf014d5e115f0e8", + "name" : "0xd0e81b52f633bd6ea3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 738480 +}, +{ + "ETH_account" : "0x3760a24b81d6db6e44bd2eb36b532e664a660a3d", + "name" : "ayrtonsphtx", + "publicKey" : "SPH7egcqjkzPcSyqhC2ficvus9MJcfjzRZU4mDJHzpheH4PJ3oshu", + "balance" : 15776891585 +}, +{ + "ETH_account" : "0x69dbff4aac90d897ad02e080fce06baea78fcd0a", + "name" : "0x69dbff4aac90d897ad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100175783000 +}, +{ + "ETH_account" : "0x224120d13c1d953d17187d76bec30b9a68c90f1a", + "name" : "0x224120d13c1d953d17", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7600000 +}, +{ + "ETH_account" : "0xf69b630c48f109d108a6305d1c350e59cd853138", + "name" : "0xf69b630c48f109d108", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 34027023567 +}, +{ + "ETH_account" : "0xf7a1874b132b44b4743894b7f1b1a1790b0d20de", + "name" : "0xf7a1874b132b44b474", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x5913357900fd0208cc8ae5b6c3ae3166bb01af7e", + "name" : "0x5913357900fd0208cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5529 +}, +{ + "ETH_account" : "0x742d2eed80286ae91264a92479e6818beb686dc7", + "name" : "0x742d2eed80286ae912", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 841587831 +}, +{ + "ETH_account" : "0x5ab6993f0428275c8591a4b8338920c01e61080d", + "name" : "colortones", + "publicKey" : "SPH5Ri6958p4ZwwwSiYgbvxQAQUMtfokpdDYjTswBaHb8xKRRcf4b", + "balance" : 43852410809 +}, +{ + "ETH_account" : "0x656c6c3131bbccffe1f89863ac7e078ff893a545", + "name" : "0x656c6c3131bbccffe1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5020000000 +}, +{ + "ETH_account" : "0xc9a195e839148672c046e6f59b40cb611abe9473", + "name" : "lanzarote", + "publicKey" : "SPH76jCofzcTk6AEHsvticiNm9wGHoebi7PTuZdpRicvQcQfgRcU1", + "balance" : 873000000 +}, +{ + "ETH_account" : "0x47dd6bfd6fdf48e3b5206b42e73a159fea4cf6ca", + "name" : "0x47dd6bfd6fdf48e3b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4323595875 +}, +{ + "ETH_account" : "0xac97176a9a94e1bc68e211402bfa6f8ea707b588", + "name" : "0xac97176a9a94e1bc68", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2923000000 +}, +{ + "ETH_account" : "0x616de5844cba33d4b7c7fd2eb6009923cfe324ac", + "name" : "0x616de5844cba33d4b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3184000000 +}, +{ + "ETH_account" : "0x1979d05d68ac05cd6104192b1ed95b7fdd91cb1b", + "name" : "0x1979d05d68ac05cd61", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000 +}, +{ + "ETH_account" : "0x72b65f884452f5ed444382a372674b645f5bec0e", + "name" : "0x72b65f884452f5ed44", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3024 +}, +{ + "ETH_account" : "0xe2d48c34d287189daba240cab3864c4f3c8e06d7", + "name" : "0xe2d48c34d287189dab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 157 +}, +{ + "ETH_account" : "0x58b6384afe02e3f84896450c321edbb71aad6456", + "name" : "0x58b6384afe02e3f848", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 480000 +}, +{ + "ETH_account" : "0x2787fc0574cc0dc26d73273dc1053e42e20ce73e", + "name" : "0x2787fc0574cc0dc26d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8300324498 +}, +{ + "ETH_account" : "0x2c048836e5c05b09c368dacc5feca76ccd2a1481", + "name" : "0x2c048836e5c05b09c3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11653533973 +}, +{ + "ETH_account" : "0xce5cd2f6a1a11c99fd9cd46482a53c57781081fc", + "name" : "maxb2903", + "publicKey" : "SPH7J5izWNBigXx2SfiST7mAFJbDzmEjyoXiUFi7z5B3yqyiDPbEk", + "balance" : 658089050590 +}, +{ + "ETH_account" : "0x8a5df1dffc516fdb7212320f94343542240c403b", + "name" : "0x8a5df1dffc516fdb72", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1677000000 +}, +{ + "ETH_account" : "0xcd5126a560e8c9d40a719e2a4dc1e1a97b1a2bcc", + "name" : "0xcd5126a560e8c9d40a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15381000000 +}, +{ + "ETH_account" : "0x15cf81d52ed94f2b5658bbb6c911fca5bac7aefc", + "name" : "0x15cf81d52ed94f2b56", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 147291000000 +}, +{ + "ETH_account" : "0xe4f7dac76dfef5a50f7301c08a20e09aeff03d2a", + "name" : "0xe4f7dac76dfef5a50f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1592000000 +}, +{ + "ETH_account" : "0x07c87828ef36c23dc60fe3d28fc22ac57d109990", + "name" : "0x07c87828ef36c23dc6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1592000000 +}, +{ + "ETH_account" : "0xcc5f333cfab8501623f8a8ca2d535ffdbdf273ab", + "name" : "0xcc5f333cfab8501623", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 38000000 +}, +{ + "ETH_account" : "0xb6e6d045e2cf6131ff6e17c735a777c80146a003", + "name" : "0xb6e6d045e2cf6131ff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000000 +}, +{ + "ETH_account" : "0x761f0c8f8bf79a6230312c3b83e8173645a5ef51", + "name" : "0x761f0c8f8bf79a6230", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 523000000 +}, +{ + "ETH_account" : "0xc8d3524844f31bd8e5f91236fe08c1909b03a390", + "name" : "0xc8d3524844f31bd8e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 624325858765 +}, +{ + "ETH_account" : "0xdba9e4a4ddb38fa6fb05ed4584fbf9587eacec7d", + "name" : "0xdba9e4a4ddb38fa6fb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 650000 +}, +{ + "ETH_account" : "0x184f6a3655b7a4e7cea9568fff393b7e2d5c7a09", + "name" : "0x184f6a3655b7a4e7ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 276344000 +}, +{ + "ETH_account" : "0x453fc2ffb0084b20f023e56b661b4ff4b266f84e", + "name" : "0x453fc2ffb0084b20f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 115369076802 +}, +{ + "ETH_account" : "0x67c57c24e34d77c6a37a08b3d478cc731c027229", + "name" : "0x67c57c24e34d77c6a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 484 +}, +{ + "ETH_account" : "0x331c3be58d38923b18d6a94af987981d79ce5cb5", + "name" : "0x331c3be58d38923b18", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0x575cfc8b184005283ff4a0ce23ff6572596e6d01", + "name" : "reumailya", + "publicKey" : "SPH5JoLXpUbLTSR8NuH7XTdycknJwhHyBYYhomc5gejV6kDVcivWP", + "balance" : 1772283698 +}, +{ + "ETH_account" : "0xe535e5bed7fde75d0c351f87c54c526e28ad24a0", + "name" : "0xe535e5bed7fde75d0c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2220969590 +}, +{ + "ETH_account" : "0x304c2fbaefa1b713d8e0ecb93f5ee5ec1966fc12", + "name" : "0x304c2fbaefa1b713d8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2300000 +}, +{ + "ETH_account" : "0xdc09d500230169cf53c1a5b9ddb6f412be95f64c", + "name" : "0xdc09d500230169cf53", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1124307195 +}, +{ + "ETH_account" : "0xc1da781f9452ca9ef9a2ad53f63f0f1b2607b3db", + "name" : "0xc1da781f9452ca9ef9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15190000000 +}, +{ + "ETH_account" : "0x3d1dfb69de395ee6d40b629fa7e525e7d586db90", + "name" : "0x3d1dfb69de395ee6d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4190360000 +}, +{ + "ETH_account" : "0x48ff97d9d738c199c916b920fbc1a9cb801c097d", + "name" : "0x48ff97d9d738c199c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0x9b42384cc5b66693cf85b2ed82cb713af22a166a", + "name" : "0x9b42384cc5b66693cf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2762588000 +}, +{ + "ETH_account" : "0xaf86f8705e1d183a778577fd131529d55f860db6", + "name" : "0xaf86f8705e1d183a77", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8188000000 +}, +{ + "ETH_account" : "0x5d0a49f0869c1b31263aca2056963d824b105472", + "name" : "0x5d0a49f0869c1b3126", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10096916546 +}, +{ + "ETH_account" : "0x60d74978b0bc2e374a53d4f9d15759a7bf7ef66c", + "name" : "0x60d74978b0bc2e374a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 88772610 +}, +{ + "ETH_account" : "0x8dfac94eefffaccd10b2b89ebeeaa64979c5c57d", + "name" : "0x8dfac94eefffaccd10", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 331 +}, +{ + "ETH_account" : "0x89e58f935e54d44764eebae1e262835c73fdb9f0", + "name" : "0x89e58f935e54d44764", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 32919213873 +}, +{ + "ETH_account" : "0x0bfbffb96750a32424dcb22e8b3835bd6a211dc7", + "name" : "0x0bfbffb96750a32424", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 337000 +}, +{ + "ETH_account" : "0x9abc8d0ed680689ff34b24274680838f7f5961b8", + "name" : "0x9abc8d0ed680689ff3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15008949918 +}, +{ + "ETH_account" : "0x3ce93805c837920212cbcdc119ee2bca4f86e1f6", + "name" : "0x3ce93805c837920212", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2495425140 +}, +{ + "ETH_account" : "0xbbda5f2d83dc72dad51097f1b5938fe51878b379", + "name" : "microyard", + "publicKey" : "SPH5zvYJkT7AnsUeUhSksP34S5Sxbn46mJWKwejf4vk5euwT2DFts", + "balance" : 2020000000 +}, +{ + "ETH_account" : "0x35555a2aa6be5b1a391bd28f59290826e9fbc1e3", + "name" : "0x35555a2aa6be5b1a39", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x57866bcae317b90c91f8b69c830d355e9e5951ee", + "name" : "nocoiner", + "publicKey" : "SPH8WM2VhDKRQTeJQZKHhd7j2gAkPRco5wkrYJ4vHUnZdnGu5GJrY", + "balance" : 6954858270 +}, +{ + "ETH_account" : "0x0fa39b3146a63549cfba97dc466626fd173fc691", + "name" : "0x0fa39b3146a63549cf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2600078637 +}, +{ + "ETH_account" : "0x688232820cdbd9d3d009e8c4cbd0d8fa58588ee4", + "name" : "kasa", + "publicKey" : "SPH5xnUfBhCKKw7xPrw2BYeft4N5RgpE4g7YS6TVWpzhqN5U8xVwE", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0xe10879308e6c6284a60ff60ab09720c3cf5f5a1b", + "name" : "0xe10879308e6c6284a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4707000000 +}, +{ + "ETH_account" : "0xa98c7ec4e9145ad195c0398c4343a2972808741d", + "name" : "0xa98c7ec4e9145ad195", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 999728 +}, +{ + "ETH_account" : "0x882140fb9f927427f0a6f996a689046d2c7fc284", + "name" : "0x882140fb9f927427f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000000 +}, +{ + "ETH_account" : "0x2f4efbc7e38088a54f2e5360aa3d27ee1dc67f84", + "name" : "0x2f4efbc7e38088a54f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10445668000 +}, +{ + "ETH_account" : "0xb27ded47ea0d0877915f2ad81e31fdb2098283b2", + "name" : "0xb27ded47ea0d087791", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4189981086 +}, +{ + "ETH_account" : "0x5191675b92afb454298971d34e4eff63cab531f1", + "name" : "0x5191675b92afb45429", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3220000000 +}, +{ + "ETH_account" : "0x8c1d700bfb2a3e604c3c6c42db52e77cdf71e2c0", + "name" : "khazouk", + "publicKey" : "SPH7WArVtqRddtyNmueezBbbQ7ufXxWQr7pAZsvVe6TxQ4rnWRGj1", + "balance" : 13095828100 +}, +{ + "ETH_account" : "0xa376c383024e86e48aa2087afc9c7aa0cd285945", + "name" : "jasepi", + "publicKey" : "SPH6Kb5xfXJd9xwXLkYqMzfbMAKoDDciEG2q6UH7j4t1D56sHRwxv", + "balance" : 5983708000 +}, +{ + "ETH_account" : "0x93c6a864c150ce1b0c10bae4361fc9d1f2cf1315", + "name" : "0x93c6a864c150ce1b0c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 639995000 +}, +{ + "ETH_account" : "0x1f42bd1ffa4c8dcab7777710cb9b12fdace3963c", + "name" : "0x1f42bd1ffa4c8dcab7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2630900000 +}, +{ + "ETH_account" : "0x36eba6492de1fb5b27db1ea8d5d124bec37843da", + "name" : "0x36eba6492de1fb5b27", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6440317000 +}, +{ + "ETH_account" : "0x88855c588d751a75894c7ad7ac48e1b2b94c1529", + "name" : "0x88855c588d751a7589", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4150000000 +}, +{ + "ETH_account" : "0xd5fcd4aeee58782781977eff36c86d8f69346b87", + "name" : "0xd5fcd4aeee58782781", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2084351510 +}, +{ + "ETH_account" : "0x6ed54bc56b72f1b7806ee6d46a50f55f636cfbd7", + "name" : "0x6ed54bc56b72f1b780", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 427000000 +}, +{ + "ETH_account" : "0xe00c87258804b45936b1f29a1cb240c0482a9acb", + "name" : "jkim", + "publicKey" : "SPH5UcmFHCb9QiR24LJkDvLBxRWAy121P2aCihhJx1UmTuu4RXnJk", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xc19d97336c8e7fdc1930c5e36e37c43e930cd403", + "name" : "0xc19d97336c8e7fdc19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10197365822 +}, +{ + "ETH_account" : "0x3e9d5c39833fbab2bc3183d01e35707882ebe306", + "name" : "junyagi", + "publicKey" : "SPH51SEN4D8hfqQHLukW2yNNGN2wdDL4sk7C3rTECRmvuQ1At9zxi", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xc4d2836a21f036f3ca0d563c6d3f559be09540bf", + "name" : "0xc4d2836a21f036f3ca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 370790 +}, +{ + "ETH_account" : "0xf45d70f20c3ca657aa0871e856a78c5ef88c9ffe", + "name" : "0xf45d70f20c3ca657aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 566585 +}, +{ + "ETH_account" : "0x9adde78a48f54720e321d581a79f433a5b62bba5", + "name" : "0x9adde78a48f54720e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 999999962 +}, +{ + "ETH_account" : "0xd588433083a771c435c3c2ea7159adb53c64f4ca", + "name" : "0xd588433083a771c435", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0xc3556557cd4edb39a2bb23311909c3d69c792790", + "name" : "0xc3556557cd4edb39a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 37000000 +}, +{ + "ETH_account" : "0xf5ee9cd2cdfbf45cbdb0c75eb253e2585787c2a2", + "name" : "0xf5ee9cd2cdfbf45cbd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2060000000 +}, +{ + "ETH_account" : "0x4b52e3df846da006cee250ee44fad744f278f37f", + "name" : "0x4b52e3df846da006ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4800118872 +}, +{ + "ETH_account" : "0x30435e7d70122e2c2974e8f335030fc3fe45ba99", + "name" : "0x30435e7d70122e2c29", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3043000000 +}, +{ + "ETH_account" : "0xe0994727e1f026b4b4faeb3691f6c16f47e85e8e", + "name" : "0xe0994727e1f026b4b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 75000028 +}, +{ + "ETH_account" : "0xa3e36dee9f3cc74b5d6f9d10fba0072dee47a074", + "name" : "0xa3e36dee9f3cc74b5d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1844167616 +}, +{ + "ETH_account" : "0x614e153b5c5a1356a6fac2606a8fb438692d77fc", + "name" : "0x614e153b5c5a1356a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 196000000 +}, +{ + "ETH_account" : "0x6f31bbeb19ecfe8c6f26f85dea1c65844dca2ca3", + "name" : "sodakhul", + "publicKey" : "SPH8bYYJNRpyJ9snFz3NKJ3cvokiAA8aWbnjyDCpnttPaMkesVggU", + "balance" : 3740088580 +}, +{ + "ETH_account" : "0xa1a7a343cfdbea2fe660a057edf647f6a3a69ba1", + "name" : "0xa1a7a343cfdbea2fe6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 32298599834 +}, +{ + "ETH_account" : "0xc326e9f5476f71c687951493b4cc27314fddda9a", + "name" : "0xc326e9f5476f71c687", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9000000 +}, +{ + "ETH_account" : "0x9ef14629381d7692578b18376fd581a9dba2ca8a", + "name" : "0x9ef14629381d769257", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 330000000 +}, +{ + "ETH_account" : "0xfb3f9639cf32579463eb3bc06db466639fe7cf8c", + "name" : "0xfb3f9639cf32579463", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1338250832 +}, +{ + "ETH_account" : "0x800b77af73c0bb38184b2506a0c28743d1ac05ec", + "name" : "0x800b77af73c0bb3818", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 390051725 +}, +{ + "ETH_account" : "0xa6797ca5c5c44818168cab11ba7fd60da4c6e7a2", + "name" : "0xa6797ca5c5c4481816", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0xffe6d5b8fd481601f54b981e87a15edfb81e4cdc", + "name" : "zani", + "publicKey" : "SPH5PADvjJGyyTqfbNWJ56dqR37JHze7h5teeYiHqXRfaHWmUAdd2", + "balance" : 4609451706 +}, +{ + "ETH_account" : "0xf0d805fe8e5005c8546e6f317db1f2282b599f1c", + "name" : "0xf0d805fe8e5005c854", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4100000000 +}, +{ + "ETH_account" : "0xceceaa548a1d18e3360379b4c1f94e0202299029", + "name" : "0xceceaa548a1d18e336", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 434000 +}, +{ + "ETH_account" : "0x62809026f6a3870336db9e03210cd3bcdfdc6772", + "name" : "beast453sphtx", + "publicKey" : "SPH7m9XfxNwsfZNUqrtCWxm6BY91UR8ARpGLu3nrBmxHmDifX2uDm", + "balance" : 478000000 +}, +{ + "ETH_account" : "0x1ce251fb7ef02e2152908c1c69b4711b735fd188", + "name" : "0x1ce251fb7ef02e2152", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6 +}, +{ + "ETH_account" : "0xacc2fc552147379167722f5d33271c2cdf8ac352", + "name" : "0xacc2fc552147379167", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 335000000 +}, +{ + "ETH_account" : "0xdf90d6940ce5811fbf53a06c142961584904af7f", + "name" : "0xdf90d6940ce5811fbf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53502 +}, +{ + "ETH_account" : "0x57db24ceec940249dc19d4f3dfb186f910b99cb5", + "name" : "0x57db24ceec940249dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 29478939000 +}, +{ + "ETH_account" : "0x70f253973c753b47a9c14ef33b31d21f3ff837be", + "name" : "0x70f253973c753b47a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2412000000 +}, +{ + "ETH_account" : "0x56d7f7afc8f1ca890a8b0a72043108c2240e6fee", + "name" : "0x56d7f7afc8f1ca890a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 700000000 +}, +{ + "ETH_account" : "0x6bf15fe15b94cc9e324d0e61daaeb9b25f860f62", + "name" : "0x6bf15fe15b94cc9e32", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15813610871 +}, +{ + "ETH_account" : "0x02e7847d410e59e3fddac715be2fa17b6c21fa58", + "name" : "0x02e7847d410e59e3fd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0xe1b31ecf372c5f96921478d7067da38034c099ef", + "name" : "0xe1b31ecf372c5f9692", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x0e23bac9e32bdb97eebb8aa69779cfbb9e6936a5", + "name" : "0x0e23bac9e32bdb97ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 78833971897 +}, +{ + "ETH_account" : "0x5c56241d00aaf98cd9c3f64856305bcc2d261151", + "name" : "0x5c56241d00aaf98cd9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7707 +}, +{ + "ETH_account" : "0x9a3ffd77aaf9c3cedad07c735a32ccea2ca8e63d", + "name" : "0x9a3ffd77aaf9c3ceda", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39218670000 +}, +{ + "ETH_account" : "0x5e9bf9ac68471622ed41f99293ffb907bbbab935", + "name" : "0x5e9bf9ac68471622ed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 466 +}, +{ + "ETH_account" : "0x5b6d9d663b0c8bcf1835b8110ef3ebf476b4a382", + "name" : "0x5b6d9d663b0c8bcf18", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 26077581865 +}, +{ + "ETH_account" : "0xe2708a64b111004356c3468c10cd7eecdb417b6b", + "name" : "0xe2708a64b111004356", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000000 +}, +{ + "ETH_account" : "0x75c7c460097efae6993a18cd2a0b9a2f447e2985", + "name" : "renuplex", + "publicKey" : "SPH6xwKH74vzs9uAsHfP53kjkCLhK9tqG82K8vbk7oPAWQugihTSu", + "balance" : 6000000000 +}, +{ + "ETH_account" : "0x4a4e870951fdf73cc48d3aab61130967e41b927f", + "name" : "0x4a4e870951fdf73cc4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 160000000 +}, +{ + "ETH_account" : "0xb620022db191d3520a818b21da0cb2ca0e0e2d32", + "name" : "0xb620022db191d3520a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x6701bce315bb3a740e3e5bdc383af4e492187e44", + "name" : "0x6701bce315bb3a740e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 132609000 +}, +{ + "ETH_account" : "0x553e96041ddd401635ea21ac6aa06ad134cdf4a3", + "name" : "0x553e96041ddd401635", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 670000000 +}, +{ + "ETH_account" : "0xadd85e7c60abf04b8ee3893c8f3c551881113350", + "name" : "0xadd85e7c60abf04b8e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 183 +}, +{ + "ETH_account" : "0xedd2f4c34e65fa7c0405a9b6f389169ffdb1b464", + "name" : "0xedd2f4c34e65fa7c04", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1990939195 +}, +{ + "ETH_account" : "0x11cc50e0a5509f1a8b55655f633fc3ee9c9a715b", + "name" : "0x11cc50e0a5509f1a8b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100999999 +}, +{ + "ETH_account" : "0x257bc0e3fa17809d7ba310ae6b11de9c789905f9", + "name" : "0x257bc0e3fa17809d7b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 804071000 +}, +{ + "ETH_account" : "0x406ee2fea103fb1ed05c6373ab43f9f84afe4c87", + "name" : "0x406ee2fea103fb1ed0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 134000000 +}, +{ + "ETH_account" : "0xa5a041823bc35f46dc1e66198559c1174780159e", + "name" : "wietskevdw", + "publicKey" : "SPH8Jycjf8xBSvadoht746maEE3nMs1f8QTQ1wJcmaqsmEhEpXDeW", + "balance" : 11046869942 +}, +{ + "ETH_account" : "0x9f3721a197df455120aa8ae087282dd24c6da0e1", + "name" : "0x9f3721a197df455120", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 350000000 +}, +{ + "ETH_account" : "0x3353ca67561e53e8ee509b9350280122efc8dba9", + "name" : "0x3353ca67561e53e8ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1027587606 +}, +{ + "ETH_account" : "0x61cdcb509c9d07a436bbd86047f131f744302f16", + "name" : "tobias", + "publicKey" : "SPH7tVfa83DXP5nLzxqHSnwF7beVuBtxATfbAaZq77vwZBbCQYRzn", + "balance" : 5146338801 +}, +{ + "ETH_account" : "0x15e72c4f04c66630ce5202e0fb85b9a1e20ee728", + "name" : "0x15e72c4f04c66630ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 302527 +}, +{ + "ETH_account" : "0xeec52a7db6b7da9e0394019872b63d2df86db31e", + "name" : "0xeec52a7db6b7da9e03", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 170000000 +}, +{ + "ETH_account" : "0x4ae86d5420315b54cfce519e1df355a5c5a8ed16", + "name" : "0x4ae86d5420315b54cf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5550000000 +}, +{ + "ETH_account" : "0xd55ae3f2def0f44bd6f1975ea904e6aa89580aa8", + "name" : "0xd55ae3f2def0f44bd6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1575779716 +}, +{ + "ETH_account" : "0x47a7b093f22dacbdebc39a42f8caf4dc6ad071a4", + "name" : "josip", + "publicKey" : "SPH5pygoj6XXKQVYG6N9hMzL7e1WxiwzPkkENqaQDNoVE8i5sad3B", + "balance" : 310151596 +}, +{ + "ETH_account" : "0x82e392fdd15ad51595c91db8ffa3f70f2ec44d7d", + "name" : "neoanderson", + "publicKey" : "SPH4uRfW1EP3rAPN3QuF8GtjiMq9j6KerVYaGDWx38yxj41SawjuD", + "balance" : 800195000 +}, +{ + "ETH_account" : "0x523d2e112e983ed1a0009317651385e83d4fca8f", + "name" : "0x523d2e112e983ed1a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9707036387 +}, +{ + "ETH_account" : "0x8862d35221da83c3f97c8f58f825fa603074d289", + "name" : "0x8862d35221da83c3f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 160000000 +}, +{ + "ETH_account" : "0xf46793032804ec2978d761b7986b90b30166a659", + "name" : "0xf46793032804ec2978", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50920000000 +}, +{ + "ETH_account" : "0x7ccad5cd2d653ba8dc19d5692ea19357a52bbf99", + "name" : "0x7ccad5cd2d653ba8dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3641118905 +}, +{ + "ETH_account" : "0x4340603e964ff773479b35e2745bb85b78aaf2f9", + "name" : "0x4340603e964ff77347", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1249999580 +}, +{ + "ETH_account" : "0x3e512407bb50223e7436825c526a766cf2587de6", + "name" : "0x3e512407bb50223e74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1449483455 +}, +{ + "ETH_account" : "0x9dc0a2225bd353caec1dc888a173f2b82e898dc6", + "name" : "0x9dc0a2225bd353caec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3948338000 +}, +{ + "ETH_account" : "0xf0ba4b6ccb316148e15d6b7fa7099afcb3da30df", + "name" : "0xf0ba4b6ccb316148e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4190552000 +}, +{ + "ETH_account" : "0xdfefb9e5e3cd5c09a177a26563963847030c018d", + "name" : "cryptodeek", + "publicKey" : "SPH5HxaybmPC2A8KTTCd7FdR428ikncGy9b1toZAmDvk1pRMaWUzX", + "balance" : 1606716371 +}, +{ + "ETH_account" : "0x469ed7a58a5441ccacb12b8be141912cba136ed8", + "name" : "0x469ed7a58a5441ccac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5202594 +}, +{ + "ETH_account" : "0x6d5d07fb300555404bf951a9497d862bb7400e28", + "name" : "0x6d5d07fb300555404b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1035000000 +}, +{ + "ETH_account" : "0xcd6bdd30781a6bf9bda8e45b0ef4ace998018c10", + "name" : "0xcd6bdd30781a6bf9bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6699 +}, +{ + "ETH_account" : "0x7379ab33a4b0cd4368646f0961fdf3de775cb312", + "name" : "0x7379ab33a4b0cd4368", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1155994600 +}, +{ + "ETH_account" : "0x5060e44fba63708c3c557fe2e006b5a6f19fbcde", + "name" : "0x5060e44fba63708c3c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10190000000 +}, +{ + "ETH_account" : "0x11225d3635f283256c55929f4864ef7f54ee85cb", + "name" : "0x11225d3635f283256c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1237881 +}, +{ + "ETH_account" : "0xd9ad92fac58fd51d42f44629e79ebec956a6a948", + "name" : "0xd9ad92fac58fd51d42", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9200000 +}, +{ + "ETH_account" : "0xb05ee6c1842a8f3a08180f97d8704204cf02ae5f", + "name" : "0xb05ee6c1842a8f3a08", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1249292821 +}, +{ + "ETH_account" : "0x608cb60905efc0b59ebad8a9c650a410fead95a0", + "name" : "sphtxcontract", + "publicKey" : "SPH8f2f36GgwXs58G6LKUDVwiLfPSM15LqR3Y2KCjgTAnTwXBEr6Y", + "balance" : 316422586362 +}, +{ + "ETH_account" : "0x7b0840e7933ef2f8ab8779280c6dd5a54bcc8bbe", + "name" : "0x7b0840e7933ef2f8ab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1718809621 +}, +{ + "ETH_account" : "0xa240e0ffa7471ed3eef737e4cfa33ccc91e5d02c", + "name" : "0xa240e0ffa7471ed3ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21560000000 +}, +{ + "ETH_account" : "0x771f27c0b04ffcaf019b7b09adc8450964b50816", + "name" : "0x771f27c0b04ffcaf01", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 320000 +}, +{ + "ETH_account" : "0x49d617a3696fb59d77efa8519fb13464298eebf7", + "name" : "nuevosphtxagus", + "publicKey" : "SPH6czk7RGquYB3A8An2JtoKvzn4hA19vpqe2dYzuTp55XiwB5FoK", + "balance" : 834303000 +}, +{ + "ETH_account" : "0x96e12b01e3d61dcac6a8867736db1c59eb394664", + "name" : "0x96e12b01e3d61dcac6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 187000000 +}, +{ + "ETH_account" : "0xeaf8cd4be966ce89e7aaa3a8c29827c02cbafba6", + "name" : "0xeaf8cd4be966ce89e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 528000000 +}, +{ + "ETH_account" : "0x16d5a9a34e93577b8247f03a60985d7c0dc69a65", + "name" : "0x16d5a9a34e93577b82", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x98ee52aef4c1a2bf16a84fc205ce96b8af50cb9a", + "name" : "0x98ee52aef4c1a2bf16", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0xeb029304318426c37e2a8ea25af527a2e69c385d", + "name" : "0xeb029304318426c37e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1900000000 +}, +{ + "ETH_account" : "0xc7e6f881d9ce2f5e75fc393ca51668d10a1da3d9", + "name" : "0xc7e6f881d9ce2f5e75", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100 +}, +{ + "ETH_account" : "0xd030afdca8820d8290970f2de9a6c0acd789767a", + "name" : "jaguarftype", + "publicKey" : "SPH5SG8GfBuHWbWh8yiet7ckhN4K9PUahHgjW1Dm5UPLFnoV7hrge", + "balance" : 29630000000 +}, +{ + "ETH_account" : "0xf1b1eb06cba11daf50f254508dec5702604efdf2", + "name" : "0xf1b1eb06cba11daf50", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11863247668 +}, +{ + "ETH_account" : "0x4a23f429782cda1431a46a9447bc1ae879fec1a8", + "name" : "0x4a23f429782cda1431", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15920000000 +}, +{ + "ETH_account" : "0xa186607d3ff30b843c146895f397d505570ae8b3", + "name" : "0xa186607d3ff30b843c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1468000000 +}, +{ + "ETH_account" : "0x56a6d2233d4ae1ea8f7aea3f9563cbe6b8d5716d", + "name" : "0x56a6d2233d4ae1ea8f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 308748755 +}, +{ + "ETH_account" : "0x14b6196578dc1df30d9561ba49d34d2b9ad41d04", + "name" : "0x14b6196578dc1df30d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000 +}, +{ + "ETH_account" : "0x37686889fa0ab45af5d0045763333128f7c1d352", + "name" : "0x37686889fa0ab45af5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 151688539339 +}, +{ + "ETH_account" : "0x3ee6405f201aef10845408f680cb2459f9111e01", + "name" : "0x3ee6405f201aef1084", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3200000000 +}, +{ + "ETH_account" : "0xa373b4000a9918bd34c5b90999f6197f9fcfb80f", + "name" : "0xa373b4000a9918bd34", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3800000000 +}, +{ + "ETH_account" : "0xb0486ed0fff380da568f3434e7ad00833505252e", + "name" : "0xb0486ed0fff380da56", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1506588957 +}, +{ + "ETH_account" : "0x537ed40b83fa6cb21b3d0e9c8cbd8df44efaf019", + "name" : "0x537ed40b83fa6cb21b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 457572000 +}, +{ + "ETH_account" : "0x774698b2ae12f43f14340ecb04507bbcc06ba773", + "name" : "0x774698b2ae12f43f14", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0xe9229dcb3ce019eb8ffa3580e0774c5f407307e7", + "name" : "0xe9229dcb3ce019eb8f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1103000000 +}, +{ + "ETH_account" : "0x454f2f38eade8d8ee9933036907012834e0aec53", + "name" : "0x454f2f38eade8d8ee9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0x1d72565f93e446901eab03492272c290106c78e2", + "name" : "0x1d72565f93e446901e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0x338e4c1089490667365b2729553abefe7d9adf8f", + "name" : "0x338e4c108949066736", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1689677000 +}, +{ + "ETH_account" : "0x00c36d99f07e4ca185113ee2c2f49010e775bb6a", + "name" : "0x00c36d99f07e4ca185", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 881000 +}, +{ + "ETH_account" : "0x578051d9eb715319f40e8d875ea04759e694f589", + "name" : "0x578051d9eb715319f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 360000000 +}, +{ + "ETH_account" : "0x512a2e2ccc216b2ffd5df47f528aedfaad93ff5d", + "name" : "0x512a2e2ccc216b2ffd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 547497787 +}, +{ + "ETH_account" : "0x51aa0eaed9eb53a2d4ab898092f48ebbe9e46695", + "name" : "0x51aa0eaed9eb53a2d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x04e4830d1121362e39f8dbf6d6c4732214252bf1", + "name" : "0x04e4830d1121362e39", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 79581541 +}, +{ + "ETH_account" : "0x2db9492eaae4204ab24a2b34691a72e964eca626", + "name" : "0x2db9492eaae4204ab2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 910489000 +}, +{ + "ETH_account" : "0xa07a7f8c1ed3cfe904cbf35122f4b318a7844714", + "name" : "0xa07a7f8c1ed3cfe904", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4838396699 +}, +{ + "ETH_account" : "0x6316543c8e4bfad63b55d98d37c8181a82961004", + "name" : "0x6316543c8e4bfad63b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 316215000 +}, +{ + "ETH_account" : "0xee6db5689496980aa57e57a04df6b562bf42c146", + "name" : "coleystokens", + "publicKey" : "SPH7VZDy9Woxs6AZa4VNAWPkktpWJnwZbpyrh9RN3NxmS8NPHb6My", + "balance" : 105550897 +}, +{ + "ETH_account" : "0x27ffaed18b237f5b915f3a16d42490883a116690", + "name" : "0x27ffaed18b237f5b91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 36515845012 +}, +{ + "ETH_account" : "0x5a27df861901fe10179465031365520800617146", + "name" : "0x5a27df861901fe1017", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 227 +}, +{ + "ETH_account" : "0xa45b4521d5372ec95b55f0c3daebc02b605c055d", + "name" : "sphtxties", + "publicKey" : "SPH8P7eDppjYHRzP8Rx221C2v28ZNj5wBNq8QsDiidHGhfwG5SBtY", + "balance" : 17152000000 +}, +{ + "ETH_account" : "0x4297075be13f90a4e53fee1aa75e085e5c9cfa8f", + "name" : "0x4297075be13f90a4e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 130000000 +}, +{ + "ETH_account" : "0xc72618db426e4f5d9eef4ef173fad1cc9623ab61", + "name" : "0xc72618db426e4f5d9e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5483123521 +}, +{ + "ETH_account" : "0x4210532e10693b9e2b6b293ba410bdb5bc756bcb", + "name" : "0x4210532e10693b9e2b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0xd633cc44039508d8b5f75dd46803bed366f43878", + "name" : "0xd633cc44039508d8b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 468000000 +}, +{ + "ETH_account" : "0xeced8d321efedee2a4e2dc3e1df1f48936c693af", + "name" : "0xeced8d321efedee2a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8091572876 +}, +{ + "ETH_account" : "0x23b22838a286a0fb3a8533084eb08934371fdb06", + "name" : "0x23b22838a286a0fb3a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6615 +}, +{ + "ETH_account" : "0xb202d9572061479227ed5f81e60fea6d742bb515", + "name" : "0xb202d9572061479227", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 355000000 +}, +{ + "ETH_account" : "0x1e7ff1b31586d44b69cbde9bd859ab060e912217", + "name" : "0x1e7ff1b31586d44b69", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1599514000 +}, +{ + "ETH_account" : "0x481ac7ebbad3c827ace622e73d2ed927798491ad", + "name" : "0x481ac7ebbad3c827ac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6293051600 +}, +{ + "ETH_account" : "0xee4c44c7c07de2291163918b672c1658e18a0173", + "name" : "richardmast", + "publicKey" : "SPH5fenke31jKciDoC5zaK91PPU3D2GwgwNsKHoWrnHKdpDTVecFw", + "balance" : 2875000000 +}, +{ + "ETH_account" : "0x41893f963ee0b3b061b9f49c549dfab921133397", + "name" : "0x41893f963ee0b3b061", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3700000000 +}, +{ + "ETH_account" : "0x512dfdd124871b87232d8d58a0651756572e7a34", + "name" : "0x512dfdd124871b8723", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 719999532 +}, +{ + "ETH_account" : "0x1915727079bf924d0945c640bd992119c4e64653", + "name" : "0x1915727079bf924d09", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xfc89b52b09d30cb61d9907c9d7b0af27c49b1ba1", + "name" : "0xfc89b52b09d30cb61d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3936663974 +}, +{ + "ETH_account" : "0xbc2beaca444af161d19e5f9c441c934ccf184633", + "name" : "0xbc2beaca444af161d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 326792 +}, +{ + "ETH_account" : "0xb3096dfe05877ce1d2d96fa0a579ec9c13f1553a", + "name" : "proxyeaaah", + "publicKey" : "SPH69Aqb1DiaY7Bu3XMbHHT7CsmBP36fu3tGMRosP6LCZG4Pc8nXi", + "balance" : 922424817 +}, +{ + "ETH_account" : "0xcfe4d8e9120d9b4b72fbdce947544c869e15e38a", + "name" : "cryptospecter", + "publicKey" : "SPH6VEU5yCBF245YPZM3NcPwC48T1BCfZPZcrJon1HDCnbLk8WR88", + "balance" : 10450285900 +}, +{ + "ETH_account" : "0xa03d290463622a3d538f467fd945c4586c008f46", + "name" : "smtsphtx", + "publicKey" : "SPH8ARDvtf4DboexdoYYUL4QVkmL586Xu8r6oXQo2vKCgasA6AQwv", + "balance" : 14587290000 +}, +{ + "ETH_account" : "0x49244d8fb0470ea053a31fd1ab758701f1466a01", + "name" : "0x49244d8fb0470ea053", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3133410893 +}, +{ + "ETH_account" : "0x5dcf4010ad5141bc8490a287f2d9823bceb5994b", + "name" : "0x5dcf4010ad5141bc84", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 257615000 +}, +{ + "ETH_account" : "0x13f561307999b796c234b0cace1722d16fcd9198", + "name" : "0x13f561307999b796c2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 986000000 +}, +{ + "ETH_account" : "0x53e1b4d37903b6bbd9c0bfa9046492af94911849", + "name" : "0x53e1b4d37903b6bbd9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1818000000 +}, +{ + "ETH_account" : "0x5182531e3ebeb35af19e00fa5de03a12d46eba72", + "name" : "0x5182531e3ebeb35af1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1253025910000 +}, +{ + "ETH_account" : "0x822e0195e1281cedd71721bf6ea27fadd1bc4232", + "name" : "0x822e0195e1281cedd7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6671512873 +}, +{ + "ETH_account" : "0xa8214a241156bcc4f4ff0cb6ed7c0f3882f01a81", + "name" : "0xa8214a241156bcc4f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x9cd6d787c0576192c7b5d9101b729cf03fbc7489", + "name" : "0x9cd6d787c0576192c7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2026237766 +}, +{ + "ETH_account" : "0x2f1029d0ab3c2a6051d9045116071abbe8334e02", + "name" : "0x2f1029d0ab3c2a6051", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2109016724 +}, +{ + "ETH_account" : "0x3d5cbfaed73f610cd268155c3e93b0ef622f3e02", + "name" : "0x3d5cbfaed73f610cd2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 253494553 +}, +{ + "ETH_account" : "0xf26f9daafc7d0a0c239bb85dd13a59e5820f7b76", + "name" : "0xf26f9daafc7d0a0c23", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 922000000 +}, +{ + "ETH_account" : "0x984285d141a268d29a4eb519523700b02093f0bf", + "name" : "0x984285d141a268d29a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x1c5dc633dae4ef6cb2fc9661030a89c185d715f4", + "name" : "0x1c5dc633dae4ef6cb2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3157191000 +}, +{ + "ETH_account" : "0xd475f759797bd5814623e5039b0e14e633172f47", + "name" : "0xd475f759797bd58146", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1620000000 +}, +{ + "ETH_account" : "0x61c025c2b428106f2fe9664ac593fcca17adef61", + "name" : "0x61c025c2b428106f2f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2570000 +}, +{ + "ETH_account" : "0x921eae66ed72868617c81212e6948484dad5542f", + "name" : "0x921eae66ed72868617", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450000 +}, +{ + "ETH_account" : "0x4d42d9352702c9731509bdbc14c00e7a0337d0cd", + "name" : "0x4d42d9352702c97315", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3003537000 +}, +{ + "ETH_account" : "0x4dac262d9cd09e20743cd3fc1ba9bc9985703feb", + "name" : "0x4dac262d9cd09e2074", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16837223908 +}, +{ + "ETH_account" : "0x60b7df1a2fcba4b58fbd312a168832450b6118aa", + "name" : "0x60b7df1a2fcba4b58f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40400000 +}, +{ + "ETH_account" : "0xf491f9732157b008c3d8cc4711bd8dc3299e32ca", + "name" : "0xf491f9732157b008c3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 768110660 +}, +{ + "ETH_account" : "0x8e314df7be0c8f63c89ca4c15d7d460885023e82", + "name" : "0x8e314df7be0c8f63c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 701000000 +}, +{ + "ETH_account" : "0x1d044e17b50664d1e0a50b979ea5fdaa9ce7c57e", + "name" : "ouanling", + "publicKey" : "SPH8Ah98kKytad2BUikwPAzzyR1EVPACDR2vY7fZrsv2YTChQvwpj", + "balance" : 15944222671 +}, +{ + "ETH_account" : "0x074911916aeef483e1e19b84c1ae17c1a4bcfcf7", + "name" : "0x074911916aeef483e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7322006733 +}, +{ + "ETH_account" : "0xd336c0c7cd8387beec4619afce12a386f0083b8e", + "name" : "0xd336c0c7cd8387beec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5500000000 +}, +{ + "ETH_account" : "0xdd2dacb048b77b357bfba739719c624ab12f296a", + "name" : "0xdd2dacb048b77b357b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 320001000 +}, +{ + "ETH_account" : "0x07adfccd496ce8bf558920fefa7ad2f72b38a022", + "name" : "0x07adfccd496ce8bf55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 315000000 +}, +{ + "ETH_account" : "0x8a672a65e41414be2b923b995604ca4815cabd91", + "name" : "0x8a672a65e41414be2b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3600151636 +}, +{ + "ETH_account" : "0x41da359c643e96605b2786cc23bf7c6fc66502ef", + "name" : "0x41da359c643e96605b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60062 +}, +{ + "ETH_account" : "0xfb39189af876e762c71d6c3e741893df226cedd6", + "name" : "0xfb39189af876e762c7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 532228000 +}, +{ + "ETH_account" : "0xe6e73949d498ffee508876f916b61da705da38e7", + "name" : "0xe6e73949d498ffee50", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 330000000 +}, +{ + "ETH_account" : "0x867a689e58518076603cc018832d81c1ceff2d08", + "name" : "0x867a689e5851807660", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 323041000 +}, +{ + "ETH_account" : "0x327b15f7e7af17e689fdafa0a33930cc3bc83f9e", + "name" : "0x327b15f7e7af17e689", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1533730642 +}, +{ + "ETH_account" : "0xd0b4e7af96d5ff1b8192880d2eb944e31e894b60", + "name" : "0xd0b4e7af96d5ff1b81", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 97031000000 +}, +{ + "ETH_account" : "0xea7ba83434907f12729e0e315a8921ac1d3b6761", + "name" : "0xea7ba83434907f1272", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000 +}, +{ + "ETH_account" : "0xcf1a0cf865af1859da476d9573dd834febe9fb95", + "name" : "0xcf1a0cf865af1859da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8134999644 +}, +{ + "ETH_account" : "0x7c847caaa4275e24c4bfa0ec3d39580a45f51f21", + "name" : "0x7c847caaa4275e24c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1463143000 +}, +{ + "ETH_account" : "0x04117b61a6f5b9e1ce0caf4144d7ff78822bc8df", + "name" : "0x04117b61a6f5b9e1ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2069000000 +}, +{ + "ETH_account" : "0xceb7c70882f5ed95262e9389cccd1372687fb91c", + "name" : "0xceb7c70882f5ed9526", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 919116988 +}, +{ + "ETH_account" : "0x50adc911a97e2044f8feb04f23e4ea3c58bab524", + "name" : "0x50adc911a97e2044f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 934699 +}, +{ + "ETH_account" : "0xf6e43ac99b8c6cd4fc192792b7c11a4a1c3be518", + "name" : "0xf6e43ac99b8c6cd4fc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4000000 +}, +{ + "ETH_account" : "0x2da0501411ee854a581b54257e21f31f447292a7", + "name" : "0x2da0501411ee854a58", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53333498000 +}, +{ + "ETH_account" : "0x3833dda0aeb6947b98ce454d89366cba8cc55528", + "name" : "0x3833dda0aeb6947b98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 26645626266 +}, +{ + "ETH_account" : "0xcfcddd5ff45ccde7ff152dcd295af98736fdd060", + "name" : "0xcfcddd5ff45ccde7ff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1619 +}, +{ + "ETH_account" : "0xe912c6fcfa0617fd15d91d3d587ce24709de2584", + "name" : "0xe912c6fcfa0617fd15", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2056074000 +}, +{ + "ETH_account" : "0x23e7cdb7f0e299cef3d13393746c0078b88b197f", + "name" : "0x23e7cdb7f0e299cef3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 52000000 +}, +{ + "ETH_account" : "0x28a9e094100c2c597ce92c121e7683e0958b2b3f", + "name" : "0x28a9e094100c2c597c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 410000000 +}, +{ + "ETH_account" : "0x6164c37069f523fc5eea77d07abc8e97eb886851", + "name" : "0x6164c37069f523fc5e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0x7071ff266f4fa5fa88494c459982a082d390602d", + "name" : "0x7071ff266f4fa5fa88", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 649772821 +}, +{ + "ETH_account" : "0xbe1f2da702edf011532bdc4964ee2605048c638a", + "name" : "0xbe1f2da702edf01153", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 477540000 +}, +{ + "ETH_account" : "0xe777efc0d0e0200a1e8db5e7f58fc683abb6d551", + "name" : "0xe777efc0d0e0200a1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1644000000 +}, +{ + "ETH_account" : "0xc12013552f0a14d536c27ad62b00637a3f197d22", + "name" : "0xc12013552f0a14d536", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 58200000000 +}, +{ + "ETH_account" : "0x75314dcf8353dc82b16eb69f8abeacf0ff5a8a05", + "name" : "0x75314dcf8353dc82b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 499997231 +}, +{ + "ETH_account" : "0x3333ba9b876edaf7a650c292661557dc2eda6885", + "name" : "0x3333ba9b876edaf7a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0x0a2278692568548a46dad23705f41fba42e64be8", + "name" : "0x0a2278692568548a46", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40571000000 +}, +{ + "ETH_account" : "0x7c1b602846df472db01f444bf10b39d0e378d7ea", + "name" : "kohlwitmer", + "publicKey" : "SPH6izPyBruPnqDUGCLd4LWYDoztr4RugNh5A3TA7ww1bBeRqbsCs", + "balance" : 10618724800 +}, +{ + "ETH_account" : "0x7bf416e73901a8d7b61c3b3a6dc659920e23330c", + "name" : "0x7bf416e73901a8d7b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11766187400 +}, +{ + "ETH_account" : "0x8b40bf369446ab4fe70b118af2183b52cb71ec48", + "name" : "0x8b40bf369446ab4fe7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10577189730 +}, +{ + "ETH_account" : "0xfd3b1c7b54c76e2e5848a6470f29f9ab9e5ef359", + "name" : "0xfd3b1c7b54c76e2e58", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1160000000 +}, +{ + "ETH_account" : "0x4c0be4475d9786f0fe2f1fc725b86e04767b1156", + "name" : "0x4c0be4475d9786f0fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20 +}, +{ + "ETH_account" : "0x34e1b6221e54e63148567b704e9a1e9d74eca501", + "name" : "0x34e1b6221e54e63148", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 120000000 +}, +{ + "ETH_account" : "0x4642ed78aca2d7f291772dafcfa86916228dba27", + "name" : "0x4642ed78aca2d7f291", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 95 +}, +{ + "ETH_account" : "0x54a452d20d94ad661387f9b3be4f2f8a24fbde0b", + "name" : "0x54a452d20d94ad6613", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 255000000 +}, +{ + "ETH_account" : "0x0e365a583d35e2a522080ea50a5fb10358b133cd", + "name" : "0x0e365a583d35e2a522", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x3490585faff0484f8d258ffbb3482a4d80fe1a37", + "name" : "0x3490585faff0484f8d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 221045140 +}, +{ + "ETH_account" : "0x73a6439e7d2cab7d2061f4dc3d3a1e9e7a75f317", + "name" : "0x73a6439e7d2cab7d20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6450000000 +}, +{ + "ETH_account" : "0x2b583c58ad85d341e59e45852444b07d0a37ae19", + "name" : "0x2b583c58ad85d341e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 29154379460 +}, +{ + "ETH_account" : "0x7d9ea8b4e0131bbec131ff427a31ece82bfd9e08", + "name" : "0x7d9ea8b4e0131bbec1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100 +}, +{ + "ETH_account" : "0xa01fa1ca52c4323d9bbed95076cb2b2999849d3f", + "name" : "0xa01fa1ca52c4323d9b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 67380000000 +}, +{ + "ETH_account" : "0x390973067a20d3e377a40999f0ae559a0ee3db50", + "name" : "0x390973067a20d3e377", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600000 +}, +{ + "ETH_account" : "0xb50d8e9f25922e9f4100fa221c26734c3ea3abb5", + "name" : "0xb50d8e9f25922e9f41", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11220057532 +}, +{ + "ETH_account" : "0x050f6efda4a2978777e04894270f92b6c6da4da1", + "name" : "0x050f6efda4a2978777", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0xe5d33397125315795cf62e5722864b6e4caa9e34", + "name" : "0xe5d33397125315795c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xb494dad6857a9e330563d1018398e2b79a5dddf1", + "name" : "0xb494dad6857a9e3305", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x484b0bfce8ffe920ab1deffeda0a8a4e6ae994c2", + "name" : "wqnirztvwazymwn", + "publicKey" : "SPH59Awf2mzbZz6uKLLA5BpDchDWxPLLtppvvh4w6WHQzEzhojga2", + "balance" : 50001397000 +}, +{ + "ETH_account" : "0xa39a2073cd0ce7c027d6766bd00a09699d08b412", + "name" : "jatrn", + "publicKey" : "SPH51Yu57cfakwyg83WhSqN3tTbYJuZiRFY4BbGYGguYWsDXSLp31", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x5ab64fdb3e404489d31cd742685f0b50cc8e1194", + "name" : "0x5ab64fdb3e404489d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 56060846658 +}, +{ + "ETH_account" : "0x8929e7cd7dc368661250b8dee0f20b17fc8ff877", + "name" : "0x8929e7cd7dc3686612", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 240000000 +}, +{ + "ETH_account" : "0x6c9fedcf61f8589354af50a0a0da6076347a3c0d", + "name" : "0x6c9fedcf61f8589354", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 279290000 +}, +{ + "ETH_account" : "0x4d5864db503fb7775e88a4c566118f5ea31d9227", + "name" : "0x4d5864db503fb7775e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13851355000 +}, +{ + "ETH_account" : "0xc2f833639b69d46422db24000d81ae3ab49f2bb4", + "name" : "0xc2f833639b69d46422", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1035717940 +}, +{ + "ETH_account" : "0x5ee89c67b31c6324172cd5e5dc90e2f1d63b4bd4", + "name" : "0x5ee89c67b31c632417", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1630501683 +}, +{ + "ETH_account" : "0xef6438ef3a89b86c8d299c3952b2564887c03cc4", + "name" : "0xef6438ef3a89b86c8d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 170000000 +}, +{ + "ETH_account" : "0x40e1373e63b4d2005d2b3aa2155950599ec443bf", + "name" : "0x40e1373e63b4d2005d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300815695 +}, +{ + "ETH_account" : "0x007017bea522334c3771e77df571539b2e2e6d29", + "name" : "0x007017bea522334c37", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3200000000 +}, +{ + "ETH_account" : "0xad8e85f169a4e622c94a3573dddf49a731a5cb4e", + "name" : "0xad8e85f169a4e622c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4400000000 +}, +{ + "ETH_account" : "0x0b7dfb921363c1f44012b6f8b261d8612ddd1178", + "name" : "0x0b7dfb921363c1f440", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 244 +}, +{ + "ETH_account" : "0x12af5989821f722384e8d142fac326524085db8c", + "name" : "0x12af5989821f722384", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200 +}, +{ + "ETH_account" : "0x0aad2c14074a260ec6087c31eaac54e1c9cab5bd", + "name" : "0x0aad2c14074a260ec6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 448000000 +}, +{ + "ETH_account" : "0x691436d3754259fb9688efc5f2078514c4232964", + "name" : "0x691436d3754259fb96", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6292569101 +}, +{ + "ETH_account" : "0x28eb5d77ce1e2b91a640b2357c087635a1494e9d", + "name" : "0x28eb5d77ce1e2b91a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x9461d3d18506693d8094544edf23dc516e6a1007", + "name" : "0x9461d3d18506693d80", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 818356067121 +}, +{ + "ETH_account" : "0x2d564d978700958250669fcf33490c6bdb958d3d", + "name" : "0x2d564d978700958250", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 840000000 +}, +{ + "ETH_account" : "0x0c296a43fbbdb77503d10feccebbd1210d68e336", + "name" : "0x0c296a43fbbdb77503", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2424376819 +}, +{ + "ETH_account" : "0x862fc219b51401dda88d54152a14e123efbc2a85", + "name" : "0x862fc219b51401dda8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 590000000 +}, +{ + "ETH_account" : "0xadfebccca8d3d3c7688a518910ccb43d956178b3", + "name" : "0xadfebccca8d3d3c768", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xb9d3e1a9f8d040ca2f5d47b6cc2937bb60d88cc2", + "name" : "jacquotsophiatx", + "publicKey" : "SPH63jn3VC237z7geNMFMXuPcnLz9ZNPFXLJjrJDiMLLrNXBg8mhW", + "balance" : 2132000000 +}, +{ + "ETH_account" : "0x4df2cf9cf9c2669746a90f1f1043005d300739ca", + "name" : "gillybrah", + "publicKey" : "SPH55UmSg4nse5AcwCvKACEZ2pJrVuyx3NT44PfaTQSycQ88cLcj7", + "balance" : 4596484300 +}, +{ + "ETH_account" : "0x420cc937b75c268df2c3e533e7ca5fb5e13c8f53", + "name" : "0x420cc937b75c268df2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 420000000 +}, +{ + "ETH_account" : "0x56dfcd32d39543946691e4fefb4f454c4169b87b", + "name" : "0x56dfcd32d395439466", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 123258505 +}, +{ + "ETH_account" : "0x8af5130529f0e332e5416aeb60a8f3fc7acf029c", + "name" : "0x8af5130529f0e332e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x19d2bb5598c1af4c97a8931fe551ec2f6b6b8feb", + "name" : "0x19d2bb5598c1af4c97", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0x2007e670e0722871c73dd3f1eeea2cf326100db7", + "name" : "0x2007e670e0722871c7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39000000 +}, +{ + "ETH_account" : "0xaf11cc4e35d6e8053fb6b3992c0010ecc8574835", + "name" : "0xaf11cc4e35d6e8053f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1246173000 +}, +{ + "ETH_account" : "0x061a6663b0ca6c87f76c2839df53eb4e88d8345a", + "name" : "0x061a6663b0ca6c87f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 505290431 +}, +{ + "ETH_account" : "0x3737a34463afafb55e0f014768758fb756c0da7d", + "name" : "0x3737a34463afafb55e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 277129000 +}, +{ + "ETH_account" : "0xfc162d0d40f4266f65f9c131d945ce8c68ef0d61", + "name" : "0xfc162d0d40f4266f65", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 291 +}, +{ + "ETH_account" : "0x966b6448b1ce88b5ab0ce680fb56db3888e92a33", + "name" : "akakabuto", + "publicKey" : "SPH5NB1yyhPeo3vtzvMHpz7uMtqnWei19BgSHCvou2ptFMSsA11BV", + "balance" : 3353414991 +}, +{ + "ETH_account" : "0xcdd3f4e94ada4c7255fbdee9abff4a8903df223f", + "name" : "0xcdd3f4e94ada4c7255", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3782389548 +}, +{ + "ETH_account" : "0x6daae8b4f29f79653043fb3533dcf34a3e506dda", + "name" : "0x6daae8b4f29f796530", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 576000000 +}, +{ + "ETH_account" : "0x440dfee0f062c7d25f35a7df7a815f0e886666b1", + "name" : "leviathan", + "publicKey" : "SPH8VZSnHdaW85QxwYEcy5V7x1aa73rMphjAFDYnHFUvDizRdmThT", + "balance" : 98975789653 +}, +{ + "ETH_account" : "0x07194186a65bf9a3e3374cf802e135918eaa118a", + "name" : "0x07194186a65bf9a3e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 293000000 +}, +{ + "ETH_account" : "0x434c11fc199309761d9ef3cc6ea65cbf5d693799", + "name" : "0x434c11fc199309761d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1001662845 +}, +{ + "ETH_account" : "0x42c05e4704e5e0e93d73e4a22b4e635325209e65", + "name" : "0x42c05e4704e5e0e93d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1917110957 +}, +{ + "ETH_account" : "0xfc860e03992661ba08ede69dd666e016f721b430", + "name" : "coreylavish", + "publicKey" : "SPH7mxfeG4SiHKtavWer9hVw5Y756AKSA8vtSeXf1PVvZpFfCiCsB", + "balance" : 2675000000 +}, +{ + "ETH_account" : "0xdc4e13d9e55a42b8d2f6a41cab13a68410253269", + "name" : "0xdc4e13d9e55a42b8d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3398000000 +}, +{ + "ETH_account" : "0x5ef0501109e360693698f9aa47b23b946a562f23", + "name" : "0x5ef0501109e3606936", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13000000000 +}, +{ + "ETH_account" : "0xbd0da5c54e0da65af7eddac692cd03f6d57382a0", + "name" : "0xbd0da5c54e0da65af7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 921000 +}, +{ + "ETH_account" : "0xde3270049c833ff2a52f18c7718227eb36a92323", + "name" : "cryptox1", + "publicKey" : "SPH5NPCHzBkywv3Y2dkk26RbQ3F4JvbfrUifTXScaaGadah4yEZW4", + "balance" : 30165705244 +}, +{ + "ETH_account" : "0x1e12ebff22756a708c59d378825e14cabd183558", + "name" : "0x1e12ebff22756a708c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 63000 +}, +{ + "ETH_account" : "0x6007a0437f46ee4215ebc9076f64f19dd6a3bab3", + "name" : "0x6007a0437f46ee4215", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 276990000 +}, +{ + "ETH_account" : "0x3ed54ac39681d7a8e247268f2cbb43d84f85e1aa", + "name" : "0x3ed54ac39681d7a8e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1300000000 +}, +{ + "ETH_account" : "0x3709e2a9bbe3193e87a9d291a4067d0a7eb21f46", + "name" : "0x3709e2a9bbe3193e87", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9112420936 +}, +{ + "ETH_account" : "0xbf7dc0111aa9f421a92802b0779b6ddf30b07166", + "name" : "0xbf7dc0111aa9f421a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1600902000 +}, +{ + "ETH_account" : "0x52d5110aab99a5753ba8c49ab9b374e197114a9f", + "name" : "sphtxkja", + "publicKey" : "SPH7JUpbBTgHeTGKanXTfpsVmzd481vM39fzPYvRLpxs224S5WFtD", + "balance" : 2970068570 +}, +{ + "ETH_account" : "0xe548d944827fa4a5195a7ad371fba38d904c9f5d", + "name" : "0xe548d944827fa4a519", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xfea812c33d6dc54f8bbbc2d5070b2d6bf270597e", + "name" : "0xfea812c33d6dc54f8b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3249458000 +}, +{ + "ETH_account" : "0xbb28aec0fe5439af6f7b1ad0c11959e065c97c6d", + "name" : "0xbb28aec0fe5439af6f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 496466906 +}, +{ + "ETH_account" : "0x429537fdf32d46c295c66ad9a8856c49e2e601b5", + "name" : "0x429537fdf32d46c295", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000 +}, +{ + "ETH_account" : "0x4b4a41543b8aed4ae095a18b23f5c491c5ae8aa9", + "name" : "0x4b4a41543b8aed4ae0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2105999900 +}, +{ + "ETH_account" : "0xa84091fad32c49c8c646fec29fe0edeedd4083f9", + "name" : "0xa84091fad32c49c8c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 524999999 +}, +{ + "ETH_account" : "0x29cf8e81d57b51be6be273a53739debe0ae10f84", + "name" : "0x29cf8e81d57b51be6b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 67084 +}, +{ + "ETH_account" : "0xbcd46d430bc50a04b649e4334bd44a95b06d0a80", + "name" : "0xbcd46d430bc50a04b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1417275000 +}, +{ + "ETH_account" : "0xf2081bfe08adc35f4b3dc41244474e77cb2fb13d", + "name" : "0xf2081bfe08adc35f4b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 91 +}, +{ + "ETH_account" : "0x9a44a0adc51886332fd12c88cd1fe2aa7a456bd6", + "name" : "sphtxwally", + "publicKey" : "SPH6XbWdnEj4HNBTe9czQUvEyoytnLJbXbaNYwAVDAbRAxC4T2d7W", + "balance" : 4721309537 +}, +{ + "ETH_account" : "0xc8718fc1c4b30ab10c0db693cd9f9efb02c762c6", + "name" : "0xc8718fc1c4b30ab10c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 49928693 +}, +{ + "ETH_account" : "0x4c0de26c7ebd6e37b5c1dc8cf243cf6b36a8e0f1", + "name" : "0x4c0de26c7ebd6e37b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1846906864 +}, +{ + "ETH_account" : "0x9a1f06a2bff9d99b41534ddb4a85f09f20a17c35", + "name" : "0x9a1f06a2bff9d99b41", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6820000000 +}, +{ + "ETH_account" : "0xc4b695d03cb1ff1560c44af2168f896537aac1bf", + "name" : "0xc4b695d03cb1ff1560", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xc272248022b4c6aae1825ef6dfc081041133d99c", + "name" : "0xc272248022b4c6aae1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2800000000 +}, +{ + "ETH_account" : "0x277257fccbf0c95b1422f2b58d447cd6fe8213da", + "name" : "0x277257fccbf0c95b14", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 346111634 +}, +{ + "ETH_account" : "0x3b7c5fb2697de52750ceabc4450c6e92875618ec", + "name" : "0x3b7c5fb2697de52750", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 220000000 +}, +{ + "ETH_account" : "0x5fb1178eb6ad6d209ae213aa629e0a06b0f53802", + "name" : "0x5fb1178eb6ad6d209a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x87e725b7d0cb9f8f997f5e04cd7acb3e68b691a5", + "name" : "0x87e725b7d0cb9f8f99", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3334000000 +}, +{ + "ETH_account" : "0xa6288d3cc9bb4fffb5637f04b54b902916446d75", + "name" : "qkzkqkzk", + "publicKey" : "SPH5EAiJjqv1xPT5CjTAaN9Har3EoB3BAUVGVEUcrYWpgX2gncrXd", + "balance" : 1039381916 +}, +{ + "ETH_account" : "0x4c82bcc23485f7ec5afc37354edaccaa15b0b758", + "name" : "0x4c82bcc23485f7ec5a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xb52b8b4e9c5c624d04a271c4dd42c71496ee75e4", + "name" : "0xb52b8b4e9c5c624d04", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 533037974 +}, +{ + "ETH_account" : "0x129e0131ea3cc16fe5252d7280bd1258f629f20f", + "name" : "0x129e0131ea3cc16fe5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 584319000 +}, +{ + "ETH_account" : "0x61d299ef8ea7e4e0a69f7db15bb36289297becd7", + "name" : "izzsophiatx", + "publicKey" : "SPH7jt4UiScXM63ccvscZZS7YVfvMqeCKEu7ih6sJ3y3pU5wJfyty", + "balance" : 1100000000 +}, +{ + "ETH_account" : "0xb74e9c38b5877af52b241d7c8695cec55471e96f", + "name" : "0xb74e9c38b5877af52b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 112000000 +}, +{ + "ETH_account" : "0x5250c8a7cdd9f7d931560438ea367fa823a5b078", + "name" : "0x5250c8a7cdd9f7d931", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600000000 +}, +{ + "ETH_account" : "0xe7125ff086fd316a8c84da84f1ab500f0471e969", + "name" : "0xe7125ff086fd316a8c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5011893000 +}, +{ + "ETH_account" : "0xa5a3a027724d7559a5221766ad9ef39376a42a25", + "name" : "0xa5a3a027724d7559a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 82000000 +}, +{ + "ETH_account" : "0x78dd6764d56cf3a90abcbca097e3d315d0471d3d", + "name" : "0x78dd6764d56cf3a90a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x1cb8de51ca4c2f0bac44efd71c3994e62922dbbc", + "name" : "0x1cb8de51ca4c2f0bac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1322345767 +}, +{ + "ETH_account" : "0xe9fd42bc77c2e58aaa123dbe700f2071fd9e6601", + "name" : "0xe9fd42bc77c2e58aaa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5945689285 +}, +{ + "ETH_account" : "0x3fb997e70d7f607e6c066253a204b3881de998e4", + "name" : "0x3fb997e70d7f607e6c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 29161900281 +}, +{ + "ETH_account" : "0x6bb8bdb6722d754536c2207c1062344a7d7c9527", + "name" : "0x6bb8bdb6722d754536", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000 +}, +{ + "ETH_account" : "0xb618b119268b594f1aab218a621a9f7bef27b42f", + "name" : "0xb618b119268b594f1a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 407 +}, +{ + "ETH_account" : "0x02d55a29766a3e63f4b459e57c6054e8b4359867", + "name" : "0x02d55a29766a3e63f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000 +}, +{ + "ETH_account" : "0x8625bea630f9aa26f76fad49e5deb6d2dc7cde50", + "name" : "0x8625bea630f9aa26f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0x1ea0d7561c8369e33f6a326826a3681fcc945351", + "name" : "0x1ea0d7561c8369e33f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1011190000 +}, +{ + "ETH_account" : "0x85600cafb853f67dff7ad646fc9b78e0deb1575d", + "name" : "0x85600cafb853f67dff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2411189528 +}, +{ + "ETH_account" : "0xa5c68f4df4c8dab51d975dbe9daf1d5528b357fe", + "name" : "0xa5c68f4df4c8dab51d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 319587 +}, +{ + "ETH_account" : "0xa1f5c8f8cc6551f8f0f3252847f29df64841e7a4", + "name" : "0xa1f5c8f8cc6551f8f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 376741697 +}, +{ + "ETH_account" : "0xe7a71da491f685a47298a3f8ca40eac5e8d72f3e", + "name" : "0xe7a71da491f685a472", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 221000000 +}, +{ + "ETH_account" : "0x41d5233f434d98b73f22ce664d48be06f4eb073f", + "name" : "0x41d5233f434d98b73f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1983303800518 +}, +{ + "ETH_account" : "0x0a997396a52cb27fa2acaf028e50b5e772aef939", + "name" : "0x0a997396a52cb27fa2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2001000000 +}, +{ + "ETH_account" : "0x3964f8b8470b87ca35254cbcfdea8ba0fa0e9846", + "name" : "0x3964f8b8470b87ca35", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6300000000 +}, +{ + "ETH_account" : "0xfcded7e973d163d11181849ec08bc792997418ac", + "name" : "0xfcded7e973d163d111", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2572 +}, +{ + "ETH_account" : "0x1df58d084f62482f7dc9a8404fd8705878d15232", + "name" : "0x1df58d084f62482f7d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 660285106 +}, +{ + "ETH_account" : "0x3749bb841d47ca007ef70580a5e836839c0158c0", + "name" : "0x3749bb841d47ca007e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 596313000 +}, +{ + "ETH_account" : "0x6b488c6f5c2800c7071fec6730e8c547b657610a", + "name" : "0x6b488c6f5c2800c707", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 265267000 +}, +{ + "ETH_account" : "0x1ba9d8936755cbb9afa0adaf9fc5f20376dd4e90", + "name" : "0x1ba9d8936755cbb9af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2800000000 +}, +{ + "ETH_account" : "0x3aa88fa08b06baeb70bf78b102e7b71f0996fba5", + "name" : "0x3aa88fa08b06baeb70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x2e919ccee2383fe0c5e5da77a2083796de3175bb", + "name" : "0x2e919ccee2383fe0c5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 615000000 +}, +{ + "ETH_account" : "0xdef0083fea701af025c19bdf0d328d5a44eac384", + "name" : "0xdef0083fea701af025", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1876745000 +}, +{ + "ETH_account" : "0x2352edb7092477e6d7a76551ae21ce36d3398ade", + "name" : "0x2352edb7092477e6d7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 390000000 +}, +{ + "ETH_account" : "0x1310472921cb61391da6bb0e3f79d03c975c8ca3", + "name" : "0x1310472921cb61391d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 262000000 +}, +{ + "ETH_account" : "0xc20bb51b7564caa84a3ba1713f6d0106febbd66f", + "name" : "wasserboxer", + "publicKey" : "SPH7NCSydDBtnwvnGNSCNahUh1TGgb7N8vs9bATPYVjNZJ76MLnGB", + "balance" : 3945351000 +}, +{ + "ETH_account" : "0x71c39125034c8d0467a4710edadd638db0d128c2", + "name" : "0x71c39125034c8d0467", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1526000000 +}, +{ + "ETH_account" : "0xe96d2fee911dff1ee43d58ee1639a9fa09777680", + "name" : "0xe96d2fee911dff1ee4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25194883 +}, +{ + "ETH_account" : "0xb24835d833392351ef03822daf5af3daa5bc23a4", + "name" : "0xb24835d833392351ef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3300000000 +}, +{ + "ETH_account" : "0x000a6d64eb61744ca00a3da5cda0cdfa4e42e31a", + "name" : "0x000a6d64eb61744ca0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0x6301cb64e15e6c9304e5af72acd4a325c2e9ee89", + "name" : "0x6301cb64e15e6c9304", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 485000000 +}, +{ + "ETH_account" : "0x00c819e22c8838e801f6436e6ecd6ad1e9aa245d", + "name" : "nos", + "publicKey" : "SPH6jEdMiNNM8pg1UeBhvwQ3PL5yaMuLrC2KTo73fFaxv2iE24Q5u", + "balance" : 494930245 +}, +{ + "ETH_account" : "0xb5a019b35f059e783b4e40b172c94d6cd4dd3fa6", + "name" : "0xb5a019b35f059e783b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28431000000 +}, +{ + "ETH_account" : "0xfb0f16663c71a2f92bf009c7dc7b401ad372b6de", + "name" : "0xfb0f16663c71a2f92b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24131337000 +}, +{ + "ETH_account" : "0x688096e4f9f692a6e18be2a5bca85acad0025a20", + "name" : "0x688096e4f9f692a6e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10478809689 +}, +{ + "ETH_account" : "0x8b5bb0eaa6d6f07d1cb01a53798d4f36017ef252", + "name" : "0x8b5bb0eaa6d6f07d1c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2243264851 +}, +{ + "ETH_account" : "0xf314ddb7439ecc6291d7a3f291a9d6abb8e09560", + "name" : "0xf314ddb7439ecc6291", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4079056000 +}, +{ + "ETH_account" : "0x792035d3754bb82f8f545ae1d6226dc495e3297d", + "name" : "0x792035d3754bb82f8f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 833000000 +}, +{ + "ETH_account" : "0x925ccef8bbe7a7e0b473ce561f5a120d5cece459", + "name" : "0x925ccef8bbe7a7e0b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1007479801 +}, +{ + "ETH_account" : "0x702fc68470bf7d0a2d5a38cfe01d415ccd4aca42", + "name" : "0x702fc68470bf7d0a2d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3788000000 +}, +{ + "ETH_account" : "0xec7afcc4c71eb8b9f166fd66c4f59d461311dc30", + "name" : "0xec7afcc4c71eb8b9f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1883562873 +}, +{ + "ETH_account" : "0x466cd318f8f8e534371a602d04e51ee6c50590ab", + "name" : "0x466cd318f8f8e53437", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 128890479694 +}, +{ + "ETH_account" : "0xee90c8f054b354e04ae26907db7435fe905eac44", + "name" : "0xee90c8f054b354e04a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5981 +}, +{ + "ETH_account" : "0xd9c1186fdd41b8ae45fa4fea03788696847c986d", + "name" : "0xd9c1186fdd41b8ae45", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 587110727 +}, +{ + "ETH_account" : "0xa05c3027a663b58dca247fee39432f20511f7a0b", + "name" : "0xa05c3027a663b58dca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x853ba5ec8f827fba6edecad5e2aeab211453ee43", + "name" : "ezekweij", + "publicKey" : "SPH59BFpmif2aPin2CMxNctmgqLPXbBP3vPSJy3jYuqUbiekwN6zb", + "balance" : 1320000000 +}, +{ + "ETH_account" : "0xdae7cd644ef1b612840ecffb4fa0ed4abcfbcd75", + "name" : "0xdae7cd644ef1b61284", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1570000000 +}, +{ + "ETH_account" : "0xea79387e9b31af0db484fc574fa638a31dc4b704", + "name" : "0xea79387e9b31af0db4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 940000000 +}, +{ + "ETH_account" : "0x5c165c586c766622950276b61b3f76ed804533d9", + "name" : "0x5c165c586c76662295", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1570000000 +}, +{ + "ETH_account" : "0x3faf4fa9cac5cabc36d7e5570f1a384532d76f6d", + "name" : "0x3faf4fa9cac5cabc36", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3920000000 +}, +{ + "ETH_account" : "0xed1b97c2ca2f0fa412b4c394ae9bbd209fe7ca4b", + "name" : "0xed1b97c2ca2f0fa412", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 257152000 +}, +{ + "ETH_account" : "0xb6a0388d90e5ae869340f097c3685525fce3b86a", + "name" : "0xb6a0388d90e5ae8693", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 396000000 +}, +{ + "ETH_account" : "0x6d3f04551783da6ace3d5767c6b1ae029ce86b76", + "name" : "0x6d3f04551783da6ace", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3920000000 +}, +{ + "ETH_account" : "0xc1db683fd38f8270bc24681c7cf69c3ff2bb31d7", + "name" : "0xc1db683fd38f8270bc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 324799572 +}, +{ + "ETH_account" : "0xe586dbb6a309051277172752d69d4d5d2eb46622", + "name" : "0xe586dbb6a309051277", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2685053000 +}, +{ + "ETH_account" : "0x1aafa724e117c115eaee031490b1731058796c63", + "name" : "0x1aafa724e117c115ea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000 +}, +{ + "ETH_account" : "0x1b4eeecdcba3f5d969ccb42c4c801218ac3b382f", + "name" : "0x1b4eeecdcba3f5d969", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1061000000 +}, +{ + "ETH_account" : "0x23b360c17cdc0912c4d51a9ffde4d81e38e66318", + "name" : "0x23b360c17cdc0912c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2378035743 +}, +{ + "ETH_account" : "0x796b332006948417e0ee009fa9a27699bd18574f", + "name" : "0x796b332006948417e0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3920000000 +}, +{ + "ETH_account" : "0x4b46e48be29505c6a8f7429f4a8f21a329542dfc", + "name" : "0x4b46e48be29505c6a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9815000000 +}, +{ + "ETH_account" : "0x3935b232fca6af5f1180c45d5319c72b79204df9", + "name" : "0x3935b232fca6af5f11", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15220964000 +}, +{ + "ETH_account" : "0x3cff4a4c041b4c71cec2a2411c3744a9aa1dcec1", + "name" : "0x3cff4a4c041b4c71ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3920000000 +}, +{ + "ETH_account" : "0xd2fd00999005929be5e3983c74c196e029cee5a2", + "name" : "0xd2fd00999005929be5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x7dc78e4091f20c9ee3d77bffd744dc437de49021", + "name" : "0x7dc78e4091f20c9ee3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2161000000 +}, +{ + "ETH_account" : "0x2fcc020f72e5d2edd2a24d04f3dc90d7fdfbd1dd", + "name" : "0x2fcc020f72e5d2edd2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4000000000 +}, +{ + "ETH_account" : "0x55a281e88402113d77b0bc2e67c27dfc8eaac7fd", + "name" : "domsphtx", + "publicKey" : "SPH7ruNjhVMVAjj46xzL9fL8nHrA9spkfmx9VFZ1xnkaeGNcdo7JL", + "balance" : 83024250000 +}, +{ + "ETH_account" : "0xd4f38f7ef62760dfe9db08b9baa686a3e17324ac", + "name" : "0xd4f38f7ef62760dfe9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24305016833 +}, +{ + "ETH_account" : "0x1c9fbb6564610b3b2776420081e9b328967a01ef", + "name" : "0x1c9fbb6564610b3b27", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3235505793 +}, +{ + "ETH_account" : "0x3e7dd7df9c1ffd12b8ecd94a27472bdc4d87ab7e", + "name" : "0x3e7dd7df9c1ffd12b8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0x94b0ec0d3738aaf5c328916b1e2ca788145da3d2", + "name" : "yxcvbnm", + "publicKey" : "SPH7YUwJ9mP5gMFQRmQRuNcw9iJKvPb51KAdRJyD8dRqya8G75MZG", + "balance" : 7980426829 +}, +{ + "ETH_account" : "0xb5a5112a20620579121d64cf14edbc7c743b7180", + "name" : "0xb5a5112a2062057912", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1910000000 +}, +{ + "ETH_account" : "0x68326a1e28314602f5a53f877dd37e99d111744a", + "name" : "0x68326a1e28314602f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1850000000 +}, +{ + "ETH_account" : "0xc33e88249b5c037d5d7ec70806cafe5b1906d1e9", + "name" : "0xc33e88249b5c037d5d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 386872394 +}, +{ + "ETH_account" : "0x44c51816d2b75cbd5cf63b2c8107e6f8d9a39529", + "name" : "0x44c51816d2b75cbd5c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 232000000 +}, +{ + "ETH_account" : "0x16e110bed33c0445be68b957cbbef5cd7e1bbd4f", + "name" : "trustrade", + "publicKey" : "SPH54fgPNHZnh5p2B8J4PNB4RHU3fRgBiGpDTJYGRAFN2JrHrX7hY", + "balance" : 4752875000 +}, +{ + "ETH_account" : "0x6f10475f694d59b31146b37a03df271ed6030c3f", + "name" : "0x6f10475f694d59b311", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 741465000 +}, +{ + "ETH_account" : "0xa66165ef44ec2144cc1230ee6e88e85a0ed9e0aa", + "name" : "0xa66165ef44ec2144cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0xa0940a664ef5d9d6e7c887353088d451154a239c", + "name" : "0xa0940a664ef5d9d6e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1298812000 +}, +{ + "ETH_account" : "0x2051dc3da0f08d813e85005681a0cfa08915fc87", + "name" : "0x2051dc3da0f08d813e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0x7e42b29409bb6d974867c2d133408c67b3c8566b", + "name" : "0x7e42b29409bb6d9748", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 571273590 +}, +{ + "ETH_account" : "0x68aff7e0cacc0dd7dc4f75a72b538a63d8febf6e", + "name" : "0x68aff7e0cacc0dd7dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 490859 +}, +{ + "ETH_account" : "0x6d2a01956074a1c5c40b17b5336ef109b6efbb18", + "name" : "0x6d2a01956074a1c5c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24113470000 +}, +{ + "ETH_account" : "0xc2df66e4c45e0772738b52dfa4c5fba838ed8bc0", + "name" : "0xc2df66e4c45e077273", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1001000000 +}, +{ + "ETH_account" : "0xa630bcb8e2370e700c6b530cb4aef609602fedf8", + "name" : "0xa630bcb8e2370e700c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 847239509 +}, +{ + "ETH_account" : "0xb50fa18c58ca7f28f9a67f685e3e53affa094ef2", + "name" : "0xb50fa18c58ca7f28f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 373818793 +}, +{ + "ETH_account" : "0x2761b3923958c5e36d0ce35438803dd2d1dffdd3", + "name" : "0x2761b3923958c5e36d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5605000000 +}, +{ + "ETH_account" : "0xcfa46613fef09ae7cfa623203100c860d16f6a6e", + "name" : "0xcfa46613fef09ae7cf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13999999637 +}, +{ + "ETH_account" : "0xb7daecedd3a20fbba23a4fa531bafe263680eee2", + "name" : "0xb7daecedd3a20fbba2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 757 +}, +{ + "ETH_account" : "0xfe8048bc739e7b8eb39b548661461e188e97db89", + "name" : "wildsphtx", + "publicKey" : "SPH85BqpNWq6hFNTzbFxcaVBZmbJaPFRMFaURAHYtAj1hiPngJLK8", + "balance" : 5383169408 +}, +{ + "ETH_account" : "0x782dd81060bc85bddb0ce7b2a53eaddd9f1f6aa0", + "name" : "0x782dd81060bc85bddb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8300000000 +}, +{ + "ETH_account" : "0xd329842c297bdeb97b6df2b06c636673a64aac1d", + "name" : "0xd329842c297bdeb97b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 515149 +}, +{ + "ETH_account" : "0x0fc3d8e6ca08f594f39989d9c6ee8856a048b8f2", + "name" : "0x0fc3d8e6ca08f594f3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60000000 +}, +{ + "ETH_account" : "0xf51b17b2b5762465df7fa462ab5a85fc60bcda56", + "name" : "0xf51b17b2b5762465df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4000000 +}, +{ + "ETH_account" : "0xbb6cd5b2620aca9840648981ca74b7d5c50d74f9", + "name" : "0xbb6cd5b2620aca9840", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1166509000 +}, +{ + "ETH_account" : "0xb1235d2827aebfebee8abdc896844efb9808b749", + "name" : "0xb1235d2827aebfebee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 469000000 +}, +{ + "ETH_account" : "0x9aa3db8bb2f25d4c7579e6938a27eca0dda661f0", + "name" : "soph873jds99ss", + "publicKey" : "SPH7zVGAS6xEeB5C3BEqWqCW2z6VLCwexBhZtq1DR8r12ou2nLPcr", + "balance" : 29674035300 +}, +{ + "ETH_account" : "0x98bed18b9b183920037d5cc49f2ae7bd09d52e18", + "name" : "0x98bed18b9b18392003", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23823015984 +}, +{ + "ETH_account" : "0x54b06d8a28c258dfe2e0ad8606da5bf1688ac537", + "name" : "0x54b06d8a28c258dfe2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5090154000 +}, +{ + "ETH_account" : "0x41439180ef03fa5962be5dae2055b548e1c771d9", + "name" : "0x41439180ef03fa5962", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6875660000 +}, +{ + "ETH_account" : "0x4368da9bc48067977084e0937e7402c3c653dd82", + "name" : "0x4368da9bc480679770", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6176012258 +}, +{ + "ETH_account" : "0xd843598a965b7ba6288199fa3a7b26d6df7d827b", + "name" : "0xd843598a965b7ba628", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 550394000 +}, +{ + "ETH_account" : "0xa03c1a96b96cc151771398593aeb444d71ab5bae", + "name" : "0xa03c1a96b96cc15177", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 380000 +}, +{ + "ETH_account" : "0xc2dcb22c9b9b96e04157e56ca8c07670c1c48ecc", + "name" : "avalanche", + "publicKey" : "SPH7dka5pQcTswiLmy4z9b78ucCz9Ho5Hkjz1dfWoRgsAhtaXvQFY", + "balance" : 11398146000 +}, +{ + "ETH_account" : "0xb220e963979b52cb177e8435b8b2e4b3af6a16c4", + "name" : "0xb220e963979b52cb17", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 165 +}, +{ + "ETH_account" : "0x17baddea4109f011ee5b697e929b63dd5477874d", + "name" : "0x17baddea4109f011ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13 +}, +{ + "ETH_account" : "0x0b2ac2dd832c920a74334fda14d53d5743336faa", + "name" : "0x0b2ac2dd832c920a74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2900000000 +}, +{ + "ETH_account" : "0x383150f50ada35b0ceb89b66b1ca625cdb7eba57", + "name" : "0x383150f50ada35b0ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 425000000 +}, +{ + "ETH_account" : "0x0498d5b87bff4e96980f4f38f1900e62fa267025", + "name" : "0x0498d5b87bff4e9698", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6000000 +}, +{ + "ETH_account" : "0x2a689f10c38964b9d18614395533390ebb1aaa70", + "name" : "cyless", + "publicKey" : "SPH6XtSgCpAHNuMrbdgm9M3GcV9LMVuYPyoxNiF54WCbyygoQQyUg", + "balance" : 568063802 +}, +{ + "ETH_account" : "0xa03d28ce7ab73900604dfa48876b4e484dd68b07", + "name" : "bigtuna", + "publicKey" : "SPH5rN21uP4NVJm1s5U8GC4bkkRvQY9woFS3r2ncxbZ1YjvPSBaz3", + "balance" : 19155752000 +}, +{ + "ETH_account" : "0x7e60ac0214484db7a25b98848319db0600546cec", + "name" : "0x7e60ac0214484db7a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20105647649 +}, +{ + "ETH_account" : "0x6682987032d400c2c169f0afa15a030b01012276", + "name" : "0x6682987032d400c2c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 853060000 +}, +{ + "ETH_account" : "0x8b19b51cd40707b23dcbf47c2ecd7ed72af87534", + "name" : "0x8b19b51cd40707b23d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 68363253 +}, +{ + "ETH_account" : "0x1056766b471f076e925f8193cf7a79fd9405bf90", + "name" : "0x1056766b471f076e92", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 259 +}, +{ + "ETH_account" : "0xabfc9e574e04ec06b601a7162c21ead3331b9b7a", + "name" : "0xabfc9e574e04ec06b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 188869653 +}, +{ + "ETH_account" : "0x236e7f408e80ead0b26067ece4ba198583412735", + "name" : "0x236e7f408e80ead0b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8 +}, +{ + "ETH_account" : "0xdf5fe56e7754569ec1b9ee167d0cca0bcbe80f88", + "name" : "0xdf5fe56e7754569ec1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10486311000 +}, +{ + "ETH_account" : "0x53fc8271f2ad7680781f072a78280c9ccacb84a8", + "name" : "0x53fc8271f2ad768078", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16010775455 +}, +{ + "ETH_account" : "0x37834333483c803fd8e91725cd589860dd264997", + "name" : "0x37834333483c803fd8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x9cf5a128ef479ba12c35f5f9c6b614da4a25f357", + "name" : "0x9cf5a128ef479ba12c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3600000000 +}, +{ + "ETH_account" : "0xc980afe02dd2aa47bdbe435ba7a1c6862428fcf3", + "name" : "0xc980afe02dd2aa47bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 784000000 +}, +{ + "ETH_account" : "0x7d5ff13242a13a1eca4b748366c3d794c1b3b3ec", + "name" : "0x7d5ff13242a13a1eca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 750000000 +}, +{ + "ETH_account" : "0x7d14744332a55cceebb5495321c0355389515c00", + "name" : "0x7d14744332a55cceeb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6000000000 +}, +{ + "ETH_account" : "0x31bbe5428685bcef6ac7593a5230dec5633c4735", + "name" : "0x31bbe5428685bcef6a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1415296000 +}, +{ + "ETH_account" : "0x5cb0d785b4ca3410da39a1872b90dc076c0037e2", + "name" : "0x5cb0d785b4ca3410da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5212800000 +}, +{ + "ETH_account" : "0x496b7356eff38a569c77d1f7cfc247fb0daa6fa5", + "name" : "0x496b7356eff38a569c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28279334 +}, +{ + "ETH_account" : "0x7ab38aa5b88e8c648833d41edf879a61f0726751", + "name" : "0x7ab38aa5b88e8c6488", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1900000000 +}, +{ + "ETH_account" : "0x40b1441f2190dedc9eb4252dea7ed64ba081a60a", + "name" : "0x40b1441f2190dedc9e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 934476695 +}, +{ + "ETH_account" : "0x0e1c5e19ffae741dd4f0a65efe3f289f27176f0d", + "name" : "0x0e1c5e19ffae741dd4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8121000791 +}, +{ + "ETH_account" : "0xb0845159b64e66dfd8ce840031ede8d63ce9dcc8", + "name" : "0xb0845159b64e66dfd8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 789620000 +}, +{ + "ETH_account" : "0x29f6a572b19b645860ccb6504fc733af07683e76", + "name" : "0x29f6a572b19b645860", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 93000000 +}, +{ + "ETH_account" : "0x33547540b00df37cb5321b22e9bd722f1c313766", + "name" : "0x33547540b00df37cb5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10032000000 +}, +{ + "ETH_account" : "0xbe2e00f4996de351a7e2ba2669131f610b65b45f", + "name" : "0xbe2e00f4996de351a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 806349 +}, +{ + "ETH_account" : "0x3cb2d9820ed9da044d4f1189472ca292a94fecea", + "name" : "0x3cb2d9820ed9da044d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 859870116 +}, +{ + "ETH_account" : "0x10e5aeb356e2f2b9da45839b6aeed21dbe041f67", + "name" : "0x10e5aeb356e2f2b9da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 374309000 +}, +{ + "ETH_account" : "0x27a22cb5867a9f9243ff49b26ccacb6513b881ba", + "name" : "pwsphtxjuly", + "publicKey" : "SPH5UTuxUmd1mnwwoXNKN8ZuXGPPjQwshkWLU3AE96JYswh7pLPFm", + "balance" : 6099999642 +}, +{ + "ETH_account" : "0xa797239a63bac0edd8e15167a184cd03721fb73a", + "name" : "0xa797239a63bac0edd8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x9a947be5112d4f086fbb28262f3b33b80f93b904", + "name" : "0x9a947be5112d4f086f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 195151799 +}, +{ + "ETH_account" : "0x9fb010f02f2964405f124a7669416c46930c5eab", + "name" : "0x9fb010f02f2964405f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 426000000 +}, +{ + "ETH_account" : "0x889169f317739dea03bb9bc0f191c0007ab13d72", + "name" : "0x889169f317739dea03", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 188096000 +}, +{ + "ETH_account" : "0x720e765b4dff4740a879127ebe822cdb66ec628e", + "name" : "ishwar", + "publicKey" : "SPH81yVjruVauLVjhgL9EtjeLYxPP1GSXe8C2MSpgKLuz3EjrAB6A", + "balance" : 2430501683 +}, +{ + "ETH_account" : "0xfda7ecb65c813683baeab1cc3ba9110398e9f9ef", + "name" : "petersen", + "publicKey" : "SPH5sGvfMyBbhvX8a4f87x1Zmoj9ak7cFwNfi2Yb32gLJd3AEZMwM", + "balance" : 17676375878 +}, +{ + "ETH_account" : "0x1b42b54857d244478e9999141be2ef8f98749e0c", + "name" : "0x1b42b54857d244478e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 76519 +}, +{ + "ETH_account" : "0x0634020e126bf51aba32020ba01015f776912b4a", + "name" : "0x0634020e126bf51aba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 850000 +}, +{ + "ETH_account" : "0xe54f3737734bd718d95f272479030686d182c987", + "name" : "0xe54f3737734bd718d9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 27 +}, +{ + "ETH_account" : "0x5c859a68caf3e6ddb84c9f39c8358348550243ee", + "name" : "0x5c859a68caf3e6ddb8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1251572330 +}, +{ + "ETH_account" : "0xb5d7fb9820753789a1f3a4b1c7675c6b2bcae4f6", + "name" : "0xb5d7fb9820753789a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1100000000 +}, +{ + "ETH_account" : "0x4e0fdaf6003d0793965d10101351fcfd64faf930", + "name" : "0x4e0fdaf6003d079396", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 83655108748 +}, +{ + "ETH_account" : "0x09bf59982a7633b8a3b251daa0500e0aad095328", + "name" : "0x09bf59982a7633b8a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 206999999649 +}, +{ + "ETH_account" : "0x39366e12ccbe3100c8eaf465835a6ad16b4b2ed6", + "name" : "0x39366e12ccbe3100c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xeb96cba5aacb3d3f871bb7af12b9fa34d213fc81", + "name" : "0xeb96cba5aacb3d3f87", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 772087725 +}, +{ + "ETH_account" : "0xf296a5fafff0afd6c06df68eccbf0bc0a1b294ae", + "name" : "0xf296a5fafff0afd6c0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6300229000 +}, +{ + "ETH_account" : "0x3c3a6ad8dc01d92908fcd14b225251c8b174ac3a", + "name" : "dapvqykpfrmqder", + "publicKey" : "SPH6WTiAqP1A9L529f5xoX1qtTDiq1NKTwAR1tFNwrcocvntxL6Kv", + "balance" : 586417000 +}, +{ + "ETH_account" : "0x92c10dfa7e3a19c2265d8998f74f2738833cd58d", + "name" : "0x92c10dfa7e3a19c226", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 203161708 +}, +{ + "ETH_account" : "0x2e3b368bf5952ae0e3cb606ea8e0ef8cec53adc5", + "name" : "0x2e3b368bf5952ae0e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7516 +}, +{ + "ETH_account" : "0xf3baa89519b174a273dce579b3ad80e975da7ad3", + "name" : "0xf3baa89519b174a273", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2400000000 +}, +{ + "ETH_account" : "0x17e0e32e2dcc804c06d3903b28a71d82eb188bf2", + "name" : "0x17e0e32e2dcc804c06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 787001332519 +}, +{ + "ETH_account" : "0x690b749f7ab54d141227868691d34dd5ac4517fa", + "name" : "0x690b749f7ab54d1412", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0x31af23fe42aadee374c480275923a84a92c839f4", + "name" : "0x31af23fe42aadee374", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4612000000 +}, +{ + "ETH_account" : "0xcc6e0348016e9a0e7d02f400f0832d00698f0b65", + "name" : "0xcc6e0348016e9a0e7d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1503524000 +}, +{ + "ETH_account" : "0x34d8dd14e13d4d6c7cd8a21b4c7ca045890a965e", + "name" : "0x34d8dd14e13d4d6c7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xc8640513a0ff3e964e295b4a510f71be16c1ddf9", + "name" : "0xc8640513a0ff3e964e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3319304376 +}, +{ + "ETH_account" : "0xa61b4481a176d4e53068a9db3e129456f6091af0", + "name" : "0xa61b4481a176d4e530", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000000 +}, +{ + "ETH_account" : "0x8fdd4341fdb50376fd87ab2aa3ee3afad1294847", + "name" : "0x8fdd4341fdb50376fd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 111947 +}, +{ + "ETH_account" : "0x6894e622201e0eaf0ed4fc7b3e35a6e5ccbbe092", + "name" : "cryptostratego", + "publicKey" : "SPH6ELKuuUYxtGTxenzFHku6stNL1Yb8a9kedbfPwx7DctSyZyijc", + "balance" : 30970000000 +}, +{ + "ETH_account" : "0xf0899374e56c818e459f939f14a942a2d7aa6630", + "name" : "0xf0899374e56c818e45", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 133700 +}, +{ + "ETH_account" : "0x1068813dc4c370dc89cfd0843da01a1cc6a4c9a5", + "name" : "0x1068813dc4c370dc89", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1299000000 +}, +{ + "ETH_account" : "0xf1c4f0ccd9cd1e3b7dee7c13705fdddc6c7f291f", + "name" : "grujmh", + "publicKey" : "SPH7PSqoZ69iCpNr6kgnDYNzfnRioayTUUzTjE656kuu3P9As283a", + "balance" : 25033724462 +}, +{ + "ETH_account" : "0x4d7547581fe42271b69495792de202bed9452e77", + "name" : "0x4d7547581fe42271b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14396000000 +}, +{ + "ETH_account" : "0x97d3064ad55d683017ad1ddf2b2a9c367141855d", + "name" : "0x97d3064ad55d683017", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3400000000 +}, +{ + "ETH_account" : "0x0a9347ebf0cd8af6cba7e10385bc1226170c40c0", + "name" : "0x0a9347ebf0cd8af6cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2797400000 +}, +{ + "ETH_account" : "0xc941c9f3b6b50a1cd0d95e39d80f87504bbf4a43", + "name" : "0xc941c9f3b6b50a1cd0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 330000000 +}, +{ + "ETH_account" : "0x3e733bc34e102d6d4b1c5860318d17960c9ceda1", + "name" : "0x3e733bc34e102d6d4b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3084000000 +}, +{ + "ETH_account" : "0x0601285552c72ee4aac4da0e588b8c84be4cc4fe", + "name" : "0x0601285552c72ee4aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 212 +}, +{ + "ETH_account" : "0xdbc52b447bfc3aafbca292a70f607470c34c819b", + "name" : "0xdbc52b447bfc3aafbc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 295346996 +}, +{ + "ETH_account" : "0xd40c771213816b6d9d3efb0a1694774c1fdf6f7e", + "name" : "0xd40c771213816b6d9d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 240000000 +}, +{ + "ETH_account" : "0xf67882f06d25a631ce4853217330c3bbf67e5d08", + "name" : "0xf67882f06d25a631ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6243463883 +}, +{ + "ETH_account" : "0x1f67b4c8192adae330cd1724bb0374e39fe80530", + "name" : "0x1f67b4c8192adae330", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9619 +}, +{ + "ETH_account" : "0x1020f4012dfa3e7d5f3af16cb7cf50b7be581adb", + "name" : "0x1020f4012dfa3e7d5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xdacbf961bca3ff1d0acbf8a22d2b4ce9d5361d48", + "name" : "0xdacbf961bca3ff1d0a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1520967000 +}, +{ + "ETH_account" : "0xc7f8847c08e98ba745f34b919ed02efab30c9f48", + "name" : "0xc7f8847c08e98ba745", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0x3aafdaad368f2343f7fe996aac01e9413be63e69", + "name" : "0x3aafdaad368f2343f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1800000000 +}, +{ + "ETH_account" : "0x227924715a4fb162b2c92bbfeef223299e7e8d81", + "name" : "0x227924715a4fb162b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000000 +}, +{ + "ETH_account" : "0xfedd96261c5ec21058b19ed06ebf2e2df3f06c75", + "name" : "0xfedd96261c5ec21058", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1650000000 +}, +{ + "ETH_account" : "0xc9034dc83418b26785afe70c09fd68231269c683", + "name" : "0xc9034dc83418b26785", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 157000000 +}, +{ + "ETH_account" : "0x28615671d1ceaa38a5bd3a9718bab431ede4af71", + "name" : "deckard", + "publicKey" : "SPH5Xj8ceinPSRW8JFgQJ9ayRSGxYwsszh7uNm4uoASYAYviEfaoG", + "balance" : 574999947 +}, +{ + "ETH_account" : "0x91700ec3744ce5898521776233b0c5df291daf54", + "name" : "0x91700ec3744ce58985", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11518587534 +}, +{ + "ETH_account" : "0xcbdec550ae9354a78fa91a16599ea8c1b1aabb7e", + "name" : "0xcbdec550ae9354a78f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1600000000 +}, +{ + "ETH_account" : "0xb122bf325e1d0d4433e47365b98889cd7558e652", + "name" : "0xb122bf325e1d0d4433", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 213742000 +}, +{ + "ETH_account" : "0x22c576c3742173018958b44f558b58a0c7188117", + "name" : "0x22c576c37421730189", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 598328515 +}, +{ + "ETH_account" : "0x82a4c420b30881b122cc0e59e06ac2c7bfff465a", + "name" : "0x82a4c420b30881b122", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 781802 +}, +{ + "ETH_account" : "0x5706e95097de90304fa86bb1cfcb946d7da5602b", + "name" : "0x5706e95097de90304f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1196657030 +}, +{ + "ETH_account" : "0x4c2f0637182d602782b2f76e8b0c2de5af641e19", + "name" : "sirdaf", + "publicKey" : "SPH5Uj4m4pZZWCAv7ZjmKK3f4H5cUCAR7DqkBaSDLC6W5Mo9xBcoT", + "balance" : 702283580 +}, +{ + "ETH_account" : "0x6007cabc84c61596567e2495fe50a014dad00ed9", + "name" : "0x6007cabc84c6159656", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 697900000 +}, +{ + "ETH_account" : "0x6de6fd99c36b2ba83ebc5020dcab04ade0be3601", + "name" : "0x6de6fd99c36b2ba83e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1644931029 +}, +{ + "ETH_account" : "0x67c557caea794361dfbf517339c55ddaf7b63f0b", + "name" : "0x67c557caea794361df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3100310644 +}, +{ + "ETH_account" : "0x71c82eefe62be800c618e390fa089e78e1896619", + "name" : "0x71c82eefe62be800c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3190162954 +}, +{ + "ETH_account" : "0xd6140ebce749fa95f5b04b40d06b9df50d66db31", + "name" : "0xd6140ebce749fa95f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3484040000 +}, +{ + "ETH_account" : "0xe61d0e36d0aeb6d493f19f400528b07b8c9e7b8c", + "name" : "0xe61d0e36d0aeb6d493", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3379354509 +}, +{ + "ETH_account" : "0x1ccc8800cbf87955ed6faffa5233f6e42af6bfab", + "name" : "0x1ccc8800cbf87955ed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2200000000 +}, +{ + "ETH_account" : "0x61df902b7d8895116d810b2308365e93db8a29fb", + "name" : "0x61df902b7d8895116d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 418879000 +}, +{ + "ETH_account" : "0x973e1e040762d754cb3edec86deb3e147bb68035", + "name" : "0x973e1e040762d754cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 395000000 +}, +{ + "ETH_account" : "0xf30ebfb7f65e3993e9537fdb783c7b9f089074d6", + "name" : "nelmeco", + "publicKey" : "SPH68w2VP8LJftQGJB21osoBdU3maCK3hh1K39EKVKoUG6qcQb49D", + "balance" : 16908084452 +}, +{ + "ETH_account" : "0x8a96dfa09e8f4e76ab8aca330b444a64097d3e8b", + "name" : "asdfghjkl", + "publicKey" : "SPH5rUTvgoWg8bY6SLjzM7fgkXbsqZvy4xaCiWPqT7GGDa6cJh4nC", + "balance" : 3240000000 +}, +{ + "ETH_account" : "0xffa52dcbdfa9d8f4ee16492f5a096237279ebea0", + "name" : "0xffa52dcbdfa9d8f4ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6327701046 +}, +{ + "ETH_account" : "0x59a3fcd881396e99fa5250df7b095f8be3469f3d", + "name" : "0x59a3fcd881396e99fa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1004954966 +}, +{ + "ETH_account" : "0xb2083d709e8f4184c4d14452d3549bbcc0dc52ef", + "name" : "0xb2083d709e8f4184c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xa073df6b0eefb91cb0e0ff847073f7675365fc16", + "name" : "0xa073df6b0eefb91cb0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4841000000 +}, +{ + "ETH_account" : "0x5b9dce54e15bb0a8715c8f56e087c9d2ff11b311", + "name" : "0x5b9dce54e15bb0a871", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1104297000 +}, +{ + "ETH_account" : "0xc2d2fd68d1db60e70f5832a77de561947428523f", + "name" : "0xc2d2fd68d1db60e70f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000 +}, +{ + "ETH_account" : "0x0c529e586109b23479511a82c70c1f7c32526d51", + "name" : "0x0c529e586109b23479", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600000000 +}, +{ + "ETH_account" : "0x030e63772aca122248a1edd296b290e74e33221b", + "name" : "0x030e63772aca122248", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500656312 +}, +{ + "ETH_account" : "0x19870abccfde4f4780d89d82fa858fb88bce474b", + "name" : "0x19870abccfde4f4780", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 550999547 +}, +{ + "ETH_account" : "0x002b040d1dd53c9b737fafb2069217e8ea8c3683", + "name" : "0x002b040d1dd53c9b73", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 764031000 +}, +{ + "ETH_account" : "0x3faba2afe97f48878f74418865555f0693e28518", + "name" : "0x3faba2afe97f48878f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7355000000 +}, +{ + "ETH_account" : "0xb9505ceae606e446d3fea91179211757eb0d4741", + "name" : "0xb9505ceae606e446d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 700000000 +}, +{ + "ETH_account" : "0x4f88219402146755043db8170c64d5f4da23ef0a", + "name" : "0x4f8821940214675504", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3196062796 +}, +{ + "ETH_account" : "0x23ae0c6a34b18d8f0ace998cdd424a70097c8c14", + "name" : "0x23ae0c6a34b18d8f0a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2220000000 +}, +{ + "ETH_account" : "0x21a3e2428424b1d230b75cafa45f43d9cf5a4d50", + "name" : "0x21a3e2428424b1d230", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3380327822 +}, +{ + "ETH_account" : "0xcfebe5f0aaf2613841aa0131c813edbcadf9a89c", + "name" : "0xcfebe5f0aaf2613841", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4731364516 +}, +{ + "ETH_account" : "0x46a0b0e934e176493ce57be2904fa6a2984b1ed4", + "name" : "babbafdfr42", + "publicKey" : "SPH6q2Atv9SPKxXEDoiD5KLugJgNWPaWikmwSxkrbKgeeK3gUkBUM", + "balance" : 12286523676 +}, +{ + "ETH_account" : "0x7d1375eec52502dc7203ccea395e6bb9afb43005", + "name" : "0x7d1375eec52502dc72", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3107000000 +}, +{ + "ETH_account" : "0xef6f7bd185f2bd479870a560f54ed2109db23a20", + "name" : "0xef6f7bd185f2bd4798", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 700000000 +}, +{ + "ETH_account" : "0x2872f2ffdd297c2583199b023c77c1212df308a9", + "name" : "0x2872f2ffdd297c2583", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0x6b8f546926d84de6a9d25eafc153c5a4f04b3a05", + "name" : "0x6b8f546926d84de6a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 41000000 +}, +{ + "ETH_account" : "0xc61463c8b749f3f007cb77b4b175d85b9f35d29d", + "name" : "0xc61463c8b749f3f007", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 125000000 +}, +{ + "ETH_account" : "0x1701fdc0516f5dd696245c53dbaf37af51381cf8", + "name" : "0x1701fdc0516f5dd696", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24739999680 +}, +{ + "ETH_account" : "0x93488e0ff0ff66893becddd74b0037fdc677da5f", + "name" : "0x93488e0ff0ff66893b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 802 +}, +{ + "ETH_account" : "0xb945c972d5074f6fa3e16ac17c5244131b03f693", + "name" : "0xb945c972d5074f6fa3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0xb7f477d1cd02e052f4346789a494ef2bf05a6bc2", + "name" : "0xb7f477d1cd02e052f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1216000000 +}, +{ + "ETH_account" : "0xeaf0bcdf7686d99d843b2fb41e498f539c2ec9bb", + "name" : "0xeaf0bcdf7686d99d84", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3922560842 +}, +{ + "ETH_account" : "0x5c0e8c3780de4d4a49d7def0e70960fd32abc62a", + "name" : "0x5c0e8c3780de4d4a49", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1215000000 +}, +{ + "ETH_account" : "0x97f3c5fe7c948baba308319bfc03abfe2ea4879b", + "name" : "0x97f3c5fe7c948baba3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1215000000 +}, +{ + "ETH_account" : "0x9ffaa21675ce316467fb9d89c0fbd0e422b150bd", + "name" : "0x9ffaa21675ce316467", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1215003366 +}, +{ + "ETH_account" : "0x1e1d1d6648778d1983d65075e6b5bb62d4d31ef8", + "name" : "0x1e1d1d6648778d1983", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3250000000 +}, +{ + "ETH_account" : "0x93abcdf77dd9b1f22efe9519616d4604a7c416a7", + "name" : "0x93abcdf77dd9b1f22e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3281111800 +}, +{ + "ETH_account" : "0xe7d062f4a219ffeb0b1eb929688173e204b41fc1", + "name" : "0xe7d062f4a219ffeb0b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0x75df5ba66b341afaada0e4e1abc0a3d4245615c2", + "name" : "0x75df5ba66b341afaad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0x903a51cad745e1dc171b0717046b2055650c715e", + "name" : "0x903a51cad745e1dc17", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 671804612 +}, +{ + "ETH_account" : "0xf27411ff167ae8694dcf9f6f929b501a3d4f98e4", + "name" : "0xf27411ff167ae8694d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0x23eb609c51462c201a4a71203bc061f1e0750ac8", + "name" : "0x23eb609c51462c201a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 276000000 +}, +{ + "ETH_account" : "0x7458ce221e05ffee27eb7dba0984c6ca63a780cb", + "name" : "0x7458ce221e05ffee27", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0x74bcd64f0332678b9828232baca7aea88a3175f0", + "name" : "0x74bcd64f0332678b98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0x46574b3eee60467f047ed853ff68ffd83e7fe26c", + "name" : "0x46574b3eee60467f04", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 247245834 +}, +{ + "ETH_account" : "0xcd1c4adff1e48c27cce1c7039e8f5f5c0269c9f0", + "name" : "0xcd1c4adff1e48c27cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x941569ce496b7aefa449e2bba9055e77638a8587", + "name" : "0x941569ce496b7aefa4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 225000000 +}, +{ + "ETH_account" : "0x4154947fcf9f6b4eb6598f9d14b8b0ff6b7793c2", + "name" : "sophiatxdavid", + "publicKey" : "SPH5FY5eBzYY794Uwx716s1z9Li2zUajCJMoLL5mUjg6irLybKzXg", + "balance" : 15247830815 +}, +{ + "ETH_account" : "0xfa5868aa500122e78851dca785867d3357328e91", + "name" : "0xfa5868aa500122e788", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0xa369d5026865d345184ff86caed29c118a1566a4", + "name" : "0xa369d5026865d34518", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0xd74064e6a31532c6f2f0066944eb3c24d48e35a3", + "name" : "0xd74064e6a31532c6f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11593550000 +}, +{ + "ETH_account" : "0x788a38c4f97f43a65affef38a47827ccded610ee", + "name" : "0x788a38c4f97f43a65a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0x55f6032023b31d9eb361be4382791a6d5e9add17", + "name" : "0x55f6032023b31d9eb3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3734532134 +}, +{ + "ETH_account" : "0x1b1724a1c65943218581950dd470374cb7f7dfc0", + "name" : "0x1b1724a1c659432185", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100730000 +}, +{ + "ETH_account" : "0x07f3c5f5f60edd9d966b382d4af84eef6904881e", + "name" : "0x07f3c5f5f60edd9d96", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xe9bbebdc0f1f386ff1c12269e7cda9beb391370b", + "name" : "0xe9bbebdc0f1f386ff1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 542000000 +}, +{ + "ETH_account" : "0xb546389b51162199a3ddbc658d22bad3fe62d44f", + "name" : "0xb546389b51162199a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3263000000 +}, +{ + "ETH_account" : "0xfe6c152a5b3d47174d60a87895da06971c844918", + "name" : "0xfe6c152a5b3d47174d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 543000000 +}, +{ + "ETH_account" : "0x0257564dee167a82334a7bdd09150b637aa6da38", + "name" : "0x0257564dee167a8233", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 149999999 +}, +{ + "ETH_account" : "0xaa39128ab181c3ff9b5cf27d197f7c196aeef7ac", + "name" : "0xaa39128ab181c3ff9b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0xd26e6a1e53a25ee30e2dc5e8ca3aa2f06c3309bb", + "name" : "frankgadea", + "publicKey" : "SPH7RV4wU2GnSdtsMzWAxVMeHdM4v33mshhfZcdW3Hf96DvLHaeaA", + "balance" : 50038181502 +}, +{ + "ETH_account" : "0x92ae6d5148a9057fd834f65255130a86caae0825", + "name" : "0x92ae6d5148a9057fd8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0xe6c8847f60c54f0ab450fa30c2deadc715f49db3", + "name" : "0xe6c8847f60c54f0ab4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 765000000 +}, +{ + "ETH_account" : "0x9e160b5df64d7567c9ef0989f203ede18ab727c6", + "name" : "0x9e160b5df64d7567c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0xb688f534ee0d640993d6694162bafb37e88fa655", + "name" : "baldrickstx", + "publicKey" : "SPH5mqLZEYUkX7qjLV9w2XLNP7RMhHGgEErcFj6z1kJyB3sAe3YZT", + "balance" : 4543660216 +}, +{ + "ETH_account" : "0x0347991ace9375425c7592bd3b34559c895dbfdd", + "name" : "0x0347991ace9375425c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2501856000 +}, +{ + "ETH_account" : "0x59c9ddc066099596caa05545fa055ea8142c72dd", + "name" : "0x59c9ddc066099596ca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 112000000 +}, +{ + "ETH_account" : "0x8f0be6db8d7d2506bb4d9aa141dcd41ba43e7d07", + "name" : "0x8f0be6db8d7d2506bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 335000000 +}, +{ + "ETH_account" : "0xfb7841ac011090acd01aff299582c09079fffb1b", + "name" : "0xfb7841ac011090acd0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xb93727624334d96240f3fad171a07a42ec943c64", + "name" : "0xb93727624334d96240", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16000000 +}, +{ + "ETH_account" : "0xb9a095be4ce8a007eb32bbca4f5361fa670ce352", + "name" : "0xb9a095be4ce8a007eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3035000000 +}, +{ + "ETH_account" : "0x3f0a2494f67c06dce9f30b343ce77a970c1f6a6a", + "name" : "0x3f0a2494f67c06dce9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1080048000 +}, +{ + "ETH_account" : "0x4b912af55985f926d3bb258d7fc268b8a3bd66bf", + "name" : "0x4b912af55985f926d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7606000000 +}, +{ + "ETH_account" : "0xf8c4719498b0956ec87c2e11848ac3862276c460", + "name" : "sducoulombier", + "publicKey" : "SPH7mXXXjoC6gtfq7QGDvzVmBSx7Fmr8Z4JPFzxXTbCiBiAZhJVoe", + "balance" : 1220000000 +}, +{ + "ETH_account" : "0x307f4063768dcd047745746cb2b4467d626dd779", + "name" : "0x307f4063768dcd0477", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 170000000 +}, +{ + "ETH_account" : "0x6ec59425a6427d567756829c55f71a87b4285219", + "name" : "0x6ec59425a6427d5677", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xe6f37cfc7abd85d4cf97dfb9c274a1860bc14ec5", + "name" : "0xe6f37cfc7abd85d4cf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5144000000 +}, +{ + "ETH_account" : "0x2879148fd153f0e9768c430c7bee6ffdd21ca544", + "name" : "0x2879148fd153f0e976", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2400000000 +}, +{ + "ETH_account" : "0x6a164f948c8d3834a9dd2afedb7798f340135302", + "name" : "0x6a164f948c8d3834a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 92 +}, +{ + "ETH_account" : "0xafd4850c3a0c9157b076381bf1e1d5fc06a7baf7", + "name" : "0xafd4850c3a0c9157b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0x79e161ea7ac5d88040bc6564b9fafcbd11bcca38", + "name" : "0x79e161ea7ac5d88040", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450000000 +}, +{ + "ETH_account" : "0x2f8b4dcfa700fbc9d2ad1b81eefa4e30970b069c", + "name" : "jensschneider", + "publicKey" : "SPH7hqqx6uzXL5RQZsDm6Ekhgh1Sdm9ZS9PoTwB3o64CHW6Ad1Fbg", + "balance" : 2718750718 +}, +{ + "ETH_account" : "0x9b9fe21f4c4ba2f8d6115ea0506c743e1d05d24a", + "name" : "0x9b9fe21f4c4ba2f8d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3172000000 +}, +{ + "ETH_account" : "0x3a08fd108c27a7b094d03cac41d17310dfdeb028", + "name" : "0x3a08fd108c27a7b094", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0x60b470812b36d7090bb77f9267c7778cbee92ee4", + "name" : "0x60b470812b36d7090b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1005000000 +}, +{ + "ETH_account" : "0xb97404caca27d3935ba43fea004227f1ef4d0977", + "name" : "0xb97404caca27d3935b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1189554731 +}, +{ + "ETH_account" : "0xb9619f2876a09dd7f9ba52edf2c283adf95d4cc6", + "name" : "bitbiker", + "publicKey" : "SPH6bi3MpavaxL3RwpCTmvzyFDQiwcxKNEMxxaXGZvstF3qHdzXzb", + "balance" : 9538792711 +}, +{ + "ETH_account" : "0x65b0fa64e349979399c7cf2771c7b385ecc60bec", + "name" : "0x65b0fa64e349979399", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5422958000 +}, +{ + "ETH_account" : "0xc884d280e21fcb2d9c04f7dfd78d469f56980952", + "name" : "0xc884d280e21fcb2d9c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7223649000 +}, +{ + "ETH_account" : "0x57a6d062c1bd4982c90b109a896073e1c3ae985f", + "name" : "0x57a6d062c1bd4982c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66492220252 +}, +{ + "ETH_account" : "0xa0b0a8ef935c7d34c9f94367c44a6c0d0cd3bf3c", + "name" : "0xa0b0a8ef935c7d34c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16800115033 +}, +{ + "ETH_account" : "0x1a4fe705a2cbff3b32ca9c15ba2d36bfefdc427b", + "name" : "0x1a4fe705a2cbff3b32", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 17254741 +}, +{ + "ETH_account" : "0xa521f894a03e12324c604cfab1b81fce78a9bed9", + "name" : "lounmdid", + "publicKey" : "SPH6xGvZ7Yo2t6deKLipLxgXAnSGcLyGUgDNsJrKbTk9G5abHhNJw", + "balance" : 2745113000 +}, +{ + "ETH_account" : "0x34dc2222a9dec1e7248a2593a23b2574b8625b9b", + "name" : "0x34dc2222a9dec1e724", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 555000000 +}, +{ + "ETH_account" : "0xdf7c921764361b1b6a2c9f1bfc35c193dae1cd22", + "name" : "0xdf7c921764361b1b6a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 528729 +}, +{ + "ETH_account" : "0x3ad0e31e0f38fe1ef5189df3b45f93f5fc2fa1e2", + "name" : "0x3ad0e31e0f38fe1ef5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 280000000 +}, +{ + "ETH_account" : "0x26761da968ec96f31ed5a7bd5b90841007adbb7d", + "name" : "0x26761da968ec96f31e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0xf4381d04158f4809ce2324f48c465fe2ba79a884", + "name" : "0xf4381d04158f4809ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3135860137 +}, +{ + "ETH_account" : "0x9fb64d675d4ed9e4c6507312ba955423884b17a0", + "name" : "0x9fb64d675d4ed9e4c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24444085000 +}, +{ + "ETH_account" : "0xd8de1df5795ebda7e3a7dc6cd24764a8aaf5b93b", + "name" : "0xd8de1df5795ebda7e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1221096000 +}, +{ + "ETH_account" : "0x6a755da866e1e94e5afa68103ea6396f8e496a01", + "name" : "0x6a755da866e1e94e5a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 366000000 +}, +{ + "ETH_account" : "0x6dd2505c4d9dcae8bdf6503964af4c65de6815d9", + "name" : "0x6dd2505c4d9dcae8bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 409186239 +}, +{ + "ETH_account" : "0x7e5235fdc908aa99fc6ac1173a5f746ff00d5d2f", + "name" : "0x7e5235fdc908aa99fc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 760000000 +}, +{ + "ETH_account" : "0x8d7853b777947a18cb493f3f129a199d84803623", + "name" : "0x8d7853b777947a18cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1201000000 +}, +{ + "ETH_account" : "0x0098336cf7c2266a6145ef3d6eaf82634049d979", + "name" : "0x0098336cf7c2266a61", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x69bd53d34dfb8479a078d1b3def7085188ab07ee", + "name" : "0x69bd53d34dfb8479a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28835765620 +}, +{ + "ETH_account" : "0x89c3b752e71c446bf4a7c413884be02a15e56ef8", + "name" : "0x89c3b752e71c446bf4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28835400000 +}, +{ + "ETH_account" : "0x5882830359854149a68cfcf9c6e0bb182b995e9d", + "name" : "0x5882830359854149a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3267080000 +}, +{ + "ETH_account" : "0x7292975c1820ea936a06d8a72d334eb7e8b23143", + "name" : "wallet", + "publicKey" : "SPH8LyfNzL1vAVUdbkbQ5p2cQ5gy4e7r8DdJfaKCMhSjsNNazNea9", + "balance" : 519403142423 +}, +{ + "ETH_account" : "0x5d7e6cfc5edf8978a05ccc58e8372956603fe99a", + "name" : "0x5d7e6cfc5edf8978a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7556 +}, +{ + "ETH_account" : "0x26c032b50a6d5d5ae3b6c49291a1837cb4c6fe3d", + "name" : "0x26c032b50a6d5d5ae3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1916522710 +}, +{ + "ETH_account" : "0x3e07bd77763b9ea56ce9f3fb561d275a7c7d40c5", + "name" : "0x3e07bd77763b9ea56c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 778966645 +}, +{ + "ETH_account" : "0x19e92176ebc4318e7041e9d0aad4d1a8eda14f72", + "name" : "0x19e92176ebc4318e70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 510194000 +}, +{ + "ETH_account" : "0x23a803d1e17053824792444fa980cc31c341e124", + "name" : "0x23a803d1e170538247", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2014007273 +}, +{ + "ETH_account" : "0xed994f817dea32223c816c2d3d99c72db1a5d8ec", + "name" : "0xed994f817dea32223c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 587768653 +}, +{ + "ETH_account" : "0x34f25b47ec8d1d8d523d4a6287b659e7c640f0b0", + "name" : "0x34f25b47ec8d1d8d52", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4900000000 +}, +{ + "ETH_account" : "0x9f35a9f83bfdb097c1161967309085d168345b9b", + "name" : "0x9f35a9f83bfdb097c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1877950913 +}, +{ + "ETH_account" : "0xc6d54a93dc4e2bfabdbae4b8f99355be5c968f99", + "name" : "0xc6d54a93dc4e2bfabd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 380000000 +}, +{ + "ETH_account" : "0x188e38b94048b1999b082b9191231f2cddc3589b", + "name" : "0x188e38b94048b1999b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 54507000 +}, +{ + "ETH_account" : "0x6147056e29c147f801db37477cb61482a0adf088", + "name" : "0x6147056e29c147f801", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 331000000 +}, +{ + "ETH_account" : "0xa6221682cf4dd31ea747f547112b6f181c9cdf7d", + "name" : "0xa6221682cf4dd31ea7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 918562 +}, +{ + "ETH_account" : "0xa2cc76db0672ccdb41ae51ff423d830f6f05e46e", + "name" : "0xa2cc76db0672ccdb41", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 479554000 +}, +{ + "ETH_account" : "0xd7891f4f74dbff04f9f5720e5f0cb04f5f795351", + "name" : "0xd7891f4f74dbff04f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 220000 +}, +{ + "ETH_account" : "0xba7c2a47abb9b4a65d3d986187fabda13e5a0aab", + "name" : "0xba7c2a47abb9b4a65d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 120572819090 +}, +{ + "ETH_account" : "0xfb746cd9499e0aa4986caac9f8a1239a35b691d0", + "name" : "0xfb746cd9499e0aa498", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4038100000 +}, +{ + "ETH_account" : "0xbe17f74824e45b74127116a186200962b754686c", + "name" : "0xbe17f74824e45b7412", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0xbebca907e201675792c809e2fa109f2f31c1cd06", + "name" : "0xbebca907e201675792", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 360000000 +}, +{ + "ETH_account" : "0x545e1b7b26c826f91e3ccf3ed04357d3cbbc8895", + "name" : "0x545e1b7b26c826f91e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0xcc9c1818a8de032145ba1ecc36b7693cfab79857", + "name" : "0xcc9c1818a8de032145", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0x5866c98a466c7ff469e36d97db5cb1bebf05ac09", + "name" : "0x5866c98a466c7ff469", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0xb932ea5132add3af06cf64a4b876192925d047db", + "name" : "0xb932ea5132add3af06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 153679 +}, +{ + "ETH_account" : "0x494cbae2654d1eda14d725627b1b3b1973a107c9", + "name" : "0x494cbae2654d1eda14", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 371000000 +}, +{ + "ETH_account" : "0xd399d795f218275b73429d696ecc20b40a0dda1f", + "name" : "0xd399d795f218275b73", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2728 +}, +{ + "ETH_account" : "0x36a1139de495d9ff5e6404c733fd92b7d24dc9a2", + "name" : "0x36a1139de495d9ff5e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0xe7d7bfc91531932eb57457b9e727d969931a4633", + "name" : "0xe7d7bfc91531932eb5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3404000000 +}, +{ + "ETH_account" : "0xf69767d9825e75732cb8449215ab2f1724a7c03c", + "name" : "0xf69767d9825e75732c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3827386000 +}, +{ + "ETH_account" : "0xc8f5aa89720dbd05ea78f3f45697699841f0b35e", + "name" : "0xc8f5aa89720dbd05ea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0x2750c6c62dee19b01b718c7e7cbf94305aee7864", + "name" : "0x2750c6c62dee19b01b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8500000000 +}, +{ + "ETH_account" : "0xdcbc23809eb774dfed5be5e9ee2b380cda1e300f", + "name" : "0xdcbc23809eb774dfed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 419 +}, +{ + "ETH_account" : "0x31210e0f0709fd4ac8a7cc0e712dbd893216e566", + "name" : "0x31210e0f0709fd4ac8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4861003366 +}, +{ + "ETH_account" : "0x229ff289b1cdf9b72305d89c402739356e354da7", + "name" : "0x229ff289b1cdf9b723", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 266000 +}, +{ + "ETH_account" : "0x17e31bf839acb700e0f584797574a2c1fde46d0b", + "name" : "gosophiatx", + "publicKey" : "SPH5i4YEFqubARwoVcoGrqej7PaYSJu1383oa6jjkGFb5kQ4Fmm42", + "balance" : 1008339381 +}, +{ + "ETH_account" : "0xd89f43cc48b9c11c111a34143e5ea4a051d33f99", + "name" : "0xd89f43cc48b9c11c11", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xc3d3ccecf1c95d67b0a919f801736a58b5a89e41", + "name" : "0xc3d3ccecf1c95d67b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 91552920 +}, +{ + "ETH_account" : "0x7635023a4ebdf251f2ef171d8c389cbbcb9f1e17", + "name" : "0x7635023a4ebdf251f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2482000 +}, +{ + "ETH_account" : "0x06984541e06df0cfb98a50e727880376eba551fd", + "name" : "0x06984541e06df0cfb9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 316479000 +}, +{ + "ETH_account" : "0xfb9938b35fc18b6193e7457db53a390c9cc1e3cd", + "name" : "0xfb9938b35fc18b6193", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3617079685 +}, +{ + "ETH_account" : "0x6f002996c194a1b3adc00f40b4854d0ec4c56925", + "name" : "test", + "publicKey" : "SPH7XdURLfZ581rkG8dovPpwZBzKJaD9nHyMpuZBHPmSZcCRHucZw", + "balance" : 1066849880 +}, +{ + "ETH_account" : "0x6957997bc37b1edfd2fc5dde5f35a3503e90f39e", + "name" : "robert", + "publicKey" : "SPH5JxaD3CZYTNEP4qiwFtkmmqHPNMTsf3poTehfgasMuANgcA56f", + "balance" : 649080038 +}, +{ + "ETH_account" : "0xa01a0ff9fda97eb43067edc7bbb9ea63d4de22bd", + "name" : "0xa01a0ff9fda97eb430", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 170000000 +}, +{ + "ETH_account" : "0xe3c8662618aaf33c6677843d69ab042313f34d31", + "name" : "0xe3c8662618aaf33c66", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 201693000 +}, +{ + "ETH_account" : "0x5593d96086acecd4341a97709fc3b1a86694f0b8", + "name" : "0x5593d96086acecd434", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1125000000 +}, +{ + "ETH_account" : "0xbecc06630c323e32a081a612d6324342980f2c74", + "name" : "0xbecc06630c323e32a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xd320869ab292ca9d02a4b57c0ffbd796313a79d0", + "name" : "0xd320869ab292ca9d02", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 542761957 +}, +{ + "ETH_account" : "0x281c53f171a2257403b5b5a3a2ad4598274c5b8d", + "name" : "0x281c53f171a2257403", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 642853167 +}, +{ + "ETH_account" : "0x4298bc13fe7e92ceb9722cf182273661fc9b4cee", + "name" : "0x4298bc13fe7e92ceb9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 266 +}, +{ + "ETH_account" : "0x12b08d4ff4824e0ca9e802a607ebac0e6c36f75b", + "name" : "0x12b08d4ff4824e0ca9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 61725000 +}, +{ + "ETH_account" : "0x34f1426ed4f7955594a5e5dcc3ffec0604805d78", + "name" : "faridsa", + "publicKey" : "SPH7tU1rGrdP7YkfWccrgDD7CX95qojJqQqHm18k1WGLLL77z7gGL", + "balance" : 20005000000 +}, +{ + "ETH_account" : "0x241d21c80f5b85b0d63aeafd069555efd23413e0", + "name" : "0x241d21c80f5b85b0d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1260000000 +}, +{ + "ETH_account" : "0xa6ce28fcf07af19801c9acdfa2ab2f0f72cdf53a", + "name" : "0xa6ce28fcf07af19801", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 420000000 +}, +{ + "ETH_account" : "0xfc1e74a4c1bc9df5171e28c06787777d00282e03", + "name" : "0xfc1e74a4c1bc9df517", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1100000000 +}, +{ + "ETH_account" : "0xb2676b51c834dec8be28eb709f0a9522f82ef288", + "name" : "0xb2676b51c834dec8be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xd96ce638daa98178bfe54b4bfea4a75040be6ed4", + "name" : "0xd96ce638daa98178bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x7d68806f4070e6656d90b76e355f51b8a9e4fe39", + "name" : "0x7d68806f4070e6656d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x1e650a3e347a732b0e6f92a69fdcb6c36edd6ced", + "name" : "schmu", + "publicKey" : "SPH4x4M4Jkrvh2qz7iZszWPqmt53rU8GRzsMXLYkKUQf3BnGCKheh", + "balance" : 14100000000 +}, +{ + "ETH_account" : "0x29a1712ff77598dfaa88171e36ba47db3a70731a", + "name" : "0x29a1712ff77598dfaa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3250000000 +}, +{ + "ETH_account" : "0x748e47ba602c3c15b0b813779ef6f4e8d2cb158d", + "name" : "hectorrescuesoph", + "publicKey" : "SPH7XaJcMK7Gnc1BaXxn9y5dCv4csDn4QRn9tWrZw9S5tnWWJPh8y", + "balance" : 4107400000 +}, +{ + "ETH_account" : "0x61e4bdb9449ce8fe96cbab160b25a119d2282e43", + "name" : "allenboss", + "publicKey" : "SPH7Gixr6cinLoUgaprtSDbo8oQTC2c6oi3qYSGhn9hhbEfBrxNd8", + "balance" : 758540582 +}, +{ + "ETH_account" : "0x84c8118e1ab03224a734432d0968b6ad1511e211", + "name" : "0x84c8118e1ab03224a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 459999863 +}, +{ + "ETH_account" : "0x086f51fced9ff6c742d706c319112359e3658b08", + "name" : "ilveronico", + "publicKey" : "SPH6sctjjUi3F3FY7DMbjtRBx44TetXuJfTe1E9jdEVstv6Z4a7WT", + "balance" : 1263153000 +}, +{ + "ETH_account" : "0x5045b2f70f96a1bd17f7db747be068e221284ab9", + "name" : "aleksandartodor", + "publicKey" : "SPH6x45go9pVp6Gf5ScQbTRC96Mg8LqwqdkoCaRmCTPCrixYSmwwd", + "balance" : 429999965 +}, +{ + "ETH_account" : "0xca694dc9dee58a1cbacdf7ef145c29564bbda377", + "name" : "shenlolsophia", + "publicKey" : "SPH5KdvVq5MMJpRPqTmDHGkE72CrodyJdZhFpa8bRVh6kiM9xXhMU", + "balance" : 2100000000 +}, +{ + "ETH_account" : "0x0a16b06f71cbd7ae5a1728a7417da2791a65705e", + "name" : "0x0a16b06f71cbd7ae5a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2172639884 +}, +{ + "ETH_account" : "0x29503a19b689bbce713358da1ebd880936818239", + "name" : "0x29503a19b689bbce71", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3425000000 +}, +{ + "ETH_account" : "0x9bedfcfb2d32e029e67f79adc4999eda829747db", + "name" : "rohitsphtx", + "publicKey" : "SPH5eeov9GqWs5oMafstz3G3ajJ71K8WHnvEKD3oTJAR58xkZMzyt", + "balance" : 2014752272 +}, +{ + "ETH_account" : "0x678047cae374401fd4a193a5cfe9e8343c97d0c1", + "name" : "0x678047cae374401fd4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1307333606 +}, +{ + "ETH_account" : "0x57f5e938781f298aae386528d101bfe3998a141e", + "name" : "0x57f5e938781f298aae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000 +}, +{ + "ETH_account" : "0xd171ac2c39f09c712fe8f0aa5e4a52c3696b82ba", + "name" : "0xd171ac2c39f09c712f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 918 +}, +{ + "ETH_account" : "0x85ffde9ca8c90a037c28054f64ebb6cc8680c3d6", + "name" : "0x85ffde9ca8c90a037c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x8f29dbbcfdeaa3b02cfe92c186b6a6311e2fb99f", + "name" : "0x8f29dbbcfdeaa3b02c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1824592129600 +}, +{ + "ETH_account" : "0xc16f8834d4a38ebd7d38f30d42c6147828661dbe", + "name" : "0xc16f8834d4a38ebd7d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1189145000 +}, +{ + "ETH_account" : "0x69ecf75aa4cff60d9021932f517327276d6931d0", + "name" : "0x69ecf75aa4cff60d90", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x90b501708e2afc87c8fbbad3ff23435258250557", + "name" : "0x90b501708e2afc87c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5037146000 +}, +{ + "ETH_account" : "0xe4686841ce6498b6428ff600f2fda1b04c39ba7f", + "name" : "0xe4686841ce6498b642", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1100000000 +}, +{ + "ETH_account" : "0x2613244e49082636953774118b89caff67809de4", + "name" : "0x2613244e4908263695", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x125045d69207e1f8257139c1232ed5a6186fe767", + "name" : "0x125045d69207e1f825", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4212000000 +}, +{ + "ETH_account" : "0xf991052e52bedcf6873cc99327aa92ed673c5297", + "name" : "0xf991052e52bedcf687", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 835000000 +}, +{ + "ETH_account" : "0x3e2dd16f1ab10bfde8aaf789dac2a1eee66e5b47", + "name" : "youngsandwich", + "publicKey" : "SPH6nrJ6mSypKhs6YA2BJHJFdrCnxJFVjRJPc2xFhQtC1nR8mEnLV", + "balance" : 3246990209 +}, +{ + "ETH_account" : "0xe11acbbd777fc7170077cf7732ed7197d5133cbe", + "name" : "0xe11acbbd777fc71700", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1920000000 +}, +{ + "ETH_account" : "0xa5f5368a107abede525b89d69b9f3560bd8cf9fe", + "name" : "0xa5f5368a107abede52", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4383010099 +}, +{ + "ETH_account" : "0x795d748d9850dac723baf2b49f857b6fe7ee4cf3", + "name" : "0x795d748d9850dac723", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1635000000 +}, +{ + "ETH_account" : "0x5580b352cc8f0466f7e3419f7760e4ed151f5ea9", + "name" : "0x5580b352cc8f0466f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 441635742 +}, +{ + "ETH_account" : "0x47590e87b48f49149e8cdb934605617a42c38dcf", + "name" : "0x47590e87b48f49149e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53888892100 +}, +{ + "ETH_account" : "0xb528d2cafd2cc99fde613088fc7a7bde1cf3cb45", + "name" : "0xb528d2cafd2cc99fde", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13983000000 +}, +{ + "ETH_account" : "0x90f080ae4218a4c088bbf00a74af9850d1773366", + "name" : "tothemoon", + "publicKey" : "SPH6jCXBqNBBULcFcVTx3ESz2SMHbGj43k4YvB7BQz9zSRePTY2b4", + "balance" : 2601000000 +}, +{ + "ETH_account" : "0xf9d6f1d6b0d8ab30a78057c52badebc87cc4342d", + "name" : "0xf9d6f1d6b0d8ab30a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x194685be538a05ada38ce2bb2c1e70c605cea9cb", + "name" : "0x194685be538a05ada3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3760088800 +}, +{ + "ETH_account" : "0x17c6895fe8987ee19c28e864e099c21f9ef4b43c", + "name" : "0x17c6895fe8987ee19c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x40f69e9a17f633ec4e941c2edbf6176cabf8acda", + "name" : "0x40f69e9a17f633ec4e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40777412 +}, +{ + "ETH_account" : "0x495ea1204dbdfa6129beb12678563929734b6e05", + "name" : "0x495ea1204dbdfa6129", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 321166893 +}, +{ + "ETH_account" : "0x181232ea6fa4a4d2683eafeda6abf39498cd2da9", + "name" : "0x181232ea6fa4a4d268", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 95000000 +}, +{ + "ETH_account" : "0x7b4fc488eda7d83548daacda783327630bb6fc33", + "name" : "0x7b4fc488eda7d83548", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1077741000 +}, +{ + "ETH_account" : "0x2f1df99050876ccf5eb533f9b03e195a69636e12", + "name" : "0x2f1df99050876ccf5e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xec8d98579bd032df76cd780da9246b6bce2cdf66", + "name" : "0xec8d98579bd032df76", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 720000000 +}, +{ + "ETH_account" : "0xbcb55f1e8ce368119b2c3539beb9cfe9833cc688", + "name" : "0xbcb55f1e8ce368119b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50653838 +}, +{ + "ETH_account" : "0x72705657a219aaa87e5b7223cc79cd15e33e18af", + "name" : "vsh", + "publicKey" : "SPH7JqowWR8bvLz6UaDXLrzjfD4n2JAwyv5n7ct7ivX7o57wefHav", + "balance" : 540000000 +}, +{ + "ETH_account" : "0x6b6ca7b163414ea50c39c44bbbdf4adbbe7ac881", + "name" : "0x6b6ca7b163414ea50c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2154404762 +}, +{ + "ETH_account" : "0xbf14b39c54206f73d1601ca454ca2239866f7659", + "name" : "0xbf14b39c54206f73d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4459457000 +}, +{ + "ETH_account" : "0x1e6dbe2011b853d681672e1db9125aea6dbb349a", + "name" : "0x1e6dbe2011b853d681", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 743701000 +}, +{ + "ETH_account" : "0x06e79b78c62fa2c36fa7d0a5c0c572750a4f79e7", + "name" : "0x06e79b78c62fa2c36f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xea70a023c553ae129b5674cc99de79391a40971c", + "name" : "mimisophrick", + "publicKey" : "SPH5sE3MjNX5obv7QRXaeY7csGeB56ndwjqNExHZD7d9Cqp7gCAik", + "balance" : 2840626130 +}, +{ + "ETH_account" : "0xbd3a140b8177ae302c7e9d783d658f1d9b38f5ea", + "name" : "0xbd3a140b8177ae302c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 629627103 +}, +{ + "ETH_account" : "0xd09085d4b57eeacd02b14f9f3a1cec349af9a8ff", + "name" : "0xd09085d4b57eeacd02", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10248790660 +}, +{ + "ETH_account" : "0x3ca47678a0413a5aebeb765870d7a9c8152b8b47", + "name" : "0x3ca47678a0413a5aeb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1238765000 +}, +{ + "ETH_account" : "0x35a969811646c597fce040b03a7df802b7b0d6a5", + "name" : "0x35a969811646c597fc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 225000000 +}, +{ + "ETH_account" : "0xd8e1cb737bd1608ec9ee19e8d00f2d9e020fa6d3", + "name" : "0xd8e1cb737bd1608ec9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 160000000 +}, +{ + "ETH_account" : "0x6043475cfb8c7fecdc2bb4584dd69aac042ae502", + "name" : "0x6043475cfb8c7fecdc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 538870625 +}, +{ + "ETH_account" : "0x2a574c2cdbd3371b77d206d8e7808a7d5eaf496c", + "name" : "0x2a574c2cdbd3371b77", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12000000000 +}, +{ + "ETH_account" : "0x3b1eb6f763825c4c8d678ae1b0b4dd5d3c9c6899", + "name" : "0x3b1eb6f763825c4c8d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8623000000 +}, +{ + "ETH_account" : "0x02c6d6c7f8e3f7ebcf98765eea3e7636d63ad096", + "name" : "0x02c6d6c7f8e3f7ebcf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 539225878 +}, +{ + "ETH_account" : "0x5480fe6990197149670d8d28095b676e9e2bafa4", + "name" : "0x5480fe699019714967", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 102000000 +}, +{ + "ETH_account" : "0xd8b80e7880a8eaf30adf87952067b56e3b65d21e", + "name" : "0xd8b80e7880a8eaf30a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 120000000 +}, +{ + "ETH_account" : "0x77be4c2d06449004ee06ec1e80129084de84865e", + "name" : "0x77be4c2d06449004ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 127000000 +}, +{ + "ETH_account" : "0x03c833e6113c218f9fb31938ad2ac90279d87b25", + "name" : "0x03c833e6113c218f9f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25088572000 +}, +{ + "ETH_account" : "0x7b74c19124a9ca92c6141a2ed5f92130fc2791f2", + "name" : "0x7b74c19124a9ca92c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 86017515400 +}, +{ + "ETH_account" : "0xf81a4bb27bdd365587582e302515d5a235d20112", + "name" : "0xf81a4bb27bdd365587", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8518000 +}, +{ + "ETH_account" : "0x4474903499247f7615c685548abb1e01250e03db", + "name" : "0x4474903499247f7615", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000000 +}, +{ + "ETH_account" : "0x46278c9b4c17af0d1fe976f148f40292defe2f5a", + "name" : "0x46278c9b4c17af0d1f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 432000000 +}, +{ + "ETH_account" : "0x5ab4f29e658ecbb57cefbeecde0a725d6a166040", + "name" : "0x5ab4f29e658ecbb57c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0x4b6f01ec0211ef5f0a9990397cd966bc565cb77f", + "name" : "0x4b6f01ec0211ef5f0a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 212040000 +}, +{ + "ETH_account" : "0x5070f9e31e779b24ce4e4839bd79a43be48ec910", + "name" : "sophiasun", + "publicKey" : "SPH4zuZ4yt15Tc1QQ9hocjeXLWrMRamzrtMGhNooTs4ABA8uDeh1k", + "balance" : 282000000 +}, +{ + "ETH_account" : "0xf3b0f8dd6f2edbfe72de48f5eab850770322fed4", + "name" : "0xf3b0f8dd6f2edbfe72", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1300000000 +}, +{ + "ETH_account" : "0x18252dcf25d21e5d25aacfe312ff535580435575", + "name" : "0x18252dcf25d21e5d25", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 285000000 +}, +{ + "ETH_account" : "0xfcacd5e2f1f5eda8c9fc7b3046fa6ae5124422f7", + "name" : "polish", + "publicKey" : "SPH5bM5Sdzv4X7uNwrAWNtiSusdgyxydGUoFDqyPUQw1196fzS3vZ", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x025374004f1b658b56c0036178f8c7daa7373a7e", + "name" : "0x025374004f1b658b56", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 943397969 +}, +{ + "ETH_account" : "0x58c190927305d718ba8099486640d24479cc7602", + "name" : "0x58c190927305d718ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400 +}, +{ + "ETH_account" : "0x4131cd53fd5162f7ca9fb5715b7cfaa8a2d366f8", + "name" : "0x4131cd53fd5162f7ca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0xf0769f107af6034901df8dfd5d37cdffdfd86d52", + "name" : "0xf0769f107af6034901", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 555000000 +}, +{ + "ETH_account" : "0x695a22a9d2ea4ce7e7ac0a6a59bbb9459277a069", + "name" : "0x695a22a9d2ea4ce7e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10547430000 +}, +{ + "ETH_account" : "0x624ff7e352bc8f64b197aea5329495a211efe3da", + "name" : "0x624ff7e352bc8f64b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 51000000 +}, +{ + "ETH_account" : "0x8428af22798b093d6f8786c02402d9cb229b694b", + "name" : "0x8428af22798b093d6f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0x4a12ff9f2352ec0b1c35042f92fa5cc62bfd6f32", + "name" : "0x4a12ff9f2352ec0b1c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22000000 +}, +{ + "ETH_account" : "0xdb021c2ef3143d552ae2d56cf5071c5c77908912", + "name" : "0xdb021c2ef3143d552a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 113875000000 +}, +{ + "ETH_account" : "0x479ecdfe166ad9f28014e31df1c753fb52d55595", + "name" : "0x479ecdfe166ad9f280", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4193331146 +}, +{ + "ETH_account" : "0x1b1163656f9e861b8ebf25a2c548f332ad5e4158", + "name" : "0x1b1163656f9e861b8e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66268143 +}, +{ + "ETH_account" : "0x599de8999945129bcab8fc79cf17c9568c8e5ffa", + "name" : "0x599de8999945129bca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1167000000 +}, +{ + "ETH_account" : "0x3a3fe1cb66728282116802306093e327477cbbf1", + "name" : "0x3a3fe1cb6672828211", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6074 +}, +{ + "ETH_account" : "0x0014af65d276040675dd2c65d2058be2b6da19ac", + "name" : "0x0014af65d276040675", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 105000000 +}, +{ + "ETH_account" : "0xaf37358631bfd150a9ab19d3184986b6357de5ba", + "name" : "0xaf37358631bfd150a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6671859566 +}, +{ + "ETH_account" : "0x1d596211f1d37eed1d44647131e29ab7339a9154", + "name" : "0x1d596211f1d37eed1d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2422640699 +}, +{ + "ETH_account" : "0x20455387da5167441597db67f65746ea31ed9713", + "name" : "0x20455387da51674415", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5665000000 +}, +{ + "ETH_account" : "0x06fada3f9f6d944b36dbb6d3c3b32a4db4691d89", + "name" : "0x06fada3f9f6d944b36", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 320000000 +}, +{ + "ETH_account" : "0x2400b95fafc6460bab54da8a6d17f0d45fd9997c", + "name" : "0x2400b95fafc6460bab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21180000000 +}, +{ + "ETH_account" : "0x1e468d22bab0a9235d473b9200941b907355907d", + "name" : "0x1e468d22bab0a9235d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 456460 +}, +{ + "ETH_account" : "0x91cc5d40c1b025f33083500723e2fae40c3b2b99", + "name" : "0x91cc5d40c1b025f330", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11283475977 +}, +{ + "ETH_account" : "0x55c08d095a75e028beca730a78b6c8a450c176ae", + "name" : "0x55c08d095a75e028be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0xb747330b56012fdda47adeda2b20ae88a0a7c6ba", + "name" : "0xb747330b56012fdda4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4246862867 +}, +{ + "ETH_account" : "0x546b6f0a90b4645a205c4911230b538fc2e4d286", + "name" : "0x546b6f0a90b4645a20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 246161924 +}, +{ + "ETH_account" : "0xe62fd17f46920ca9f80ce3828bc4d77b24eaa643", + "name" : "0xe62fd17f46920ca9f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23000000000 +}, +{ + "ETH_account" : "0x08716f7516d2a8945f0cd05f38564650fadfbadd", + "name" : "0x08716f7516d2a8945f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1126322747 +}, +{ + "ETH_account" : "0x27f254e349ee93ba6ecf6b6033de17b76e2aaa1b", + "name" : "namestring", + "publicKey" : "SPH8Mh76cbiDGdXzzQvj8w2pt7Gt3S7tW2D4csqkCW3XMULDEgrUN", + "balance" : 2650000000 +}, +{ + "ETH_account" : "0x1eeb706b5750c892987a9c19d34af565540dd2dd", + "name" : "0x1eeb706b5750c89298", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1311723000 +}, +{ + "ETH_account" : "0xbf5de22150f5e4dfe5f22717f0f4758839ffa753", + "name" : "0xbf5de22150f5e4dfe5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x65e939dd82d0e12dbbb7c1d358d79990232bafa3", + "name" : "0x65e939dd82d0e12dbb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0x29286427292766d33c1a06edc7e711a7ed74b9b1", + "name" : "0x29286427292766d33c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x708e56ba6764d438a1065d635bded114545222e3", + "name" : "lightning", + "publicKey" : "SPH7uiqJMs3urZYGMQKZe7wL6AiFdwGMMW86jKK15vbaNWmHkmmTv", + "balance" : 200000000000 +}, +{ + "ETH_account" : "0x1994531fa9c128f1c50fa1e5b36a7d351a1cc07d", + "name" : "0x1994531fa9c128f1c5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1730356000 +}, +{ + "ETH_account" : "0x43564c14f29cbc81894b5e8ab3520236ffa62268", + "name" : "0x43564c14f29cbc8189", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1041000000 +}, +{ + "ETH_account" : "0x4b06e6a5bcc9d442f28368aefedd0947bd99b2ec", + "name" : "0x4b06e6a5bcc9d442f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450000000 +}, +{ + "ETH_account" : "0x695ef80d104f471f9809258d0153471739a48330", + "name" : "0x695ef80d104f471f98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4706572000 +}, +{ + "ETH_account" : "0x41a1a6786aff5eb2ed2321dd178803af085162f1", + "name" : "0x41a1a6786aff5eb2ed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 46000000 +}, +{ + "ETH_account" : "0x4932ef3525276663e99a2051c9f76e3eb169f773", + "name" : "0x4932ef3525276663e9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 471000 +}, +{ + "ETH_account" : "0x3d0076656e0005054d93df4f1812cf9464604251", + "name" : "0x3d0076656e0005054d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1804681000 +}, +{ + "ETH_account" : "0x846a652adab3901fce86ca9ee8ce46fbcc80942c", + "name" : "0x846a652adab3901fce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 310000000 +}, +{ + "ETH_account" : "0x9f2190329655c49189155ff21938231ef7ef9616", + "name" : "0x9f2190329655c49189", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0x34f7cb954c17f72b22cbd15fb31fae86d95eb437", + "name" : "0x34f7cb954c17f72b22", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x69b5c539a7a40e1caaf26b3c8a54513b2c2be76e", + "name" : "0x69b5c539a7a40e1caa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0x6551f0b4907f136baaafd6b7637b44897ff8355b", + "name" : "0x6551f0b4907f136baa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5042600000 +}, +{ + "ETH_account" : "0x99a6dcca6e3ce54d9830c9bee16660ac19d01e23", + "name" : "0x99a6dcca6e3ce54d98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0x9cbbef814bdc979bb116a65be0ddb1d5af679625", + "name" : "0x9cbbef814bdc979bb1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6478210000 +}, +{ + "ETH_account" : "0x794e25f2a2c64bf3a7c4f260328b68add6102f2c", + "name" : "denis", + "publicKey" : "SPH6aNKR34f5RJDMSW6SG7zfDGrh5vLuzbrYAWEd4jbBtxD3eNzes", + "balance" : 662000000 +}, +{ + "ETH_account" : "0x8d0a7906c309f7a0a42daf04fe1d49329ba44b33", + "name" : "0x8d0a7906c309f7a0a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 703000000 +}, +{ + "ETH_account" : "0xdcbb3410531f092b7cb368e09ac779cc1b29dbf8", + "name" : "0xdcbb3410531f092b7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2401882739 +}, +{ + "ETH_account" : "0x48457be3957f084b5dc8e504356dd0c1760411d9", + "name" : "0x48457be3957f084b5d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8116000000 +}, +{ + "ETH_account" : "0xe424e600d8f488d684afe35d7d606ffe706a56ee", + "name" : "0xe424e600d8f488d684", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 166000000 +}, +{ + "ETH_account" : "0xe4ba1c4ac566a049429432cc11f4724a4e394538", + "name" : "0xe4ba1c4ac566a04942", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1 +}, +{ + "ETH_account" : "0xcd0b973902f98b11eed8114ef17f605d1a1352e2", + "name" : "0xcd0b973902f98b11ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1034799000 +}, +{ + "ETH_account" : "0xcda45e9ece56de92b9ef8910e4a9619759ed529c", + "name" : "0xcda45e9ece56de92b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7345701842 +}, +{ + "ETH_account" : "0xbc6db97bd71b4868558064a0dd488f1b529b87c5", + "name" : "0xbc6db97bd71b486855", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 474000000 +}, +{ + "ETH_account" : "0x837cdecb0a4407c20c0c65c54c3dfe6e678dec17", + "name" : "0x837cdecb0a4407c20c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000 +}, +{ + "ETH_account" : "0xb118ca39651f17c6418683df822af855db605084", + "name" : "0xb118ca39651f17c641", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1565000000 +}, +{ + "ETH_account" : "0x6c403185ef8c02f27edf02826551a1622e372a8b", + "name" : "0x6c403185ef8c02f27e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1885000000 +}, +{ + "ETH_account" : "0x9e4699f49e127684345fa66df2475ef5cf9d9de2", + "name" : "0x9e4699f49e12768434", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7000 +}, +{ + "ETH_account" : "0x39df683d4bb85f05aae04fd61a91f84e57826e2d", + "name" : "0x39df683d4bb85f05aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2241425931 +}, +{ + "ETH_account" : "0x8f216213f48e01adff9f9da6a994e87624a81e09", + "name" : "0x8f216213f48e01adff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 898131000 +}, +{ + "ETH_account" : "0x47d05e6f6cf0f00f68828d122a798add3cfb2b7a", + "name" : "0x47d05e6f6cf0f00f68", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4088000000 +}, +{ + "ETH_account" : "0x3140b3f0918fdb1d39723f80084ac7529ee3bdc5", + "name" : "0x3140b3f0918fdb1d39", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9000000 +}, +{ + "ETH_account" : "0xf88e9995560bf88941d9056ca31c964cf9105106", + "name" : "0xf88e9995560bf88941", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 229000000 +}, +{ + "ETH_account" : "0x1f144b331d52e264ee7c7df4e3114fac4fdb4804", + "name" : "0x1f144b331d52e264ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 352129512 +}, +{ + "ETH_account" : "0xb0dd55a0f7a03644406869b930f58afec232451c", + "name" : "phinx", + "publicKey" : "SPH7TMU3C9uhuvadU1PCRfU7EZCUTPpfscCBbdvQAGSP4jYsD5huj", + "balance" : 287855000000 +}, +{ + "ETH_account" : "0x63c5c80324953f11327177dcdd7ca214db8d3e36", + "name" : "0x63c5c80324953f1132", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 559000000 +}, +{ + "ETH_account" : "0x59b9a0a36ab3825790eb0fde75bfd10c04167bf4", + "name" : "samsamyeah", + "publicKey" : "SPH82uXkxNxpMrJCi7RPTySkmgyeS2ujkBZwzUxbvzopN1YzN9aHc", + "balance" : 66123354300 +}, +{ + "ETH_account" : "0x89cbd1adf22354bcdcf82b14a4cb83cbf4772f84", + "name" : "0x89cbd1adf22354bcdc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4861000000 +}, +{ + "ETH_account" : "0x792d9d64fcdf25275cec5582e75a6f6479014ad6", + "name" : "0x792d9d64fcdf25275c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x019c5f75f200183acb587bc0f1da9d6a3563c5ae", + "name" : "0x019c5f75f200183acb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1 +}, +{ + "ETH_account" : "0x64f3903e12c45a4942e05241c122c85aa5586955", + "name" : "masterger", + "publicKey" : "SPH7gZZf6KS37Lp7dLaeyiwNSpzikjpSjzAtprDPA7Rwxx6NTqRUe", + "balance" : 162000000 +}, +{ + "ETH_account" : "0x4eb527975c4374201a019f588f97d138816810a9", + "name" : "0x4eb527975c4374201a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0x89966c544b633abcc37d3efb414191bdb4cd7f35", + "name" : "0x89966c544b633abcc3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5400627000 +}, +{ + "ETH_account" : "0x8764444145d99f1ea490dd106a53f12f19218e3e", + "name" : "0x8764444145d99f1ea4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 536 +}, +{ + "ETH_account" : "0xf671cbea41f77a994e001556eac4af2e59f2bf19", + "name" : "0xf671cbea41f77a994e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1325303324 +}, +{ + "ETH_account" : "0xa9cb03737f8efb3ccca8358bf75a4267b2457b79", + "name" : "roflysophia", + "publicKey" : "SPH5nNbqeRMdFxQcCybT6p6CTTbGCCt3smS4WhDfG5u9zXwiAN4ks", + "balance" : 4633550000 +}, +{ + "ETH_account" : "0x2dbbe9521b294e7c307cd9ad7696d166ff05092a", + "name" : "0x2dbbe9521b294e7c30", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 498454790 +}, +{ + "ETH_account" : "0xd2869032e6723eb3a7d9bea9ec4d3b41d88435f9", + "name" : "0xd2869032e6723eb3a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6058850000 +}, +{ + "ETH_account" : "0xeddedf7c3f7cf337138898f6c2761497beb3f8c6", + "name" : "0xeddedf7c3f7cf33713", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65000000 +}, +{ + "ETH_account" : "0x5b662a3e5aa1deb631a3fe94ed742b1c22ed3b1f", + "name" : "0x5b662a3e5aa1deb631", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 329483000 +}, +{ + "ETH_account" : "0xab18913e732754d2977348f2c824f6bc32b216e4", + "name" : "0xab18913e732754d297", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11480975874 +}, +{ + "ETH_account" : "0x423c3d92a91eccde95e4dba35082567bbec8ddf7", + "name" : "0x423c3d92a91eccde95", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1183000000 +}, +{ + "ETH_account" : "0xd30928309218c0b8bbe510b663e3f2505e807b45", + "name" : "0xd30928309218c0b8bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1763000000 +}, +{ + "ETH_account" : "0x753db239628772bd75a4275ef06c7806d533e032", + "name" : "0x753db239628772bd75", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 234316000 +}, +{ + "ETH_account" : "0xfb32c09652636e750bdf01eead9dca9ff306886b", + "name" : "0xfb32c09652636e750b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2943321000 +}, +{ + "ETH_account" : "0x8549e8bf7178f9b901e2ed8dcc734876d93f1db7", + "name" : "0x8549e8bf7178f9b901", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2885430131 +}, +{ + "ETH_account" : "0x78b741fd0816d2cae1fe3f00e24041b987d34214", + "name" : "0x78b741fd0816d2cae1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 210000000 +}, +{ + "ETH_account" : "0x34b136e19f26b376f752e68320f23319fcea80f6", + "name" : "0x34b136e19f26b376f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 750000000 +}, +{ + "ETH_account" : "0x9bc1b796d9384c9de4af42a85cf964b7db6ae8b4", + "name" : "0x9bc1b796d9384c9de4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2359000000 +}, +{ + "ETH_account" : "0x754a111f672e05e60d4f02490a02415d989453ec", + "name" : "0x754a111f672e05e60d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2450000000 +}, +{ + "ETH_account" : "0x49e01ca79d207ac9a24c3957c1e8c82e4f342d6f", + "name" : "0x49e01ca79d207ac9a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 220000000 +}, +{ + "ETH_account" : "0x285479066580b7e4644c5e26bb822824078da63a", + "name" : "0x285479066580b7e464", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 330000000 +}, +{ + "ETH_account" : "0x877839c347676490b35ea53493394cbfe537fe56", + "name" : "0x877839c347676490b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 665000000 +}, +{ + "ETH_account" : "0xb4c52c762ca6b56e4dc290cb87952bc8f49d0aa1", + "name" : "derk", + "publicKey" : "SPH6RZPpwm9F2HPrsnoREfiL1oftkH16rCwBMQ1DnWTMmNYDJX36V", + "balance" : 2975436628 +}, +{ + "ETH_account" : "0xb750da824ef90362cd6b8be51e21267d84ce783f", + "name" : "0xb750da824ef90362cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 74000000 +}, +{ + "ETH_account" : "0x81937f2693be2f504ed61dc7b385f7081eb10c90", + "name" : "0x81937f2693be2f504e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 262000000 +}, +{ + "ETH_account" : "0x24c35befe2ef047b55b65280f57a7a2cb120af14", + "name" : "0x24c35befe2ef047b55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 673000000 +}, +{ + "ETH_account" : "0x15ebf0706eb9edf5d89b39e80ba06754fb552544", + "name" : "0x15ebf0706eb9edf5d8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 220964000 +}, +{ + "ETH_account" : "0xebeb817214e18ae7dc4d30333a9a0d8e710c16d4", + "name" : "0xebeb817214e18ae7dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 508745000 +}, +{ + "ETH_account" : "0x41f142d54de5522606252fa098f6f502a74dc5fa", + "name" : "0x41f142d54de5522606", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1633540000 +}, +{ + "ETH_account" : "0x9c41ea58c73b62418d4e432e2429563388911c45", + "name" : "0x9c41ea58c73b62418d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1760540000 +}, +{ + "ETH_account" : "0xc8459f5ab6733c6c6accda51fa859d8172fc926f", + "name" : "0xc8459f5ab6733c6c6a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 541426000 +}, +{ + "ETH_account" : "0x4fc244aedc6a344d5e7e9e9edf82b412531c4160", + "name" : "0x4fc244aedc6a344d5e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 159 +}, +{ + "ETH_account" : "0x5e6247d71e905b5bbfd8eab658d7e8975c8003cb", + "name" : "0x5e6247d71e905b5bbf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0x2f005dc7081dbe3bfeece943c193b073409ff1f3", + "name" : "0x2f005dc7081dbe3bfe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xd20305701dcdc8ced4d64b8491a5d21edbde70e2", + "name" : "0xd20305701dcdc8ced4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0xdc1c0c7992a1148eecdcbfe8e3065edc918a5f68", + "name" : "0xdc1c0c7992a1148eec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 963000000 +}, +{ + "ETH_account" : "0xbd4ff64f00ae828216c64341c400f6d920e20a90", + "name" : "0xbd4ff64f00ae828216", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65000000 +}, +{ + "ETH_account" : "0x11289ec52541e53a9e5d89d0282142d7348cdb02", + "name" : "0x11289ec52541e53a9e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000000 +}, +{ + "ETH_account" : "0x8ed94e1b1746334d1c64cbc4b8b691ab1abe2922", + "name" : "frippertronics", + "publicKey" : "SPH5LzsP1YcUgC1UDSZ5p2tjrtNkdoWGTA2adPTCBhrDCZGaY4R3u", + "balance" : 6002000000 +}, +{ + "ETH_account" : "0x2b724b9df855b156c3674d959ff06680b2118042", + "name" : "0x2b724b9df855b156c3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 745000000 +}, +{ + "ETH_account" : "0x3afb1692adcb3e7ac81c77173d41b16829fb4ac2", + "name" : "0x3afb1692adcb3e7ac8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1050000000 +}, +{ + "ETH_account" : "0x4eebb312855a12cb8e5ee892271808b28c99324b", + "name" : "0x4eebb312855a12cb8e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 67000000 +}, +{ + "ETH_account" : "0x0ab7cded1c9b139c19a549a1163ee8a5bf72d246", + "name" : "0x0ab7cded1c9b139c19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 279515624 +}, +{ + "ETH_account" : "0xb30d4b06fdc2a603cd649eefaa3be3ca5f86e931", + "name" : "0xb30d4b06fdc2a603cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 755000000 +}, +{ + "ETH_account" : "0xd4d283347b8351398ff2f459d791b732b68d6b79", + "name" : "0xd4d283347b8351398f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 588000000 +}, +{ + "ETH_account" : "0x1dc5f9092f20173adea78c36a3b42c405924e261", + "name" : "0x1dc5f9092f20173ade", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1094000000 +}, +{ + "ETH_account" : "0x8bda861b310f2d8bc6e56c350d26a3d3ee56cb1c", + "name" : "0x8bda861b310f2d8bc6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 190000000 +}, +{ + "ETH_account" : "0xcabd98b2d36f63b32141bd2e60bdbc221cb2efeb", + "name" : "0xcabd98b2d36f63b321", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 107000000 +}, +{ + "ETH_account" : "0xc284738a4e4ccca50f80e2f9a3d9e595cc255eb6", + "name" : "0xc284738a4e4ccca50f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 769000000 +}, +{ + "ETH_account" : "0xe4ef71d98c05eefa68def5bfa5e2292fb74da74c", + "name" : "0xe4ef71d98c05eefa68", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x53e554f80ca664747ec2755732fc5477db6fc50a", + "name" : "0x53e554f80ca664747e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2453875780 +}, +{ + "ETH_account" : "0x9f711ed2ea95fefa86f73e4c362ba456892408bd", + "name" : "0x9f711ed2ea95fefa86", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 810000000 +}, +{ + "ETH_account" : "0x0c676d0b06695a62a17307e77311d7495a98f3fe", + "name" : "0x0c676d0b06695a62a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 118000000 +}, +{ + "ETH_account" : "0x017610251a405e413b57636a8e7e2d9eb341649d", + "name" : "0x017610251a405e413b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 46 +}, +{ + "ETH_account" : "0x5e98444ecefbea708e9465399cfa5c4943fa0efe", + "name" : "0x5e98444ecefbea708e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1209592535 +}, +{ + "ETH_account" : "0xdc54e681ab6892b7840ba07c7f92d461b5a61bf7", + "name" : "0xdc54e681ab6892b784", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2021165843 +}, +{ + "ETH_account" : "0x5e9593174c09e39aa7df299245c494beb730c7f8", + "name" : "wongkwokyiew", + "publicKey" : "SPH8YbuYiQ2DwTx7RgfE3HSofMQM4dQFDYYd2ATm4x2Ffd8ka9wpi", + "balance" : 55743241752 +}, +{ + "ETH_account" : "0x9aa615a1916507a58907ce8d969939d5cba41aa8", + "name" : "0x9aa615a1916507a589", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5867340665 +}, +{ + "ETH_account" : "0x5a972ddc9bc5c47a119b71bd2690ec348d147d7a", + "name" : "0x5a972ddc9bc5c47a11", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 729500000 +}, +{ + "ETH_account" : "0x4ab8b5ed46a502e96081ddd88b61892fd8a8dd06", + "name" : "0x4ab8b5ed46a502e960", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 92000000 +}, +{ + "ETH_account" : "0x1b7ad65c538e4403fe50b0dcf52f8badc0c05fb8", + "name" : "0x1b7ad65c538e4403fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 257000000 +}, +{ + "ETH_account" : "0xf69de7108e2bfce995d768ada20de181a2df1df2", + "name" : "0xf69de7108e2bfce995", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000000 +}, +{ + "ETH_account" : "0x5a00aa7a84cc58c7f0d883813ac94e70c3a1c4f3", + "name" : "0x5a00aa7a84cc58c7f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39696 +}, +{ + "ETH_account" : "0x187b8f5d6231a808c49a9088b7e31600d50ad914", + "name" : "0x187b8f5d6231a808c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600 +}, +{ + "ETH_account" : "0x8d1941ffc3fc6a9842ece7a69ae13f04e9e502b9", + "name" : "0x8d1941ffc3fc6a9842", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 113444000 +}, +{ + "ETH_account" : "0xe077190a88f0ea9effddebc0a73401b7e697492e", + "name" : "0xe077190a88f0ea9eff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x8322490264ce51f1957b964babc07561a2a34b61", + "name" : "0x8322490264ce51f195", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 441 +}, +{ + "ETH_account" : "0x25259b01b0d6f5880db953ca27ab6d949752f604", + "name" : "0x25259b01b0d6f5880d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1160000000 +}, +{ + "ETH_account" : "0x2e93190a3ee0c440833bc9e0954e32ccc49575e8", + "name" : "0x2e93190a3ee0c44083", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 321960200 +}, +{ + "ETH_account" : "0x6fe90fa2b8ee53044ae8397b1b3b21d34d87dae4", + "name" : "0x6fe90fa2b8ee53044a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 296075740 +}, +{ + "ETH_account" : "0x676e7684f5a0d88168eef88c38ec77669dec1c4b", + "name" : "benflex", + "publicKey" : "SPH6UN7ArnxTrpDXEcg5aEhgLiWepYnUfCzxLBvZWL45Db8J5Hxqo", + "balance" : 50000000000 +}, +{ + "ETH_account" : "0x0187fb5b428213402d9fdc966d365a1f0ca66b90", + "name" : "0x0187fb5b428213402d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x42e8b2ffd1535231a44481260ccba4844f2f1cf2", + "name" : "0x42e8b2ffd1535231a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3703122506 +}, +{ + "ETH_account" : "0x41e9c1d76716b6532450ba51b51d39fe62d1abe2", + "name" : "mastakhra", + "publicKey" : "SPH6bxLLoWoK1S5oBjLrJ5Nbtt3ecLhAY2wv91xkSprwPMjTKvySK", + "balance" : 7459633756 +}, +{ + "ETH_account" : "0xbd3ce1dd188cd59972c5d66a79c3a09d038bbfd1", + "name" : "0xbd3ce1dd188cd59972", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 128000000 +}, +{ + "ETH_account" : "0xa764505d2eae26b516aed37fc9cb221b3d75aac7", + "name" : "0xa764505d2eae26b516", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 911000 +}, +{ + "ETH_account" : "0x2cd404e97110dc4437112936d9a597fff0744fcc", + "name" : "0x2cd404e97110dc4437", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 72572313440 +}, +{ + "ETH_account" : "0x55a1fdefc6f7b376ec38143a86b73072face7904", + "name" : "0x55a1fdefc6f7b376ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 996038939 +}, +{ + "ETH_account" : "0xc8983dbc28537f810f9712b9bae3076789dc96b9", + "name" : "lindagem", + "publicKey" : "SPH83sdFz245T1es4tp8ZvMgszkK4yFCQoLpt4g1er8chaiCaMFSP", + "balance" : 147686915910 +}, +{ + "ETH_account" : "0x7ad378ca30de62f87fe456fb8f88291ae15a7e80", + "name" : "mariabuch", + "publicKey" : "SPH7M6JjuC6ZBMEVyMAHwysE7AjvSeEnkfPS8SgoW5c2YBTCHBZ9j", + "balance" : 125055107160 +}, +{ + "ETH_account" : "0x354dc3995f0a57cf2e5d3e33c64e451494bab160", + "name" : "swan", + "publicKey" : "SPH514WH8XiEC7paF3bknUj7UYNABsN6E3Ko42gUUHgvVcxevJjBf", + "balance" : 55280808390 +}, +{ + "ETH_account" : "0x534792840efb94f04262bac34e53c3cf4e572f5f", + "name" : "richard", + "publicKey" : "SPH7jgesUxFYsChZZ9w2aHzpoVrLwZ7ttEHscHUQFNn3WUa51AgpV", + "balance" : 49168485030 +}, +{ + "ETH_account" : "0xbc75b86f3c96aec939ead532c51caacdb9a30d10", + "name" : "nattom", + "publicKey" : "SPH5QtRHtRFECNhkR8TuaMJ2SXS2xSxd4oQwb1e7g1FLzJ28d1G6H", + "balance" : 113951303550 +}, +{ + "ETH_account" : "0x6cdee3f0c711aace5ba6d7d85bf30c05a4b37e91", + "name" : "0x6cdee3f0c711aace5b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2014040419440 +}, +{ + "ETH_account" : "0xaeb40b03c9e52b94ed3ac4b3b2210c11decc7015", + "name" : "marhulak", + "publicKey" : "SPH83ZBNXYyN6G6G7Br4TSQESXBkhbmW7Q9SghnuA9pgQuUneo5km", + "balance" : 4714040419440 +}, +{ + "ETH_account" : "0xfe00ed16676b6d1c7e92391658ccc5d2bee1ea0c", + "name" : "0xfe00ed16676b6d1c7e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0x76564d72198b48e1c948166b833f6cb90d1d3a93", + "name" : "0x76564d72198b48e1c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 186000000 +}, +{ + "ETH_account" : "0x94e5e9f807f20697efb4801324f4a60abdfc459c", + "name" : "0x94e5e9f807f20697ef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 76786964 +}, +{ + "ETH_account" : "0x3b5368cdda27a2a0e954efa2eae8f1ba1a68ab02", + "name" : "0x3b5368cdda27a2a0e9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 753000000 +}, +{ + "ETH_account" : "0x98d1bc9b8137b1bbd74094133e4d7b7922d4b5b2", + "name" : "taconito", + "publicKey" : "SPH5PdtuNNEaMVo4yTRrtH54ihmfsZEVj5VSB8HN29fAKGtssbsAd", + "balance" : 618127828 +}, +{ + "ETH_account" : "0xb9fc13b94341e7d01bd4b74d3e95ccafbfa28d23", + "name" : "0xb9fc13b94341e7d01b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 750000000 +}, +{ + "ETH_account" : "0xe854132d601a45da70e0643ea70955e104063eda", + "name" : "sophiatxkuba", + "publicKey" : "SPH85EWeGwvURkzeNFM6FfmQkeG2297DTxdTgBWrNXWB3ZtjHBKRD", + "balance" : 10781817006 +}, +{ + "ETH_account" : "0x8bd79b1577d5ea4f0cafc8e6cf008122b0498eb9", + "name" : "0x8bd79b1577d5ea4f0c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x78ee144dea0a03dd9b6f1863834ffdfb22368762", + "name" : "0x78ee144dea0a03dd9b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 58000000 +}, +{ + "ETH_account" : "0xe665cb8ad8a4f5b9b66b48993ab21d0d1e88d899", + "name" : "0xe665cb8ad8a4f5b9b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3455421180 +}, +{ + "ETH_account" : "0xf37c139ce503404f9b69b610a468b887fb3ecd46", + "name" : "0xf37c139ce503404f9b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 115000000 +}, +{ + "ETH_account" : "0x4e4e6f5c813e8869c8c5d66718cab863bb407e6c", + "name" : "0x4e4e6f5c813e8869c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1745999902 +}, +{ + "ETH_account" : "0x34194069ba3b4f30c1d4a09da249ec5c1e6df75b", + "name" : "0x34194069ba3b4f30c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 119999999739 +}, +{ + "ETH_account" : "0x6d6ecc96876bcb06fbdb81aad75744c937acbe92", + "name" : "0x6d6ecc96876bcb06fb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12528000000 +}, +{ + "ETH_account" : "0xf2b5a7bca9c21c9390c0a6643985be74c4da2a8c", + "name" : "0xf2b5a7bca9c21c9390", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19000000 +}, +{ + "ETH_account" : "0x9672f18cbc8f9fed16fb7354d077ad374d32164b", + "name" : "powerbahr", + "publicKey" : "SPH5Jr3mHHUJ6619ZPJFDePFMAmt9XATVBJosjyaPhTEfK1oGfHkn", + "balance" : 591174175 +}, +{ + "ETH_account" : "0xfbdeb24fdca695d585585e6de98ac1737e0d267d", + "name" : "0xfbdeb24fdca695d585", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3500000000 +}, +{ + "ETH_account" : "0xd47fab6693d2bdca9ecc35741b543c26c6fd95d7", + "name" : "0xd47fab6693d2bdca9e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000000 +}, +{ + "ETH_account" : "0x8cf8be432d0e94d5a5f4b4cf56b7427e49f28447", + "name" : "0x8cf8be432d0e94d5a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0xed8df8c552a44328d5e74b61eb5346b5f65236ed", + "name" : "0xed8df8c552a44328d5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0xb0c5c70e9da2e90e2ac6e0340052b84d79972f29", + "name" : "0xb0c5c70e9da2e90e2a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1800000000 +}, +{ + "ETH_account" : "0x244e2cae27a1b7a9f5473d8849b2062ce636cf93", + "name" : "0x244e2cae27a1b7a9f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 330000000 +}, +{ + "ETH_account" : "0x6eafcad44986e8fc3d1e49e0caef465783652e62", + "name" : "0x6eafcad44986e8fc3d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 49259235 +}, +{ + "ETH_account" : "0x08bb7f11e8fcfcf971948facc89022206e13f79f", + "name" : "0x08bb7f11e8fcfcf971", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000 +}, +{ + "ETH_account" : "0x6da76411385932624e8727d45418146a4fcb7a6b", + "name" : "0x6da76411385932624e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7229826470 +}, +{ + "ETH_account" : "0x4f3f44324298c6f55cc1e3fa00eb95ca8dc3a811", + "name" : "lylo", + "publicKey" : "SPH5k341NExTBNFgNxGfbGTBzaUfk6ggxaNzE9Tq5t5hMoBn3rWBL", + "balance" : 120000000 +}, +{ + "ETH_account" : "0xbc8da288c106d83588751e30b45493a9ac775161", + "name" : "0xbc8da288c106d83588", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11276999979 +}, +{ + "ETH_account" : "0xfded32c098a363a07604af2a67c799a166c8ec01", + "name" : "0xfded32c098a363a076", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 245000000 +}, +{ + "ETH_account" : "0x95dc13cb5bb99fb2f1705e7d70ffa1f9e2573641", + "name" : "0x95dc13cb5bb99fb2f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1504637300 +}, +{ + "ETH_account" : "0x2eb30ba075bde793bbc48f10ce868f232a256615", + "name" : "0x2eb30ba075bde793bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1575000000 +}, +{ + "ETH_account" : "0xb424fe40a56cb518dd308ffa1ca1874295a3347c", + "name" : "0xb424fe40a56cb518dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 139307600000 +}, +{ + "ETH_account" : "0x4377f0787428d47c675640ac8ee17f77b2e41303", + "name" : "0x4377f0787428d47c67", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1300000000 +}, +{ + "ETH_account" : "0xeb1387345e0d6df1c80b8eb057ebec101e82919b", + "name" : "0xeb1387345e0d6df1c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 249000000 +}, +{ + "ETH_account" : "0x1e7c6e93ba312f10ce6421328d50ec13d44ffc7e", + "name" : "0x1e7c6e93ba312f10ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 139307600000 +}, +{ + "ETH_account" : "0xf6f8b764f163fdc6f2cbcba19cdf7a56f5e81b79", + "name" : "0xf6f8b764f163fdc6f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150000000 +}, +{ + "ETH_account" : "0x246bbe4b716961ed935789e2369628618aee73b5", + "name" : "0x246bbe4b716961ed93", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 154000000 +}, +{ + "ETH_account" : "0xf5a42683d4458ba74a0829e1e6e04612422f9ba1", + "name" : "0xf5a42683d4458ba74a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 380000000 +}, +{ + "ETH_account" : "0xf9bb806edbf0059cf74c48805ccda77009ea2fea", + "name" : "0xf9bb806edbf0059cf7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1131541715 +}, +{ + "ETH_account" : "0x3e9df5e6c6149352d47daa44b873231ffd3f7a13", + "name" : "0x3e9df5e6c6149352d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 520000000 +}, +{ + "ETH_account" : "0x14ebc6805a3dc432695fb7ab146d0290dd1d1b60", + "name" : "0x14ebc6805a3dc43269", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1499999999 +}, +{ + "ETH_account" : "0x5695a2601faf05473e9566105f1074da2202c756", + "name" : "0x5695a2601faf05473e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4107000000 +}, +{ + "ETH_account" : "0x15c68122daf868eb124044e5f2aaa41b040dabe7", + "name" : "0x15c68122daf868eb12", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 38059178 +}, +{ + "ETH_account" : "0x314e25682848267ae8c96e901434bfc5dc597c10", + "name" : "0x314e25682848267ae8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 616626545 +}, +{ + "ETH_account" : "0x08ee18cbe00b2ca13f64dedadb108633e874d0e6", + "name" : "sophiacoinswap", + "publicKey" : "SPH7kBtUwySTNoDhfU1JDmLVP6q8TUjjmvoz3iJEk4teeyF2bhSYe", + "balance" : 166000701900 +}, +{ + "ETH_account" : "0xe54862299a152e3affd7b00838d20e364568d842", + "name" : "0xe54862299a152e3aff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 59 +}, +{ + "ETH_account" : "0x03bb822c4c4fd9858708dbcad8f338fac3d21376", + "name" : "0x03bb822c4c4fd98587", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1100000000 +}, +{ + "ETH_account" : "0xfdcfd35ff7ca08a04e9a109ba995f9011bc643cc", + "name" : "0xfdcfd35ff7ca08a04e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 570000000 +}, +{ + "ETH_account" : "0xb86b104d253565505c1df4b7566b68f413681390", + "name" : "0xb86b104d253565505c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x6377a04c4279157c3a3d490963503abd4029cb3c", + "name" : "0x6377a04c4279157c3a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2609128548 +}, +{ + "ETH_account" : "0x596881a32eb316c0d72aaf135766fa0ce50b76d1", + "name" : "0x596881a32eb316c0d7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000103839 +}, +{ + "ETH_account" : "0x2594cbcb188fd91a1bc9918034d75978b2efb0aa", + "name" : "0x2594cbcb188fd91a1b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9146 +}, +{ + "ETH_account" : "0x3f65c8d6f2016677e3f0dd90a331719d2d8f0298", + "name" : "0x3f65c8d6f2016677e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0x6bc43d04eb7249e8706e11a6424049b492918d1e", + "name" : "0x6bc43d04eb7249e870", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1797715000 +}, +{ + "ETH_account" : "0xb04ec66395e1fd1a5cd27bebb5c3e96efe887cc6", + "name" : "0xb04ec66395e1fd1a5c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xbee43e315be90b034c378894b16ec3eceb6818d0", + "name" : "tercis", + "publicKey" : "SPH6rzC89vkB9fYP1n2C6ACeSLf92wzRqZ74FA7bLMnYt4NdYMgeX", + "balance" : 5500000000 +}, +{ + "ETH_account" : "0x70366d00ead55f33a2ed49fe2d7ad157916c8449", + "name" : "0x70366d00ead55f33a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2548728777 +}, +{ + "ETH_account" : "0xd5a8433783e00f45c538219b0f491278c191e320", + "name" : "0xd5a8433783e00f45c5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xc717f4a45ac2468d6eafcbed1356c20f1d16bb63", + "name" : "0xc717f4a45ac2468d6e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6249718405 +}, +{ + "ETH_account" : "0x578910893387973dab40d5dfd1794ae953c67db1", + "name" : "onnovanvelzen", + "publicKey" : "SPH7CR58u7svhdJxTpZ2oK9FPEY6KvneTZST8Ji5WCUGQfXbT3ZnL", + "balance" : 1053883148 +}, +{ + "ETH_account" : "0x4bdfc44bfb2f5329cd1647002cbb664a43dcf945", + "name" : "0x4bdfc44bfb2f5329cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x18bc4a50ff578f5d583c3ccdcd1600a106532408", + "name" : "desphtx", + "publicKey" : "SPH8EZPCJHaT31cHnD76kHMgNC7PcKjGSWfpbdWPXj6aBgcZrsnhy", + "balance" : 1743579473 +}, +{ + "ETH_account" : "0x833618c99e943d5580365ef22b3686bfb0211272", + "name" : "0x833618c99e943d5580", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22576378000 +}, +{ + "ETH_account" : "0xa9486e378f72d7edbfe349b602e254b3dc61ad13", + "name" : "0xa9486e378f72d7edbf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000 +}, +{ + "ETH_account" : "0x4fcd4d73e330b5ff7a4204adc6783b43efed4ce1", + "name" : "0x4fcd4d73e330b5ff7a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x9381d3efaffef651c6a0c407603ab41963ca0093", + "name" : "0x9381d3efaffef651c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 101609965 +}, +{ + "ETH_account" : "0x5436986264a43b58cb201fc5a2e8bb2abcb7fb56", + "name" : "0x5436986264a43b58cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4371479169 +}, +{ + "ETH_account" : "0xdbdec5938da5c542e2a84bea8eda35817d7bb73c", + "name" : "0xdbdec5938da5c542e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 192808629 +}, +{ + "ETH_account" : "0x45d0d860c34d0d3da310f203616bc5cd0f904209", + "name" : "0x45d0d860c34d0d3da3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1304688000 +}, +{ + "ETH_account" : "0xa02b66b3878e5a269ba246e2ad7740bc4496bac9", + "name" : "0xa02b66b3878e5a269b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 38000 +}, +{ + "ETH_account" : "0x3036c30fda13780c40e94701fa9d03a4efcd1092", + "name" : "0x3036c30fda13780c40", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 760000000 +}, +{ + "ETH_account" : "0x0077ed663ed37933bf82da1b042c93f4beb2e0f8", + "name" : "0x0077ed663ed37933bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 370000000 +}, +{ + "ETH_account" : "0xf5b4805d2a5eb912e0214ec9f34291916e28b97d", + "name" : "0xf5b4805d2a5eb912e0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 871000000 +}, +{ + "ETH_account" : "0x0ffacb425a42f4fac414740c1c8a1c318ca80830", + "name" : "0x0ffacb425a42f4fac4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1891000000 +}, +{ + "ETH_account" : "0x61c8656d0fe21d17037783224c526025b8a5d29a", + "name" : "0x61c8656d0fe21d1703", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1288372000 +}, +{ + "ETH_account" : "0x298015d7b583927496f6efad9aac2cda754ea701", + "name" : "0x298015d7b583927496", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 350428000 +}, +{ + "ETH_account" : "0x18f3eb33092242b83b503ab2b5e07672debe4aa8", + "name" : "0x18f3eb33092242b83b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 304000000 +}, +{ + "ETH_account" : "0x8768b5d6cb67e613a5a379b91fb644658b6c1fec", + "name" : "0x8768b5d6cb67e613a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 672000000 +}, +{ + "ETH_account" : "0x104f67145d563c19499291bf0d6845b4cf633e0d", + "name" : "0x104f67145d563c1949", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 802541000 +}, +{ + "ETH_account" : "0xc4959e19275064d1feaccbdd5a46f303cabad5ec", + "name" : "0xc4959e19275064d1fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4063981124 +}, +{ + "ETH_account" : "0x917dd8bbe7f643fa6512e38fa37b874d18edbd51", + "name" : "0x917dd8bbe7f643fa65", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 70000000 +}, +{ + "ETH_account" : "0x4af01a2bb515ac95e8592c8d7efbf7a3ae30451b", + "name" : "0x4af01a2bb515ac95e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 253000000 +}, +{ + "ETH_account" : "0x89cccfdb5274d71ab3acd3324e810ee38fc71fde", + "name" : "0x89cccfdb5274d71ab3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 63000000 +}, +{ + "ETH_account" : "0x55471814fdebdbbbd96739dbab17c8d0a030348f", + "name" : "0x55471814fdebdbbbd9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2500000000 +}, +{ + "ETH_account" : "0xcc738268a077d22648558d56334696ddf3dba02a", + "name" : "0xcc738268a077d22648", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 230000000 +}, +{ + "ETH_account" : "0x4526c54b065dddd6b1044bf696c5068b491716a9", + "name" : "0x4526c54b065dddd6b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 210000000 +}, +{ + "ETH_account" : "0x033373ef576a8833c9d45ff4d5d049398f6ae487", + "name" : "0x033373ef576a8833c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000 +}, +{ + "ETH_account" : "0x966b73f567717587a4ad56f4e4dc68c289bc0690", + "name" : "0x966b73f567717587a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28587430868 +}, +{ + "ETH_account" : "0x6692c2eee6a373e10c625ae97725cf1169da6517", + "name" : "0x6692c2eee6a373e10c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 594105828 +}, +{ + "ETH_account" : "0xa970d175e16b74c868b9a25657da9b2385dd1320", + "name" : "0xa970d175e16b74c868", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23 +}, +{ + "ETH_account" : "0x00c4d5b808f32b25a7a17d4f25c91ec2b1afd50d", + "name" : "0x00c4d5b808f32b25a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2463064000 +}, +{ + "ETH_account" : "0x925149adc729a603cd45a2b3574fb6a03c174d5f", + "name" : "optometrix", + "publicKey" : "SPH6ibap9KC9C9yYQHAAXGk4ZJarTYqFvxwmexU8mGBeXkuy7NSTw", + "balance" : 179382700 +}, +{ + "ETH_account" : "0x22a70ffd5d1a124815f515eacb807b2c3891e1ec", + "name" : "0x22a70ffd5d1a124815", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 992000 +}, +{ + "ETH_account" : "0xa1463ba6f076341b5a4698b37a10b83fcf2e0232", + "name" : "0xa1463ba6f076341b5a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 54000000 +}, +{ + "ETH_account" : "0xf4a45a1b88f7a16355828948ea43d27eaf7c5eb4", + "name" : "0xf4a45a1b88f7a16355", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 211000000 +}, +{ + "ETH_account" : "0x04d976927def641d85bcc53a35c321f066ee110f", + "name" : "0x04d976927def641d85", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1585000000 +}, +{ + "ETH_account" : "0xae9863ccd4fd5db7e54604b40425edb2124f967e", + "name" : "bem020", + "publicKey" : "SPH558NwSv4kQwS69ykwB9PQgrRUnJmv54eeT87z4F7DUzsSfTaV4", + "balance" : 9407828000 +}, +{ + "ETH_account" : "0x094d2bd7287189b66b8e391b3b1912ac9db632d3", + "name" : "0x094d2bd7287189b66b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x59f5023021b07bcd5c60944f319739b63aa4dbd3", + "name" : "0x59f5023021b07bcd5c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9999999999 +}, +{ + "ETH_account" : "0x02175b8d1673ba861b1b97929d0aad5639cb8f69", + "name" : "0x02175b8d1673ba861b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2687277037 +}, +{ + "ETH_account" : "0x70239c769a5a4c0b9f4d5081fcb6ae05b016a268", + "name" : "andrewbdrr", + "publicKey" : "SPH8fwxdoBueFAMemUGDQNLq75nLoRpAnA7pHQEgJxQZA6Dsgd6ja", + "balance" : 7027644174 +}, +{ + "ETH_account" : "0x35bd1f8bfc9c9ad3b5f7233c655aefaa78ae5ee2", + "name" : "0x35bd1f8bfc9c9ad3b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2138058000 +}, +{ + "ETH_account" : "0x31e982d2fde760a0780e246e6479608d838db27b", + "name" : "winkbuul", + "publicKey" : "SPH6u7wd5kLqWqb8cSyRijkUVxfUXefgBai89ZuFkvdWf2cuGGXFP", + "balance" : 820000000 +}, +{ + "ETH_account" : "0x357678fc349f9081b4be5d22217107e18836f3e4", + "name" : "larahillebrants", + "publicKey" : "SPH6rp4JKLwEokn9J8AEfiTnSUmz6X7sPz2w1PNX1gPVnP2P2xLC7", + "balance" : 930000000 +}, +{ + "ETH_account" : "0x9bc95a8b3f059be2b4add9bc9cf242cc6a51d913", + "name" : "0x9bc95a8b3f059be2b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 750345000 +}, +{ + "ETH_account" : "0xee71f72bb9bd8e333b897661dd14ae643248dbc7", + "name" : "0xee71f72bb9bd8e333b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x41e622c06d6ba2e9b5998a4aaea242931693da3c", + "name" : "0x41e622c06d6ba2e9b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8624850000 +}, +{ + "ETH_account" : "0x5311790a04a6e0e370e2c05f81026513fbadc796", + "name" : "0x5311790a04a6e0e370", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4386353653 +}, +{ + "ETH_account" : "0x5d641032c7bc6285c1a077a4aaadc939c4bd1d7e", + "name" : "0x5d641032c7bc6285c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6026036438 +}, +{ + "ETH_account" : "0x368dba549f3403888ed5c1f6033f6094923d5e92", + "name" : "0x368dba549f3403888e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3650315913 +}, +{ + "ETH_account" : "0x91312a61853ebe3bee178231f20446462daf4532", + "name" : "0x91312a61853ebe3bee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11972773946 +}, +{ + "ETH_account" : "0xacbd034ac9c29320295b0e2359408c968d0f8d17", + "name" : "0xacbd034ac9c2932029", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5211951200 +}, +{ + "ETH_account" : "0x5ac8f8605414188e0699764417b8b1ce32a0b6dd", + "name" : "0x5ac8f8605414188e06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5121256300 +}, +{ + "ETH_account" : "0x4698fa832130d06d9ad31381fd6e8826c0db07fa", + "name" : "0x4698fa832130d06d9a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xaab0f0b4c5a97e7add2c0bc1b3d6234699e3cc1e", + "name" : "0xaab0f0b4c5a97e7add", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1276476871 +}, +{ + "ETH_account" : "0xc5b6a594801c3f1ecd22d33d3c36fa9c2fdb7f3e", + "name" : "0xc5b6a594801c3f1ecd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 299000000 +}, +{ + "ETH_account" : "0x2a8a53ac21be68c99dd0cb6220004c8feda5b952", + "name" : "0x2a8a53ac21be68c99d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000000 +}, +{ + "ETH_account" : "0x4d933f494524347a8383322799adb82de36091b1", + "name" : "0x4d933f494524347a83", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 265000000 +}, +{ + "ETH_account" : "0x25167a959c5fdf1a61e09bafae8b785121ef132b", + "name" : "0x25167a959c5fdf1a61", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 850665000 +}, +{ + "ETH_account" : "0x3d21c0cfcc3c7a2a5729a8ed5a678dd404a83b80", + "name" : "0x3d21c0cfcc3c7a2a57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1471173900 +}, +{ + "ETH_account" : "0x0f3a708703ed6d7e7f8416d41f15a9d6efb301f2", + "name" : "0x0f3a708703ed6d7e7f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 908960832 +}, +{ + "ETH_account" : "0x82c5ed10f9f4c1f0e5e36fc0a89c56f4331bd104", + "name" : "0x82c5ed10f9f4c1f0e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2220410963 +}, +{ + "ETH_account" : "0x2722bb433ad155c0c732446bafb86aef1e2634d9", + "name" : "0x2722bb433ad155c0c7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 790539000 +}, +{ + "ETH_account" : "0xc936c28629fbfd9b67f4cd588f77fa853b6669b0", + "name" : "0xc936c28629fbfd9b67", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0x78f818752748a1322cf40a91c13eea3c012f81e3", + "name" : "0x78f818752748a1322c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x965ee99d880c4aae4fbef0383b5098b63007857a", + "name" : "0x965ee99d880c4aae4f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 831439000 +}, +{ + "ETH_account" : "0x1d2e6ac802d0aa0278c933bd45c05ac71b2feb7c", + "name" : "0x1d2e6ac802d0aa0278", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 56199000 +}, +{ + "ETH_account" : "0xff957402d567ad8ea5b4d5baa03ca7cf987aed00", + "name" : "0xff957402d567ad8ea5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 626019623 +}, +{ + "ETH_account" : "0x33834df0d50a6f912b62d5c30b42818b9045db66", + "name" : "0x33834df0d50a6f912b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 249000000 +}, +{ + "ETH_account" : "0x2075bd9ec2c6d03d019b397be55e33a593de3021", + "name" : "0x2075bd9ec2c6d03d01", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 345999000 +}, +{ + "ETH_account" : "0x46f21b7d4a0998dab2f25dab59e12dadfec1cc4d", + "name" : "0x46f21b7d4a0998dab2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2782831519 +}, +{ + "ETH_account" : "0x4af3789e443fb30f6ada00bf00af6938d61bd956", + "name" : "0x4af3789e443fb30f6a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 267353000 +}, +{ + "ETH_account" : "0x4d51927fde086c386a7f093d1c28b46d88aebbf0", + "name" : "0x4d51927fde086c386a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 362751 +}, +{ + "ETH_account" : "0x1786204d03e4586d50a8c429ad181aecbfe29931", + "name" : "0x1786204d03e4586d50", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1774641794 +}, +{ + "ETH_account" : "0x7ca489445465d83eb4efaf666658fdd6768155ef", + "name" : "0x7ca489445465d83eb4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2530000000 +}, +{ + "ETH_account" : "0xb5cc3a2ec83be6b6155d33f4c4ddf62be8e3e115", + "name" : "0xb5cc3a2ec83be6b615", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600000000 +}, +{ + "ETH_account" : "0xb67849e9a30f72ed3a176ac5743d97a1bbec291c", + "name" : "0xb67849e9a30f72ed3a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2500000000 +}, +{ + "ETH_account" : "0x56822a69bf5dd4e330e787f6aad48ed7e9fdc010", + "name" : "0x56822a69bf5dd4e330", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 782752000 +}, +{ + "ETH_account" : "0x1fb5ab02b67be98f78506dc3f9de32c81a447307", + "name" : "0x1fb5ab02b67be98f78", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 708419888 +}, +{ + "ETH_account" : "0x083c6e7be9a3985e890bee68a71f94bcfa71a093", + "name" : "0x083c6e7be9a3985e89", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1455390000 +}, +{ + "ETH_account" : "0x11880d483638c5718c77851ed4a86be4b266e6ed", + "name" : "0x11880d483638c5718c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 584347858 +}, +{ + "ETH_account" : "0xf0095ee49d7b8f1c2b105a04343012067e6063fe", + "name" : "0xf0095ee49d7b8f1c2b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 59858000000 +}, +{ + "ETH_account" : "0xaba159a11ac8542254ecc312485d46b4646b77b4", + "name" : "0xaba159a11ac8542254", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2674084921 +}, +{ + "ETH_account" : "0x8d091d768fb4ff30771de9ff3ea7da47557a3fba", + "name" : "0x8d091d768fb4ff3077", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9673000000 +}, +{ + "ETH_account" : "0xe45fc5a596719d513b8858c4a2f08435d7cb20f6", + "name" : "0xe45fc5a596719d513b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25 +}, +{ + "ETH_account" : "0xe7d7c988a8591be724c94da6339c4debd64667ab", + "name" : "0xe7d7c988a8591be724", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 157933776 +}, +{ + "ETH_account" : "0x3d429f8e88144aa6a2857c7e2629215f6307fc06", + "name" : "0x3d429f8e88144aa6a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4976000000 +}, +{ + "ETH_account" : "0x37fd4bcbaa040b777a4f82b1955401d7b2dbc99b", + "name" : "0x37fd4bcbaa040b777a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2131399682 +}, +{ + "ETH_account" : "0xaaa0e8d86f098268a340e4fcd5a9ffdd2db24b4b", + "name" : "0xaaa0e8d86f098268a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x23b04a12f197f2e6cca8d318720e2bb7846e7821", + "name" : "0x23b04a12f197f2e6cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x76d3ee7b87b9643419f14f78ddd10a5458e6e4cb", + "name" : "0x76d3ee7b87b9643419", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 422000000 +}, +{ + "ETH_account" : "0x5697495903a240cdf6d1d50529c15d23b42fbe36", + "name" : "0x5697495903a240cdf6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2500000000 +}, +{ + "ETH_account" : "0xf457805b3edc34f240b598a06b346d8af6958fb1", + "name" : "0xf457805b3edc34f240", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3588697699 +}, +{ + "ETH_account" : "0x755b13d51b8605cd44bc207f23bbdf2addbd7521", + "name" : "0x755b13d51b8605cd44", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4302939619 +}, +{ + "ETH_account" : "0x003be6d4f336d1ef260088754176510d8c8e00cf", + "name" : "0x003be6d4f336d1ef26", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1050000000 +}, +{ + "ETH_account" : "0xbb6fe6d0803e0d8b3b1e29064389ec97fe047795", + "name" : "0xbb6fe6d0803e0d8b3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1599000000 +}, +{ + "ETH_account" : "0x856ab07bf2d2cc657cee49395e791c8962a66eff", + "name" : "0x856ab07bf2d2cc657c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 449719847 +}, +{ + "ETH_account" : "0x4f59c8d4b24effddbc3693216b0dfecddc8ff753", + "name" : "0x4f59c8d4b24effddbc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1700000000 +}, +{ + "ETH_account" : "0xbabe7d6cf27201fe20e0109b3eaa34e2f0602801", + "name" : "0xbabe7d6cf27201fe20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2301691425 +}, +{ + "ETH_account" : "0x0fa54986b7bb4d608e1bd20d32d9e7388bf02f3f", + "name" : "0x0fa54986b7bb4d608e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xa8ca4fc4300c8fc806043e1d73df6dbdef0d7981", + "name" : "0xa8ca4fc4300c8fc806", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 416000000 +}, +{ + "ETH_account" : "0xb5adabfe1b77e0c365285dddb5c35caf8cded7eb", + "name" : "0xb5adabfe1b77e0c365", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1194610000 +}, +{ + "ETH_account" : "0x1746d2856a649ef6c33afcce942a29f61178373d", + "name" : "0x1746d2856a649ef6c3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1028000000 +}, +{ + "ETH_account" : "0x4b7c6f40fcdd459e661f32333a77b7ee156c972c", + "name" : "0x4b7c6f40fcdd459e66", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1545627142 +}, +{ + "ETH_account" : "0x0f644133c38f8af5e1495a4e1df9c8a68475b607", + "name" : "0x0f644133c38f8af5e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 270000000 +}, +{ + "ETH_account" : "0x82dea6e139657092bc51c4da24dd1d08e4b1c383", + "name" : "0x82dea6e139657092bc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1159892685 +}, +{ + "ETH_account" : "0x7f1ce16d0199740f1180a159ac9e72bd528c3027", + "name" : "0x7f1ce16d0199740f11", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1173000000 +}, +{ + "ETH_account" : "0x77286818de07f5b1380f9ec26e00f653470398f3", + "name" : "0x77286818de07f5b138", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3423194000 +}, +{ + "ETH_account" : "0x2e629cae8f5f9f1b1f52928b1c9f092eb228498b", + "name" : "0x2e629cae8f5f9f1b1f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 165000000 +}, +{ + "ETH_account" : "0x8ebc101794f8cb350a6bbd1b731c1ff56c7687f6", + "name" : "joeysphtx", + "publicKey" : "SPH86FifHQvenHgYYZNwEhsaAhNDngHtatRRWabSnd1Bvh35Uurak", + "balance" : 2551967836 +}, +{ + "ETH_account" : "0xe0d72b268aede0c5b22ee4601054475b867fbe33", + "name" : "0xe0d72b268aede0c5b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1230000000 +}, +{ + "ETH_account" : "0x117264dd65f550c7a3842fa2cec07057db753c16", + "name" : "kire", + "publicKey" : "SPH4wnYpbPts3NdurjXxVz87KuRaGfuMiGF63EPG3vgahTJk3fRAz", + "balance" : 12790199588 +}, +{ + "ETH_account" : "0x33ef84746a28d538a958d3d8ca9c9a656d00b2c0", + "name" : "0x33ef84746a28d538a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2200000000 +}, +{ + "ETH_account" : "0x2c7da7b16e235c89ecf866aa32e5604eaa75bc16", + "name" : "0x2c7da7b16e235c89ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600000000 +}, +{ + "ETH_account" : "0x4238bc5ee729ca4fe3bbf6ac2a9615ece29608fe", + "name" : "0x4238bc5ee729ca4fe3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1428000000 +}, +{ + "ETH_account" : "0x67037a400660212ef4c63b267ba9a15fa51d0a40", + "name" : "0x67037a400660212ef4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x9fce06628587137447dca45b5827fd01a88719ff", + "name" : "0x9fce06628587137447", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 944596794 +}, +{ + "ETH_account" : "0xd27be219d7281c06d2fb4ec038eb457f9fc4eb04", + "name" : "0xd27be219d7281c06d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 95000000 +}, +{ + "ETH_account" : "0x7ea6ef427904620c05f88215bda0093bd67d5d75", + "name" : "0x7ea6ef427904620c05", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 669999875 +}, +{ + "ETH_account" : "0xdd2ca76c83efb5183923265e37c55b0a2011decd", + "name" : "0xdd2ca76c83efb51839", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11182077818 +}, +{ + "ETH_account" : "0xc1ca3b64ee375cdc7419013d0971f31d10822a53", + "name" : "0xc1ca3b64ee375cdc74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 835000000 +}, +{ + "ETH_account" : "0x3bc41f90875161e472eba51c1ebcf7b7c5513105", + "name" : "0x3bc41f90875161e472", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 282000000 +}, +{ + "ETH_account" : "0xd75fb3436b386da14fc807d4623d6231aa3d0179", + "name" : "0xd75fb3436b386da14f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10822990000 +}, +{ + "ETH_account" : "0xeb415f4ffc883ba6f90df29d1ac2483e22c6d1e8", + "name" : "0xeb415f4ffc883ba6f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450000000 +}, +{ + "ETH_account" : "0xdbb0d75b8f30914229600e450cc22556140532c6", + "name" : "0xdbb0d75b8f30914229", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9704254832 +}, +{ + "ETH_account" : "0x753aada580e54ddaca97ceaaed2ca0ef998345aa", + "name" : "0x753aada580e54ddaca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 215560000 +}, +{ + "ETH_account" : "0x87b8f3d486c7fe3376f68c9b05b56173d3d8f038", + "name" : "0x87b8f3d486c7fe3376", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 791 +}, +{ + "ETH_account" : "0x44766a95b5419dc130b85940b688a4aeb8a8d52f", + "name" : "nathsphtx", + "publicKey" : "SPH8KQdsmAeV8EvYhs4UUSr2H8nrqbJeiiXmaYZDjeGijwTPqLhbK", + "balance" : 6503128300 +}, +{ + "ETH_account" : "0x3acfd694a2fcbf7dedb68439ac986587e673861e", + "name" : "0x3acfd694a2fcbf7ded", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2024000000 +}, +{ + "ETH_account" : "0x8417e34fa28171e87ee9b28190a72ea10405830f", + "name" : "0x8417e34fa28171e87e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7138451743 +}, +{ + "ETH_account" : "0xdc93af272bf75e5d7071d6059ceb79efafb4bd83", + "name" : "0xdc93af272bf75e5d70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3718305608 +}, +{ + "ETH_account" : "0x0ee843d36f008e96cecbd59ebfcd996215c3333d", + "name" : "0x0ee843d36f008e96ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15808944000 +}, +{ + "ETH_account" : "0x0a40aff7a9e20664239ecfe27468be399d06622d", + "name" : "0x0a40aff7a9e2066423", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1928419512 +}, +{ + "ETH_account" : "0x545fa3370002690fa21469b929a0fd57099a11bb", + "name" : "endorsevven", + "publicKey" : "SPH6QMLcAj37V9s9Eqgk75dgAWH9f5NmHdEqAwrCH4X1aRY8En7Vy", + "balance" : 24305016833 +}, +{ + "ETH_account" : "0x80f6760f0103d552b86366c43bdc7c8e61a5cfc9", + "name" : "0x80f6760f0103d552b8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 385000000 +}, +{ + "ETH_account" : "0xf8c8fe4ba23fc2abb02ce48cf1a1b50f1fbbc0ee", + "name" : "0xf8c8fe4ba23fc2abb0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 830194521 +}, +{ + "ETH_account" : "0xba6cad38b6fd11b7d14b6e4fb95b4bff07531bcb", + "name" : "0xba6cad38b6fd11b7d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 570114675 +}, +{ + "ETH_account" : "0xcb440a750eb4c70d5bce58bde4289e97fc12f899", + "name" : "0xcb440a750eb4c70d5b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12464999631 +}, +{ + "ETH_account" : "0x86d2e923a7ea0c53f86a9ef303b70adeacc76221", + "name" : "0x86d2e923a7ea0c53f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 496 +}, +{ + "ETH_account" : "0x3983692423daaed3f0ac63646f6ecbbb33fdfb71", + "name" : "0x3983692423daaed3f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1784456000 +}, +{ + "ETH_account" : "0x637705dde1d1bb91aaca0df7a7e581406cc178fe", + "name" : "jianxia", + "publicKey" : "SPH8E4ceRpYwB3E8bi4YcxKGSZZhJybgLjUSSqUD9Ao1AhTNwCYQx", + "balance" : 140969097633 +}, +{ + "ETH_account" : "0x18e74edc8667988d479e446251928358caf26b61", + "name" : "0x18e74edc8667988d47", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21386999993 +}, +{ + "ETH_account" : "0x713400d6e2bb27f40e47c877bd72f922da56c3a5", + "name" : "0x713400d6e2bb27f40e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1750000000 +}, +{ + "ETH_account" : "0x05a9c3a3565973fea47a46232bd3bbb62cc7f793", + "name" : "0x05a9c3a3565973fea4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 760000000 +}, +{ + "ETH_account" : "0xd43c7b960f175d554ecb7831c3efa01be531b653", + "name" : "0xd43c7b960f175d554e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1910000000 +}, +{ + "ETH_account" : "0x4427f39ccba2c2ecede1e71f896978b8835ccd10", + "name" : "0x4427f39ccba2c2eced", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5295605878 +}, +{ + "ETH_account" : "0xf6b749baf3daaddf55fd423891dee2c3ed197db7", + "name" : "0xf6b749baf3daaddf55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80000000 +}, +{ + "ETH_account" : "0x2ac14572bacfd491408306db6c6cf544cbe94687", + "name" : "0x2ac14572bacfd49140", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 608000000 +}, +{ + "ETH_account" : "0x6d3e480d317d146b6002bf29c77bb44a43bd99df", + "name" : "derada", + "publicKey" : "SPH6XXC22qYR9QnQKkruMc5NbAQQfjxX44sjuQUMfdSXTWBCtEz5S", + "balance" : 4732349209 +}, +{ + "ETH_account" : "0xd2bb32bd1dc40cd26f1309a5e916d70fe3b89bf9", + "name" : "0xd2bb32bd1dc40cd26f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x31d9e8f78fcf1b7af862ed290f4324ef1f1c05e3", + "name" : "0x31d9e8f78fcf1b7af8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 242000000 +}, +{ + "ETH_account" : "0x047c484a2fdb4380430dfdf23987ac866667d532", + "name" : "0x047c484a2fdb438043", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8510000000 +}, +{ + "ETH_account" : "0xec1352fbf83fee0bd71de3565b2a909241b95773", + "name" : "0xec1352fbf83fee0bd7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 605000000 +}, +{ + "ETH_account" : "0x4082a34aa780e015a49020a1319e3c9be007fcb1", + "name" : "0x4082a34aa780e015a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2356000000 +}, +{ + "ETH_account" : "0x0d7decb271e11221bf471009e535cba8fb78cbd1", + "name" : "0x0d7decb271e11221bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 168438733 +}, +{ + "ETH_account" : "0x09d25353150d86b78ca38812f7748d4fd6d5a1de", + "name" : "0x09d25353150d86b78c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14212494988 +}, +{ + "ETH_account" : "0x6a18bbfed999f7d3ab98abc0c050be86a592e2d1", + "name" : "0x6a18bbfed999f7d3ab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1300000000 +}, +{ + "ETH_account" : "0x1601e879792f1abee5db3ba68b286258bffeba24", + "name" : "0x1601e879792f1abee5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 79104305 +}, +{ + "ETH_account" : "0x1b84713f28d60db58deb2e6f67b8afc5b37e2bfe", + "name" : "0x1b84713f28d60db58d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1475000000 +}, +{ + "ETH_account" : "0xa38f9b134867822ce99bcc88dafce39ea158fe3b", + "name" : "0xa38f9b134867822ce9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 168000000 +}, +{ + "ETH_account" : "0x7fa7c0d9e5e5941de7f49447c2710fdc88e95da8", + "name" : "0x7fa7c0d9e5e5941de7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 320000000 +}, +{ + "ETH_account" : "0xfa590f7852a5352a3c34a4226ca418a2b433b65f", + "name" : "0xfa590f7852a5352a3c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0x0d94d1c18d4ed2bfe1e93fd6517993e32a453fe1", + "name" : "0x0d94d1c18d4ed2bfe1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 369000000 +}, +{ + "ETH_account" : "0x44500255f153f016ed7971ac8e260b0ebf6a0a95", + "name" : "0x44500255f153f016ed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 956118643 +}, +{ + "ETH_account" : "0x292320bf072a45c45e1007c60ce8166fdb5ee535", + "name" : "0x292320bf072a45c45e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0xd8966fe106fb51082867590c43acffaf1934d875", + "name" : "0xd8966fe106fb510828", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4570398000 +}, +{ + "ETH_account" : "0x3b8c13aab93e0fb69c9fc52b51645499769659c9", + "name" : "0x3b8c13aab93e0fb69c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 550000000 +}, +{ + "ETH_account" : "0x862e0ec57d660144b7fb3f40abd108c7a77c3710", + "name" : "0x862e0ec57d660144b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0x2a557cd0a7bdcd646c6f224c617b4a21d54ade5c", + "name" : "0x2a557cd0a7bdcd646c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1656821472 +}, +{ + "ETH_account" : "0xe5eb4f45f2f4c52010c2292ccfbfe95e23b6447a", + "name" : "0xe5eb4f45f2f4c52010", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1925000000 +}, +{ + "ETH_account" : "0xb862730c85a6641deb5e29f6733a63c17bc81ef9", + "name" : "nyjek", + "publicKey" : "SPH78NbDEdZ6np3hqoVP8jw5tnqoeCPgmjNP1942AVShie4FPdw5d", + "balance" : 4607000000 +}, +{ + "ETH_account" : "0x8a1788a19110275b06a2a7734146f42fbb1862b4", + "name" : "0x8a1788a19110275b06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 824000000 +}, +{ + "ETH_account" : "0x971c40dfe63def358cf2e6c01d5d1fde7108f965", + "name" : "0x971c40dfe63def358c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 123000000 +}, +{ + "ETH_account" : "0x88a0896f3181408722111b6dcb9e5d38f571f0f9", + "name" : "0x88a0896f3181408722", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 175000000 +}, +{ + "ETH_account" : "0x418eba649d9488781bee4ad38fa6ca345d181951", + "name" : "0x418eba649d9488781b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 999999 +}, +{ + "ETH_account" : "0x6648b5554632ed5d6ec27ec6737e98a0a3dbbc94", + "name" : "0x6648b5554632ed5d6e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 392581000 +}, +{ + "ETH_account" : "0xa155e9ff60208102f01d6a388daf13e968b815da", + "name" : "0xa155e9ff60208102f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 470 +}, +{ + "ETH_account" : "0x2d33fc25468724c498a107d0583dfe532f4c5b32", + "name" : "sphtxman", + "publicKey" : "SPH7gx1aHuzQz6WKKJAwH12KreLxtvjiYJF6uMfTap9PE1o36PGEA", + "balance" : 3955503377 +}, +{ + "ETH_account" : "0x95073aa4b0a9b5b676d4f6dc74e0c9777161a9b8", + "name" : "0x95073aa4b0a9b5b676", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0x64f84548fc815ca1e8f2a72a073f5b7a273d162b", + "name" : "0x64f84548fc815ca1e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2902581203 +}, +{ + "ETH_account" : "0xb61c6908ae368dc4d1535a91bba410c1724a6a62", + "name" : "0xb61c6908ae368dc4d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 702478900 +}, +{ + "ETH_account" : "0xeb1afa846fff3cf7676100fc0e5f0a3af495aabc", + "name" : "0xeb1afa846fff3cf767", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1781460835 +}, +{ + "ETH_account" : "0x0bad96aa404beb3f21002ec2ce0bcb20413b66ca", + "name" : "0x0bad96aa404beb3f21", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 108493000 +}, +{ + "ETH_account" : "0x658f3a453dee59856939046da0cf2608067e8fd1", + "name" : "0x658f3a453dee598569", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 999790 +}, +{ + "ETH_account" : "0x5fde47636a107d0b427eabb3de1966c1eeb848dc", + "name" : "0x5fde47636a107d0b42", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33000000 +}, +{ + "ETH_account" : "0x2bbf719b599efe344063a557dc9d470998430162", + "name" : "0x2bbf719b599efe3440", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2532000000 +}, +{ + "ETH_account" : "0x66808d55eb48e4e3725679aa1c915a75573b0a11", + "name" : "0x66808d55eb48e4e372", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x2e2d915f0329999cf7823b5d5621b61e1848c755", + "name" : "0x2e2d915f0329999cf7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2841189609 +}, +{ + "ETH_account" : "0xd3fa77b362856d28e5ab9ad44062fa622b9925a3", + "name" : "0xd3fa77b362856d28e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 330000000 +}, +{ + "ETH_account" : "0x7b9159c7e921c5a50acc240af056ff1c7fbb0b4f", + "name" : "0x7b9159c7e921c5a50a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 447000000 +}, +{ + "ETH_account" : "0x909f78e0a5eef54fa9369ef4924fe0c46c45870c", + "name" : "0x909f78e0a5eef54fa9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 666000000 +}, +{ + "ETH_account" : "0xb710dd12060429bf51020d0fb25c33f3b0f45378", + "name" : "0xb710dd12060429bf51", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xad91994eb71a811ddfd16cd27acbf9792db07399", + "name" : "0xad91994eb71a811ddf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1282000000 +}, +{ + "ETH_account" : "0xf3249e77d48d70627b7361ce7dac6787709cd3a1", + "name" : "0xf3249e77d48d70627b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19580 +}, +{ + "ETH_account" : "0x8ea8522e5ec6d7c72b478590aaac1bee52925bb0", + "name" : "0x8ea8522e5ec6d7c72b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3169762200 +}, +{ + "ETH_account" : "0x147a31e063b5c91a7cb5b7534aaeb6371baf21c2", + "name" : "0x147a31e063b5c91a7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2069178000 +}, +{ + "ETH_account" : "0xf47d1ab8754e1976af4bc6b0ca4f912602ce748b", + "name" : "0xf47d1ab8754e1976af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x2f4a91720cccc79cd95019f94e6f5e4266c35c0d", + "name" : "0x2f4a91720cccc79cd9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 318000000 +}, +{ + "ETH_account" : "0xfefbed5866d0c741b4c8a69a7e215c869ac6c2cc", + "name" : "0xfefbed5866d0c741b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 549754000 +}, +{ + "ETH_account" : "0x0d26d227db9ccfcd9c7d65c98435971102e23e46", + "name" : "0x0d26d227db9ccfcd9c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 819681000 +}, +{ + "ETH_account" : "0x5af2b9f1e7d060788f223642c27a93185063a158", + "name" : "0x5af2b9f1e7d060788f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1700000000 +}, +{ + "ETH_account" : "0x138aa8616cb740abd232b598499fd99a02f553e1", + "name" : "0x138aa8616cb740abd2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 132000000 +}, +{ + "ETH_account" : "0xf5490f4e055aacad9f0d51a16838788078686082", + "name" : "0xf5490f4e055aacad9f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 956727000 +}, +{ + "ETH_account" : "0x83049b20dce492af94d8ff5b8324078f4ef3ac5d", + "name" : "0x83049b20dce492af94", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5865250000 +}, +{ + "ETH_account" : "0x2fde89b21c09dc73b3fe32eebd4fd67bb4d84b0a", + "name" : "0x2fde89b21c09dc73b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3659722000 +}, +{ + "ETH_account" : "0xd069aafc48af5a9e054cb05c6a54c1c9e6c3be6f", + "name" : "0xd069aafc48af5a9e05", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 108000000 +}, +{ + "ETH_account" : "0x1bf38b62c051530b7e10a65c0e498cc82a6d3ddf", + "name" : "0x1bf38b62c051530b7e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5 +}, +{ + "ETH_account" : "0x30424d836fcaad30d8ed3ffa50c4c9b1164e9916", + "name" : "0x30424d836fcaad30d8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5597697750 +}, +{ + "ETH_account" : "0x77a7b8fcc69215794ea55cbb00504366d8ab22ae", + "name" : "0x77a7b8fcc69215794e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 178000 +}, +{ + "ETH_account" : "0x9b918d33c5b462a2505ad3a2061e25e75a7af1a8", + "name" : "0x9b918d33c5b462a250", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 444738 +}, +{ + "ETH_account" : "0x0fada0c486e0d7c024bb39333c2bfc0c16bf7881", + "name" : "0x0fada0c486e0d7c024", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 132427927 +}, +{ + "ETH_account" : "0xb8ae860c0f2044f57b9bdec052bff267fe254c4f", + "name" : "0xb8ae860c0f2044f57b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4100000000 +}, +{ + "ETH_account" : "0x2edd202696e98803f55836bc8d5f10825252b3ff", + "name" : "0x2edd202696e98803f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 946000000 +}, +{ + "ETH_account" : "0xb6afd73afdf9cf7eef8dc45a1cb7f95ef8a0d002", + "name" : "0xb6afd73afdf9cf7eef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 539967182 +}, +{ + "ETH_account" : "0xc98eab91ea9f9ec63952ac012d269f2c91fc5b58", + "name" : "0xc98eab91ea9f9ec639", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 295501194 +}, +{ + "ETH_account" : "0x49e80b920b8e26b816fa94b5b24884e29a39df7f", + "name" : "enivien", + "publicKey" : "SPH53JEkSMnkrjmMjCtL6TjmLGLxojjgiyHA4gADxC8borh2EWJPZ", + "balance" : 2500000000 +}, +{ + "ETH_account" : "0xff244b192927167dd36eee83fb62184f9297127b", + "name" : "0xff244b192927167dd3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 84942000 +}, +{ + "ETH_account" : "0x9a1c1b5554dbc42f6c07a2208c57925fc25c67a2", + "name" : "0x9a1c1b5554dbc42f6c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1096000000 +}, +{ + "ETH_account" : "0x2ac91860c86d17cc1b6f8962691037fa501815de", + "name" : "0x2ac91860c86d17cc1b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 119 +}, +{ + "ETH_account" : "0x307fc8a92ea1060dc025f2d704e657ab2f38c3d4", + "name" : "0x307fc8a92ea1060dc0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 830881 +}, +{ + "ETH_account" : "0xe4e94e46259a1cb9e7b4471d70e9f8069fd4603e", + "name" : "0xe4e94e46259a1cb9e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 97380 +}, +{ + "ETH_account" : "0xb7ce337ef4edaf1b0eca6f617330e1fad590b761", + "name" : "0xb7ce337ef4edaf1b0e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 476213899 +}, +{ + "ETH_account" : "0x0b4661ad27e0c98e80a36a8b4f578537fc302f0c", + "name" : "0x0b4661ad27e0c98e80", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 472644581 +}, +{ + "ETH_account" : "0xfd33d858f9350cf7f58ed7826e74315126d78f8b", + "name" : "0xfd33d858f9350cf7f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3684000000 +}, +{ + "ETH_account" : "0x157a01978944ebd5f546da0663299fd9d2f77a7d", + "name" : "0x157a01978944ebd5f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3317000000 +}, +{ + "ETH_account" : "0x774e96d6b2b44e23de41d88b9ae9d66963da11cb", + "name" : "0x774e96d6b2b44e23de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 602401000 +}, +{ + "ETH_account" : "0xb8f3f38f2803c5e0820f3ad6c2f196f8ded270ab", + "name" : "0xb8f3f38f2803c5e082", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5500000000 +}, +{ + "ETH_account" : "0x94c1544afd1a5dfa147159629cfdb5aba1d298eb", + "name" : "0x94c1544afd1a5dfa14", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3536153000 +}, +{ + "ETH_account" : "0x42571c41073342a33dc441338d843d9345a42fae", + "name" : "0x42571c41073342a33d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 276000000 +}, +{ + "ETH_account" : "0xdaca7d611df2e707888b4f3d0341873beafd6cee", + "name" : "0xdaca7d611df2e70788", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 218516000 +}, +{ + "ETH_account" : "0xcddf0c3a765615db8a125876bca2e6bb6122ee84", + "name" : "0xcddf0c3a765615db8a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1794454432 +}, +{ + "ETH_account" : "0x620d8e91c682deb1e6bd226093eb9466158a0782", + "name" : "0x620d8e91c682deb1e6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xc625ab000fe195f31c306cce37adfb57fbd295d8", + "name" : "samssopie", + "publicKey" : "SPH6nYvdkKyrcpTB8n5zHx2G52MuYxyY7w5Zjn2P5Lx9myzGMYd6T", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0x82b8f2b767668ed10dbd86766f3ba905c88a9e35", + "name" : "0x82b8f2b767668ed10d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 73222000 +}, +{ + "ETH_account" : "0xc4cd394728f78af7c1cc1e356c129add9c406d2b", + "name" : "0xc4cd394728f78af7c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 271666666 +}, +{ + "ETH_account" : "0x431b74861b42cca144a90b521b716882d9c98640", + "name" : "0x431b74861b42cca144", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 493416776 +}, +{ + "ETH_account" : "0x8d64c91f7a2e84975cfd8931e170f067a4419c79", + "name" : "0x8d64c91f7a2e84975c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1122402903 +}, +{ + "ETH_account" : "0x3c8a682d7ee19aa75ed9b8170e645d1f8bfa86d7", + "name" : "0x3c8a682d7ee19aa75e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 928398742 +}, +{ + "ETH_account" : "0xdf4584b4d814fc75779c2f5e1c4d791561bec17b", + "name" : "0xdf4584b4d814fc7577", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1635260000 +}, +{ + "ETH_account" : "0x7bf6983e96993553e1021ecb02f5418052104ff2", + "name" : "0x7bf6983e96993553e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4039000000 +}, +{ + "ETH_account" : "0x92b2fdbee84d34586b27f8dd9d9863eca0db2ead", + "name" : "0x92b2fdbee84d34586b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1271557000 +}, +{ + "ETH_account" : "0x74a1f8da47bb4a5da5a9f61f9db1599775dfc9e8", + "name" : "0x74a1f8da47bb4a5da5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19200000000 +}, +{ + "ETH_account" : "0xf327ed0f4a4585363ee4bebb27c20acaf0055027", + "name" : "0xf327ed0f4a4585363e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 116000000 +}, +{ + "ETH_account" : "0x0efec106cd69fc2d73451fffe58298eaccfddd49", + "name" : "0x0efec106cd69fc2d73", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600000000 +}, +{ + "ETH_account" : "0x9af249b9daa4d6e745905d5d7837eae4f9a29c27", + "name" : "0x9af249b9daa4d6e745", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xd067434f2fee4c4f3ce904115f5f356dbef4f060", + "name" : "0xd067434f2fee4c4f3c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x4b064388f61a74ca692e37bf871cb0609f8fa9d8", + "name" : "0x4b064388f61a74ca69", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xf5d64d673cf306d47de04cebffee7bcc8962cd75", + "name" : "0xf5d64d673cf306d47d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21823954000 +}, +{ + "ETH_account" : "0x0d8297e6f723a449dcaf1f097fc0984480737803", + "name" : "0x0d8297e6f723a449dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 299315806 +}, +{ + "ETH_account" : "0x839c87289f92307677b21e58d0bffd139baaf489", + "name" : "0x839c87289f92307677", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2812636583 +}, +{ + "ETH_account" : "0x4bb6925c04a2602a8f4ab8d2a4c908814f4067b4", + "name" : "0x4bb6925c04a2602a8f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 337000000 +}, +{ + "ETH_account" : "0xb8e89a97014f0b98b746c47dc0be64f6b33bbc5a", + "name" : "0xb8e89a97014f0b98b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 205000000 +}, +{ + "ETH_account" : "0x595f46012a3e4eab4bfafbdef5a8edad6122e4e3", + "name" : "0x595f46012a3e4eab4b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x251932ce9d5c3f44f0cc34b23093ca95c2536c5f", + "name" : "0x251932ce9d5c3f44f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 64000000 +}, +{ + "ETH_account" : "0x5560785f12f78f551ef0dfffca12cc0aa1504a9e", + "name" : "0x5560785f12f78f551e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5734 +}, +{ + "ETH_account" : "0x18b09ab91b77ccd4b2e3e48d85d92befeeb071ac", + "name" : "0x18b09ab91b77ccd4b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 248000000 +}, +{ + "ETH_account" : "0xb0504044d571d378234d8006066a77fe39fa17dd", + "name" : "0xb0504044d571d37823", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 35000000 +}, +{ + "ETH_account" : "0x3308b3fed7f28ca553b4df63f512dc76d2ca19d4", + "name" : "0x3308b3fed7f28ca553", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x3fda8e599cfdc05dfa49e031c1a6a17b68236c93", + "name" : "0x3fda8e599cfdc05dfa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3657999653 +}, +{ + "ETH_account" : "0xb0ab05f8beba695ea4b724c3a1dc3a290f81a85d", + "name" : "koalid", + "publicKey" : "SPH614nrc8SzW8bqbE2WMjTRTuJrU7yyFsAdDAg6E9L8bWdWmdmiW", + "balance" : 400000000 +}, +{ + "ETH_account" : "0x29a746d92e6d955c317bd51df3cd00deb1f99230", + "name" : "piekesophia", + "publicKey" : "SPH6vT79PFwJZX3uWYP7cCKM1AnNANuJnWi6H84UYdKcFXzSzHyrT", + "balance" : 105381506 +}, +{ + "ETH_account" : "0x1237505e1e8420dec1075ba6b65b17532474f017", + "name" : "0x1237505e1e8420dec1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 211000000 +}, +{ + "ETH_account" : "0xaa0e6ca7ae50ffa94d02c3ceabdbca01a10fe17a", + "name" : "0xaa0e6ca7ae50ffa94d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 802000000 +}, +{ + "ETH_account" : "0xb08507ac82ba4f9c35139e3bc3db8b1476560bc9", + "name" : "0xb08507ac82ba4f9c35", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 323000000 +}, +{ + "ETH_account" : "0x92923aaef2231eb62867d10299219f1308ef8afa", + "name" : "0x92923aaef2231eb628", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000 +}, +{ + "ETH_account" : "0x59b23033d4ccc6beb4b377becf55ebe540c5e797", + "name" : "0x59b23033d4ccc6beb4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 891212000 +}, +{ + "ETH_account" : "0x8a8a6b1ed9fe4327380f8e8e7c254580d741ccf7", + "name" : "0x8a8a6b1ed9fe432738", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 109996424560 +}, +{ + "ETH_account" : "0x5e4262b55598f93602ec9cb02af573c0f82438aa", + "name" : "0x5e4262b55598f93602", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25656000000 +}, +{ + "ETH_account" : "0xc1ec8373685ece896635eb673b108dca6cd04c53", + "name" : "0xc1ec8373685ece8966", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2180000000 +}, +{ + "ETH_account" : "0x091db484d7b1649e3aed3fc4aaa709a0dc181e39", + "name" : "0x091db484d7b1649e3a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6663354976 +}, +{ + "ETH_account" : "0x44afdfdd7a0a8429f34de1ba9b5ccce631916e17", + "name" : "0x44afdfdd7a0a8429f3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1157902573 +}, +{ + "ETH_account" : "0x941b1a53b7fbe701146affc32f488839c10b828e", + "name" : "0x941b1a53b7fbe70114", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 457808000 +}, +{ + "ETH_account" : "0xe2c1f93debd44a6386e37e6f8bfc9e5f81ebbcad", + "name" : "0xe2c1f93debd44a6386", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1165801668 +}, +{ + "ETH_account" : "0xff1bf78d7d9ffed59ff87c98e41d599364379543", + "name" : "0xff1bf78d7d9ffed59f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4000 +}, +{ + "ETH_account" : "0xba0f5d63cc9c74248eb6282fd5b42b3206966353", + "name" : "0xba0f5d63cc9c74248e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3750790000 +}, +{ + "ETH_account" : "0x25254785890e2cf80b54a96a7f06aaad194509d2", + "name" : "0x25254785890e2cf80b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 255000000 +}, +{ + "ETH_account" : "0x25a70bc6edd6488702e9af6fbccad0d90696181b", + "name" : "0x25a70bc6edd6488702", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 690000000 +}, +{ + "ETH_account" : "0xe5f92c9d2e4accf80ca8b0d1f26eaa6ef3f2e354", + "name" : "0xe5f92c9d2e4accf80c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x84def6c3d2de4465b39bcb545d3dd0dd4f56aa4c", + "name" : "0x84def6c3d2de4465b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0x008a59c3dfc3fba03ebdb84b5f3d73e75e1c48c9", + "name" : "0x008a59c3dfc3fba03e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 430000000 +}, +{ + "ETH_account" : "0xdd358784f44f62491c93af1b66eecb3517ecd0fd", + "name" : "0xdd358784f44f62491c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 695000000 +}, +{ + "ETH_account" : "0x4937f97073153301b3efc75ffec8da8e188cf275", + "name" : "0x4937f97073153301b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 955000000 +}, +{ + "ETH_account" : "0x0c6dafc018b85774cb4fbe495a9327d5ef278386", + "name" : "0x0c6dafc018b85774cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 595000000 +}, +{ + "ETH_account" : "0x57255cc26e1cbdcf3b801cb5a73f5e58e1273e04", + "name" : "0x57255cc26e1cbdcf3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 665000 +}, +{ + "ETH_account" : "0x07bc2b59c2e1a71815e17e83d0976de94cea4d8a", + "name" : "mynameisgeoff", + "publicKey" : "SPH4upHvfC4LEaroYNAxbeGQCms9fMc1WNYhTciaZKywAW8R3kjEY", + "balance" : 3125718553 +}, +{ + "ETH_account" : "0x18f77bdc7c5171f56f5a1b9db071a2e741a69bb8", + "name" : "0x18f77bdc7c5171f56f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1410000000 +}, +{ + "ETH_account" : "0x903e6e90ccc203fa7618a5e51efc484a00f8f688", + "name" : "ssdssphtxswap", + "publicKey" : "SPH5k1WJeApr4KqzUmGCayYf84TvZFCZAuVMYj6Fkip5PKrCK8XA2", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0xaaeecbc107da03dca37020be3adf42d306de35c0", + "name" : "jfreemann1337", + "publicKey" : "SPH7iGRgJ2dgsYFscXYS19GwHXep9uy1rsMQChUZdd9kWqZyyHi7P", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0x5a752ce872eac9df2bd53f4dbafa87555a4e7810", + "name" : "0x5a752ce872eac9df2b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 762898687 +}, +{ + "ETH_account" : "0x38b5369ec31b36bbf87e348616a463fae1635019", + "name" : "0x38b5369ec31b36bbf8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 533000000 +}, +{ + "ETH_account" : "0xb89898a9e0dbda15bf03b6c245c58f47aea007e9", + "name" : "0xb89898a9e0dbda15bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 919340000 +}, +{ + "ETH_account" : "0x439fe0919fd952daf95d7c68d082107470c771c2", + "name" : "0x439fe0919fd952daf9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000707000 +}, +{ + "ETH_account" : "0x83a4999089bf8fb5131bf722d15a85ed05808329", + "name" : "0x83a4999089bf8fb513", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 42000000 +}, +{ + "ETH_account" : "0x0be3b8fe90f666c1e7fd679338325002e26210fd", + "name" : "0x0be3b8fe90f666c1e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 190 +}, +{ + "ETH_account" : "0x4f60afd048b3036c5654cbd8a8ea317191c9d70a", + "name" : "0x4f60afd048b3036c56", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 477098023 +}, +{ + "ETH_account" : "0x73752bfbfc6c1ba92950bfb1616d3a7099880846", + "name" : "0x73752bfbfc6c1ba929", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5047189774 +}, +{ + "ETH_account" : "0xc0588830924e7977a26622a7485a660f809c0939", + "name" : "0xc0588830924e7977a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 374583000 +}, +{ + "ETH_account" : "0xcd206946627f0774bf3cae471e39e12fb13c3944", + "name" : "ryansophiatx", + "publicKey" : "SPH8YUc4BM9KUrc5vpahhnndyEdSMWNuUXiDsWy1pt1rc6yUm6V1R", + "balance" : 36549770320 +}, +{ + "ETH_account" : "0xa5803e0f2944862efbd7a7df5343029fc1431b01", + "name" : "0xa5803e0f2944862efb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 111000000 +}, +{ + "ETH_account" : "0x733ada1fa9ae3aa35d54f533797b6778ae455694", + "name" : "0x733ada1fa9ae3aa35d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 555746000 +}, +{ + "ETH_account" : "0x0bdf207024aa7c83be12ef633313c03dc06285dc", + "name" : "olifea", + "publicKey" : "SPH6bqtWz123ZCq2Z6eSxYR7tXt2us4RrUeJdeArj8VmkHNkAAqpv", + "balance" : 3024617000 +}, +{ + "ETH_account" : "0xf24a3c425f7629c301deba4a54e10eca9578bcbf", + "name" : "0xf24a3c425f7629c301", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 259715922 +}, +{ + "ETH_account" : "0xde0f122b55ff4615f267132fa5f60d967aaa6a2f", + "name" : "popeye", + "publicKey" : "SPH7mTRVN6ibqgFxMaAa2g1gp6vEcKgUSYarKDnbkD6FUsBvEbXQM", + "balance" : 17507633799 +}, +{ + "ETH_account" : "0x6d004e7af12041cf7cf17a8353da58ece7e1e4cd", + "name" : "0x6d004e7af12041cf7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x5b9e851db48dfa3cf541d1d452a1afdfd3046882", + "name" : "0x5b9e851db48dfa3cf5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000 +}, +{ + "ETH_account" : "0x915b51d2528daa06c4b7d13f548b61401750b8ef", + "name" : "0x915b51d2528daa06c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 319454704 +}, +{ + "ETH_account" : "0x6dcb68c8ba9614210f0c7c2db2d8bdfc6a54d439", + "name" : "0x6dcb68c8ba9614210f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 185321666 +}, +{ + "ETH_account" : "0xcbe3a8a733a5699e1a2c5691d5953ff999a8c63a", + "name" : "0xcbe3a8a733a5699e1a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 442930000 +}, +{ + "ETH_account" : "0x58e2eba7a551e5584da4ce2c5296d2db56dea318", + "name" : "0x58e2eba7a551e5584d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 950681000 +}, +{ + "ETH_account" : "0x5b8b9792da82bc3349e01d0bd4a4db87a40537de", + "name" : "0x5b8b9792da82bc3349", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x58ddb88ebca5f131504babe82e5c515964c4b90d", + "name" : "0x58ddb88ebca5f13150", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 849477943 +}, +{ + "ETH_account" : "0x30be4c2a35f7c7ac68474d42fd1d8fdb19520ab7", + "name" : "0x30be4c2a35f7c7ac68", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 445026000 +}, +{ + "ETH_account" : "0xe45c549e9ec29bb55f74622916ae1a4891c0d660", + "name" : "0xe45c549e9ec29bb55f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 628000000 +}, +{ + "ETH_account" : "0xa4038725b85d228ef2727e2b0729fa7ca617930d", + "name" : "0xa4038725b85d228ef2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 192 +}, +{ + "ETH_account" : "0x382fc61a9e2b665e85249e34bd6b909a4ddcf851", + "name" : "0x382fc61a9e2b665e85", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 366576000 +}, +{ + "ETH_account" : "0x1a7861a39e74d93c8eb883d774f168be46f81228", + "name" : "0x1a7861a39e74d93c8e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3657000000 +}, +{ + "ETH_account" : "0x20863352e9bf354060ae1486f0029e2cef485bf1", + "name" : "0x20863352e9bf354060", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 918704 +}, +{ + "ETH_account" : "0x3bb29ee888680bdb3b4e406290d07b29d6f57ebc", + "name" : "0x3bb29ee888680bdb3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1598286793 +}, +{ + "ETH_account" : "0xa852520c15441bbb95157b4bbd64f8e515a2811a", + "name" : "0xa852520c15441bbb95", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 194929558 +}, +{ + "ETH_account" : "0xd79d12733986e695ec987f004e843d30a8dfd472", + "name" : "0xd79d12733986e695ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 289500000 +}, +{ + "ETH_account" : "0x38233c3b664512f89b546e11511e0d77286a408d", + "name" : "0x38233c3b664512f89b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80000000 +}, +{ + "ETH_account" : "0x2affba2c4885933b2fdd726162b4ec4d84000499", + "name" : "0x2affba2c4885933b2f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 49351959 +}, +{ + "ETH_account" : "0x62ec1ddce54c6f3fab9e35fab2c9a9881c1545bf", + "name" : "0x62ec1ddce54c6f3fab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1507000000 +}, +{ + "ETH_account" : "0xb7a2422b771d5ccf425f6101d389703a653fcdab", + "name" : "0xb7a2422b771d5ccf42", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3200000000 +}, +{ + "ETH_account" : "0xe81ca4930e0b90db3184389ec3769ac7ccf786ab", + "name" : "0xe81ca4930e0b90db31", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6705472000 +}, +{ + "ETH_account" : "0x1c376277c80e8e760a5ab04fbfb12c2603f1d5de", + "name" : "0x1c376277c80e8e760a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 333713 +}, +{ + "ETH_account" : "0x74821b3199b536fa33e46ac5f55194f32e1f297d", + "name" : "0x74821b3199b536fa33", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000000 +}, +{ + "ETH_account" : "0x5c780834ccc91160cff9f7c11e52543eb5547e35", + "name" : "0x5c780834ccc91160cf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 776 +}, +{ + "ETH_account" : "0xb5e2c98cf2879bd017fafb56a196da0770a2473f", + "name" : "0xb5e2c98cf2879bd017", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 130000000 +}, +{ + "ETH_account" : "0x83a3956b57b66af6faf288761a9a1a59d8384e85", + "name" : "0x83a3956b57b66af6fa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50500000 +}, +{ + "ETH_account" : "0x43c6ce4a85d723bcac650570c36793168e44dec2", + "name" : "0x43c6ce4a85d723bcac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 243000000 +}, +{ + "ETH_account" : "0x3ff68c0574a830211e47fe7adb46c943a4c64623", + "name" : "0x3ff68c0574a830211e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000000 +}, +{ + "ETH_account" : "0x4cc94bb152c6fe358494d24b1528f8815cdf192d", + "name" : "0x4cc94bb152c6fe3584", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1700000000 +}, +{ + "ETH_account" : "0x78e8d3ba4016571658ae26178a9ccd6b87f9fec7", + "name" : "0x78e8d3ba4016571658", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 43000000 +}, +{ + "ETH_account" : "0xf570baa5b2419551603218a6446c65db37e8f5d6", + "name" : "0xf570baa5b241955160", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 290926920 +}, +{ + "ETH_account" : "0x88e3747986cb89f89bfd931dde946efd9cc029ef", + "name" : "0x88e3747986cb89f89b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4302294533 +}, +{ + "ETH_account" : "0xb68b9bee427be97f76bbbb25eb23dd5d93a68bb9", + "name" : "0xb68b9bee427be97f76", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x9b4b5eb69fafad55299aa43173e21e191023501a", + "name" : "0x9b4b5eb69fafad5529", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 283932319 +}, +{ + "ETH_account" : "0x5f2c3fba30bbc0d200f6927ae1b36f349d03b282", + "name" : "0x5f2c3fba30bbc0d200", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 125000000 +}, +{ + "ETH_account" : "0xebb39e19f916bc58ca12be2400dfb863ac20549c", + "name" : "0xebb39e19f916bc58ca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4265000000 +}, +{ + "ETH_account" : "0xc96f37a5b0aa16dcd32d5a4be2648fc495ede2a3", + "name" : "0xc96f37a5b0aa16dcd3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 102035000 +}, +{ + "ETH_account" : "0xc30adcf3da566a898cd03d359af1ba94948001ac", + "name" : "0xc30adcf3da566a898c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2141390000 +}, +{ + "ETH_account" : "0x3fd99764ec3758b2d16fac74f7a3362c09e3993f", + "name" : "0x3fd99764ec3758b2d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 87533 +}, +{ + "ETH_account" : "0xaf11af61bd1e605ed31fa5cb91799b092a9a58e5", + "name" : "0xaf11af61bd1e605ed3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 535000000 +}, +{ + "ETH_account" : "0xc3fbf8ed3cd9d437e74625a2d83b71ab3ecd44d0", + "name" : "0xc3fbf8ed3cd9d437e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10030000000 +}, +{ + "ETH_account" : "0x7bf4829413518829458adb4e3ed17815b50b7ece", + "name" : "0x7bf482941351882945", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2550000000 +}, +{ + "ETH_account" : "0xe6051de84ac4b5165544934502f418930d6ebb39", + "name" : "0xe6051de84ac4b51655", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 403000 +}, +{ + "ETH_account" : "0x670e994b0739fcb193549688c6300f76e23bb4e4", + "name" : "0x670e994b0739fcb193", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 390247000 +}, +{ + "ETH_account" : "0xc09898326e274b9196bfb20b3e5bb3813c914c60", + "name" : "0xc09898326e274b9196", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2521541000 +}, +{ + "ETH_account" : "0x58c219b9f9ca7098cc52f5ad45f4553cc2c14f32", + "name" : "0x58c219b9f9ca7098cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x33d0ed45ff8198ef5aec738fa4802ecb23e138df", + "name" : "0x33d0ed45ff8198ef5a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2723000000 +}, +{ + "ETH_account" : "0x7e46594603505ee1fe6cd639f6cfa60f8e2d7f57", + "name" : "0x7e46594603505ee1fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3998971865 +}, +{ + "ETH_account" : "0x0c4300ac9f09a858418f45c8bf1fa01437ade1ef", + "name" : "0x0c4300ac9f09a85841", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1150000000 +}, +{ + "ETH_account" : "0x59b2d3f708521d6b630284a25e031ab63de874c2", + "name" : "0x59b2d3f708521d6b63", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 87512822 +}, +{ + "ETH_account" : "0xd3a986cc4327c5c25e07d7f8a6b31034011f6cd4", + "name" : "stoner", + "publicKey" : "SPH5D7stUqHiAhQR96vmeA7FZyATvTFo9Vm48TxCECwHaQDrMERYc", + "balance" : 277067629 +}, +{ + "ETH_account" : "0xf6bcd4eb5070312be2f03dfaa63ff6b52cf2cd2e", + "name" : "0xf6bcd4eb5070312be2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8087071000 +}, +{ + "ETH_account" : "0xcc4683cbbf00890857e4ff51e25c26b46538fcb2", + "name" : "0xcc4683cbbf00890857", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 475000000 +}, +{ + "ETH_account" : "0x71acaf6e6a472b55983a5cf8ea8b05e3bcdae55c", + "name" : "0x71acaf6e6a472b5598", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5899841000 +}, +{ + "ETH_account" : "0xf4fca18db3398289d114d1f4f5a8273c3153e96a", + "name" : "0xf4fca18db3398289d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11544699999 +}, +{ + "ETH_account" : "0x631a1789cee1bbd57f8a32240f880d3a67c164aa", + "name" : "0x631a1789cee1bbd57f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xff33946ac0fd67639459fdab21771fb28dc76982", + "name" : "0xff33946ac0fd676394", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 89626 +}, +{ + "ETH_account" : "0xb717885257c186b62ec524f526bb7de6c5951ff5", + "name" : "0xb717885257c186b62e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 730000000 +}, +{ + "ETH_account" : "0x34b07fa22aa7b140d9d038150ded2404b50e36df", + "name" : "0x34b07fa22aa7b140d9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1911141554 +}, +{ + "ETH_account" : "0x2f250ce353c409c515febeb87a955bed329bacef", + "name" : "0x2f250ce353c409c515", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1999790000 +}, +{ + "ETH_account" : "0x044b53a2d235159946493f140b8560927a44388f", + "name" : "0x044b53a2d235159946", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39000000 +}, +{ + "ETH_account" : "0xaf96cbe1971e7a02e8da495ec32847e5f200d6f6", + "name" : "0xaf96cbe1971e7a02e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0xe2058aecb060bfaf71a951f97eb60d75d045ba16", + "name" : "0xe2058aecb060bfaf71", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 75796 +}, +{ + "ETH_account" : "0xe4041e69e0bb34c194e4cc274b99acb267307f0a", + "name" : "0xe4041e69e0bb34c194", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 89899000 +}, +{ + "ETH_account" : "0x4602a64c442bb3f52883f6349e1e16cb9b304faf", + "name" : "0x4602a64c442bb3f528", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 240279692 +}, +{ + "ETH_account" : "0x562ca8b5550ef827b8f9b329ff42fcbee602f164", + "name" : "0x562ca8b5550ef827b8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1960438000 +}, +{ + "ETH_account" : "0x7b5722fd441a9e0ca28f848e37499b1ab5eeaab5", + "name" : "0x7b5722fd441a9e0ca2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1049436914 +}, +{ + "ETH_account" : "0xf02d1f1562a5b5b6a85201ce4e1f0ee0b95c6217", + "name" : "0xf02d1f1562a5b5b6a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 71000000 +}, +{ + "ETH_account" : "0xbd0ec8a0ef90fe27dbdacbb86b34743b09c7f13c", + "name" : "0xbd0ec8a0ef90fe27db", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9000 +}, +{ + "ETH_account" : "0x8dd1463a8035c2b8e7d9eb2496bbdaca3ca6e510", + "name" : "0x8dd1463a8035c2b8e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 84392000 +}, +{ + "ETH_account" : "0xcc4ea1e31fa090ed2bf54259286b65341ff4f3be", + "name" : "0xcc4ea1e31fa090ed2b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1769999999 +}, +{ + "ETH_account" : "0xea669ac6209cfcc3e4fe74946f9db846c0c833da", + "name" : "0xea669ac6209cfcc3e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 130000000 +}, +{ + "ETH_account" : "0x9230c7433aa64ba688e6b36b515a95aeb173d735", + "name" : "0x9230c7433aa64ba688", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 302000000 +}, +{ + "ETH_account" : "0x1533a6d6515f07bce129350ec25c59a9a69ad7f9", + "name" : "0x1533a6d6515f07bce1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xc2baa26943c1b649c8a9dc0f1abaa5f1e0108652", + "name" : "0xc2baa26943c1b649c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 534000 +}, +{ + "ETH_account" : "0xc7e573e77012b02e2c6bf24d256ee73432dc4e19", + "name" : "0xc7e573e77012b02e2c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 199000000 +}, +{ + "ETH_account" : "0x477c867a6692731ce95e9a7eac09d8a356c2f30c", + "name" : "0x477c867a6692731ce9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 131989162 +}, +{ + "ETH_account" : "0x871bf2405a0e61154300cc13bcb195a26dd6b41c", + "name" : "0x871bf2405a0e611543", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1817286855 +}, +{ + "ETH_account" : "0x64bba15e24d8bd2eeb1ca82dcf5bd017c4942852", + "name" : "0x64bba15e24d8bd2eeb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 176764454 +}, +{ + "ETH_account" : "0x8a2cf2b4d25f3c83d2a5dd14b072ab45f3c27396", + "name" : "0x8a2cf2b4d25f3c83d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 790000000 +}, +{ + "ETH_account" : "0xd2ba7dd9214cb91d5c9193d4c9c94afa5d77aea2", + "name" : "0xd2ba7dd9214cb91d5c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0xc4b4feb621406492145f2dd8aa59a7ce75ac8767", + "name" : "0xc4b4feb62140649214", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2773657255 +}, +{ + "ETH_account" : "0x15e387f9b87a5995cbc6b90368d7939019bfc214", + "name" : "0x15e387f9b87a5995cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1702000000 +}, +{ + "ETH_account" : "0x0bcac9a597f9750372cc4f49ab2dbdd857473032", + "name" : "0x0bcac9a597f9750372", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0xfc71c47fa57b7aa6093bd8483fdeaa8d4e3748aa", + "name" : "0xfc71c47fa57b7aa609", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8100000 +}, +{ + "ETH_account" : "0x1a6c37d03923a0b6f33c0957f18d84795d82df7c", + "name" : "0x1a6c37d03923a0b6f3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 325000000 +}, +{ + "ETH_account" : "0x6eee53cf2862dfb2bb63a2a52d71d757a4dc818d", + "name" : "0x6eee53cf2862dfb2bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 992850000 +}, +{ + "ETH_account" : "0x398e5eff8d5172f8ce8786f1f547c6d70114a609", + "name" : "0x398e5eff8d5172f8ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1799919970 +}, +{ + "ETH_account" : "0xb971688675a561b1f3e73f0aaa044e64b829019a", + "name" : "0xb971688675a561b1f3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 156614000 +}, +{ + "ETH_account" : "0xa26086d44da87827c7c8f8df2ad22e42488e4a27", + "name" : "nickssophia", + "publicKey" : "SPH86GhSZx345DMaUwv1Gu8sb4Dp5xwqQ9JwSDLdPGttLHVmYgUtq", + "balance" : 10963405700 +}, +{ + "ETH_account" : "0x21851f2d6b39bf4a2e869785d19af45959ec5b04", + "name" : "0x21851f2d6b39bf4a2e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 385617259 +}, +{ + "ETH_account" : "0x85390841708cd81ba4e5e644bbac58bcc8638043", + "name" : "0x85390841708cd81ba4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1069000000 +}, +{ + "ETH_account" : "0x0d22684fffa338ebdae6463ede253c91e7a2f733", + "name" : "linweiqiao", + "publicKey" : "SPH6FFMiQiwn36mYu7shfrx82KvtZZE7oskAQRkE3VLxEb25kgWU5", + "balance" : 12252000000 +}, +{ + "ETH_account" : "0x4353601126d4a6232c1379a051f009d599290dc6", + "name" : "0x4353601126d4a6232c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 569000000 +}, +{ + "ETH_account" : "0x689fb397dcf9f50244272953c0f90038e6cb2bee", + "name" : "0x689fb397dcf9f50244", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 74800 +}, +{ + "ETH_account" : "0x582b210ef3b6222d0cee7b330a866a6425ac7b90", + "name" : "0x582b210ef3b6222d0c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000000 +}, +{ + "ETH_account" : "0x5f317ba0fb5f34e3fe3bede46ecff2e955fb5ec2", + "name" : "0x5f317ba0fb5f34e3fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xb347cd0a9b3bad516bdf600d2c6eb68d24b6550d", + "name" : "0xb347cd0a9b3bad516b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7945311900 +}, +{ + "ETH_account" : "0xf41e6bac2900a74441a1e82a420eee21c37cb4c8", + "name" : "0xf41e6bac2900a74441", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 862978000 +}, +{ + "ETH_account" : "0xbd38a22e0ce1afb2ef2044ce57b8946bdbf3e42d", + "name" : "0xbd38a22e0ce1afb2ef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15 +}, +{ + "ETH_account" : "0x40dd9edd5a8f7844c0f0a2c685323343852134fd", + "name" : "0x40dd9edd5a8f7844c0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 102 +}, +{ + "ETH_account" : "0xbd72074c64260e84a974a2473a7881eb970cbe10", + "name" : "0xbd72074c64260e84a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19000000 +}, +{ + "ETH_account" : "0xb16a2fe4589a5659dd3533f1e35ad9e9074e4702", + "name" : "0xb16a2fe4589a5659dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 45000000 +}, +{ + "ETH_account" : "0x93d4cf925424b537e8555dfbaf9775afe9429574", + "name" : "0x93d4cf925424b537e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99601923 +}, +{ + "ETH_account" : "0xc3788d3e12041fcd01cbd1ac0c9bab219a8ffc16", + "name" : "0xc3788d3e12041fcd01", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0x2692b5b9fd5f30e13feb58ed92c979732c9c108b", + "name" : "0x2692b5b9fd5f30e13f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0xf003ff6fb0e8db4a5aeae10216e6c22cee186aad", + "name" : "0xf003ff6fb0e8db4a5a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5500000000 +}, +{ + "ETH_account" : "0x84630c111294b94272f71fcfc02aa150437c495d", + "name" : "0x84630c111294b94272", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 123608 +}, +{ + "ETH_account" : "0xdb0763efe0401df0bc28301dd4f4b706f92c14b8", + "name" : "0xdb0763efe0401df0bc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2271000000 +}, +{ + "ETH_account" : "0xe95eb840e6662d67727c1a662e4881bdcb47e59f", + "name" : "turgturgenev", + "publicKey" : "SPH8XzC5Xc57JDvfM9eciDPGNDKJRGX2HGz3yvgMDkgDmeMZMwXy7", + "balance" : 2421000000 +}, +{ + "ETH_account" : "0xac2bacb2a50beed8f99407c8156b0655709c64c1", + "name" : "0xac2bacb2a50beed8f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10008098860 +}, +{ + "ETH_account" : "0x12ba70634db209f0ff0ba142823eb72fb27ed7a2", + "name" : "0x12ba70634db209f0ff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xc037b9bff417ecccabd5610d910b87000cce97ea", + "name" : "0xc037b9bff417ecccab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 240000000 +}, +{ + "ETH_account" : "0x29cac5cc9ea633d80185ce90a489c85eecb68197", + "name" : "0x29cac5cc9ea633d801", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10800000 +}, +{ + "ETH_account" : "0xd1600041db40598524f3a34d2ed0b9ba333036a0", + "name" : "0xd1600041db40598524", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5540000000 +}, +{ + "ETH_account" : "0xb25821c3db6901e501a0f7ccb9f322c192c29ade", + "name" : "0xb25821c3db6901e501", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2465000000 +}, +{ + "ETH_account" : "0xc7603b574be3991f4d36ed3dbe673f013a7f8976", + "name" : "0xc7603b574be3991f4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 343500000 +}, +{ + "ETH_account" : "0x7e31c9ce97adfbb6e8011675dc711759929997d5", + "name" : "0x7e31c9ce97adfbb6e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 255000000 +}, +{ + "ETH_account" : "0x1fa09b795ca7c98f5a6877bcfc6e7ae67996d4b7", + "name" : "0x1fa09b795ca7c98f5a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 908200000 +}, +{ + "ETH_account" : "0x661694318a8ed7fef365741a5c285469412fad7d", + "name" : "0x661694318a8ed7fef3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 899999907 +}, +{ + "ETH_account" : "0x593816b86f1289045a3a7011dfe39093ec1faca8", + "name" : "0x593816b86f1289045a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 960000000 +}, +{ + "ETH_account" : "0xbbe846566f2172adc9c0bcdccf8d280ad60dfa67", + "name" : "0xbbe846566f2172adc9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 546385000 +}, +{ + "ETH_account" : "0x9a4889c7b6819a98d428c5181a396972a3270c39", + "name" : "0x9a4889c7b6819a98d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 597000000 +}, +{ + "ETH_account" : "0x00086f35099300e2f60e850b668d4019a86e28b2", + "name" : "0x00086f35099300e2f6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 323623099 +}, +{ + "ETH_account" : "0xda398af983484db3d3f8d49a6c46c361fdf0b080", + "name" : "0xda398af983484db3d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 246940069 +}, +{ + "ETH_account" : "0x59b550d787ec087a59a5690efb79630ac9f32108", + "name" : "0x59b550d787ec087a59", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28377000000 +}, +{ + "ETH_account" : "0x0d49c6c120f38f06b63fde4bcc725d156c81e8d4", + "name" : "0x0d49c6c120f38f06b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2766434671 +}, +{ + "ETH_account" : "0x02dc02262beee7720597632b6b39ec6fba24aed8", + "name" : "0x02dc02262beee77205", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 603000000 +}, +{ + "ETH_account" : "0xe420ff3bd4b6219986f805c573af2b5b22f46313", + "name" : "0xe420ff3bd4b6219986", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1942065000 +}, +{ + "ETH_account" : "0x2ae010145999640056d77690d5ac584d71b74c63", + "name" : "0x2ae010145999640056", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 74000000 +}, +{ + "ETH_account" : "0x0897a9edc844f08ec21b45e2fcb7f6fa319f0ca4", + "name" : "0x0897a9edc844f08ec2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 628000 +}, +{ + "ETH_account" : "0x6cc7f9efa5a7ba0a979c3877e8f0349809d2b661", + "name" : "0x6cc7f9efa5a7ba0a97", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1034792000 +}, +{ + "ETH_account" : "0x712113f30dd4f44a6de60aa4c4149f60f89c98aa", + "name" : "0x712113f30dd4f44a6d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 755000000 +}, +{ + "ETH_account" : "0x00bba03ed7b3ce9f1efdfc9945a95af6ed42a577", + "name" : "33swap33", + "publicKey" : "SPH6bQPUuSkxNaHQZHPSfkgMgkGiqcxsZUDFY1mKfWfN7dmvtfa6c", + "balance" : 4000000000 +}, +{ + "ETH_account" : "0x4f2851ad0092229ab2a53f8210c68b1c1f5e6e39", + "name" : "0x4f2851ad0092229ab2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1415342617 +}, +{ + "ETH_account" : "0x043f19855cc8b31941f72d4728a4d32c0476a70d", + "name" : "0x043f19855cc8b31941", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 256000000 +}, +{ + "ETH_account" : "0x83655d5d438856ab52c80314d202f7d48c7984cc", + "name" : "0x83655d5d438856ab52", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 195000000 +}, +{ + "ETH_account" : "0xb1bb20b14c090fa0c3501a221dba5dcd2ec1c40e", + "name" : "sam", + "publicKey" : "SPH5uxyDSs35SYkB8YBLF2icEnQm3Pm7nrWwHHePBjiWMMUwiX8gM", + "balance" : 9819000000 +}, +{ + "ETH_account" : "0xc3b498bcef26458d4e2b2a2acfa05f7a6ed8c145", + "name" : "wimvanleeuwen", + "publicKey" : "SPH8dkNMyukENxSknvLUsLPkCnvJtSvuEby7iqJTdrT79xHCR4Ld9", + "balance" : 1993819000 +}, +{ + "ETH_account" : "0xe2e61686b9f14a863fe9071292bad55b5947c6e9", + "name" : "achrafmlika", + "publicKey" : "SPH79ooQrDLAEqpzY9aWFSyWJtmruDiZv7skJA3T5zoLKnxTLKeeS", + "balance" : 560328763 +}, +{ + "ETH_account" : "0xbff9616dfdb470aabea65e1ce8875c31ebcfd2ea", + "name" : "0xbff9616dfdb470aabe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1637968967 +}, +{ + "ETH_account" : "0x37c12a14fb4e6433b9295e242a0beed4610f808f", + "name" : "0x37c12a14fb4e6433b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 445000000 +}, +{ + "ETH_account" : "0x90466c82bd20c83162dbc920676652ed30a9c9fb", + "name" : "0x90466c82bd20c83162", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450000000 +}, +{ + "ETH_account" : "0xd843575fcfddd0f375d9a3b6b50ea044ba749010", + "name" : "0xd843575fcfddd0f375", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x1e3abc249d0f31b23d8d6b64606895d76ad8fca5", + "name" : "0x1e3abc249d0f31b23d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xd07f9074f641cb70174bec2f3bc594046d7475b1", + "name" : "0xd07f9074f641cb7017", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xcdcaa9bc3b6e96d32b81009df88aad193dc28d1e", + "name" : "0xcdcaa9bc3b6e96d32b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 709000 +}, +{ + "ETH_account" : "0x45f0cdcf9a549e6866fd2a5f362de278f146b126", + "name" : "0x45f0cdcf9a549e6866", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 396000000 +}, +{ + "ETH_account" : "0x9c1cb7fe353c61b7a429d2f5765bf389139c9e87", + "name" : "0x9c1cb7fe353c61b7a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0x0860bf68816b1469a10fef89a96d9dba70e2bfb1", + "name" : "0x0860bf68816b1469a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 393000000 +}, +{ + "ETH_account" : "0x764ed420356f61d98ac21ee6dd6be1d608272fb9", + "name" : "0x764ed420356f61d98a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9501000000 +}, +{ + "ETH_account" : "0x938eef78a5d4348e49c9a7cd7a9361daba5c0ef5", + "name" : "0x938eef78a5d4348e49", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 259759713 +}, +{ + "ETH_account" : "0xec568be31a1394b15e038e1371fe426fa5060ddc", + "name" : "0xec568be31a1394b15e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 978163281 +}, +{ + "ETH_account" : "0x9c2a56391f3bdbe4e38ab1974a72bbe7603c54ac", + "name" : "0x9c2a56391f3bdbe4e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1055000000 +}, +{ + "ETH_account" : "0x7e4dec3a50bbeeb1e1b743e3b9587940b0652c85", + "name" : "massillon", + "publicKey" : "SPH7E9A1e423Ea2kUkp3CUtnrSLAL91QzT5pkXmCLu7qvWCdG3zs8", + "balance" : 3826364000 +}, +{ + "ETH_account" : "0x46fe04d41a30e773d21901680edffd428ca2cff6", + "name" : "0x46fe04d41a30e773d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 237173000 +}, +{ + "ETH_account" : "0x82b3c21d513f4b03b621794a764a5b65304f538a", + "name" : "0x82b3c21d513f4b03b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xb092512306480c27fe60f156e56eccb0c4b0c140", + "name" : "0xb092512306480c27fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 355000000 +}, +{ + "ETH_account" : "0x23ecd7495fec1978c62914accb054115e4edbc49", + "name" : "0x23ecd7495fec1978c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3755142000 +}, +{ + "ETH_account" : "0xcfa51a95edff2f519a589e9a7a3522de8525a405", + "name" : "0xcfa51a95edff2f519a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1400000000 +}, +{ + "ETH_account" : "0x542c2e188973a7320648ea7b2dbf590aa7e17342", + "name" : "0x542c2e188973a73206", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 163605000 +}, +{ + "ETH_account" : "0x2a1a38e71c807f32b2d60f9c9bec0164b07ac57f", + "name" : "drawthelinetime", + "publicKey" : "SPH88az4Z7zb14MpVJgnxeKn3nzSJGgEmHaBN7Adr9MJsfksRquoc", + "balance" : 10304131589 +}, +{ + "ETH_account" : "0xe9fb3941389927a158d6c31e8d328f41e6217b38", + "name" : "0xe9fb3941389927a158", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 461000000 +}, +{ + "ETH_account" : "0x90866ab62d443365a9cd01e7374d0a512cc6a675", + "name" : "0x90866ab62d443365a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5496 +}, +{ + "ETH_account" : "0x65c3d3e4431c133e6d6331ab15e312a8b5873cda", + "name" : "0x65c3d3e4431c133e6d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1109960000 +}, +{ + "ETH_account" : "0x7ad6e05f8961ae99863f9c371d4f4f88f1d5bc08", + "name" : "0x7ad6e05f8961ae9986", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000 +}, +{ + "ETH_account" : "0x9a065521ba01c0de50589bc6dc76df229a164f3b", + "name" : "0x9a065521ba01c0de50", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 354601738 +}, +{ + "ETH_account" : "0xc0392f009482e3489811c55315c48fef5bbaabc8", + "name" : "0xc0392f009482e34898", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x88d92011ff7010bdf7970f27f51c056366c29ba9", + "name" : "0x88d92011ff7010bdf7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450000000 +}, +{ + "ETH_account" : "0xfadf8ef9c18622b637a3b73dcf2dddb807043b41", + "name" : "0xfadf8ef9c18622b637", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7384102000 +}, +{ + "ETH_account" : "0xff86ac589a8ed9446d4536def86cbf629eb32469", + "name" : "0xff86ac589a8ed9446d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 746194 +}, +{ + "ETH_account" : "0x29f921284c0eae42ff9b7780c1380ee0032aedb7", + "name" : "0x29f921284c0eae42ff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 247000000 +}, +{ + "ETH_account" : "0x121cae6101ed8908372684811b4fe0039583fbb9", + "name" : "0x121cae6101ed890837", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5100416000 +}, +{ + "ETH_account" : "0x593946d57a4c84c999e9aeabc60758ac9691f744", + "name" : "0x593946d57a4c84c999", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 217605000 +}, +{ + "ETH_account" : "0x851e931a6cabbdd5b17d0da2cd4b0edf11941968", + "name" : "0x851e931a6cabbdd5b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xf668599da1ea73c6f19960b5e9c99475c4da1434", + "name" : "0xf668599da1ea73c6f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1075113188 +}, +{ + "ETH_account" : "0xb76a216fbe080781dc2ed61486a31b151a745a7b", + "name" : "0xb76a216fbe080781dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21168381249 +}, +{ + "ETH_account" : "0x71c3e4c1986ee20ad871556cade3fb2efd80f28e", + "name" : "0x71c3e4c1986ee20ad8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x39edda0924100a156a7f3f76ec5a7643673e3f4f", + "name" : "0x39edda0924100a156a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 196 +}, +{ + "ETH_account" : "0xe2f994fe2732d3f1e4e78d17437b4538bcfe378f", + "name" : "0xe2f994fe2732d3f1e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 698000000 +}, +{ + "ETH_account" : "0x748b91ffa1e258bf519e8d815b15c092d3bec37f", + "name" : "0x748b91ffa1e258bf51", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1155027620 +}, +{ + "ETH_account" : "0x793f7367126cecb19dfbe85e294fe43a47547f75", + "name" : "lcrsphtx", + "publicKey" : "SPH6GTowhdHD6M27Qgtw69Xu9ffE8iUZV6FwDBy82Hz6LHh1ndBP4", + "balance" : 2986900000 +}, +{ + "ETH_account" : "0xb6001a8016bb45ef72eb49f2c15b390f7fe67a16", + "name" : "0xb6001a8016bb45ef72", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 656424000 +}, +{ + "ETH_account" : "0x7e82a76a2b72f1e3318dc55bb059d83b59353c4a", + "name" : "0x7e82a76a2b72f1e331", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2282895740 +}, +{ + "ETH_account" : "0x9a69d03a8e14a8dda3c57bf340ba959726372c45", + "name" : "0x9a69d03a8e14a8dda3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2547000000 +}, +{ + "ETH_account" : "0x3702cd8fd085c44930af141f2411d5be6437719a", + "name" : "0x3702cd8fd085c44930", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 414700000 +}, +{ + "ETH_account" : "0xe16ed78e14fc4b8dab8ff7114cf21b7e8fb2a0f9", + "name" : "0xe16ed78e14fc4b8dab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4158130700 +}, +{ + "ETH_account" : "0x17e46f41a6dd2137f5bc9f1b9a78953666543e33", + "name" : "0x17e46f41a6dd2137f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2421000000 +}, +{ + "ETH_account" : "0x4c4f206a5dc8b00d26cf0b67a990504f61b7f46b", + "name" : "0x4c4f206a5dc8b00d26", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 333000000 +}, +{ + "ETH_account" : "0x2bb5813640f44a835582c43d8cb3af0052ecdc1d", + "name" : "samwalletsphtx", + "publicKey" : "SPH4vYELVoDKaDBCocuDxnf7sJAXkE7QSgYvWzuydtnQyd3gHicQ7", + "balance" : 2509248000 +}, +{ + "ETH_account" : "0xd0a2ca527c534e391b55e1f25c2a798bb5533e80", + "name" : "0xd0a2ca527c534e391b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000000 +}, +{ + "ETH_account" : "0x40025c888d75926b7e363e04d8348e2d9bf2d727", + "name" : "0x40025c888d75926b7e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6820000000 +}, +{ + "ETH_account" : "0xfc98b43e5ea13bdb7bd8108bf78d459409ec934f", + "name" : "0xfc98b43e5ea13bdb7b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1050000000 +}, +{ + "ETH_account" : "0xde696939ca4bc220886c649280d0142ffc6d8744", + "name" : "0xde696939ca4bc22088", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x1e7d95a463316ad37629a95f9697edff92d55a49", + "name" : "0x1e7d95a463316ad376", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 104675000 +}, +{ + "ETH_account" : "0x3d79161a646f7bab055909967fa5f0a4eb1e4215", + "name" : "alexbkk", + "publicKey" : "SPH6FKcgbyemnaMAVmnJamA7J8Un9jmzu14YwFigS1SC7eVF4YQ27", + "balance" : 9698531000 +}, +{ + "ETH_account" : "0x1aebb381acfd85b77d1a7187607fbfdb16c1affd", + "name" : "0x1aebb381acfd85b77d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 160000000 +}, +{ + "ETH_account" : "0x47da2c62cf156fb3dfb71f08077881fe995aa4a0", + "name" : "0x47da2c62cf156fb3df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 110011876000 +}, +{ + "ETH_account" : "0xb2fe3510d99be52c2a06ab8bca6a37afecb1d375", + "name" : "0xb2fe3510d99be52c2a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2057479676 +}, +{ + "ETH_account" : "0xe8a23b1dedfc0ef3450b90ebaef712d661cda6b4", + "name" : "0xe8a23b1dedfc0ef345", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 105000000 +}, +{ + "ETH_account" : "0x449b519c7a7ec7a981378d44f2a9620aa9377b19", + "name" : "sophiatxv200000", + "publicKey" : "SPH8ix8p3btuxN1QSjDQzaFZuqwphLNNVVvW6mtmTTY39FjsHFcxA", + "balance" : 11719203883 +}, +{ + "ETH_account" : "0x27ebcf71520fe4f987b398cfc6082bc4588f68e2", + "name" : "0x27ebcf71520fe4f987", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 860000000 +}, +{ + "ETH_account" : "0x3c9dd5de1eb9da9fb39931136b4d490a558f0021", + "name" : "0x3c9dd5de1eb9da9fb3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 899000009 +}, +{ + "ETH_account" : "0xa400710ba93c12cb56dd304a447351d97ae196ed", + "name" : "0xa400710ba93c12cb56", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1041000000 +}, +{ + "ETH_account" : "0xc5852da0d0829901f62be32d61721ad236668d7e", + "name" : "0xc5852da0d0829901f6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1963000000 +}, +{ + "ETH_account" : "0x8204d027f99aff025825f5621992e8e12834674a", + "name" : "0x8204d027f99aff0258", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 448609000 +}, +{ + "ETH_account" : "0x61ed2c7facb732d7d6369cbb06057ae9642e2b77", + "name" : "0x61ed2c7facb732d7d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 430000000 +}, +{ + "ETH_account" : "0x0e92907118c537d3f92b4aeef11649af34cbf4b8", + "name" : "0x0e92907118c537d3f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0xeeec16aeffa231436b302541289ccd96e1dedc9d", + "name" : "stream", + "publicKey" : "SPH5CyjYQR911FUR39DajEtFpbimjExrsWKDJ2nyApwSwTn1xSKpP", + "balance" : 909268649 +}, +{ + "ETH_account" : "0x104d568ae17c0dc2634a3b1fded6e879ad0ac96d", + "name" : "0x104d568ae17c0dc263", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 192926585 +}, +{ + "ETH_account" : "0xda5fe49f245d07555011a6869c0a0c1a9c564d6c", + "name" : "alimec", + "publicKey" : "SPH8eFSbXK3NTPiGReJS3SQ85HLmGasEB5ds6Kd5y1DGxiauWPpHv", + "balance" : 364000000 +}, +{ + "ETH_account" : "0xc90b55a20626ea52f07110d969996dc6e720820b", + "name" : "0xc90b55a20626ea52f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 70000000 +}, +{ + "ETH_account" : "0x4d7b4d9ab1ac23f83add2ca295adba17a33fef68", + "name" : "0x4d7b4d9ab1ac23f83a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 190000000 +}, +{ + "ETH_account" : "0x1e24871163bad8483c290c8849af3251fb08d034", + "name" : "0x1e24871163bad8483c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 466000000 +}, +{ + "ETH_account" : "0x9292c3f1797c9405fe2b8c0a5cd7496d5a4ae2de", + "name" : "0x9292c3f1797c9405fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 360877538 +}, +{ + "ETH_account" : "0xf9ddf5423236bc6e6b97fddd28882c07cc366025", + "name" : "0xf9ddf5423236bc6e6b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 253000000 +}, +{ + "ETH_account" : "0xd4c0248e9b5a69c42fdbde1f2408e7f99eb57178", + "name" : "0xd4c0248e9b5a69c42f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 166612521 +}, +{ + "ETH_account" : "0x94d5a84a85343e7a04f84f6aefdc0b8c215959be", + "name" : "sphtxmn", + "publicKey" : "SPH7r1q3M5Nurx5hXZj6eJT8mgn5CcpHXoyZDJPeJHyK87e4ZPYys", + "balance" : 9980239681 +}, +{ + "ETH_account" : "0x5a154e2f660bd59d689a75502b62f4af80980740", + "name" : "0x5a154e2f660bd59d68", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8077613868 +}, +{ + "ETH_account" : "0x031e4e41a7f2433c37281bd3d5403a4bcae82e51", + "name" : "0x031e4e41a7f2433c37", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 596600000 +}, +{ + "ETH_account" : "0xf90c8f778c48701cbeba53abc89528a577bf4c25", + "name" : "0xf90c8f778c48701cbe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1250000000 +}, +{ + "ETH_account" : "0x4ba00bc2a149851247832d7c7d6198e4afcc4aab", + "name" : "0x4ba00bc2a149851247", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 145000000 +}, +{ + "ETH_account" : "0xc73eec50a7e9f492a38f701f7cd44012995e3e22", + "name" : "0xc73eec50a7e9f492a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4000000 +}, +{ + "ETH_account" : "0x9406135180d94f08869272a28156937cc23844c6", + "name" : "0x9406135180d94f0886", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 903000000 +}, +{ + "ETH_account" : "0x786f08c2b374aa8fd3247bf302b63301fa03686e", + "name" : "0x786f08c2b374aa8fd3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 474718847 +}, +{ + "ETH_account" : "0x7132a262b25a4eb358421beed9a94628ea26d934", + "name" : "0x7132a262b25a4eb358", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 604518000 +}, +{ + "ETH_account" : "0xafe99992602bd7bf327cdc88c4dff2c40b8f998f", + "name" : "0xafe99992602bd7bf32", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 755000000 +}, +{ + "ETH_account" : "0xfc3c0d21b725d61aeec3e086e7924f4d5eb1946c", + "name" : "cryptoilet", + "publicKey" : "SPH6n5iqNAbY8ghV7VvbUpM92oX2NbgZfDoCjD3eBFN6wRkzigz12", + "balance" : 2500000000 +}, +{ + "ETH_account" : "0x115f1b47b316651bec5b9212558be2458e971bbf", + "name" : "0x115f1b47b316651bec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 414714385 +}, +{ + "ETH_account" : "0x4ad1b35f1982507986eb8fd3a6576a680de671ee", + "name" : "0x4ad1b35f1982507986", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7695 +}, +{ + "ETH_account" : "0x8552f8cc65e93dcd5f40f4ce5ae6f8710517fc7a", + "name" : "0x8552f8cc65e93dcd5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1250000000 +}, +{ + "ETH_account" : "0x4dddd504962e2a54f88fddf877492225c5a2294b", + "name" : "0x4dddd504962e2a54f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60000000 +}, +{ + "ETH_account" : "0xc3f726f45438ac48a2610a136df5f06ddc5443d6", + "name" : "0xc3f726f45438ac48a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xbb1beddd7ce371155ce8568247298a02e2b1b9e4", + "name" : "0xbb1beddd7ce371155c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 860000000 +}, +{ + "ETH_account" : "0xb78b72901d7608b4c7501f4769cce3a786d41310", + "name" : "johndro", + "publicKey" : "SPH8CXGitbodDPQHTKmbrTcog5uYZc1iM4fRHUVT1FKQXVajTZUUn", + "balance" : 915000000 +}, +{ + "ETH_account" : "0x83972a1340fd187385e217eae4ec4d84f76f7419", + "name" : "0x83972a1340fd187385", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0x0c7c45596d1eb98c6a3728f666e2ce8cfec127b6", + "name" : "0x0c7c45596d1eb98c6a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 973000000 +}, +{ + "ETH_account" : "0x5ec23705569a8da1925be260bd6d16b667723458", + "name" : "0x5ec23705569a8da192", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 920000000 +}, +{ + "ETH_account" : "0x4bac1621a56939dce722913bc8ef3fbac3c4b12f", + "name" : "0x4bac1621a56939dce7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2150000000 +}, +{ + "ETH_account" : "0x741ca0fca0092bc96f29f6432078a06cbdc6061a", + "name" : "0x741ca0fca0092bc96f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8963 +}, +{ + "ETH_account" : "0xc38247eb674a48089a67d82dea2f7a408eac92d6", + "name" : "0xc38247eb674a48089a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 220000000 +}, +{ + "ETH_account" : "0x633bb8085b7b8e5f514f09b9b0f1c9b4495d1bde", + "name" : "0x633bb8085b7b8e5f51", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 185000000 +}, +{ + "ETH_account" : "0x282190c5cb40e4e638a869ef6c3e981616de78ed", + "name" : "norazrul", + "publicKey" : "SPH5ZzhgsNzjhgW7FN7UoQ1iNRHQAbVMbMQNjjneYv6JCCUAmTosv", + "balance" : 970000000 +}, +{ + "ETH_account" : "0x02fbf40eb38a916548fbd98efa7fdb7a5cc691d6", + "name" : "0x02fbf40eb38a916548", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 895966503 +}, +{ + "ETH_account" : "0x0a468a3643b4b79fd8660aff21248cffa247aaa2", + "name" : "0x0a468a3643b4b79fd8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 795626856 +}, +{ + "ETH_account" : "0x408b12270ebb9e478caffee2f49aeff1a16b876b", + "name" : "0x408b12270ebb9e478c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 949437695 +}, +{ + "ETH_account" : "0xc6306a11cdbf8a9b38a17518fd5a6c50944a10a7", + "name" : "0xc6306a11cdbf8a9b38", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600000000 +}, +{ + "ETH_account" : "0xfe514a8f762986c26ba0b1e25e60680062ee6686", + "name" : "0xfe514a8f762986c26b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2880275266 +}, +{ + "ETH_account" : "0x5d9cb97ee529fc950884c9134ea3ad9a7c779b34", + "name" : "0x5d9cb97ee529fc9508", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6259694900 +}, +{ + "ETH_account" : "0xae3eecf91a699ce888ba7ab538e5bb250701c540", + "name" : "0xae3eecf91a699ce888", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 838998521 +}, +{ + "ETH_account" : "0x50c944204bce99f34928234b8059bb5e83cdac77", + "name" : "0x50c944204bce99f349", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 219331599 +}, +{ + "ETH_account" : "0xcfce48c136565396ef0c0578edbfcb5f5752ee30", + "name" : "sphtxjtl", + "publicKey" : "SPH7V9W5GXM8qDkK58PQ7ARp2th7wZ41GqbwK2DPbeLTAk5nZb7Rv", + "balance" : 2294124500 +}, +{ + "ETH_account" : "0x0c4234bb6a2807a44f5d188506a560cf6672ff23", + "name" : "0x0c4234bb6a2807a44f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1334000000 +}, +{ + "ETH_account" : "0x3f61fa93f2f062d53902b8f2cea55cab3120ec3c", + "name" : "0x3f61fa93f2f062d539", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99690958 +}, +{ + "ETH_account" : "0x3759aafe03859b57ed92b17a8a02639358de5b4f", + "name" : "0x3759aafe03859b57ed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2764000000 +}, +{ + "ETH_account" : "0x59dc8ddf09cb1feee461032a25810f1ba6fa0aaa", + "name" : "0x59dc8ddf09cb1feee4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 26388990559 +}, +{ + "ETH_account" : "0x86ba8a328dd12af5f7f9c70c1ad4ddc605c7ff64", + "name" : "okeditdan", + "publicKey" : "SPH7C4WNql1ikVrE6r5VRKYv9iA9iwKwx87UPXWxLooEnE7KxnaPt", + "balance" : 2890000000 +}, +{ + "ETH_account" : "0x1edbbb2d818366d5412677ae71d0aea34b3b602d", + "name" : "0x1edbbb2d818366d541", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 369379664000 +}, +{ + "ETH_account" : "0x031c1a375f8327c1c89352356a0f19b92f58953c", + "name" : "0x031c1a375f8327c1c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 88000000 +}, +{ + "ETH_account" : "0x366990a8018360fffdaa9c99cb5289d36bd3a71d", + "name" : "0x366990a8018360fffd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000000 +}, +{ + "ETH_account" : "0xa55064906a8519bc045d35294dd3d89b52ea6403", + "name" : "0xa55064906a8519bc04", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 464423000 +}, +{ + "ETH_account" : "0x6b790f4903afcf8d5970b27db3dc29aa89f184dc", + "name" : "0x6b790f4903afcf8d59", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2769518000 +}, +{ + "ETH_account" : "0x28c71534f866e8862dbfc88c6fb616cb09884aee", + "name" : "davo", + "publicKey" : "SPH4uSr6Gg1C3rpR5WNYxBw5cG61rcZNo3DZNHL1WWXkhUzkvyuuC", + "balance" : 40000000000 +}, +{ + "ETH_account" : "0x35d2a7f389b4a5b6370f7cf2cac0e5edeea9bae1", + "name" : "pilzik", + "publicKey" : "SPH6DhhRQfDuzArmRih3Rcqp2jtFmoe32bVjBGR7H15g1yuZfU27d", + "balance" : 65000000000 +}, +{ + "ETH_account" : "0xf526cb1a6afc0ed58a9d58742e07fec40bfef63f", + "name" : "0xf526cb1a6afc0ed58a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2181773701 +}, +{ + "ETH_account" : "0xa6c80dd7a78323df56e2e491f61b6e1667ac1e0b", + "name" : "0xa6c80dd7a78323df56", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21505084166 +}, +{ + "ETH_account" : "0x025e8bdb7cddc324a1234078570efca6a02b16c3", + "name" : "0x025e8bdb7cddc324a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 131440696 +}, +{ + "ETH_account" : "0x9043a4388ee916324188e50ee429440f80b7b486", + "name" : "0x9043a4388ee9163241", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 103000000 +}, +{ + "ETH_account" : "0x05274ce377f48162b95ec28da7600e3919a73cdd", + "name" : "0x05274ce377f48162b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 619750776 +}, +{ + "ETH_account" : "0xf6ca80bc2297ae967a597f7b454f28359b22ddf2", + "name" : "0xf6ca80bc2297ae967a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4560000000 +}, +{ + "ETH_account" : "0xb8214efce0bd7b1a12d44b596ad87a3fe9c13eac", + "name" : "0xb8214efce0bd7b1a12", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500631482 +}, +{ + "ETH_account" : "0x946a4ee5a9ae4a4ea8f3bf5ff2d9e1eb68ce9f82", + "name" : "0x946a4ee5a9ae4a4ea8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 256000000 +}, +{ + "ETH_account" : "0xe1759efee216f064df15114497d0a6b2c07ac38b", + "name" : "0xe1759efee216f064df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1196000000 +}, +{ + "ETH_account" : "0x70ae18f976c9e1afebb3a6bb5bc8613561d3e1d7", + "name" : "0x70ae18f976c9e1afeb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 319693277 +}, +{ + "ETH_account" : "0x6b29cd8471f6618d8b95468f4d7d093cce992b8c", + "name" : "0x6b29cd8471f6618d8b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 48000000 +}, +{ + "ETH_account" : "0xa2180eaa45dbaa152b676d9f77a655f56b8c8bb5", + "name" : "sphtxbobbajory", + "publicKey" : "SPH7cMDHRBKDGmNikADFjLsdHLE3UpicZiANzqW2Mssw6J5dijaWd", + "balance" : 8380000000 +}, +{ + "ETH_account" : "0xa805c129718d37f3ee8db40c77fab99e0c034601", + "name" : "0xa805c129718d37f3ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0xd27e2886b7bf12f885f677fe3dd5d47274f4ddc8", + "name" : "0xd27e2886b7bf12f885", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 967000000 +}, +{ + "ETH_account" : "0xc5e7a1cb8caefa9a722f9c2e4e72fb2227741b1f", + "name" : "0xc5e7a1cb8caefa9a72", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 85581074 +}, +{ + "ETH_account" : "0x5c6f06647a38a03791ab5485878043ab546805c0", + "name" : "0x5c6f06647a38a03791", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 730428396 +}, +{ + "ETH_account" : "0x79111159e36cb573674d5ae8851a2ef23dad90e5", + "name" : "0x79111159e36cb57367", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12462077856 +}, +{ + "ETH_account" : "0x27bd0fc41e300294c22dfc44250a7ba874d7360a", + "name" : "0x27bd0fc41e300294c2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4052204000 +}, +{ + "ETH_account" : "0x61f2e9fe56f60c76dc5b3343aa198afcd4700869", + "name" : "0x61f2e9fe56f60c76dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 960876703 +}, +{ + "ETH_account" : "0x1f0740a62ec1bd503fc94bc40a4f64bd8cb5c051", + "name" : "0x1f0740a62ec1bd503f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150000000 +}, +{ + "ETH_account" : "0x08fa4650634c0414d82a87a899c328d43c616190", + "name" : "0x08fa4650634c0414d8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 59569125 +}, +{ + "ETH_account" : "0xb708097375df62ecabad34ee5db8c5a8b5a4a04a", + "name" : "0xb708097375df62ecab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 871051952 +}, +{ + "ETH_account" : "0x495efe30418bb957a46d757f4cdd0d4e0e3f4c16", + "name" : "0x495efe30418bb957a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 48600000000 +}, +{ + "ETH_account" : "0x9d7c1eba621a6131a863959dd3033738c6012953", + "name" : "0x9d7c1eba621a6131a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21306234000 +}, +{ + "ETH_account" : "0x3b3f13f14444d95fe67bd9c77ccb66a2a3ccf420", + "name" : "deniamani", + "publicKey" : "SPH7uBdnKXCDyHHCsRkeyXAynYDEz8S4BYASbz4KVLFpNZMADbiF3", + "balance" : 3782993581 +}, +{ + "ETH_account" : "0x8037ccbbb0f348e8fad355e3e26d488600389ffb", + "name" : "0x8037ccbbb0f348e8fa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 306463886 +}, +{ + "ETH_account" : "0x9efa2b81fdb1e4226f54e68606655151141143ee", + "name" : "0x9efa2b81fdb1e4226f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3983598692 +}, +{ + "ETH_account" : "0xa58e5a096df94a7a8f9fa725fa24dae8346ce203", + "name" : "0xa58e5a096df94a7a8f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x484325082328dffbf7955c3b81b7d08f3fb9a2fe", + "name" : "apokoneswap", + "publicKey" : "SPH5Gh4LXEKbonJqV7mXc1RTTc3fD6CXaaEfjR8FrWx39tSotNJby", + "balance" : 2200000000 +}, +{ + "ETH_account" : "0x07d9eac303ca4d0e332ce7a953d30dba61bd0f50", + "name" : "0x07d9eac303ca4d0e33", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6991087198 +}, +{ + "ETH_account" : "0xe3a9a49980fa09b54edf7f2f86d43a4866b50f25", + "name" : "0xe3a9a49980fa09b54e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 323000000 +}, +{ + "ETH_account" : "0x4b82c4ed96ed1aacdec09a61f569bf474c7bd266", + "name" : "helmutdenutte", + "publicKey" : "SPH6Hu72ViiPFw3M14ny4MP41NtSoe4Ms7rZ3AENuHmnXJhFa6KaV", + "balance" : 21411396518 +}, +{ + "ETH_account" : "0xf1cc23478a5362b8aa03c0f89f20dce0edf70262", + "name" : "0xf1cc23478a5362b8aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1069420740 +}, +{ + "ETH_account" : "0xda774ab571b8ee57832718dcfe99b872cecf918c", + "name" : "0xda774ab571b8ee5783", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1217794311 +}, +{ + "ETH_account" : "0xaafa1d295d502de66698badeb527546cbe463072", + "name" : "0xaafa1d295d502de666", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 32583 +}, +{ + "ETH_account" : "0x38e91bb7b6f366c223e661ddd25c839d01e0ae13", + "name" : "chuckstanley", + "publicKey" : "SPH8HU7T5Y2W89wcnTsNT8aua7RCZk1BfzA4YZruSaJECewEVerhV", + "balance" : 1020304195 +}, +{ + "ETH_account" : "0xc8ee43296df0c6d809433f91831a39e0934b6ad0", + "name" : "0xc8ee43296df0c6d809", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 455000000 +}, +{ + "ETH_account" : "0xe8918621ec641d0d132b69716829b817ae2234e5", + "name" : "0xe8918621ec641d0d13", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 680000000 +}, +{ + "ETH_account" : "0x6cb119655de8dbd3eed37c17e66abc6b12078a8b", + "name" : "0x6cb119655de8dbd3ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 70699 +}, +{ + "ETH_account" : "0x942e48dd098a9912c9114b2968ec0cbf7b3d6358", + "name" : "0x942e48dd098a9912c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0x0e40c4494546b8b8c6a993e0b491cdd8431c6417", + "name" : "0x0e40c4494546b8b8c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 70000000 +}, +{ + "ETH_account" : "0x928bbd2a1b18b84e7e18b598454dbe45c83c06f7", + "name" : "0x928bbd2a1b18b84e7e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10329198611 +}, +{ + "ETH_account" : "0x894a1a2d79fb226662a49f43a898661d9df7fc83", + "name" : "0x894a1a2d79fb226662", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2536252000 +}, +{ + "ETH_account" : "0xdf17bfb23b3306f27b9c50f4c84c6273d342de0d", + "name" : "miyuru", + "publicKey" : "SPH7Hq7B7LvZGgqX1kf7B3zKpZQyAu84TpxBGgVywV9Whi9uUrihd", + "balance" : 1012590893 +}, +{ + "ETH_account" : "0xf6ebccb132f0690d750e04e9798dbf700eb8c12e", + "name" : "0xf6ebccb132f0690d75", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 366000 +}, +{ + "ETH_account" : "0xac6416707cfaeda1568efa9011c1c8a10db4c67b", + "name" : "0xac6416707cfaeda156", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1085796000 +}, +{ + "ETH_account" : "0x9c0355bf04baf8d2268e13dcc94fade7c037bfac", + "name" : "bitkeun", + "publicKey" : "SPH7K3hrUNYy3fJcjPMSVTg4q5xKxskNK3dmzeNoE5ezS6p5cCSxx", + "balance" : 5805155916 +}, +{ + "ETH_account" : "0x1cd712e3ea14cb4a47fa7ad18ed798f18098431a", + "name" : "0x1cd712e3ea14cb4a47", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12000000000 +}, +{ + "ETH_account" : "0x14d1505a42c33228b093903de887970831e2eb69", + "name" : "0x14d1505a42c33228b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0xe05f0de09197c581cc3eb3bb95d6777617a3efd7", + "name" : "0xe05f0de09197c581cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 431994000 +}, +{ + "ETH_account" : "0x09fc863d5df1e300fd0aa319086a9232d38cc6c5", + "name" : "0x09fc863d5df1e300fd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 159000000 +}, +{ + "ETH_account" : "0xb339152090bdff85a35a80d372a7015161afe71b", + "name" : "0xb339152090bdff85a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 473000000 +}, +{ + "ETH_account" : "0x667b5e42a5c80f5de2fecd34a31f3e7ed28644a7", + "name" : "0x667b5e42a5c80f5de2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0x9fddebd6b7c822f6594d3a9b46a47fcb6841e2ce", + "name" : "0x9fddebd6b7c822f659", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1750000000 +}, +{ + "ETH_account" : "0x872f6a5242a3e3aa2364c47455942d94f84832e5", + "name" : "0x872f6a5242a3e3aa23", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 873387617 +}, +{ + "ETH_account" : "0xc7747cf1f295f6efbc62761d0cca39e692fd4dd6", + "name" : "0xc7747cf1f295f6efbc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2430501683 +}, +{ + "ETH_account" : "0xcc042bc17ba11df2c9e3b86c51b1ffe4587676bb", + "name" : "0xcc042bc17ba11df2c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1102503200 +}, +{ + "ETH_account" : "0x04bcc07003f559cec56d12ef26ec11e9709b5c31", + "name" : "0x04bcc07003f559cec5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 156894579 +}, +{ + "ETH_account" : "0xd7dbef8605996e43abc19554a68fbc5c3d218a83", + "name" : "flo", + "publicKey" : "SPH5BZC4zbi5XjrRtZYxi8qoahZg78JaRVvEsLWujFnKj9jQcSPjb", + "balance" : 620000000 +}, +{ + "ETH_account" : "0xda3f73ac91fbdc7eb83f861639d43708fa853dcf", + "name" : "0xda3f73ac91fbdc7eb8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 389752 +}, +{ + "ETH_account" : "0x58f8cdab62a81603aceaf27e8e382396724979d4", + "name" : "0x58f8cdab62a81603ac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 84621000 +}, +{ + "ETH_account" : "0xe08958dd76284f421ce554f1aeffe2e6a1f4d041", + "name" : "0xe08958dd76284f421c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 350000000 +}, +{ + "ETH_account" : "0x5c9c4964261acac8f942f795cb41d337bac9d2f2", + "name" : "0x5c9c4964261acac8f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1247347535 +}, +{ + "ETH_account" : "0x8b46cc9982427232811e7760710a040de70c5c2c", + "name" : "0x8b46cc998242723281", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1210220000 +}, +{ + "ETH_account" : "0xf18a70873077ddbcc44addf62e3a07625724c84a", + "name" : "0xf18a70873077ddbcc4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 879626000 +}, +{ + "ETH_account" : "0x2ce8e8ac336110bac757a924df91599dea741bcf", + "name" : "0x2ce8e8ac336110bac7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 140000000 +}, +{ + "ETH_account" : "0xd7c8d86ed1421b414e6e0fc93475b04622f6b52c", + "name" : "0xd7c8d86ed1421b414e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1361250000 +}, +{ + "ETH_account" : "0x58952bbbfe4c2c60eb36dafa161b36dea13bee35", + "name" : "0x58952bbbfe4c2c60eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 102000000 +}, +{ + "ETH_account" : "0x6249aaaf068d4f08a85b52d9b41890da5d6be3c9", + "name" : "0x6249aaaf068d4f08a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1283013000 +}, +{ + "ETH_account" : "0xff6e0a767024766a04e7e899ae8bf8a1d84e164f", + "name" : "0xff6e0a767024766a04", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14131000000 +}, +{ + "ETH_account" : "0xe10876e636a37fccb49696fcf26bf471007fae87", + "name" : "0xe10876e636a37fccb4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000090742 +}, +{ + "ETH_account" : "0xfe1c24fd89f32ce234db8f10cd4ba88edc3068c9", + "name" : "0xfe1c24fd89f32ce234", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000 +}, +{ + "ETH_account" : "0xe8c5abdbb47838cd63a4c5b4917968a08d40442a", + "name" : "fredericotto", + "publicKey" : "SPH5n1dLTHDybnp3zX7ZPw31pokaKvMx3PioiHsPHzityU9ZWXjnP", + "balance" : 3903000000 +}, +{ + "ETH_account" : "0x35779ab39376acae047b53804578066311c5ea83", + "name" : "0x35779ab39376acae04", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 214000000 +}, +{ + "ETH_account" : "0xbbdb9f11ef167465096e38e77d4756dce833fccb", + "name" : "0xbbdb9f11ef16746509", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 649530000 +}, +{ + "ETH_account" : "0x41256babb7f68bfd080b12ee7f1c86385e19d5e7", + "name" : "sphxwally", + "publicKey" : "SPH76Rk2HM5Gm4c5V5WYaoVBrSqUktrReJcttNVMaHeinT5YVQxDn", + "balance" : 733000000 +}, +{ + "ETH_account" : "0x8548b24cbc8f9a492940d53855527972b60afc7e", + "name" : "seibo", + "publicKey" : "SPH7JcfEYqTXvF6kGsSwzp9Zu73XoKBjTY7VzoMc8TMR1ziSf4gK2", + "balance" : 3107020000 +}, +{ + "ETH_account" : "0xeca4cb5b22c7f654a0207256ff8092b5f8f84d14", + "name" : "0xeca4cb5b22c7f654a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 905556800 +}, +{ + "ETH_account" : "0xfc7d41de0609d40d4d4ce68c52bdcfa5261d9ac7", + "name" : "0xfc7d41de0609d40d4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53000000 +}, +{ + "ETH_account" : "0xc91ec7f922bb91d9b9eba3b3da5bdf0a1a5a5d40", + "name" : "0xc91ec7f922bb91d9b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2928900000 +}, +{ + "ETH_account" : "0xe680844e146d4c46cbd0cb65b39dadb0c1c27419", + "name" : "0xe680844e146d4c46cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x58d960fcdcb27ee9163b88b3c7299d2b7f2453ed", + "name" : "0x58d960fcdcb27ee916", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 55185500000 +}, +{ + "ETH_account" : "0x9f3faae50652d5a70ec67e0941a34fdb32a22398", + "name" : "0x9f3faae50652d5a70e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21927000000 +}, +{ + "ETH_account" : "0x3c14e1c1ecef3e1b80aad81237d26e1179cb2cab", + "name" : "0x3c14e1c1ecef3e1b80", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20030000000 +}, +{ + "ETH_account" : "0x61617ef3237a12dbec21aff3ee0c24f3a9fa8d44", + "name" : "0x61617ef3237a12dbec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1649000000 +}, +{ + "ETH_account" : "0x493f93b505782183de2eafbf5378513e086ff705", + "name" : "0x493f93b505782183de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 174311600 +}, +{ + "ETH_account" : "0x9f3fd63fafef3a0fa7df45f801d55c519b22203b", + "name" : "0x9f3fd63fafef3a0fa7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20004997000 +}, +{ + "ETH_account" : "0x25b714d507ca2600afaf99d99741ec94d20e9a48", + "name" : "0x25b714d507ca2600af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1169000000 +}, +{ + "ETH_account" : "0x3411db8c7bcd15287f54455eb32ced66a77559d6", + "name" : "0x3411db8c7bcd15287f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2028520000 +}, +{ + "ETH_account" : "0xac0666a569edd96fb7313e44ce453660d976c775", + "name" : "0xac0666a569edd96fb7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 102786700 +}, +{ + "ETH_account" : "0xab31bafb703e0219b8e7daab7aad932f61a0d13d", + "name" : "shelster", + "publicKey" : "SPH4vAqB4uSA1AUEMWNh37ckkFqfQhsdfsXpdw3U8CbfSsECWGszV", + "balance" : 6004000000 +}, +{ + "ETH_account" : "0x77d05e0d6a303f0b1b78f727a278c27a2d8cef3a", + "name" : "0x77d05e0d6a303f0b1b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x93d37e3b588e350f12c5e20e5091a453ff106dda", + "name" : "0x93d37e3b588e350f12", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1828990000 +}, +{ + "ETH_account" : "0xc8e50eb8c471e47c90d270b5d47c98df64fa467d", + "name" : "0xc8e50eb8c471e47c90", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2042857100 +}, +{ + "ETH_account" : "0xeb57b82bbf0d9136dafa62c697aba300fb7c10aa", + "name" : "0xeb57b82bbf0d9136da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 999058000 +}, +{ + "ETH_account" : "0x619fd2a816350f3e49b7a37e4b53818c32c2fa6d", + "name" : "0x619fd2a816350f3e49", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 63641811 +}, +{ + "ETH_account" : "0xbbb370f06b2053436116d283d541766deca88a87", + "name" : "0xbbb370f06b20534361", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15110502672 +}, +{ + "ETH_account" : "0x48ba4503d82b6bad8956d65a0e305648ba0ea306", + "name" : "0x48ba4503d82b6bad89", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 562596986 +}, +{ + "ETH_account" : "0xd103bdd1fd6e2fdcf3ee00901cbb7e680582359f", + "name" : "0xd103bdd1fd6e2fdcf3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 950000000 +}, +{ + "ETH_account" : "0x881ddaedf0d4c1853f702cd85d365aeb9f43d881", + "name" : "0x881ddaedf0d4c1853f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3324000000 +}, +{ + "ETH_account" : "0xd27a3fb908df4797007ab8b8adf76876f65bf2a3", + "name" : "0xd27a3fb908df479700", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 560000000 +}, +{ + "ETH_account" : "0x4cf91a2d35dc638a91f4872169afea8d9ed4b58b", + "name" : "0x4cf91a2d35dc638a91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x1461f8c97eaaffcfd94abbc711787072960e06be", + "name" : "0x1461f8c97eaaffcfd9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90731576 +}, +{ + "ETH_account" : "0x72f0850e6c3a6af417a754d142840a00ea03e4c3", + "name" : "0x72f0850e6c3a6af417", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3324000000 +}, +{ + "ETH_account" : "0xc6f9b7b241ca78d462794cd89fd8170ed6191956", + "name" : "0xc6f9b7b241ca78d462", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xe69caa788ac65d205d8b899d4cb4eb07c353388a", + "name" : "0xe69caa788ac65d205d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1286334942 +}, +{ + "ETH_account" : "0x2448a7c808ec52cd3132441c764d57c850e8bfef", + "name" : "0x2448a7c808ec52cd31", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 989000 +}, +{ + "ETH_account" : "0xa6d6501a9916bb78700c8a4006b79dd18d4f88a0", + "name" : "0xa6d6501a9916bb7870", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 192957453 +}, +{ + "ETH_account" : "0x729e636e15f7c9e8f5b8a531455ccb0dc0a51fd3", + "name" : "0x729e636e15f7c9e8f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0x2ec8bf6f31e8f65d0aa50297e439a53f325c26b1", + "name" : "thirstydreamer", + "publicKey" : "SPH7xSSSAvgdwohxqfxp3duFv7QkuvMFfUBgd6fStLgwUSafjbQLS", + "balance" : 35121356643 +}, +{ + "ETH_account" : "0xcdf042aeaf273fdac73a7a5bd19efa53fcd79332", + "name" : "0xcdf042aeaf273fdac7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 269 +}, +{ + "ETH_account" : "0x71d54b93edc933bf2e38453257963420a3b3cc27", + "name" : "0x71d54b93edc933bf2e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 29981720000 +}, +{ + "ETH_account" : "0x7ec0bc6de4ba31ff01e7c2b26c45cd2de5557c53", + "name" : "0x7ec0bc6de4ba31ff01", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 758518158 +}, +{ + "ETH_account" : "0xf662b715ae33cd35fea642eb2065eb796122fec9", + "name" : "0xf662b715ae33cd35fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22000000000 +}, +{ + "ETH_account" : "0xd27325983703b57cb666826c525775e5a2c139ec", + "name" : "nevi", + "publicKey" : "SPH64EFL9F4hvAm6AT8SAtztzkhj3fMLRahQ2414hya1zCri5CJGK", + "balance" : 2022639579 +}, +{ + "ETH_account" : "0xfdc195104830375140c83de652119e5191d8ca4f", + "name" : "0xfdc195104830375140", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1091115000 +}, +{ + "ETH_account" : "0xeedadd3d153d7c6249b066969fc08e7aefa303f9", + "name" : "0xeedadd3d153d7c6249", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 928000000 +}, +{ + "ETH_account" : "0x14e472a107c9b2c5cdfcc9e4013eb97efbb2f431", + "name" : "0x14e472a107c9b2c5cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3148000000 +}, +{ + "ETH_account" : "0x3a409eff50a47aeef294e3f0bb3874490dd99abc", + "name" : "0x3a409eff50a47aeef2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 370000000 +}, +{ + "ETH_account" : "0x334acb25aec8f1bc059d06b910cd23fb105506c4", + "name" : "0x334acb25aec8f1bc05", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 75000000 +}, +{ + "ETH_account" : "0xfd2c3029072e9569e031d9b0a4fd2b78aeb971e6", + "name" : "zebedeejames", + "publicKey" : "SPH8Z1oAJ1UPGYQ95w5ESVeDA688XqCdp3qMNkMRZ1dMKTSmn4b8c", + "balance" : 198850700000 +}, +{ + "ETH_account" : "0xf8d21b3f3f1c965fe2bdf8c341e521bcd5392660", + "name" : "0xf8d21b3f3f1c965fe2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0xca884de1c32f8ba9614b10515c333e2dd676c563", + "name" : "janhajktx", + "publicKey" : "SPH7qXuzTZVE3gfrLRQ2csSrvK1ePzMwsTTJwL6m16STArmFRGWiH", + "balance" : 20735218517 +}, +{ + "ETH_account" : "0x306ba22c99c506f9229b9881cdd40f6e4e5d65f3", + "name" : "0x306ba22c99c506f922", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x0306d4c6abc853bfdc711291032402cf8506422b", + "name" : "0x0306d4c6abc853bfdc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000915 +}, +{ + "ETH_account" : "0x72870be37d5ba3d1a1c8b075826139977d4ee436", + "name" : "0x72870be37d5ba3d1a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1570000000 +}, +{ + "ETH_account" : "0x3007f0c3bde35419cac66d89976c8a49f144058d", + "name" : "0x3007f0c3bde35419ca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 504000000 +}, +{ + "ETH_account" : "0x837c8a9eda336e9ebcbf940e2e8bceb7304e8803", + "name" : "0x837c8a9eda336e9ebc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1090278000 +}, +{ + "ETH_account" : "0x39052495630adadc6b0750c1853fe172ed147811", + "name" : "0x39052495630adadc6b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 567702486 +}, +{ + "ETH_account" : "0xbe379b1e4def16b94303390cb05b407a4f4bf764", + "name" : "0xbe379b1e4def16b943", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1737000000 +}, +{ + "ETH_account" : "0xf19f3d5f1cb45a6953d6b8946917b06431314c00", + "name" : "manuscript9", + "publicKey" : "SPH5CBQiRtssHrkdMVcC7i7MRDuXG3V1iGhNd1cqaJp65Us3gz9BE", + "balance" : 2676379600 +}, +{ + "ETH_account" : "0x32b7411932fc089b736e83b53b528f5f8e527577", + "name" : "0x32b7411932fc089b73", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1190943999 +}, +{ + "ETH_account" : "0x3e911265258a08f33507366796f9be4d1e4d9f05", + "name" : "0x3e911265258a08f335", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2178000000 +}, +{ + "ETH_account" : "0x2cd610291f4ac41acfde013c8b714c0cb93099af", + "name" : "0x2cd610291f4ac41acf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x3efee7a79fe363b72e3a9e9d1432f03c2d5a7097", + "name" : "0x3efee7a79fe363b72e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xdf72c7f18a142cd10b2ce2b69211f67323f67f81", + "name" : "0xdf72c7f18a142cd10b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 55384000 +}, +{ + "ETH_account" : "0xaad7617aee24594a72e42570345b16b00522d883", + "name" : "0xaad7617aee24594a72", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1981370000 +}, +{ + "ETH_account" : "0x8ab042d324df75c991c23a2334127113574ba7d3", + "name" : "0x8ab042d324df75c991", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6328075000 +}, +{ + "ETH_account" : "0xf33a9c0f2c8b6b5b50e28b3403a10abce6705edd", + "name" : "0xf33a9c0f2c8b6b5b50", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 553840501 +}, +{ + "ETH_account" : "0x165342cecd849423b2c1f7a8518e1a2cd70ae3d5", + "name" : "0x165342cecd849423b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450000000 +}, +{ + "ETH_account" : "0x30d135cef12b901a71c30741c7f53a45c8ad07b7", + "name" : "0x30d135cef12b901a71", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2041020000 +}, +{ + "ETH_account" : "0x964919e63e04588f29a5974b1fcfb0334e2d2e00", + "name" : "0x964919e63e04588f29", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1800000000 +}, +{ + "ETH_account" : "0xdb40adaeec9c6c01f2ca60b26295b8aacdc15834", + "name" : "0xdb40adaeec9c6c01f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1167192514 +}, +{ + "ETH_account" : "0x913cb89c0ddfb08645fe2175e018a5082b8a58e0", + "name" : "0x913cb89c0ddfb08645", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2800000000 +}, +{ + "ETH_account" : "0x74d0602d8402f0ffad83a9341a9314c68d776967", + "name" : "0x74d0602d8402f0ffad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 323184638 +}, +{ + "ETH_account" : "0x805bcafdd694362dd94315d13e6d4f62982a1e42", + "name" : "0x805bcafdd694362dd9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 75000000 +}, +{ + "ETH_account" : "0x412a3b376807cc0605e9f2926d4deac8fc913623", + "name" : "0x412a3b376807cc0605", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15189315840 +}, +{ + "ETH_account" : "0x44100178eea454e1f5a60fbda18412fdbdaef904", + "name" : "0x44100178eea454e1f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5761080140 +}, +{ + "ETH_account" : "0xf7eb259630da05fb62fa7c207d10b802563dd787", + "name" : "0xf7eb259630da05fb62", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100500000 +}, +{ + "ETH_account" : "0x0fd1a37739332c8cf58b7355de46d806386b5c7d", + "name" : "0x0fd1a37739332c8cf5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 82000000 +}, +{ + "ETH_account" : "0xeb7eaf2832a28d7ebd4f84fa196fdfaf4c93cc63", + "name" : "0xeb7eaf2832a28d7ebd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10357794272 +}, +{ + "ETH_account" : "0x13c75eaeac863358d4b02cf6b1fb806dc0cd59ff", + "name" : "0x13c75eaeac863358d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1690000000 +}, +{ + "ETH_account" : "0x6fc3d466075f20a148841f25c855b3e17b51a754", + "name" : "0x6fc3d466075f20a148", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4985 +}, +{ + "ETH_account" : "0xc4f03109dcccc299f5080d5418c0ffee983d4bf3", + "name" : "0xc4f03109dcccc299f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x54af60ccac83d84b36253280e38def76c655f4bf", + "name" : "0x54af60ccac83d84b36", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 544000000 +}, +{ + "ETH_account" : "0x23c9e7b24e84af3edd738b643ceb331a168b2516", + "name" : "0x23c9e7b24e84af3edd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9807414000 +}, +{ + "ETH_account" : "0x8a0be09538d0ffb35886da03b3fbf3dfe9e9bbc8", + "name" : "0x8a0be09538d0ffb358", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 180000000 +}, +{ + "ETH_account" : "0xa3dbd178f2fef62cfff6ab7f2f29e25491c50a27", + "name" : "0xa3dbd178f2fef62cff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 779310000 +}, +{ + "ETH_account" : "0xbc17c74b40064a4499cb9aa360eb35fcdadcf20c", + "name" : "0xbc17c74b40064a4499", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1299000000 +}, +{ + "ETH_account" : "0x6dfd638f518364de91f0f2ea72f6522c5ad4e6e6", + "name" : "0x6dfd638f518364de91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5912913000 +}, +{ + "ETH_account" : "0xebefa53e1bb8137512e8516439cf64c022dd090a", + "name" : "0xebefa53e1bb8137512", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1354605188 +}, +{ + "ETH_account" : "0xda17ce30d4276e8261125533aa949fbee912b8f5", + "name" : "0xda17ce30d4276e8261", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 273000000 +}, +{ + "ETH_account" : "0x343366c73e897e8eb0f186db76392470be2f49c3", + "name" : "0x343366c73e897e8eb0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4700000000 +}, +{ + "ETH_account" : "0xc0968ee35669ad30a73a6092bbc7ff091adbfd6a", + "name" : "0xc0968ee35669ad30a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 590000000 +}, +{ + "ETH_account" : "0x9d42719388bb8e8870586d8145398289ca401677", + "name" : "0x9d42719388bb8e8870", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2814578737 +}, +{ + "ETH_account" : "0x90d38e3d64ea37425d5675c00ded57a529229244", + "name" : "0x90d38e3d64ea37425d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3900000000 +}, +{ + "ETH_account" : "0xed9d943631f5f9fdf0a7ac744a788526488314ee", + "name" : "0xed9d943631f5f9fdf0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 940000000 +}, +{ + "ETH_account" : "0x285910400aae68cfac3f081288a1926971c1b9c7", + "name" : "0x285910400aae68cfac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 315000000 +}, +{ + "ETH_account" : "0xbcaa544cb5ae7a1bffbf9f8f81d3f40a318798ad", + "name" : "thomaskaman", + "publicKey" : "SPH8RWFSAsTt3CJSnDLKqPZTPgfkoQpyjCsCJRghN29CovUfrrbwH", + "balance" : 9799500000 +}, +{ + "ETH_account" : "0x06698045fc192607ee255a230231b37dd89c78bf", + "name" : "serjusophia", + "publicKey" : "SPH6myB2FSmLmLVsM62YDnazkpJY6Rug1fJVEqvvZYJW4MU4jfz5U", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x62f91c944c8ea3eed07935bb926eccf5d4a460de", + "name" : "0x62f91c944c8ea3eed0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 522000000 +}, +{ + "ETH_account" : "0x41320902c37fb238cd4fe65902a6591b6c89f46b", + "name" : "0x41320902c37fb238cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 499906306 +}, +{ + "ETH_account" : "0xade31e02e4458193662ff274b1c0db8dea4ca26e", + "name" : "0xade31e02e445819366", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 246000000 +}, +{ + "ETH_account" : "0x9b1f527f76d51243258554bb852c0446be90d081", + "name" : "0x9b1f527f76d5124325", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 170000000 +}, +{ + "ETH_account" : "0x2f606e4120c5c44c70d25fee5ea4bc1ae3b68f93", + "name" : "0x2f606e4120c5c44c70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 115000000 +}, +{ + "ETH_account" : "0x189ec749960eacb788ca148cdfcd543105376b1a", + "name" : "0x189ec749960eacb788", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 77000000 +}, +{ + "ETH_account" : "0xfc241b9c5bedeb7a0809fefd202b12c7959ea159", + "name" : "0xfc241b9c5bedeb7a08", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 302236000 +}, +{ + "ETH_account" : "0x5181ebd8ba686d693bcc4477fa7deacbf8d379d0", + "name" : "0x5181ebd8ba686d693b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15000000 +}, +{ + "ETH_account" : "0xb414c335e1800c8cc6c11d8da9feed702f6acc08", + "name" : "0xb414c335e1800c8cc6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 147123562 +}, +{ + "ETH_account" : "0xe32414465b725b446ad90e7179fd06b90ea7f441", + "name" : "0xe32414465b725b446a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 128000000 +}, +{ + "ETH_account" : "0x3ca86ae1333ad5a394b993e0b4ac9c41f6e4edfe", + "name" : "sophiatxmontaz", + "publicKey" : "SPH5U7UaLDLbtUUWBf1zkbjLjsP9aJ53y96hSoJJw7oq8ZsXpWRFx", + "balance" : 319269238 +}, +{ + "ETH_account" : "0xe73792ef73838120cdec63f34ba57334df1e0e5b", + "name" : "0xe73792ef73838120cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x6f82fd900e4737023e61e70513f38f5c79be7fde", + "name" : "0x6f82fd900e4737023e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 458 +}, +{ + "ETH_account" : "0x7db8508dfd00d11811d1bbc965e2d9b07a551ee7", + "name" : "0x7db8508dfd00d11811", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1784760787 +}, +{ + "ETH_account" : "0x30f88a5e87015d0cc07059731a058ea22e9c9f99", + "name" : "0x30f88a5e87015d0cc0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 97000000 +}, +{ + "ETH_account" : "0x2fcf0e84219e03d50f95396d20a452a5cf9bfdf2", + "name" : "0x2fcf0e84219e03d50f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1676219648 +}, +{ + "ETH_account" : "0x831b7b6bca098138dc9e5f0dc7c5a929b4c57aa3", + "name" : "0x831b7b6bca098138dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000000 +}, +{ + "ETH_account" : "0xd5e324714853dcae652eaedefe708b6ec956c31b", + "name" : "0xd5e324714853dcae65", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 343174355 +}, +{ + "ETH_account" : "0x4dcce9a3bc059dcbe5448ee59ca8a6608e4bc8b5", + "name" : "delphinus", + "publicKey" : "SPH5vUR89sR7J36hAsAgFBAFaWkg5M1u7Y9mEC1S77qoEQ7bLkVqh", + "balance" : 4660000000 +}, +{ + "ETH_account" : "0x42c1a12c03d2e7cedb6d9255f3f00abae39a6d8c", + "name" : "0x42c1a12c03d2e7cedb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600010800 +}, +{ + "ETH_account" : "0x2b0c09cdbec20d1466040092365194827ab2f31d", + "name" : "0x2b0c09cdbec20d1466", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10891874751 +}, +{ + "ETH_account" : "0x0efa84d70a9e7056afce489a9579a66895f4e50d", + "name" : "jubeikibagami", + "publicKey" : "SPH5mggZnffimRTu58xT6qeJAx3FCJfz4ZBFFMJzewWTsjJVvmk6v", + "balance" : 17870000000 +}, +{ + "ETH_account" : "0xb456b83e81e979e3585ec52c702f3c8e95ca7747", + "name" : "0xb456b83e81e979e358", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9240000000 +}, +{ + "ETH_account" : "0xc51a4b868f69ef11bc85960a3d3df5976d112725", + "name" : "toightyboi", + "publicKey" : "SPH8AhP6GMFpU6nHAhesHfn2PUsx7ZY28YQtV8ieLfNFUYcJRBt4D", + "balance" : 11302000000 +}, +{ + "ETH_account" : "0xa9eec0051194edd3cfc1b00920058db3d60fbeff", + "name" : "0xa9eec0051194edd3cf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40000000 +}, +{ + "ETH_account" : "0x6a4e28b4b463905d0d096cd2b7000157f01ed17b", + "name" : "0x6a4e28b4b463905d0d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3127577000 +}, +{ + "ETH_account" : "0x2d46f83a334879e370173fa55627532451484dde", + "name" : "jeanmarceldupont", + "publicKey" : "SPH6x6kGEgvvwC8FFucw3AreGcbNN3EoLFYWPJodo4iP4qQQNJCZ3", + "balance" : 1230000000 +}, +{ + "ETH_account" : "0x35d2e771956ccc30af58dae89b7713589936f20a", + "name" : "0x35d2e771956ccc30af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1535000000 +}, +{ + "ETH_account" : "0x92e56024eb26da8d1c1fad9cc5a7590d5c096b57", + "name" : "0x92e56024eb26da8d1c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 725095500 +}, +{ + "ETH_account" : "0x0aaeff4f36467327cd2dee56471b2eaa1747d664", + "name" : "0x0aaeff4f36467327cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9000000000 +}, +{ + "ETH_account" : "0xa955d8477ac45edd019972c89d9f252a6357e6d2", + "name" : "0xa955d8477ac45edd01", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0x9380af5e997fe9ec94bac48aed1fcf3eed0f77fa", + "name" : "0x9380af5e997fe9ec94", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1438000000 +}, +{ + "ETH_account" : "0x607ab992af733e092bb8b0e98e6249c197e6c93b", + "name" : "jayjie", + "publicKey" : "SPH6S2qYadod6SLKEg7Fvf5HQcqATcfUvfmNfM5ApJiAb1LW6wbL1", + "balance" : 17561495900 +}, +{ + "ETH_account" : "0x4f67b06100c0104a11f69197c559f8548d9535dd", + "name" : "marcioag", + "publicKey" : "SPH6hnm4HvzZCXLWRhoeoGJJvTmnkJL7bibpVcduvLKAH8CeSfKdP", + "balance" : 2589500000 +}, +{ + "ETH_account" : "0xa7f8c8b8b27368dff92776c5bd690f1b4b9dc1a1", + "name" : "0xa7f8c8b8b27368dff9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1387000000 +}, +{ + "ETH_account" : "0xd06904fa0ef4f95f7ad8952c84067e5afc248907", + "name" : "0xd06904fa0ef4f95f7a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2026000000 +}, +{ + "ETH_account" : "0xb4beb39fd0091cbd767f8df6195da4af5f962edd", + "name" : "0xb4beb39fd0091cbd76", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 920000000 +}, +{ + "ETH_account" : "0x6f886e7d0153982d42ed98ed554eaa53af739567", + "name" : "0x6f886e7d0153982d42", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x38869f5de0b604f3c4b750cab75d625e4a2a1779", + "name" : "0x38869f5de0b604f3c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4048076600 +}, +{ + "ETH_account" : "0xfec30b6f1504fcf2c8bad95d237e96fa1c0f7679", + "name" : "0xfec30b6f1504fcf2c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6300000000 +}, +{ + "ETH_account" : "0x95fa3ab264bab5d264f210a09e67bc80dfe26871", + "name" : "0x95fa3ab264bab5d264", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1295285000 +}, +{ + "ETH_account" : "0x799339c2f6a58bb70536dd7d81efa422b856878f", + "name" : "asifsophiatx", + "publicKey" : "SPH8hcCBW9KrnnPpBaHHWo8j1vvHGbX1WQ6VRJ3Lx1uUjwpoG19fu", + "balance" : 1011227000 +}, +{ + "ETH_account" : "0x826e0ba43e7821ebbd04700a9215398e50f94e55", + "name" : "0x826e0ba43e7821ebbd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000 +}, +{ + "ETH_account" : "0xf831ccfdacf951679b8832f54de95315aab3e303", + "name" : "0xf831ccfdacf951679b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450000000 +}, +{ + "ETH_account" : "0x7800475eebe2ddbb740ce3ad201a4f4c0af6bf19", + "name" : "0x7800475eebe2ddbb74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7145989000 +}, +{ + "ETH_account" : "0x69cd156f7369f4759797cf33630103e7ed0f0985", + "name" : "0x69cd156f7369f47597", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1085820940 +}, +{ + "ETH_account" : "0x236f13b53c50950104a93c4516152c0241b38aa9", + "name" : "0x236f13b53c50950104", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 79000000 +}, +{ + "ETH_account" : "0x5673b1e23937bf221b64b932d95264cde8401e2f", + "name" : "0x5673b1e23937bf221b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 934333863 +}, +{ + "ETH_account" : "0xd11b2e87d3121c1b0672955c57a347b73e3414f2", + "name" : "0xd11b2e87d3121c1b06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 110000000 +}, +{ + "ETH_account" : "0xe6d7c23410b0cf5693a2a5c6908a357d8246cc63", + "name" : "0xe6d7c23410b0cf5693", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0xb8a0ffcc6ac70a958873470aab96f801ed1a45b0", + "name" : "0xb8a0ffcc6ac70a9588", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 239643922 +}, +{ + "ETH_account" : "0x0a30b598ee03f8cb80d9c200034699aef3960506", + "name" : "0x0a30b598ee03f8cb80", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 54435994000 +}, +{ + "ETH_account" : "0xcd8c3b4f361ef283bf20ad06abd7b3e5906adbb7", + "name" : "0xcd8c3b4f361ef283bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 547530597 +}, +{ + "ETH_account" : "0x52b4f00325fcaedaa885cc82778c817a26e392cc", + "name" : "0x52b4f00325fcaedaa8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 405164436 +}, +{ + "ETH_account" : "0x9e416da52e57694b8cd8833ef25efb967e9fe5c4", + "name" : "0x9e416da52e57694b8c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2500000000 +}, +{ + "ETH_account" : "0x7ed28e91c1a98c20f59b5c7f8612ab8f3545fad1", + "name" : "0x7ed28e91c1a98c20f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2650000000 +}, +{ + "ETH_account" : "0x4ce2a6be0883d5c65191090103994a8245b46cc8", + "name" : "0x4ce2a6be0883d5c651", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8122437230 +}, +{ + "ETH_account" : "0xe3196b3bf5b68c2b45cfe601734b223d75cce0eb", + "name" : "0xe3196b3bf5b68c2b45", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1602000000 +}, +{ + "ETH_account" : "0x8422aea56744cb201c85b778419e92985f192348", + "name" : "0x8422aea56744cb201c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2025000000 +}, +{ + "ETH_account" : "0xe8af3965007b31a0febb18bee91a0b28cde1bb3f", + "name" : "0xe8af3965007b31a0fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x0c016754f6926bc4b1adb9198dbdd42e26be30b6", + "name" : "0x0c016754f6926bc4b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 514878881 +}, +{ + "ETH_account" : "0xde8ae7c78156add289c42f7175dfbfdcf607b90b", + "name" : "0xde8ae7c78156add289", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11267428000 +}, +{ + "ETH_account" : "0x2c0f4bcbc2a523dc9c1b484d17ab2cab788af64a", + "name" : "0x2c0f4bcbc2a523dc9c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1163647000 +}, +{ + "ETH_account" : "0x5a5464b15e9d04018aad98c7777dfb6cf2712d1a", + "name" : "0x5a5464b15e9d04018a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 103553657 +}, +{ + "ETH_account" : "0xa2c303030faf83b62a56a9f6ecbb7ad50c3a812f", + "name" : "0xa2c303030faf83b62a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1085000000 +}, +{ + "ETH_account" : "0xa24e34ffd464260130ba0e0318aab28c818d17b4", + "name" : "0xa24e34ffd464260130", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8765678000 +}, +{ + "ETH_account" : "0x3356817f23ab38f35da60f21f66db740669210f6", + "name" : "0x3356817f23ab38f35d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2188000000 +}, +{ + "ETH_account" : "0x595b3df4e297609a86aed9e8567349fa241dd208", + "name" : "0x595b3df4e297609a86", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 225000000 +}, +{ + "ETH_account" : "0xc02ba9f7555565d634ac4eae9ef4df796068ca07", + "name" : "0xc02ba9f7555565d634", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 481631 +}, +{ + "ETH_account" : "0x89efa9be89677f1c2a1ce7af7d8a484bc0c3ddc4", + "name" : "0x89efa9be89677f1c2a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 643900000 +}, +{ + "ETH_account" : "0x29c11adb1e6e88e9b2aee11073096fb87a2e7095", + "name" : "0x29c11adb1e6e88e9b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000067091 +}, +{ + "ETH_account" : "0xb08e90e4ceee375da3826d203ed1cb00eb3d242c", + "name" : "0xb08e90e4ceee375da3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13490000000 +}, +{ + "ETH_account" : "0xd368dc4f37a49cb51dc0ccd15be2133258ac799b", + "name" : "0xd368dc4f37a49cb51d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1306000000 +}, +{ + "ETH_account" : "0x9237d35554c7372d57d6a48fe6889fe92b4dd4ce", + "name" : "0x9237d35554c7372d57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1025000000 +}, +{ + "ETH_account" : "0x8c0114f7507485c2289cb4fc7fadb61d4e2f49b3", + "name" : "0x8c0114f7507485c228", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x6278e83c542bb198fdc74213c7f20ac7c704b504", + "name" : "0x6278e83c542bb198fd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 228000000 +}, +{ + "ETH_account" : "0x68538b451d56b2507387b4297aed5a0e8455b099", + "name" : "0x68538b451d56b25073", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 361745793 +}, +{ + "ETH_account" : "0xbab7076e947d70a69706ad73a1fce5832e4a4218", + "name" : "samara", + "publicKey" : "SPH7xrp9C6eSLz9tcG7JxFB2LkMcmwkfk1KizUpeLvvWYKRhDEFtF", + "balance" : 4048990000 +}, +{ + "ETH_account" : "0x7ba1af7ef14c45baafb0f0ab052d65f341c0a15c", + "name" : "0x7ba1af7ef14c45baaf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 728507301 +}, +{ + "ETH_account" : "0x08fb1c6d0be87ae1a0a0a76312a4050428126cfc", + "name" : "0x08fb1c6d0be87ae1a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2420930500 +}, +{ + "ETH_account" : "0x05bf3be79137365b0839254b7b47d846edaebb2d", + "name" : "0x05bf3be79137365b08", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4633670214 +}, +{ + "ETH_account" : "0x9bbefcf8eceb8a45a3b32463234ffa6cb617a73c", + "name" : "kazskey", + "publicKey" : "SPH7smuooK6DSZG4wNN82BQR1Dn9V5Fbhb7Z1Vfmhrjs6GcUotoMJ", + "balance" : 1445000000 +}, +{ + "ETH_account" : "0x8950068775f5283ab0a32b64836f3737d0fa63e0", + "name" : "0x8950068775f5283ab0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 176000000 +}, +{ + "ETH_account" : "0xc1f1ac41828e907dda33f34d8aebbb008745142e", + "name" : "roblsophia", + "publicKey" : "SPH86bHpgVMZBV8M9y3MGWgUQvaHsW6AwW3jHPp4HfygskMFoEEM9", + "balance" : 1002410600 +}, +{ + "ETH_account" : "0x05ca3386b3ee11089f1e7c1c37a09e6ff0502860", + "name" : "0x05ca3386b3ee11089f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7048510000 +}, +{ + "ETH_account" : "0x0772d2eb829d7221920b355d327726a32e667a0a", + "name" : "0x0772d2eb829d722192", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 585000000 +}, +{ + "ETH_account" : "0xedbd93dc62e6ba3c6db8e2e92243332833f37ce0", + "name" : "satudarah", + "publicKey" : "SPH6YsrWJr9UaorgEoQacpiswTToFe1Bvh7CTN5X8hr3CkDnAeiK5", + "balance" : 10579000000 +}, +{ + "ETH_account" : "0x6fbb5b774774a60ae2a6cb4b25b42155cc02a68b", + "name" : "renskooyman", + "publicKey" : "SPH7qXbxVB3LA22MtA4vKUQC15SYqXzenQxaLMvdzfL9qMy2yuNYu", + "balance" : 4085000000 +}, +{ + "ETH_account" : "0x8705272f08c64a85c6c4e3a7753240132104acc4", + "name" : "0x8705272f08c64a85c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x972ae1e869134f76b4502bc954ae2e2419a740cd", + "name" : "steffen", + "publicKey" : "SPH8bieXEyfEWjWHGvctj4hMCJkLzPinDy7Hc1DAN5kaMtZgHtC5e", + "balance" : 2599357500 +}, +{ + "ETH_account" : "0xa664a31a1721a80945988c4d02c3e1203cf83fb4", + "name" : "0xa664a31a1721a80945", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4666000000 +}, +{ + "ETH_account" : "0xa0b09fffe007a5e9289155510b6156bf5cb70250", + "name" : "0xa0b09fffe007a5e928", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3650000000 +}, +{ + "ETH_account" : "0xd2605d03237f05dcf0eabbf9169d6ba55277fc87", + "name" : "0xd2605d03237f05dcf0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1096000000 +}, +{ + "ETH_account" : "0x2f7e37af34ea7548b9b2d79a74ec4fb767d970e2", + "name" : "0x2f7e37af34ea7548b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 112890000 +}, +{ + "ETH_account" : "0x8776eae63f205c54d2afda40e7a17e42d0a9dedc", + "name" : "0x8776eae63f205c54d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39900000000 +}, +{ + "ETH_account" : "0x67a137e26698a05aced6e6fc214d865edb6b8ab1", + "name" : "0x67a137e26698a05ace", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5747000000 +}, +{ + "ETH_account" : "0x720da42332ec0eee17e906ac6490e1e081dc9b90", + "name" : "sophiatx", + "publicKey" : "SPH6ropbYkF4ShhecuU6KtZqQg36i4pto3Q87uWvXLVmc5znHJW3j", + "balance" : 2099464500 +}, +{ + "ETH_account" : "0x9f4389d0d75b2a650d09a5665ac0e26bb504ceb6", + "name" : "0x9f4389d0d75b2a650d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6420629200 +}, +{ + "ETH_account" : "0x162ee3b1a16f1edb0e9bc7e1b3b97cb06c2489ec", + "name" : "robke", + "publicKey" : "SPH7viUtP7GRUcphTytixbomK27HsR69MjNBiDvpLP2zCQ6JjEcSP", + "balance" : 469924911 +}, +{ + "ETH_account" : "0x69662921fa0390d85d457c706e05bfcf333e050b", + "name" : "0x69662921fa0390d85d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000696000 +}, +{ + "ETH_account" : "0x9e4038b04a1101ba1b95f82e4810a7f9ba001a17", + "name" : "0x9e4038b04a1101ba1b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1365000000 +}, +{ + "ETH_account" : "0xaf2e01ca5421aabc1115c20f12ecaa2880788060", + "name" : "bearlovespanda", + "publicKey" : "SPH723DqxPJ7A89aeyFdTJURZacAadjpcv7oxfeWArP4LMJXRozLu", + "balance" : 1582000000 +}, +{ + "ETH_account" : "0xe8c4dfc89ebadb7bb4b2f6a3679d0c414eb79e7b", + "name" : "0xe8c4dfc89ebadb7bb4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 621000000 +}, +{ + "ETH_account" : "0x7be9b9e46c6831a3b71891cffccf9176f953e819", + "name" : "0x7be9b9e46c6831a3b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53900000000 +}, +{ + "ETH_account" : "0xa23e3b20e0dc6405ee209601c9d210145e03604b", + "name" : "0xa23e3b20e0dc6405ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5124778500 +}, +{ + "ETH_account" : "0x1a6f834f44b67baea9f21418993330c977832c5f", + "name" : "0x1a6f834f44b67baea9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0xa29fa36af0b0dfa07d434383e41cd1339c6aa571", + "name" : "0xa29fa36af0b0dfa07d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4998500000 +}, +{ + "ETH_account" : "0xa02cec56b40f6113472ab5f61443249bbdc650ab", + "name" : "0xa02cec56b40f611347", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2604000000 +}, +{ + "ETH_account" : "0xca733c18f3f2b7c075d06765b4451791b82c4778", + "name" : "0xca733c18f3f2b7c075", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1199000000 +}, +{ + "ETH_account" : "0xb78b70d880b2e59706cc3fd5d10191608052d57d", + "name" : "0xb78b70d880b2e59706", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 739482000 +}, +{ + "ETH_account" : "0x17431c0e744fd43225b0e9c3d0838dd1520e3627", + "name" : "0x17431c0e744fd43225", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4317000000 +}, +{ + "ETH_account" : "0x3483df2f4bfd3a7e6bb4e78bd3eb4fcc40563035", + "name" : "0x3483df2f4bfd3a7e6b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 476968000 +}, +{ + "ETH_account" : "0x5d85abfa402233d21e4f9d0f4dc029a49bd34a5b", + "name" : "0x5d85abfa402233d21e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 375000000 +}, +{ + "ETH_account" : "0x894951035ddbf229efec7a5aa5e06b897eb098e2", + "name" : "0x894951035ddbf229ef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5509357000 +}, +{ + "ETH_account" : "0x9fa1afba26a41215c98a8d1c6f337999fed2cca8", + "name" : "0x9fa1afba26a41215c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1367317754 +}, +{ + "ETH_account" : "0x31a40caf37a30501dd38efc1390c245acef03e21", + "name" : "0x31a40caf37a30501dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 890893000 +}, +{ + "ETH_account" : "0x02afc4ffc7c84ad09bd51383d2166a14adc2e011", + "name" : "0x02afc4ffc7c84ad09b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2822110329 +}, +{ + "ETH_account" : "0xe316cf8ffc1f0ec2af15c0593ded1da9038eca87", + "name" : "0xe316cf8ffc1f0ec2af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 70000000000 +}, +{ + "ETH_account" : "0x5457845680fdda3538e191af182fc26005f764ce", + "name" : "0x5457845680fdda3538", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 77864000 +}, +{ + "ETH_account" : "0x3185651fc40fcb0de916052c266cc650141718ba", + "name" : "0x3185651fc40fcb0de9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0xd031920684bb0efd64168c2072df6ff070ef42e2", + "name" : "0xd031920684bb0efd64", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19000000 +}, +{ + "ETH_account" : "0xd3abc3bfd485078e32be8cc365b85ce4a280b970", + "name" : "0xd3abc3bfd485078e32", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 534059000 +}, +{ + "ETH_account" : "0x4da1504e8ab940a97bd2c1620bab0e10e694b823", + "name" : "0x4da1504e8ab940a97b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0xf5e25efcde1444c9cd026389580e783a7f2063f1", + "name" : "0xf5e25efcde1444c9cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0xee4d542e2ed7fb92d062ab26c302fba5fbb4ee94", + "name" : "0xee4d542e2ed7fb92d0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x059937a84d98df2e23f9b6e893009643cd3c6fd6", + "name" : "0x059937a84d98df2e23", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4500000000 +}, +{ + "ETH_account" : "0x8d8b4121e56e36cd3523a1849c6945532cf30b72", + "name" : "0x8d8b4121e56e36cd35", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900201000 +}, +{ + "ETH_account" : "0xf36bf474f3d4b23e67b85795c6a5cec2afca4bbb", + "name" : "0xf36bf474f3d4b23e67", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0x29160b366b8c084a26473d126c64489965a4d217", + "name" : "cozysukiyaki", + "publicKey" : "SPH5r19zHH9JhaW1Vf3bP1f4fX1eK31C8e7FXuukLDUH5YGVGQ5wT", + "balance" : 5097980537 +}, +{ + "ETH_account" : "0x3d89255529e9c515a51fd6066434772be38d6dbf", + "name" : "0x3d89255529e9c515a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4357206012 +}, +{ + "ETH_account" : "0xa7a6a44a4d8c3a21493e418645237db8849e0adc", + "name" : "zivko", + "publicKey" : "SPH8hnsEfn94eTRY44XPDqL4hBAKvo6xWtKeUUSKb2AHgmb7hLEbD", + "balance" : 18408050000 +}, +{ + "ETH_account" : "0x9969f713bfe5d04a1cbeaf5884290039b0f1c3bf", + "name" : "0x9969f713bfe5d04a1c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 180000000 +}, +{ + "ETH_account" : "0x7b5c0e6b100ae5148ec6816d3dfce80404981310", + "name" : "johntitar", + "publicKey" : "SPH66x7HFTAbxhmRUrjP3iQaeRM38oMdFAa1o9qF9cQaQVDtLUqrH", + "balance" : 1000000550000 +}, +{ + "ETH_account" : "0xc375b96fa28efb8536a3ba490e89f72e35831c30", + "name" : "0xc375b96fa28efb8536", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 763999790 +}, +{ + "ETH_account" : "0xe07dca4debd729e2e21a84aca510b5767f2b8977", + "name" : "0xe07dca4debd729e2e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1730000000 +}, +{ + "ETH_account" : "0x2594155a8bf0f06efc0958f36c2a3ebc94adaa41", + "name" : "0x2594155a8bf0f06efc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 256749325 +}, +{ + "ETH_account" : "0x26549b4d2ce31501ae9c4a59f08f14f640731a5a", + "name" : "gordannur", + "publicKey" : "SPH6goEhgtWZn7Ew7Ynb5eTLXPA4TKcNdCxL5B86sScgFJAK8CLYb", + "balance" : 250000000000 +}, +{ + "ETH_account" : "0xe861d66727db7c3920d3f809d0106e19b45f99d3", + "name" : "0xe861d66727db7c3920", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5368232415 +}, +{ + "ETH_account" : "0xa59d09b803aa620fc7a324e62f4dc60186ba8484", + "name" : "0xa59d09b803aa620fc7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1014819261 +}, +{ + "ETH_account" : "0xcd0006600c0b412aee936aa563832bc80fba81b7", + "name" : "0xcd0006600c0b412aee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 58794757 +}, +{ + "ETH_account" : "0x0ce0d7d423e874ecf9bac7fca7b3557da8a1509b", + "name" : "0x0ce0d7d423e874ecf9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4454000000 +}, +{ + "ETH_account" : "0xaba1eb68aec7981b18ce92bf5036af49eda547f6", + "name" : "0xaba1eb68aec7981b18", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3181810000 +}, +{ + "ETH_account" : "0x66a038082b5afa7d53f2d36242426aaced681148", + "name" : "0x66a038082b5afa7d53", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2700802653 +}, +{ + "ETH_account" : "0x11cb23cdcfc75c9afcc415dd5cd29d26550a0a5d", + "name" : "0x11cb23cdcfc75c9afc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 311 +}, +{ + "ETH_account" : "0xd1c7652a39cbb7ab2e5750c5aa1d67496079edf6", + "name" : "0xd1c7652a39cbb7ab2e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 599000000 +}, +{ + "ETH_account" : "0x265edd1a383a922cb9f7d1c2d0a25bc357f46c7c", + "name" : "jansophiatx", + "publicKey" : "SPH6B3ePKA9ekqocidzrxcarbxtpLW29xyAakbuXeL77Py2ETPQm7", + "balance" : 3632888000 +}, +{ + "ETH_account" : "0xad12349c9a03ce47bee369e8a4fdb560eb7b9684", + "name" : "0xad12349c9a03ce47be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 262869000 +}, +{ + "ETH_account" : "0x42e11e49e12a7de3d565c23ced3fd867374cb5bf", + "name" : "0x42e11e49e12a7de3d5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20100000000 +}, +{ + "ETH_account" : "0x8a8d42f857f2b1a384d84278cad42a746a6d3c50", + "name" : "0x8a8d42f857f2b1a384", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 316000000 +}, +{ + "ETH_account" : "0xc6b86e09577831ea6d6bfdc3a5a10d2c60f146c4", + "name" : "0xc6b86e09577831ea6d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 228999000 +}, +{ + "ETH_account" : "0x1482b174c13f8aa5240486f0caf5df5bafefbe8c", + "name" : "rkm", + "publicKey" : "SPH5Px4bWcRATzTFtMLAuNLe8ZAL6mU8p7oxS7pYvdJgTmg7zXsdU", + "balance" : 2408556900000 +}, +{ + "ETH_account" : "0x32ba46cbbccac56830d0cb5d4b7191c90bc55f5f", + "name" : "0x32ba46cbbccac56830", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1152610000 +}, +{ + "ETH_account" : "0xfdcd342fa05239a11e47ae97c1710248914f7d6e", + "name" : "0xfdcd342fa05239a11e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 751000 +}, +{ + "ETH_account" : "0x6898a6ae533c807667256ca1dd45b19d11d3be05", + "name" : "0x6898a6ae533c807667", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 776000000 +}, +{ + "ETH_account" : "0x1ece82964dadbf53397f8ba2c067136ca898ed91", + "name" : "familyman", + "publicKey" : "SPH5HP2RxPxbhhR7rvMcXRiWdGziDxqR2GhBnTkucHmw477H6eSG8", + "balance" : 999990000000 +}, +{ + "ETH_account" : "0xb2a55fb73fd63d289acef3f83bf43868ba53be36", + "name" : "0xb2a55fb73fd63d289a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 726000000 +}, +{ + "ETH_account" : "0xa6b5b714c4c4de02b4141387f65841640e1c36d0", + "name" : "sugnayeragam", + "publicKey" : "SPH5DTybxVbwvSrJs62HXQsutSMQ72z453BC5FnkqRD4e18HP9vto", + "balance" : 2181800000 +}, +{ + "ETH_account" : "0xd2948e592c586cf649fc3c6d9c5e51d9ae150969", + "name" : "infamesofia", + "publicKey" : "SPH6aQxCzaEQN8qiC5SfQsJ2jFh1pXkBQjLkKKvqnVu8RPxkzFqUm", + "balance" : 3500000000 +}, +{ + "ETH_account" : "0xcf61c95c32a0ba2d54bec3e7e6c382f364ace82b", + "name" : "0xcf61c95c32a0ba2d54", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 490584000 +}, +{ + "ETH_account" : "0xb5e4d5cc931a47d8c14a2b79b997aff140d1b0b0", + "name" : "0xb5e4d5cc931a47d8c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xa7ddaf03ad707a849e765e2561a72cbb4cb7d847", + "name" : "0xa7ddaf03ad707a849e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1587844000 +}, +{ + "ETH_account" : "0xc18871892d9a0d5e49a544fbfc8d2b8faed7a177", + "name" : "0xc18871892d9a0d5e49", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0x4ef3389036d4ab258241df1dbd4d67ddea69e9ea", + "name" : "0x4ef3389036d4ab2582", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 240000 +}, +{ + "ETH_account" : "0x54e5c7d8fdee0842de399e22e1cb09d40ac2677a", + "name" : "0x54e5c7d8fdee0842de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0x806432ba9f328c7d274fb3c65bd41091e1690c94", + "name" : "0x806432ba9f328c7d27", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11362788704 +}, +{ + "ETH_account" : "0x8d2d8a56fe18c7814ccf8e074dabb6ed609059a3", + "name" : "0x8d2d8a56fe18c7814c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 315530000 +}, +{ + "ETH_account" : "0xe2b5877edb5ecedbed4239a6ad46353e169aab13", + "name" : "0xe2b5877edb5ecedbed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1561000000 +}, +{ + "ETH_account" : "0xc2a5d7d282ec69ccc4fc66d84bd26c11674dbc8e", + "name" : "0xc2a5d7d282ec69ccc4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3820818720 +}, +{ + "ETH_account" : "0x8a648e8194ea22ed299c5ce1efe41f3f907e8992", + "name" : "0x8a648e8194ea22ed29", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 142557931 +}, +{ + "ETH_account" : "0x6acf1c46545e99ffdd8866baf27ae7b1cf628199", + "name" : "0x6acf1c46545e99ffdd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0xa29b5aaceed3078abfeb0c7704d6a3266adc8c60", + "name" : "0xa29b5aaceed3078abf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3068193000 +}, +{ + "ETH_account" : "0xa8f65c7a28ed43fbd315602c61d0690d83504db6", + "name" : "whatever", + "publicKey" : "SPH5UbjCfK9miF6NpzRTdVTX17N5Q3hedHZi7N8e4GJVfpuWZHSto", + "balance" : 1743500000 +}, +{ + "ETH_account" : "0x67352fd1c3a9344d8b8f043f60c65b39f446d21f", + "name" : "0x67352fd1c3a9344d8b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 62000000 +}, +{ + "ETH_account" : "0x0a53952d074c3a999532a3e118319d50a595a474", + "name" : "0x0a53952d074c3a9995", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1015757000 +}, +{ + "ETH_account" : "0x43d9f02b657eaacf0ace5377bed958a013fcefe9", + "name" : "0x43d9f02b657eaacf0a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x19198f2e6f281795c9bcb91d2d867cb4f36081cb", + "name" : "0x19198f2e6f281795c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 325000000 +}, +{ + "ETH_account" : "0xc3432cb38ba22ea1f2b39ac606725506833a0f70", + "name" : "0xc3432cb38ba22ea1f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3676000000 +}, +{ + "ETH_account" : "0xe3d4850e1ab7eeca9909bd9793e8c7e076ed6942", + "name" : "0xe3d4850e1ab7eeca99", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x0a479c6616857d0f15fdffc2933a296d5233d723", + "name" : "0x0a479c6616857d0f15", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 928367000 +}, +{ + "ETH_account" : "0x22408b650815184a866d594c4effb5c1f8e41105", + "name" : "0x22408b650815184a86", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 935000000 +}, +{ + "ETH_account" : "0x4afa38394bf64fbc50a1d55467a653ae07ae0eac", + "name" : "0x4afa38394bf64fbc50", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 495000000 +}, +{ + "ETH_account" : "0x60e3ced803bb4b12bfcfe4ad59e5b1fb9b8c45aa", + "name" : "0x60e3ced803bb4b12bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 46 +}, +{ + "ETH_account" : "0x9d0e0e4bd88abed53142ad5462fea29d68cc3ecf", + "name" : "sphtxmiggi", + "publicKey" : "SPH5ecoj5XnjUqWYqyV5NB3y2KqyDNZXCCUXTa94fpxbXEZ1s5HoJ", + "balance" : 6200000000 +}, +{ + "ETH_account" : "0x4881020fd9e524877aae49f7007a4efbd9a2c71d", + "name" : "0x4881020fd9e524877a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1865775728 +}, +{ + "ETH_account" : "0x015955bd15bb1690c8fc7124be11b4ce78d894a9", + "name" : "0x015955bd15bb1690c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3010000000 +}, +{ + "ETH_account" : "0xbd4c932e30dbe44522d55b0e8da183749069276e", + "name" : "0xbd4c932e30dbe44522", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50768543 +}, +{ + "ETH_account" : "0xb87d26ef6f768b795f765a85465fb25144c92d19", + "name" : "0xb87d26ef6f768b795f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000 +}, +{ + "ETH_account" : "0x2dc645a9083122dff050293ad947a854becbe5d5", + "name" : "adelante", + "publicKey" : "SPH6Nwxd4HraeCTz7irP6MZPN3wYe7TRkmAoCd91TwtYAnfjhieLg", + "balance" : 79760000 +}, +{ + "ETH_account" : "0x89f0470f6721d19fcdac005ff31d6c8ece5c6e64", + "name" : "0x89f0470f6721d19fcd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 745000000 +}, +{ + "ETH_account" : "0xe3a04558fb405c5429b8385f5950c08ccd0f11f7", + "name" : "pjuskenswap", + "publicKey" : "SPH8L5XTe7RxCSYQj3mNLfBgUMmNHpxuZfSuY5PtYcPNx7tfJ69pR", + "balance" : 626806900 +}, +{ + "ETH_account" : "0x31835e6ff3202daf2d693f2251f7d214847d81fa", + "name" : "beadsophia", + "publicKey" : "SPH7TEL2xZe16uQuQAPDZtATs4GdVHFaR7ngVo7eNKPwLLYNb3aPS", + "balance" : 6364656336 +}, +{ + "ETH_account" : "0x9f7d3648abf6a622bdceafcc8703b8c5a6e9dd48", + "name" : "0x9f7d3648abf6a622bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 240000000 +}, +{ + "ETH_account" : "0x68848e6e434bcea31616958f8c016a60455e582d", + "name" : "0x68848e6e434bcea316", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11333000000 +}, +{ + "ETH_account" : "0x442b0967a0cf75541bc6a77684c3e824a94f0cf5", + "name" : "nickbuzac", + "publicKey" : "SPH59BJd7DTozccgBQMmhRmbnuZuKKAJLv6UHj111BbkT8K6KtV8B", + "balance" : 9901591750 +}, +{ + "ETH_account" : "0xdbb612dc61ccc5016136d98abec0cb8f52049b90", + "name" : "0xdbb612dc61ccc50161", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1450050000 +}, +{ + "ETH_account" : "0x740b3374f1b465761c5cf5f9dd9b7686e1407374", + "name" : "0x740b3374f1b465761c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 96000000 +}, +{ + "ETH_account" : "0xaeadd37a2cdaeba1c8a4bfca21fc98633717cd68", + "name" : "0xaeadd37a2cdaeba1c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1151943000 +}, +{ + "ETH_account" : "0x4e8a5afed083ab3104b48d65db4d41a4d54a90f4", + "name" : "0x4e8a5afed083ab3104", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5849563000 +}, +{ + "ETH_account" : "0x2f48f80921ab775353ac7da8983b99b41c88892f", + "name" : "0x2f48f80921ab775353", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x35482dcf09261933bce1b68ecf745905e188bd87", + "name" : "0x35482dcf09261933bc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1132951569 +}, +{ + "ETH_account" : "0x75c54542b13bc43db6539abe9fad5589f05736a6", + "name" : "0x75c54542b13bc43db6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1006246795 +}, +{ + "ETH_account" : "0xf4c59a14a8cda6dd05f047dbe806ffc850b649a0", + "name" : "0xf4c59a14a8cda6dd05", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 550000000 +}, +{ + "ETH_account" : "0xe76bc0d2b0d7562e680127ed5c6c85256bf1b649", + "name" : "ainsley", + "publicKey" : "SPH7HNDtN92UhMuFp58YzaNhetRukb1T7z5KR1Xfw8sbip1JqdZGR", + "balance" : 709219000 +}, +{ + "ETH_account" : "0x90f0c321710416af550ba4d14106656a37cb60f7", + "name" : "0x90f0c321710416af55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3006137396 +}, +{ + "ETH_account" : "0x368c7a2912eca87b88f0aa863aa0121230624559", + "name" : "0x368c7a2912eca87b88", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 935307000 +}, +{ + "ETH_account" : "0x4105ee06c0b60970a778c5bbd81c525a5d858e8b", + "name" : "0x4105ee06c0b60970a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1760578000 +}, +{ + "ETH_account" : "0xfbe1efe002de2180ff14eba6ec3a7033842f6e53", + "name" : "0xfbe1efe002de2180ff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 234763000 +}, +{ + "ETH_account" : "0x969fe149704a220559fcff4227447ec3a3485b65", + "name" : "0x969fe149704a220559", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 91000000 +}, +{ + "ETH_account" : "0x89f442198303aa81ad71fb2bde4fc73972269717", + "name" : "0x89f442198303aa81ad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 61040 +}, +{ + "ETH_account" : "0x600d6fee0da1552c928511d11fbf6cfbca657ee3", + "name" : "0x600d6fee0da1552c92", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 315000000 +}, +{ + "ETH_account" : "0xcc410f34bbbef17038939c50ba5605db37ee8a87", + "name" : "0xcc410f34bbbef17038", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 183 +}, +{ + "ETH_account" : "0xf06f347a49d5735e220b5d5be261a245deced851", + "name" : "0xf06f347a49d5735e22", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1396746500 +}, +{ + "ETH_account" : "0x4082edfdd9dd2dc97fb2b115b1942cabc06ea69a", + "name" : "0x4082edfdd9dd2dc97f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3974896000 +}, +{ + "ETH_account" : "0xdc28c72478c962ec4430e88bd4a222790f4493c7", + "name" : "0xdc28c72478c962ec44", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x86f8f17dbb9ead2ec85785805b0751f69de16ca1", + "name" : "0x86f8f17dbb9ead2ec8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000 +}, +{ + "ETH_account" : "0xb46701b14385ad2568146fe5fdac1719737760e8", + "name" : "0xb46701b14385ad2568", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 120000000 +}, +{ + "ETH_account" : "0x73da80594daf2132978903dd6242c433b56293ed", + "name" : "0x73da80594daf213297", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 273151000 +}, +{ + "ETH_account" : "0x45ee46e1871ee1d4d7b5a1d6272eedc92cccc826", + "name" : "derrickteo", + "publicKey" : "SPH7At397FZnUxL8wqgWGmiKiorDAqxs6Fju23W67s2bdRZTniDtj", + "balance" : 7187403151 +}, +{ + "ETH_account" : "0xa59fb839e80142c9d0515155702d35f9dce4439e", + "name" : "0xa59fb839e80142c9d0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 45858004427 +}, +{ + "ETH_account" : "0xd54db683a129f604510d04598a99bc3207ddc2eb", + "name" : "0xd54db683a129f60451", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 655000000 +}, +{ + "ETH_account" : "0xff693d9872efe66496b27b632a371c7d050ed1a0", + "name" : "0xff693d9872efe66496", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6849055788 +}, +{ + "ETH_account" : "0x602851e2bf2ecb8843c95f79ada5d01f240b26ac", + "name" : "0x602851e2bf2ecb8843", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 648997 +}, +{ + "ETH_account" : "0x374736a48cd64be4eec2f5db53b2ade45e445503", + "name" : "0x374736a48cd64be4ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1765000000 +}, +{ + "ETH_account" : "0xd09726d963c62836aadffe7a825fadbb999c900b", + "name" : "0xd09726d963c62836aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xe9075208d20db002160f7fe4de629b514bc8c778", + "name" : "0xe9075208d20db00216", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x4720557cf6f8ad44f92090c7f71c6776780817ca", + "name" : "0x4720557cf6f8ad44f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 850000000 +}, +{ + "ETH_account" : "0x52ec71c276e7be51bb5cce8b57abf8b01b2050e5", + "name" : "0x52ec71c276e7be51bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 190067890000 +}, +{ + "ETH_account" : "0x1485b223ee97c8f9e3141c119db1893140628de3", + "name" : "0x1485b223ee97c8f9e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1600000000 +}, +{ + "ETH_account" : "0x2c09df51d18da38161a5374c757f51d7032e3f9a", + "name" : "0x2c09df51d18da38161", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 639269000 +}, +{ + "ETH_account" : "0xc7aeeb1b6a4181d2a7591b267c6a3c6fc956a59b", + "name" : "0xc7aeeb1b6a4181d2a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1221300000 +}, +{ + "ETH_account" : "0x1a5706e7c81fe3913054821ce967fdd082820a4b", + "name" : "0x1a5706e7c81fe39130", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4200000000 +}, +{ + "ETH_account" : "0xc968f33da43f5f60bad80a665201cf5ef590408f", + "name" : "0xc968f33da43f5f60ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 17911334400 +}, +{ + "ETH_account" : "0xd73ff6401e282145fc45d182fdd3dac99fd4969c", + "name" : "0xd73ff6401e282145fc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000250 +}, +{ + "ETH_account" : "0x89e95778c4d9a67b1a19e6e3c9b9117e9af7685f", + "name" : "0x89e95778c4d9a67b1a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000000 +}, +{ + "ETH_account" : "0x5810a60b960a5a0a4cdd0385fc083e6d34a4e500", + "name" : "0x5810a60b960a5a0a4c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 771965000 +}, +{ + "ETH_account" : "0xc67ae76b56f25d356cf080537dbafc29fc6eb956", + "name" : "0xc67ae76b56f25d356c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6171000000 +}, +{ + "ETH_account" : "0xe2db68279e0663d691014dbda25ca2c5316d1ad9", + "name" : "0xe2db68279e0663d691", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2025000000 +}, +{ + "ETH_account" : "0xb078bdac6cd2d4bd469a4ac8b470ff99dc3d3075", + "name" : "0xb078bdac6cd2d4bd46", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2124000000 +}, +{ + "ETH_account" : "0x469dede6274288594c2d16f21647d979131bb8cf", + "name" : "0x469dede6274288594c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3700000000000 +}, +{ + "ETH_account" : "0x28dc930d9e43b15d777b02b934d083519199798f", + "name" : "0x28dc930d9e43b15d77", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2299990000 +}, +{ + "ETH_account" : "0x4ee1aa4ca3f8ca3814633eddd458784326ea56ab", + "name" : "0x4ee1aa4ca3f8ca3814", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000 +}, +{ + "ETH_account" : "0x4c5572a6adcdcaf1513d6f6fb4b99be64e5b04f4", + "name" : "0x4c5572a6adcdcaf151", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2843503410 +}, +{ + "ETH_account" : "0x1e467f06920fe3d5b3e0943ffbee35a8f656b876", + "name" : "0x1e467f06920fe3d5b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4790000000 +}, +{ + "ETH_account" : "0x69d9e931c5a23bc8660559e05ac44d7e92bb407b", + "name" : "0x69d9e931c5a23bc866", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0x529ae9af4236438eb18c3f675438bf34b3414879", + "name" : "0x529ae9af4236438eb1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22746909731 +}, +{ + "ETH_account" : "0x582e0cbcf29b1a86be93c0f5105345546214db9a", + "name" : "0x582e0cbcf29b1a86be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000 +}, +{ + "ETH_account" : "0xe46a372f5a9f1f7bb186023731118a878de642d4", + "name" : "0xe46a372f5a9f1f7bb1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x38121c93f4a4ebaa9e3676676644e6844cc47ce3", + "name" : "0x38121c93f4a4ebaa9e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11499000000 +}, +{ + "ETH_account" : "0xd5f60a2689f23ff919dd6b56a31acb9c9007b420", + "name" : "0xd5f60a2689f23ff919", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2515026000 +}, +{ + "ETH_account" : "0xb60787bfcc9e4466a3cf81ff09f8d4b4d43d6957", + "name" : "0xb60787bfcc9e4466a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 385504885 +}, +{ + "ETH_account" : "0xc4be82f103f834b02ea0788b5bad5dd4eb19b8bd", + "name" : "lobox", + "publicKey" : "SPH8CxA6beG3FkVQ1GSbjFsJ6UmGr6iELJDd7ohCyCv5Ft3vVgptC", + "balance" : 6749905700 +}, +{ + "ETH_account" : "0xd76fafb7ad8f5e32fe27b86f5caae9f775b5c708", + "name" : "0xd76fafb7ad8f5e32fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 290667000 +}, +{ + "ETH_account" : "0x9c13f9857cd9e26a3221eabcab369c60bde5acd2", + "name" : "0x9c13f9857cd9e26a32", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19510767000 +}, +{ + "ETH_account" : "0xe8e6f04c5567674634f764638194fa282c08c27c", + "name" : "0xe8e6f04c5567674634", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 309000000 +}, +{ + "ETH_account" : "0x6af4a699c4e266575282c42abcde2fcd40ad6231", + "name" : "0x6af4a699c4e2665752", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 280000000 +}, +{ + "ETH_account" : "0x507ec791f434eb0e4cc5c1d29025b3a839ff0b8c", + "name" : "0x507ec791f434eb0e4c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2888512925 +}, +{ + "ETH_account" : "0xc1c59390f2aaa7def424605d96769ef7a7c64916", + "name" : "0xc1c59390f2aaa7def4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 852000 +}, +{ + "ETH_account" : "0x934cd35072daa86d10ec602c77aa7b15cc39242e", + "name" : "0x934cd35072daa86d10", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 128914520 +}, +{ + "ETH_account" : "0x89d8ae426e142a173fe20bf854d692132373c281", + "name" : "0x89d8ae426e142a173f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3907265839 +}, +{ + "ETH_account" : "0x97d4c10740250e86208f80c6e8762ff14fdf8ca5", + "name" : "0x97d4c10740250e8620", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4920 +}, +{ + "ETH_account" : "0x51f102536dd7e49a7cd98bda4fd47da9b5985bdd", + "name" : "0x51f102536dd7e49a7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1723875959 +}, +{ + "ETH_account" : "0x1e4d50a11095e9b7f3e6d213b093a509c917bce5", + "name" : "0x1e4d50a11095e9b7f3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 152508416 +}, +{ + "ETH_account" : "0xfea039d115917c7dbb294a51e1262442e4479b19", + "name" : "sophia", + "publicKey" : "SPH7vuUd4tkLb3Z9SfHQXXBQ2E9xaWCs6xHaUFgVLgfAPat9EEHYt", + "balance" : 6350255999 +}, +{ + "ETH_account" : "0x88cb418f8ee5a6e78fd9665ed074100fb323cfd7", + "name" : "0x88cb418f8ee5a6e78f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1235000000 +}, +{ + "ETH_account" : "0x407fedce0222cb372299ff7eb8ec86aec8147adf", + "name" : "0x407fedce0222cb3722", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 34558667521 +}, +{ + "ETH_account" : "0xc027f22edac3dc0faa5b6f72e3c9bf15bb0facf5", + "name" : "ezjsztsj", + "publicKey" : "SPH5ourn2Yo3n31vxPmHm5EUrDE9RspfEKaPSLgJyGTMHp3E9oXvE", + "balance" : 513172471 +}, +{ + "ETH_account" : "0x4da540ccfe452391f2b9da128c78bc51cc7a8999", + "name" : "asefvbcrtshuj", + "publicKey" : "SPH534w3GgoCX139GQawzm1XRMXDxJcajZev2N9R96MXgx4s8L1ba", + "balance" : 295000000 +}, +{ + "ETH_account" : "0x80fcb04a530fc21db99ec649d486d70d2a8d8911", + "name" : "0x80fcb04a530fc21db9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2500000000 +}, +{ + "ETH_account" : "0x995ead5520d060b709b58362d976c82f0c7dfe2b", + "name" : "0x995ead5520d060b709", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 70000000 +}, +{ + "ETH_account" : "0x0175977150e65801efde36d523184f9362f118b7", + "name" : "0x0175977150e65801ef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53084358525 +}, +{ + "ETH_account" : "0xe2f842ccfffaacc57399e285f037fe1d49d26de2", + "name" : "0xe2f842ccfffaacc573", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 87685000 +}, +{ + "ETH_account" : "0xc764c9d365c8e88e51a060709b7ad597c7db8b9b", + "name" : "0xc764c9d365c8e88e51", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 257693200 +}, +{ + "ETH_account" : "0x7fe939a42d27f8b2ec5b2d4c8f6147249043b83e", + "name" : "0x7fe939a42d27f8b2ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 533000000 +}, +{ + "ETH_account" : "0xe951bfd541405b89346a55c211d24712c94df7c7", + "name" : "0xe951bfd541405b8934", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 163000000 +}, +{ + "ETH_account" : "0xb5706bdb78dae446c537e19f44db9b9eb8a92c23", + "name" : "0xb5706bdb78dae446c5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3314320477 +}, +{ + "ETH_account" : "0x78d95c4933f0b9b1ced3679f764027eadd9803b7", + "name" : "0x78d95c4933f0b9b1ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 293209734 +}, +{ + "ETH_account" : "0x6e59076d0e7dc433d41f12ba1a555fdf23d746b4", + "name" : "0x6e59076d0e7dc433d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 846000000 +}, +{ + "ETH_account" : "0x9dfd533c41769a77143587f31b35b632bbf441be", + "name" : "0x9dfd533c41769a7714", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 453400507 +}, +{ + "ETH_account" : "0x065286a66a61fc817feff25d1c46772602f23352", + "name" : "0x065286a66a61fc817f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 770000000 +}, +{ + "ETH_account" : "0xb448f0c8636041727300c9764584d6bedc47ddf0", + "name" : "0xb448f0c86360417273", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 861262000 +}, +{ + "ETH_account" : "0x1209a5e9af5a132574d68b5c754a53708ddb2450", + "name" : "0x1209a5e9af5a132574", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 135000000 +}, +{ + "ETH_account" : "0x12a36b01f8da9b10c6af287de3c587b8bda3dd65", + "name" : "0x12a36b01f8da9b10c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4175000000 +}, +{ + "ETH_account" : "0x70bd894d118920021897e53dea9c1febf9050fbc", + "name" : "0x70bd894d1189200218", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1250200000 +}, +{ + "ETH_account" : "0x7df5475ef6d4ca9fe4696ee3ea46e38999df04ac", + "name" : "0x7df5475ef6d4ca9fe4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 691509 +}, +{ + "ETH_account" : "0x6d608b80bcac1eabde591f3b362947a43fe48a34", + "name" : "0x6d608b80bcac1eabde", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1800000000 +}, +{ + "ETH_account" : "0x022f2bffd9589187e29fb436f79063fd0ffaea59", + "name" : "0x022f2bffd9589187e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 448000000 +}, +{ + "ETH_account" : "0x18b65d0db13d7b7a48d157406999499c93351112", + "name" : "0x18b65d0db13d7b7a48", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 194000000 +}, +{ + "ETH_account" : "0x419826112fcf40275467d3089f055121ee108093", + "name" : "0x419826112fcf402754", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2200000000 +}, +{ + "ETH_account" : "0x3669b1714c5818542df8f0bf1f081b8d56f7b2f4", + "name" : "0x3669b1714c5818542d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9000000000 +}, +{ + "ETH_account" : "0xea18636ddac48dad1511d875c3a06cd846b99e4b", + "name" : "0xea18636ddac48dad15", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0x2aee321d5aec8c3599f45e7cd112cc7474024204", + "name" : "0x2aee321d5aec8c3599", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 457764976 +}, +{ + "ETH_account" : "0xac37acaacb2138079c3df03edcf9498c6a30cc01", + "name" : "0xac37acaacb2138079c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 918000000 +}, +{ + "ETH_account" : "0x146cdc025c4e3f5568ae5f2faaf8e64ab2c14a6c", + "name" : "eliasseng", + "publicKey" : "SPH68qMu34xtwMGuKFUzMFVN7b4zViV7oAxG1WZimk1x8tFvHxR1Y", + "balance" : 208385921 +}, +{ + "ETH_account" : "0xabe93f2bfac07db364a5317338d530c9d8c0a917", + "name" : "0xabe93f2bfac07db364", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 396887857 +}, +{ + "ETH_account" : "0x20e07b5ed44433a246f31363a8e330c4336de492", + "name" : "0x20e07b5ed44433a246", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 575373830 +}, +{ + "ETH_account" : "0xee1baf3ef32918805fd47ba9907b26d3977a8b60", + "name" : "0xee1baf3ef32918805f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 306313000 +}, +{ + "ETH_account" : "0x93621ecb776ca481afa8d534f5869d5cc808e2cd", + "name" : "0x93621ecb776ca481af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1416000000 +}, +{ + "ETH_account" : "0xc25ec67c9b9b7cec900e4cd1c29fa7ea575cd9b8", + "name" : "0xc25ec67c9b9b7cec90", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1406293000 +}, +{ + "ETH_account" : "0xbfecfb3b40037f8a40ba428ce586637a677c732b", + "name" : "0xbfecfb3b40037f8a40", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 193000000 +}, +{ + "ETH_account" : "0x3aea19168f10e592ac15750e7e9d572f2ef78cc4", + "name" : "0x3aea19168f10e592ac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x93920d67e9cbf152e1081db9c5bc64982ebcc066", + "name" : "0x93920d67e9cbf152e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1423327000 +}, +{ + "ETH_account" : "0x7356a041e4a87bf51c99833fa8f08beabefa6403", + "name" : "0x7356a041e4a87bf51c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0x69f00c950dae32429009172124a513fe2c6f2fda", + "name" : "0x69f00c950dae324290", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 322000000 +}, +{ + "ETH_account" : "0x0a410a5c971cbdbaa875881fcc486acd893540b5", + "name" : "0x0a410a5c971cbdbaa8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000000 +}, +{ + "ETH_account" : "0xda5ad3305e4dee5717a00b1217048b1e2c994f85", + "name" : "0xda5ad3305e4dee5717", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 791178943 +}, +{ + "ETH_account" : "0x3803933e806bf0e41dc17b3ea8a37b2b723a83ba", + "name" : "0x3803933e806bf0e41d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 898057069 +}, +{ + "ETH_account" : "0xed51bc3aa44bb6af0ecd5280323cfa06d6eeb8b1", + "name" : "0xed51bc3aa44bb6af0e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 209622981 +}, +{ + "ETH_account" : "0x73d632be9756847ab606b1012f1f0803f7555dec", + "name" : "0x73d632be9756847ab6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 72814000 +}, +{ + "ETH_account" : "0x93153cf3956247edaa1d2fad7c1659c63999d74a", + "name" : "0x93153cf3956247edaa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 472814919 +}, +{ + "ETH_account" : "0x30f2e605c6c9d1c8a1b24093e759970c22614a5d", + "name" : "0x30f2e605c6c9d1c8a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 933502930 +}, +{ + "ETH_account" : "0x2aed2587bb8801172db68b153b81b46647f59119", + "name" : "0x2aed2587bb8801172d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 260000000 +}, +{ + "ETH_account" : "0x86eff33aa4369958b1643feeababfa30a6742e4c", + "name" : "0x86eff33aa4369958b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 860000000 +}, +{ + "ETH_account" : "0x7ede2fc438cf61edd4f62e67610879044df62bc1", + "name" : "0x7ede2fc438cf61edd4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0xeba8efab4ffba2becaa6027f8f5b55aa8d274bd1", + "name" : "0xeba8efab4ffba2beca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18000000 +}, +{ + "ETH_account" : "0xda909743ecc9ded2b968d59a43b43908abd6101c", + "name" : "0xda909743ecc9ded2b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 106000000 +}, +{ + "ETH_account" : "0x88e78c07b1fb0438269d61091c76da18326b81e9", + "name" : "0x88e78c07b1fb043826", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 742000000 +}, +{ + "ETH_account" : "0xf3408cb1bb2612ade87619af036646f801f8b56c", + "name" : "0xf3408cb1bb2612ade8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 316000000 +}, +{ + "ETH_account" : "0x13535a9c238629ad4b6e1507ebead1edac9bc4e4", + "name" : "0x13535a9c238629ad4b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 42000000 +}, +{ + "ETH_account" : "0x3ff7b7d925cb9b29b63a1dcaa7fba545ced2ef72", + "name" : "0x3ff7b7d925cb9b29b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 115861087 +}, +{ + "ETH_account" : "0xa08da15a6043e92fe0db266aafd4c7b71f923571", + "name" : "0xa08da15a6043e92fe0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19444013466 +}, +{ + "ETH_account" : "0x66c50f4f680297d6e86a3149ea839169084654ef", + "name" : "0x66c50f4f680297d6e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 791147850 +}, +{ + "ETH_account" : "0x8b82da0e6d77c4c58621cad542715bb228bcf4b4", + "name" : "0x8b82da0e6d77c4c586", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 645000000 +}, +{ + "ETH_account" : "0x3ff066c02f6a81bcbb4eab76ea300e1b41c97bac", + "name" : "0x3ff066c02f6a81bcbb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1517400000 +}, +{ + "ETH_account" : "0xd29122882724fa1b5ea6251c4e0df2f136f77713", + "name" : "0xd29122882724fa1b5e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 135000000 +}, +{ + "ETH_account" : "0x00a715b1d88fdc4de36b4cf64fb805184a83376e", + "name" : "0x00a715b1d88fdc4de3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x7e97bbe454817208efd9329ab1554053fed5065b", + "name" : "0x7e97bbe454817208ef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4004706000 +}, +{ + "ETH_account" : "0x6b355197b4fefef5e5401b7686390e5c7de6fe1c", + "name" : "0x6b355197b4fefef5e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 77000000 +}, +{ + "ETH_account" : "0x3e42b026bec62549bef0a43124589a9c64835d4c", + "name" : "0x3e42b026bec62549be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 640000000 +}, +{ + "ETH_account" : "0xcd2531764b0c7be41427ba68da54643e81a29712", + "name" : "0xcd2531764b0c7be414", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2048148000 +}, +{ + "ETH_account" : "0xc36a96314ff0256bd1c9665c191c65b9efd583bf", + "name" : "0xc36a96314ff0256bd1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 93000 +}, +{ + "ETH_account" : "0x94100c9579eeccae6e1f662c92c1cd366fc514a8", + "name" : "0x94100c9579eeccae6e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2085000000 +}, +{ + "ETH_account" : "0x0a16db6d5efd5458f7bca473108d59cf3c1affb0", + "name" : "steef", + "publicKey" : "SPH5AdRipVCj6bAY8tQhXwUdoFQoApBJMGRs3VbzM8tJtSDeMT2LS", + "balance" : 900000830 +}, +{ + "ETH_account" : "0xfc6390139bc1cd955472075dcf2d7034b43ff9ca", + "name" : "0xfc6390139bc1cd9554", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9305000000 +}, +{ + "ETH_account" : "0x46ad59daeb70849ecb7f753c2ce0b5752ba9af38", + "name" : "0x46ad59daeb70849ecb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1884852220 +}, +{ + "ETH_account" : "0xc4e5ea3a3fd9b3bc39b670609d11aa61e70d74bc", + "name" : "0xc4e5ea3a3fd9b3bc39", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 502115582 +}, +{ + "ETH_account" : "0x0665d15fa9d0b4882bc0da20cbdba7b0662d4b24", + "name" : "0x0665d15fa9d0b4882b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 659498000 +}, +{ + "ETH_account" : "0xcc7471fb07896146baa4d2630574b6ce077c6450", + "name" : "0xcc7471fb07896146ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 119001000 +}, +{ + "ETH_account" : "0x14d137883ef03130d6aa1ea2f960bcf8473bd5c5", + "name" : "0x14d137883ef03130d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1471678869 +}, +{ + "ETH_account" : "0x98cfd69a5eab5fb085c28ae0158938d5db83c511", + "name" : "0x98cfd69a5eab5fb085", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 58703 +}, +{ + "ETH_account" : "0x81746d3c615136993128645312929d39dd750725", + "name" : "0x81746d3c6151369931", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x2784e9f0ec1c78d399e2e293e9888ca8fc9f171f", + "name" : "0x2784e9f0ec1c78d399", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1678000000 +}, +{ + "ETH_account" : "0x33c9f67ee5f0cc82f2802c1eca6c4e0d73d03b4b", + "name" : "0x33c9f67ee5f0cc82f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1107000000 +}, +{ + "ETH_account" : "0x5f9ceaab39fa4f569bbc3b10ffde237a360c100d", + "name" : "0x5f9ceaab39fa4f569b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 243000000 +}, +{ + "ETH_account" : "0xf968ede0bc6a3d54a69fb0ca7f33f47035810083", + "name" : "0xf968ede0bc6a3d54a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9722006733 +}, +{ + "ETH_account" : "0xd823ae9d9d698cf7de24e479933f9630a2538954", + "name" : "0xd823ae9d9d698cf7de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 145000000 +}, +{ + "ETH_account" : "0xc05d64842094bc1fc577399724ca3f1f588070b2", + "name" : "0xc05d64842094bc1fc5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 179591505 +}, +{ + "ETH_account" : "0x7cd1eb5ee30f4cd2f20ff343c4e07de9fbbc8a7f", + "name" : "0x7cd1eb5ee30f4cd2f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 168488594 +}, +{ + "ETH_account" : "0xc1bfdf58ef1a3522a2bd6b41bbaf83813668105b", + "name" : "sphtxttkknswap", + "publicKey" : "SPH546cZx8ULdpbDvPt5wek6uKRsu7kNJkQtmV5MciG2t8xRrRoEd", + "balance" : 3400000000 +}, +{ + "ETH_account" : "0x6220ca34a8c647a46e63813fd7e98cc65098d972", + "name" : "0x6220ca34a8c647a46e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 998870 +}, +{ + "ETH_account" : "0x1cab691277cc530a33dd79aafa85dcceb2a8871f", + "name" : "0x1cab691277cc530a33", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000 +}, +{ + "ETH_account" : "0x5ace9c8093082ca0e426441572ac4c9463ea5a49", + "name" : "0x5ace9c8093082ca0e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9000000000 +}, +{ + "ETH_account" : "0xbab2544a814a9ae7ebfde8dfa867df07c0be55ae", + "name" : "0xbab2544a814a9ae7eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 750000000 +}, +{ + "ETH_account" : "0x7fc76f83665845308a92a1272d424f1a8b2f0ee4", + "name" : "0x7fc76f83665845308a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x88d20fd39c3c68cfd8a9c20780ff03ea5985d8a5", + "name" : "pokilujihnfthysc", + "publicKey" : "SPH8DKFpEutyMeH2XtkZWw38Axb5EugMb58sPAq1Q352wJU9tKbGR", + "balance" : 13041569447 +}, +{ + "ETH_account" : "0xecfc3d50be9fb0d6d0a6394e919a2adcf6314b2c", + "name" : "0xecfc3d50be9fb0d6d0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x507d229b1ff9e8f2a64ad3d8696ce0efa2d7182f", + "name" : "0x507d229b1ff9e8f2a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1800000000 +}, +{ + "ETH_account" : "0x516afc012bfc798373a5e16616e0aa678f2a5bcd", + "name" : "0x516afc012bfc798373", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 725000000 +}, +{ + "ETH_account" : "0xd403f06244207abf239cd570c115a0d03120c02e", + "name" : "0xd403f06244207abf23", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2522899683 +}, +{ + "ETH_account" : "0x6be2141c00313dcca93c1edd31fcabda34dd88ed", + "name" : "0x6be2141c00313dcca9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000000 +}, +{ + "ETH_account" : "0x25df676afa4699d5a8b8ed5ca5f11f703e5f98a0", + "name" : "0x25df676afa4699d5a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0x26db17c7cdd9d95365ab2502b736fd18e2f4b301", + "name" : "0x26db17c7cdd9d95365", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12813139175 +}, +{ + "ETH_account" : "0xc5625e8d8f4dc93eb0759cfca060e80ab73d8f99", + "name" : "0xc5625e8d8f4dc93eb0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1800000000 +}, +{ + "ETH_account" : "0x3ed74e4fe52abc0ddc0174622bef792f415c1ef4", + "name" : "0x3ed74e4fe52abc0ddc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60000000 +}, +{ + "ETH_account" : "0x857a0d7b0155be244fd72b08a37b316fde60250e", + "name" : "0x857a0d7b0155be244f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x8747e15c03365b6d72b64fd70153321df330f451", + "name" : "0x8747e15c03365b6d72", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 929173000 +}, +{ + "ETH_account" : "0xaf8d606451f04ea582c907685ec67289b45a2b9f", + "name" : "dulban", + "publicKey" : "SPH6pBHrhsTFR2FrWGeoz1bcMCLZNXyA1M9ePUBpQsZiu4XF2NbTd", + "balance" : 9698725819 +}, +{ + "ETH_account" : "0xe0f39f2d9fcadddee3190bf9978ba7fb62d159a4", + "name" : "0xe0f39f2d9fcadddee3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1493000000 +}, +{ + "ETH_account" : "0x1c0d0f6663a981853f854a076f846cfd34e49c10", + "name" : "0x1c0d0f6663a981853f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2849000000 +}, +{ + "ETH_account" : "0xc395eb311cd8bc707c4e024251b718e80111d4b2", + "name" : "0xc395eb311cd8bc707c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1438184000 +}, +{ + "ETH_account" : "0x4c1ca681f090a42af7fddef4262349dd2ad43e42", + "name" : "0x4c1ca681f090a42af7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 529727 +}, +{ + "ETH_account" : "0x7ffe195e7468b83f91c784a41a6c4bf33a92e7d8", + "name" : "0x7ffe195e7468b83f91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 55000000 +}, +{ + "ETH_account" : "0x5ac813ebbd76bc4e36e01332d6070d1a3676f14d", + "name" : "0x5ac813ebbd76bc4e36", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 694999875 +}, +{ + "ETH_account" : "0x16ba0f9a5e5d39294a5b05e78dfa4e66368d563f", + "name" : "0x16ba0f9a5e5d39294a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000 +}, +{ + "ETH_account" : "0x44d6b3fb4eb1199f74d3090eeb7bbd55b3ac9746", + "name" : "0x44d6b3fb4eb1199f74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3250000000 +}, +{ + "ETH_account" : "0x4dc669d3b56704e1cc350b4c057e2c7ffca0deca", + "name" : "0x4dc669d3b56704e1cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 140000000 +}, +{ + "ETH_account" : "0x070ce39a39e0278a7c1f00b0d982abcc17ebb53c", + "name" : "0x070ce39a39e0278a7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 94289871 +}, +{ + "ETH_account" : "0x60b1b49b0b5f27b8c45301ed5db4671d0379d1ee", + "name" : "twoeasy", + "publicKey" : "SPH5W9oNQRhNU3hwgmQskYtrLkbrL4YCSHwRo111iKsrGRWmyqaVw", + "balance" : 976971000 +}, +{ + "ETH_account" : "0xb869294c4a4d1096186f79d2dc1317107da67040", + "name" : "0xb869294c4a4d109618", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1850000000 +}, +{ + "ETH_account" : "0x3567a248fb1d216b3d05fa4a88abbd39cc5f8e7e", + "name" : "0x3567a248fb1d216b3d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 990396000 +}, +{ + "ETH_account" : "0x419dd42dac7cc09ac40573001e465c6215216eda", + "name" : "0x419dd42dac7cc09ac4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 142790000 +}, +{ + "ETH_account" : "0x0d4b669675af57c8db631263731de924f45e895e", + "name" : "0x0d4b669675af57c8db", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4438394872 +}, +{ + "ETH_account" : "0xa81dc21776e707e328f855484a5b92c70cfe592f", + "name" : "0xa81dc21776e707e328", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2120000000 +}, +{ + "ETH_account" : "0xc90699962ee854ecfe5fc81cf88b3aa3ebe42d74", + "name" : "0xc90699962ee854ecfe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 481480000 +}, +{ + "ETH_account" : "0x0b506b53342397dffadba8bb41c64b61894fd0da", + "name" : "0x0b506b53342397dffa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23000000000 +}, +{ + "ETH_account" : "0xe3247b11de61f544485f909ea597c1d035b560b9", + "name" : "0xe3247b11de61f54448", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1815000000 +}, +{ + "ETH_account" : "0x9d9e57c01845149cb669f933fb479ad861c3d39f", + "name" : "aronsienna", + "publicKey" : "SPH7CeNhv4Wu9y3ZSaaLp5fded4EnYeEmrkydiQbdcVYNtwveWh76", + "balance" : 8218400000 +}, +{ + "ETH_account" : "0xde36bd8b28afe22467ee7f04c15fd090de44a922", + "name" : "0xde36bd8b28afe22467", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0xe7703b16ef7cd803ff46703172ef402f07a0ebb2", + "name" : "0xe7703b16ef7cd803ff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 86626046 +}, +{ + "ETH_account" : "0xed104a5f2b93ed1c02e9797a399151e9af71899c", + "name" : "0xed104a5f2b93ed1c02", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1750000000 +}, +{ + "ETH_account" : "0xc35a592ec434d5403a08c75060dc9bb30d66fd3a", + "name" : "0xc35a592ec434d5403a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 667384000 +}, +{ + "ETH_account" : "0xd3bd6bd9264271e9e95952cb201c5829d35bc4fa", + "name" : "0xd3bd6bd9264271e9e9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 528000000 +}, +{ + "ETH_account" : "0x3ba41764249162bcb8adccffbfda28dfc5675cf1", + "name" : "0x3ba41764249162bcb8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1808497000 +}, +{ + "ETH_account" : "0xc8d0671b59ca839e0825f0f56be0ce469da1b732", + "name" : "0xc8d0671b59ca839e08", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xc923452dc9579035124727e52a34410c21a3741d", + "name" : "0xc923452dc957903512", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xc801126a7d75c2ec0ed79343b5b24f6e4953aeea", + "name" : "0xc801126a7d75c2ec0e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30809582 +}, +{ + "ETH_account" : "0x465ab4e6956436e8138cd27597d8defd1eea8081", + "name" : "0x465ab4e6956436e813", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x67ef520ee20f08ac3b62a3b3799f92a020dae28c", + "name" : "0x67ef520ee20f08ac3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3680480000 +}, +{ + "ETH_account" : "0x85b966d61e47d81804a1f5e7f5ca0020dcf9b081", + "name" : "0x85b966d61e47d81804", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1871000000 +}, +{ + "ETH_account" : "0x041d938b4741d238e0d4e471322f36ff7cd1dc88", + "name" : "0x041d938b4741d238e0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xab40ddb29c1c0e82a0efd6d322862f834a9af556", + "name" : "0xab40ddb29c1c0e82a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 390993650 +}, +{ + "ETH_account" : "0x88071ce0f7f7a573392df2e4fd6f6d2fe948ed2b", + "name" : "0x88071ce0f7f7a57339", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3800000000 +}, +{ + "ETH_account" : "0x9bba0794a21a9b58d5b39669918ac415c6083792", + "name" : "0x9bba0794a21a9b58d5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 43851981269 +}, +{ + "ETH_account" : "0xd288e23c28ff59ee68349d9e51ee8290c06eeeb1", + "name" : "sophixbrianx", + "publicKey" : "SPH5mAZbAW1npVeicLd7Y3RAKWEqKHpzzpsKfRXQsFC54bn1RexTy", + "balance" : 654000000 +}, +{ + "ETH_account" : "0xb1c778e3a877fa9d69d296ba8465862507e3bbb7", + "name" : "mulkmulk", + "publicKey" : "SPH59CU597Xse9jVNxwS3yfPfv5J6ugKK5yjZ8wm6rGT5FeWBf7os", + "balance" : 1725000000 +}, +{ + "ETH_account" : "0x0537b39d228efc6448b42747dcc3d490e3ebf302", + "name" : "0x0537b39d228efc6448", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x945d2ba44dd78c18cf47f46d9eebd5f914afec94", + "name" : "0x945d2ba44dd78c18cf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 210 +}, +{ + "ETH_account" : "0x390ada474e989568fbb29d25fd1242d1093ba76a", + "name" : "0x390ada474e989568fb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7146000000 +}, +{ + "ETH_account" : "0x5e25e6cb910e47dbb500080c86fc41ddef12ea9a", + "name" : "0x5e25e6cb910e47dbb5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2912753743 +}, +{ + "ETH_account" : "0xacf652e501ea6a4bc1a1327daff7c063448f6b0e", + "name" : "0xacf652e501ea6a4bc1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 546558000 +}, +{ + "ETH_account" : "0xf8861e2b920159a8b95e7de99d4e3a46759c75ac", + "name" : "rapert", + "publicKey" : "SPH5hZF5fcoq6HGe52qNjgKEcwRVMA87RqXHENPixePR6ALBHCfhe", + "balance" : 2917718210 +}, +{ + "ETH_account" : "0x9af5938237ff2a013fd13b378adc43b539c27e23", + "name" : "0x9af5938237ff2a013f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0xd0f3103fe0a0f0cfd3be1bbf204a7884749b49f0", + "name" : "0xd0f3103fe0a0f0cfd3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 389000000 +}, +{ + "ETH_account" : "0x3e951c0fbcd329a8cea76ecfa9289d8e30cab177", + "name" : "0x3e951c0fbcd329a8ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 522500000 +}, +{ + "ETH_account" : "0x604eec583dccf488d880e333818e1aa3adc53a62", + "name" : "0x604eec583dccf488d8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3347000000 +}, +{ + "ETH_account" : "0x178db19b5c8a400d6f95283572abd5424ceea813", + "name" : "0x178db19b5c8a400d6f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3054530000 +}, +{ + "ETH_account" : "0x7754ef29cb256f2e652477aad3b82c5ed640ba7d", + "name" : "0x7754ef29cb256f2e65", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 35000000 +}, +{ + "ETH_account" : "0x3d3f606577c914d6c577f68986bcf4c23c6b1360", + "name" : "astro", + "publicKey" : "SPH6gcaAdLccKXrAujJBt8erQR8GNTkGMUZfRWiU3U5DNv8JhgFqn", + "balance" : 10770000000 +}, +{ + "ETH_account" : "0x33850d029abba4f87eda1cc387b257c553e41f96", + "name" : "0x33850d029abba4f87e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1499000000 +}, +{ + "ETH_account" : "0x2c4090a54bd6eff78bcbc0b49ed17e0f152389c8", + "name" : "0x2c4090a54bd6eff78b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2920000000 +}, +{ + "ETH_account" : "0x967536ab71eb00fa13e6ec541e5ac2eabf72821c", + "name" : "0x967536ab71eb00fa13", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6214611854 +}, +{ + "ETH_account" : "0x033805e116fce67399857b89e609e26b5c88d011", + "name" : "0x033805e116fce67399", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 275707500 +}, +{ + "ETH_account" : "0xc623c49e134b9e73f6222ab30c741143ee69fa5e", + "name" : "mamba", + "publicKey" : "SPH8DZ1GNBErgCzw3budvYTBx7hVUeTwxAeapeC2a8TJZF8V4G78q", + "balance" : 488890610 +}, +{ + "ETH_account" : "0x01112dcd6b7f625699beb90fd9d33b20b3a13c11", + "name" : "phand", + "publicKey" : "SPH5aeebZn5z9friJLc4Q27ocQFhPU4LZkHYt4i74gMZzh5YNbx69", + "balance" : 400001408 +}, +{ + "ETH_account" : "0x82a96e30443721ddd3a3f149bfc2c8bf6796a178", + "name" : "0x82a96e30443721ddd3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 517539000 +}, +{ + "ETH_account" : "0xd2094eb4432db3717a07af358a241961c9d3ed51", + "name" : "0xd2094eb4432db3717a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 745000000 +}, +{ + "ETH_account" : "0x32831eda58a344365cf089bbea02cfa22f1d73c9", + "name" : "0x32831eda58a344365c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23000000000 +}, +{ + "ETH_account" : "0x04d907504514292576647e4c835f14c70c02df1d", + "name" : "0x04d907504514292576", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1554560000 +}, +{ + "ETH_account" : "0x98703c65a7690f3b516c0fb51bcad6214cfb5dcf", + "name" : "0x98703c65a7690f3b51", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 51000000 +}, +{ + "ETH_account" : "0x15fab3d88825360bd0494c903eb55af45c4b4479", + "name" : "0x15fab3d88825360bd0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1088550000 +}, +{ + "ETH_account" : "0x214f38714d7f9e10211a7e2a2b481ebdf719c5f7", + "name" : "0x214f38714d7f9e1021", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3109121450 +}, +{ + "ETH_account" : "0x1941c45823bf29356926cf03961511c972b922df", + "name" : "0x1941c45823bf293569", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1250000000 +}, +{ + "ETH_account" : "0xe2189e67dd8e00f73fa1c51c759ab7f42e109d5f", + "name" : "0xe2189e67dd8e00f73f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x87e46717902591da293c8eb4428f5549f74f02ef", + "name" : "0x87e46717902591da29", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 259000000 +}, +{ + "ETH_account" : "0x6658c7bc6ef15428c3d18b7e4f1ef550ac1ab63f", + "name" : "0x6658c7bc6ef15428c3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 957600000 +}, +{ + "ETH_account" : "0x172c7c6020bc01ce3527883039bd9ba739997131", + "name" : "0x172c7c6020bc01ce35", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 120000000 +}, +{ + "ETH_account" : "0x07e18bbd407026c9e69d58ca9e3dc7f8f2cd62bf", + "name" : "0x07e18bbd407026c9e6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xa3b036fe5904dff659e64d98d283881ba10b5380", + "name" : "0xa3b036fe5904dff659", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1030100000 +}, +{ + "ETH_account" : "0xdc27819f91d67e9bff0968f7e086254f7d57c47e", + "name" : "sophiageest", + "publicKey" : "SPH6gvLMQB7wiqv891h5QDAj7KnNTZzm6iLB7khcQSurSv5duVyEj", + "balance" : 10844000000 +}, +{ + "ETH_account" : "0x8f7fd2a13e4018e6abfbc47f1e2a040fa6ccc7e5", + "name" : "mulletsays", + "publicKey" : "SPH75kuoH11yHHD1cXQEHADF8LLzfUYYMwWxerVJpgTHrfJKJYZFC", + "balance" : 934000000 +}, +{ + "ETH_account" : "0xe455ee12cd7d4e48f9f08698b3828c788ddd721b", + "name" : "0xe455ee12cd7d4e48f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11803000000 +}, +{ + "ETH_account" : "0x95d0895bbc56ebd46f6db83abeb06b67bb1a36d5", + "name" : "0x95d0895bbc56ebd46f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8688706658 +}, +{ + "ETH_account" : "0xfa3f6adff971ecd4ad76f9ca24a1053249136864", + "name" : "0xfa3f6adff971ecd4ad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 34583000000 +}, +{ + "ETH_account" : "0x5ad4f8481554bbc6fee3782301da9767a3885d84", + "name" : "0x5ad4f8481554bbc6fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6439529000 +}, +{ + "ETH_account" : "0xbd5dc7284d44a6e6fd4d07614956f62cba35fac5", + "name" : "tiesco", + "publicKey" : "SPH5ZTQhXyFnpyEnY7kcTMe2tq4xu9CDFic3ZHt26N4WPnbGxjSh9", + "balance" : 4410000000 +}, +{ + "ETH_account" : "0xb7f44ced9f2953e86be8d0f0d4ad819ba0b4137d", + "name" : "0xb7f44ced9f2953e86b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2007900000 +}, +{ + "ETH_account" : "0x002581ede17e88a6c85ff3acd697006d8e8fcf07", + "name" : "0x002581ede17e88a6c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 404308600 +}, +{ + "ETH_account" : "0xba147ce0662e8e388b626a3d5e3b56db291330bb", + "name" : "0xba147ce0662e8e388b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 295300000 +}, +{ + "ETH_account" : "0xe4061936cc5f55e9b5a0d727da82c774f0970c15", + "name" : "0xe4061936cc5f55e9b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 347000000 +}, +{ + "ETH_account" : "0x6b1ea9f611bdcc2b4d79034573d26259873e7c04", + "name" : "0x6b1ea9f611bdcc2b4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 147485600 +}, +{ + "ETH_account" : "0x627a7bbc93ce7dc7f40f559d6410ec7360d911a0", + "name" : "0x627a7bbc93ce7dc7f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1947000000 +}, +{ + "ETH_account" : "0xced476a2c8026aeb778da17362bd1b41e9435595", + "name" : "0xced476a2c8026aeb77", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1532356900 +}, +{ + "ETH_account" : "0xbcc5a52a7ced78098071364aacc79448a7b4aaec", + "name" : "0xbcc5a52a7ced780980", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x956c899bfeface917652bda88a0b8dabd0adc860", + "name" : "0x956c899bfeface9176", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1056000000 +}, +{ + "ETH_account" : "0xbddb88244f20f4d8d73a70b357890f17e14860d0", + "name" : "kucoin2", + "publicKey" : "SPH4yUQgDdXBjSv4uLgDMZP4PymW4qzQozWTxVWp5MPErh94EDFoz", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x9b995534efb8c9b6d1d092001042c68746e7262f", + "name" : "0x9b995534efb8c9b6d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 584618350 +}, +{ + "ETH_account" : "0x3451145d14d20674ec3460202883a53d426f83f9", + "name" : "0x3451145d14d20674ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 875000000 +}, +{ + "ETH_account" : "0xe23f7a64cc1dc9e3b9b75bd4d7602838036d0e7e", + "name" : "0xe23f7a64cc1dc9e3b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 193043400 +}, +{ + "ETH_account" : "0xd408737aa8bbdec5c8242908e2819e1a432532f0", + "name" : "0xd408737aa8bbdec5c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 834000000 +}, +{ + "ETH_account" : "0x93e4fbec45f193827c96a61fb78417994e14302c", + "name" : "0x93e4fbec45f193827c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1600238300 +}, +{ + "ETH_account" : "0x0632212796ab47e1ab582d7af32acfe5ea402d86", + "name" : "0x0632212796ab47e1ab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65190000000 +}, +{ + "ETH_account" : "0xb31c43330eb34b685c2135e7fbbce230622357e4", + "name" : "0xb31c43330eb34b685c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150000000 +}, +{ + "ETH_account" : "0x8347dabfb2f432ca61b646a8b407b39f7c795ba7", + "name" : "0x8347dabfb2f432ca61", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x125f8a37c85aae2564ae16d402e5d1776230fcb5", + "name" : "0x125f8a37c85aae2564", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 114000000 +}, +{ + "ETH_account" : "0x1dc968d82d109970a725dd0f0650705832568cf2", + "name" : "0x1dc968d82d109970a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5361000000 +}, +{ + "ETH_account" : "0xb6859b6973069a75ca08e7589824c9c0ce26d0a0", + "name" : "0xb6859b6973069a75ca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1870000000 +}, +{ + "ETH_account" : "0xac32e1838ce8118e5b8bcfc9e4501392fb5aff40", + "name" : "0xac32e1838ce8118e5b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2200000000 +}, +{ + "ETH_account" : "0x1826da8856a3c6339300ab6b0d0de1f84caeb73d", + "name" : "0x1826da8856a3c63393", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2458393749 +}, +{ + "ETH_account" : "0x35dca461777d0e0efafa2af82e5cfdf337e7fe1a", + "name" : "0x35dca461777d0e0efa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3364253714 +}, +{ + "ETH_account" : "0xf6c457d625f21e4a7c492cc1aa2bd4dd665c0bf3", + "name" : "0xf6c457d625f21e4a7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 45000000000 +}, +{ + "ETH_account" : "0x6a5abb8f0c7e8e42b1859397adc76f4e86057fec", + "name" : "0x6a5abb8f0c7e8e42b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24305016833 +}, +{ + "ETH_account" : "0xc093aa48fc1cc37ee8ace9c24fa02ac1c375c585", + "name" : "0xc093aa48fc1cc37ee8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x3ace1b546e403a3bd554dc48074c1b412e51074c", + "name" : "0x3ace1b546e403a3bd5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 132000000 +}, +{ + "ETH_account" : "0xef98f9263ea16b2b7606db9539d6bc1913ba8310", + "name" : "0xef98f9263ea16b2b76", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 766400 +}, +{ + "ETH_account" : "0xa35851e1ffd5b13ab916ef2aeff3f07f5d6b700c", + "name" : "0xa35851e1ffd5b13ab9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 36300000 +}, +{ + "ETH_account" : "0x59ef99b8e0bbe84c1c532884f7e446b4fa776ade", + "name" : "0x59ef99b8e0bbe84c1c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2037986500 +}, +{ + "ETH_account" : "0x0ab39199c243d8a7432a5094d323b784a02d09f8", + "name" : "0x0ab39199c243d8a743", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3621000000 +}, +{ + "ETH_account" : "0xc50572e34004b75bbffc4947bf5e770c3681bba2", + "name" : "0xc50572e34004b75bbf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1030725409 +}, +{ + "ETH_account" : "0x0d4d97d6d1ebc641a9188348bd741639498d8037", + "name" : "0x0d4d97d6d1ebc641a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 363089900 +}, +{ + "ETH_account" : "0x27fe6f2d5d9e70dbca15c420e1f24d9df1848017", + "name" : "0x27fe6f2d5d9e70dbca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1230000000 +}, +{ + "ETH_account" : "0x3400ba3911c87fae19059947adcc4014d4c68ac9", + "name" : "0x3400ba3911c87fae19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 130000000 +}, +{ + "ETH_account" : "0x1eaeaace3151f8a76040e07e2b3f87f1340b95e3", + "name" : "0x1eaeaace3151f8a760", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 320000000 +}, +{ + "ETH_account" : "0xc017aa3ca17e69c9e2808c4e58597e293d10ca7c", + "name" : "0xc017aa3ca17e69c9e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xb88f6f873cb841735ffea30aec730e4cddcfe662", + "name" : "0xb88f6f873cb841735f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1766520000 +}, +{ + "ETH_account" : "0x720b0ef78c88b89d9dcdeeb07c02a2829f49bcdb", + "name" : "0x720b0ef78c88b89d9d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 305000000 +}, +{ + "ETH_account" : "0x016d43bede7d91eb698bc01c4a9f500e9b8e1a09", + "name" : "0x016d43bede7d91eb69", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5503000000 +}, +{ + "ETH_account" : "0xa46140e332c0037bf69c8d51f357eae83b90252b", + "name" : "sphtxtokenswap", + "publicKey" : "SPH5bitn6ZFUw3k1fF5Afvw9eLKnZvxzTaWEMKfHkL8w8aDxZf6Hz", + "balance" : 992361800 +}, +{ + "ETH_account" : "0x1c0fd4e00c11c25b5cab253c51653b76ce1975da", + "name" : "0x1c0fd4e00c11c25b5c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 349000000 +}, +{ + "ETH_account" : "0xc9e1e9965b67a8360563d263a2d3a69606bd9e7a", + "name" : "0xc9e1e9965b67a83605", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x9bca51e1cebaf0cfe61d0afbdb955d0573e7f311", + "name" : "0x9bca51e1cebaf0cfe6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 434000000 +}, +{ + "ETH_account" : "0xd729452923d8d1534b91b93722aaf5f55fc7eb70", + "name" : "0xd729452923d8d1534b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x39438e52d61d8de8af4cfd80d38d34674c5ad6a2", + "name" : "0x39438e52d61d8de8af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0xaff9680af93b55216624b3b036bc903c0073c6eb", + "name" : "0xaff9680af93b552166", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1054000000 +}, +{ + "ETH_account" : "0x3542d76fa99faa67a802f1123e3fc61d5e3c2f6d", + "name" : "0x3542d76fa99faa67a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13910000000 +}, +{ + "ETH_account" : "0x579a3966c182444b93cb02984864d25260b17d64", + "name" : "0x579a3966c182444b93", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5617010000 +}, +{ + "ETH_account" : "0x95db3a7c2c6f7c692bc65cfbef1fb7b592b49428", + "name" : "0x95db3a7c2c6f7c692b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x51b434c26f0451096295f79ec0f20c088088e66b", + "name" : "0x51b434c26f04510962", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1246911200 +}, +{ + "ETH_account" : "0xef3ae11e9d99c32701d7fe02d17e28e57791f22e", + "name" : "0xef3ae11e9d99c32701", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1795890000 +}, +{ + "ETH_account" : "0x7df904923d9cfaece82a606554f6bcb5d7e3df14", + "name" : "0x7df904923d9cfaece8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x8b26166778907f97b77f36c65ba0da818adad5bf", + "name" : "0x8b26166778907f97b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2650050000 +}, +{ + "ETH_account" : "0x8bd239ad16cc7d3b4bca4fdfdfa13e4b6b20fece", + "name" : "0x8bd239ad16cc7d3b4b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 142701000 +}, +{ + "ETH_account" : "0x2c353ca37d310f1a6555dc13e6d2ac7b9318b3d9", + "name" : "0x2c353ca37d310f1a65", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 729744299 +}, +{ + "ETH_account" : "0xb5ef5807b01e214e719251ff85eeea859a7b749b", + "name" : "0xb5ef5807b01e214e71", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x7e0f33a30dd920ddadadfd85c74b53fef8948834", + "name" : "0x7e0f33a30dd920ddad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8871000000 +}, +{ + "ETH_account" : "0x4aa48e259fa247989a0a102b2f474db97e10d876", + "name" : "0x4aa48e259fa247989a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 110000000 +}, +{ + "ETH_account" : "0x844898d1f5f9aa7b1fd8f3e1899bcb2d7be947ad", + "name" : "0x844898d1f5f9aa7b1f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5898991000 +}, +{ + "ETH_account" : "0x2bf3388f8ce63b822e7c9abb423547e4e7b7f455", + "name" : "0x2bf3388f8ce63b822e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4000000000 +}, +{ + "ETH_account" : "0xe2ec1cdc5db79280115c7b721b58f01fdc4baa49", + "name" : "0xe2ec1cdc5db7928011", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 758346000 +}, +{ + "ETH_account" : "0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208", + "name" : "0x2a0c0dbecc7e4d658f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 406435992131 +}, +{ + "ETH_account" : "0x3d50f3e76c756f1c74376b9160f3cb66d759b820", + "name" : "0x3d50f3e76c756f1c74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 31 +}, +{ + "ETH_account" : "0x0042c9a389335f48b1f8870ce24f473ce10dd427", + "name" : "0x0042c9a389335f48b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5547413000 +}, +{ + "ETH_account" : "0x8d1514387767499668dc665bb622812aa30ec632", + "name" : "0x8d1514387767499668", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 124235840 +}, +{ + "ETH_account" : "0x6c35f99963cf1524378d39d5cb32841b28c00609", + "name" : "nonodeu", + "publicKey" : "SPH7HBWVRJTwGNUDFbEBaRcyszMRJpgMjFhT92h3bLnw5TnLHddm1", + "balance" : 400000000 +}, +{ + "ETH_account" : "0x215af0ac294bbbcbdef6edfc5e2eff36e3405fc6", + "name" : "0x215af0ac294bbbcbde", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xfae4af1d536b742306f8e9586c3894466d70f1e4", + "name" : "0xfae4af1d536b742306", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1007000000 +}, +{ + "ETH_account" : "0xa63195a943b02f3e057bc4701d57b10bf256e12c", + "name" : "0xa63195a943b02f3e05", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3054000000 +}, +{ + "ETH_account" : "0xcab3288351b97dc60abe6e3f552d1e3af5969170", + "name" : "0xcab3288351b97dc60a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xb51d0bf3274bf4a5db556af70132d50fd13d4553", + "name" : "0xb51d0bf3274bf4a5db", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1147000000 +}, +{ + "ETH_account" : "0x8958618332df62af93053cb9c535e26462c959b0", + "name" : "0x8958618332df62af93", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1032334925452 +}, +{ + "ETH_account" : "0xca701caf452f409ba76657c9a524ae06bc995445", + "name" : "0xca701caf452f409ba7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 532380730 +}, +{ + "ETH_account" : "0xef75e5c5f38ef1f5082f4a1424fad84da8d46de2", + "name" : "0xef75e5c5f38ef1f508", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3925000000 +}, +{ + "ETH_account" : "0xdd2b53813c597e1ddf9b4eb9df8d0dc28f03d2b5", + "name" : "0xdd2b53813c597e1ddf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 487618816 +}, +{ + "ETH_account" : "0x666244bc58a6bf1420bf3de0754158efde3ffe16", + "name" : "dondangles", + "publicKey" : "SPH6ckVgh5jY65tMH4chdVzfUxj3abYurmK7vDjXY1bC9NtiLmScW", + "balance" : 2134958830 +}, +{ + "ETH_account" : "0x8d9053db4748b58d6fccfe21c4666574e0288440", + "name" : "0x8d9053db4748b58d6f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21474837999 +}, +{ + "ETH_account" : "0x37ab34bf6fbf492e21de5e257949b4d70f04c102", + "name" : "0x37ab34bf6fbf492e21", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53352943 +}, +{ + "ETH_account" : "0x20c32e94f7dad3a6b4df65a623f38965c62cb920", + "name" : "0x20c32e94f7dad3a6b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 756000000 +}, +{ + "ETH_account" : "0x2dc7df638ea7f634c5807ca1e40eea9a91d4d07f", + "name" : "0x2dc7df638ea7f634c5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 649000000 +}, +{ + "ETH_account" : "0xd92bd11d31f859e06347829cbd58d99c352880ad", + "name" : "0xd92bd11d31f859e063", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xc802f9f8b5c24307b96cacb38e605c790e5c2f91", + "name" : "0xc802f9f8b5c24307b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4740788140 +}, +{ + "ETH_account" : "0xc5afaca5558fe4f86aec14957ba26e128175f87e", + "name" : "0xc5afaca5558fe4f86a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9838228904 +}, +{ + "ETH_account" : "0x660d30d1fbafdc88a1951370cbe2b3094dbf224b", + "name" : "0x660d30d1fbafdc88a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000 +}, +{ + "ETH_account" : "0xa82f2bc95b49f73f1d677478c4dce158d9c74e42", + "name" : "0xa82f2bc95b49f73f1d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x1b0fbf72d03c560d533854a588df91c046bba4e2", + "name" : "0x1b0fbf72d03c560d53", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 131751000 +}, +{ + "ETH_account" : "0xddd9cf78fe5db654dbbc0b85ed2f281400743e5f", + "name" : "0xddd9cf78fe5db654db", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 700993770 +}, +{ + "ETH_account" : "0x81931e7305b9bfa6eb10dcbb202af6990efe737b", + "name" : "0x81931e7305b9bfa6eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 865048543 +}, +{ + "ETH_account" : "0xd2a6e95187a01a02090bffc718233b8bceb5ee76", + "name" : "0xd2a6e95187a01a0209", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60972000 +}, +{ + "ETH_account" : "0xe204861c8cf513f9646566a67ace951e22a7d045", + "name" : "0xe204861c8cf513f964", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xcf69cbe29940b637b0dd503597a7d0562f9a13af", + "name" : "0xcf69cbe29940b637b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 199000000 +}, +{ + "ETH_account" : "0x16325ae4ebff27ee74a6af5fdd26b8c95aeba315", + "name" : "0x16325ae4ebff27ee74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 270000000 +}, +{ + "ETH_account" : "0x3703847e67f2de6a561a92ce3c313c7d7a042aaf", + "name" : "0x3703847e67f2de6a56", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 54000000 +}, +{ + "ETH_account" : "0x9c3bc646c377bd9d698f70b332e9840bf4147ad2", + "name" : "0x9c3bc646c377bd9d69", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 655900000 +}, +{ + "ETH_account" : "0x0ec07259e0cec1a4894c0c475da711701a03af33", + "name" : "0x0ec07259e0cec1a489", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2369000000 +}, +{ + "ETH_account" : "0x1b0b84ea6630cbc52a37a740631c03bbc288c097", + "name" : "0x1b0b84ea6630cbc52a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 217500000 +}, +{ + "ETH_account" : "0x4fdbd246709aed85296a519bd745d402ee9d1547", + "name" : "0x4fdbd246709aed8529", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 162000000 +}, +{ + "ETH_account" : "0x5261c269f05a2c63aa487de7edcec9ebc6f24b7e", + "name" : "0x5261c269f05a2c63aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8554000000 +}, +{ + "ETH_account" : "0xf16ecff49beda9173104f1a958f49cee6d9cbe59", + "name" : "0xf16ecff49beda91731", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4132000000 +}, +{ + "ETH_account" : "0xaafcf8cd57eafafefa366c391f961cf1fe20c511", + "name" : "0xaafcf8cd57eafafefa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 906558600 +}, +{ + "ETH_account" : "0xfd4fb1da00f55acce00f30462280f409b65d4547", + "name" : "atubester", + "publicKey" : "SPH4x99eEM9dSiYb7sCznxdNGKKS9gdYyn6bmgTfeZZviwzsnhaed", + "balance" : 2900000000 +}, +{ + "ETH_account" : "0x6c595d25c2f1d1bb0f29d66e3d983beb341a9206", + "name" : "0x6c595d25c2f1d1bb0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40000000000 +}, +{ + "ETH_account" : "0x3946e472d72e839254322950fe2b0c00197f0bd4", + "name" : "0x3946e472d72e839254", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 517600000 +}, +{ + "ETH_account" : "0xec4933599311ff8821b98b912a024bad21ecb99b", + "name" : "sphtxkucai", + "publicKey" : "SPH88vGHJsyjvX48ecQqvE5kXC4tHXY6jD5AmY78TNiFiRvvTLzLw", + "balance" : 110000000 +}, +{ + "ETH_account" : "0x7374a8bd19b9e1a82256cd983367f803f6734e13", + "name" : "0x7374a8bd19b9e1a822", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2605000000 +}, +{ + "ETH_account" : "0x27735bff4e2ae8963b2804e729c6e07e889c8689", + "name" : "0x27735bff4e2ae8963b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1005000000 +}, +{ + "ETH_account" : "0x07a6c8acb4d6d7231e307718117298e22c922a08", + "name" : "0x07a6c8acb4d6d7231e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 449000000 +}, +{ + "ETH_account" : "0x11eb43ba18f65ea452b0ad18d3ae9433ad094fe8", + "name" : "0x11eb43ba18f65ea452", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 121000000 +}, +{ + "ETH_account" : "0x2aed6407faa8b9ae4789ed5a96f86d74fdad5ff2", + "name" : "0x2aed6407faa8b9ae47", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 750000000 +}, +{ + "ETH_account" : "0x5dfc08372b554aeb167ed9dc55c999e913503826", + "name" : "0x5dfc08372b554aeb16", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2122909200 +}, +{ + "ETH_account" : "0x804494f840e4385b4d539d3067bc76d225a67918", + "name" : "0x804494f840e4385b4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1735000000 +}, +{ + "ETH_account" : "0x4d79f083eb2d42295bfb5cbbb452e38df898c283", + "name" : "0x4d79f083eb2d42295b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1225000000 +}, +{ + "ETH_account" : "0xbdcfcb0eff5433505ec8b233d76fe1391a16ad0c", + "name" : "0xbdcfcb0eff5433505e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x7a1c805551e726b10e658c90f2c4b39da26324f8", + "name" : "0x7a1c805551e726b10e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2464176400 +}, +{ + "ETH_account" : "0x93f7cb21d6904492b33e0df24008c8b13ce64380", + "name" : "0x93f7cb21d6904492b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5621649400 +}, +{ + "ETH_account" : "0x3e38b1fb859a4b7d79e53d67ba09a691eedfead6", + "name" : "0x3e38b1fb859a4b7d79", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x886c80084a472e7db8259dbfc410350c3711a8ca", + "name" : "politraille", + "publicKey" : "SPH7fTDZEeyFh3FjdRR9qXynEgWBiN28RVY3DTQUcSDbW28NjeCzW", + "balance" : 298000000 +}, +{ + "ETH_account" : "0xa61e8eccb578e3158f1f2613607dca5170912d93", + "name" : "0xa61e8eccb578e3158f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 443240000 +}, +{ + "ETH_account" : "0xab5c49714a06ad76ddaa82e8381f97d8c07f4f2c", + "name" : "0xab5c49714a06ad76dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21652189000 +}, +{ + "ETH_account" : "0x1253132c7cf027fc4ddc312324a574324c127fd4", + "name" : "0x1253132c7cf027fc4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6147410000 +}, +{ + "ETH_account" : "0x8ed86fae1ceefddda0f19cfa74adbfa34587b565", + "name" : "0x8ed86fae1ceefddda0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 251033550 +}, +{ + "ETH_account" : "0xaeb8247fa0bf6abdbbb2147b3cd4e3e7db64887b", + "name" : "0xaeb8247fa0bf6abdbb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 359000000 +}, +{ + "ETH_account" : "0x6435e7611ba98a3885425f326875b1f014574bf9", + "name" : "0x6435e7611ba98a3885", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0xdb6131b088d31a8806338fdf2129b8080b51eafc", + "name" : "0xdb6131b088d31a8806", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18789795100 +}, +{ + "ETH_account" : "0x4f23501b03a2d6f1649378d83d1b77f634c461b5", + "name" : "0x4f23501b03a2d6f164", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5566251900 +}, +{ + "ETH_account" : "0x3ecc3e9c7a10924f48cca5c2e04507db0df06517", + "name" : "0x3ecc3e9c7a10924f48", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 106586200 +}, +{ + "ETH_account" : "0xa5ce17d409c0c7f06c82ab9c9984dce8307e5d9d", + "name" : "0xa5ce17d409c0c7f06c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 657000000 +}, +{ + "ETH_account" : "0x375035ccbcbecdcc1d7416b0c9339497b709f456", + "name" : "0x375035ccbcbecdcc1d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2459000000 +}, +{ + "ETH_account" : "0x8854b99a42c91ed4d498d0890614111634cccd85", + "name" : "0x8854b99a42c91ed4d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 710000000 +}, +{ + "ETH_account" : "0x94c5ff7feaa51d604142c77ccbc941f7e7e131a1", + "name" : "0x94c5ff7feaa51d6041", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 137297900 +}, +{ + "ETH_account" : "0x14917dc63ed4ffc57c3bcc91c871d445fdacd682", + "name" : "0x14917dc63ed4ffc57c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9999 +}, +{ + "ETH_account" : "0x641f34c5cde9cc75754edb6e29485f88457195ec", + "name" : "0x641f34c5cde9cc7575", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 277739200 +}, +{ + "ETH_account" : "0x299f96a04a2bc6fc1e9ab644260a563307d10c25", + "name" : "0x299f96a04a2bc6fc1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2013000000 +}, +{ + "ETH_account" : "0x308ec9fb1568153d34428e5da2cb973fd3dfbb1b", + "name" : "0x308ec9fb1568153d34", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1131030000 +}, +{ + "ETH_account" : "0x4f5372d408bff4629f3e9cf84e864efc020bfaed", + "name" : "0x4f5372d408bff4629f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 361000000 +}, +{ + "ETH_account" : "0x14fa7df9975665cd2f7fadc4bea507a1df499fbe", + "name" : "0x14fa7df9975665cd2f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 108010000 +}, +{ + "ETH_account" : "0xb2c89c59c6512068e5683974825f8ed2f5ef4171", + "name" : "0xb2c89c59c6512068e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2120526800 +}, +{ + "ETH_account" : "0x76a257239450042d6c1205d545164ac586832f17", + "name" : "0x76a257239450042d6c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13900000000 +}, +{ + "ETH_account" : "0xaca8fbbdddfce169114f344d8ee739bde665f4f4", + "name" : "0xaca8fbbdddfce16911", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24440000 +}, +{ + "ETH_account" : "0xc0b87e20fac91035eeaa09ce64061e7db8a5df3e", + "name" : "0xc0b87e20fac91035ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3308000000 +}, +{ + "ETH_account" : "0xf221106534b950bfe08a189604a4efdf50b807dd", + "name" : "0xf221106534b950bfe0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1076705153 +}, +{ + "ETH_account" : "0x22eb23e17560bcdc96d1131845994da6ac24c2d5", + "name" : "0x22eb23e17560bcdc96", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 290230000 +}, +{ + "ETH_account" : "0xed9ed99afec50e813a39373449fc23768b28eae0", + "name" : "0xed9ed99afec50e813a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 592000000 +}, +{ + "ETH_account" : "0xa82b287ea831ec2a83a4f0c095ef9293c1ae97b0", + "name" : "0xa82b287ea831ec2a83", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 573000000 +}, +{ + "ETH_account" : "0x2c9a708fc11ec4f88ff9b55fcb1df6d727de0397", + "name" : "leonvdvliet", + "publicKey" : "SPH8jtUBnjVNwZgv3TB2y17MsCKUuWXFePoMj8BvWyNmy8TSY6Sx7", + "balance" : 4192000000 +}, +{ + "ETH_account" : "0xd300e59e0b6096f000269c78f4ed1b41e76159fd", + "name" : "0xd300e59e0b6096f000", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8018699400 +}, +{ + "ETH_account" : "0x8bfa0c3602e2356ec8b45c6d8c1c4435a7e70fca", + "name" : "0x8bfa0c3602e2356ec8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 509660000 +}, +{ + "ETH_account" : "0xde39ee1d583808aa4cb542deb751036d9b4c4802", + "name" : "0xde39ee1d583808aa4c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000928160 +}, +{ + "ETH_account" : "0x0503838148bf01120f47f679a6043ac6ac7ba591", + "name" : "snowball", + "publicKey" : "SPH6JZvEZWbBYFiXS6SrRuzyvK5rWBHzcjQCSR1Qczw8j3izLsWGz", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x536cf53eead164874e91fbedc0eee267fe10eb32", + "name" : "nihzyx5g7", + "publicKey" : "SPH8hYvk3finYKaQMwLbcGwgaurjghroo9xG7tDT9LKDaaF6Rekq7", + "balance" : 50000000000 +}, +{ + "ETH_account" : "0xe51306557529a866a2dcf53f7f233e3a8908501f", + "name" : "0xe51306557529a866a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 95000000000 +}, +{ + "ETH_account" : "0xc1c825747359dcb3d5516f369e535ce7853d5062", + "name" : "0xc1c825747359dcb3d5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10254704538 +}, +{ + "ETH_account" : "0xb2166830097d4b49a8313620491171899b335a71", + "name" : "0xb2166830097d4b49a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400999999 +}, +{ + "ETH_account" : "0xc63b0d887ed0335699354db687c5fa0b37cb0d96", + "name" : "0xc63b0d887ed0335699", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5200000000 +}, +{ + "ETH_account" : "0x795df9a9699b399ffc512732d2c797c781c22bc7", + "name" : "0x795df9a9699b399ffc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 194 +}, +{ + "ETH_account" : "0xa34a6180e91419409761f00939d0dec8e3c74003", + "name" : "0xa34a6180e914194097", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 442000000 +}, +{ + "ETH_account" : "0xd51b1392451b433d20fc6e2044954a6ea3dc40bd", + "name" : "0xd51b1392451b433d20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 732920721 +}, +{ + "ETH_account" : "0xae49d628583177ed5d26b756cbbc4cce67b27a3d", + "name" : "0xae49d628583177ed5d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 112983000 +}, +{ + "ETH_account" : "0x0732c39fdaa683be8109e1cd541854cbae7a91e7", + "name" : "0x0732c39fdaa683be81", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80535013 +}, +{ + "ETH_account" : "0x647776295b2407e41c9b15ad66644977e78d0fa2", + "name" : "0x647776295b2407e41c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0xf08754bdb369268d5890484bfc6274d6a824877c", + "name" : "0xf08754bdb369268d58", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xb65406c3bb36f443aeb2bf3b88e2a47ca7e7b88e", + "name" : "0xb65406c3bb36f443ae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0x846fb111b9bc2d2b6985ce2bae821c6d8c91bea1", + "name" : "0x846fb111b9bc2d2b69", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 102742722 +}, +{ + "ETH_account" : "0x4860e6f7241bf9a45e2b3b60b8ff2231c8123aaf", + "name" : "0x4860e6f7241bf9a45e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 720000000 +}, +{ + "ETH_account" : "0xe7626ebdbdd9fd42d3e53383aa98695472ab4610", + "name" : "0xe7626ebdbdd9fd42d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 220947729 +}, +{ + "ETH_account" : "0xf3616a5b57e3d69b7e09305bf836867ef5799dfb", + "name" : "0xf3616a5b57e3d69b7e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 280000000 +}, +{ + "ETH_account" : "0x31d8ea2d87433df394719d41756f67c9c58fc9dc", + "name" : "0x31d8ea2d87433df394", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 902 +}, +{ + "ETH_account" : "0xeb2a45e7d59bec16776b59f61e01e8930ed45d83", + "name" : "0xeb2a45e7d59bec1677", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1792000000 +}, +{ + "ETH_account" : "0x15b96012f1dd89cfed1c901c1b855acd4fefa17e", + "name" : "0x15b96012f1dd89cfed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000231650 +}, +{ + "ETH_account" : "0x3ef14d5f309e0f0d2b23f07f581354d8f8621dd0", + "name" : "0x3ef14d5f309e0f0d2b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1992000000 +}, +{ + "ETH_account" : "0x8a2a0d40a154cdac82e4b0b271fcb67317e94f44", + "name" : "birdy", + "publicKey" : "SPH6oX9hFSZuVbfidBEGu4inrSrwVPN3ZYvpE9XAjkTkis1hryPkU", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x1e7c26a52918eadb261ca69c2ca756a6c0fa2439", + "name" : "0x1e7c26a52918eadb26", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1300000000 +}, +{ + "ETH_account" : "0x801270adbc86408997c270652667b2bdeb77fc15", + "name" : "0x801270adbc86408997", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 348393743 +}, +{ + "ETH_account" : "0xd5a0ddc6609424cdfc2daa46b2096370be5b3bd6", + "name" : "0xd5a0ddc6609424cdfc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 97850000 +}, +{ + "ETH_account" : "0xaa994e50ca9dccc1c5feb3b6da1c8077df33642a", + "name" : "nasimsophia", + "publicKey" : "SPH6waJvcFFefF6uBAXJp68uirMGs4NEtous8Q7F2kp9swipDwNcM", + "balance" : 261123233 +}, +{ + "ETH_account" : "0x3d830d759cad45ea153bd6d2d0151b03ec5dbe69", + "name" : "0x3d830d759cad45ea15", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1181000000 +}, +{ + "ETH_account" : "0x124b5c5e163311cef45adeac638f7dd9a50feb9e", + "name" : "abc", + "publicKey" : "SPH5WSdiZtMvKx1FDqxqYhrVFjxVe6GxZtQXBUGyfwTBJMr4j8cQS", + "balance" : 262387289764 +}, +{ + "ETH_account" : "0x74b4dfd21e3ab5eb8149658a7c4a1d1269023b29", + "name" : "0x74b4dfd21e3ab5eb81", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 194678680 +}, +{ + "ETH_account" : "0x13e3f1f6a84f3914f11c1cb3932989b7ca13ea96", + "name" : "0x13e3f1f6a84f3914f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40000000 +}, +{ + "ETH_account" : "0xff595ee5bdba20ba82453e3046e01740153d2efe", + "name" : "0xff595ee5bdba20ba82", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 248000000 +}, +{ + "ETH_account" : "0x8c43c1dced72f13b5ab5a166accf6d9110f03953", + "name" : "0x8c43c1dced72f13b5a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 575000000 +}, +{ + "ETH_account" : "0xaf99eff7dfcf5952a7873d1011ebfe1c21cfa007", + "name" : "0xaf99eff7dfcf5952a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x600c275c51c2d6de5139391d13cf0709efbc25ca", + "name" : "0x600c275c51c2d6de51", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 745107676 +}, +{ + "ETH_account" : "0x4b7186e044fc39580ceaa492fd3b8146e6fd5d0b", + "name" : "0x4b7186e044fc39580c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x3bd82f773a7dcef888d6b820e6c3ad566f8f15ec", + "name" : "0x3bd82f773a7dcef888", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 129000000 +}, +{ + "ETH_account" : "0xe78eeeb83b3851a109bda3c723efbfd8d67798c4", + "name" : "0xe78eeeb83b3851a109", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 848660000 +}, +{ + "ETH_account" : "0x26d469193a79533638c4a8c48187217af37502e3", + "name" : "0x26d469193a79533638", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 345000000 +}, +{ + "ETH_account" : "0x5afa760ab04ece8c7c6033eb37cf7b297414d66f", + "name" : "0x5afa760ab04ece8c7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5734649338 +}, +{ + "ETH_account" : "0x52f65bdeada824d8a1424fc0acad63fad114d09c", + "name" : "dale", + "publicKey" : "SPH6cQQZaS6oN5ZSrUwGjiMAMPPJ1yeN31jSUx1WcKUrStVpv3n91", + "balance" : 88906439922 +}, +{ + "ETH_account" : "0xe5dc9e1254755baa115bbf6f69881454d027f9c9", + "name" : "0xe5dc9e1254755baa11", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0x7b3b8d9f3e3ec94dadd7a890a2835f1fc38c34db", + "name" : "0x7b3b8d9f3e3ec94dad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 163000000000 +}, +{ + "ETH_account" : "0xef126394b7d0452ee864a1117cf6835b5ad1837d", + "name" : "0xef126394b7d0452ee8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1215250842 +}, +{ + "ETH_account" : "0x0b303152a9d22e0154a1fcb827d74a3dc65e3299", + "name" : "0x0b303152a9d22e0154", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 530127536 +}, +{ + "ETH_account" : "0x028360a018ec712ced64052b9af87b9cfa8791d8", + "name" : "0x028360a018ec712ced", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0x3b0899f81f2dc9d7d25c7251e979ef4e89e3c75b", + "name" : "0x3b0899f81f2dc9d7d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 117363569500 +}, +{ + "ETH_account" : "0x0d4f98cb588c18fcc2695e2341112f066a915f80", + "name" : "0x0d4f98cb588c18fcc2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 67400 +}, +{ + "ETH_account" : "0x64fc2f7f5e6bacebb35083d1a53a04549a0df82e", + "name" : "0x64fc2f7f5e6bacebb3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 147000000 +}, +{ + "ETH_account" : "0x6b2b542b2f63042f5352bfd589f34cce00a5b134", + "name" : "0x6b2b542b2f63042f53", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99000000 +}, +{ + "ETH_account" : "0x5cffe8c8a89d2e98ed90c5080a562e15246c4d8e", + "name" : "0x5cffe8c8a89d2e98ed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1250000000 +}, +{ + "ETH_account" : "0xb0cadc95f1b0f6791e190cbc3c54826ca1fdeed5", + "name" : "0xb0cadc95f1b0f6791e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 443179300 +}, +{ + "ETH_account" : "0x72f114e13f82e6fb04f9d084591c629c5bf49a2e", + "name" : "timimerohaina", + "publicKey" : "SPH8FiouSXyfVjKn3cBwsSen1hTm2Bs5pXDUi8aEEWMJAgp4gJzAY", + "balance" : 800000000 +}, +{ + "ETH_account" : "0x1bea8d12cd65a093777823c694b6d6db3eda2853", + "name" : "0x1bea8d12cd65a09377", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1481000000 +}, +{ + "ETH_account" : "0x2f8ca324aecf1d3a0de9a5a87ba29a03fd3e7551", + "name" : "0x2f8ca324aecf1d3a0d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 315000000 +}, +{ + "ETH_account" : "0x4b84f7b35d75b96131cfa723f65bbb6563fa9f61", + "name" : "0x4b84f7b35d75b96131", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 979000000 +}, +{ + "ETH_account" : "0xc8ebd06baf02644f9fe52ce53c79c5c013b87e68", + "name" : "0xc8ebd06baf02644f9f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xb472e43c649763d6c1e6b19da48214303480dfea", + "name" : "0xb472e43c649763d6c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xcc91e891b427f986aa64301a8e00acaf44ef9f1b", + "name" : "jorgesophia", + "publicKey" : "SPH62wmKNsHravhzKav4dhAk9jZYVqH8rVTAkV1ERAuV2nWtvBaUN", + "balance" : 6761550000 +}, +{ + "ETH_account" : "0x6a9692043df6b406b1135f44d59646695db55fc2", + "name" : "0x6a9692043df6b406b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2520000000 +}, +{ + "ETH_account" : "0x5f58d619ae9714743fd0cc2bdd5b871d6a44c680", + "name" : "larseelman", + "publicKey" : "SPH8SMbZWT9PQyhtPABKtNrSgcSVk6mhQhckgfVeEN1dRvoknoi3x", + "balance" : 287000000 +}, +{ + "ETH_account" : "0xf134597292adeb19827f0c49c4f2f1ff47aef459", + "name" : "katsdingo", + "publicKey" : "SPH5aTh6v66x53rHz7Uf3fUNLTMg7eYS6vQSVNSdWYq9YNk1hJ9Ya", + "balance" : 3500000000 +}, +{ + "ETH_account" : "0x21c98265e349ce838fee2b13f50c151804da5c1e", + "name" : "0x21c98265e349ce838f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 44000000 +}, +{ + "ETH_account" : "0xe5696fa700d19d6b225b7623a25a4a553c0e0378", + "name" : "0xe5696fa700d19d6b22", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2127000000 +}, +{ + "ETH_account" : "0x519b5390306ebb33b78e5693d2fd38558ed74409", + "name" : "0x519b5390306ebb33b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x0f9963c549f950b550d0acdabcb6c017ba52ca07", + "name" : "mysphtxclaim", + "publicKey" : "SPH6ynx3CE7MPuKGZEKXDuf3YQQvL4CoxVaPX7JqCjZLDNxycqe4C", + "balance" : 2538593786 +}, +{ + "ETH_account" : "0xe37ae7d66cf1cfe2c953306b8105eac0633d35dd", + "name" : "sptsmbteam", + "publicKey" : "SPH5c2PwTV1LF71GXYGrQZcYbvF4Xp3GHjwAZvzuadQkPjiL1wpBR", + "balance" : 2780000000 +}, +{ + "ETH_account" : "0x72d0f6acaa4ae67c57bbf6835eba92ad977bb806", + "name" : "0x72d0f6acaa4ae67c57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 73863600 +}, +{ + "ETH_account" : "0xa95d7a86077289275ab4ac3c8f94ec09ab6627c0", + "name" : "0xa95d7a86077289275a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3191680000 +}, +{ + "ETH_account" : "0x116ecfc854bd978465f3ed4aa1e4e52247c148fc", + "name" : "0x116ecfc854bd978465", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4364482100 +}, +{ + "ETH_account" : "0xdbddef22e2a1470b66f0692684fbeed1e0c09020", + "name" : "0xdbddef22e2a1470b66", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 701000000 +}, +{ + "ETH_account" : "0x04751a6242105b07182f90760e3d497aa51bbfaf", + "name" : "0x04751a6242105b0718", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0xfa77162071d04df1369bd5a177825b957cb6376c", + "name" : "0xfa77162071d04df136", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 950000000 +}, +{ + "ETH_account" : "0x3b018bee0e941a2d1b6922e760596963ce9f6cbb", + "name" : "0x3b018bee0e941a2d1b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 595930215 +}, +{ + "ETH_account" : "0x6f5f479e0b987937b7e2ebe6b9667849ccbb72fc", + "name" : "0x6f5f479e0b987937b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 223000000 +}, +{ + "ETH_account" : "0xcb1fa0343453176eb190831e67cffaf445e37a51", + "name" : "0xcb1fa0343453176eb1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0xcb2bc71072f899423767e6416517b120568220a4", + "name" : "0xcb2bc71072f8994237", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0xe5fe0978c2eb68ec070119498d83283062fbdd51", + "name" : "0xe5fe0978c2eb68ec07", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 700000000 +}, +{ + "ETH_account" : "0x5f12dc962c2d5ba6c4958b3fe669cf544874873f", + "name" : "0x5f12dc962c2d5ba6c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 375000000 +}, +{ + "ETH_account" : "0x7613075ade88e988269a80d7689cec1c66c8b3bf", + "name" : "dgazek", + "publicKey" : "SPH5kVL6pb8NcZ3QrTaMVvuQ1z9aebSHPBFYZgAK7biYP7QPM9YSo", + "balance" : 349487000 +}, +{ + "ETH_account" : "0x1e26e33f4efaedad6343a8e6eeeb448c5fb41f7b", + "name" : "0x1e26e33f4efaedad63", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 102000000 +}, +{ + "ETH_account" : "0x44bb7426c1bffcc8e8e359bef8ae3682bbd825a1", + "name" : "0x44bb7426c1bffcc8e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xf05661a07b4bd5cef9a053f75f03e0ef955144e8", + "name" : "0xf05661a07b4bd5cef9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 346573293 +}, +{ + "ETH_account" : "0x6965298bed7782f6ba42e9fdaac42b060da9a9a1", + "name" : "0x6965298bed7782f6ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 448000000 +}, +{ + "ETH_account" : "0x23d85abe1ee598ee8827baa93af5407d16852397", + "name" : "guffsop", + "publicKey" : "SPH599HcDAwry3KEcoJS78CHzduguzRU7TaYrUcHFvcVcpHQo6idw", + "balance" : 1250000000 +}, +{ + "ETH_account" : "0xee04a72283fe28f4355ca5b4ee077577d51f73a5", + "name" : "0xee04a72283fe28f435", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xf49e08c51b50b75baf13e136e1ac979a9b771caa", + "name" : "0xf49e08c51b50b75baf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x4b5ef60808b51efce2d0de86ba80d33aa7cec3d4", + "name" : "0x4b5ef60808b51efce2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3700000000 +}, +{ + "ETH_account" : "0xb9c580a2000e50cb435240294aed7b40e3322273", + "name" : "0xb9c580a2000e50cb43", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 17682000000 +}, +{ + "ETH_account" : "0x869d3144f00da236673a7a94e9e3b5f8ffd2e3eb", + "name" : "0x869d3144f00da23667", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7738950000 +}, +{ + "ETH_account" : "0x491ebe1bd6cd3f3d8d4228d97afae336fb0ab150", + "name" : "mades", + "publicKey" : "SPH6CHcxWLbD6aHjCW7WiJpX7J7hLQgASe469yHzKwzgotAURPEgx", + "balance" : 20998926956 +}, +{ + "ETH_account" : "0x054a49f13fcf9d129158afa07bd86c14132ee95f", + "name" : "0x054a49f13fcf9d1291", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x5ecb57064ea39fcbd8bded4287f2b27e23381c4e", + "name" : "0x5ecb57064ea39fcbd8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14400000000 +}, +{ + "ETH_account" : "0x60155489191796592869a45a478e4f7ffe718267", + "name" : "0x601554891917965928", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1111000000 +}, +{ + "ETH_account" : "0xafe5650842c688ae7df378cde299e85139a66adf", + "name" : "0xafe5650842c688ae7d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x72dff9ed873b5f13f9f27361703030f7c764f161", + "name" : "0x72dff9ed873b5f13f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21302734687 +}, +{ + "ETH_account" : "0xeb28706496f57ee5af7d6f78c24bd2f350ade045", + "name" : "0xeb28706496f57ee5af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1189660000 +}, +{ + "ETH_account" : "0x86c2f089605bf49cfd2f5d1e68a30bcf6d47e4e1", + "name" : "0x86c2f089605bf49cfd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 218852582 +}, +{ + "ETH_account" : "0x614087c679d328d6e12aa82e07529856847d8b96", + "name" : "cryptoadkt", + "publicKey" : "SPH7FPhpmWWXwswZeLAXsVJyZiyeMLsTxgtFPZ2UUCkJ4sVR3cX27", + "balance" : 1159684231 +}, +{ + "ETH_account" : "0xf4e232e973f994bbb11a5fbf2f6ec754e24071a6", + "name" : "0xf4e232e973f994bbb1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xb0e4a6315fc4f1d00ef6ddf90d8c104e15e00814", + "name" : "0xb0e4a6315fc4f1d00e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3909462660 +}, +{ + "ETH_account" : "0xf71ffc433df3a137c9c0a5cf08fcc3e4316e4e8e", + "name" : "0xf71ffc433df3a137c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10549999999 +}, +{ + "ETH_account" : "0x2fd37a0ab03340a4d9da222d4acaa8e2c7fe8c72", + "name" : "wspeelman", + "publicKey" : "SPH7wgP8tcFNTTr1fW8EEF52n47nBGW4u6ppJnNSoP2SAFkYCy9G9", + "balance" : 311723521 +}, +{ + "ETH_account" : "0x6dbf3b3730235108fbc8032fb296e38ff19e64e0", + "name" : "0x6dbf3b3730235108fb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5100000000 +}, +{ + "ETH_account" : "0x7fd31ada6705a96e1ba1a1dad7b2bd5f6aea6261", + "name" : "ezequiel", + "publicKey" : "SPH5zEwQomgpqYgB9fqwYPaaM6xbYYQJXz1kuTBjLuXRRju3Rxj4X ", + "balance" : 373999983 +}, +{ + "ETH_account" : "0x6fe8393cde2468ae41280539b42a8d0cc5ecfb10", + "name" : "0x6fe8393cde2468ae41", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6000 +}, +{ + "ETH_account" : "0xaa2e55822fd616f94b6c2402b322060debd28e53", + "name" : "0xaa2e55822fd616f94b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 192664627 +}, +{ + "ETH_account" : "0x62d684879238db8e6145c8e4e9d7e14ca09ee0e6", + "name" : "0x62d684879238db8e61", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x86edb03f2b077ade1d05ba26bdd85cb0228cc368", + "name" : "0x86edb03f2b077ade1d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 103844747 +}, +{ + "ETH_account" : "0x42e324f877db2f3a8e908d126ebda1f74fcfbec2", + "name" : "0x42e324f877db2f3a8e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18612513 +}, +{ + "ETH_account" : "0x2a64ace34ed10c420259fd6b6f1d363a37778da1", + "name" : "0x2a64ace34ed10c4202", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 321778000 +}, +{ + "ETH_account" : "0x61220557c6af9fc88cd16bab42f4eb84b69483cd", + "name" : "0x61220557c6af9fc88c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150000000 +}, +{ + "ETH_account" : "0x34d602d8a5de5f59eb3aa5d065a17cc648b770bd", + "name" : "0x34d602d8a5de5f59eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 104993668 +}, +{ + "ETH_account" : "0x92db7e8d9b281c9470749a83eeb51de21ff6dde6", + "name" : "0x92db7e8d9b281c9470", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xe45b81ea4d4aa9e7205b11f6ec9708032569580b", + "name" : "0xe45b81ea4d4aa9e720", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1219824695 +}, +{ + "ETH_account" : "0xb80bfd2126d9da9b1d038eb6419a5c10fc79e98e", + "name" : "0xb80bfd2126d9da9b1d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 807278000 +}, +{ + "ETH_account" : "0x1682497844c11246b7316d426c14dd1c26b08b0d", + "name" : "french", + "publicKey" : "SPH8ARDz3gtoxgHw6yL9jKHgMT4UzdKyYxzDFzX4WAQBaVFTjVRTg", + "balance" : 34000000 +}, +{ + "ETH_account" : "0xa7eb03c9a68ae872e818f7e98157221b9b6306e7", + "name" : "botrem", + "publicKey" : "SPH69AtCkvsVMb8xtxKutTEYHZ2bmhVurHZ4Jo9557hmbyeYCYMgv", + "balance" : 8111154860 +}, +{ + "ETH_account" : "0x42c8793c3d9d36e2051b493a04fcb5e7be631a30", + "name" : "0x42c8793c3d9d36e205", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3518551989 +}, +{ + "ETH_account" : "0xf6045ac67991ce68d68e34a14ab3ebb0ec2119e2", + "name" : "0xf6045ac67991ce68d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000000 +}, +{ + "ETH_account" : "0x2d3e8835d8b4ded1ec7cc168615b416a1c4af42e", + "name" : "0x2d3e8835d8b4ded1ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 394551889 +}, +{ + "ETH_account" : "0x1bf90b9428d15cd807c117bb2facb6fc63418ea9", + "name" : "0x1bf90b9428d15cd807", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3584385600 +}, +{ + "ETH_account" : "0x6ff072522fe6cc81acbaf666817d0081df625d81", + "name" : "0x6ff072522fe6cc81ac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3723012900 +}, +{ + "ETH_account" : "0xa3f781f117b1300dd7e6da10e8b458b84f0b55d5", + "name" : "0xa3f781f117b1300dd7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 316880000 +}, +{ + "ETH_account" : "0xd035ddee41cebd8e74b5d46da538c5532c3e0d5b", + "name" : "0xd035ddee41cebd8e74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 572710000 +}, +{ + "ETH_account" : "0x1851aa2ec2d0d752e9437dddc809918b2155ed50", + "name" : "0x1851aa2ec2d0d752e9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 498110217100 +}, +{ + "ETH_account" : "0xfcd5ee5185f33f3aa5ba336e050977bbbbd3100d", + "name" : "0xfcd5ee5185f33f3aa5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 921000000 +}, +{ + "ETH_account" : "0xfba65c729f879f319ee4ec6fa172aa728042cb35", + "name" : "0xfba65c729f879f319e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1109671000 +}, +{ + "ETH_account" : "0xc983baa671cb7caf31eaf495c807e3caa9967bca", + "name" : "0xc983baa671cb7caf31", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1123212200 +}, +{ + "ETH_account" : "0xc5326696e20a040a71e4c939bb76c84759107b9c", + "name" : "0xc5326696e20a040a71", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1351469765 +}, +{ + "ETH_account" : "0x052c4565304ee70185282349e3a1b7c34b96ffed", + "name" : "0x052c4565304ee70185", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21000000 +}, +{ + "ETH_account" : "0xbfccb71cc49210ab8d959795a176bd46e0566d32", + "name" : "0xbfccb71cc49210ab8d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 191000000 +}, +{ + "ETH_account" : "0x7cac3416543675cff57abd80c44434f972ad2b6a", + "name" : "0x7cac3416543675cff5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2112000000 +}, +{ + "ETH_account" : "0xce2dce9c8ad4d77bb72b192cd9bb4640380fef2a", + "name" : "0xce2dce9c8ad4d77bb7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 114883581 +}, +{ + "ETH_account" : "0xa55ec96b20847adba81ac6034218fc1a27eb659d", + "name" : "0xa55ec96b20847adba8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250068000 +}, +{ + "ETH_account" : "0xfd4837949ca97c83dcce937b709cabce35086914", + "name" : "0xfd4837949ca97c83dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 720000000000 +}, +{ + "ETH_account" : "0x7f3fe379a2bcd4be9e9fb63825c6867ae56a01e4", + "name" : "0x7f3fe379a2bcd4be9e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19000000000 +}, +{ + "ETH_account" : "0x809b356b4e40da7f3483d822595e83363921b3d5", + "name" : "macandes", + "publicKey" : "SPH4uQB5AmNMnDnKtUoXZ1VmUU85REbeWh8FFq2Gzhj9BtDvLpBes", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x9a8145cc7c79d166da4a64a8393b5c6db1bad41d", + "name" : "rxsphtx", + "publicKey" : "SPH6urstLyWCJgS2rUXs7frTmy27QqCEuKF7FxKHv9pqUkFKMQVQ8", + "balance" : 59000000 +}, +{ + "ETH_account" : "0x01f9fcb8bbc7bbf65910256ed01b4bc71edd4d12", + "name" : "pwtrsop", + "publicKey" : "SPH7J63AL7ZzUUqkAzqFvamBKKTxSDnruu24Jgbo1RSjEbwJ9SzAL", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x40be2bc927892aed865544abbed8081fa13f472a", + "name" : "anucik", + "publicKey" : "SPH7QUMqc2YVJ1KNxZJYuSP5cBpTUqD1cdt74nap34icCVJG3gDdt", + "balance" : 70484548816 +}, +{ + "ETH_account" : "0x54dcf1f348d1d0591787d126300c934fb1ffc60e", + "name" : "0x54dcf1f348d1d05917", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53660000 +}, +{ + "ETH_account" : "0xf05458bcffd0bc3e578ab5064701b328c8a0d16f", + "name" : "0xf05458bcffd0bc3e57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 151593500 +}, +{ + "ETH_account" : "0x5c267061c22f19b0e218eeaa5ec69a281a0b0c40", + "name" : "0x5c267061c22f19b0e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4678341000 +}, +{ + "ETH_account" : "0xd0d5a00d0b1ca2c75878982ad5c924289e6fa242", + "name" : "0xd0d5a00d0b1ca2c758", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 149 +}, +{ + "ETH_account" : "0xb28ad3381dd218593588716e6ee2685320acef2e", + "name" : "0xb28ad3381dd2185935", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 490000 +}, +{ + "ETH_account" : "0xc6deb8507a04a6eb2a6a0820632780a42cae56a7", + "name" : "0xc6deb8507a04a6eb2a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 125000000 +}, +{ + "ETH_account" : "0xbe4e321fa5a8f2948bd609293911faa9beda4e91", + "name" : "0xbe4e321fa5a8f2948b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x99613c49b924f4dfa57c43b0b7b24e7c1fbc0fa5", + "name" : "0x99613c49b924f4dfa5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0x59145d6414ce521baac284655521fbf78ab073fe", + "name" : "nemo", + "publicKey" : "SPH6LMwCHKM5eiuBzbaX3TeXDptbFoqfh2ufu7SBKQMz9cddhRfat", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x3981a8f811fcb03734f67c4e682fe4327e575f2f", + "name" : "0x3981a8f811fcb03734", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x30d34fb3541c159891a595bc76249a24c1ec4396", + "name" : "0x30d34fb3541c159891", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 58334721 +}, +{ + "ETH_account" : "0x6d5e82563334ebdb6f6ad52b52059833bde9e831", + "name" : "0x6d5e82563334ebdb6f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 705000000 +}, +{ + "ETH_account" : "0x84b0a83cfd73cb8fc6fd2da728b1080e680bca4e", + "name" : "0x84b0a83cfd73cb8fc6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 493000000 +}, +{ + "ETH_account" : "0x9cd4a35689f9d851e8dbcad3ca6399c279ee995e", + "name" : "mardifr", + "publicKey" : "SPH6J1HbhF3fbUht3Jnav2DH8QkxDaLupz1n4ruodi7j1kZG685GX", + "balance" : 550000000 +}, +{ + "ETH_account" : "0xa843d16378c17c2089e6c955f2967e5c173582c9", + "name" : "0xa843d16378c17c2089", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 812550000 +}, +{ + "ETH_account" : "0x34ada2979cc5ef451add5c45384add6899ad3990", + "name" : "0x34ada2979cc5ef451a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10259190000 +}, +{ + "ETH_account" : "0x9e7a45b1163df6fe22f07413967ac7427444e2fa", + "name" : "sophiatxlalafra", + "publicKey" : "SPH5gTwy6mvvGYerGX2EKQHqJ7dyhfSXLGjgumy1bViYgWwMvD1xQ", + "balance" : 723077554 +}, +{ + "ETH_account" : "0x6c8a42a3545c5fd0b2f2491363ae9922924a4933", + "name" : "0x6c8a42a3545c5fd0b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1792078879 +}, +{ + "ETH_account" : "0xc0e3424fdc37f351818c05061e506b00798850a3", + "name" : "0xc0e3424fdc37f35181", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 901042936 +}, +{ + "ETH_account" : "0xa654aa4b25603dceb68c946d92f56f70ef14d46f", + "name" : "0xa654aa4b25603dceb6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 474905814 +}, +{ + "ETH_account" : "0x38bad34646dca957de2f66d55d3d8b89765e90f4", + "name" : "0x38bad34646dca957de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 318060000 +}, +{ + "ETH_account" : "0x3bcc763c2e292c4883e9729623b428e98527181c", + "name" : "0x3bcc763c2e292c4883", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 207000000 +}, +{ + "ETH_account" : "0x00ee929dfd55c9b2eea224b647f06b7200b6be85", + "name" : "0x00ee929dfd55c9b2ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x8994e40fcd3055715a3168b8f259f8e290864869", + "name" : "0x8994e40fcd3055715a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1068550000 +}, +{ + "ETH_account" : "0xcf8a8eacf93603e9807f9a4652598106f2e93049", + "name" : "0xcf8a8eacf93603e980", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0xe36f763c53c83c4bda991e4159a52830d69f0894", + "name" : "0xe36f763c53c83c4bda", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 910000000 +}, +{ + "ETH_account" : "0xb1ce025ff8da213cd3642193135ab55b64e92074", + "name" : "0xb1ce025ff8da213cd3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 663150000 +}, +{ + "ETH_account" : "0x2070397297d98a5585341663d0f912dab8de3177", + "name" : "0x2070397297d98a5585", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 47000000 +}, +{ + "ETH_account" : "0xd11ac5d5b4ab6b726bd8bbd7cc504d435379a679", + "name" : "0xd11ac5d5b4ab6b726b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1755226700 +}, +{ + "ETH_account" : "0xf38f9c963f6336e2c69044a575f1e6189b4b49f6", + "name" : "0xf38f9c963f6336e2c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11073235000 +}, +{ + "ETH_account" : "0xd097979c37d34107da095101dac8c7b7fde4d0f7", + "name" : "0xd097979c37d34107da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 760000000 +}, +{ + "ETH_account" : "0x6791d5551a9e1ebb25a187e2174019db62ac8877", + "name" : "0x6791d5551a9e1ebb25", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1945634994 +}, +{ + "ETH_account" : "0xeb0bb9396f8c4434e5cb0dd004eee24c01730d46", + "name" : "0xeb0bb9396f8c4434e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000 +}, +{ + "ETH_account" : "0xb31b3d72ef73d5e833379bc8cb368bb0ecadbb4f", + "name" : "0xb31b3d72ef73d5e833", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2242000000 +}, +{ + "ETH_account" : "0x1742d4e28ca6f838a9a699450df86fcef852e138", + "name" : "0x1742d4e28ca6f838a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000 +}, +{ + "ETH_account" : "0x05d8f3cebd4ab23a61fa082ba340b5a2bed97a41", + "name" : "0x05d8f3cebd4ab23a61", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0x0f4b938bc12752c754031ecd6dacf93da304aeab", + "name" : "0x0f4b938bc12752c754", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000 +}, +{ + "ETH_account" : "0xe96a6910b77d27432a8eb8f5d28bb8eba31e675c", + "name" : "0xe96a6910b77d27432a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 635000000 +}, +{ + "ETH_account" : "0xf54eaa616a41445194e3bf3766be2a13468a07f2", + "name" : "0xf54eaa616a41445194", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10702483000 +}, +{ + "ETH_account" : "0x5b7f30e93349687024cf1e5b19f22510f8747ff3", + "name" : "0x5b7f30e93349687024", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 135175437 +}, +{ + "ETH_account" : "0x2b7ce005ae8ce68eb52159668a9225d89e7f5cea", + "name" : "0x2b7ce005ae8ce68eb5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 940922755 +}, +{ + "ETH_account" : "0x7519937e4ec1fcf2b359b0b59e86f43eb1ca1088", + "name" : "0x7519937e4ec1fcf2b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 765612568 +}, +{ + "ETH_account" : "0x5e5e6364f00f0806d820b14330c8145e0b7674ea", + "name" : "sophiatxjt", + "publicKey" : "SPH8mQ5ZTwtxNBpdNRbsGXP7RLzGrGqShUiWgCnhBpdpw4Z6cW7Lw", + "balance" : 897211023 +}, +{ + "ETH_account" : "0x02ffb9b4bbc29f9a59b20c541d369c5add62a5a3", + "name" : "moonwallet", + "publicKey" : "SPH5kxS6vHgELPwWa9sht6d1qpS2FGUF2ixX6JyBw5AStrACHpG9k", + "balance" : 523848663 +}, +{ + "ETH_account" : "0x33cb61d415ec4fab89c0ecded01c8f83ff04ca3c", + "name" : "0x33cb61d415ec4fab89", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 91000000 +}, +{ + "ETH_account" : "0xe7b6c9d05c71240091f4408a96f0bfc752ffb2f1", + "name" : "0xe7b6c9d05c71240091", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500 +}, +{ + "ETH_account" : "0xcfc97bc9284c485f9e4431b8cb60ad5683f359a0", + "name" : "0xcfc97bc9284c485f9e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 79400000 +}, +{ + "ETH_account" : "0xe209623fe95f54dbf462d182d8914b318791664a", + "name" : "0xe209623fe95f54dbf4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 34247622315 +}, +{ + "ETH_account" : "0x881db6f2195fc871bdf4565c048bafd4003e5e48", + "name" : "0x881db6f2195fc871bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 89000000 +}, +{ + "ETH_account" : "0x2c8a9472222f02b452ee6c286fba277a0e5023f5", + "name" : "0x2c8a9472222f02b452", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1443624859 +}, +{ + "ETH_account" : "0x04a44e46a8619115f69c6508b4c112c915e55f57", + "name" : "0x04a44e46a8619115f6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1901577683 +}, +{ + "ETH_account" : "0x00fe4f7037a352b61b7f85a961974da7abf720bb", + "name" : "mistermisterme", + "publicKey" : "SPH52fru1cofF1NLJ8TxDYAAYkx6KHWvgSYakBt5tMd2da1N8zHiA", + "balance" : 10106967648 +}, +{ + "ETH_account" : "0xb758ce1a80b18ec112f9eca722936bcf8fea13d9", + "name" : "ployjan", + "publicKey" : "SPH5pDmNuQeUuir9VFjcic6TCrKgDzjxJNbsfLeFnWrcPhNnMRVEz", + "balance" : 700582989 +}, +{ + "ETH_account" : "0xed884d59a19512223b650fcef35ee39a789d8039", + "name" : "0xed884d59a19512223b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53570000000 +}, +{ + "ETH_account" : "0x9a1fcbb81b9bdac831c5189bfb3df90e6a63f5ab", + "name" : "0x9a1fcbb81b9bdac831", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000 +}, +{ + "ETH_account" : "0xd1903b6eacfb8208989052a9c87801e7cad694e6", + "name" : "0xd1903b6eacfb820898", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1351292534 +}, +{ + "ETH_account" : "0xbe47587a69e99bab26f1fa336a9a8dfbda5522c9", + "name" : "0xbe47587a69e99bab26", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 390000000 +}, +{ + "ETH_account" : "0xe349094fb749e08eb7b3c23f174e0a88075636f2", + "name" : "0xe349094fb749e08eb7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1020000000 +}, +{ + "ETH_account" : "0x03a32876b2380a01e648642c8bdc7cf181fd0bc9", + "name" : "0x03a32876b2380a01e6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4242000000 +}, +{ + "ETH_account" : "0xc76cb9be7e07c4d4ab2c14536e4674d75d11c8b3", + "name" : "0xc76cb9be7e07c4d4ab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 876497000 +}, +{ + "ETH_account" : "0x56d4e49acaa50d83f3d4a02d90408285b5e03fd4", + "name" : "0x56d4e49acaa50d83f3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4680834800 +}, +{ + "ETH_account" : "0x7f03a041bb1dd569f592e1afadaad25f95892ea9", + "name" : "dsub", + "publicKey" : "SPH5EDkmzqhj9FSDThZzuXv1DWoKgi7TFB5ZDZLuzpkwY6vMeGjTD", + "balance" : 1341910000 +}, +{ + "ETH_account" : "0x2e9128446c4ba222a13a05b859cccd2489ed5fe0", + "name" : "0x2e9128446c4ba222a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 280000000 +}, +{ + "ETH_account" : "0x1c6597ab52eb9941253ecc92446d95a5ea223e83", + "name" : "0x1c6597ab52eb994125", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1331535200 +}, +{ + "ETH_account" : "0x326ff1d6b7b142564bc9385fa4f5ebfc946abcb4", + "name" : "0x326ff1d6b7b142564b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 499000000 +}, +{ + "ETH_account" : "0x7dd1621ad2b63f9f60c831f09b81cc185ae65380", + "name" : "0x7dd1621ad2b63f9f60", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4343989000 +}, +{ + "ETH_account" : "0x02e5e79ab7f51aefb349ce9e6bbfa33bda8f567f", + "name" : "0x02e5e79ab7f51aefb3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 807000000 +}, +{ + "ETH_account" : "0xf2306bb207119c09317b301b2076c21d3c4803a4", + "name" : "grazerak", + "publicKey" : "SPH7X9kyxX1QF4WrqBRvMqVvAVsaoFyGqWj6JN6fgVZqmqz52NA9i", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x0925c9bd08ba9aa56acd1b56ea59d06821321b74", + "name" : "0x0925c9bd08ba9aa56a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 469830000 +}, +{ + "ETH_account" : "0x357c8d2599bbaeba31cfb1a09a6e09ac5ea8f91b", + "name" : "0x357c8d2599bbaeba31", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50010000 +}, +{ + "ETH_account" : "0xde2ff267e7922ceca31e5a9f7b04aa88a36a57c4", + "name" : "0xde2ff267e7922ceca3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1001478300 +}, +{ + "ETH_account" : "0x8d5956119984cf32be3962ef81e2c80355fcba8d", + "name" : "0x8d5956119984cf32be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 813619630 +}, +{ + "ETH_account" : "0xd57c6929ec4bf6401097ec5f161ac4bd07622ad2", + "name" : "0xd57c6929ec4bf64010", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 597380000 +}, +{ + "ETH_account" : "0x09609ea6141a607b099ffe067be8f35be30e4e54", + "name" : "0x09609ea6141a607b09", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 102000000 +}, +{ + "ETH_account" : "0xe6aba68523c55e1ae9ced87b8823ecc82cd7ef87", + "name" : "hugsy69", + "publicKey" : "SPH6mv4oZD9StUYesUEBmfsYbbUwE8fGbwqR5REdiEKVXBsXg9whM", + "balance" : 245020400 +}, +{ + "ETH_account" : "0x22aecf4c347770ad0a2122d7509b762b028c6cb0", + "name" : "0x22aecf4c347770ad0a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 483001728 +}, +{ + "ETH_account" : "0x7bfaccb928c10c3657c6bf5b56909094d1bd5843", + "name" : "0x7bfaccb928c10c3657", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5859527600 +}, +{ + "ETH_account" : "0xead5e63d770e90b38d0556df930d25fa87afe3e8", + "name" : "0xead5e63d770e90b38d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xf381aba2b82ba4f27fb7e56b042673e4b964814c", + "name" : "0xf381aba2b82ba4f27f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 52394000000 +}, +{ + "ETH_account" : "0x49a0c12bce800dc969d9c88f10d75975606d495b", + "name" : "0x49a0c12bce800dc969", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 518000000 +}, +{ + "ETH_account" : "0x907ebd4e8d7bd4ed3c54202c02f636a73cf6361a", + "name" : "0x907ebd4e8d7bd4ed3c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x8e9843f6cedd456e98da07fda8c41b0d04a75f69", + "name" : "0x8e9843f6cedd456e98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 257569 +}, +{ + "ETH_account" : "0x89494a18d113a8688b6c201f46d9f3b3096a0cb7", + "name" : "0x89494a18d113a8688b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 158000000 +}, +{ + "ETH_account" : "0xb10e159d3fd60d83371397457b348b11b8d28fdd", + "name" : "0xb10e159d3fd60d8337", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2300000000 +}, +{ + "ETH_account" : "0x8e83750571e521c9e659ea77fda93a4d0528a627", + "name" : "0x8e83750571e521c9e6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1080000000 +}, +{ + "ETH_account" : "0x6b94c4e83ec63c6408106c03244e63423b5eb380", + "name" : "0x6b94c4e83ec63c6408", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 655400000 +}, +{ + "ETH_account" : "0xae73555eae42bc4f13166ec5c1e108e603921963", + "name" : "0xae73555eae42bc4f13", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12584380382 +}, +{ + "ETH_account" : "0xdbfe5e94a0208c5324c7e4396dcebd312af01b33", + "name" : "0xdbfe5e94a0208c5324", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 47179688 +}, +{ + "ETH_account" : "0xfdfd01d97f922dcc94db2d236e4e8571a008c536", + "name" : "0xfdfd01d97f922dcc94", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12220000000 +}, +{ + "ETH_account" : "0xa56bae53e4f3d974209b88cdea37419ad3398c6d", + "name" : "0xa56bae53e4f3d97420", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0x2a608d7137ffa92dceeb29e3808a767315540c3d", + "name" : "0x2a608d7137ffa92dce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 538000000 +}, +{ + "ETH_account" : "0xe4f8b955c120d7f24767f9f5b97dc9d63d034a14", + "name" : "0xe4f8b955c120d7f247", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53710000000 +}, +{ + "ETH_account" : "0xe3b9be36ba159f2790b5b442e88944380a487059", + "name" : "0xe3b9be36ba159f2790", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x1d129c8094896556bd9a1feefe6f87b8a95316e3", + "name" : "0x1d129c8094896556bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 555000000 +}, +{ + "ETH_account" : "0x125007b54b3036d94cebe61f837c724efe7db25b", + "name" : "sophiapatrick", + "publicKey" : "SPH8BV7Jzo5n5oQxEjX8Uj3MQf5n6gmhVCK2CjVsPq1FUTqQ5koKq", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x6fe9e349a620b741eba76ddc057fdb03ed1d5989", + "name" : "0x6fe9e349a620b741eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 276204000 +}, +{ + "ETH_account" : "0xc8ffcfdfb6489d003ec322c39951a551b6c0ab3c", + "name" : "gabrielbishop", + "publicKey" : "SPH7vREnjAxirMg7ojH69SnmzjLpzLG8Lr9Sv1euatE8bpBwfeME7", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x5eb9495e77516ba1639ed8c9c6874269fc6d07bd", + "name" : "0x5eb9495e77516ba163", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 72288289600 +}, +{ + "ETH_account" : "0xf8939825176c739f70a4a3b9d1475565cb0bd582", + "name" : "0xf8939825176c739f70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1997366500 +}, +{ + "ETH_account" : "0x2a2913e822d0d4fea25f5f149a5e8fb6b49740c0", + "name" : "0x2a2913e822d0d4fea2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 69 +}, +{ + "ETH_account" : "0x6a0605d3d52657ee4416e591098114a899909507", + "name" : "0x6a0605d3d52657ee44", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21981574155 +}, +{ + "ETH_account" : "0xf2349760f62b82951546c3ece19ba61c09021307", + "name" : "0xf2349760f62b829515", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0xf08d4c2bb4fc1a43014cb7a141c62f22b4ef826f", + "name" : "0xf08d4c2bb4fc1a4301", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20102019000 +}, +{ + "ETH_account" : "0x73e6a3a270cf7c8f57457ec387b61f4091b52e1d", + "name" : "cryptonl", + "publicKey" : "SPH5mUmbsK1QynCcH9Fk2Kb81ZjwW1Nc6guURMM98GnD4hDLPUume", + "balance" : 8500000000 +}, +{ + "ETH_account" : "0x55ccfa815c96939bc114239a1024774af68d295f", + "name" : "0x55ccfa815c96939bc1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 459352000 +}, +{ + "ETH_account" : "0xcf3c397d3464ad3b35241b0ee08c45d55b8079e2", + "name" : "0xcf3c397d3464ad3b35", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1072766765 +}, +{ + "ETH_account" : "0x354288c55a59d6b4c1e793a4a60a60a75f274865", + "name" : "0x354288c55a59d6b4c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1400000 +}, +{ + "ETH_account" : "0x0e42374a1135437e5aa90892f13d123861fc9da8", + "name" : "0x0e42374a1135437e5a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 36650674360 +}, +{ + "ETH_account" : "0x04e7c628ba76013aeb7bc53beb201ebe7802d2be", + "name" : "0x04e7c628ba76013aeb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16314990000 +}, +{ + "ETH_account" : "0xf22b0ff6bc49f9e2c103146cbcaa7d96b7198407", + "name" : "0xf22b0ff6bc49f9e2c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7260000000 +}, +{ + "ETH_account" : "0x64848202edeab4fcccd84f64416e1a0cb1422725", + "name" : "0x64848202edeab4fccc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 93400000 +}, +{ + "ETH_account" : "0xb9490817d7dd078f784607018772ddc42a1d7e6b", + "name" : "0xb9490817d7dd078f78", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 83000000 +}, +{ + "ETH_account" : "0x8cf481d23e82cf4e12934bf256654022b168f7c6", + "name" : "0x8cf481d23e82cf4e12", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16099610000 +}, +{ + "ETH_account" : "0xf485d1f1d8819e805cfe29a97d7e06778d5daada", + "name" : "jochem", + "publicKey" : "SPH6WaSF9TSGXncTTVx73fL7bh9KEa2R2XGbK1yvPQMfash14ZtEF", + "balance" : 846000000 +}, +{ + "ETH_account" : "0x2ebfdad6f86b43112d183d30fcc92ed7d4918515", + "name" : "0x2ebfdad6f86b43112d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39000685059 +}, +{ + "ETH_account" : "0x266119fc97a3e416b3367540f042b6df1865ce1d", + "name" : "0x266119fc97a3e416b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x99230b63c94bd72269139dea7c223499d0c9bed9", + "name" : "0x99230b63c94bd72269", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0xc83d652c6c0b25bf94c26ddc5e0b8d5163e1f014", + "name" : "0xc83d652c6c0b25bf94", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0x7014e97fe1e6d408f44ea1bd1178a6b45e6d8be5", + "name" : "0x7014e97fe1e6d408f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19334384211 +}, +{ + "ETH_account" : "0x4507761887bec9d15d92022d09bcc1949f82d720", + "name" : "0x4507761887bec9d15d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2055000000 +}, +{ + "ETH_account" : "0x03117ac2de1030354fca4fa6b77e5f069029abf1", + "name" : "0x03117ac2de1030354f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 739400000 +}, +{ + "ETH_account" : "0xff4474997e5455cd7f1788cd8fd77a81b1d03462", + "name" : "paisbitcdylatx", + "publicKey" : "SPH4vkgj4xFEYMvA2j86xTtNJvHTicKz8xiDGfnFwDrZxxRnaiTfv", + "balance" : 37304900000 +}, +{ + "ETH_account" : "0x59b8504e825e5ce890aa2a926c317952847ea026", + "name" : "0x59b8504e825e5ce890", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000142400 +}, +{ + "ETH_account" : "0xe2ce25d0931ebd4e8d6c90cc4a7a6c78b5005063", + "name" : "0xe2ce25d0931ebd4e8d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0xd6d187de0957f3fb84d2a1a91721ffd1bc31ef4a", + "name" : "0xd6d187de0957f3fb84", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5898000000 +}, +{ + "ETH_account" : "0xc91826817a4ab12ab9f5a7c9f3224e49ae8e7c9a", + "name" : "0xc91826817a4ab12ab9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19940000000 +}, +{ + "ETH_account" : "0x1e9d14a273afe09afc246e055d445281f27560fc", + "name" : "0x1e9d14a273afe09afc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 780000000 +}, +{ + "ETH_account" : "0x5fd8ffbddec92976d1f9654ef59b170ba57ad592", + "name" : "0x5fd8ffbddec92976d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 170697709 +}, +{ + "ETH_account" : "0x851b9cedc9f321a787b9a08f172adee6ae31fb5b", + "name" : "0x851b9cedc9f321a787", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 699616901 +}, +{ + "ETH_account" : "0x0e32d3c61fc607abaebc18e9f656e43f6377032e", + "name" : "0x0e32d3c61fc607abae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 979000000 +}, +{ + "ETH_account" : "0x4f1d498c49d9dfda55cd6dfd52c1b99f4569ec07", + "name" : "0x4f1d498c49d9dfda55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000 +}, +{ + "ETH_account" : "0x64106f99153ec07b80004fe8243b36d814dd9eb3", + "name" : "0x64106f99153ec07b80", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 43036000 +}, +{ + "ETH_account" : "0x59433fd9eb359b56a8262294c1d31ebfcb1d664a", + "name" : "aleaco", + "publicKey" : "SPH5ajLcswkiL8AyVLLpB3xv3Zj63EQu6GBz3G67hFpbmsggBLiQh", + "balance" : 642315958 +}, +{ + "ETH_account" : "0xcf4b748796d0a178f03d3a337aef218ac69e4b74", + "name" : "0xcf4b748796d0a178f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xe7fc1905d6eb0f6137b1e40c8c372283655388b7", + "name" : "0xe7fc1905d6eb0f6137", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2024867124 +}, +{ + "ETH_account" : "0xbe00fa424243c56c7cf5792afbd6b8dc4d6cbe4e", + "name" : "rumhurius", + "publicKey" : "SPH5ezw4ertnWGbmdzvzTcuSydtF6kTBSLC2KxLatXAGmgAdRdVKd", + "balance" : 18668695907 +}, +{ + "ETH_account" : "0xa8c593c9ad13c6eb868674873a0a5ddd3df14ce0", + "name" : "0xa8c593c9ad13c6eb86", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4623000000 +}, +{ + "ETH_account" : "0xc422b169e30fef2876e0c00eb97f9b60ae0fee51", + "name" : "0xc422b169e30fef2876", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15839188000 +}, +{ + "ETH_account" : "0x1422dc6c7bcc8c4cd521583ab069faffc67e275a", + "name" : "0x1422dc6c7bcc8c4cd5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 560762000 +}, +{ + "ETH_account" : "0x4838d21f096c9e641db1428852232c56a2a325b5", + "name" : "0x4838d21f096c9e641d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30746585853 +}, +{ + "ETH_account" : "0x22cfc05d5b4bc326452b0c73f9b3c829f4d9e2ef", + "name" : "eaglesphtx", + "publicKey" : "SPH78iAwsNiPfVk2mTos6sPvPTLnHrWTxhYDv98UFcQpRQJChpThC", + "balance" : 7059400000 +}, +{ + "ETH_account" : "0xfd2e72c1d71e7e2b3b1a8238e6987b756f5c95c3", + "name" : "0xfd2e72c1d71e7e2b3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5622300000 +}, +{ + "ETH_account" : "0x703710d2ba68f9d04eb058c46994b73b3d4c139e", + "name" : "0x703710d2ba68f9d04e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 208307000 +}, +{ + "ETH_account" : "0xdd5694d8a038f98582a1728a7a35e93728019dea", + "name" : "0xdd5694d8a038f98582", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000 +}, +{ + "ETH_account" : "0x65e3b63287afe922a53df5c04c6de4263511018a", + "name" : "0x65e3b63287afe922a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4763783299 +}, +{ + "ETH_account" : "0xef611de17e99c982afd13284dbd5e3d62efc2644", + "name" : "0xef611de17e99c982af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 606574000 +}, +{ + "ETH_account" : "0x68b9c5e14e52a16d3c55065fbac378e15c07b9ac", + "name" : "0x68b9c5e14e52a16d3c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x7ea9a9f3984a5beae6c9aea8c88d3cca8e1f7a97", + "name" : "0x7ea9a9f3984a5beae6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 446000000 +}, +{ + "ETH_account" : "0x1fc23e4d158d5be80484b4d3417780d2b180cd3f", + "name" : "0x1fc23e4d158d5be804", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 179000000 +}, +{ + "ETH_account" : "0xf55c081ee193cbf2aa93ceb35639198896b261ca", + "name" : "0xf55c081ee193cbf2aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2036560627 +}, +{ + "ETH_account" : "0xceb212a5e51fadff9fa9e676074af5293471fa75", + "name" : "0xceb212a5e51fadff9f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x1654bf19bbe5e42ed7d47fef157030a1d3bb669b", + "name" : "0x1654bf19bbe5e42ed7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 240326845 +}, +{ + "ETH_account" : "0x385c7606db175b92788c68e8580d6b6a9f3ad3ac", + "name" : "0x385c7606db175b9278", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80000000 +}, +{ + "ETH_account" : "0x860351251ef2622cc78ccabeeff7b7afc462f8b3", + "name" : "0x860351251ef2622cc7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 922917000 +}, +{ + "ETH_account" : "0xd3649f2725517c878e091fb6242e58ac2e82367a", + "name" : "0xd3649f2725517c878e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3276000000 +}, +{ + "ETH_account" : "0x636782e3db8c43ef80281d164aa583215112a076", + "name" : "0x636782e3db8c43ef80", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 59629000 +}, +{ + "ETH_account" : "0x03d8edf7dd3062bb964867af47ce9e902b78d1df", + "name" : "0x03d8edf7dd3062bb96", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 483364781 +}, +{ + "ETH_account" : "0x59a392948f30d91fb6161dc28a361b2eab04ee4c", + "name" : "0x59a392948f30d91fb6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 756601000 +}, +{ + "ETH_account" : "0x5d997614a5fccfd53684cb14ca55f1aeba86abff", + "name" : "0x5d997614a5fccfd536", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1044837100 +}, +{ + "ETH_account" : "0x00cf7b730dfbf836308b4abfbf997f3070372e2f", + "name" : "0x00cf7b730dfbf83630", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10875377 +}, +{ + "ETH_account" : "0x1019d10368171459f21a22e0f9467dad62ede33a", + "name" : "0x1019d10368171459f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 56488646080 +}, +{ + "ETH_account" : "0x6a038b56d0f0c649ca114e785987c1fcc7d46967", + "name" : "0x6a038b56d0f0c649ca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 36449475598 +}, +{ + "ETH_account" : "0x3e1b1fe45cb2040b97cdb3191d4933ad1ff0928d", + "name" : "tchernosophiatx", + "publicKey" : "SPH6HkC6sPToemXzJHQEE6wdmYWjpKyH3MwVi7o4Q1jDqzHcM6Z8i", + "balance" : 385000000 +}, +{ + "ETH_account" : "0x49569a28e8025f35f81c28e8b1f61e634a0b22a9", + "name" : "gillsophiatx", + "publicKey" : "SPH85CBk4sVGvA4XZaqvFqn33TqAJHV74qeiuwnUQi9GFND7Xiut4", + "balance" : 1130000000 +}, +{ + "ETH_account" : "0x6e1a1a3070e55ca3fd8f527897ec2f6b7ebc41fb", + "name" : "michaelw", + "publicKey" : "SPH7PaqAk78HZWjDVZraH3zPmfsm4KqcaUx3xY48dVZ4xLaS3wDXj", + "balance" : 129000000 +}, +{ + "ETH_account" : "0x751ac57bb147b3e751b7c965a29dffe5da2dad58", + "name" : "0x751ac57bb147b3e751", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 966603 +}, +{ + "ETH_account" : "0xc7f531240b86bd1c2886fcecf2193e0c411f8e83", + "name" : "0xc7f531240b86bd1c28", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 979629920 +}, +{ + "ETH_account" : "0xe2d2e8981b43d9c9042197aa2383b163419f7ea8", + "name" : "0xe2d2e8981b43d9c904", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 610000000 +}, +{ + "ETH_account" : "0xcfb4c4128b8d926f991cf8ef43ba02149d2f7a08", + "name" : "0xcfb4c4128b8d926f99", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 77663447211 +}, +{ + "ETH_account" : "0x32ccba05827f7aed2de8ecda53583a6202f1f910", + "name" : "0x32ccba05827f7aed2d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 173569000 +}, +{ + "ETH_account" : "0x2a8ade06db626e914fdd3082d8a9dfa76da23b18", + "name" : "0x2a8ade06db626e914f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1785000000 +}, +{ + "ETH_account" : "0x14dce980b06cedb660ca692a640c1544f714a9b1", + "name" : "0x14dce980b06cedb660", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3219920 +}, +{ + "ETH_account" : "0xdcd1ae45e1fe8957897f3ab6a0d117cc2245097d", + "name" : "0xdcd1ae45e1fe895789", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6600000000 +}, +{ + "ETH_account" : "0x1e40a5183ad133f4229136a670c2d3ebf90affd7", + "name" : "0x1e40a5183ad133f422", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 970000000 +}, +{ + "ETH_account" : "0x8b077b1458b938dac24fcb96d87a2fcfbf8fc5b6", + "name" : "0x8b077b1458b938dac2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 63314000000 +}, +{ + "ETH_account" : "0xb75f852fa1f304281acad8de3f73400c6f99b275", + "name" : "0xb75f852fa1f304281a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x4ea530514b0795f66637f39ab60cf36e22f5ea1e", + "name" : "derrick", + "publicKey" : "SPH6JAB2QBghXK9h45vBv68AMHdbfq2t4xHn3vvq9U49owhJQ6A5D", + "balance" : 12284465568 +}, +{ + "ETH_account" : "0xceedad8f122191483612c0fe06b9a76c554569dc", + "name" : "0xceedad8f1221914836", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0xc599e8c16f9cb1a8dcfda3f78f25fe0d6d0826d6", + "name" : "0xc599e8c16f9cb1a8dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 861000000 +}, +{ + "ETH_account" : "0xeece750d58407425b72e7bcfdeaeb03b98cec0b6", + "name" : "0xeece750d58407425b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0xfa9365534bd635bad9b30ee9cb336da4a8412c6a", + "name" : "0xfa9365534bd635bad9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150000000 +}, +{ + "ETH_account" : "0x2005df30965f47638b41a2e9eff24ef443bd824f", + "name" : "0x2005df30965f47638b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 280259538 +}, +{ + "ETH_account" : "0xd5ea1ad85a14d44394eaed8ee1fb2cccf4b29331", + "name" : "0xd5ea1ad85a14d44394", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 618000000 +}, +{ + "ETH_account" : "0xe0ccf8b3a9c3cc2c99328ac881ee1d540e315ea4", + "name" : "0xe0ccf8b3a9c3cc2c99", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x617b50da034c58cb030efed0f43c0dc6a5253407", + "name" : "0x617b50da034c58cb03", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20987198000 +}, +{ + "ETH_account" : "0x39d2ab39dc9cce11ae67690a9a2f7053fb999e74", + "name" : "0x39d2ab39dc9cce11ae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 677978000 +}, +{ + "ETH_account" : "0xf131fb0923bc7532449d9adab845fcec5287b232", + "name" : "0xf131fb0923bc753244", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40000000 +}, +{ + "ETH_account" : "0x846705bfafd2febf0dd179772c0a954ad955686d", + "name" : "0x846705bfafd2febf0d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20086780 +}, +{ + "ETH_account" : "0xe66f2c4f180e2e9b25ddbae5c29d814a0e106205", + "name" : "0xe66f2c4f180e2e9b25", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3865000000 +}, +{ + "ETH_account" : "0x53ea1fb6c673f4945e1796fdb442181c245ffb25", + "name" : "0x53ea1fb6c673f4945e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 606000000 +}, +{ + "ETH_account" : "0xd4bbebe1fa66697b858116d480c8a905878b3f76", + "name" : "0xd4bbebe1fa66697b85", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 27999431055 +}, +{ + "ETH_account" : "0xf0e4d5e4e1fb0c48614b748e1b12952c746f720b", + "name" : "0xf0e4d5e4e1fb0c4861", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 212000000 +}, +{ + "ETH_account" : "0x8afce0b7ca212fcd4fd9ea54749c6c48e715c60f", + "name" : "0x8afce0b7ca212fcd4f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1695000000 +}, +{ + "ETH_account" : "0xef9c6983a6b5d2fdaf1ec2dfb75c23b2f4740dac", + "name" : "0xef9c6983a6b5d2fdaf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 198947996 +}, +{ + "ETH_account" : "0x6ae88b2a966b388976ce271bcf32fb5c8691cd0b", + "name" : "0x6ae88b2a966b388976", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1594308017 +}, +{ + "ETH_account" : "0xab1e6e4ed60d1475bbe7f324c8673d6d44347353", + "name" : "0xab1e6e4ed60d1475bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000000 +}, +{ + "ETH_account" : "0xecbe7d92d8df52bb00e2a5218bab8e08e438d966", + "name" : "0xecbe7d92d8df52bb00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 136604818 +}, +{ + "ETH_account" : "0xb21a9b2e0a6ee570500d4f81ec814ff4e2369edd", + "name" : "0xb21a9b2e0a6ee57050", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9700000000 +}, +{ + "ETH_account" : "0x15ee4e05e49ad3b2bdde10470707738b2f7ab9ed", + "name" : "0x15ee4e05e49ad3b2bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 382358817 +}, +{ + "ETH_account" : "0x20897c9242a8eb67d6364bc9caf0cef589042919", + "name" : "0x20897c9242a8eb67d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0xf15be6f3c566836497bcead8603e35be60837c65", + "name" : "0xf15be6f3c566836497", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0x1a04fa5c8d4acbafcbcbb0654772bc0b22a6663e", + "name" : "0x1a04fa5c8d4acbafcb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 243000000 +}, +{ + "ETH_account" : "0x77a9f9843d4b51235f75224b4f7797c7a0c52fd5", + "name" : "0x77a9f9843d4b51235f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21290000000 +}, +{ + "ETH_account" : "0x619f873880358cb2b283429dff198a1d3e104273", + "name" : "0x619f873880358cb2b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 297000000 +}, +{ + "ETH_account" : "0xee15fc77a7f292f5ad85a6bb8895b477be88432d", + "name" : "0xee15fc77a7f292f5ad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 95470000 +}, +{ + "ETH_account" : "0x6ae61b30bd6b8cf9bee775d2a82fe30cf33894b4", + "name" : "0x6ae61b30bd6b8cf9be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3089491535 +}, +{ + "ETH_account" : "0x135f53d6198d1162d1a18284dd3312269e896c01", + "name" : "0x135f53d6198d1162d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 892000000 +}, +{ + "ETH_account" : "0xa30428c5dbe204564eeb76f743082557b42f0966", + "name" : "0xa30428c5dbe204564e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2695722594 +}, +{ + "ETH_account" : "0x7311a2f850d0ad47df716dc010bab790652cb269", + "name" : "0x7311a2f850d0ad47df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6700 +}, +{ + "ETH_account" : "0x74f91850d8fb0a505235d8a870204f4f05910954", + "name" : "0x74f91850d8fb0a5052", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 350000000 +}, +{ + "ETH_account" : "0x833bb075638e43f693613eb3802b7ef7a27edbf7", + "name" : "0x833bb075638e43f693", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13000000000 +}, +{ + "ETH_account" : "0x10d0a2417e0bc314af624b6f3f4e0f1cefa37efd", + "name" : "0x10d0a2417e0bc314af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2566103985 +}, +{ + "ETH_account" : "0xd93f51ddecdf7765709289c4a20c72ba97a36eaf", + "name" : "0xd93f51ddecdf776570", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 575000000 +}, +{ + "ETH_account" : "0x528fcf9f5989d565ebda00ed11ab0d1e763d134b", + "name" : "0x528fcf9f5989d565eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x159d6cb8cd42df8ca995040eff7def9c702d02fd", + "name" : "0x159d6cb8cd42df8ca9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1300000000 +}, +{ + "ETH_account" : "0x871ee728d4d4e0464b6d05f8070c070fb93a2232", + "name" : "0x871ee728d4d4e0464b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9645911 +}, +{ + "ETH_account" : "0x645b5de8477c339c07e317648ffae8e7983c1a92", + "name" : "0x645b5de8477c339c07", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 26925929 +}, +{ + "ETH_account" : "0xf156f89f360f1068f518f45f2299683c8f70f25a", + "name" : "0xf156f89f360f1068f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3568000000 +}, +{ + "ETH_account" : "0x5c6ffdedce6d88c03d709149ae3baab9fe17c7f5", + "name" : "0x5c6ffdedce6d88c03d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 92 +}, +{ + "ETH_account" : "0x20b9d8d3fadd8139eae42e34c861c8eb9177805e", + "name" : "0x20b9d8d3fadd8139ea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0x620537cec1e18174a6b4d025b62107e6f3f84b8c", + "name" : "0x620537cec1e18174a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 139000000 +}, +{ + "ETH_account" : "0x82e07f4589127bb0dd9a056762da000fe2a697da", + "name" : "0x82e07f4589127bb0dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 420000000 +}, +{ + "ETH_account" : "0x64d086bdbf8e19da80c9af971971cf4618e364cc", + "name" : "0x64d086bdbf8e19da80", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x20d9146f4476d4740715126da794f915308b1945", + "name" : "0x20d9146f4476d47407", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50990000000 +}, +{ + "ETH_account" : "0xef66e25f22be568692b712aa17eafd121697814a", + "name" : "0xef66e25f22be568692", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 952000000 +}, +{ + "ETH_account" : "0x7fb9ef34877be6218ff9e1e8d674171467fa3708", + "name" : "0x7fb9ef34877be6218f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 166151596 +}, +{ + "ETH_account" : "0xf30bf01f3c893af8472a4aa58319f98ef2f89580", + "name" : "0xf30bf01f3c893af847", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 297000000 +}, +{ + "ETH_account" : "0x87b9f07fe9e660403864f6b14ffed6a94599634e", + "name" : "0x87b9f07fe9e6604038", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1140000000 +}, +{ + "ETH_account" : "0xda2a26efaf78256144831f309eae6f566726f463", + "name" : "0xda2a26efaf78256144", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xc1444f9f4a2917f0a5fd3e37906a58cf317efffe", + "name" : "0xc1444f9f4a2917f0a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 42724696 +}, +{ + "ETH_account" : "0x4c3467db5082717070b6a2ad23cdfb58ae9241c9", + "name" : "0x4c3467db5082717070", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1251217711 +}, +{ + "ETH_account" : "0x341944e7737cf06628589fdf11f7826d39357b54", + "name" : "0x341944e7737cf06628", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xc32ab8dce5f3c395dfaa1636d0215753c5010fa1", + "name" : "0xc32ab8dce5f3c395df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 346964791 +}, +{ + "ETH_account" : "0x009145c49f16279934faf4e68e6f99925529d22a", + "name" : "0x009145c49f16279934", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 188354984 +}, +{ + "ETH_account" : "0x26c6667226aff11fb30f026b67650e8c8642491f", + "name" : "0x26c6667226aff11fb3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8250000000 +}, +{ + "ETH_account" : "0x942e94b42d7816146b7415fe922c6112a5d01bfa", + "name" : "0x942e94b42d7816146b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 598800875 +}, +{ + "ETH_account" : "0x3fe87751fea23dc53d4e390b90ae6457dc9e11b0", + "name" : "0x3fe87751fea23dc53d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 350000000 +}, +{ + "ETH_account" : "0xb150b269b2ee0312dc18cf96d8a24315e8ef04a2", + "name" : "0xb150b269b2ee0312dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3760000000 +}, +{ + "ETH_account" : "0x1dfded87efa42cd97000401991b49e743867dfd7", + "name" : "0x1dfded87efa42cd970", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1575000000 +}, +{ + "ETH_account" : "0x5ef60d2155319cde142298c43975fb5e48bde535", + "name" : "0x5ef60d2155319cde14", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 534000000 +}, +{ + "ETH_account" : "0xff6b1eea5a81eb800bf358f83bbf863831476109", + "name" : "0xff6b1eea5a81eb800b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10029000000 +}, +{ + "ETH_account" : "0x8f8a36b539e5cbadbdc24e1de3955e47af66a092", + "name" : "delfseaflshay", + "publicKey" : "SPH69hA9x9c7BTQoC7N1sSpufBnDhDD84ssuTtFf155eTuhPiek72", + "balance" : 4632193600 +}, +{ + "ETH_account" : "0xabe537358b2cdcfb1cbb96b714528fa204bcf4df", + "name" : "0xabe537358b2cdcfb1c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 788536822 +}, +{ + "ETH_account" : "0xec9e5ab0bae3589e5212860404e9c573e4fe3cd6", + "name" : "0xec9e5ab0bae3589e52", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5008000000 +}, +{ + "ETH_account" : "0xed6865b3a541853071253551769e7575828beb40", + "name" : "0xed6865b3a541853071", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 330545866 +}, +{ + "ETH_account" : "0x52bd7293d5888e2d9a8eabd2f5a219757a9c1d36", + "name" : "0x52bd7293d5888e2d9a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 512423599 +}, +{ + "ETH_account" : "0x205d2280feb195fde8f41d44ff07acba36b0d72e", + "name" : "0x205d2280feb195fde8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 425000000 +}, +{ + "ETH_account" : "0x41d38ae21018be010c98122e6207dc3a14b43bf0", + "name" : "0x41d38ae21018be010c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 958591 +}, +{ + "ETH_account" : "0xb6cd7cf66b6e8a3ab14b2d65658604d0e3318901", + "name" : "0xb6cd7cf66b6e8a3ab1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1960396784 +}, +{ + "ETH_account" : "0x714285a4473ea8b611378fc5a8c7ecb909237d39", + "name" : "0x714285a4473ea8b611", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1027214559 +}, +{ + "ETH_account" : "0x42d831150be32974d4496660aa2226f32e886a49", + "name" : "0x42d831150be32974d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4273702782 +}, +{ + "ETH_account" : "0x5893dca4bac941ca906d657755d695c3181fd97f", + "name" : "0x5893dca4bac941ca90", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 49339886023 +}, +{ + "ETH_account" : "0x462c45286c5586eb92589c8360c7360b7207caad", + "name" : "0x462c45286c5586eb92", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1222742664 +}, +{ + "ETH_account" : "0x59a310ccabfc16334aa57f9ad42e90380f8a47ab", + "name" : "odhnguvge", + "publicKey" : "SPH57uNCoyuvqXgv424oUK3RRdf5GxwD6r6yEXhaxZSh3E1kiMz44", + "balance" : 1086000000 +}, +{ + "ETH_account" : "0xf8c3156fc85977486f08e7fd8a5d52d2030a1b39", + "name" : "0xf8c3156fc85977486f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1800000000 +}, +{ + "ETH_account" : "0x049e88a9dbadec4ec973c23967fdbb4149bd3530", + "name" : "0x049e88a9dbadec4ec9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4861003366 +}, +{ + "ETH_account" : "0xf171983f08400baba2eee9bf05779835456474d8", + "name" : "0xf171983f08400baba2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 198000000 +}, +{ + "ETH_account" : "0x713c817b41b149e02f1988f8e9fdc8f585e901ef", + "name" : "0x713c817b41b149e02f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 333000000 +}, +{ + "ETH_account" : "0x0b40829214537d72006c6944593eb1d58ec3f55a", + "name" : "0x0b40829214537d7200", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 379000000 +}, +{ + "ETH_account" : "0x92e3b7360c727d179e8c0c7438422a6dc454cb77", + "name" : "0x92e3b7360c727d179e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000 +}, +{ + "ETH_account" : "0x02002f99b427da49b451098bc93615fab97fbd93", + "name" : "0x02002f99b427da49b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4094635000 +}, +{ + "ETH_account" : "0xd36cbc5c5654541a5e6fca3b218da0925dcfdb3a", + "name" : "0xd36cbc5c5654541a5e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0xe154550ed778076ca244907b0f88450b7e022ee0", + "name" : "0xe154550ed778076ca2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 515000000 +}, +{ + "ETH_account" : "0xe94c5654a363875a6c1c79aaeddfbf5d5f00ea2b", + "name" : "0xe94c5654a363875a6c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x77eadd5710c9e287cc9fedfc7f3d13916c53bd50", + "name" : "0x77eadd5710c9e287cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21667000 +}, +{ + "ETH_account" : "0xc4a8dad4a0d0b54c25e1446bc4907c320803a101", + "name" : "0xc4a8dad4a0d0b54c25", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3193253000 +}, +{ + "ETH_account" : "0x025c7dbc5c1c8d446215ac8f27bbacb668518ad9", + "name" : "0x025c7dbc5c1c8d4462", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2242108592 +}, +{ + "ETH_account" : "0x61ebb7327e6354c158431bc1df21a6532b55825f", + "name" : "0x61ebb7327e6354c158", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 233183731 +}, +{ + "ETH_account" : "0x1ec753205c216b2a6e3bdfcd95a28cd186a32ab0", + "name" : "0x1ec753205c216b2a6e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xb7833b5edecf8c217353a3c281a2138f3f574198", + "name" : "0xb7833b5edecf8c2173", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0x0ea1bf5ce01701b33e2f314e55e5b18148e82787", + "name" : "0x0ea1bf5ce01701b33e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10028775620 +}, +{ + "ETH_account" : "0x29311ebd08a700c2689a2f18357647f6e33d2a99", + "name" : "0x29311ebd08a700c268", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 475000000 +}, +{ + "ETH_account" : "0xeeed0e62bd30cd237cfe7a701fe55a5113e84597", + "name" : "0xeeed0e62bd30cd237c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1150000000 +}, +{ + "ETH_account" : "0x89c130a041fb9e13755b10b00e3e50d0bfd98c97", + "name" : "0x89c130a041fb9e1375", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xb4d4c59bdef0f7a2c42aea393fc78a1f52750ff7", + "name" : "0xb4d4c59bdef0f7a2c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1363919649 +}, +{ + "ETH_account" : "0x8a9c3f046b7afbafa3df1e044e27d3a7ee4f4d8b", + "name" : "dejoere", + "publicKey" : "SPH6o4ktQCPQXTonymVcai3UM8VDfB684DeYVFq81JefXmxZP7Grh", + "balance" : 169240000 +}, +{ + "ETH_account" : "0x186c4be4d3236f950bb854f86e523ed1cda70c6e", + "name" : "0x186c4be4d3236f950b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000 +}, +{ + "ETH_account" : "0xab7fc00eac12af15f9a084ba5185920c4078846a", + "name" : "0xab7fc00eac12af15f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 84999999 +}, +{ + "ETH_account" : "0xeee2264847191886e54e7c68b5ea65d6751db48a", + "name" : "0xeee2264847191886e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0x5630307ab78203482be07365f6000aa96cd4c16e", + "name" : "0x5630307ab78203482b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 72510646 +}, +{ + "ETH_account" : "0xb48eda725102f5e26cc02ec56f2e6264276f44fa", + "name" : "0xb48eda725102f5e26c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 349999999 +}, +{ + "ETH_account" : "0xa044dd278bac854b5dfd78fe532dc5711b2bb8a3", + "name" : "0xa044dd278bac854b5d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 59899713985 +}, +{ + "ETH_account" : "0x7fce1f550ebcbcea45d94a9dedf87d93ce0ae80e", + "name" : "0x7fce1f550ebcbcea45", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100 +}, +{ + "ETH_account" : "0x4c57d06cdc06416c6e081053eac492bdfd5ff5a1", + "name" : "0x4c57d06cdc06416c6e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1024446914 +}, +{ + "ETH_account" : "0xfa39eb4836de19e0b25fd3426cc2e53c89c92b86", + "name" : "0xfa39eb4836de19e0b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0xd60fbaa44fe782bbb0120b3f539458cf3ea04087", + "name" : "0xd60fbaa44fe782bbb0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000 +}, +{ + "ETH_account" : "0x41172c06f7df941204da2e264d43bb71c102687e", + "name" : "0x41172c06f7df941204", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 85000000 +}, +{ + "ETH_account" : "0x7484b5fb5850167643d18eb282e4c67c49973b6f", + "name" : "0x7484b5fb5850167643", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 181663000 +}, +{ + "ETH_account" : "0xc7c12e35f6f10863d51e541dd143a9f6a6c8cbc8", + "name" : "0xc7c12e35f6f10863d5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 103000000 +}, +{ + "ETH_account" : "0x4e936a0b69d9bed79dddd7e68e3f497cdd384659", + "name" : "pawelbielecki", + "publicKey" : "SPH68F2QWC4gGRbKgHKNecZRLyXyHnbG6KahTqvxJ6WjkQgRM63dd", + "balance" : 542871553 +}, +{ + "ETH_account" : "0x31dcb3e1e8d5f732d3626933dde8b8e739bc8166", + "name" : "0x31dcb3e1e8d5f732d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19999999534 +}, +{ + "ETH_account" : "0xfaae8fa8bbca49029de92ca4217aa5d1a84c436d", + "name" : "0xfaae8fa8bbca49029d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 648472971 +}, +{ + "ETH_account" : "0xb2334139a4800c2d0a84f70ab8cd80d4e0dcd8b0", + "name" : "slavkolaziale", + "publicKey" : "SPH6bi9b21mMi4NC49xzxWiXvsVezK7ggPt4uvRGVw3BH5LSy3rfG", + "balance" : 1328051919 +}, +{ + "ETH_account" : "0x502f17fe0ca89c5b51f6c1123b6701ba41943601", + "name" : "0x502f17fe0ca89c5b51", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xaf5c66376eaf0893f45acd801ed2785c244f27e1", + "name" : "0xaf5c66376eaf0893f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2562989986 +}, +{ + "ETH_account" : "0x8bfc85d04a2baf827f3fa10191c2b2c1e980c676", + "name" : "0x8bfc85d04a2baf827f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xd196d6a48363953008b72e94cd3b8825e71c0fce", + "name" : "0xd196d6a48363953008", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 155725579 +}, +{ + "ETH_account" : "0x1b1f86a6f6a91d5fe46fa3810c01dc50131f0f89", + "name" : "0x1b1f86a6f6a91d5fe4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3999999654 +}, +{ + "ETH_account" : "0x8693ea0df476b1defca25252a45cd86b50d12c7c", + "name" : "0x8693ea0df476b1defc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1802518000 +}, +{ + "ETH_account" : "0xbef1e33c3d740672a08cd4db011640a2e4aae35d", + "name" : "0xbef1e33c3d740672a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000 +}, +{ + "ETH_account" : "0x8fd9eb824193849fa61d80f0bd1a346713d1de82", + "name" : "0x8fd9eb824193849fa6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1100 +}, +{ + "ETH_account" : "0xe77c4f91a4a86cf331af1a27a0a75bf1e7c255e6", + "name" : "0xe77c4f91a4a86cf331", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 657183793 +}, +{ + "ETH_account" : "0xc6875f82094b9609ac8cf73b561f0b9238d4efe5", + "name" : "0xc6875f82094b9609ac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150000000 +}, +{ + "ETH_account" : "0x34760cbb924635bacc73e3d67d663ea5d399a459", + "name" : "0x34760cbb924635bacc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1800000000 +}, +{ + "ETH_account" : "0x8997935097e8d6779dc51e6cc75272866c1b6fd9", + "name" : "0x8997935097e8d6779d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 455000000 +}, +{ + "ETH_account" : "0xc80c6f2330a81e251f98f6f1e0c36da102736d42", + "name" : "0xc80c6f2330a81e251f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5054720000 +}, +{ + "ETH_account" : "0xdb998e738e3cf5fa6ff0c84b2864afd82c57edc7", + "name" : "0xdb998e738e3cf5fa6f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39422242 +}, +{ + "ETH_account" : "0x6e543bce1590b04aebc11d0cb81c3378e63065b4", + "name" : "0x6e543bce1590b04aeb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 175000000 +}, +{ + "ETH_account" : "0x1fef15f744ff962ad056ba586a2fea39fc525110", + "name" : "0x1fef15f744ff962ad0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1359999722 +}, +{ + "ETH_account" : "0x7640732596bbb19296c6dd0c10d307ed6b2ac7d9", + "name" : "0x7640732596bbb19296", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 243516694 +}, +{ + "ETH_account" : "0x5c54884c0aaf603b9dd5716182f13cb25002b2a4", + "name" : "0x5c54884c0aaf603b9d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2059161700 +}, +{ + "ETH_account" : "0xba3dbbba51d447cbd3a5643dada375069f16614a", + "name" : "mrcashback", + "publicKey" : "SPH8d6zbzrmykpBMq13CyyvMDHoMTZVCN3JtM2uz95XH8GNhBcFSs", + "balance" : 761072776 +}, +{ + "ETH_account" : "0x2fd569c6402d97cb8c6357f5f6cb88fc16835fe8", + "name" : "0x2fd569c6402d97cb8c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 362578000 +}, +{ + "ETH_account" : "0xe874666e950a0cdd90ca7c52390591742db67a90", + "name" : "0xe874666e950a0cdd90", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2090000000 +}, +{ + "ETH_account" : "0x3ca027517959ca040f55b4aa3a159244ea59deec", + "name" : "0x3ca027517959ca040f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2764993000 +}, +{ + "ETH_account" : "0x136dd3062bcdf1bffb906bc79d0ec37cc327c7d6", + "name" : "0x136dd3062bcdf1bffb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24954057631 +}, +{ + "ETH_account" : "0xcd57da85d1ac37dd5d308d0d5381efdec1d7096d", + "name" : "0xcd57da85d1ac37dd5d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 47003987 +}, +{ + "ETH_account" : "0x63354f15f3f71ece48b0466ca21dacfec8513ab4", + "name" : "0x63354f15f3f71ece48", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2500000000 +}, +{ + "ETH_account" : "0x50dc2b3529387a89ae4e2b843bd419ef94e5486c", + "name" : "0x50dc2b3529387a89ae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1249000000 +}, +{ + "ETH_account" : "0x47538f2608bcea367477b781382a65f7969584ac", + "name" : "0x47538f2608bcea3674", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 824950000 +}, +{ + "ETH_account" : "0xc05f3447de9052517bcdde875ebc652ea7f7673f", + "name" : "0xc05f3447de9052517b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 109998800 +}, +{ + "ETH_account" : "0x289eeb89743c07a7af87b6325e9fe99ded220109", + "name" : "0x289eeb89743c07a7af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 419000000 +}, +{ + "ETH_account" : "0x58a0bfe03e17774c7822931c18f11de5f3c8a8fe", + "name" : "0x58a0bfe03e17774c78", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 460000000 +}, +{ + "ETH_account" : "0x3e0e33ff5dcb0c6fc2233f30c63df018f4c58d51", + "name" : "0x3e0e33ff5dcb0c6fc2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 379350000 +}, +{ + "ETH_account" : "0x2f8b899d1541f55ff6bc69102647ac001431c1f3", + "name" : "0x2f8b899d1541f55ff6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1923000000 +}, +{ + "ETH_account" : "0x4de2df735d52dffa3489702d83e01ad23cb00112", + "name" : "0x4de2df735d52dffa34", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 316000000 +}, +{ + "ETH_account" : "0x51e8a7610655723ff4b4313a56cc56954cb9e141", + "name" : "0x51e8a7610655723ff4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4849000000 +}, +{ + "ETH_account" : "0x1e60c5bc77eeb2d2de6cd4b40f537debdbc4e31e", + "name" : "0x1e60c5bc77eeb2d2de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2250000000 +}, +{ + "ETH_account" : "0xdf8dca276fd611455067679b3f62d70a6fb5f224", + "name" : "0xdf8dca276fd6114550", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 617240000 +}, +{ + "ETH_account" : "0xb8e9011039f9f69c3ce84b91fdea25d7740152ed", + "name" : "0xb8e9011039f9f69c3c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xa2e888a972615fa225cf0fd95eea1417178de658", + "name" : "0xa2e888a972615fa225", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 112535695 +}, +{ + "ETH_account" : "0xf6936de7b90dbd8f4545b6ccca5e1a3d9e3a117a", + "name" : "0xf6936de7b90dbd8f45", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xefdb813ba8b0a0d52f84a49e45d111eb93226326", + "name" : "0xefdb813ba8b0a0d52f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 106979963 +}, +{ + "ETH_account" : "0xbdb7e31264324e4ab66c5be1091eee619f81df9c", + "name" : "0xbdb7e31264324e4ab6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 700000000 +}, +{ + "ETH_account" : "0xe7cd95d29d87deaa9055c12f103a3c72b32fab6c", + "name" : "0xe7cd95d29d87deaa90", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x2db4e430a0f4e0c54d73ae0aa4e0940b6d24f0b1", + "name" : "0x2db4e430a0f4e0c54d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 607000000 +}, +{ + "ETH_account" : "0x9bb658ce317bde9c1c7b7bfaeffcd07ada17981c", + "name" : "0x9bb658ce317bde9c1c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x1eb60e174c8fbc7574645b864342591ac4c38466", + "name" : "0x1eb60e174c8fbc7574", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 140843131 +}, +{ + "ETH_account" : "0x82026d2727e8ade05a4a37ef9fdaf0d881a7611f", + "name" : "0x82026d2727e8ade05a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xd2b4da6c1ae4309d79976eaf734a2a329b96e799", + "name" : "0xd2b4da6c1ae4309d79", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0x90d77e43af287cab44be7cb0d3b9f1277712cb2e", + "name" : "0x90d77e43af287cab44", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13521185572 +}, +{ + "ETH_account" : "0xe870a1bc614be6a8ca1ac262b59d7883064eec03", + "name" : "0xe870a1bc614be6a8ca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 369 +}, +{ + "ETH_account" : "0x6ab3feba20164368504e0d992b36fe0e10f8c002", + "name" : "0x6ab3feba2016436850", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 113000000 +}, +{ + "ETH_account" : "0xffdaf873106a4083abb460149cdc713b90fd86ae", + "name" : "0xffdaf873106a4083ab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 449058000 +}, +{ + "ETH_account" : "0x46a93c64dfe2862151936c1e9fe9641a468bd6b9", + "name" : "0x46a93c64dfe2862151", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 145002629 +}, +{ + "ETH_account" : "0x084f9c7e74943ab432c014dc0ab0518672872084", + "name" : "0x084f9c7e74943ab432", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3331000000 +}, +{ + "ETH_account" : "0x31704fea10482cb393dc0099ceeda9ed2d00d029", + "name" : "0x31704fea10482cb393", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 538240000 +}, +{ + "ETH_account" : "0xc997ead3bdfba73da1f730af751b4514d3303041", + "name" : "alexandra", + "publicKey" : "SPH54jEJB9zJDAssmN7gwJSvQkFaN9stkbJxfcNUiZcmJcaDG4pfZ", + "balance" : 20000000000 +}, +{ + "ETH_account" : "0x56fc3b9d81305534515c9b8224d2358fbae61493", + "name" : "deniska", + "publicKey" : "SPH8Bi1mgBjNXVw92gtZkqC1PEaiA93a1ucZW2LSQqRow6weQ5oVq", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x25d5862283ecd79e9a9561ea122132b8ee00033c", + "name" : "0x25d5862283ecd79e9a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1904000000 +}, +{ + "ETH_account" : "0x1c8930ef36d24a38169f34eabd9be5d3750d1cc1", + "name" : "0x1c8930ef36d24a3816", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x5d9bb7fd7eee732f52478372de678ac10ae9a1b3", + "name" : "0x5d9bb7fd7eee732f52", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 959584000 +}, +{ + "ETH_account" : "0x0dc7666922190337205aa386428ec8b197f1edf7", + "name" : "0x0dc766692219033720", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 453547758 +}, +{ + "ETH_account" : "0x093bd149fb4cd40300a1927ac32a4dfecd8da043", + "name" : "0x093bd149fb4cd40300", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 806278000 +}, +{ + "ETH_account" : "0x658b7fd2e0e714f8e3106c774520b98a07544ac6", + "name" : "0x658b7fd2e0e714f8e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100605535 +}, +{ + "ETH_account" : "0x64a1d61a403d1e51aeabb1e4bfa0d1147c1b5edd", + "name" : "0x64a1d61a403d1e51ae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5259188566 +}, +{ + "ETH_account" : "0x0d7514cade4c577a0a7653a54f62542ba6b00b6c", + "name" : "0x0d7514cade4c577a0a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1208169620 +}, +{ + "ETH_account" : "0x57abf7716913c1da54aa63d55a5c3b6673f39d57", + "name" : "0x57abf7716913c1da54", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 98999958 +}, +{ + "ETH_account" : "0x543808f8847b594a46725790024b100e8c6e0ed6", + "name" : "0x543808f8847b594a46", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 97995269 +}, +{ + "ETH_account" : "0x808af905cd5936ffe678a89a0fc1b949d552189f", + "name" : "0x808af905cd5936ffe6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 544000 +}, +{ + "ETH_account" : "0x3fef465bf11df9c37e86561ac5e115145e65bbe3", + "name" : "0x3fef465bf11df9c37e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1945000000 +}, +{ + "ETH_account" : "0xe61400d4d117e394c537c56ccce74f24fbace12b", + "name" : "0xe61400d4d117e394c5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x9e048358af48cd985b58144f24f8e32b04614be5", + "name" : "0x9e048358af48cd985b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 960189550 +}, +{ + "ETH_account" : "0x068902abcd0cd9a3b9360dbe5b2cec15bb2b4c18", + "name" : "0x068902abcd0cd9a3b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 191710721 +}, +{ + "ETH_account" : "0xa9348c30e4a574d4df00136ebfcb92575cb50d2b", + "name" : "0xa9348c30e4a574d4df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 303000000 +}, +{ + "ETH_account" : "0x87f8362b85a234ccc46b1254c0c1993f4f89395a", + "name" : "0x87f8362b85a234ccc4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3949000000 +}, +{ + "ETH_account" : "0x29f4e547496f03d541eccc000561caf88565337b", + "name" : "0x29f4e547496f03d541", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2336000000 +}, +{ + "ETH_account" : "0xf2558def995a3e037d466faf7302f7e9a2d205f9", + "name" : "0xf2558def995a3e037d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 630644000 +}, +{ + "ETH_account" : "0x7088f566117baa5f2142ec394fc1d0ce00176fe7", + "name" : "0x7088f566117baa5f21", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3795377741 +}, +{ + "ETH_account" : "0xd3e8eee6781273668cfb4a1983f2a4ecd1045a27", + "name" : "0xd3e8eee6781273668c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 111650000 +}, +{ + "ETH_account" : "0x6390fd54c60417839bd24aec4f369f8fabb051b4", + "name" : "0x6390fd54c60417839b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 805317739 +}, +{ + "ETH_account" : "0x58b9a17bfe92944cb60f23a3e8516e93f35dbcc5", + "name" : "0x58b9a17bfe92944cb6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 280000000000 +}, +{ + "ETH_account" : "0x2a869609573b3740be93b0cd43b13e3a227ba840", + "name" : "ellismarkman", + "publicKey" : "SPH5GbCsPRAapZsHR3TPoFmNk91GwwKxzydr82CFhepwNRUwwctA4", + "balance" : 750000000 +}, +{ + "ETH_account" : "0xe834fd3e514b8aec9dc002d9dd3f137ee8508770", + "name" : "0xe834fd3e514b8aec9d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1310000000 +}, +{ + "ETH_account" : "0x4938fc6a8f0f450e1cbf4829d4cb1fbe6fccd039", + "name" : "0x4938fc6a8f0f450e1c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 299102000 +}, +{ + "ETH_account" : "0xbf8505625233d3307aadf4f4be493f8e5dde3944", + "name" : "0xbf8505625233d3307a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 173000000 +}, +{ + "ETH_account" : "0x6e1647a9b0a3ec90cc5a0cb026ddbe818f2ae115", + "name" : "0x6e1647a9b0a3ec90cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x92c837330ee6833fd4c8a734c43af6938f15dc89", + "name" : "0x92c837330ee6833fd4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 34427858519 +}, +{ + "ETH_account" : "0x358f8c59181fdc509ce0e2b57f52f990ad57f599", + "name" : "0x358f8c59181fdc509c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 75726785 +}, +{ + "ETH_account" : "0xb7b450b7fa2c1031e1c4307e9ee3105fcc8849d7", + "name" : "0xb7b450b7fa2c1031e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1251168995 +}, +{ + "ETH_account" : "0xc707092bd2b059f9afb06b28396b547a0996589e", + "name" : "0xc707092bd2b059f9af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2105296278 +}, +{ + "ETH_account" : "0x99865c50c2031e4160e7c351763966ae4cd958a5", + "name" : "0x99865c50c2031e4160", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 151141000 +}, +{ + "ETH_account" : "0xe3f93ac6a6fcf839f0bc4b886b33f66098d9a5f4", + "name" : "0xe3f93ac6a6fcf839f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2873995400 +}, +{ + "ETH_account" : "0x6b948fde930f8d1c864e8820038c88ca7c745e00", + "name" : "0x6b948fde930f8d1c86", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 935000000 +}, +{ + "ETH_account" : "0xd2f744b96f7ea8825ac2f6a4ba4c0ff549e2459c", + "name" : "0xd2f744b96f7ea8825a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8457578928 +}, +{ + "ETH_account" : "0x404c263659d3f00c02f40ad114b1d7934c5ccefb", + "name" : "0x404c263659d3f00c02", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9000 +}, +{ + "ETH_account" : "0xf3c48dab20a7cd42c36c9eea3bc0f8d0184bfa20", + "name" : "0xf3c48dab20a7cd42c3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13595000 +}, +{ + "ETH_account" : "0xbd82af91a0b2cb02b70b671a7112d354d48f946f", + "name" : "0xbd82af91a0b2cb02b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 190000000 +}, +{ + "ETH_account" : "0xa54f6bb4ef101d6a743c2e591d36b22bcc38fcd5", + "name" : "0xa54f6bb4ef101d6a74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 41000 +}, +{ + "ETH_account" : "0xf710dbc6756ede8bc7157f18dc6bf5046f7f993a", + "name" : "0xf710dbc6756ede8bc7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000000 +}, +{ + "ETH_account" : "0xd9b488ddc9afec3c1368e23625890b8b17d09754", + "name" : "0xd9b488ddc9afec3c13", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0xcae13f1a7dd759b45f92cbf3e0a1cae9e87c65cd", + "name" : "lzcsphtx", + "publicKey" : "SPH6nvAXZk59PiAd8dKwVHvihHUNyKgzkArBi6SyYKhng8YrboynW", + "balance" : 566536999 +}, +{ + "ETH_account" : "0xca7e7afabe2287256a1af834bdd88f0128bcb03a", + "name" : "0xca7e7afabe2287256a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1275000000 +}, +{ + "ETH_account" : "0x419ed85098dbdbe76dabe2060add2dbe5c2ec5f6", + "name" : "0x419ed85098dbdbe76d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 96000000 +}, +{ + "ETH_account" : "0x8182c11913114c8bfcc4ccb43cfbb2cb1d592874", + "name" : "0x8182c11913114c8bfc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 232000000 +}, +{ + "ETH_account" : "0xc8d8737fff15b4e95d459375974556297dd069fa", + "name" : "0xc8d8737fff15b4e95d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 493970000 +}, +{ + "ETH_account" : "0x624fd4cec91c4a30c3be2d43c85f012bdf73a990", + "name" : "0x624fd4cec91c4a30c3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 278635581 +}, +{ + "ETH_account" : "0x492ea4b33de4ca9c9055a49a809885350ef0cfa1", + "name" : "0x492ea4b33de4ca9c90", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 222775761 +}, +{ + "ETH_account" : "0xcc62ac9036f6d0f253614d465120316f440a9745", + "name" : "asrogog", + "publicKey" : "SPH5MoaTg7L6hjcWca7LB29rHG8yDxwvzMVoXK5rPNVKg9zzPZzVJ", + "balance" : 115601486827 +}, +{ + "ETH_account" : "0xfc2b54c56721c689ebe221fba9cf3bf38070009e", + "name" : "0xfc2b54c56721c689eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3830000000 +}, +{ + "ETH_account" : "0x9d737ba0125d678910057235a4d81b45396444fe", + "name" : "0x9d737ba0125d678910", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 922794000 +}, +{ + "ETH_account" : "0x12ed40389dc42a563520974514da1c5fd631e88a", + "name" : "0x12ed40389dc42a5635", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15000000 +}, +{ + "ETH_account" : "0x6d6f44b6602b0817250285dc3f4dfe0288fb0193", + "name" : "0x6d6f44b6602b081725", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3750000000 +}, +{ + "ETH_account" : "0x44eb60b0581442f7d37a7a2f33a4dab936686fed", + "name" : "0x44eb60b0581442f7d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10110887000 +}, +{ + "ETH_account" : "0xfc63b0eb572947e7bd710dd3a5731611c5b9d690", + "name" : "0xfc63b0eb572947e7bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x1dee78021658a9163a5ea6376d9a85c647e62121", + "name" : "0x1dee78021658a9163a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 81 +}, +{ + "ETH_account" : "0xccaf8b71f390877a720619ab580118c96de7ebee", + "name" : "0xccaf8b71f390877a72", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x0ba35173f63a5b9828e275902079f4d2e4c600c5", + "name" : "lucvandeven", + "publicKey" : "SPH8ewBmMbWzpFuiEVYQPDvf8GdMhDmsyyrgZtJpBdAtvnpn7mq7T", + "balance" : 18084380872 +}, +{ + "ETH_account" : "0x46508919451c4ade96ad02f7b21397fa63b09328", + "name" : "0x46508919451c4ade96", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 81000000 +}, +{ + "ETH_account" : "0x2b4384d9169860788f2329b4c7e442d6a2ddcd59", + "name" : "0x2b4384d9169860788f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 104795000 +}, +{ + "ETH_account" : "0x952f2c4b1a9c0938b71b9db486211fe90fa89c0d", + "name" : "0x952f2c4b1a9c0938b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3951000000 +}, +{ + "ETH_account" : "0x66241dd01f0dda05e7299ac3b668d890703161c8", + "name" : "0x66241dd01f0dda05e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 481000000 +}, +{ + "ETH_account" : "0xb892a5d1b30cdd61d3c1b8d3af1318dd486e9e7a", + "name" : "0xb892a5d1b30cdd61d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 387564019 +}, +{ + "ETH_account" : "0x6c9a9b5a4fcaa55912605d81c45d9cd25c20b139", + "name" : "0x6c9a9b5a4fcaa55912", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1633941843 +}, +{ + "ETH_account" : "0xea6df7aaec4255f8f2535185405b43cf4df6fbe2", + "name" : "0xea6df7aaec4255f8f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 958678755 +}, +{ + "ETH_account" : "0x856523005bc438e8242a130e55d217db51b04984", + "name" : "0x856523005bc438e824", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 98703918 +}, +{ + "ETH_account" : "0xab6d707219cbb1f52511fc937d311a5f4e3ba5cd", + "name" : "0xab6d707219cbb1f525", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 101000000 +}, +{ + "ETH_account" : "0xf3ee599429541ee8cd571241a586783a6c07c1b6", + "name" : "0xf3ee599429541ee8cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 36000000 +}, +{ + "ETH_account" : "0xbb370213488ce4bf684d2ca3db6e12b5acf6472f", + "name" : "0xbb370213488ce4bf68", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0x77803f3872d839032bded841188097660101fe90", + "name" : "0x77803f3872d839032b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33000000 +}, +{ + "ETH_account" : "0x100c6521b1fed91912da0b3f3e387487b2218a9e", + "name" : "0x100c6521b1fed91912", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0xab87e34051c42ba59f3248d9f60d960c6a31ae2a", + "name" : "0xab87e34051c42ba59f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xf4fdb19ed0c62664d06e6a4ea8ee18f46fd5756c", + "name" : "timonio", + "publicKey" : "SPH8HZi9HtVcXXHYU54yuRyVNzYvKtqG55ayAnS1ccvTkTFsn5AYn", + "balance" : 201099035 +}, +{ + "ETH_account" : "0x30a11bed3d5397450f9acdcc146e06bfcefb0a8f", + "name" : "0x30a11bed3d5397450f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 946240000 +}, +{ + "ETH_account" : "0x519e21a4bf3eb67d811b04b4d8d44deaba5f5e0a", + "name" : "0x519e21a4bf3eb67d81", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2309996920 +}, +{ + "ETH_account" : "0x4eb7f19d6efcace59eaed70220da5002709f9b71", + "name" : "0x4eb7f19d6efcace59e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65000000 +}, +{ + "ETH_account" : "0x27828fee94154227baad31ea519a979b69ace735", + "name" : "koolsphtx", + "publicKey" : "SPH5bWZR4JoC1d9Hbywy3fjx8TEDR57rLxeRSdsUoFcuzAXcSC7zY", + "balance" : 815477677 +}, +{ + "ETH_account" : "0xe81d7ebf9fa37fe06b58b12b13eae23f4c2d150c", + "name" : "0xe81d7ebf9fa37fe06b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2624562692 +}, +{ + "ETH_account" : "0x52689058d82941fdb6cfccb8eb13ceef33846290", + "name" : "0x52689058d82941fdb6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 315269855 +}, +{ + "ETH_account" : "0xef8a8361dcc8ef2bf0a68f63fdf5a82d8d3ca2aa", + "name" : "0xef8a8361dcc8ef2bf0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 42000000 +}, +{ + "ETH_account" : "0xc132959b08b33caa29eb9f6664550133f28fd081", + "name" : "0xc132959b08b33caa29", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 248807000 +}, +{ + "ETH_account" : "0x67420fae03b93b0c2a002e7bbcfc46f84725f394", + "name" : "0x67420fae03b93b0c2a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4380968484 +}, +{ + "ETH_account" : "0x94d28636a154667b5f871035978401f4f37c5964", + "name" : "0x94d28636a154667b5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 661850000 +}, +{ + "ETH_account" : "0xe33f141d96531a24ed66a535de24ebf354e1f9d2", + "name" : "0xe33f141d96531a24ed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x3d43a765cafad4605dce3d64603d6ddbd6445c33", + "name" : "0x3d43a765cafad4605d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3065000000 +}, +{ + "ETH_account" : "0x5f1dbfa6ef0e0d72f154e89bc177333d59d0ff78", + "name" : "0x5f1dbfa6ef0e0d72f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0xc7d7272cfb4ae17b32ff5fa0856b35511a0e912e", + "name" : "0xc7d7272cfb4ae17b32", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 275062675 +}, +{ + "ETH_account" : "0x8f51a2a3138921f0d5d6fa6f5ad86e5880869674", + "name" : "rbn12sphtx", + "publicKey" : "SPH7yNfXD81Wp41ziuYmHN4gtg5HvDZb6QubT7f75Ximdbk1WoLsN", + "balance" : 1734000000 +}, +{ + "ETH_account" : "0xc61f6d9b9ba15dfcd5f0b8dca9d78a5807790669", + "name" : "0xc61f6d9b9ba15dfcd5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39576040 +}, +{ + "ETH_account" : "0x3d3fee649775b651da371545f3c1b31baf784c6d", + "name" : "0x3d3fee649775b651da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 540000000 +}, +{ + "ETH_account" : "0x6fb6c4df41cbae1810ac182d54b0436db347adc2", + "name" : "0x6fb6c4df41cbae1810", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x2f8453c585f00c18c1f5160438fcb9890992de62", + "name" : "0x2f8453c585f00c18c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x3cd6bbd3c8334e220cfd02a82029f543eb54b46e", + "name" : "0x3cd6bbd3c8334e220c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 389198410 +}, +{ + "ETH_account" : "0xa8b1684bef12d1bf25e6c459c0dfa05f9a896dca", + "name" : "0xa8b1684bef12d1bf25", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 915825100 +}, +{ + "ETH_account" : "0xeaeec13a03d36e65e5ebc617d1f6c04d06b288de", + "name" : "0xeaeec13a03d36e65e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 325680000 +}, +{ + "ETH_account" : "0x34b0dba9dd9a2115384e46cd92890a7e8cd4e0fe", + "name" : "0x34b0dba9dd9a211538", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14633680000 +}, +{ + "ETH_account" : "0xec73f44a0263c5e25aa337a41fc964b448d284b9", + "name" : "0xec73f44a0263c5e25a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 170000000 +}, +{ + "ETH_account" : "0x9227f9154d67c6dc3b01474a2e17d3c1262b84f8", + "name" : "giusphtxcoins", + "publicKey" : "SPH74GmK4V7TtdFmXqHG9pTcgGC5AFWL8CYwhX2PmWXKePYVLe5w9", + "balance" : 1162133089 +}, +{ + "ETH_account" : "0x9a45cf18ffc849adabc938bfb3cee1e4d933c54e", + "name" : "0x9a45cf18ffc849adab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0xb090af05ffe6dc26489693c2aee3926d9d849106", + "name" : "0xb090af05ffe6dc2648", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1203944623 +}, +{ + "ETH_account" : "0x77507811f40d3ad12dbba6e692b85763eb5ad5d3", + "name" : "0x77507811f40d3ad12d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xfd5da35d5012bed882b41b23275834c10ed8fafb", + "name" : "0xfd5da35d5012bed882", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 17339274366 +}, +{ + "ETH_account" : "0x820092634f7fabe697af63a1fe45ca330be2089a", + "name" : "0x820092634f7fabe697", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80000000 +}, +{ + "ETH_account" : "0xe40164bfbd43f555b9968ee770af68924548635f", + "name" : "0xe40164bfbd43f555b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1600000000 +}, +{ + "ETH_account" : "0x151f9ddf7b3adcda571d12a8aa77eed575e5fe66", + "name" : "0x151f9ddf7b3adcda57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 57063839442 +}, +{ + "ETH_account" : "0xa983572aa0094ca8b5fd27837f3bb9d248949c88", + "name" : "0xa983572aa0094ca8b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 983393000 +}, +{ + "ETH_account" : "0x76f40a8ed2c6aa31f6c19dc77cdfd51cd8734fc1", + "name" : "0x76f40a8ed2c6aa31f6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1829760 +}, +{ + "ETH_account" : "0xdf1979e330d5aaec02589c43fce179c6aa26fb11", + "name" : "0xdf1979e330d5aaec02", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1645133000 +}, +{ + "ETH_account" : "0x51ab59b6ce05f520de211c9cb9e86d9b36510988", + "name" : "kckc", + "publicKey" : "SPH7dmLrhsyTgBePYRMhMqSRie3vtuTjC1uH55FM8tExb57Z5yf8g", + "balance" : 113976528900 +}, +{ + "ETH_account" : "0x4b7e6ede5324976e0819d7d64fc17f40831bfd7c", + "name" : "aryalpaw", + "publicKey" : "SPH6ArStiaoNu1pQPHn6RPK4gwwTUZFqJC22oJpBcrNUBbVkP9WRk", + "balance" : 5183998768 +}, +{ + "ETH_account" : "0x30146933a3a0babc74ec0b3403bec69281ba5914", + "name" : "0x30146933a3a0babc74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2984804325531 +}, +{ + "ETH_account" : "0x2b551e0a33bfdce1481e6c64a3d6b99b74a538f9", + "name" : "0x2b551e0a33bfdce148", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1900000 +}, +{ + "ETH_account" : "0x7c5a212ad007a758ea0ad6b62913d6f9af9fa745", + "name" : "0x7c5a212ad007a758ea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2093968931 +}, +{ + "ETH_account" : "0x283687d345f7911cee7907f5e2c43c46a7f7a2f5", + "name" : "0x283687d345f7911cee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 91000000 +}, +{ + "ETH_account" : "0xce42efbe5ba300a19e6968bf833f9aa50f9830b1", + "name" : "0xce42efbe5ba300a19e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 465000000 +}, +{ + "ETH_account" : "0xbe89da00236c30c3c0081a152c43120eaba0a10e", + "name" : "zedjsophia", + "publicKey" : "SPH6K1CcYpuRjh9JrmJmeKBsFPuYHn4WPftWDehJasub7EV14LSzt", + "balance" : 4999999948 +}, +{ + "ETH_account" : "0x3bd2e1ee90cb492d204b74e492eb22f318c47362", + "name" : "0x3bd2e1ee90cb492d20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 950000000 +}, +{ + "ETH_account" : "0xa38201fc7836593336f9f30e77f9039915aad5c7", + "name" : "popcaughan", + "publicKey" : "SPH6tWEnFBK8C7M7RHpf5b7xNh5ycoPUYbzAdQ5hme4RLkcM8Na24", + "balance" : 11929435223 +}, +{ + "ETH_account" : "0xf9f24689a9917fd7247fd3744034d106e755a4ee", + "name" : "0xf9f24689a9917fd724", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53957749912 +}, +{ + "ETH_account" : "0xdafecb8ffd1ab699c6017cd87f28b9edfea6a5cd", + "name" : "0xdafecb8ffd1ab699c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 42604000 +}, +{ + "ETH_account" : "0xac1a58aeba1cb56ceaa7c098c9167c7be967814b", + "name" : "0xac1a58aeba1cb56cea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1755000000 +}, +{ + "ETH_account" : "0x989a9969899940f2b42e9201c18ea662b380cd3c", + "name" : "0x989a9969899940f2b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 415694094 +}, +{ + "ETH_account" : "0xf5f29a7578e9b649cd464c00310861c7c802b299", + "name" : "0xf5f29a7578e9b649cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 890000000 +}, +{ + "ETH_account" : "0x041988a409a26c121a3338988b485ad15a3c854e", + "name" : "0x041988a409a26c121a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9101559893 +}, +{ + "ETH_account" : "0x85702851c3cf5d1bd2b1363fdef3d04de3bdbf33", + "name" : "0x85702851c3cf5d1bd2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1379190000 +}, +{ + "ETH_account" : "0x74d9a9ccd55750114ec83cb1ddeb6e48a65b854c", + "name" : "0x74d9a9ccd55750114e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 655961000 +}, +{ + "ETH_account" : "0x30924c23b76f1400711e35eaa07c350d22b809ca", + "name" : "0x30924c23b76f140071", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000000 +}, +{ + "ETH_account" : "0xd8c662c609210421943b55d86b4fea4b7ecbe838", + "name" : "0xd8c662c60921042194", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1600000000 +}, +{ + "ETH_account" : "0x4e892c99377da2137688796e8fdd6da4be22b82d", + "name" : "0x4e892c99377da21376", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2755400000 +}, +{ + "ETH_account" : "0x8fb9afdcc074599d86327b731f47ffa5375823a9", + "name" : "0x8fb9afdcc074599d86", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 134557506 +}, +{ + "ETH_account" : "0xcc51489202d3be034f08abf1c3be6ea3225d4563", + "name" : "0xcc51489202d3be034f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x8151de0dec72c2bef06cf1e8fb63a4f91d3b7257", + "name" : "0x8151de0dec72c2bef0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3800010000 +}, +{ + "ETH_account" : "0xf9b181e8178fc1e69f5582b9e7ad40dd83470a5b", + "name" : "0xf9b181e8178fc1e69f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5720000000 +}, +{ + "ETH_account" : "0x4ad330e8b16bcb8546f99239e1e4d95280c93226", + "name" : "ged", + "publicKey" : "SPH81xXfWwi1JiWLCWyvGuSEbRDp1RuCEVGGq2rxdpDdGEoG5sURG", + "balance" : 2782000000 +}, +{ + "ETH_account" : "0x50a0a0cba830f20d48a5fe460001887d3e1b0ed2", + "name" : "0x50a0a0cba830f20d48", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1040000000 +}, +{ + "ETH_account" : "0xf6fc9a45ec4e0637f97317fd1aa8a2a515a7b68b", + "name" : "0xf6fc9a45ec4e0637f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5602366600 +}, +{ + "ETH_account" : "0x0054901603fc5ea771bbcbd7ed9c3e50ed41f0d2", + "name" : "0x0054901603fc5ea771", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1103000000 +}, +{ + "ETH_account" : "0xdea5b871c0ffcf98cc1c5a15499f4fca6c9cf8b6", + "name" : "0xdea5b871c0ffcf98cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x7ead384943e320fe83cb230a9fe28507e02d8bf0", + "name" : "0x7ead384943e320fe83", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2300656300 +}, +{ + "ETH_account" : "0xd47bb4ca098f091d843101a62cf3412997d3d8ee", + "name" : "0xd47bb4ca098f091d84", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5668774400 +}, +{ + "ETH_account" : "0x3b1167f23b42001e82e59c4cd14a64251c83f222", + "name" : "0x3b1167f23b42001e82", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 136000000 +}, +{ + "ETH_account" : "0xdff376e39ff29b872cd28c87217c1a6c31caae46", + "name" : "inkeye", + "publicKey" : "SPH5daiatbxaJP6AKDCid9BTvxYipHGLg5vKkBLT5ALEsfG831xek", + "balance" : 112000000 +}, +{ + "ETH_account" : "0xa235257616aa70d61d776838f7446be825e0b97e", + "name" : "0xa235257616aa70d61d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2864000000 +}, +{ + "ETH_account" : "0x88a4f8612ad5d48fd6ce7814d31971fc6453ff8b", + "name" : "0x88a4f8612ad5d48fd6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000 +}, +{ + "ETH_account" : "0xfa9b795b678a5463bd3e99323df0385d324f306a", + "name" : "0xfa9b795b678a5463bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000000 +}, +{ + "ETH_account" : "0x5a39ab2c2d3da753ce124bbfd64b2ba0e66d6fe1", + "name" : "0x5a39ab2c2d3da753ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4500000000 +}, +{ + "ETH_account" : "0x49e94df2af0206bc64ef4de76425e282fcbcf88f", + "name" : "0x49e94df2af0206bc64", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2300000000 +}, +{ + "ETH_account" : "0x986c415ad046a5bcdf94709b788c72da2d5ef608", + "name" : "0x986c415ad046a5bcdf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450522900 +}, +{ + "ETH_account" : "0x6f1108e513c52857f8728a8b38dd8265eca74774", + "name" : "0x6f1108e513c52857f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1395000000 +}, +{ + "ETH_account" : "0x0bf44bd474663b14842fffe2ed9202fc0d4e3b4d", + "name" : "0x0bf44bd474663b1484", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 126500000 +}, +{ + "ETH_account" : "0x082163ebddbf26e0a5c74123dadae25fe1b614da", + "name" : "0x082163ebddbf26e0a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 360000000 +}, +{ + "ETH_account" : "0xd63cdb7bb9a18b0ab298fbde1f4355d0f6d159e9", + "name" : "0xd63cdb7bb9a18b0ab2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4018009288 +}, +{ + "ETH_account" : "0x43c8a4824f31839d9f815a7acbb0c5804a22d98f", + "name" : "0x43c8a4824f31839d9f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 956000000 +}, +{ + "ETH_account" : "0xb7e12fb64758fd6240164788518740e5babd071d", + "name" : "0xb7e12fb64758fd6240", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 524500000 +}, +{ + "ETH_account" : "0x620e9948a3d2158376c4824256ed15f4e49b53bb", + "name" : "0x620e9948a3d2158376", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 190000000 +}, +{ + "ETH_account" : "0xcd0f7e618961161952c5414398ab83859ec4d51f", + "name" : "0xcd0f7e618961161952", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1234000000 +}, +{ + "ETH_account" : "0x68257cb26cd98cc7e0d89f7b00986c844958b664", + "name" : "toni", + "publicKey" : "SPH5KfNGvxgRry2e9qzrxCR4P7QMSuThGU6Bd5Hj3vHaULaq4FjF6", + "balance" : 4833000000 +}, +{ + "ETH_account" : "0x0946256235147f0699fa3ade60604ab8163a5a21", + "name" : "0x0946256235147f0699", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 419000000 +}, +{ + "ETH_account" : "0x37c8a95ac5357bfc98115d47b5185ced4f36d20f", + "name" : "0x37c8a95ac5357bfc98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2313000000 +}, +{ + "ETH_account" : "0x1607d663c0cc2c351e0051e33cf528f272453529", + "name" : "0x1607d663c0cc2c351e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x282c1d39fbeafaf78d0fd21b19085a7c55dcd4e8", + "name" : "0x282c1d39fbeafaf78d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 154000000 +}, +{ + "ETH_account" : "0xf5a3ab5ca4772e67dfa6f207a409b72206923026", + "name" : "0xf5a3ab5ca4772e67df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x5d9fc7678b7a312a061f44cfbaa00a775d35fcc6", + "name" : "0x5d9fc7678b7a312a06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9726586062 +}, +{ + "ETH_account" : "0x55aaed3f28e4be9efc5f117d10956673ca89494a", + "name" : "0x55aaed3f28e4be9efc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 329000000 +}, +{ + "ETH_account" : "0x7f3d78391269d49c4b0c09f03641ddc89159b79d", + "name" : "0x7f3d78391269d49c4b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15890828300 +}, +{ + "ETH_account" : "0xbd070551ecc2aecc552fb99e95ae649d1bcbb284", + "name" : "0xbd070551ecc2aecc55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 210547400 +}, +{ + "ETH_account" : "0x3b3ff0bc9ee963b5bae2291a2db5cfdadd68afa9", + "name" : "0x3b3ff0bc9ee963b5ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 201000000 +}, +{ + "ETH_account" : "0x00e5966e89c76851efbee84680935d14f8b7bece", + "name" : "kim", + "publicKey" : "SPH7VYNHWuorsJMEc2AZFkH3RHYuyRs4vhWESVdxwrhizg7ZmKLi3", + "balance" : 200000000000 +}, +{ + "ETH_account" : "0xe6dfc63a5e8c26f7c95372c29cc09e4c37a310ef", + "name" : "0xe6dfc63a5e8c26f7c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12966000000 +}, +{ + "ETH_account" : "0x938c28f83e68ec270caf2b65356579b95e07b138", + "name" : "0x938c28f83e68ec270c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6800000000 +}, +{ + "ETH_account" : "0x29d7ce269b5440ae98b0309a1fd5fdf06968f09e", + "name" : "0x29d7ce269b5440ae98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 903805000 +}, +{ + "ETH_account" : "0x7df514f2b51ac3ae95a7c6445a7b9f749d1a2897", + "name" : "delianisdik", + "publicKey" : "SPH8UErt3Q5CZpXU2FZGwsn887gvRXH5fbxg7ns1gLBdo5qBq9eN1", + "balance" : 13037519000 +}, +{ + "ETH_account" : "0x1a012d720b748f0e776cd53d9d9bd50c52b3d76e", + "name" : "0x1a012d720b748f0e77", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 390000000 +}, +{ + "ETH_account" : "0x6126711ebcbd839b90eaaa4755c34e38825ddb24", + "name" : "alpha", + "publicKey" : "SPH53ELPbZLLmzQCuEJxb91fcnskjFVmPUb8qYNdC8hB5p4pyGHqr", + "balance" : 1621000000 +}, +{ + "ETH_account" : "0x70b35bd5b84ab5051e0cfd9a4098a9ab8b69102b", + "name" : "0x70b35bd5b84ab5051e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3175166200 +}, +{ + "ETH_account" : "0xee76d34d75ee0a72540abca5b26270b975f6adb6", + "name" : "0xee76d34d75ee0a7254", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 350000000 +}, +{ + "ETH_account" : "0x0a01e5498067224c4493ff6a23f13ae1ae74565b", + "name" : "0x0a01e5498067224c44", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80100000 +}, +{ + "ETH_account" : "0x4ed96ccce5157f9280cc07ef044f49e428b9e900", + "name" : "0x4ed96ccce5157f9280", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xab468cc1029661a323ad0addf3a7bef60c6cf95d", + "name" : "0xab468cc1029661a323", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x39f99b67ea5bf3cbe4467e22c7c062595e7332ec", + "name" : "0x39f99b67ea5bf3cbe4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 519817000 +}, +{ + "ETH_account" : "0x7cdea26a3c816d7e8cced71e4e9ae1faa348c0af", + "name" : "0x7cdea26a3c816d7e8c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3330023 +}, +{ + "ETH_account" : "0xea5ec2d5fd0ed505ceec97653ef2bc7c313a43de", + "name" : "0xea5ec2d5fd0ed505ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11000000 +}, +{ + "ETH_account" : "0x3e7a3fb0976556aaf12484de68350ac3b6ae4c40", + "name" : "imbztoken", + "publicKey" : "SPH87KqQEMjjUCp94B1PNsmFP5iibAnp2XBHc8gTsYMMv9C4WFmRt", + "balance" : 1429841693 +}, +{ + "ETH_account" : "0x0014ecac2ea34eb8bda234c1f8f44f9d43991d84", + "name" : "0x0014ecac2ea34eb8bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7180756692 +}, +{ + "ETH_account" : "0x579e11eee09bb474d7698792f3b19d7020589c3d", + "name" : "0x579e11eee09bb474d7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 516999999 +}, +{ + "ETH_account" : "0xa12101f8ccee0a3a3e2462059e336831129d03a6", + "name" : "alice", + "publicKey" : "SPH4wPjeuaa7yWpdyG95FmmdP6EjjDncALHrdxyNHNvzPfCSN9UoN", + "balance" : 1944401346 +}, +{ + "ETH_account" : "0x14b5a3b12d7c36017260e2bd023f0641b6daf1b4", + "name" : "0x14b5a3b12d7c360172", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 191240000 +}, +{ + "ETH_account" : "0xa5721e0c8d93dbf1599ffb28011ba5b45c785696", + "name" : "0xa5721e0c8d93dbf159", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 700000000 +}, +{ + "ETH_account" : "0x662ba3a5096d4dadec20a43ede907e8e9feaab8d", + "name" : "0x662ba3a5096d4dadec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 43551000000 +}, +{ + "ETH_account" : "0x14491b85b3c09905466d72c16b9b02342ee26b33", + "name" : "0x14491b85b3c0990546", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x527cfac8b62cb1abe6a1892bfce4a6f00c0fa325", + "name" : "0x527cfac8b62cb1abe6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 988335611 +}, +{ + "ETH_account" : "0xe0224bd75078d893d7af16723f23d0f0c12b0712", + "name" : "0xe0224bd75078d893d7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6176532430 +}, +{ + "ETH_account" : "0x74c1d75c8c76ec8540fbeee7c764d9385ebe3d4f", + "name" : "0x74c1d75c8c76ec8540", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 63097829 +}, +{ + "ETH_account" : "0x379079cfb6109ebc205d57f818d180c9ee563b89", + "name" : "thehihoguy", + "publicKey" : "SPH6sQh7LzEDjnSf6HJgChPSKKgrept6GWBUyij3bvRLpEqLc6G2W", + "balance" : 386012673 +}, +{ + "ETH_account" : "0x9021eefe531da1049ebc6860579d945d5005bf3a", + "name" : "0x9021eefe531da1049e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1958056610 +}, +{ + "ETH_account" : "0xc9f7e39bfa46896bfdc5f159ba27b940d11c4f99", + "name" : "0xc9f7e39bfa46896bfd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 31850000000 +}, +{ + "ETH_account" : "0x9c6d80c464ba86c1ddee1b703fe57551e064ce34", + "name" : "0x9c6d80c464ba86c1dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 520559649 +}, +{ + "ETH_account" : "0xbb2e41de3521e11d596db19dcca45c5beb69dd5d", + "name" : "0xbb2e41de3521e11d59", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 948180000 +}, +{ + "ETH_account" : "0x02921d0d308ed052c5f06f0cb5f7a14c45978229", + "name" : "0x02921d0d308ed052c5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 858000000 +}, +{ + "ETH_account" : "0xe10d2995d3abfbf33d2c1554446737e3e67ca85a", + "name" : "0xe10d2995d3abfbf33d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4100000000 +}, +{ + "ETH_account" : "0xa6c72a3ba21169b37603781bca34c102ec51b015", + "name" : "0xa6c72a3ba21169b376", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1196761117 +}, +{ + "ETH_account" : "0x1450ce91bad067a3c59170caec5003d4807e0125", + "name" : "0x1450ce91bad067a3c5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 64368657 +}, +{ + "ETH_account" : "0xb6ec45dde840862b92f8efbeb1cd20f314b4dad9", + "name" : "0xb6ec45dde840862b92", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22000000 +}, +{ + "ETH_account" : "0x19ca601cc511ebae79eb5ba3e7ec94ca4c516327", + "name" : "0x19ca601cc511ebae79", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 794000000 +}, +{ + "ETH_account" : "0xb5ce230378fd36ce59ab968d59dc8f4e7c1df875", + "name" : "0xb5ce230378fd36ce59", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x581fdcd6aefe1bbb79ae48c1cf2a72d4a55d2424", + "name" : "0x581fdcd6aefe1bbb79", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 181000000 +}, +{ + "ETH_account" : "0x15b04b2a8f9e46f057f66fc1513250c83bfa9c92", + "name" : "0x15b04b2a8f9e46f057", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 94381781 +}, +{ + "ETH_account" : "0x0c34f68f7c288ffc14d2ca72f3a91331afc49ea1", + "name" : "0x0c34f68f7c288ffc14", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 939698 +}, +{ + "ETH_account" : "0xf03c5ebcd93321e7d9c1cd80c0db15cb5e252611", + "name" : "malko", + "publicKey" : "SPH5Fb7SznNh9KtWuJt61JT1T1eT7D27FDrYqrWQjUGkcHnb5tnCx", + "balance" : 416000000 +}, +{ + "ETH_account" : "0xee34cf46b7029204aff072947cdcbfa8970237cf", + "name" : "0xee34cf46b7029204af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21228849131 +}, +{ + "ETH_account" : "0xac0aea66df41aee86017859f7d8d70a039f416a5", + "name" : "0xac0aea66df41aee860", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1499999999 +}, +{ + "ETH_account" : "0x1520cc8ac60a37a13f98875d403fd2ef4e205ff3", + "name" : "0x1520cc8ac60a37a13f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8290620000 +}, +{ + "ETH_account" : "0xcc19a70074484daa45443d26dd404a183d313e2f", + "name" : "0xcc19a70074484daa45", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7607236200 +}, +{ + "ETH_account" : "0x380f43382e70a699315caa3ef217d198a5824ba2", + "name" : "0x380f43382e70a69931", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 790000000 +}, +{ + "ETH_account" : "0xe27fe4558f36fbdc9be120f8707ca1b4953a07d3", + "name" : "0xe27fe4558f36fbdc9b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 412799600 +}, +{ + "ETH_account" : "0xf127e97fbcafb5579517b924ecbca2fc29a02a15", + "name" : "0xf127e97fbcafb55795", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13492000000 +}, +{ + "ETH_account" : "0xaceeef197ef4ae636c38182fa0c082de46ccebe0", + "name" : "0xaceeef197ef4ae636c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21663034183 +}, +{ + "ETH_account" : "0x6556cf147df01ed0dedc3e560635ced6bf7541f9", + "name" : "saky", + "publicKey" : "SPH7BeTBw121qeBi4VEtsU62bJkWq7qZ3ssFnG2FYUTS1hLqgS627", + "balance" : 20100988708 +}, +{ + "ETH_account" : "0xea1db5890599d8bc0f4995bc206157c7d660b052", + "name" : "0xea1db5890599d8bc0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6378603124 +}, +{ + "ETH_account" : "0x859c58e587691226b32c14e422fcbd6176fb9bb1", + "name" : "0x859c58e587691226b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 375800000 +}, +{ + "ETH_account" : "0x9ea5e03bbfc71b21651e20edc1a07b28495d675f", + "name" : "0x9ea5e03bbfc71b2165", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3833000000 +}, +{ + "ETH_account" : "0xb93bea59373b110c064bd2765d3f05b2680dad9c", + "name" : "0xb93bea59373b110c06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 175542514 +}, +{ + "ETH_account" : "0x95f8d89fabe7341f4ccd9805ba7cae6d60c52f5a", + "name" : "0x95f8d89fabe7341f4c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 404000000 +}, +{ + "ETH_account" : "0x6e2a041b0d851d0a76db7f96236414c163d9f310", + "name" : "0x6e2a041b0d851d0a76", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2400000000 +}, +{ + "ETH_account" : "0x315714bbbc2f9f7f87a48ee26fbfd8195d0a4f68", + "name" : "0x315714bbbc2f9f7f87", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 735407298 +}, +{ + "ETH_account" : "0x83c5ff0b34da8a74308b8478a80534001184b790", + "name" : "0x83c5ff0b34da8a7430", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3552538345 +}, +{ + "ETH_account" : "0x61e70d4b806b20b63c326ff3ad407dd0183af790", + "name" : "0x61e70d4b806b20b63c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 260330000 +}, +{ + "ETH_account" : "0x3783a69c9d59cce935a2d24f8220e78193770b8d", + "name" : "0x3783a69c9d59cce935", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 484000000 +}, +{ + "ETH_account" : "0x888a4d5eaff7bd324f35a94a9c94327fb9ac2679", + "name" : "0x888a4d5eaff7bd324f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1203000000 +}, +{ + "ETH_account" : "0x59dc3af0ff9ebd72dc65e7437504a652ac72a9ba", + "name" : "0x59dc3af0ff9ebd72dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2387331977 +}, +{ + "ETH_account" : "0x2648103e5683f0d542818cddf05a5f02810315eb", + "name" : "0x2648103e5683f0d542", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 525000000 +}, +{ + "ETH_account" : "0xabd590f2ba2c67375a825520cfdad355d4d65e3e", + "name" : "0xabd590f2ba2c67375a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 990848298 +}, +{ + "ETH_account" : "0x290dfd54c8cbf660a719696dd814fc40ef8b81e1", + "name" : "0x290dfd54c8cbf660a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 999757893 +}, +{ + "ETH_account" : "0x7ccf2fae2a68a00d96ca48a3644986dc2e23e335", + "name" : "0x7ccf2fae2a68a00d96", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12166661 +}, +{ + "ETH_account" : "0xeeb0053d4714ae5e604740d69a056a0271b456d7", + "name" : "0xeeb0053d4714ae5e60", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15758069000 +}, +{ + "ETH_account" : "0xc20b957dea8394ec7b4636a6da60fa8a7a0aa973", + "name" : "0xc20b957dea8394ec7b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 170000000 +}, +{ + "ETH_account" : "0xf3c05b2c06dde116669299b995d613499d59e74e", + "name" : "0xf3c05b2c06dde11666", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 215589989 +}, +{ + "ETH_account" : "0xeb71d8a800aa7c92be6a56973fa30581f33027c3", + "name" : "0xeb71d8a800aa7c92be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10979121000 +}, +{ + "ETH_account" : "0x2000d241b4ecdf1ef4bed2355b554fd8c2f4940d", + "name" : "0x2000d241b4ecdf1ef4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50381000000 +}, +{ + "ETH_account" : "0x7294aff4e572223201e474999d54244883d8aba4", + "name" : "0x7294aff4e572223201", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2407000000 +}, +{ + "ETH_account" : "0x1b9bb1094fd25e8be5ddbade4a00f69985812c86", + "name" : "0x1b9bb1094fd25e8be5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0x5969b1bdeb7feda6019e7c017c6a9888cca36f9f", + "name" : "0x5969b1bdeb7feda601", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 199400000 +}, +{ + "ETH_account" : "0x01187e32e6193a74539271072696ee98d2a7586b", + "name" : "0x01187e32e6193a7453", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7306950820 +}, +{ + "ETH_account" : "0xc4cce345b1cba9f3838a2fa4dc3ffe0bda10d2be", + "name" : "0xc4cce345b1cba9f383", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 57238329 +}, +{ + "ETH_account" : "0x58f7dc9c22357d637c66388cf031bbb3899c772d", + "name" : "0x58f7dc9c22357d637c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1100000000 +}, +{ + "ETH_account" : "0x5137b45f50a24c207fc3c19ac343c915bdc813d5", + "name" : "0x5137b45f50a24c207f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 989480000 +}, +{ + "ETH_account" : "0x5c5344b67259dfb1e58cde781c554bc5c742ccee", + "name" : "0x5c5344b67259dfb1e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3508193000 +}, +{ + "ETH_account" : "0x13c961583d03a19da4c73ad67df79ef37a72dd5e", + "name" : "0x13c961583d03a19da4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4647103703 +}, +{ + "ETH_account" : "0x9989f8998664bb53336ff340ef0518957b69a78f", + "name" : "jenkin3", + "publicKey" : "SPH58wXf411X1qSguHSiEhB4Hbk1RxEJLD6KS3mbGzVrCmYSgAr49", + "balance" : 252000000 +}, +{ + "ETH_account" : "0x09fee62f5823d863a71094259d279ee0f49e1b17", + "name" : "0x09fee62f5823d863a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 110497200 +}, +{ + "ETH_account" : "0xd9fde2f8d922a205b4421fcfc57040254193f9a2", + "name" : "0xd9fde2f8d922a205b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15253030000 +}, +{ + "ETH_account" : "0xf386d45ab373613caaf1d77f97c440e57d058a90", + "name" : "0xf386d45ab373613caa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 141000000 +}, +{ + "ETH_account" : "0x3f27691677a440d293359457749fc44a9786822a", + "name" : "0x3f27691677a440d293", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1897774506 +}, +{ + "ETH_account" : "0x8acfad014e80052a2117511aa07095f340d6cfa4", + "name" : "0x8acfad014e80052a21", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1593000000 +}, +{ + "ETH_account" : "0xf8a95cb15523bc0191e604461239f7a708470664", + "name" : "0xf8a95cb15523bc0191", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2730527600 +}, +{ + "ETH_account" : "0xd114014c63a1c967bdd79c8cc407f6422bd99b6b", + "name" : "0xd114014c63a1c967bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 120000000 +}, +{ + "ETH_account" : "0x6694de42bb99f89c910ce19ae18423b4b5f67837", + "name" : "0x6694de42bb99f89c91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 542974328 +}, +{ + "ETH_account" : "0x02c9303e9edb41622cc9fbc21e3db7c1ce0ac27c", + "name" : "0x02c9303e9edb41622c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 264000000 +}, +{ + "ETH_account" : "0x27e35f3dad775fe02655ca05a4b1347d4a2d433d", + "name" : "0x27e35f3dad775fe026", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0xbb9fcc6d3ac39cf5e46fac9f5d05fe75e73e2716", + "name" : "0xbb9fcc6d3ac39cf5e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 718957100 +}, +{ + "ETH_account" : "0x2f81f924c5730ea4a42b86f8451517c253d2ecca", + "name" : "0x2f81f924c5730ea4a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 875945600 +}, +{ + "ETH_account" : "0xf51b22cb60b1c358048b4ed991544f90ed8b439a", + "name" : "0xf51b22cb60b1c35804", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 690000000 +}, +{ + "ETH_account" : "0x2fe1d6f772e0032347c862a16366b4a8bd051838", + "name" : "0x2fe1d6f772e0032347", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 309000000 +}, +{ + "ETH_account" : "0x6d7225b395ba21e61f85cab84edf8c2b3869a3de", + "name" : "0x6d7225b395ba21e61f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 910000000 +}, +{ + "ETH_account" : "0x21abf2b4ee40537c308bb2a507ef449722e9ab4a", + "name" : "0x21abf2b4ee40537c30", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600000 +}, +{ + "ETH_account" : "0x147813fd2a13e29349d5031710a6c9b42b3d9bc6", + "name" : "0x147813fd2a13e29349", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6028000000 +}, +{ + "ETH_account" : "0xa16f853c5b1356d935a6b55db8b149e719554e09", + "name" : "0xa16f853c5b1356d935", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 449000000 +}, +{ + "ETH_account" : "0xdde1edf06e74255903fbbc01a9c1cbbd310e0813", + "name" : "0xdde1edf06e74255903", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0xcab3a6a41c1428fb07df2177ab5eb4ba105a2fbd", + "name" : "0xcab3a6a41c1428fb07", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 34000000000 +}, +{ + "ETH_account" : "0x4a3f08cbd4269fe6ada26371121207612d258ab2", + "name" : "0x4a3f08cbd4269fe6ad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x5b24ae4b3f855d14576e4db4cd77b57c601c6c23", + "name" : "0x5b24ae4b3f855d1457", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66000000 +}, +{ + "ETH_account" : "0x1e4ebbf0dbc4a4ed2db3803428a242a2a4462be3", + "name" : "0x1e4ebbf0dbc4a4ed2d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 104000000 +}, +{ + "ETH_account" : "0x9f49c3b620bec5f2947539430b4552409b0b2d84", + "name" : "0x9f49c3b620bec5f294", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 609010000 +}, +{ + "ETH_account" : "0x7008cf76cd98c30e635128c1858d7d8ddd25e605", + "name" : "0x7008cf76cd98c30e63", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x739d9646a093acca7c1c80d558d3b639fa5b6866", + "name" : "0x739d9646a093acca7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 95700000 +}, +{ + "ETH_account" : "0x5dfcecad45a01e4d964e1853be293d64fdfb6a2c", + "name" : "0x5dfcecad45a01e4d96", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 598000000 +}, +{ + "ETH_account" : "0x21c936dcbc002b30f2eea0948836859eb18c4c76", + "name" : "0x21c936dcbc002b30f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 701000000 +}, +{ + "ETH_account" : "0x4c2ce22d449947210bdcb48f403a811ab478f869", + "name" : "0x4c2ce22d449947210b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7758000000 +}, +{ + "ETH_account" : "0x99002b956b70ce448f3f12411cd9bf9dab9e8603", + "name" : "0x99002b956b70ce448f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2065500000 +}, +{ + "ETH_account" : "0xf9d602efb111da9de800702c355d00bf54da0551", + "name" : "0xf9d602efb111da9de8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33509019300 +}, +{ + "ETH_account" : "0x0746797dd3e2f1caf9e635567c94a260c0ebb1e7", + "name" : "0x0746797dd3e2f1caf9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2800000000 +}, +{ + "ETH_account" : "0xe5ea8f895957c96f3efebdbb1759ce80d690b208", + "name" : "0xe5ea8f895957c96f3e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 410130000 +}, +{ + "ETH_account" : "0x519360b8f667fd9fffb2d4993876e1d2f2203a5d", + "name" : "0x519360b8f667fd9fff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99026000 +}, +{ + "ETH_account" : "0x0e8a9f258c93a34e327061db418cd21978d17426", + "name" : "0x0e8a9f258c93a34e32", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10639000000 +}, +{ + "ETH_account" : "0x461a800ad8126a62999fe52fcc82a0a5cccb232a", + "name" : "0x461a800ad8126a6299", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 51000000 +}, +{ + "ETH_account" : "0xab2bcae94922fd2cc66b645d364c0d35799c3ca1", + "name" : "0xab2bcae94922fd2cc6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 973373459 +}, +{ + "ETH_account" : "0x528de6c8546c910bfc4ee6106c57f49a7ee6c20f", + "name" : "0x528de6c8546c910bfc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 713641000 +}, +{ + "ETH_account" : "0xe5a96fad24ff9b395098feca32bd2b5855068385", + "name" : "0xe5a96fad24ff9b3950", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 88000000 +}, +{ + "ETH_account" : "0x3128752ed08ca6562343099bf60455eb45dee3a4", + "name" : "0x3128752ed08ca65623", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 113240000 +}, +{ + "ETH_account" : "0x6b817bac362b56f39f132ef816ea3b2566b4e96f", + "name" : "0x6b817bac362b56f39f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000 +}, +{ + "ETH_account" : "0x3ccfa661729857f0321029cad346a02b259832a8", + "name" : "0x3ccfa661729857f032", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 75000000 +}, +{ + "ETH_account" : "0x7b35bc2f1b765ddb2b83acc296d927072a251f4b", + "name" : "0x7b35bc2f1b765ddb2b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8585582037 +}, +{ + "ETH_account" : "0xf81f9c27bc0f138d0a9ba30dd603ccca74f098c9", + "name" : "0xf81f9c27bc0f138d0a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1631000000 +}, +{ + "ETH_account" : "0xb806b665c7e1c1f058c0e06f0f33c805fdee0887", + "name" : "0xb806b665c7e1c1f058", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0xc6bffd153f2efc4a52a203b2b378b0ea987019d4", + "name" : "0xc6bffd153f2efc4a52", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 851463000 +}, +{ + "ETH_account" : "0xfc78b98c1a75a58a83d017826b2d9cc3c4a5f7e2", + "name" : "0xfc78b98c1a75a58a83", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11717000000 +}, +{ + "ETH_account" : "0xafb59479e411ea48c9a823f20356a4642dfa983f", + "name" : "tparksphtx", + "publicKey" : "SPH8gKgfJrAMfyCVpqY1j9yXzgRBTnwgkB2ePVLo4xQTx5wY1ezDk", + "balance" : 242000000 +}, +{ + "ETH_account" : "0x1ee33a16b3b70992d3c53900965bdd2939bd786c", + "name" : "0x1ee33a16b3b70992d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1058000000 +}, +{ + "ETH_account" : "0x95a9ccc030a335079212a9300d0f48430a0cf93e", + "name" : "0x95a9ccc030a3350792", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3027000000 +}, +{ + "ETH_account" : "0xbbc6735277a59c125207e0b654425b776ce4e89a", + "name" : "0xbbc6735277a59c1252", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1100000000 +}, +{ + "ETH_account" : "0xad0eae0501875fd202d8c76fce98f047bb612381", + "name" : "chris", + "publicKey" : "SPH6M6bsaJhSPVFjDpKVVHcdSi4qzyJmGJUCgnLRvhgHbtSb4mh56", + "balance" : 200000000000 +}, +{ + "ETH_account" : "0x49592e9db63590c539806e02c6d946d1f2b67335", + "name" : "0x49592e9db63590c539", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5560000000 +}, +{ + "ETH_account" : "0x64f4efbece8dc5a946babb576f375c60d7cca43f", + "name" : "0x64f4efbece8dc5a946", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 750000000 +}, +{ + "ETH_account" : "0xecdb7ac81ab7813e155438b6a4faabf020708ab7", + "name" : "artesophia", + "publicKey" : "SPH6WZ7UaQoyMYYYmoE66hXdbJtDMZ6ysk8AUApTMfrNLbK75NguC", + "balance" : 9149698600 +}, +{ + "ETH_account" : "0xb50c70b0813a695b3f0b1a0755778fff70889382", + "name" : "0xb50c70b0813a695b3f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 45000000 +}, +{ + "ETH_account" : "0x157b9da662eb17fceb24b131bbe7acc1f345045b", + "name" : "0x157b9da662eb17fceb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 431889837 +}, +{ + "ETH_account" : "0xd8b94cb1b9cb71f64a2a41a093d9c816ec0b7ed8", + "name" : "0xd8b94cb1b9cb71f64a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 49000000 +}, +{ + "ETH_account" : "0x0af0949efbe14ea160f6c7368d3d6a727f8fc670", + "name" : "0x0af0949efbe14ea160", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 125000000 +}, +{ + "ETH_account" : "0x4d4789b7f5511a5e7602451aedd47662acd6af3d", + "name" : "0x4d4789b7f5511a5e76", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30381000000 +}, +{ + "ETH_account" : "0xf7f51daa54ce80e6e5142e43c7afbe508c2b4b13", + "name" : "0xf7f51daa54ce80e6e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 114223400 +}, +{ + "ETH_account" : "0x9cb6247bf9e22da514b1b32acae28c560c73d848", + "name" : "0x9cb6247bf9e22da514", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2345223300 +}, +{ + "ETH_account" : "0xdffcc35c87d8379754948701a39d4e5cf86ee9fb", + "name" : "0xdffcc35c87d8379754", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 107000000 +}, +{ + "ETH_account" : "0x8866dd1742a88deaf08edd67fb6a27771ccbc67c", + "name" : "0x8866dd1742a88deaf0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 830000000 +}, +{ + "ETH_account" : "0x2d6db4e433228b4845db4c9fb45898c03a69528f", + "name" : "sphtx", + "publicKey" : "SPH817BuySi5yYyfZcHzEKSVATuTRZo7CiXuU9XkAv7e9nwJ4rxdn", + "balance" : 691519800 +}, +{ + "ETH_account" : "0x6de373ff16654839724053407eb8552d4d8c75b3", + "name" : "0x6de373ff1665483972", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 723007000 +}, +{ + "ETH_account" : "0x58dd9904aebf29585e92110f66885953e6b1d361", + "name" : "0x58dd9904aebf29585e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 137000000 +}, +{ + "ETH_account" : "0x8a379a6bd32d50e6afc1198519a81329afb76603", + "name" : "0x8a379a6bd32d50e6af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000504 +}, +{ + "ETH_account" : "0x0a06299ce176dc3ab64dbdc7910ca7995bae283c", + "name" : "0x0a06299ce176dc3ab6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13404000000 +}, +{ + "ETH_account" : "0x01c673ca0fdedd3429371b9d7e2d1c0ecb350213", + "name" : "0x01c673ca0fdedd3429", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 928349126 +}, +{ + "ETH_account" : "0xb45b4578189c34af0f0cd3b2e069f7bd7ade5248", + "name" : "0xb45b4578189c34af0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 507235432 +}, +{ + "ETH_account" : "0x45d7fb33c88f30db263b0ed4e5669e742ad82cc8", + "name" : "0x45d7fb33c88f30db26", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 93000000 +}, +{ + "ETH_account" : "0xd27ae70a5a05be7c06c0a43d61907c6482ac4e90", + "name" : "0xd27ae70a5a05be7c06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1215250841 +}, +{ + "ETH_account" : "0x9a1001e2b036f9efe9ba83c1b7e2fd65f9972118", + "name" : "0x9a1001e2b036f9efe9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 710000000 +}, +{ + "ETH_account" : "0x8060aa782bfe38b50504b6ab52f266665a7aba14", + "name" : "0x8060aa782bfe38b505", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4835000000 +}, +{ + "ETH_account" : "0x4c03ff8829d5a61dfc111f91de1ae456d9b98e05", + "name" : "0x4c03ff8829d5a61dfc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000 +}, +{ + "ETH_account" : "0x6c771f2c6b3153f8af6523de85c1e43f994033ee", + "name" : "0x6c771f2c6b3153f8af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9990000000 +}, +{ + "ETH_account" : "0x604eb5d4126e3318ec27721bd5059307684f5c89", + "name" : "0x604eb5d4126e3318ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2555945172 +}, +{ + "ETH_account" : "0x6e2fad2df952cdd6008017ed38debb56646f94e2", + "name" : "0x6e2fad2df952cdd600", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 631440000 +}, +{ + "ETH_account" : "0x39a97a3610ea175e20b92854a8105822a7aa37ea", + "name" : "0x39a97a3610ea175e20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1639000000 +}, +{ + "ETH_account" : "0xee2f78abdb5fcc52802d8b50cb0f95586b36f2ed", + "name" : "0xee2f78abdb5fcc5280", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 156000000 +}, +{ + "ETH_account" : "0x6996c29ce9c7a4468162d00a56b14beddb20da64", + "name" : "0x6996c29ce9c7a44681", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1844610000 +}, +{ + "ETH_account" : "0x387ba4b1efbc16fb8763d53956c41a4762017e42", + "name" : "0x387ba4b1efbc16fb87", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1571897782 +}, +{ + "ETH_account" : "0x7b6c79c907458398e8984f96d09c9d87cc8b6331", + "name" : "0x7b6c79c907458398e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 115000000 +}, +{ + "ETH_account" : "0x23977d91da07cdca4ff82ebc515d3f5c1aa65d51", + "name" : "0x23977d91da07cdca4f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100542812 +}, +{ + "ETH_account" : "0x5c229b25b45849ab32d52004b60847623272b3f8", + "name" : "0x5c229b25b45849ab32", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1100010000 +}, +{ + "ETH_account" : "0x91a4bf6fd265024d00bf7018aca110035aeebe86", + "name" : "0x91a4bf6fd265024d00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90004363820 +}, +{ + "ETH_account" : "0x58f6d711ff7591770278579cf51300c0290331db", + "name" : "0x58f6d711ff75917702", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2717264815 +}, +{ + "ETH_account" : "0x1dd2c895d575dc1b9eecd66986e5fcc2cbf030c3", + "name" : "0x1dd2c895d575dc1b9e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 629240000 +}, +{ + "ETH_account" : "0xbf0cfedfe948311f85bffa8c36b4cf453f49c85d", + "name" : "sphtxdtl", + "publicKey" : "SPH7oFonm8q7dEjYD9WGNdxdtzJ9i5E6qqRwnn5th4PgSr7vFU5K4", + "balance" : 297206816 +}, +{ + "ETH_account" : "0x7778d58346238ea3b60b8ece9471ea248c403530", + "name" : "0x7778d58346238ea3b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 869619 +}, +{ + "ETH_account" : "0x349857ffa759f3fa227c302510b506c788ba0071", + "name" : "0x349857ffa759f3fa22", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6400000000 +}, +{ + "ETH_account" : "0x78adb12ca77c27575e1ac8832599f45ebaecb8da", + "name" : "0x78adb12ca77c27575e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 227988886 +}, +{ + "ETH_account" : "0x806a1ace4618fc107cb95e0fae4b7bcc7bc11632", + "name" : "0x806a1ace4618fc107c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0xe79bf86c5153005d3243409cfb78477d4b3646d2", + "name" : "0xe79bf86c5153005d32", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 383426761 +}, +{ + "ETH_account" : "0xa852679b28814220dce6b5ffd53a0d1db395edf4", + "name" : "0xa852679b28814220dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000 +}, +{ + "ETH_account" : "0x7f143750f6947ebd49bff743cc1682eecf29ae50", + "name" : "0x7f143750f6947ebd49", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 119478084 +}, +{ + "ETH_account" : "0xc274d3a040b0730c47de87ad44c510ac9a87dda4", + "name" : "0xc274d3a040b0730c47", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4722000000 +}, +{ + "ETH_account" : "0x0a0849ce4a4f0292c9ba663ae0749495cd4018a2", + "name" : "0x0a0849ce4a4f0292c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 170000000 +}, +{ + "ETH_account" : "0xe0725653ee714c826fa5f5d2c85a8457093a2826", + "name" : "0xe0725653ee714c826f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 664397303 +}, +{ + "ETH_account" : "0xfb990adc6b97888db2b211fcb86d3e453e29eb63", + "name" : "0xfb990adc6b97888db2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x0c01dc03ed92bab623a9bf0c642f11967544ac97", + "name" : "0x0c01dc03ed92bab623", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23400000000 +}, +{ + "ETH_account" : "0xf881d6647d8cb6f950fef6a49d896fe34ca9ee52", + "name" : "0xf881d6647d8cb6f950", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 384000000 +}, +{ + "ETH_account" : "0xa0ce53cdf7eb718db32e8a2216aa24ee1fc33829", + "name" : "0xa0ce53cdf7eb718db3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 131245000 +}, +{ + "ETH_account" : "0xcd34e8767cf8164a71477e732d354877944d1bdb", + "name" : "0xcd34e8767cf8164a71", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2301346486 +}, +{ + "ETH_account" : "0x0ef8e61ec270d38cfb88948f76a18245d178c75d", + "name" : "0x0ef8e61ec270d38cfb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 140740176 +}, +{ + "ETH_account" : "0x8f4177caeebc7b25ac4bbab7e5f38830237ccb3b", + "name" : "0x8f4177caeebc7b25ac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1001700708 +}, +{ + "ETH_account" : "0xdc56441d6ca02bf03ddd4a0c983b7a471b5dc178", + "name" : "0xdc56441d6ca02bf03d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 139080000 +}, +{ + "ETH_account" : "0xd58fec1cdfcfdd02069a2b0aab0cc8913599b8de", + "name" : "0xd58fec1cdfcfdd0206", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 276159999 +}, +{ + "ETH_account" : "0x73f5a9689a3c03fa96cd26723faf0393d066f6d1", + "name" : "0x73f5a9689a3c03fa96", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 165461000 +}, +{ + "ETH_account" : "0x1064b339e51a470a52bb306384474ac806702de9", + "name" : "0x1064b339e51a470a52", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 179999521 +}, +{ + "ETH_account" : "0x924fe6b7047f0e4cbbcee2628bd8646b42ae8852", + "name" : "0x924fe6b7047f0e4cbb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0xf71109fa04f0fdf8d84d5c35ec6d115a9f32b603", + "name" : "0xf71109fa04f0fdf8d8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x06643d37ca284e1223a285791f43f6d2892817bd", + "name" : "0x06643d37ca284e1223", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4371624400 +}, +{ + "ETH_account" : "0x981e2eafbb7ef0287cbdf6943e64a78b06fda30d", + "name" : "0x981e2eafbb7ef0287c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 236690000 +}, +{ + "ETH_account" : "0xbffddd3c2ae993449c1f97095c8ce3e7f463e793", + "name" : "0xbffddd3c2ae993449c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 592980000 +}, +{ + "ETH_account" : "0xa88b530874ec8e3bfa512c367cb5387c916a822d", + "name" : "0xa88b530874ec8e3bfa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000 +}, +{ + "ETH_account" : "0x0861799e771e18c1bad65e4c95f873fd5c7abd76", + "name" : "0x0861799e771e18c1ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 998000000 +}, +{ + "ETH_account" : "0xd30c4723dfe1d7966f559d8b1e665429ee66ada4", + "name" : "0xd30c4723dfe1d7966f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5360000000 +}, +{ + "ETH_account" : "0x622531098835785a822c27b60e1bcb6bb0f8b343", + "name" : "0x622531098835785a82", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 679000000 +}, +{ + "ETH_account" : "0xf80d6025d99d39fa181fed6df9fe0539236fd231", + "name" : "0xf80d6025d99d39fa18", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0xb40884c50453eb5a02ccd409b214970bcdf3e2dc", + "name" : "custabovseqdavbf", + "publicKey" : "SPH6KF5YxxR699DHYJaTwfJsfMzsKe34kxTu7mvCCam8r7azsFQTq", + "balance" : 5126000000 +}, +{ + "ETH_account" : "0x6943e80d86932cc57aba2585505d0fa020fccf0e", + "name" : "0x6943e80d86932cc57a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 869000000 +}, +{ + "ETH_account" : "0xb537850738c7e211827aa3db291c390b8c0bd465", + "name" : "support", + "publicKey" : "SPH6f4K7EJetK18GjTEKMzWWu8RekpfYJ4gdVrAYFZ7zUrA7DC9t3", + "balance" : 250000000000 +}, +{ + "ETH_account" : "0x2974bbdbc1fe5243a4d78b0208943ffde22ffea6", + "name" : "0x2974bbdbc1fe5243a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200 +}, +{ + "ETH_account" : "0x63704b13954c05caf9c58683c16b05f07fd42aed", + "name" : "0x63704b13954c05caf9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0xa355f383a847a0deec8d384a2ea53a6396a1b8b9", + "name" : "0xa355f383a847a0deec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2292351700 +}, +{ + "ETH_account" : "0x65b845d8521deb20798f89977a2a31ba1f37363b", + "name" : "0x65b845d8521deb2079", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1860010000 +}, +{ + "ETH_account" : "0xedcb3c2b09eddeb5aa1d999407fef0d9deeee885", + "name" : "0xedcb3c2b09eddeb5aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2371410000 +}, +{ + "ETH_account" : "0x3d5f242bbc8ea5a5844b19d8ff7110584fd774a6", + "name" : "0x3d5f242bbc8ea5a584", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4458000000 +}, +{ + "ETH_account" : "0xaf2e156a675f08e507c4085b6292c80dc506a415", + "name" : "logophilia", + "publicKey" : "SPH8WREGA52mosjYYd7zuk7DHFBWXpdEysVan7moUzChjfHkcMsYJ", + "balance" : 643646827 +}, +{ + "ETH_account" : "0x0f9ea4df4fc9e6333b6d086d2994ff380fd09e8b", + "name" : "0x0f9ea4df4fc9e6333b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 479000000 +}, +{ + "ETH_account" : "0x26008fe3a43d152cf4b2df6f6272987ef99af53f", + "name" : "0x26008fe3a43d152cf4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xcedce23deace4cbe8d608d30892dd90c3ef9ca54", + "name" : "0xcedce23deace", + "publicKey" : "SPH6cRpNKegAXm1qVeYEXUvknEGkdvpcFZr4hRKZpb5v4ebkLpyDc", + "balance" : 10805100000 +}, +{ + "ETH_account" : "0xb48cc3191d82cc75b4887a76ab45039b543c35f3", + "name" : "0xb48cc3191d82cc75b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1578000000 +}, +{ + "ETH_account" : "0xaab6f6aac3a0bbbdccfb2aef3a1566b10d92b47b", + "name" : "0xaab6f6aac3a0bbbdcc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 138000 +}, +{ + "ETH_account" : "0xa601585b07c1e6c2fcc3d6153240c2d7c1d89b8a", + "name" : "0xa601585b07c1e6c2fc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 88866500000 +}, +{ + "ETH_account" : "0xf5ceeab3eb8bed171939c3e3a4ec7a28cb1aaaf5", + "name" : "0xf5ceeab3eb8bed1719", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 455000000 +}, +{ + "ETH_account" : "0x6e1e10175b9145bb887ac78fff35fabea2dfff6d", + "name" : "0x6e1e10175b9145bb88", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 364760000 +}, +{ + "ETH_account" : "0xf4d975bb594bb404cc8f3f14cff12783a60df1a9", + "name" : "0xf4d975bb594bb404cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0x028b5b0fc2d8e24021eb26c6fc833d46e938938d", + "name" : "0x028b5b0fc2d8e24021", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1387984700 +}, +{ + "ETH_account" : "0x5ee0fe444e37a8dfecd01fb9dd326dd62df9c2ee", + "name" : "0x5ee0fe444e37a8dfec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 325000000 +}, +{ + "ETH_account" : "0x18c44ae6b231009a4d44b778596fa9c1deda1098", + "name" : "0x18c44ae6b231009a4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4210054000 +}, +{ + "ETH_account" : "0x4e269cecacb2875d1714ae17728814e2dac50cca", + "name" : "cranfield", + "publicKey" : "SPH5uUrBHL2JiBG48GLJMD9gpQfH5Lr2QoJpmJBxHRvXzhUK5CsnQ", + "balance" : 1445950000000 +}, +{ + "ETH_account" : "0xc903b6a279891e19daf466faec9110445aed2813", + "name" : "0xc903b6a279891e19da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1767390000 +}, +{ + "ETH_account" : "0x12d179d5526d5683bf625d386dc9fb8013aac746", + "name" : "0x12d179d5526d5683bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0x74513e9867dd81154a6f57e65e87e89002c2bf52", + "name" : "0x74513e9867dd81154a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11 +}, +{ + "ETH_account" : "0x9434a73c7e87cd555544d1a6e2f0495798294ed8", + "name" : "0x9434a73c7e87cd5555", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 44243721346 +}, +{ + "ETH_account" : "0xe232ef3fbdf37364ec84d93865da18b804fafeb8", + "name" : "0xe232ef3fbdf37364ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xde0b2a83874f131190e94a3e19781d0b42a80a96", + "name" : "0xde0b2a83874f131190", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10187262700 +}, +{ + "ETH_account" : "0x2639446daa522d04d41474e1505b4efc116ea259", + "name" : "0x2639446daa522d04d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 723177936525 +}, +{ + "ETH_account" : "0x192666712c13daf2145d0ef55d6d399f7fdfe65b", + "name" : "0x192666712c13daf214", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14000000 +}, +{ + "ETH_account" : "0xc344e51968a955a317308f22f00f87429b790674", + "name" : "0xc344e51968a955a317", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 270000000 +}, +{ + "ETH_account" : "0x8b8ae20b2851557cb4167d06b41b3691aa7e8ddd", + "name" : "0x8b8ae20b2851557cb4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7063550271 +}, +{ + "ETH_account" : "0xda72e27413f2265869ecaea9bc7201a9337a3d26", + "name" : "0xda72e27413f2265869", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 94403497 +}, +{ + "ETH_account" : "0xef0674f438e727d1f95e9c6d33e957d4e97babe7", + "name" : "0xef0674f438e727d1f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13296000000 +}, +{ + "ETH_account" : "0x8954ed9810138fc007bf824cc9c1cf732db22b1e", + "name" : "0x8954ed9810138fc007", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21719035637 +}, +{ + "ETH_account" : "0x57e8d082eea1e02030d6c15b2fc847e2a161f003", + "name" : "0x57e8d082eea1e02030", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 697000000 +}, +{ + "ETH_account" : "0x442ceca56900a7795b3966830afee3527729a7c8", + "name" : "0x442ceca56900a7795b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 427950000 +}, +{ + "ETH_account" : "0x1cd9a452b51feaca2754e194ecc4335a77a0905b", + "name" : "0x1cd9a452b51feaca27", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 31 +}, +{ + "ETH_account" : "0x73c4bb393f065d58b755962f7feaa4156259d7e9", + "name" : "0x73c4bb393f065d58b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 783093792 +}, +{ + "ETH_account" : "0x379ef17177308ff61adf6cfabc36f010d1179ad6", + "name" : "0x379ef17177308ff61a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3500000000 +}, +{ + "ETH_account" : "0xb6b8cc588e76a53cff61eeca20a5e6a8c2ffad0e", + "name" : "0xb6b8cc588e76a53cff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2352740707 +}, +{ + "ETH_account" : "0x22f783a0e322874a4ece270b6d79255e3fef4358", + "name" : "0x22f783a0e322874a4e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x05913d7ae752076d3149237c2015d2c395984d8b", + "name" : "0x05913d7ae752076d31", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 463000000 +}, +{ + "ETH_account" : "0x77c42f962e82c25b47418e13ee8003bd64a48a3d", + "name" : "bulgaria", + "publicKey" : "SPH51NVULt5M8tQAkaTd7VB9V5W8dNsock3zaBsFSEY3wjWq6gSfy", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xc7f1e39dc9baebf43bef63c151e91da1f1009b26", + "name" : "0xc7f1e39dc9baebf43b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66895961 +}, +{ + "ETH_account" : "0x7ff3168f2eae8ebb29dcd8fcf8172ec115c119a4", + "name" : "sphtxlove", + "publicKey" : "SPH6ghxZSV6PQ4GLw4hskv5DiY5voA2UxV5NScbe7sVnCVzDhD9cv", + "balance" : 575693097 +}, +{ + "ETH_account" : "0x095f1ec5b131e2bb1b19dc063a4f9465fbb11306", + "name" : "helloworld", + "publicKey" : "SPH4wyLAM54RXhAc6aYAiRC3v71uHVQFvLzB8DHhzER1eWYJ5A8nG", + "balance" : 273020435 +}, +{ + "ETH_account" : "0x9ff94f4daf3ce7fb8a5bb0732f9b51a815ca6180", + "name" : "helloearth", + "publicKey" : "SPH5cBcmw53YsGgHBBRNjijd3joUmo2CCJMHJsrFWNht8d5KjGAGy", + "balance" : 273020000 +}, +{ + "ETH_account" : "0x4acde1fd7d71df700397327e7da34ee92f4e554c", + "name" : "0x4acde1fd7d71df7003", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1426949549 +}, +{ + "ETH_account" : "0x2ea4d9062c1ab7fd8e58c63570a229584cebb08a", + "name" : "0x2ea4d9062c1ab7fd8e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1065949079 +}, +{ + "ETH_account" : "0x86fe536c7a7bdf17a02922c34cc98fbe37ade987", + "name" : "0x86fe536c7a7bdf17a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1970898500 +}, +{ + "ETH_account" : "0x274f3c32c90517975e29dfc209a23f315c1e5fc7", + "name" : "0x274f3c32c90517975e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 823234979165 +}, +{ + "ETH_account" : "0x6a04d669fcc186ee795f63569eee4c95286a630e", + "name" : "0x6a04d669fcc186ee79", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12502301460 +}, +{ + "ETH_account" : "0xe7aa55a16b14e5b1e83bf544537989d67636953c", + "name" : "0xe7aa55a16b14e5b1e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 360000000 +}, +{ + "ETH_account" : "0xc700516179ce2c805c1d4878246baf04b3ca63f9", + "name" : "0xc700516179ce2c805c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 507000 +}, +{ + "ETH_account" : "0x598a9a99403c98fcd7492cb09ef8e860ee31f971", + "name" : "0x598a9a99403c98fcd7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000003366 +}, +{ + "ETH_account" : "0x7ec4b98dd80ef1bac43dce49615e21d858f82cf1", + "name" : "0x7ec4b98dd80ef1bac4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1131000000 +}, +{ + "ETH_account" : "0xf9c935c8ce74cffa971a61ef1d4658ec78e0ca5a", + "name" : "0xf9c935c8ce74cffa97", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x82ebdac4f760cded5ce3c94563d9809b9e1f627d", + "name" : "qxijwioetivnneu", + "publicKey" : "SPH5ccbX73Bs5BFgfrbcDUBEk4XoQn6uoGpZV96pGtoRHziGFwC5C", + "balance" : 3220525900 +}, +{ + "ETH_account" : "0x0e94a6a7275221f0c7ad750184d90c666f36413b", + "name" : "0x0e94a6a7275221f0c7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 986704238 +}, +{ + "ETH_account" : "0x51a8ec573eb47fb4a6c2fa7621fc9f8154d1fcb2", + "name" : "0x51a8ec573eb47fb4a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000000 +}, +{ + "ETH_account" : "0xfcfb277d3baed8eca99309f972253de42d7c4c0c", + "name" : "0xfcfb277d3baed8eca9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2031643000 +}, +{ + "ETH_account" : "0xda7e162a59bf59d5db124a14a0357e6c55d8ffbc", + "name" : "0xda7e162a59bf59d5db", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x82ff727381b6354d1e87543947993b0ba3f5af35", + "name" : "0x82ff727381b6354d1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x6b0827f535f5face55d05e443ce7e2ff7104a1a9", + "name" : "0x6b0827f535f5face55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65200000 +}, +{ + "ETH_account" : "0x59cfb21a4a889fc340885ed60b2a921b44911c89", + "name" : "0x59cfb21a4a889fc340", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 971270000 +}, +{ + "ETH_account" : "0x04b586c310004ecf909277bbdc1e155f82005c36", + "name" : "0x04b586c310004ecf90", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 309663513 +}, +{ + "ETH_account" : "0x834034432d03ebbdc2835202354cf0060a7a0e8c", + "name" : "0x834034432d03ebbdc2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2364251800 +}, +{ + "ETH_account" : "0xc12408545be8e01b10338dc8278d322482802f93", + "name" : "0xc12408545be8e01b10", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5200000000 +}, +{ + "ETH_account" : "0x07b6e949a7a37fd7fee435010c9087724ed0e270", + "name" : "0x07b6e949a7a37fd7fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 132480000 +}, +{ + "ETH_account" : "0x0db56164d4f156ca3c66997fdc2284e3a9bbf123", + "name" : "tim", + "publicKey" : "SPH57NsqKeZYaKybTNJC7e6ZP7rtjumgHqU7j54wGD2yLF4QA22F9", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xd5920a535b109009528dd6b285626ece7532bed9", + "name" : "0xd5920a535b10900952", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0xd4ab4118c5c5bca1e02a4e583d39da1ba0d0aee3", + "name" : "0xd4ab4118c5c5bca1e0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0x5f023382da24d06123537cf47f6029c9e6d451e1", + "name" : "0x5f023382da24d06123", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 365000000 +}, +{ + "ETH_account" : "0xc9aeec4db93127a453fd47d3ac1fc96c0cc3c0ab", + "name" : "0xc9aeec4db93127a453", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 81460000 +}, +{ + "ETH_account" : "0x68c08406fd81db3464acc30edfef82488822a7db", + "name" : "0x68c08406fd81db3464", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 123694234 +}, +{ + "ETH_account" : "0xa8c741773895c368fc89144ef22b5b8124a34cc3", + "name" : "0xa8c741773895c368fc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 232618838 +}, +{ + "ETH_account" : "0x2446437ab7887bf659a14f609edeb139bf5531d4", + "name" : "0x2446437ab7887bf659", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 84197000 +}, +{ + "ETH_account" : "0x0fe0f2798fe49cbf3a4bef25e42b1291a57832cb", + "name" : "0x0fe0f2798fe49cbf3a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 670000000 +}, +{ + "ETH_account" : "0xd0ebe22272b05d6f579148f71da77e842e36df13", + "name" : "petersilie", + "publicKey" : "SPH5k8ktF63PPJX3w8xbo3d5P8tniJExkEV61KwdrwrzcNULrivjG", + "balance" : 3155091469 +}, +{ + "ETH_account" : "0x047c13bb04b9e8d21cec5c1358b65e27bf6d2a0d", + "name" : "0x047c13bb04b9e8d21c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3700000000 +}, +{ + "ETH_account" : "0xd4cb90b729fce9207cd2c518cd4e8d2b95df006f", + "name" : "0xd4cb90b729fce9207c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 81810000 +}, +{ + "ETH_account" : "0xff95dc097405f18017425970f54f71c1aeba9170", + "name" : "boki", + "publicKey" : "SPH7NZdh7seeBiek76FQJzdhHBdnzcz4PKsejLNrV9xdiVVpjatVw", + "balance" : 277600000 +}, +{ + "ETH_account" : "0xefa510375ed4508a8a63de5be6109b44bf45fde5", + "name" : "0xefa510375ed4508a8a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1826000000 +}, +{ + "ETH_account" : "0x4c6c47d28bb05678f33fe6b4314e9abe873c7192", + "name" : "0x4c6c47d28bb05678f3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 968920000 +}, +{ + "ETH_account" : "0x67170e91a54f5466b8b0af42720fe17da072ffd4", + "name" : "0x67170e91a54f5466b8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 576019000 +}, +{ + "ETH_account" : "0x412e4b914654fbac410733e2cd796b421aa610ab", + "name" : "0x412e4b914654fbac41", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5377111100 +}, +{ + "ETH_account" : "0xc3b4978bf89b951b952cc0216f6062e7d5cdee25", + "name" : "0xc3b4978bf89b951b95", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 503000000 +}, +{ + "ETH_account" : "0x0947aa4073cb46c30c3445a1d3ff3b4a6033e3d8", + "name" : "0x0947aa4073cb46c30c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 770000000 +}, +{ + "ETH_account" : "0xa1d0e796ecfa96f779d634d948ee56d64d0a0b7d", + "name" : "0xa1d0e796ecfa96f779", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 49000000 +}, +{ + "ETH_account" : "0x166b568b2e7a5d520296d34ded5eb1ce8c6fb221", + "name" : "0x166b568b2e7a5d5202", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 498536000 +}, +{ + "ETH_account" : "0x2b0ca1f3b1f74968e6156a0dfb98c3d311e7efe2", + "name" : "0x2b0ca1f3b1f74968e6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6320000000 +}, +{ + "ETH_account" : "0x9ab3c2fbb7477f9603978563e1631cd956c72495", + "name" : "0x9ab3c2fbb7477f9603", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x03c5872d63bf15099b9555d07b7ce27de510dd43", + "name" : "0x03c5872d63bf15099b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1841000000 +}, +{ + "ETH_account" : "0x8ab6b17793d5499f17cce95f9e54f7b7029e4725", + "name" : "0x8ab6b17793d5499f17", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3349429649 +}, +{ + "ETH_account" : "0x0f761b35ae5b3c2e5bc608d1426534b56295c03c", + "name" : "groundzero", + "publicKey" : "SPH8Ea4KsjGb9wAmtFBQJqqHX2apPfqZ7zb8MJKZs3PGKnMoMypxg", + "balance" : 2531869100 +}, +{ + "ETH_account" : "0x1662a2cd6c399e28a452809b8b064e734594f53a", + "name" : "0x1662a2cd6c399e28a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 534921673 +}, +{ + "ETH_account" : "0xc74f105821a1792bf6f2e5a7c637f3dd5c0c321d", + "name" : "0xc74f105821a1792bf6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 148681246 +}, +{ + "ETH_account" : "0x3e366c8b2af81b847b37f03abb80b5445f4c2418", + "name" : "0x3e366c8b2af81b847b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 489460000 +}, +{ + "ETH_account" : "0xd43c0134d0e3255b3aeec68b03ea78b090547efb", + "name" : "0xd43c0134d0e3255b3a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 329964000 +}, +{ + "ETH_account" : "0x32c1937eeaa339319f0a3c323739f36cee0b3707", + "name" : "0x32c1937eeaa339319f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1754118784 +}, +{ + "ETH_account" : "0x57c2eb0bdc63243d7671c1eeaac7af52fb0ab6ae", + "name" : "0x57c2eb0bdc63243d76", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23565972 +}, +{ + "ETH_account" : "0xc35bd004530082a1759fcaedd6f5355a9f20821c", + "name" : "sophiatxt", + "publicKey" : "SPH5RHv8gyxQAWnN9B2G5WqFiwzQQ1YXipB7bseQtvszHCBVFLdYU", + "balance" : 3100000000 +}, +{ + "ETH_account" : "0xd500e42432cc06caf883ea2f7f965e8c2200a768", + "name" : "0xd500e42432cc06caf8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 460000 +}, +{ + "ETH_account" : "0xc505c8e2f1e02978997dfd24bf7e5b3bbba024f7", + "name" : "0xc505c8e2f1e0297899", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1952000000 +}, +{ + "ETH_account" : "0x723a5d153edd10dc48dd31b48539f843e77eb94c", + "name" : "0x723a5d153edd10dc48", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 348036000 +}, +{ + "ETH_account" : "0x78b7698be3f0699414633390113ac683962c8eac", + "name" : "bearlovespanda1", + "publicKey" : "SPH7t5SjJFRTrM3LVzo4urVneervAaPuiQUumapik2NAP7PR1RxZG", + "balance" : 1408000000 +}, +{ + "ETH_account" : "0x8b4f5fd827a708537514824e4269ac73bd835d05", + "name" : "0x8b4f5fd827a7085375", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 243050168 +}, +{ + "ETH_account" : "0x840a76a809de893a357346e90e2ad6db95b9cdc1", + "name" : "sphtxswap", + "publicKey" : "SPH7gRW7cSUcugMnvwS3BEByEVFrsheCMvPpBaxV1DcQUyrR9wuj1", + "balance" : 5117357625 +}, +{ + "ETH_account" : "0xe477f1586d7aed782b615ebe56d00add79155ad6", + "name" : "0xe477f1586d7aed782b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 91984400 +}, +{ + "ETH_account" : "0xe28ce272d0c4d1045e87562c357d10f6fe8b9126", + "name" : "0xe28ce272d0c4d1045e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 342919992 +}, +{ + "ETH_account" : "0x7b6de5b4ab2ef40abf98ec2391153a3ef0e3ebdb", + "name" : "0x7b6de5b4ab2ef40abf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 860000000 +}, +{ + "ETH_account" : "0x875aed3503805e55c9829cc04e7c10a33f289122", + "name" : "0x875aed3503805e55c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 49347930892 +}, +{ + "ETH_account" : "0xe535f657f80bca026eb059ee8178911f2cfb39f6", + "name" : "0xe535f657f80bca026e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 37111072500 +}, +{ + "ETH_account" : "0x852cecb723e16d37dfc5090ba1fd16184caff44d", + "name" : "0x852cecb723e16d37df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19438000000 +}, +{ + "ETH_account" : "0xb4358074cf56b10f498cdfd1f9fcf4fa522c9f26", + "name" : "0xb4358074cf56b10f49", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xc64833f82f89bc5485dd690843cf3d2e7574aa7e", + "name" : "stmsonic", + "publicKey" : "SPH5cRpPGpou9BiLr3P7fxXoifUwdespB4tC9M7VmmDzwsRgrf4nn", + "balance" : 2020000000 +}, +{ + "ETH_account" : "0x35f6490a8afd92fd94700b73e4f8fc70c2717fd2", + "name" : "0x35f6490a8afd92fd94", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9990000000 +}, +{ + "ETH_account" : "0x3ce8a2b69ea6c144c69f96bc88e3bc56e58d063e", + "name" : "0x3ce8a2b69ea6c144c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4500000000 +}, +{ + "ETH_account" : "0xe7b8b570aa25dcbc7f69a91fb86107414d34b8ab", + "name" : "0xe7b8b570aa25dcbc7f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0x997a9a31cf02ca37e3bf36292f50a43185c22916", + "name" : "0x997a9a31cf02ca37e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1824494000 +}, +{ + "ETH_account" : "0xc5762267ffe711b1e6ee060c1527533f1a1a4c05", + "name" : "0xc5762267ffe711b1e6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 85000000 +}, +{ + "ETH_account" : "0xacd60ef15fc036f75e6dbeca3796ef617f822b68", + "name" : "0xacd60ef15fc036f75e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 270000000 +}, +{ + "ETH_account" : "0xf255fe0c3ec6bbf7968aafc487be359cb3e6f3c7", + "name" : "0xf255fe0c3ec6bbf796", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000014617 +}, +{ + "ETH_account" : "0x993842a32fa586898cf5fdfb7fa497a185f37dfc", + "name" : "0x993842a32fa586898c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 750000000 +}, +{ + "ETH_account" : "0xd0f95f9c40970f891f4e9a745bc9655ac0d7b7b3", + "name" : "0xd0f95f9c40970f891f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15660000000 +}, +{ + "ETH_account" : "0xa3c9f61ccfb1df88e21316da45b8db952331d4c9", + "name" : "0xa3c9f61ccfb1df88e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 160000000 +}, +{ + "ETH_account" : "0x5b9d841e739a1ddea480e742a4b7fc0cd04e4b64", + "name" : "0x5b9d841e739a1ddea4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0x933c89b2ecb8db5a33ce70dfb9df87220ab64b27", + "name" : "0x933c89b2ecb8db5a33", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2200000000 +}, +{ + "ETH_account" : "0xe2a1b031c087a6878722e43f86634ec04bd8c8d1", + "name" : "0xe2a1b031c087a68787", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4930494505 +}, +{ + "ETH_account" : "0xa85fdfe63f2d00a556356451b9c178b4b3524602", + "name" : "0xa85fdfe63f2d00a556", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3533295023 +}, +{ + "ETH_account" : "0xc656ec8f921bdd5077b5a3300432e6bfa3b27d3a", + "name" : "0xc656ec8f921bdd5077", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 376903677 +}, +{ + "ETH_account" : "0x77365c9ec7db2215b31157cfc7a0ffa426c8654c", + "name" : "0x77365c9ec7db2215b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18510000000 +}, +{ + "ETH_account" : "0x0b0408ef4e76c04851c14f3b75994bb13283bfcc", + "name" : "0x0b0408ef4e76c04851", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 364476400 +}, +{ + "ETH_account" : "0x60945ed05a6b0df1762ee7567fcf9a68bfefc476", + "name" : "0x60945ed05a6b0df176", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1202782800 +}, +{ + "ETH_account" : "0x144911439d867fecb985e38df80357e2a56473cf", + "name" : "0x144911439d867fecb9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 521237673 +}, +{ + "ETH_account" : "0x3af3ac3eeb63580943117d9766667c1bc62023cd", + "name" : "0x3af3ac3eeb63580943", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60000000 +}, +{ + "ETH_account" : "0x1bfd6431c5cd8079eb8a48f3aaab5c278d4796d7", + "name" : "0x1bfd6431c5cd8079eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11047734924 +}, +{ + "ETH_account" : "0x952138b856771785c2b55da4aa1c926aeaaba214", + "name" : "0x952138b856771785c2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 786488789 +}, +{ + "ETH_account" : "0x8cf599bd24d329f344f3f74373d97f04d93d3c70", + "name" : "0x8cf599bd24d329f344", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1362808273 +}, +{ + "ETH_account" : "0x35d907f59d76cb1db806729234f0b6f1a02e2989", + "name" : "0x35d907f59d76cb1db8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 453420000 +}, +{ + "ETH_account" : "0x14c20a897459117caebc063e5b1bb3840de2a20b", + "name" : "0x14c20a897459117cae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x13d80f201ae6f376de2f1270e479fc2ed0bedbe8", + "name" : "0x13d80f201ae6f376de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 519999999 +}, +{ + "ETH_account" : "0xf796df4ffd2ea68313fda96e411a9bc118e97756", + "name" : "0xf796df4ffd2ea68313", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 321840663 +}, +{ + "ETH_account" : "0xa331530415d7a2a7fdbc5212315b4ddb86ec2411", + "name" : "0xa331530415d7a2a7fd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000 +}, +{ + "ETH_account" : "0x70fb5f8327080bb074448324022dcfd6d148616e", + "name" : "0x70fb5f8327080bb074", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000 +}, +{ + "ETH_account" : "0x7a3caea9d1ffe596a5ed146f5cfc099875f8ad4f", + "name" : "0x7a3caea9d1ffe596a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 486769 +}, +{ + "ETH_account" : "0xc9682a00475e4c5038a94a394a3bd962faffd007", + "name" : "0xc9682a00475e4c5038", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000000 +}, +{ + "ETH_account" : "0xb908d8649101f91934dfd6cee2ed2f607d649157", + "name" : "0xb908d8649101f91934", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 105241691 +}, +{ + "ETH_account" : "0xd15406f15bd0c1dc7813906a0c3bcac6afb9d75f", + "name" : "0xd15406f15bd0c1dc78", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 517619904 +}, +{ + "ETH_account" : "0x6710cffc37759bdf3be7a426ddd39b73ea3c11ae", + "name" : "0x6710cffc37759bdf3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2126955700 +}, +{ + "ETH_account" : "0xac4a2e4dc008cf8f4dcf1a86ab48069548fcdd53", + "name" : "0xac4a2e4dc008cf8f4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 873630000 +}, +{ + "ETH_account" : "0x5315fd57ba0f6b2d1ec9c7c6711785f04e8c5784", + "name" : "0x5315fd57ba0f6b2d1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 645100 +}, +{ + "ETH_account" : "0x3f69ee5399cf4034a5ee3b6ff00298e7f563bc3e", + "name" : "0x3f69ee5399cf4034a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19020204 +}, +{ + "ETH_account" : "0x1d248c3eb80abbba9c302eb291c0e78c0a6afaf9", + "name" : "0x1d248c3eb80abbba9c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1820058823 +}, +{ + "ETH_account" : "0xff57f61dfa4cf76cb9490d6662c8c022c7e913fd", + "name" : "0xff57f61dfa4cf76cb9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 42690000 +}, +{ + "ETH_account" : "0xeb858d991607249106f51d609d14ba8df6c57748", + "name" : "0xeb858d991607249106", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 680690000 +}, +{ + "ETH_account" : "0xa64579021d351e28d2ad625dd8e1489e8080a2e6", + "name" : "0xa64579021d351e28d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3199559000 +}, +{ + "ETH_account" : "0x6692df0d97cbb783c02992326b70eebb52eb4add", + "name" : "0x6692df0d97cbb783c0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1528 +}, +{ + "ETH_account" : "0x162994d16311c9ffc1ca7c1a93af94d77648018c", + "name" : "0x162994d16311c9ffc1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40010000000 +}, +{ + "ETH_account" : "0x88afd45839a78b6e6baa3ac3aff4a5fbeb13d127", + "name" : "0x88afd45839a78b6e6b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x533b8997d7aabeb0dc3431b2e6597f193fc7b8af", + "name" : "0x533b8997d7aabeb0dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 98000000 +}, +{ + "ETH_account" : "0xdb7db88bfa096afb83617bc0867bb7d1c0c20bc3", + "name" : "0xdb7db88bfa096afb83", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1004000000 +}, +{ + "ETH_account" : "0x1b22c32cd936cb97c28c5690a0695a82abf688e6", + "name" : "0x1b22c32cd936cb97c2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 244988000 +}, +{ + "ETH_account" : "0x0d0a9cb0b3bd864169b4694ef6e8c0abebfe6f83", + "name" : "0x0d0a9cb0b3bd864169", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8035490100 +}, +{ + "ETH_account" : "0x1e49515f9233e5c5865453f0dff9d346dcc3b261", + "name" : "sophiatxmain", + "publicKey" : "SPH67jxoPwoCA9ypEyq3KT8WCxZHEyGfzRo22zkjGecu5ds5kDEHX", + "balance" : 12663000000 +}, +{ + "ETH_account" : "0xa2931631d8d93c5f5f7e0f573f6b5099c21c7272", + "name" : "0xa2931631d8d93c5f5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0xbc68ef97909e7e6af9fe3ebdf925340db4aac907", + "name" : "0xbc68ef97909e7e6af9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1955000000 +}, +{ + "ETH_account" : "0xbe00eff0f0f86bef5fbf17e4f5145600418028b5", + "name" : "0xbe00eff0f0f86bef5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30010000 +}, +{ + "ETH_account" : "0xf02da5e5245a26381d35fff6d2677006084a43be", + "name" : "0xf02da5e5245a26381d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2098499400 +}, +{ + "ETH_account" : "0x3b3bccd900628bcd7cabc04b823f7e229861b6cf", + "name" : "0x3b3bccd900628bcd7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1437000000 +}, +{ + "ETH_account" : "0x34b6d731fd90bbfa371656fb1b8ce05d16bf821f", + "name" : "0x34b6d731fd90bbfa37", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 987010000 +}, +{ + "ETH_account" : "0xc3ed123ab1feb870745ee9ab0f96774c110f2b51", + "name" : "0xc3ed123ab1feb87074", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 190000000 +}, +{ + "ETH_account" : "0xfb91cb2dd874376b1e9e5fd1494ac783f164d35a", + "name" : "0xfb91cb2dd874376b1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x05bc0543f52245100d213e2cdb7a94b9dc9c8bb3", + "name" : "0x05bc0543f52245100d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1020000000 +}, +{ + "ETH_account" : "0x0cdb6447598de909e89f5d7e1371b8c2ab452e15", + "name" : "0x0cdb6447598de909e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1914466000 +}, +{ + "ETH_account" : "0x4d214479079ef7feb83f1ed558a3e218f1bf2e11", + "name" : "0x4d214479079ef7feb8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6065000000 +}, +{ + "ETH_account" : "0x63ccb9dc39cccf4003d22f0a46c94aa9baacabd4", + "name" : "0x63ccb9dc39cccf4003", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 549771100 +}, +{ + "ETH_account" : "0x76caaa9a0fe9dcba6a8d5addfab60feb55d9b643", + "name" : "0x76caaa9a0fe9dcba6a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 724864306 +}, +{ + "ETH_account" : "0xf7527a5924e04e372409ea9f38fe59cb6b04db24", + "name" : "montesphtx", + "publicKey" : "SPH7b7dFeXVKh4dyEHbjpbJXzUjYxsVb8XEJi2YHh1JXm9nxcETHs", + "balance" : 19594200000 +}, +{ + "ETH_account" : "0xd8a42491ec140fe320cf8528ebf470bc9c16d567", + "name" : "mherosphtx", + "publicKey" : "SPH8FhEA1k2w1QskzCdkoonNjqbHG9mBXHJWjReF72gbQpMPFLSTt", + "balance" : 18320000000 +}, +{ + "ETH_account" : "0x8c541b72a2805a58a0da447a854660cc41a967bd", + "name" : "0x8c541b72a2805a58a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1104000000 +}, +{ + "ETH_account" : "0x76ce182bbad1975cf320c9ec5d046377de93da14", + "name" : "0x76ce182bbad1975cf3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 130000000 +}, +{ + "ETH_account" : "0x7035abec7190dd3c4db524798efd1827b875c1fb", + "name" : "0x7035abec7190dd3c4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2234000000 +}, +{ + "ETH_account" : "0xaa6da306a39ed2c768fbfa1580fdc0708d867267", + "name" : "0xaa6da306a39ed2c768", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 988000000 +}, +{ + "ETH_account" : "0xbed4a294ef33ca611e5a68f26dee89e193e6f1b4", + "name" : "0xbed4a294ef33ca611e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 494165776 +}, +{ + "ETH_account" : "0xc71ea11787f35d75b63b05c5b598b9a1005048df", + "name" : "0xc71ea11787f35d75b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x6fdd72d78d857c46ae5df9fb3ce22c6c4e33f4ce", + "name" : "0x6fdd72d78d857c46ae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1857000000 +}, +{ + "ETH_account" : "0x52cedf298b448281a5133ab6f4bfcaac5cda72d5", + "name" : "0x52cedf298b448281a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 271000000 +}, +{ + "ETH_account" : "0xcd943bfb2ea8b2dba81b0e89e2fc5496d8e08d3b", + "name" : "0xcd943bfb2ea8b2dba8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 131000000 +}, +{ + "ETH_account" : "0xe04606de07e1c273a218bb1b9ac71948b74f5fa6", + "name" : "0xe04606de07e1c273a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x01cac0da344ba1fec7a3fe454620410c1e39654f", + "name" : "0x01cac0da344ba1fec7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 70495748 +}, +{ + "ETH_account" : "0xac62754fed6ec8b8d275eba8b1d3fbf4fdfbceb6", + "name" : "0xac62754fed6ec8b8d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7013846194 +}, +{ + "ETH_account" : "0x0afd24a69b0d96513fdcb4631af6d7be482322a5", + "name" : "0x0afd24a69b0d96513f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1112560000 +}, +{ + "ETH_account" : "0xcf3ef76404ef9e7b33f9f7fc7d3711b1a86b4ebd", + "name" : "0xcf3ef76404ef9e7b33", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1111915956 +}, +{ + "ETH_account" : "0x70269588268feef6c11ede0807ef58d193d45a23", + "name" : "0x70269588268feef6c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 311000000 +}, +{ + "ETH_account" : "0x7384bbc7102471c8acccd23234760fb4e899931d", + "name" : "0x7384bbc7102471c8ac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11000000 +}, +{ + "ETH_account" : "0x621308012fbe08af2babb2e2c85aa224d2fca3e3", + "name" : "0x621308012fbe08af2b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 130697000 +}, +{ + "ETH_account" : "0x798dffbdfee1f6719c0cc747e3d34d3f445644e8", + "name" : "0x798dffbdfee1f6719c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x8a56b1c5d6d0129f8ef2e9b4571924dedb060a1c", + "name" : "0x8a56b1c5d6d0129f8e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0x212c6d18a67a6238f816bb818ab2632c738b170f", + "name" : "0x212c6d18a67a6238f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1050000000 +}, +{ + "ETH_account" : "0xc655ff39ac06ccd225df849519a7298b533d3cfa", + "name" : "0xc655ff39ac06ccd225", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 140304397 +}, +{ + "ETH_account" : "0x390af75cf97a78fd0f7a9a5a9c9efd967be4625d", + "name" : "0x390af75cf97a78fd0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 951310000 +}, +{ + "ETH_account" : "0xc8a872a3c72519abe9046efee7ef4dc881cb871b", + "name" : "0xc8a872a3c72519abe9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 995180000 +}, +{ + "ETH_account" : "0xaa9e27cb23231103ad94895a434d8840ef842f15", + "name" : "0xaa9e27cb23231103ad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1762000000 +}, +{ + "ETH_account" : "0x9773b3112fc0462f33b9506878ceeecd394c736b", + "name" : "0x9773b3112fc0462f33", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65550000 +}, +{ + "ETH_account" : "0x81cc23711cb60ac56be29d337a94a1d83af9e11f", + "name" : "0x81cc23711cb60ac56b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2150000000 +}, +{ + "ETH_account" : "0x67e5ab5b573f01030a1076dda7a79ef0f31a1bfa", + "name" : "0x67e5ab5b573f01030a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0xecd6fcaf779f798ca6f44d3785056b1668db7ae6", + "name" : "0xecd6fcaf779f798ca6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1989175695 +}, +{ + "ETH_account" : "0x577a32b59ebec824f2e0af4a9d18d6eb719597d2", + "name" : "0x577a32b59ebec824f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 112134300 +}, +{ + "ETH_account" : "0x310760a56f6fc890977c56036d0adbc74363f150", + "name" : "0x310760a56f6fc89097", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 381653450 +}, +{ + "ETH_account" : "0xa1c59a11bc980660ba84d5b7e9cb7a8674fbe3a1", + "name" : "0xa1c59a11bc980660ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 105000000 +}, +{ + "ETH_account" : "0xa2bb4abc946b25c8408d0a71ea6cc9194f691315", + "name" : "0xa2bb4abc946b25c840", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12124000000 +}, +{ + "ETH_account" : "0xf8002adaf5e5e4a915674f871f98e5c8b697cdb5", + "name" : "0xf8002adaf5e5e4a915", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14264700000 +}, +{ + "ETH_account" : "0xe668c9020db045da0cbd4de9581ca8d92713cc0d", + "name" : "avulic", + "publicKey" : "SPH62Cguge4f4GmDQ3in3cAVrNosS6bSeqCmQiTBKEaaVijvSrFDj", + "balance" : 61600870 +}, +{ + "ETH_account" : "0x93731b3c10122d1efefff61dbc3a998bca605857", + "name" : "0x93731b3c10122d1efe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 32367139299 +}, +{ + "ETH_account" : "0xd54faafbe111157eed25bb8b2ed1402a0f921210", + "name" : "0xd54faafbe111157eed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 92487813 +}, +{ + "ETH_account" : "0x8085ffd22ab55ddf208c44e3ae209465ffedb898", + "name" : "0x8085ffd22ab55ddf20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x48c7e3332f84f1df258c35306eb8070ce2642d5d", + "name" : "0x48c7e3332f84f1df25", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 109 +}, +{ + "ETH_account" : "0xa6c0e15b098ad676303b7921d5cda7ac2d435b02", + "name" : "0xa6c0e15b098ad67630", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 269461881 +}, +{ + "ETH_account" : "0x574b967eb9cab8996794293ddf35dcd9359f21ac", + "name" : "0x574b967eb9cab89967", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 326521000 +}, +{ + "ETH_account" : "0x998a135874cc7d635ebe2c2ab547645fd7849c0f", + "name" : "0x998a135874cc7d635e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23810000000 +}, +{ + "ETH_account" : "0x95a792157f24daaa0f8def40dcbfe73a8d10ee0f", + "name" : "0x95a792157f24daaa0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 953094248 +}, +{ + "ETH_account" : "0xeb90ae3980c6d4d82e1095b6c87ee519b3ae5c6e", + "name" : "0xeb90ae3980c6d4d82e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3799999979 +}, +{ + "ETH_account" : "0x262d0f94a2571708922285754c6c15015a2b4772", + "name" : "0x262d0f94a257170892", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 809000000 +}, +{ + "ETH_account" : "0xd3dcef1a211daf54a130445055ab082a26a39516", + "name" : "0xd3dcef1a211daf54a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1594094203 +}, +{ + "ETH_account" : "0x2ba77e411dc1cb5ff333944361b5673c22731e91", + "name" : "0x2ba77e411dc1cb5ff3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000571972 +}, +{ + "ETH_account" : "0x4ddf526d92f647b8866ec676bfa41d7f178bb2d8", + "name" : "0x4ddf526d92f647b886", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9776999932 +}, +{ + "ETH_account" : "0x2bbcb2f4d9ae509ba729080770d93285c9df927f", + "name" : "0x2bbcb2f4d9ae509ba7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14480000 +}, +{ + "ETH_account" : "0xba33f2fc4b60f261849b9ef370bccd9d9bcfa1e6", + "name" : "0xba33f2fc4b60f26184", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15918000 +}, +{ + "ETH_account" : "0xb3f1b9add8e11670777fec2f099b1725ce8b5a8a", + "name" : "0xb3f1b9add8e1167077", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1049000000 +}, +{ + "ETH_account" : "0x65dae2ed1f45c7f78873992ec22f9b5b70dffb37", + "name" : "0x65dae2ed1f45c7f788", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 48628303 +}, +{ + "ETH_account" : "0x6b7207963b64bb549f594990af0691f5b0f73d1c", + "name" : "0x6b7207963b64bb549f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 48610033666 +}, +{ + "ETH_account" : "0xf77a3caf658ce033f59de23ef36b7af56b022a08", + "name" : "0xf77a3caf658ce033f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 509473684 +}, +{ + "ETH_account" : "0x89015928ccec63127a81afd955e2a02c3eb9f9cf", + "name" : "0x89015928ccec63127a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0xa71e2669c07c97a9d3d55d2cf60544e7bf89156c", + "name" : "0xa71e2669c07c97a9d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0xd8c1c2fa423cbd94bbad49761214b20ded8fdbcb", + "name" : "0xd8c1c2fa423cbd94bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 519920910 +}, +{ + "ETH_account" : "0xbcdb3ae0a889f5ccbfc13873e19223a2d23b6224", + "name" : "ipresource", + "publicKey" : "SPH8R9V65YkFFr1jSsBuqaZWcyS3givXJXt5ZNqpERBfagowu1ETs", + "balance" : 8674516700 +}, +{ + "ETH_account" : "0x30b6fcd3a7b306a3d6468afcf10ce3fd8f5a7c55", + "name" : "0x30b6fcd3a7b306a3d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 302172 +}, +{ + "ETH_account" : "0x714694ca878ad2eeef282d8dfea4c86ca0a7bc88", + "name" : "0x714694ca878ad2eeef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8729625000 +}, +{ + "ETH_account" : "0xbaf943828f0b9d48ae1f446885715939b57b4002", + "name" : "0xbaf943828f0b9d48ae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 121256900 +}, +{ + "ETH_account" : "0x973ff2b0889d2390c6edba2e5c7918401075b855", + "name" : "0x973ff2b0889d2390c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 175276802 +}, +{ + "ETH_account" : "0x794870fbd4053f52ba1c222ed38dccad9f84fcb9", + "name" : "0x794870fbd4053f52ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 70000000 +}, +{ + "ETH_account" : "0xb738d3d16c24b1e630371cc31af8bf28624770e6", + "name" : "0xb738d3d16c24b1e630", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000582900 +}, +{ + "ETH_account" : "0x2c6b142d6342068fdcefa7485f4435ee1ac496c4", + "name" : "0x2c6b142d6342068fdc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2705544000 +}, +{ + "ETH_account" : "0xc8ce1ad0ddd42a5868ab21b462fda0d9c197a241", + "name" : "0xc8ce1ad0ddd42a5868", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 826 +}, +{ + "ETH_account" : "0x902b3017f61de1d9b7a0c1c4ba2e01e9db5764c9", + "name" : "0x902b3017f61de1d9b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6289139 +}, +{ + "ETH_account" : "0x7fa4f1cff18aea3cd43208efb8d6959cde8cb147", + "name" : "0x7fa4f1cff18aea3cd4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x52d8c2facbbd0a245f116b2fe96513cdb6a88272", + "name" : "0x52d8c2facbbd0a245f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1025899100 +}, +{ + "ETH_account" : "0x06ff16865af259f5c439715b48a1baafc812d1ad", + "name" : "0x06ff16865af259f5c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0xb6dcb317837d8e23bd249dc14b1718f391cfee92", + "name" : "0xb6dcb317837d8e23bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2135900000 +}, +{ + "ETH_account" : "0x40bad4e2031c8f77e72da60c4c84d934ccc5cbfd", + "name" : "0x40bad4e2031c8f77e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 31169000000 +}, +{ + "ETH_account" : "0xf2ea116ac319780a4d2189151d336e313cdf4ac7", + "name" : "0xf2ea116ac319780a4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x205288af0575689203ef0a08e19ac8b9bf9c6a3a", + "name" : "0x205288af0575689203", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 733280800 +}, +{ + "ETH_account" : "0x65cdf13a04cbed6666e7dd4afe5339de63ec1cc7", + "name" : "0x65cdf13a04cbed6666", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 83960600 +}, +{ + "ETH_account" : "0x0b4380345f87ce8f9451c1249d45e23da5f8475c", + "name" : "0x0b4380345f87ce8f94", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 527000000 +}, +{ + "ETH_account" : "0xbf1e2c54d9ceb6828a1a39584151b3032fe785ba", + "name" : "0xbf1e2c54d9ceb6828a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1217000000 +}, +{ + "ETH_account" : "0xd8b5a099b45ead2d0760c19f10be3c80cf46b15e", + "name" : "0xd8b5a099b45ead2d07", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 283000000 +}, +{ + "ETH_account" : "0x3f729b985995500f8545d023d9216690a2b684d5", + "name" : "0x3f729b985995500f85", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11151492800 +}, +{ + "ETH_account" : "0x4e673b48c2941c6bcf73c399e2b95915effa93e0", + "name" : "0x4e673b48c2941c6bcf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1103020000 +}, +{ + "ETH_account" : "0xfb4626ef1235d07605f4d849a27beb7329a5e37a", + "name" : "0xfb4626ef1235d07605", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xd20da4832a02f7f5ccc2cd7c8238b712823c42cd", + "name" : "0xd20da4832a02f7f5cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x535aa2267bc03a7b7bbae5fc4d8a3400999b642f", + "name" : "0x535aa2267bc03a7b7b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1222000000 +}, +{ + "ETH_account" : "0x87fd0dbc1c4c7c14ee2fe2cbef1a7c6e83baa9e9", + "name" : "0x87fd0dbc1c4c7c14ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200753400 +}, +{ + "ETH_account" : "0x7eeefeaff30aae33541a95db9f4305df47683bb5", + "name" : "0x7eeefeaff30aae3354", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2715000000 +}, +{ + "ETH_account" : "0x9fb842988624a1d948e479579ff35a536aaa293f", + "name" : "0x9fb842988624a1d948", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0xc7580b2cfa8dbd210f859c974a5b650af1ef76f5", + "name" : "0xc7580b2cfa8dbd210f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 480790000 +}, +{ + "ETH_account" : "0xce4335421c125f951c427529393a88e1cc02c6b3", + "name" : "0xce4335421c125f951c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 419000000 +}, +{ + "ETH_account" : "0xab3989358441cd7cb347b92967100653b620ec7f", + "name" : "0xab3989358441cd7cb3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 152000000 +}, +{ + "ETH_account" : "0x9a66fd7687885be0d322b27b9b0c4359143b912e", + "name" : "0x9a66fd7687885be0d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 319390000 +}, +{ + "ETH_account" : "0x4c3ebedae2cd99df2b9e8618067b48ef07a8a6d4", + "name" : "christian80", + "publicKey" : "SPH5mziztUYtgE4EiGR66D82xnKwajzrAWxUeVcXGuijmedJiHxBh", + "balance" : 238799000000 +}, +{ + "ETH_account" : "0xb6a40ec49e1b5f55a6d9d387dcd4b36443278dd1", + "name" : "pshelper", + "publicKey" : "SPH87BHGEfNKPmDuciSp4L7KUnX1HY5vk73apCV1yVJNxyj57BK4J", + "balance" : 27445000000 +}, +{ + "ETH_account" : "0xef767ac70fb0f1241e161eae68494690be720d20", + "name" : "0xef767ac70fb0f1241e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x6c40151cb8a5d53604cbe0c3f3fdba89b87e44a8", + "name" : "0x6c40151cb8a5d53604", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 223000000 +}, +{ + "ETH_account" : "0x7b10503be24fd233d69839a0bf5f9f390b33df09", + "name" : "0x7b10503be24fd233d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x3dd0eed3a004d04d28dce1bc79eaada3b38b1b34", + "name" : "0x3dd0eed3a004d04d28", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 525000000 +}, +{ + "ETH_account" : "0x2559fcfe7eb0a1227758fe46733b9045dd21a3bc", + "name" : "0x2559fcfe7eb0a12277", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2500811000 +}, +{ + "ETH_account" : "0x8b96a096f9d66cc209496d7aff71372d0ed12e09", + "name" : "0x8b96a096f9d66cc209", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 340000000 +}, +{ + "ETH_account" : "0x4fc1fc4fa961e4d8fbfba560cf13ca08a61d45bc", + "name" : "xants", + "publicKey" : "SPH6EMqrdsBtfH8GLoNhxkgvMsSZiwcz7H2hbfvSsrFKon9ZVbtNc", + "balance" : 365000000 +}, +{ + "ETH_account" : "0x8f72a6aa3eef0e5e021d92600f1a5e26bbb24cb5", + "name" : "0x8f72a6aa3eef0e5e02", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1623078687 +}, +{ + "ETH_account" : "0x4a6b73de7b3caf7c8d3e0946175c1c8c5d4439e9", + "name" : "0x4a6b73de7b3caf7c8d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 47040000 +}, +{ + "ETH_account" : "0x8d87793c61cdcd70b335f80e41c4ac237a71d650", + "name" : "0x8d87793c61cdcd70b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4779164710 +}, +{ + "ETH_account" : "0xb20268b54a31caf7173f1da3d0f1df46c848fbc1", + "name" : "0xb20268b54a31caf717", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4936684392 +}, +{ + "ETH_account" : "0x25b83d3c82c572224d6cba39b11b3e1ae880a1e0", + "name" : "0x25b83d3c82c572224d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 215826159 +}, +{ + "ETH_account" : "0xcd458180604719040cfbcbe5a7da3f52e054e8f8", + "name" : "0xcd458180604719040c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1100813368 +}, +{ + "ETH_account" : "0x4e078d6c5398d3c350108920290a40acadc3345d", + "name" : "0x4e078d6c5398d3c350", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 82040000 +}, +{ + "ETH_account" : "0x77c0c8983c78ada345cbc35919fcc169a7039156", + "name" : "0x77c0c8983c78ada345", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 564080000 +}, +{ + "ETH_account" : "0xc57d61f5aa11ae80354e4b17d79da3a5bc892eaa", + "name" : "0xc57d61f5aa11ae8035", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0xb2d25e55b6e0f19bf7a363a526ece4ec712ddeec", + "name" : "jannel", + "publicKey" : "SPH5ZNHCtNvgkQ5R5Lxx4yB5qtVVQcv3G3RVw2v4pBzitGhqtK7qL", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0x251780a2707b82e32e90724e74e1e9a597267a9e", + "name" : "0x251780a2707b82e32e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 533000000 +}, +{ + "ETH_account" : "0x487d4e6c25510bb4a4d1daf84ae6d8bbf05d55d1", + "name" : "0x487d4e6c25510bb4a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x3e63e05940ef32c3f17cee27ccfc09e7c265e906", + "name" : "0x3e63e05940ef32c3f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 205000000 +}, +{ + "ETH_account" : "0x8eef5715000ff606904e23d899eda212a8f1a241", + "name" : "0x8eef5715000ff60690", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 722000000 +}, +{ + "ETH_account" : "0x9a922e39629be9ba72b62bd9f60fc5418e819424", + "name" : "0x9a922e39629be9ba72", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000000 +}, +{ + "ETH_account" : "0xe9052d7d437802c7759a8842d9f1a5f09a5d3276", + "name" : "0xe9052d7d437802c775", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1030000000 +}, +{ + "ETH_account" : "0xb88a44147f4dfbf2495c8d9d84cd2cdfa6870167", + "name" : "0xb88a44147f4dfbf249", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 993040000 +}, +{ + "ETH_account" : "0x5c1566d4edf7b954885e1ecc732582c84e75269e", + "name" : "0x5c1566d4edf7b95488", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 130000000 +}, +{ + "ETH_account" : "0x6cb608d4190cd715998b6f2d19408bc50de017a6", + "name" : "0x6cb608d4190cd71599", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 229105562 +}, +{ + "ETH_account" : "0x658feff93d6f7477c900938bce85b5d206a565f0", + "name" : "0x658feff93d6f7477c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 118000000 +}, +{ + "ETH_account" : "0xc5e90ba2245745c0b7274b325cf9e13369908e6a", + "name" : "0xc5e90ba2245745c0b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 296600000 +}, +{ + "ETH_account" : "0xd981fdc3ebcac9e99366e674bef1e53a2d067c25", + "name" : "hassoplattner", + "publicKey" : "SPH745kCbXXGmPVFgjrdfPWEAzq3HJCqPA2px9Pqz1CzaER5Bxyua", + "balance" : 3504305000 +}, +{ + "ETH_account" : "0x4b954e05fb12064b9418d1dacf3d10b639c92713", + "name" : "0x4b954e05fb12064b94", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 612367743 +}, +{ + "ETH_account" : "0xb67d30d0f14b638a7d43f4b816cb253a18277da5", + "name" : "0xb67d30d0f14b638a7d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1650000000 +}, +{ + "ETH_account" : "0x0c71fbdb32ed2f1fe175eaac816e0f67500db65f", + "name" : "0x0c71fbdb32ed2f1fe1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 564325882 +}, +{ + "ETH_account" : "0x49ed2ccb30754c3dc414058bfe865c2a86f1a918", + "name" : "0x49ed2ccb30754c3dc4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1980280977 +}, +{ + "ETH_account" : "0x49f872e4f7fa90b4e229b1839fd722966c778278", + "name" : "0x49f872e4f7fa90b4e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 102000000 +}, +{ + "ETH_account" : "0x4da66042ad05ffdd45777f64a16430caf2f71659", + "name" : "0x4da66042ad05ffdd45", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1892042900 +}, +{ + "ETH_account" : "0xd5afee0a29f9b02be7b798a7905148047c61e0e9", + "name" : "0xd5afee0a29f9b02be7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 431000000 +}, +{ + "ETH_account" : "0xca944271b4d447b335edf18c10be652034dfdcea", + "name" : "0xca944271b4d447b335", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 91524248606 +}, +{ + "ETH_account" : "0x4098b86c8f067c68686cdb384add2a10ed50793b", + "name" : "0x4098b86c8f067c6868", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 679000000 +}, +{ + "ETH_account" : "0xb9a92396c1902155f352c6bbe7ec5259802dcc2c", + "name" : "0xb9a92396c1902155f3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2804766800 +}, +{ + "ETH_account" : "0x243f9ec6dd9b28691fb6c19d63c59de86e06c0e8", + "name" : "0x243f9ec6dd9b28691f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1347640826 +}, +{ + "ETH_account" : "0x164a5947572360198ffe71cbd646284039baf722", + "name" : "0x164a5947572360198f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5887900000 +}, +{ + "ETH_account" : "0x3a82476127c5b248874cf6a346caa2215ed0a7b1", + "name" : "0x3a82476127c5b24887", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 73008156600 +}, +{ + "ETH_account" : "0x5af98814587b6a1d19935db3efb6ddb56d287550", + "name" : "0x5af98814587b6a1d19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16000000000 +}, +{ + "ETH_account" : "0x758c684010e0db9fd7d14ccc0603ee7a1f385ba1", + "name" : "0x758c684010e0db9fd7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1268000000 +}, +{ + "ETH_account" : "0x15eece7c0c0befd8ad4aa6644397e146154fb675", + "name" : "0x15eece7c0c0befd8ad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9722006733 +}, +{ + "ETH_account" : "0xa037c269cade3969be4bc0a0bd3ada5515b6defb", + "name" : "0xa037c269cade3969be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4850000000 +}, +{ + "ETH_account" : "0xa6202f2dca538e95af7247f00307015ed6f578c9", + "name" : "0xa6202f2dca538e95af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 693000000 +}, +{ + "ETH_account" : "0x3d7b839da5ebca946ce608f380393c3c964c2de7", + "name" : "0x3d7b839da5ebca946c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 480000000 +}, +{ + "ETH_account" : "0xda95460b4252a35d4da2ffb142e4a30cbbeaf11d", + "name" : "0xda95460b4252a35d4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 927000000 +}, +{ + "ETH_account" : "0xb9454b092428d3f48f46793c833609b69e5bbf6a", + "name" : "0xb9454b092428d3f48f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 633327400 +}, +{ + "ETH_account" : "0xe693a40b460438d6e25240413b07f84b547f1594", + "name" : "0xe693a40b460438d6e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18884602791 +}, +{ + "ETH_account" : "0x940259b2e2164f4b57ac518d0ee8a03a29268b23", + "name" : "0x940259b2e2164f4b57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2225000000 +}, +{ + "ETH_account" : "0x8d9f1d07319cb59f70b7ac8832b4cc8988fe6e78", + "name" : "0x8d9f1d07319cb59f70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9041140000 +}, +{ + "ETH_account" : "0x7ddc5d00f811fee6d3515c30cf72d710998e9c3b", + "name" : "0x7ddc5d00f811fee6d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x2652bbbe6e8afbcd78fc9e88f73f847d48cdd864", + "name" : "markville", + "publicKey" : "SPH4teiuMj6qrxQ3itSNrkawvu2Rt25FEmwhG5WpSE2FhxjeGwvCn", + "balance" : 2375117400 +}, +{ + "ETH_account" : "0x00bb4be645b6ca9e51164dc9d5fc83edbe12c8fa", + "name" : "0x00bb4be645b6ca9e51", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 159487600 +}, +{ + "ETH_account" : "0xfdd12df90969e89d865bb53f1853641461d96b0d", + "name" : "0xfdd12df90969e89d86", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 822465514 +}, +{ + "ETH_account" : "0xc76d3a1214ceb26cbe8cc7523db14b9472c79268", + "name" : "0xc76d3a1214ceb26cbe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 189999958 +}, +{ + "ETH_account" : "0xc404d6a7c998d728df6e15050744cfa86b71f444", + "name" : "0xc404d6a7c998d728df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 206432848 +}, +{ + "ETH_account" : "0x75200a26d81d48b29db716ecfad1c8c9c58ebe04", + "name" : "0x75200a26d81d48b29d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 161000000 +}, +{ + "ETH_account" : "0xdbd04b2b11afb83793ee26d85f0b829c4a93bfbd", + "name" : "0xdbd04b2b11afb83793", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xa8247ddbdcbc3277da28e7fefcaa147da0d66242", + "name" : "0xa8247ddbdcbc3277da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 588000000 +}, +{ + "ETH_account" : "0x198be3087433ef793c6bb917eeb6a6e7eb3de74a", + "name" : "0x198be3087433ef793c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 102187861718 +}, +{ + "ETH_account" : "0x892fb8d7d825f49516ccc9e00152b2975d7ab8a5", + "name" : "coindersphtx", + "publicKey" : "SPH7rfL2VrfjwL7qVMaK52ch5ViZvMDs8Frs1zPEtGF9SnG1SBuPa", + "balance" : 20027113857 +}, +{ + "ETH_account" : "0x01bdf3bc2ee3b049fdf75fe62e6da5a8011d8853", + "name" : "0x01bdf3bc2ee3b049fd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2156863900 +}, +{ + "ETH_account" : "0xb2f9a9130d0930714c6df6e8793b8d2c774b74b3", + "name" : "0xb2f9a9130d0930714c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2916602019 +}, +{ + "ETH_account" : "0x345bf51d02ecde3277598f2a3c52b1a19c17f795", + "name" : "0x345bf51d02ecde3277", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 457000000 +}, +{ + "ETH_account" : "0x6f1410f8e64c9abe192e712f629fabcbb1bbd88e", + "name" : "guysophiatx", + "publicKey" : "SPH6tJQTPn5k4vjxa5HcsXrdWCY621r4Sbvr9C9bzTs1FmsW1XoVe", + "balance" : 43055029117 +}, +{ + "ETH_account" : "0xdaae59a74bfe61c0d64552368ae75a73eb3fdde5", + "name" : "0xdaae59a74bfe61c0d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 512000000 +}, +{ + "ETH_account" : "0x351b479ab992a653c422f4169cbb27536f6b8c1f", + "name" : "0x351b479ab992a653c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5955884509 +}, +{ + "ETH_account" : "0xf6e4c69eee79e59ed4bd9ec078ec0c2a92a6b6a5", + "name" : "0xf6e4c69eee79e59ed4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12895817958 +}, +{ + "ETH_account" : "0x158881082c2908694c2206de339bf51733ab4489", + "name" : "0x158881082c2908694c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1055232573 +}, +{ + "ETH_account" : "0x076878bfdc93f00dc889f0b1d3c278754603cf84", + "name" : "0x076878bfdc93f00dc8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90404332 +}, +{ + "ETH_account" : "0xd1b00529a3a8705f6646dbb09e0e1ce0ed1a0793", + "name" : "0xd1b00529a3a8705f66", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4999999648 +}, +{ + "ETH_account" : "0x18cb035dabbec94c78b9a0907a8ab74eae6e40ea", + "name" : "0x18cb035dabbec94c78", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 152426627 +}, +{ + "ETH_account" : "0xa3be538db11cc67295c77eed44379534cd15dd6f", + "name" : "0xa3be538db11cc67295", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1013206000 +}, +{ + "ETH_account" : "0x1110580a1f65726facd9d42c574192925e6a8303", + "name" : "0x1110580a1f65726fac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1061813936 +}, +{ + "ETH_account" : "0x6fa688d732b26b3adf67e7bcc189c27ba5f7d93c", + "name" : "0x6fa688d732b26b3adf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3530000000 +}, +{ + "ETH_account" : "0xf946249e1e08948b62908267042c9379d771ae76", + "name" : "0xf946249e1e08948b62", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3971771271 +}, +{ + "ETH_account" : "0x1c44c8a0ab88710065f96b5f7dfbe5544380d1c4", + "name" : "0x1c44c8a0ab88710065", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450000000 +}, +{ + "ETH_account" : "0xfc5063d7fbeea82124563015ea4092b72974e87f", + "name" : "0xfc5063d7fbeea82124", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1024223500 +}, +{ + "ETH_account" : "0x16681b0494813fd955d872632dce6615fcfdf81c", + "name" : "0x16681b0494813fd955", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 41213172000 +}, +{ + "ETH_account" : "0x926476ddd265f9e7e11abf168885c79978e5b41d", + "name" : "john", + "publicKey" : "SPH6znqHJdZ1aBCUnzXCAC1LcjxANJEr7X2CpYEUUYJxAwCj961LJ", + "balance" : 250000000100 +}, +{ + "ETH_account" : "0x22d1cc57d3f68a58f8bd4b1df91021d4a4c8c90f", + "name" : "0x22d1cc57d3f68a58f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 458000000 +}, +{ + "ETH_account" : "0x9a3d6c6136c0572613f0707978183ebec2918943", + "name" : "0x9a3d6c6136c0572613", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 322 +}, +{ + "ETH_account" : "0xb4b4d65a40181b7549d790fd9d611ce1e3299126", + "name" : "0xb4b4d65a40181b7549", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4903000 +}, +{ + "ETH_account" : "0x4efa1e33740da618193cee4a36a1282b5ba6eebd", + "name" : "0x4efa1e33740da61819", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 137599400 +}, +{ + "ETH_account" : "0x95ad4b51db765bad49de8ba9992fbea32984eb4c", + "name" : "0x95ad4b51db765bad49", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 964165830 +}, +{ + "ETH_account" : "0x610e628797271239225d5c168b6334bbc515008e", + "name" : "0x610e62879727123922", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12100000000 +}, +{ + "ETH_account" : "0xe7d4118487c443c515ffc8d0e229f00f33c51923", + "name" : "bcurr", + "publicKey" : "SPH5YfcbSpw5RwDLH1RDZYPWhwBwyUwTce5Vg3geGhsPdwsKnAJ22", + "balance" : 1020000000 +}, +{ + "ETH_account" : "0x47fd50ed387b2eb898040c4b0ee893000a3baf64", + "name" : "0x47fd50ed387b2eb898", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2985888100 +}, +{ + "ETH_account" : "0xed20965b111f78b25e076dd91f4151a34a98bfcb", + "name" : "0xed20965b111f78b25e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 398000000 +}, +{ + "ETH_account" : "0x756fed5a0af14cb99bc951d26d220962b20c2d85", + "name" : "0x756fed5a0af14cb99b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 139000000 +}, +{ + "ETH_account" : "0xfe6b7633a0d17a6b30cf61919ee0fee18fa559cf", + "name" : "0xfe6b7633a0d17a6b30", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8096791000 +}, +{ + "ETH_account" : "0x91f5ce77fb9333aef2fe3f88d2c2292a42d2e1f7", + "name" : "0x91f5ce77fb9333aef2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x71c77f951de7f4d85c1132e9139354e79bcc1de5", + "name" : "0x71c77f951de7f4d85c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 641000 +}, +{ + "ETH_account" : "0x78dbb6784c7b34efa2e106f691062f7e188cdf81", + "name" : "0x78dbb6784c7b34efa2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66670000 +}, +{ + "ETH_account" : "0x28aa26ac810cdef35782f6dab572c6cda67b2df5", + "name" : "0x28aa26ac810cdef357", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 849999907 +}, +{ + "ETH_account" : "0x05d9022ea178f6d3a355069a4cf1bcc79a14e18c", + "name" : "sawytoshi", + "publicKey" : "SPH5KF4vjJbi9Adw262ZJSpgxSj5tXKERvbzYYbezCtJdN8nMgHit", + "balance" : 53377299000 +}, +{ + "ETH_account" : "0x79290f008965f7b37e3e90ced456f16878d8cc8a", + "name" : "0x79290f008965f7b37e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 94752000 +}, +{ + "ETH_account" : "0x63e2f55077f0ab4cd5ac312be4dafaff262a05e8", + "name" : "0x63e2f55077f0ab4cd5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5992000000 +}, +{ + "ETH_account" : "0x9f1b93a93e821bc41ac3d127b3406234aab1a024", + "name" : "0x9f1b93a93e821bc41a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3437982821 +}, +{ + "ETH_account" : "0x0660832ac2a4ee311461a25b39e77957e3464b53", + "name" : "0x0660832ac2a4ee3114", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 379000000 +}, +{ + "ETH_account" : "0x7b7ddab2d6fa3b8d6cef6cd050d56c57643017e4", + "name" : "0x7b7ddab2d6fa3b8d6c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1550000000 +}, +{ + "ETH_account" : "0xf0ebfe83d7d7369d625feb97720c0496b2e78667", + "name" : "0xf0ebfe83d7d7369d62", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 518919908 +}, +{ + "ETH_account" : "0x8ed9bd81514b50d6fda9e64e5cf6f53b5b17d0b6", + "name" : "0x8ed9bd81514b50d6fd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0x8fb3a2938bd72f356ed6567e0d1f3239cdd873de", + "name" : "0x8fb3a2938bd72f356e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 867000000 +}, +{ + "ETH_account" : "0x4641771b545c7c8e69488628671dcc3d0cb895b4", + "name" : "0x4641771b545c7c8e69", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6351550229 +}, +{ + "ETH_account" : "0x63ea9ed78f2d2687f1bbc1e6a681c889747569c3", + "name" : "0x63ea9ed78f2d2687f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 858000000 +}, +{ + "ETH_account" : "0xecb0e31cb5ac40bf0fd97c3e1d581e2dd6de5c99", + "name" : "0xecb0e31cb5ac40bf0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 708646569 +}, +{ + "ETH_account" : "0xe9fcdec18cb87d902f620ee750df8c80fc5469e3", + "name" : "0xe9fcdec18cb87d902f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 177234347600 +}, +{ + "ETH_account" : "0x007e1ad87564fa8d5bef35272b0c1cb00902f3d2", + "name" : "0x007e1ad87564fa8d5b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1272950000 +}, +{ + "ETH_account" : "0xa7ce3afb4ca212c93d2b11f085e88d529bdd98c9", + "name" : "0xa7ce3afb4ca212c93d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 675000000 +}, +{ + "ETH_account" : "0x71a38e2840fd92b5f87edabf901956c789711e30", + "name" : "sofalikescakes", + "publicKey" : "SPH4vU1UBg9jngZmQBgZSNudJaEpA3653x3dF3zHw2SNjnBT8djoJ", + "balance" : 268132056 +}, +{ + "ETH_account" : "0x62b92bcb60c23fee203dd7730c978c7630df7ac4", + "name" : "0x62b92bcb60c23fee20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 333000000 +}, +{ + "ETH_account" : "0xdf21da57777401824c268bc10b41841ad377f02d", + "name" : "0xdf21da57777401824c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 273090617 +}, +{ + "ETH_account" : "0xcc2b429cbe521635648b73a61075d0215d12c364", + "name" : "0xcc2b429cbe52163564", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 115408160 +}, +{ + "ETH_account" : "0xac6bf30bb3ecf8c6de80f516c8070a55250614ba", + "name" : "0xac6bf30bb3ecf8c6de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6060000000 +}, +{ + "ETH_account" : "0xfe9418e31a8e6a6a002dff9066f715827123b7fe", + "name" : "0xfe9418e31a8e6a6a00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8437500000 +}, +{ + "ETH_account" : "0x8b749e46e043a74a1e9a38425d351b59a907a903", + "name" : "0x8b749e46e043a74a1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 17064911386 +}, +{ + "ETH_account" : "0x6417d108b89725209cb002b76f5dab0f2538f1e1", + "name" : "0x6417d108b89725209c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 203119800 +}, +{ + "ETH_account" : "0x38334d8f752fc590499ff800083d53f20d83d866", + "name" : "0x38334d8f752fc59049", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2871266671 +}, +{ + "ETH_account" : "0x6bec57ba680aa1607a2a09f1d36d3758c8432aa4", + "name" : "0x6bec57ba680aa1607a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24726000000 +}, +{ + "ETH_account" : "0x307247623a7cd57583e02686f0990b0ffdcf60ba", + "name" : "0x307247623a7cd57583", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x2c35197bac68059e35986cd22517bcac9196a8db", + "name" : "0x2c35197bac68059e35", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13752000 +}, +{ + "ETH_account" : "0xa53e96aab610264891f7132aac720f0530473757", + "name" : "0xa53e96aab610264891", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 818000000 +}, +{ + "ETH_account" : "0xeb638a276de9cd0011c9779e53097e7a50c80144", + "name" : "0xeb638a276de9cd0011", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1370000000 +}, +{ + "ETH_account" : "0xa33bb416c189bd3b81ba7c5c8236d59ff198926e", + "name" : "0xa33bb416c189bd3b81", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 160000000 +}, +{ + "ETH_account" : "0x866cc680e83138e3749e58589d2f8daa0b97538f", + "name" : "0x866cc680e83138e374", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500341000 +}, +{ + "ETH_account" : "0xcb42c821f79a6a941b540778f1d5ca3a752dd782", + "name" : "0xcb42c821f79a6a941b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x6dc2daf6622947c0185a7a02e02a363a785f7638", + "name" : "0x6dc2daf6622947c018", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3667200000 +}, +{ + "ETH_account" : "0x4ccfa2364da1e8b147f42574f65b7d2aa61d48e5", + "name" : "0x4ccfa2364da1e8b147", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4110319000 +}, +{ + "ETH_account" : "0x83554e3dc4479cfe6bb7607a63eb4e3a3320b92c", + "name" : "0x83554e3dc4479cfe6b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 705552 +}, +{ + "ETH_account" : "0xb7bba4d115ffe4974b0a48a7b95a9fb9175b2d22", + "name" : "0xb7bba4d115ffe4974b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10468083847 +}, +{ + "ETH_account" : "0x6c3051f707b8779ac0603c8211c353cda0494221", + "name" : "0x6c3051f707b8779ac0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1845902631 +}, +{ + "ETH_account" : "0x797faa13c4782ca4e27a6c16f637ea074ea5d657", + "name" : "0x797faa13c4782ca4e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10937257574 +}, +{ + "ETH_account" : "0xcc5852c9193396f04ff0494b698b6421dd3e2f3a", + "name" : "0xcc5852c9193396f04f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 185000000 +}, +{ + "ETH_account" : "0x93d63b0455b5e5ac2ccf6b4fe89171e1cacbf276", + "name" : "0x93d63b0455b5e5ac2c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 36172000 +}, +{ + "ETH_account" : "0x19b8f7bec4387146c2862e3cc86b435fbb03eea9", + "name" : "0x19b8f7bec4387146c2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0x5621983a99db1fb86d3a7776ee79b48a22aa56c3", + "name" : "0x5621983a99db1fb86d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3341280576 +}, +{ + "ETH_account" : "0x0d2c14627427f13c68e685fcef6c7c1793dbd31a", + "name" : "0x0d2c14627427f13c68", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 807546894 +}, +{ + "ETH_account" : "0x50315eff895c2ff973e1de8711164c23e8eab729", + "name" : "0x50315eff895c2ff973", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 807546894 +}, +{ + "ETH_account" : "0x46234ea445427adf3b4542f870faf56907b4af33", + "name" : "0x46234ea445427adf3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1400000000 +}, +{ + "ETH_account" : "0x1536c03f8028f39a00fdf0223ac27cf482e773b9", + "name" : "0x1536c03f8028f39a00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 57000000 +}, +{ + "ETH_account" : "0x3ec3c66cfd4d6ffc82f3d671d978df69d985c409", + "name" : "0x3ec3c66cfd4d6ffc82", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 27545663 +}, +{ + "ETH_account" : "0xbb78b270954d5620a30264cbe55b17c0410237b5", + "name" : "0xbb78b270954d5620a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 62148754 +}, +{ + "ETH_account" : "0xc5f004fcc7bab3605bc7c842bc1e3c0a1b1c4df7", + "name" : "0xc5f004fcc7bab3605b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 101000000 +}, +{ + "ETH_account" : "0xcfa9ff6cc5406e94b3cd4d7f50b9d42c0f917baf", + "name" : "0xcfa9ff6cc5406e94b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 663000000 +}, +{ + "ETH_account" : "0x897ac47ee27b7ddc71639ca4e571babae96116a7", + "name" : "0x897ac47ee27b7ddc71", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 350000000 +}, +{ + "ETH_account" : "0x4bf73bbf1f67ca953b1b794d0718c573af41af51", + "name" : "0x4bf73bbf1f67ca953b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1461119624 +}, +{ + "ETH_account" : "0x61f9a36e50debce793bf7d690229f3cd8de1f743", + "name" : "0x61f9a36e50debce793", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11361663599 +}, +{ + "ETH_account" : "0xd61a7322237b3541274a1d6de864b6df16b84b58", + "name" : "0xd61a7322237b354127", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22378510227 +}, +{ + "ETH_account" : "0x6f944bce6175dd28453ecd552d4db7bc084447af", + "name" : "0x6f944bce6175dd2845", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1158778489 +}, +{ + "ETH_account" : "0x2c466df3e81d849365dd5a62b32a966a8f6daf29", + "name" : "0x2c466df3e81d849365", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 790000000 +}, +{ + "ETH_account" : "0xb8849244c837dc9b6bde250f48a8d69442f37456", + "name" : "tomuraushi", + "publicKey" : "SPH5VCcKe9eDXZvNZ1gWu4YsXgwEEXndiX5ZRivmASY8bNr3BJFEJ", + "balance" : 465493896 +}, +{ + "ETH_account" : "0xf69ae9158320642cfbcceaa3ec71941baee67190", + "name" : "masayuki01", + "publicKey" : "SPH7f5p9NJ39UMSggrxSS7TF6rTnkPrwWfuDyStsWHwgK1YiaCaXH", + "balance" : 790000000 +}, +{ + "ETH_account" : "0xacd02f1ac51a8463fffb1afcbcdd678fa445b0c2", + "name" : "0xacd02f1ac51a8463ff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xd10d5dfd0adfcec3a1460a48e0db7bb7e0deaba5", + "name" : "0xd10d5dfd0adfcec3a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 585550000 +}, +{ + "ETH_account" : "0xafa51813ba1f8f561b063e20509d5fb0ee6c002c", + "name" : "0xafa51813ba1f8f561b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1282888796 +}, +{ + "ETH_account" : "0x542f9a56345aef94a0658b2d235fbc737c944622", + "name" : "0x542f9a56345aef94a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0xe1be43034ec47393fa9fae16acb588175d93208b", + "name" : "0xe1be43034ec47393fa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6687999752 +}, +{ + "ETH_account" : "0xc937e8801cb5e84cbb0738152af7a3a67d06ee48", + "name" : "0xc937e8801cb5e84cbb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1892000000 +}, +{ + "ETH_account" : "0xc307016ee91393c8df0188d1cad0aaa6642b901a", + "name" : "0xc307016ee91393c8df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1150000000 +}, +{ + "ETH_account" : "0x17ae277d88e6500a69b56cbdd5fcd21913267ffe", + "name" : "0x17ae277d88e6500a69", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 694230700 +}, +{ + "ETH_account" : "0xcaed47a642927ef4405544b95afba9dcf3cee355", + "name" : "0xcaed47a642927ef440", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1041822771 +}, +{ + "ETH_account" : "0xd852d37d493d9767409e9a8d5ad018755be887f2", + "name" : "0xd852d37d493d976740", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000 +}, +{ + "ETH_account" : "0x03a2bf3162b1b73cb572f861c4de82fe6e21e177", + "name" : "rjenwinnysphtx", + "publicKey" : "SPH7h3fcQ7dVY72SSgRyxSMSHHxF4XUDKmVxJzNaXzRGPo3uVN4Gm", + "balance" : 1273980452 +}, +{ + "ETH_account" : "0xec97a5cfb4055e4f66c74403695d0b47598bf422", + "name" : "0xec97a5cfb4055e4f66", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 147143468 +}, +{ + "ETH_account" : "0xe9c8c2c8b8142c91a849fad0061b71ed6622c7e0", + "name" : "bemarketexplorer", + "publicKey" : "SPH6KLfmfH1vYpuTd2qt1j1n3CcJDeoCWzjknFTcUCTJf8J3rR46j", + "balance" : 779937752 +}, +{ + "ETH_account" : "0x1f1289b21cec879f89529cd979afc75f67153971", + "name" : "0x1f1289b21cec879f89", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 103000000 +}, +{ + "ETH_account" : "0x1f1b5a09da322f42eb25b896be76fa87086d1c24", + "name" : "0x1f1b5a09da322f42eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 270000000 +}, +{ + "ETH_account" : "0x9a6b303b0e77edd43130010e5d2e107f468a0ff8", + "name" : "0x9a6b303b0e77edd431", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0x2b41bc8cfe4f41c7a87df3b66dbc0ec79c3f8f68", + "name" : "0x2b41bc8cfe4f41c7a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3991269776 +}, +{ + "ETH_account" : "0xb49511f372f8f76307fba171f4fa4e2cadb8b8e2", + "name" : "0xb49511f372f8f76307", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 813827160 +}, +{ + "ETH_account" : "0x749b5d65a05830a769c86f6a71ad93745c8f1370", + "name" : "0x749b5d65a05830a769", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 741598000 +}, +{ + "ETH_account" : "0xb10fe168026bce9b0b9f9e9a5b0d40d2983e7a79", + "name" : "0xb10fe168026bce9b0b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1560000000 +}, +{ + "ETH_account" : "0x81c5071ebfa3b7fb8c70cb1175191a6228973cf5", + "name" : "0x81c5071ebfa3b7fb8c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2542982700 +}, +{ + "ETH_account" : "0xc6a8c383f7fd63360412a82767fd320a6f0c3cc0", + "name" : "0xc6a8c383f7fd633604", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40911000000 +}, +{ + "ETH_account" : "0x1764d4baba6adf279e89386fa587b4f684cf5453", + "name" : "0x1764d4baba6adf279e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x48e3d72961360c382548d42bb4dda346386bf01c", + "name" : "0x48e3d72961360c3825", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15200000000 +}, +{ + "ETH_account" : "0xf57a18b84d817137fc4c71fb26d0d31fc0ed8b0c", + "name" : "0xf57a18b84d817137fc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0xf461994fb381b4085046795e4e3070ec3851c3c6", + "name" : "0xf461994fb381b40850", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3 +}, +{ + "ETH_account" : "0x58c83cb4e8ef876192daeed57ae0df8ab3e24f39", + "name" : "0x58c83cb4e8ef876192", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000000 +}, +{ + "ETH_account" : "0x50321aeed32977f7dbad657958344c8acc59a2c6", + "name" : "0x50321aeed32977f7db", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 114000000 +}, +{ + "ETH_account" : "0x3db1dc1c01183fa867d828c6fa83eb9678d704bd", + "name" : "0x3db1dc1c01183fa867", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000000000 +}, +{ + "ETH_account" : "0xb51ff9df7978c0c255eaec0e000927a15460f9ef", + "name" : "0xb51ff9df7978c0c255", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40000000 +}, +{ + "ETH_account" : "0x42a0ad474e8379c50395680353fcd6610a0c5ba6", + "name" : "0x42a0ad474e8379c503", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 222000000 +}, +{ + "ETH_account" : "0x0bd3e10baeba72cc0fabfd01550c64bf50f5fee9", + "name" : "0x0bd3e10baeba72cc0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 475000000 +}, +{ + "ETH_account" : "0x811e4e97f0b5353f9273bb11593598a17aae0bc0", + "name" : "0x811e4e97f0b5353f92", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 290000000 +}, +{ + "ETH_account" : "0x7c93751c07c2c3eb3a0b8cca3ec90ebffb517bcb", + "name" : "0x7c93751c07c2c3eb3a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3476000000 +}, +{ + "ETH_account" : "0x02e8bfc33710b0f1ec46c203193b135bf9a2cc8f", + "name" : "0x02e8bfc33710b0f1ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 120000000 +}, +{ + "ETH_account" : "0xc0630e0a6a61fc0d57c034a85cf9394d4713c485", + "name" : "0xc0630e0a6a61fc0d57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 115000000 +}, +{ + "ETH_account" : "0x540cf67a8132b72c784d05da9e6470a9f9e8cd75", + "name" : "0x540cf67a8132b72c78", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 125000000 +}, +{ + "ETH_account" : "0x1e25eff55eb5668afbab75e4033bf503a71221d7", + "name" : "tomorrowland2018", + "publicKey" : "SPH65QqTQJxKLEeVr7H3JGWSsjBkMd8gvexJpmFqbrXdtkBWUpT9s", + "balance" : 505000000 +}, +{ + "ETH_account" : "0x1f265ad24067dedcb3f197ad6e07d7fdae3e7d33", + "name" : "0x1f265ad24067dedcb3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4356345100 +}, +{ + "ETH_account" : "0x80a1e40970b4fb9388558ca4fae0604810e604da", + "name" : "0x80a1e40970b4fb9388", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 955700 +}, +{ + "ETH_account" : "0xd29b7b37ed324c33dd26dcf7ee4ed9f921afba9a", + "name" : "0xd29b7b37ed324c33dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 490000000 +}, +{ + "ETH_account" : "0x455a830e813d8562c07cb662d96ead4b861841d7", + "name" : "0x455a830e813d8562c0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1855000000 +}, +{ + "ETH_account" : "0xd61b16713ba834d2bab3f790fbc7c40b8e265043", + "name" : "0xd61b16713ba834d2ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 262000000 +}, +{ + "ETH_account" : "0xe71ecce418c26aab6b41541d617fa3f890e1bb1f", + "name" : "0xe71ecce418c26aab6b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 858625907 +}, +{ + "ETH_account" : "0x52905d9e06d2b6fafd31da6840fd2035da06aa12", + "name" : "0x52905d9e06d2b6fafd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5994588587 +}, +{ + "ETH_account" : "0x3e7437fa7a54a46287bb188d563142d2e83f240b", + "name" : "samirsophiatx", + "publicKey" : "SPH7fMwD3efD9usvL7irBKWafAYwezLT2Gsumd33Djh75duPz9z9R", + "balance" : 22002909400 +}, +{ + "ETH_account" : "0x5dc3eb2d7345da1ac372674b4e6aeb5c685787df", + "name" : "0x5dc3eb2d7345da1ac3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 225000000 +}, +{ + "ETH_account" : "0x8fa21b537f2c00d24feab0896c5e813cd97ebda2", + "name" : "mvmanuelmv", + "publicKey" : "SPH6k82CbCGCitfnJ8xtU2rrNnhMZEJwyMMMWneYfjEWcYwo1HfVF", + "balance" : 737306000 +}, +{ + "ETH_account" : "0x3e3a5dd49bf06d34957a1f82d7e2c515e5ca0126", + "name" : "0x3e3a5dd49bf06d3495", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 580000000 +}, +{ + "ETH_account" : "0x62d35db7601596bef81b7a8870822689a4b9d744", + "name" : "0x62d35db7601596bef8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1429000000 +}, +{ + "ETH_account" : "0x9386034edc333d3f6e906c4e4d42683ec231ea2b", + "name" : "0x9386034edc333d3f6e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 58137284 +}, +{ + "ETH_account" : "0x854a348d0962ced9052b82868cac693dcc140b49", + "name" : "0x854a348d0962ced905", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 294000000 +}, +{ + "ETH_account" : "0x1ba8aee33cfa07c70b22a730ed144d622c7f7bc5", + "name" : "0x1ba8aee33cfa07c70b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14361117 +}, +{ + "ETH_account" : "0x6e5a86f754001a19712527ee8f2a40e5d5b10cdc", + "name" : "0x6e5a86f754001a1971", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xfc601d47f43b96c36a6575eef8c1967dbd585ce2", + "name" : "0xfc601d47f43b96c36a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 151623196 +}, +{ + "ETH_account" : "0x1e390354902b881d922fcfecfbc55da000308d18", + "name" : "0x1e390354902b881d92", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4900000000 +}, +{ + "ETH_account" : "0xb98299a0e03fdada8d5b67c4f9e3a3fb6de2cd9a", + "name" : "0xb98299a0e03fdada8d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 790000000 +}, +{ + "ETH_account" : "0x9b4ef162cd1c05b25b8903ed2eb9f67f24df9581", + "name" : "0x9b4ef162cd1c05b25b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7431521959 +}, +{ + "ETH_account" : "0xfdb8dfde77cfc6a39c91371d7c74ab47f464cb90", + "name" : "0xfdb8dfde77cfc6a39c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7857000 +}, +{ + "ETH_account" : "0xcb75c0c4734290ded7deb3d620dda77c13b74a0e", + "name" : "0xcb75c0c4734290ded7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 807500000 +}, +{ + "ETH_account" : "0xf9eebda813d582ac59c1f7fbb594dcb5bdb608c3", + "name" : "0xf9eebda813d582ac59", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 445000000 +}, +{ + "ETH_account" : "0x1b93b320e26b36672562bb93207fc05d40841259", + "name" : "0x1b93b320e26b366725", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2068000000 +}, +{ + "ETH_account" : "0xe212bf3452c3ed22ec5b00842cf8855d66a4385f", + "name" : "0xe212bf3452c3ed22ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1185000000 +}, +{ + "ETH_account" : "0x27e0eaa25675ee56c0ef0c61d639f96bbfd2147e", + "name" : "0x27e0eaa25675ee56c0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4086000000 +}, +{ + "ETH_account" : "0x56935c8b615db449de140e70d17f3f8689ca778c", + "name" : "0x56935c8b615db449de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1292000000 +}, +{ + "ETH_account" : "0x69ee35cf84f97246c2055ff78cfe8226605b1378", + "name" : "0x69ee35cf84f97246c2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 733000000 +}, +{ + "ETH_account" : "0x2e5adf0b313def52120797fc32623be9828b8c8d", + "name" : "0x2e5adf0b313def5212", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 562948800 +}, +{ + "ETH_account" : "0xd60cecc34f83f95d3b0943eff72d0d2d92922826", + "name" : "jasphtx", + "publicKey" : "SPH7oKZRfRqntZMS6uhgwcLKgmkw7a9ipjbyimmJ9hSoD3YqsbdXZ", + "balance" : 2945000000 +}, +{ + "ETH_account" : "0xe304a36f078d7a4b30995f546897f08f2e1d61eb", + "name" : "0xe304a36f078d7a4b30", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 103000000 +}, +{ + "ETH_account" : "0xb5a20f9d8dd9543ba061fa64eab5e1268b04b2f0", + "name" : "0xb5a20f9d8dd9543ba0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2904588400 +}, +{ + "ETH_account" : "0x5ccf4862d4319265776578110dfcc96743e977f5", + "name" : "0x5ccf4862d431926577", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3574034368 +}, +{ + "ETH_account" : "0x68094ebd2f3071dd4c75e150d9503646aaa27fc9", + "name" : "0x68094ebd2f3071dd4c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 974677200 +}, +{ + "ETH_account" : "0x22c4dcd77b3a537f8416c6fbcc9ec06028319804", + "name" : "0x22c4dcd77b3a537f84", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 127000000 +}, +{ + "ETH_account" : "0x6bca100cc89028f9296c786fe6a218322fd0a1b1", + "name" : "0x6bca100cc89028f929", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1730000000 +}, +{ + "ETH_account" : "0xe05d8c16309ecc2448748d28df17aba0371a2416", + "name" : "0xe05d8c16309ecc2448", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 49020000000 +}, +{ + "ETH_account" : "0xe686bdece272deba6ed2066210b200d35de9fa0d", + "name" : "0xe686bdece272deba6e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9979000000 +}, +{ + "ETH_account" : "0x332e3b5a256223ab9b422fb59e17ac4bb4a92a89", + "name" : "0x332e3b5a256223ab9b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3125352000 +}, +{ + "ETH_account" : "0x56a6cd55ff1f894d1c2d229e67afe3a8eaf3337c", + "name" : "0x56a6cd55ff1f894d1c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2287191100 +}, +{ + "ETH_account" : "0x6fd456c920742fdc9f6408c9785e4d4a904a6427", + "name" : "jjo", + "publicKey" : "SPH5fFZd9tzawW9JKzxz8HLxYRK93srCT1DGxvj8jnQdA5Y6QpRqb", + "balance" : 7242500000 +}, +{ + "ETH_account" : "0xe78de40a5113f5961253d6419885746e58b904ca", + "name" : "0xe78de40a5113f59612", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 648443700 +}, +{ + "ETH_account" : "0x1fe8d26183c4908ba38c8b157b6d16720a997880", + "name" : "0x1fe8d26183c4908ba3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 128614028 +}, +{ + "ETH_account" : "0x4c0d976725e29522bfd6b662ea442e7a6f5e3d71", + "name" : "0x4c0d976725e29522bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90112 +}, +{ + "ETH_account" : "0x1f71f638749a3b92d14ad04c22649057c25f486c", + "name" : "0x1f71f638749a3b92d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 143000000 +}, +{ + "ETH_account" : "0x9b58e839fef888a819ab7c1a9e081c2410c3c7ba", + "name" : "0x9b58e839fef888a819", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 48500000000 +}, +{ + "ETH_account" : "0xf708dfc2714f28aff2ba6962707e89c97ee5c4be", + "name" : "0xf708dfc2714f28aff2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 166873213 +}, +{ + "ETH_account" : "0x2b9453a5d3ac5d42c13c029e068353e3217b535c", + "name" : "0x2b9453a5d3ac5d42c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2803000000 +}, +{ + "ETH_account" : "0xda2cf91efb444b7b64af8b3cf260f6d191b9aa49", + "name" : "0xda2cf91efb444b7b64", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 508000000 +}, +{ + "ETH_account" : "0x7b957d796ab6e90a90df9fe17b48da4147ae13ed", + "name" : "0x7b957d796ab6e90a90", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 114629471700 +}, +{ + "ETH_account" : "0x5c0e8925c9a51abb69b88313199ef6122763fcea", + "name" : "0x5c0e8925c9a51abb69", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 625000000 +}, +{ + "ETH_account" : "0xf04053b23a8a665e192eeac3d122b528e5cac114", + "name" : "0xf04053b23a8a665e19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x09dd534253298973140aa957a92bb0e8d4a66be7", + "name" : "0x09dd53425329897314", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 906509600 +}, +{ + "ETH_account" : "0x7de5c95db047e6d16962cf0a7f4244759f2dc427", + "name" : "0x7de5c95db047e6d169", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 269207619 +}, +{ + "ETH_account" : "0x3dc673a74e67b4d8accdb1510b9e268c6456f7c0", + "name" : "0x3dc673a74e67b4d8ac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1072488300 +}, +{ + "ETH_account" : "0x27cce30e27d06f1655227047357b596211b9dfae", + "name" : "0x27cce30e27d06f1655", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1424674000 +}, +{ + "ETH_account" : "0x14ebe8a6b8f5b18b291287886311ab8658e98db6", + "name" : "0x14ebe8a6b8f5b18b29", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3870000000 +}, +{ + "ETH_account" : "0x0d1a97807c3647b7684fdf7cdceb8790d9d07acc", + "name" : "0x0d1a97807c3647b768", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 628000000 +}, +{ + "ETH_account" : "0xe4eac50298678f211d762bdbd88ac71cc1ddc90a", + "name" : "0xe4eac50298678f211d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60289000000 +}, +{ + "ETH_account" : "0x04c494e47c72b1e59ff8d99a53e83f39990658bf", + "name" : "0x04c494e47c72b1e59f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 225000000 +}, +{ + "ETH_account" : "0xf773c6db4799ff79c9a1b23d9d36e735309cbc61", + "name" : "0xf773c6db4799ff79c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 225000000 +}, +{ + "ETH_account" : "0x0fb5b612a0b3b9111efdb36881881fd9273d2378", + "name" : "0x0fb5b612a0b3b9111e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1045000000 +}, +{ + "ETH_account" : "0x63a01caa10a5927fd2fbf1d3cf8876882379daa1", + "name" : "0x63a01caa10a5927fd2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3652141984 +}, +{ + "ETH_account" : "0x62ceba942bce9c1b596cc80cb6db70b0611b6fa9", + "name" : "0x62ceba942bce9c1b59", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0xf2cabb93e3ed1481bce351c1542da7918d3c6a29", + "name" : "0xf2cabb93e3ed1481bc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 397000000 +}, +{ + "ETH_account" : "0xfd4b43c69c2110a977bf4221a3499cace019f46a", + "name" : "0xfd4b43c69c2110a977", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 539551815 +}, +{ + "ETH_account" : "0x2308393c72de0180aecebe7237ccb67aebd12e65", + "name" : "ondrej", + "publicKey" : "SPH5Pkyyk7B8YkZKWjSVj2dqTZ7EAGwvveEjqDLgPtUQhVDBTmrNd", + "balance" : 8764000000 +}, +{ + "ETH_account" : "0x2bc0399cee62339086773c6997e0582bd643313a", + "name" : "0x2bc0399cee62339086", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2115742400 +}, +{ + "ETH_account" : "0x5778861787123a93d4f82db45b3424708b7ca537", + "name" : "0x5778861787123a93d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 537810300 +}, +{ + "ETH_account" : "0xd29e941de15ed06c3d458c18f13ebff82c639f15", + "name" : "0xd29e941de15ed06c3d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10020000000 +}, +{ + "ETH_account" : "0x339600371aaa4ca278e9c417488a3102cfe105a1", + "name" : "0x339600371aaa4ca278", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3718120000 +}, +{ + "ETH_account" : "0x124155ffee9c26390dc03910cc2597184826436c", + "name" : "0x124155ffee9c26390d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 850000000 +}, +{ + "ETH_account" : "0xa5b34aed001e28b91203d8986bb4c3387d1b8ae7", + "name" : "0xa5b34aed001e28b912", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 194853 +}, +{ + "ETH_account" : "0xe615793ca12e49caab02a72eaecad0daf2bb1766", + "name" : "0xe615793ca12e49caab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150008500000 +}, +{ + "ETH_account" : "0xcbda4c8cb7799afd23dc6b281b6657a0a1a6d2bb", + "name" : "0xcbda4c8cb7799afd23", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7006000000 +}, +{ + "ETH_account" : "0xa7a67aec50f3820854f0ab7f03c6c7698ff1c3ef", + "name" : "0xa7a67aec50f3820854", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000 +}, +{ + "ETH_account" : "0x29a009c04288ad5048e32553804da2fb1034fdb0", + "name" : "0x29a009c04288ad5048", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xc8568959e8487e7b8c26809358104411901595d7", + "name" : "0xc8568959e8487e7b8c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1270000000 +}, +{ + "ETH_account" : "0x105ebfdee916cb13eb245ba1ef8563891d21a2af", + "name" : "0x105ebfdee916cb13eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x2caee64e10e69ba817b3c58779f5dd99b8eff076", + "name" : "0x2caee64e10e69ba817", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2493555488 +}, +{ + "ETH_account" : "0x31bade0b626446c11d2592151526fdbf0b91b632", + "name" : "0x31bade0b626446c11d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0xc95b846e39173119fbcaa2ae2c3420b4dacf70d9", + "name" : "abdessalems", + "publicKey" : "SPH8Ru2KCnqwwS6iVa1EotQCXXHtMWtFzRkurKepWDWvVtYEgdCER", + "balance" : 440000000 +}, +{ + "ETH_account" : "0x56196e5ed2b8f2ef6803653fc09886184b5b3eb7", + "name" : "nanographene", + "publicKey" : "SPH8L4LsZDzWh4XNUBu1wFjEMUxREqiWtDo4biJKuxfk1cwb18ygu", + "balance" : 140000000 +}, +{ + "ETH_account" : "0x3ded9133e61d3a107b7945735739e148619b241c", + "name" : "0x3ded9133e61d3a107b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1207000000 +}, +{ + "ETH_account" : "0xe6bac15c8c8e18071231bf060410505d46aa507d", + "name" : "0xe6bac15c8c8e180712", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1550675787 +}, +{ + "ETH_account" : "0x2e70e82c368af5114828f9e3121716a0fa218dc2", + "name" : "0x2e70e82c368af51148", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1090215230 +}, +{ + "ETH_account" : "0x315efbd44e2823957633e6ae5e270052e4a394de", + "name" : "0x315efbd44e28239576", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 297000000 +}, +{ + "ETH_account" : "0x3621288796476234185868c0c093f691eae00aa9", + "name" : "0x362128879647623418", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 476206994 +}, +{ + "ETH_account" : "0xa32ef316559f30b70db476daa243a9bff0cd72b1", + "name" : "0xa32ef316559f30b70d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3038100000 +}, +{ + "ETH_account" : "0x310ad0e60c4f76042a0cdab0c8f30b92c4ea1341", + "name" : "0x310ad0e60c4f76042a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15183144625 +}, +{ + "ETH_account" : "0x02c9d49d2d6a9c8a0cdbcd6292bbf5fca8a5644f", + "name" : "0x02c9d49d2d6a9c8a0c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 332999896 +}, +{ + "ETH_account" : "0x5b5e189cd4a103d21ffb5150a1fa0a9acdbbc548", + "name" : "0x5b5e189cd4a103d21f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 971887800 +}, +{ + "ETH_account" : "0x230566610db935ede80667c3428b88e72a3cb48f", + "name" : "riccat77", + "publicKey" : "SPH7Bv5TT4bHWwtVH5DzYbaDN6NMh8zy61DDuiKNK29FxLTVrUwzo", + "balance" : 4828000000 +}, +{ + "ETH_account" : "0xe78b467759c5fc18620e9078fb8d1744e8773f52", + "name" : "0xe78b467759c5fc1862", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1770000000 +}, +{ + "ETH_account" : "0x875d35205f5f39c1912632b4e96f27b5ca4b40ef", + "name" : "0x875d35205f5f39c191", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 226000000 +}, +{ + "ETH_account" : "0x34940a9dc934c9e764e7d017a3f0d1358b6f1e2a", + "name" : "0x34940a9dc934c9e764", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 535000000 +}, +{ + "ETH_account" : "0x0e178e230e3d446184c610ceec079e283109ba76", + "name" : "0x0e178e230e3d446184", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1111892700 +}, +{ + "ETH_account" : "0x4c285cdc1873ef4d24d015a4013a4b1cd9fb7963", + "name" : "0x4c285cdc1873ef4d24", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2221482600 +}, +{ + "ETH_account" : "0x51572eb1a63b1c67e8d35d9c5c212e659fdf4c43", + "name" : "0x51572eb1a63b1c67e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12402000000 +}, +{ + "ETH_account" : "0x956b243005c64b4d8a4b19595856bc51d95315d8", + "name" : "0x956b243005c64b4d8a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2400000000 +}, +{ + "ETH_account" : "0xd95a12c5ed4d30188e67cd9922b0484559efdc11", + "name" : "0xd95a12c5ed4d30188e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1719456683 +}, +{ + "ETH_account" : "0xb18c265f730455cee60c89b6bac9e51c4273709d", + "name" : "0xb18c265f730455cee6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7959380 +}, +{ + "ETH_account" : "0x755e6ef87310ff579fa69b372290d2dee73d1b1b", + "name" : "0x755e6ef87310ff579f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 302856537 +}, +{ + "ETH_account" : "0xce46e9ba42df206bba90fd6ea5a7986630fe22d3", + "name" : "0xce46e9ba42df206bba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 487686 +}, +{ + "ETH_account" : "0xab7ed669c6127350a2fcd8f12337b4871f5842f6", + "name" : "0xab7ed669c6127350a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2530037423 +}, +{ + "ETH_account" : "0x67537742ea19e8a1cd22647d7e4501fd189af357", + "name" : "0x67537742ea19e8a1cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1989999862 +}, +{ + "ETH_account" : "0x3da39ddb834e9635a71dd00296395b05773c272e", + "name" : "0x3da39ddb834e9635a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xacdd3475e9c9c7084f5cff32d76ec7ce26340daa", + "name" : "0xacdd3475e9c9c7084f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 243000000 +}, +{ + "ETH_account" : "0x2d5869dbb5e5a715ef2a6c89936cf9a09b89a42b", + "name" : "0x2d5869dbb5e5a715ef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 410843103 +}, +{ + "ETH_account" : "0xe7642d1cee957d28baa38fc21a481e059d59521e", + "name" : "0xe7642d1cee957d28ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2500000000 +}, +{ + "ETH_account" : "0x0a7326b5061b2d587fb3a61c29bd1d688c956e32", + "name" : "0x0a7326b5061b2d587f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 423681113 +}, +{ + "ETH_account" : "0xd615303cd450323390a825f74c53df1ba8e0c0e5", + "name" : "0xd615303cd450323390", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 249441000 +}, +{ + "ETH_account" : "0xd33a17cdd98c1aadc4a0aae157c1f72d1f0341f0", + "name" : "0xd33a17cdd98c1aadc4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000317727 +}, +{ + "ETH_account" : "0x83f27a4f4955b70157a048cf834add679a2e7496", + "name" : "0x83f27a4f4955b70157", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 212473885 +}, +{ + "ETH_account" : "0x0b2c69ace801db1953f910d9bc72534bcac43b8a", + "name" : "0x0b2c69ace801db1953", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 406 +}, +{ + "ETH_account" : "0xfc2d5ee5cc85d68aefc99668a59bf1d57e06616b", + "name" : "0xfc2d5ee5cc85d68aef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1686000422 +}, +{ + "ETH_account" : "0x251ccf44f5963ed48634067e71d392f340918c5c", + "name" : "0x251ccf44f5963ed486", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1217596142 +}, +{ + "ETH_account" : "0x75e72ce15556d4ef9815a0ff5a4655a33a031909", + "name" : "0x75e72ce15556d4ef98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1749000000 +}, +{ + "ETH_account" : "0xc07cefc5c272db1729d5347572ba4e1e6650d910", + "name" : "0xc07cefc5c272db1729", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1107000000 +}, +{ + "ETH_account" : "0xf0b66efe6a60270f949b52de428cded9e00dc705", + "name" : "0xf0b66efe6a60270f94", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1107000000 +}, +{ + "ETH_account" : "0x12bce1bf0b2dcdb154dba3cfab919be510d3c5db", + "name" : "0x12bce1bf0b2dcdb154", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8500000000 +}, +{ + "ETH_account" : "0x37831955b5898e3c69adca0e7577ea1477fcb351", + "name" : "0x37831955b5898e3c69", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 642000000 +}, +{ + "ETH_account" : "0xc4f31a2e54149193b44d6652c4b17908b558fad6", + "name" : "0xc4f31a2e54149193b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0xb9fb263e1fb6415b43d0e8dd09552b30be9b1f62", + "name" : "0xb9fb263e1fb6415b43", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2569393368 +}, +{ + "ETH_account" : "0xd694f23dfe17ac981c953af12108a3208babf402", + "name" : "0xd694f23dfe17ac981c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7567113845 +}, +{ + "ETH_account" : "0xc0c010fb774736ddf5ee9fbd0454371de429a808", + "name" : "0xc0c010fb774736ddf5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 154698191 +}, +{ + "ETH_account" : "0x3d73fcb2e515187f556ccd14f76f459ace30050b", + "name" : "0x3d73fcb2e515187f55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22862000000 +}, +{ + "ETH_account" : "0x020aedd6cde2349f095caa81340fe6c834816e13", + "name" : "0x020aedd6cde2349f09", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65775409875 +}, +{ + "ETH_account" : "0xe7bec37fbfcb27c3c23fd590052ab402b572c275", + "name" : "0xe7bec37fbfcb27c3c2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7488471800 +}, +{ + "ETH_account" : "0xa97656170e0f8a38153fa1c17bab2982f542536c", + "name" : "0xa97656170e0f8a3815", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6392344982 +}, +{ + "ETH_account" : "0x88dd4e9ca19b8ee290ca0511a750e928c4d1eb88", + "name" : "0x88dd4e9ca19b8ee290", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1309493300 +}, +{ + "ETH_account" : "0xb1b36cf738036acb70efa6db78daece2f0c2f7e5", + "name" : "0xb1b36cf738036acb70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 156672996 +}, +{ + "ETH_account" : "0x1b96750ee126f3dc9a3666c55beac39cb28a3445", + "name" : "0x1b96750ee126f3dc9a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 239000000 +}, +{ + "ETH_account" : "0xa072fa56a5f9f47c4824bd8236ee00775521ac06", + "name" : "0xa072fa56a5f9f47c48", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x9a64cc48075abf0df72670b064e49f9158c1cff9", + "name" : "sphtxswapavn", + "publicKey" : "SPH5Q676xiE8kdXyxGAf6ADmqae1aWucitoFkBa9BNNajAPK9Qq2n", + "balance" : 653000000 +}, +{ + "ETH_account" : "0xedd5cf521b41543d4e1fd78d4cee8e01b2894dc6", + "name" : "0xedd5cf521b41543d4e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 483000000 +}, +{ + "ETH_account" : "0xe13b79a32ec1bf1601d82cc7b191fc3857459251", + "name" : "0xe13b79a32ec1bf1601", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5601257700 +}, +{ + "ETH_account" : "0xde47f3c16cdb757027f61d07a44c881d2d32b161", + "name" : "0xde47f3c16cdb757027", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x20c4aa962778fa2807c4aaa420a9114ac40241d7", + "name" : "0x20c4aa962778fa2807", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0x62af228c110669da3c7ac33e22f6f9d841340f76", + "name" : "0x62af228c110669da3c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 176278 +}, +{ + "ETH_account" : "0x1ca5a1b01264d9cd1e2cf7c4155ff0cf465a7077", + "name" : "0x1ca5a1b01264d9cd1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 269244742556 +}, +{ + "ETH_account" : "0xc1236c9163da0cd90051b445bc524c7df9233432", + "name" : "0xc1236c9163da0cd900", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0x772b890c69b4656378a1ab030db3b67253887283", + "name" : "0x772b890c69b4656378", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 529190000 +}, +{ + "ETH_account" : "0x3b7ed6fdf4dd9502c8cbfe76798aac99b2725c07", + "name" : "0x3b7ed6fdf4dd9502c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13598303000 +}, +{ + "ETH_account" : "0xefbc86a57ab2df6878a1581ddfb6ff69c3d5e091", + "name" : "0xefbc86a57ab2df6878", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20086788100 +}, +{ + "ETH_account" : "0xc02411e8a045984b85e83bfa66b27ea89a7a74e7", + "name" : "0xc02411e8a045984b85", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 97286100 +}, +{ + "ETH_account" : "0xd277cedd2b70b53dc71def8754ab05a033963235", + "name" : "0xd277cedd2b70b53dc7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3700000 +}, +{ + "ETH_account" : "0xafc15e1b9ee6e74f8295e65492c20a901e62519a", + "name" : "0xafc15e1b9ee6e74f82", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 399873992 +}, +{ + "ETH_account" : "0xd8acce09792e6a0970e671d78c064f839af26fd4", + "name" : "0xd8acce09792e6a0970", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40000000 +}, +{ + "ETH_account" : "0xb0faa65e5c8f590c4dc58bff997b41271c8a9013", + "name" : "0xb0faa65e5c8f590c4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600000000 +}, +{ + "ETH_account" : "0xc4d47ddf26e5239f2831f5e1e9203665747a365f", + "name" : "0xc4d47ddf26e5239f28", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1126680836 +}, +{ + "ETH_account" : "0x8ac407e5adb2117b4f059cda7c8e15c6151ef75d", + "name" : "0x8ac407e5adb2117b4f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150000000 +}, +{ + "ETH_account" : "0x7ed30e7d72d2ec502624df653dfdde024b44cdde", + "name" : "sophianewtxx", + "publicKey" : "SPH5ydceMEFMnXiR3qfbJ4SdGfezKD9r6EPCwQ7ktnrqaeYeaHEZm", + "balance" : 1700000000 +}, +{ + "ETH_account" : "0x425e4e0e0278c106b5ffebb9e00b76e51a1bc1a5", + "name" : "0x425e4e0e0278c106b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4500000000 +}, +{ + "ETH_account" : "0xa585cea5aaefc63761f0cdae2dfe032fffa80fba", + "name" : "0xa585cea5aaefc63761", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4858146948 +}, +{ + "ETH_account" : "0x04ad859fb81f3d97ac0f129adefbb1085e9e52af", + "name" : "ssheth", + "publicKey" : "SPH7MgRBRKUR6yhXbwc23SQ6SdrXegJGfC2ZbVUPngEqiw7SJQK97", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xbbb411377798668d1783ce97c20b8781285996ae", + "name" : "0xbbb411377798668d17", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 505000000 +}, +{ + "ETH_account" : "0xc3c0ce24d6c8b697c46d7f45b7327545a3ed4cb8", + "name" : "bbruijnsophiatx", + "publicKey" : "SPH7Nhuh3k8BAyC9vvssKpnV6MZXoXVdjLrGuakJHf2J9HkcFADc3", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0x3931e67c35b0aea63208fb5a9703998cd8b4ac5b", + "name" : "0x3931e67c35b0aea632", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 209943037 +}, +{ + "ETH_account" : "0xead84cebc4eb7268775d3c14ec1ccd21ca86ab94", + "name" : "0xead84cebc4eb726877", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6540817544 +}, +{ + "ETH_account" : "0xad814b826de10c84ae6e51cd65cb4d0bca13fc19", + "name" : "nadija", + "publicKey" : "SPH5pYiPruP8fgUP5NFbF1x7VWFGWCa1ZYZ15V7cCGjqcaLvpwfVN", + "balance" : 141631400 +}, +{ + "ETH_account" : "0x352c4158da47d2dd65f59200c5747f6ad16ff076", + "name" : "0x352c4158da47d2dd65", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 73 +}, +{ + "ETH_account" : "0x25d94d806314710a22d3f05f7d3a9a6986bc8324", + "name" : "0x25d94d806314710a22", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 303420000 +}, +{ + "ETH_account" : "0x3af312997075e467f829b6dd4a119e561f476d00", + "name" : "0x3af312997075e467f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23549020000 +}, +{ + "ETH_account" : "0xffd55b76b3c5fa47a0a2cf337c9fa86d0d19f47f", + "name" : "0xffd55b76b3c5fa47a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4212117300 +}, +{ + "ETH_account" : "0xa46bc7b919da9e119a283e12293771296a96d905", + "name" : "0xa46bc7b919da9e119a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450000000 +}, +{ + "ETH_account" : "0xba072ab5f5c962af3e436657dfacc638c281062a", + "name" : "0xba072ab5f5c962af3e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50005000000 +}, +{ + "ETH_account" : "0x5493ac2b1088a0e336f65cada9368f5294b7963f", + "name" : "0x5493ac2b1088a0e336", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1982100000 +}, +{ + "ETH_account" : "0x79c4cdd69587343577d19d6a508afaba2dde7eb3", + "name" : "0x79c4cdd69587343577", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2534755052 +}, +{ + "ETH_account" : "0x7175ea2b3b085e7eb56f2d8bbc4b1156a3937c12", + "name" : "0x7175ea2b3b085e7eb5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9000000 +}, +{ + "ETH_account" : "0xaacd8625e1b0f197c59091f91b514bf169cb38f0", + "name" : "0xaacd8625e1b0f197c5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33511000 +}, +{ + "ETH_account" : "0x59ba956350409926cef2a9f2a0f1fd2f0d95a470", + "name" : "0x59ba956350409926ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1341722754 +}, +{ + "ETH_account" : "0xa9630d1a4362fadd55a1cf9de75a6804622281c1", + "name" : "domingoxsix", + "publicKey" : "SPH6WeAVfiQ6na43A3BrHWRGCwkWqEA4vz75GyiKRUxRCYQuaWAT5", + "balance" : 3500000000 +}, +{ + "ETH_account" : "0x2d8a561be5ca4fd54a7b36a85baa39c0c3daf890", + "name" : "0x2d8a561be5ca4fd54a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 953672000 +}, +{ + "ETH_account" : "0xdcd7b1dc4a160ffc72dbbdabea293422263b1728", + "name" : "0xdcd7b1dc4a160ffc72", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 655159600 +}, +{ + "ETH_account" : "0x624c01c1ececd2373bce1695ae07f9903cc6d4da", + "name" : "0x624c01c1ececd2373b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0x2157ec14572c111ce33a14f2b5b689f9c3d833ab", + "name" : "0x2157ec14572c111ce3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 655886106 +}, +{ + "ETH_account" : "0x0d6c65719e7208d15e2d1e0025a6fd1993614a47", + "name" : "0x0d6c65719e7208d15e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 541427994 +}, +{ + "ETH_account" : "0x100592b278a9b76c4b51672259feab0c0ae48b48", + "name" : "0x100592b278a9b76c4b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450000000 +}, +{ + "ETH_account" : "0x1168791db40e6c196f162ecbcbf2566c118eb831", + "name" : "0x1168791db40e6c196f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8157 +}, +{ + "ETH_account" : "0xe2c28f50257d34942a555def507e7090e57f9954", + "name" : "0xe2c28f50257d34942a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 285000000 +}, +{ + "ETH_account" : "0xad08b94d8b3b4a7d60671914574db1e33beecd8a", + "name" : "0xad08b94d8b3b4a7d60", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60888090000 +}, +{ + "ETH_account" : "0x7f8be05a57a12ad5bafb83dc7b551b0288b454c1", + "name" : "0x7f8be05a57a12ad5ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5484500000 +}, +{ + "ETH_account" : "0x4bab75cb4f33ccac07bb48580c7d0c3abd941f0c", + "name" : "0x4bab75cb4f33ccac07", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x94e97d32b87615251fb11e466ea1c90530580f1e", + "name" : "0x94e97d32b87615251f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x9e44ef74b79aea2eb67201d534ee1464fbf6919a", + "name" : "0x9e44ef74b79aea2eb6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1332000000 +}, +{ + "ETH_account" : "0x13ada34e0d1d228ce6963c984298696ae59b077c", + "name" : "0x13ada34e0d1d228ce6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200 +}, +{ + "ETH_account" : "0xe57d662a39c7bc5538fab2d3f490aa5adb0e1840", + "name" : "0xe57d662a39c7bc5538", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 313000000 +}, +{ + "ETH_account" : "0x8fca1e7e884aab2ab801488af829a0d2199fff94", + "name" : "0x8fca1e7e884aab2ab8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6026036438 +}, +{ + "ETH_account" : "0x4439fc0c50f9071844baf561364ff913f7bdb80e", + "name" : "0x4439fc0c50f9071844", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2850000000 +}, +{ + "ETH_account" : "0x69cae8c1228b9e10f14f99c80b759ed04b4459f0", + "name" : "0x69cae8c1228b9e10f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1618033 +}, +{ + "ETH_account" : "0x90e78a2f516c63f9dede9356560df729f4742b53", + "name" : "0x90e78a2f516c63f9de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 360000000 +}, +{ + "ETH_account" : "0x4e0a6857ee724f5d9c8339370d65649e691b4ff2", + "name" : "0x4e0a6857ee724f5d9c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10812000000 +}, +{ + "ETH_account" : "0xcbbdc4e65504b15e3a4f4a5765f05a84fce5d5ed", + "name" : "0xcbbdc4e65504b15e3a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450113977 +}, +{ + "ETH_account" : "0xc1f6fd8a24327a4623aa561c6f23d26040ee3443", + "name" : "0xc1f6fd8a24327a4623", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 176000000 +}, +{ + "ETH_account" : "0x914b8b60ab245d2ebaa850a473e528106b8a8a56", + "name" : "0x914b8b60ab245d2eba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13490000000 +}, +{ + "ETH_account" : "0xa89ac766f908f57b517808b3de42b9c5e7bbed10", + "name" : "0xa89ac766f908f57b51", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 840000000 +}, +{ + "ETH_account" : "0xafacfc16306d4057c9096e87ae411fadb5102411", + "name" : "0xafacfc16306d4057c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9000000000 +}, +{ + "ETH_account" : "0x91013c69ea9471477178ee9667f026ad59a98532", + "name" : "0x91013c69ea94714771", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8427000000 +}, +{ + "ETH_account" : "0x5da603da13aa6f1d4769be805f271364e13c7f66", + "name" : "0x5da603da13aa6f1d47", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 550000000 +}, +{ + "ETH_account" : "0x998fe5e54dc5f817670a875e3f2945d95818f10a", + "name" : "0x998fe5e54dc5f81767", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2206850500 +}, +{ + "ETH_account" : "0x64809a0d8de5ad53285917075a0fa4798acbc737", + "name" : "kevinseagull", + "publicKey" : "SPH7h2NXDeTcuofvyfAp1ryoeU6QuuX2Tt99GuN9bMkShLEdjWBHE", + "balance" : 1750324703676 +}, +{ + "ETH_account" : "0x50bae7a7858276da82cd13ec2fcf4e8442f06a0e", + "name" : "0x50bae7a7858276da82", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 107703000 +}, +{ + "ETH_account" : "0xf645f7dab6f92acbe3421fb21e506afb7ce10c21", + "name" : "0xf645f7dab6f92acbe3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 489448631 +}, +{ + "ETH_account" : "0x95f389b6a7ecf523f879459968594a738f8a7b99", + "name" : "0x95f389b6a7ecf523f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2200000000 +}, +{ + "ETH_account" : "0x0c38e4e597c0b35edd48495792cd501b3bfc6a57", + "name" : "elie", + "publicKey" : "SPH7Sub5HADeUCYKunnrgp3MinJgQ2BezbfCSkM6NxdMR1ZdWGrET", + "balance" : 69570890047 +}, +{ + "ETH_account" : "0x1284ff75175b39eb035ff0469cb5162fefdf8f9c", + "name" : "songswan", + "publicKey" : "SPH8TH8XDgW4uscD3aorjbYdfrVJxSTSQEE1Hvvy5k5Woztq1Fb65", + "balance" : 10068000000 +}, +{ + "ETH_account" : "0xcdb54da102df52cc4fff996765ad6e740b7fc6a6", + "name" : "0xcdb54da102df52cc4f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1093749800 +}, +{ + "ETH_account" : "0x37bf612bb1b2326746bc1340219edca8714a2f14", + "name" : "0x37bf612bb1b2326746", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 428550000 +}, +{ + "ETH_account" : "0xb87c1930abad1e4c5fe6d5bdb4d5c6a537442225", + "name" : "0xb87c1930abad1e4c5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4920323000 +}, +{ + "ETH_account" : "0xbb781565f8ac4c6057cba376354503b1c7d7f680", + "name" : "0xbb781565f8ac4c6057", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8879000000 +}, +{ + "ETH_account" : "0x9c5305923e7bbf98359e277c76867e6520fd9c53", + "name" : "vignastysophia", + "publicKey" : "SPH5NWqqXn3ug5xPAqzmHTuAK9C18ucf6XkjhY2f8twQDFBYGV86C", + "balance" : 3100000000 +}, +{ + "ETH_account" : "0x167acc8c882066f59da003b7385c024e212f3394", + "name" : "0x167acc8c882066f59d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2100000000 +}, +{ + "ETH_account" : "0x369626f47ec6c2401b114f70e872ee6002f3f7d0", + "name" : "0x369626f47ec6c2401b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2101000000 +}, +{ + "ETH_account" : "0xd535b7d91cea98e419745f3febd79b8ba3eafd14", + "name" : "0xd535b7d91cea98e419", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3359526000 +}, +{ + "ETH_account" : "0xec1f8a4adb26ee8576a61609f8bb0190ae7e94a4", + "name" : "0xec1f8a4adb26ee8576", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5282240000 +}, +{ + "ETH_account" : "0x530ae3c2d5322ad1ac284356ff63f44d687a0534", + "name" : "0x530ae3c2d5322ad1ac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5381050147 +}, +{ + "ETH_account" : "0x6665aeb28ab5b78ffd93ba039fc0c9548e786436", + "name" : "0x6665aeb28ab5b78ffd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 324899700 +}, +{ + "ETH_account" : "0xe036c6c226a34b5cb6e8c56bb78c54b51ad10c9e", + "name" : "0xe036c6c226a34b5cb6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 110000000 +}, +{ + "ETH_account" : "0x1cd15d9ec87e926bcdc4345c11987914c57acb1f", + "name" : "0x1cd15d9ec87e926bcd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 490000000 +}, +{ + "ETH_account" : "0xe3629965c725a205622fd9de80287c2f761d8f05", + "name" : "0xe3629965c725a20562", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 309896110 +}, +{ + "ETH_account" : "0xf03e12a2faf168ebf6655b5ba9fbd89e95fc5c8e", + "name" : "fourmi", + "publicKey" : "SPH8SRUWXqE2zxhdUq6CopPBRyWaYrgsd484pEMS4tHM3ncrzyHxW", + "balance" : 548000000 +}, +{ + "ETH_account" : "0x6ebaa8292823c160d77baa21ef25145f1ab93442", + "name" : "0x6ebaa8292823c160d7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 630340397 +}, +{ + "ETH_account" : "0xa0cbf5f7b66cff9c5d08bb20b17d1bbc8333362c", + "name" : "0xa0cbf5f7b66cff9c5d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1048449677 +}, +{ + "ETH_account" : "0x33d02da4c249edfd85b1c649f92d7383944e4d06", + "name" : "0x33d02da4c249edfd85", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80000000 +}, +{ + "ETH_account" : "0x8a0350b5ea8f9801e0cce77448e2b271ed64dc3d", + "name" : "0x8a0350b5ea8f9801e0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1100000000 +}, +{ + "ETH_account" : "0xc9bac858cc5a2d106123dd1fed9d9c764fbdeee2", + "name" : "0xc9bac858cc5a2d1061", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2421240000 +}, +{ + "ETH_account" : "0x921f4405339b533152fb8223b5c37a3bb392512e", + "name" : "0x921f4405339b533152", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2500500000 +}, +{ + "ETH_account" : "0xcca2ac588f9243b46f6933ae26d28cd68cb20d82", + "name" : "0xcca2ac588f9243b46f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x7f290bf0a57b475bb2ef3f62b8ac0388d2750590", + "name" : "0x7f290bf0a57b475bb2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30266700000 +}, +{ + "ETH_account" : "0x4d3391e2c44f486021ef79dadd25368ebb16e649", + "name" : "0x4d3391e2c44f486021", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 630000000 +}, +{ + "ETH_account" : "0x3115cd6e55de15a7b430f3d84bf37afeb83a7403", + "name" : "sbeck", + "publicKey" : "SPH687d5W7SX2A1zdAMCck5sYJx8d5AkE5Twu2ypYkwj29h9JBQ7i", + "balance" : 20685883100 +}, +{ + "ETH_account" : "0xdf3e563959bf151e77dee2202987cecfde77b022", + "name" : "0xdf3e563959bf151e77", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3914 +}, +{ + "ETH_account" : "0xce3bc53c4ed1a5779d1a5ba50bd84a03e23f9754", + "name" : "0xce3bc53c4ed1a5779d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2868000000 +}, +{ + "ETH_account" : "0x63acc8337a08f64c666f48cb3dbf29b59f9b9fa3", + "name" : "0x63acc8337a08f64c66", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 926000000 +}, +{ + "ETH_account" : "0xca033b27a5e3913d7b633695facf07007b7ce794", + "name" : "0xca033b27a5e3913d7b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 255000000 +}, +{ + "ETH_account" : "0x21f22ac65ebcb119b0ea3fcf90c390e4e4f1d822", + "name" : "0x21f22ac65ebcb119b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2072748000 +}, +{ + "ETH_account" : "0xb14e68a4189b35d7f7ebe09cbd3232b63868243c", + "name" : "0xb14e68a4189b35d7f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 299000000 +}, +{ + "ETH_account" : "0x4087b7d5c15cd50e4c75c4633bc42d55e9fe9e48", + "name" : "0x4087b7d5c15cd50e4c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 671000000 +}, +{ + "ETH_account" : "0x44fbfc73cf72305c8918da40e921dddbeadcbebd", + "name" : "0x44fbfc73cf72305c89", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 112794800 +}, +{ + "ETH_account" : "0x1c6ee5d010f95ed3ab076b368401739dfadcbe5b", + "name" : "0x1c6ee5d010f95ed3ab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 284000000 +}, +{ + "ETH_account" : "0x356ed968dfbadbd1d3a88f2489396b40d7a7c4ab", + "name" : "0x356ed968dfbadbd1d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2150000000 +}, +{ + "ETH_account" : "0x6d548e09e8da2a7ab1d8124fa2366735a930371d", + "name" : "0x6d548e09e8da2a7ab1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 109620000 +}, +{ + "ETH_account" : "0x8fe4ca7934ea26c72baca3a05bfcbc72e2be60aa", + "name" : "0x8fe4ca7934ea26c72b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 723220600 +}, +{ + "ETH_account" : "0x85fdc98008ec4047df3b1653fccb5176c3ba127d", + "name" : "0x85fdc98008ec4047df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 673900000 +}, +{ + "ETH_account" : "0x41a918fa8dc3e5a3478e058cb227761ccf9cd8ca", + "name" : "0x41a918fa8dc3e5a347", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4294000000 +}, +{ + "ETH_account" : "0x31c53c9145840cc9f574ec3ca07441a14db6b9e5", + "name" : "0x31c53c9145840cc9f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0xd1973aed7bd81405bd031085f4601cbe0a2732a5", + "name" : "0xd1973aed7bd81405bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 627886675 +}, +{ + "ETH_account" : "0x2beb7cbe34e7114dc51ec58f515d14a7b376e7ee", + "name" : "0x2beb7cbe34e7114dc5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40000000 +}, +{ + "ETH_account" : "0x31c841217dc9dd7469a9c9fad03dbdb6a0f98113", + "name" : "emilweck", + "publicKey" : "SPH5GpPp9ammbwtNTLY4UgTUQFLxBiVoQVNhXLicyqTKwxSAkoWgr", + "balance" : 8257440400 +}, +{ + "ETH_account" : "0xfd3d766eac489b27a9f566496e1fb5207ad35e0d", + "name" : "0xfd3d766eac489b27a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1820000000 +}, +{ + "ETH_account" : "0x96e08557f2ba1ccd3ee10e44f9b6fcadbd0cc591", + "name" : "0x96e08557f2ba1ccd3e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 290330500 +}, +{ + "ETH_account" : "0xa8b6bbfa7f25264924ef1f42837b3bdb9fc8f7c4", + "name" : "0xa8b6bbfa7f25264924", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4657580301 +}, +{ + "ETH_account" : "0x2d08f20a86a4c2f68502e22f20ce22151f9dd888", + "name" : "0x2d08f20a86a4c2f685", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 112360000 +}, +{ + "ETH_account" : "0x2ea1de5c08cde14c075d3b59ef12daff176765c9", + "name" : "0x2ea1de5c08cde14c07", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5332125811 +}, +{ + "ETH_account" : "0x1e7e085fd99a13eb157087d6c08eb1f1474895c6", + "name" : "0x1e7e085fd99a13eb15", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3976796 +}, +{ + "ETH_account" : "0x4e18c0771f5244ecce1b672acc1ad8bb2fe16714", + "name" : "0x4e18c0771f5244ecce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 195161700 +}, +{ + "ETH_account" : "0x140e7c141314985383dee669d13eb5dbf1d59ccf", + "name" : "0x140e7c141314985383", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 584106373 +}, +{ + "ETH_account" : "0xd47c41a290415b85e2c850812481e2bd7cd24abc", + "name" : "0xd47c41a290415b85e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 401000000 +}, +{ + "ETH_account" : "0x975ae398bc4479f4dec92f2fe2670eba29089b92", + "name" : "0x975ae398bc4479f4de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6268747400 +}, +{ + "ETH_account" : "0xaa7f7b9853bf372621538e7fc07f840dfb356c75", + "name" : "0xaa7f7b9853bf372621", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1193000000 +}, +{ + "ETH_account" : "0x92097a7d9782981bce907a693595324506caa183", + "name" : "0x92097a7d9782981bce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x8d33d3f0079176d93b34bb98831c7112e4d6c71f", + "name" : "0x8d33d3f0079176d93b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7279446945 +}, +{ + "ETH_account" : "0x5bd5806ed62292328f2a1a8d56860873880aaee7", + "name" : "0x5bd5806ed62292328f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 715000000 +}, +{ + "ETH_account" : "0x6751f58ab4aa375d1a5986dd991ad701dd552451", + "name" : "0x6751f58ab4aa375d1a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 387000000 +}, +{ + "ETH_account" : "0x22091ee7af9d1f2de0410f8c43c4cde0437561de", + "name" : "0x22091ee7af9d1f2de0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xf327cfd2f7cb40d2d7fb7bad1ea261723f20036a", + "name" : "meinesophiatx", + "publicKey" : "SPH7WmQjRh5DXm2JnETXYGoXpmBpxAhao6ZpQNjmKXUDfkgVkNE7R", + "balance" : 7148000000 +}, +{ + "ETH_account" : "0xd438eb015a42bc0b7904467250607c51853a90c2", + "name" : "0xd438eb015a42bc0b79", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 520000000 +}, +{ + "ETH_account" : "0xa9921fa2ab8411d8b67f74c3ccfbaa8472da5eb5", + "name" : "0xa9921fa2ab8411d8b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 357000000 +}, +{ + "ETH_account" : "0x5a33a4c94b4c911c051aea82d510ea76b0440111", + "name" : "0x5a33a4c94b4c911c05", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 371760 +}, +{ + "ETH_account" : "0xe309972e39ad80be99ec13b1998614240c936b29", + "name" : "0xe309972e39ad80be99", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 311000000 +}, +{ + "ETH_account" : "0x7767d3c9c8ed03b0e37d4e655ddf1a10124aa9cd", + "name" : "0x7767d3c9c8ed03b0e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 502977900 +}, +{ + "ETH_account" : "0x52d4b8cd735e902c20ed08d1f9c5ea1f2ccf9afe", + "name" : "0x52d4b8cd735e902c20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 77619 +}, +{ + "ETH_account" : "0xb904e16c082c66146cce1e55d4145bd5551a62cf", + "name" : "0xb904e16c082c66146c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 350000000 +}, +{ + "ETH_account" : "0x239ed9e877cbac3e4df6be070ffd9e340578fbbc", + "name" : "vani", + "publicKey" : "SPH6y7qKMfLoDy8tyzKM1cvcBVvjDYyjfVkEGAEPG7nLusFyo8LSc", + "balance" : 5168000000 +}, +{ + "ETH_account" : "0xac5328859ab9e02d1a2048f9aa291114a09248eb", + "name" : "0xac5328859ab9e02d1a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x430ead3a4c159c5ae7bfc9c94acc75b6be099e7f", + "name" : "0x430ead3a4c159c5ae7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 359456104 +}, +{ + "ETH_account" : "0xfe94c5a2835ffc088e301649ecec8ff80e710961", + "name" : "0xfe94c5a2835ffc088e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 650000000 +}, +{ + "ETH_account" : "0x33296e92702a737a7a99804969c6028836e20bb5", + "name" : "0x33296e92702a737a7a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 580000000 +}, +{ + "ETH_account" : "0x61167ecebdf7a70771d17b16449ad1fd612aa792", + "name" : "0x61167ecebdf7a70771", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x87da7b0342eb56c25b0c09656ba649ece55a56b8", + "name" : "timovandoorn", + "publicKey" : "SPH7kwWdZk33oULHACXwgxDBybEhrjrJpn4fRhGK3wShBciouMHRv", + "balance" : 31899335000 +}, +{ + "ETH_account" : "0x313457b601aae833a359e2a869ca63c5f3c9a9fe", + "name" : "0x313457b601aae833a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 55483000000 +}, +{ + "ETH_account" : "0x3d3b1c038456c275c57e9ad602929fd2c78aad86", + "name" : "0x3d3b1c038456c275c5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 198000000 +}, +{ + "ETH_account" : "0xd3b5ed149897222275394f5207c092fd9008c8b8", + "name" : "0xd3b5ed149897222275", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1923996676 +}, +{ + "ETH_account" : "0x38038ef2943ebe3ca83c678f3a6b77303bbea599", + "name" : "0x38038ef2943ebe3ca8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1825070000 +}, +{ + "ETH_account" : "0xf87097a51c3977d549b393c43ee15e6792232ea2", + "name" : "0xf87097a51c3977d549", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1248027088 +}, +{ + "ETH_account" : "0x533a4af2efea784a8a55781f86879acbf080b82a", + "name" : "0x533a4af2efea784a8a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1389470627 +}, +{ + "ETH_account" : "0xb850bf638d00a4e7de1b4db8a50457819610924d", + "name" : "0xb850bf638d00a4e7de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2248616663 +}, +{ + "ETH_account" : "0xb2eb90ceba2619e916c24cf9c20038cb5af80585", + "name" : "0xb2eb90ceba2619e916", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2141515366 +}, +{ + "ETH_account" : "0x624379163676e2ea3007f59ce4512049d0baf2c8", + "name" : "0x624379163676e2ea30", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 890575588 +}, +{ + "ETH_account" : "0xf4a9ac084c78a91e2206b91dce1d1ee0b86881ef", + "name" : "0xf4a9ac084c78a91e22", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20005713483 +}, +{ + "ETH_account" : "0x325d5a5dbfda56996b2e2405df54322a0dfaba20", + "name" : "0x325d5a5dbfda56996b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2274092000 +}, +{ + "ETH_account" : "0x28b17b1aae73688c874120c5ec8c28e78cedf191", + "name" : "0x28b17b1aae73688c87", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1701426300 +}, +{ + "ETH_account" : "0x8e785dc513fb2799eab5213e968682bd45cd1801", + "name" : "0x8e785dc513fb2799ea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 397110100 +}, +{ + "ETH_account" : "0xe7f2a8705080edfe8552cd47b50b2ef691280120", + "name" : "0xe7f2a8705080edfe85", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1539561400 +}, +{ + "ETH_account" : "0x844577d34ebc2025d20bb3b57a75ebb3eb2f13fd", + "name" : "0x844577d34ebc2025d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1980000000 +}, +{ + "ETH_account" : "0x95096cb969b1e8a70d7622c96773016740101228", + "name" : "0x95096cb969b1e8a70d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 56200000 +}, +{ + "ETH_account" : "0xc714783d7b69a1e14153787f840715ec2d65aa95", + "name" : "0xc714783d7b69a1e141", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 449000000 +}, +{ + "ETH_account" : "0xffef7ceddcb71f4c57a3d9e0bbfb81b7484ba6ac", + "name" : "0xffef7ceddcb71f4c57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 140000000 +}, +{ + "ETH_account" : "0xf6030da5980cc6f71f67994fa213c06a7ae9726a", + "name" : "stephenmac", + "publicKey" : "SPH6azb9Jpzs6vzQFdPXaDDVsm981psdcBw6DEemD6VXNo3Bd2XaH", + "balance" : 3370000000 +}, +{ + "ETH_account" : "0x1fc15176e21138294152e46939f43e1e62d36e09", + "name" : "0x1fc15176e211382941", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5030000000 +}, +{ + "ETH_account" : "0x597c4481f4a7f10b6e0fd502488d40f386e68adc", + "name" : "0x597c4481f4a7f10b6e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 98766983 +}, +{ + "ETH_account" : "0xe3e194e171bf8ccf91b1e0adc09540a3d9f5974f", + "name" : "0xe3e194e171bf8ccf91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 992 +}, +{ + "ETH_account" : "0x78a96895e783d944b35a7c01b978abe6cc98a52b", + "name" : "0x78a96895e783d944b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 176878000 +}, +{ + "ETH_account" : "0xe877f1ac4d5f7a120571297c514ce2db07880542", + "name" : "0xe877f1ac4d5f7a1205", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 850000000 +}, +{ + "ETH_account" : "0x696ef8bdc27a8a316716035066855f3abcd92b18", + "name" : "0x696ef8bdc27a8a3167", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 440310765 +}, +{ + "ETH_account" : "0x82c1f4cd3f655ca6b6fdda9d7afffc011852520d", + "name" : "0x82c1f4cd3f655ca6b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1285482900 +}, +{ + "ETH_account" : "0x33b74dd17a3a8a6a18203ca84ef1f2afe6edbc50", + "name" : "0x33b74dd17a3a8a6a18", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xf1368d0ce3f84d0993cfb6d3c8b71760daf6cd13", + "name" : "0xf1368d0ce3f84d0993", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 836289536 +}, +{ + "ETH_account" : "0x23355d7488d7ab39873079e72fa1505c6a24fc8e", + "name" : "0x23355d7488d7ab3987", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11999000000 +}, +{ + "ETH_account" : "0x245adad064cd3f8ffd1cfbccda5b684b1c787b86", + "name" : "0x245adad064cd3f8ffd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3220000000 +}, +{ + "ETH_account" : "0x4f3aca77452acd86b235f6bf68f37ebaf18de978", + "name" : "mcsphtx", + "publicKey" : "SPH8DzL82xusk3kWJpoA8N5A7EJJHCLBjnDD7ZrfYYrNNhAn7dxZC", + "balance" : 1550569530 +}, +{ + "ETH_account" : "0x405d900b6a7762d727d609c45143961a3a786893", + "name" : "0x405d900b6a7762d727", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 124175142 +}, +{ + "ETH_account" : "0xa14cb6e5811ef7ff10e585433f3d365765185cb5", + "name" : "christoph", + "publicKey" : "SPH5kJvYSKAUNF1V8pgNfdfBfEGTFrayUgRhmrSTZNCa9YpJkLSKh", + "balance" : 2917908393 +}, +{ + "ETH_account" : "0x42405277c77da105e56891447509c631b7bf07ae", + "name" : "0x42405277c77da105e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1504987469 +}, +{ + "ETH_account" : "0xf50d0a5425982bfa981687a8a0e7fa0ce6980172", + "name" : "0xf50d0a5425982bfa98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11081370000 +}, +{ + "ETH_account" : "0xbb8bdfac2a61b55243a33168cc04362304c5d312", + "name" : "0xbb8bdfac2a61b55243", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x3cd2bddbbb24d1ddfa74ee38e0ca422f24b48f2d", + "name" : "0x3cd2bddbbb24d1ddfa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 868000000 +}, +{ + "ETH_account" : "0x6efc482d32736bd6f414530e41cf9048e052fdc6", + "name" : "0x6efc482d32736bd6f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1097000000 +}, +{ + "ETH_account" : "0x4b474047fcdaa23c3e329d4407f72d32292bdfcc", + "name" : "0x4b474047fcdaa23c3e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1032434621 +}, +{ + "ETH_account" : "0xa4421b439152bf0ff532edf7b387c1bcdc4fa964", + "name" : "0xa4421b439152bf0ff5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0x63d77a39ad70fb3e530c341480b35ba510eecb4d", + "name" : "0x63d77a39ad70fb3e53", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 106161982 +}, +{ + "ETH_account" : "0x396ea8683083f6d6b4d201d8c7cac9c92bc305d8", + "name" : "0x396ea8683083f6d6b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 452287648 +}, +{ + "ETH_account" : "0xd881843af114407cbe84a07750e23516308f4192", + "name" : "pepcosophiatx", + "publicKey" : "SPH7mpjamHc948AgWeuZBXSYJKmveKyJyejttt46Ucyvx5fRCBUcJ", + "balance" : 1632606648 +}, +{ + "ETH_account" : "0x5839b4822c7830fea98f1eac0a81800b4816bb39", + "name" : "0x5839b4822c7830fea9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 660577930 +}, +{ + "ETH_account" : "0xeffccd436ebfa1af4b5a97f093b0214fda10e85c", + "name" : "randomtask", + "publicKey" : "SPH7nujgNDJRvCVqC78qyGyh6iE54WHaPCAPNZt3tScH2C7pkjysR", + "balance" : 4911385658 +}, +{ + "ETH_account" : "0xfda09128272763a5446946fa00bcce43bd73c734", + "name" : "0xfda09128272763a544", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3223560995 +}, +{ + "ETH_account" : "0x96b5674983d9e7f9222c63794540a5a46f08c495", + "name" : "0x96b5674983d9e7f922", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6209318000 +}, +{ + "ETH_account" : "0x3fb6ac1d125f27e4b9bedb77e52b0aacc8771f11", + "name" : "0x3fb6ac1d125f27e4b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2002000000 +}, +{ + "ETH_account" : "0x3bb71f9396e9e15e5f514db67c65d5d5324c0124", + "name" : "0x3bb71f9396e9e15e5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 271 +}, +{ + "ETH_account" : "0x9599179d22e9803e86648b4069abb6d402a4359b", + "name" : "0x9599179d22e9803e86", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1039600000 +}, +{ + "ETH_account" : "0x75ed3c46ab844299c3cbaa30ec975cca5773317a", + "name" : "0x75ed3c46ab844299c3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 690938 +}, +{ + "ETH_account" : "0x93b2dfa34c7cef04de05653501b9be96e96959f7", + "name" : "0x93b2dfa34c7cef04de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7099000000 +}, +{ + "ETH_account" : "0x14b8e7d7ffe328e838e5d89ac2a0184e6159b6e1", + "name" : "0x14b8e7d7ffe328e838", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1850000000 +}, +{ + "ETH_account" : "0x9ec1273352a587b7a54a3a350661c31c4477667c", + "name" : "0x9ec1273352a587b7a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 411370000 +}, +{ + "ETH_account" : "0x12053caa6eefd621647213f23f77e5d2a89b75b5", + "name" : "0x12053caa6eefd62164", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 564000000 +}, +{ + "ETH_account" : "0x85739f9abde1fbc751ddbbc6358b458e8ce12969", + "name" : "0x85739f9abde1fbc751", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3985501 +}, +{ + "ETH_account" : "0xaa4004480ff45e315eb5e2a2b36bc76e8a1a3f8f", + "name" : "0xaa4004480ff45e315e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1043000000 +}, +{ + "ETH_account" : "0x7029a790e3ab70a77aa161efc8f9f404191c61ea", + "name" : "0x7029a790e3ab70a77a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2921178000 +}, +{ + "ETH_account" : "0xa2479a6042d536202d2512088e22f51df9dd6979", + "name" : "0xa2479a6042d536202d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0x6b5e3557d0e06815cb2fdcc62888df896d2ef2f1", + "name" : "0x6b5e3557d0e06815cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 120000000 +}, +{ + "ETH_account" : "0x6b83f4486bd5a3e8bfff2f6fbe7c16d4a172c1db", + "name" : "0x6b83f4486bd5a3e8bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 29158791000 +}, +{ + "ETH_account" : "0xf3df4e390deefaeccda8d3eed85dea2160d87a3a", + "name" : "0xf3df4e390deefaeccd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0x4db0638ca96d8d3f7010798c990f76f80d9d6ce9", + "name" : "0x4db0638ca96d8d3f70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40000000000 +}, +{ + "ETH_account" : "0x2c9bc15a473e644cedc28b04ce79a7d7a39b0633", + "name" : "0x2c9bc15a473e644ced", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19098763832 +}, +{ + "ETH_account" : "0x32408178a9e86ed9aa766d33a637ebf14fd4f081", + "name" : "0x32408178a9e86ed9aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 653669300 +}, +{ + "ETH_account" : "0xe947a255f63682e1007619745f6c58d2361fb48b", + "name" : "farodog", + "publicKey" : "SPH81RVMa8RKoh9jEQDUJGeuMoQ8ursFRwAKHpdfrv3qmMfAzFZTd", + "balance" : 36505000000 +}, +{ + "ETH_account" : "0x4d165d162308776c913536998d42cac60a182c0e", + "name" : "friedriche", + "publicKey" : "SPH6FDdzjVAZkV1cZ2mfaB4T8V8Wx2DXjeV1BWxFLPYjGRVuyLh2z", + "balance" : 1085000000 +}, +{ + "ETH_account" : "0x3f36b64aa7333e053c6aa6ba9f82f462ea720525", + "name" : "0x3f36b64aa7333e053c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 288000000 +}, +{ + "ETH_account" : "0x929b9cfb4dda4cefc41af061739b9c36354b55d3", + "name" : "imperium", + "publicKey" : "SPH7QqhfRDzAshSPThzC1QgGhYSAr1bWm4BkLZMXqeWWFALwYuRYq", + "balance" : 5246890400 +}, +{ + "ETH_account" : "0xf0bf6fac7747836ab9318cc6cba9f64125f334e4", + "name" : "0xf0bf6fac7747836ab9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1730000000 +}, +{ + "ETH_account" : "0xe755bbcf434593e2b8e2b84ad06b5158db042ff4", + "name" : "0xe755bbcf434593e2b8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2905000000 +}, +{ + "ETH_account" : "0xa2cbba0404645dcbbc68b75ab2462963557c0f8f", + "name" : "0xa2cbba0404645dcbbc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2970000000 +}, +{ + "ETH_account" : "0x9e2eaee5a4d93ae5cb4216a04a2bf55b9128dc98", + "name" : "0x9e2eaee5a4d93ae5cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x17bbc82f00d3c2e8f6bebac3f2378d5682f1dfa2", + "name" : "0x17bbc82f00d3c2e8f6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21040000000 +}, +{ + "ETH_account" : "0x6e2b549ffecc31f62bcf1fdfa346f817e582fee0", + "name" : "bredf", + "publicKey" : "SPH6AaDfxJ6EgcGA4xw9yb6oTx3T4pArQJqnmtJcWMPSUVSBtzbkD", + "balance" : 505000000 +}, +{ + "ETH_account" : "0xc0c2f741e3d0b4b9a6c7baab2b94e5e392ee780e", + "name" : "0xc0c2f741e3d0b4b9a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 108690000 +}, +{ + "ETH_account" : "0x42259cd3c8912b81ee0bc0c723a591e3c4487aad", + "name" : "0x42259cd3c8912b81ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x9c6ef12391cf78109658c574057424e1801c0089", + "name" : "0x9c6ef12391cf781096", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3600000000 +}, +{ + "ETH_account" : "0x07e33b9d13986cd39b208ff08437f7f409e5ea00", + "name" : "0x07e33b9d13986cd39b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2295000000 +}, +{ + "ETH_account" : "0x368eec5ab9e258883551c2a48dc10f2710f8b5b5", + "name" : "0x368eec5ab9e2588835", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1779590000 +}, +{ + "ETH_account" : "0xb7e6bafb98626df7dd9f1f4c7ae90a7f1f17f7a5", + "name" : "0xb7e6bafb98626df7dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 17543478000 +}, +{ + "ETH_account" : "0x9144fc58f952f8bc4ffb2db003c1e49b414c6805", + "name" : "0x9144fc58f952f8bc4f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 114941428 +}, +{ + "ETH_account" : "0xafad594460ff60fb4dff822b1ae66e1f435b8335", + "name" : "0xafad594460ff60fb4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 807546894 +}, +{ + "ETH_account" : "0x26d19a15206d2e6a75aa196e5dd7c406ebeda1af", + "name" : "0x26d19a15206d2e6a75", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 153191400 +}, +{ + "ETH_account" : "0xb3022476ca17272d8aeb07937ee823ab654f9f63", + "name" : "0xb3022476ca17272d8a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10600000000 +}, +{ + "ETH_account" : "0x4ebe684c092415743efd4010ae4c02204dc288fa", + "name" : "0x4ebe684c092415743e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 221182339 +}, +{ + "ETH_account" : "0x66383a9871472df395f6b25a6adf0a611b15b597", + "name" : "sachiwinscheeses", + "publicKey" : "SPH5eGj9bugC8eg9YugFxYu5f7LuPDuYfV5n5WS2wPh7bZ3eGMG8X", + "balance" : 5473000000 +}, +{ + "ETH_account" : "0x97f369c3b77aa341ffe285c18c7899d15748ac33", + "name" : "0x97f369c3b77aa341ff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 45000000 +}, +{ + "ETH_account" : "0x63c9198896a9d62446d9513151473e55887ed2c1", + "name" : "0x63c9198896a9d62446", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9999000000 +}, +{ + "ETH_account" : "0xa634866e0481d908e4fab7e9a88607975a8bfd20", + "name" : "0xa634866e0481d908e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0x21e5b8af5e7b9a4e55eabfb968e3f94518b55677", + "name" : "0x21e5b8af5e7b9a4e55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 531370000 +}, +{ + "ETH_account" : "0xd7ac5d1d05f5d62924e7b0fd07703b4c8de13352", + "name" : "0xd7ac5d1d05f5d62924", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 183370000 +}, +{ + "ETH_account" : "0x3218e6cea8f1a0066878400488c25618ac5292e5", + "name" : "0x3218e6cea8f1a00668", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 134018973 +}, +{ + "ETH_account" : "0x8da78f268eced8e70324fb28955272738163cc05", + "name" : "0x8da78f268eced8e703", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1761370000 +}, +{ + "ETH_account" : "0x4dd3b5d8302576befc5a2ecf79fc691680d43f5e", + "name" : "0x4dd3b5d8302576befc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1279295500 +}, +{ + "ETH_account" : "0xdff8823eaac3063e22fbf033ec9905136073040d", + "name" : "0xdff8823eaac3063e22", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1200000000 +}, +{ + "ETH_account" : "0xb83179d95cac0a23e2a2614f30cb0d61be6df7c8", + "name" : "0xb83179d95cac0a23e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 77326 +}, +{ + "ETH_account" : "0xd9df21a7364579021d3234d065a596a998e51c13", + "name" : "0xd9df21a7364579021d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 488664379 +}, +{ + "ETH_account" : "0x10cc4df74f7dd84bc2ce3590fe5029ea55668e9a", + "name" : "0x10cc4df74f7dd84bc2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 29700000000 +}, +{ + "ETH_account" : "0x0e21d7ae71c9c44b937dd5419309f40fb5ea5835", + "name" : "0x0e21d7ae71c9c44b93", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 350926514 +}, +{ + "ETH_account" : "0xe424291df4e6e02182f60a17b3ef8607758ab9f9", + "name" : "0xe424291df4e6e02182", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 810185757 +}, +{ + "ETH_account" : "0x9d2a51970ba318ef70ba4aff8274b9de9bb6163f", + "name" : "0x9d2a51970ba318ef70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 119870129 +}, +{ + "ETH_account" : "0xd87abd57b41ddc4f1d34e2d4d03de7921c725531", + "name" : "satoru", + "publicKey" : "SPH819FPAbfqL4e9xJeKjKp4KGzzUKiBM1ENPo5h2wRozWUa9hhmx", + "balance" : 1594594500 +}, +{ + "ETH_account" : "0x07d36141cfa5f918b5eff3b279cc1692034ca4fa", + "name" : "0x07d36141cfa5f918b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7100000000 +}, +{ + "ETH_account" : "0xb821f6edde080d978ae98a4e92f12629bb8482b0", + "name" : "0xb821f6edde080d978a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 311871177 +}, +{ + "ETH_account" : "0xdbfdc994f3ab76499a2fe1fa565d9ff2be33b579", + "name" : "0xdbfdc994f3ab76499a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 470503057 +}, +{ + "ETH_account" : "0xc7d12045d9621662da4b8b7d0182b62715351b70", + "name" : "0xc7d12045d9621662da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1044015073 +}, +{ + "ETH_account" : "0x9597f4f8dbd57796f28f216579898cc2c76a6cfd", + "name" : "0x9597f4f8dbd57796f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20001000000 +}, +{ + "ETH_account" : "0x09ce0e4326b41973d281cfc1dd8027ef24f4e821", + "name" : "0x09ce0e4326b41973d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7512740000 +}, +{ + "ETH_account" : "0x4b501303d2394940570f029dd8f0dd86ef9d92c8", + "name" : "0x4b501303d239494057", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 149263569 +}, +{ + "ETH_account" : "0xc82b2d391fceedcd9197c7ce3c9d24b262d72147", + "name" : "0xc82b2d391fceedcd91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 94000000 +}, +{ + "ETH_account" : "0xf4a49897f2e5164938902e9d9d67f5dcfa03eed3", + "name" : "0xf4a49897f2e5164938", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 606608194 +}, +{ + "ETH_account" : "0x596c95dd9220ec1a427a57df0248fa857fe3a615", + "name" : "0x596c95dd9220ec1a42", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 124000000 +}, +{ + "ETH_account" : "0x88aa29e3d5dddcaba415a4bf9a818963a7b756bc", + "name" : "rexcaesar", + "publicKey" : "SPH7S6oxTBGnoioy4WyTKaeN2yYZ777Eu6BBSeLcw9RBGorupcHXt", + "balance" : 3017987959 +}, +{ + "ETH_account" : "0x0bbaa05c9cdf8b8d10cf107faf3b0fecb789fd72", + "name" : "0x0bbaa05c9cdf8b8d10", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25678000 +}, +{ + "ETH_account" : "0x54c17f14596082e04ba003c7c9e7f10e6a6a532a", + "name" : "0x54c17f14596082e04b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16257191293 +}, +{ + "ETH_account" : "0xf87fea281179cc4ca2ea31d7e500253d3b50a2ca", + "name" : "0xf87fea281179cc4ca2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 535177 +}, +{ + "ETH_account" : "0x1037c3e1f01c8510f2d070d51a1433568f7b0558", + "name" : "0x1037c3e1f01c8510f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1531000000 +}, +{ + "ETH_account" : "0xed414fcfef679cf10f8f8db539427038b88abb0b", + "name" : "0xed414fcfef679cf10f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 693353845 +}, +{ + "ETH_account" : "0xdb9d87921502c4d96f3e8cfa0ead9236f98a37ca", + "name" : "0xdb9d87921502c4d96f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9600763486 +}, +{ + "ETH_account" : "0xe3f84417a242b20bb5719bff8cdfc619e447d69f", + "name" : "0xe3f84417a242b20bb5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1268000000 +}, +{ + "ETH_account" : "0xe3593bf45a9a41b43b5360c99fe32e3042e65fc7", + "name" : "0xe3593bf45a9a41b43b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 618373000 +}, +{ + "ETH_account" : "0xcfa7e537080f90c79e3d11f138ade00cf154f98a", + "name" : "0xcfa7e537080f90c79e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4813259545 +}, +{ + "ETH_account" : "0x5261e97f08c6abdc4b835757fb74f2c4a5651fba", + "name" : "0x5261e97f08c6abdc4b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x2d8927cd19e925893be7f0ce2c77496b3a0cc569", + "name" : "0x2d8927cd19e925893b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5104136454 +}, +{ + "ETH_account" : "0xe0917c66a318a49bd485f4cc1390e8f09a0e6d39", + "name" : "brasilxyaulofish", + "publicKey" : "SPH5gRQ4zDBNyfPYUgcz8zsrtFFgopppPupgfLFqMmm1YAon2jK44", + "balance" : 22207326747 +}, +{ + "ETH_account" : "0xdae4d2c84046e46da756fbf664881e75c55b0808", + "name" : "mystring", + "publicKey" : "SPH7sDanjuxVYenvD3u3UkJpw7RJBNwrqkMoRd5C9kZzG5KbGxfwK", + "balance" : 1783159391 +}, +{ + "ETH_account" : "0x37830843a2eb2e636e2e6ac5503f1dbbcc9e8f51", + "name" : "0x37830843a2eb2e636e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1944033588 +}, +{ + "ETH_account" : "0x88fa4e11009f34aa6e3763a8bcd3ead6fe3d3f16", + "name" : "0x88fa4e11009f34aa6e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0xaf1edea19ea2a589fbdae1497fbac877146633aa", + "name" : "0xaf1edea19ea2a589fb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xd6c1bc8a2ddbb461b91aa33a359e0be64dfba127", + "name" : "0xd6c1bc8a2ddbb461b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 235370124105 +}, +{ + "ETH_account" : "0x8f568f6b474c94b061f3d787f1ab0a04af5ef907", + "name" : "0x8f568f6b474c94b061", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8048000000 +}, +{ + "ETH_account" : "0xc2dafab0aa20dd27e5935e4ecd07d95429ba387c", + "name" : "0xc2dafab0aa20dd27e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 85000000 +}, +{ + "ETH_account" : "0x7137d77fceb8905d18ad114611075149fcab91ff", + "name" : "0x7137d77fceb8905d18", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 145000000 +}, +{ + "ETH_account" : "0x4c3b76316a9c5f9787595cdf5e8430196348c991", + "name" : "0x4c3b76316a9c5f9787", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1194656181 +}, +{ + "ETH_account" : "0xc7357acb54d3418c1f686ba579cf5f547313dc5c", + "name" : "0xc7357acb54d3418c1f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 334025959 +}, +{ + "ETH_account" : "0xd12f4c773cf407821d7b47826ddcffa7f4e2e844", + "name" : "0xd12f4c773cf407821d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 85058699 +}, +{ + "ETH_account" : "0xdbc0ca2ab3fbbf6ae60fa06727f59b54ca6dc01a", + "name" : "0xdbc0ca2ab3fbbf6ae6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 247020000 +}, +{ + "ETH_account" : "0x56236e41779074cb0f49801aa656b2344bebdb94", + "name" : "0x56236e41779074cb0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9000000000 +}, +{ + "ETH_account" : "0xa941823538aef66c3f6290db19870ec282adb463", + "name" : "burdyiamasfly", + "publicKey" : "SPH6RCTwPTGnQNLVKs18WLvoG3eEAJxPKPhTKqFv6sJs8Ju4kEGJf", + "balance" : 4234655274 +}, +{ + "ETH_account" : "0x8231afc03fff8ccb9ad65574cc3388ac34a45c19", + "name" : "0x8231afc03fff8ccb9a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3165099785 +}, +{ + "ETH_account" : "0xb569d8c06f9f45188d0c18c5d9c7bb71450898c6", + "name" : "0xb569d8c06f9f45188d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2556755000 +}, +{ + "ETH_account" : "0xb7794d8a355dada49aef591a97ce653ffa478bb9", + "name" : "0xb7794d8a355dada49a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 125484100 +}, +{ + "ETH_account" : "0x5dace65a137d83040e9f70fb328fc4285576534d", + "name" : "0x5dace65a137d83040e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1006432530 +}, +{ + "ETH_account" : "0x4ecd651a50f0f0365da34e34d95a53156c638446", + "name" : "0x4ecd651a50f0f0365d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1203969707 +}, +{ + "ETH_account" : "0xc01a94fb238558ea6e662b6c988a06d71bf5a6bb", + "name" : "0xc01a94fb238558ea6e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3615710000 +}, +{ + "ETH_account" : "0xb9313fdc8405550d83231bed210e8b3015a88cdb", + "name" : "pfsphtxswap", + "publicKey" : "SPH5RXyZq6y6RNQ3Fa2eVbG4EaqdDG5hDC6bmtPPNuFdQwTMGrXR2", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0x944925d0b9bf1b2f0f335af3c4469ee1d375890e", + "name" : "0x944925d0b9bf1b2f0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 320000000 +}, +{ + "ETH_account" : "0x60edd7e15a9cd6655cb49bd3998d2ebdee8d18a8", + "name" : "0x60edd7e15a9cd6655c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 26760000000 +}, +{ + "ETH_account" : "0x67c33e1fc25fae3b9d4b3ac4a361d7f91d394006", + "name" : "0x67c33e1fc25fae3b9d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 182566438 +}, +{ + "ETH_account" : "0xb261939a3780fa19b89a18500235e4b6f22b9c70", + "name" : "0xb261939a3780fa19b8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10445663383 +}, +{ + "ETH_account" : "0xddc60d163015cf5ca1369d557a2ca1cc2de1f1e3", + "name" : "0xddc60d163015cf5ca1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2508928914 +}, +{ + "ETH_account" : "0x3163dae38cb4404fd6fd56a03fb927f350f14e49", + "name" : "marcrwt", + "publicKey" : "SPH7uWy7pjKVMJD7QFxKNh8Naiwmep6WuyCR81vP4gkY1hPRvShrg", + "balance" : 1996684662 +}, +{ + "ETH_account" : "0x4f2d595a0005cb2c451a2e964c2e7e108c893b33", + "name" : "0x4f2d595a0005cb2c45", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 101000000 +}, +{ + "ETH_account" : "0x000cbe96c237e072e4bf31111307ce269565c599", + "name" : "0x000cbe96c237e072e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10620000000 +}, +{ + "ETH_account" : "0x7a7180316a1c0de8bf67c7507b82a8c2d2eaed1f", + "name" : "0x7a7180316a1c0de8bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 389600000 +}, +{ + "ETH_account" : "0x29595ad56359b4d9f459409cf5f7382b97348590", + "name" : "0x29595ad56359b4d9f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 349999800 +}, +{ + "ETH_account" : "0x5f1517b0ed8f6b11500dbdac84baee468ef0559c", + "name" : "bojanzetonce", + "publicKey" : "SPH6ZwVpoiqcL3rFus55BPHPCdWQHCaPeqkyFH87iHHAF26dyLSzA", + "balance" : 2638395643 +}, +{ + "ETH_account" : "0x5a1091efb00a931767f50a4339e972fe848bc900", + "name" : "0x5a1091efb00a931767", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 409000000 +}, +{ + "ETH_account" : "0xa15464bef188498248bf490b1f070c6798bf68eb", + "name" : "0xa15464bef188498248", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 245091696 +}, +{ + "ETH_account" : "0x82dfa63c3e00a6bcb4a02a813ce554622a9d5d9c", + "name" : "0x82dfa63c3e00a6bcb4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14878000000 +}, +{ + "ETH_account" : "0xf13443745ea8f22af1fe514cc9c7237e75f6d117", + "name" : "0xf13443745ea8f22af1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5388424615 +}, +{ + "ETH_account" : "0x3b40917f9df83d8edee46fad58e3c43173409e5c", + "name" : "mouse", + "publicKey" : "SPH4vUTSzQPsmpXE6AL5UEnUmihNTcyvpcZy1B2LJXYEsn3q69GRW", + "balance" : 2066000000 +}, +{ + "ETH_account" : "0xbf30f0f73e70a254ba8ce26b5019dfee0eb5de29", + "name" : "sphtxlukas", + "publicKey" : "SPH5YmvSTfVGzt927RjjU7rT1WMy3c3JvdY7bNVpsRrGR3dtAzmvk", + "balance" : 5060000000 +}, +{ + "ETH_account" : "0x523ace4e84f8aba40bb0082d6a60a5b685a210e7", + "name" : "0x523ace4e84f8aba40b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2600000000 +}, +{ + "ETH_account" : "0xc5a5c0829de2469fb9ce19f43746c4aa88c697a4", + "name" : "0xc5a5c0829de2469fb9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10826000000 +}, +{ + "ETH_account" : "0xea6a6fcb4526bb191f608f3439a2072330db3fa6", + "name" : "sanchan", + "publicKey" : "SPH6SbB5xmZcZR9b96V7mKGwmxfWoUNA1em9tWiZCSzaCrzLp9E5R", + "balance" : 4617570800 +}, +{ + "ETH_account" : "0xdecf4edcebf2c36ea444a13ff14a43b83bf2372b", + "name" : "0xdecf4edcebf2c36ea4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3772000000 +}, +{ + "ETH_account" : "0x9b35371fb81086a8d55ed28924ba9ca7ac8d5598", + "name" : "0x9b35371fb81086a8d5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1489400800 +}, +{ + "ETH_account" : "0xab41783b2e59c5485e891e6f5d312022d7dcf812", + "name" : "alexsophia", + "publicKey" : "SPH6xYutovxAqTkmiLB21Ga39ZCtbDYvzUbNxKttjVg6NSzYRaeEs", + "balance" : 1052000000 +}, +{ + "ETH_account" : "0x14289728e33a14d52a044e1acb4315c21f9355fd", + "name" : "0x14289728e33a14d52a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 990000000 +}, +{ + "ETH_account" : "0x941d7d4b2c73a27189a03061d54b301f7838e65d", + "name" : "sytwychdi", + "publicKey" : "SPH51BW7Z82thSmRhQbTUADtmDHdszvwU7Z1WoNZvCVVu75oH1Eyy", + "balance" : 3087723200 +}, +{ + "ETH_account" : "0x0a6b4355a331122561abb0f692bda3947ae9a755", + "name" : "0x0a6b4355a331122561", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 509000000 +}, +{ + "ETH_account" : "0xdb26a6bc23f6c2f44f7fc1890e6473d18c52a488", + "name" : "0xdb26a6bc23f6c2f44f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9913000000 +}, +{ + "ETH_account" : "0x4ea39f566900f0a5e2c5cd6deecc289fa6403717", + "name" : "0x4ea39f566900f0a5e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 47803800 +}, +{ + "ETH_account" : "0x8b02df4b3babbe8a4ea2cacfdc008f19623fd509", + "name" : "skyscraper", + "publicKey" : "SPH7TbaKcUZxZG6WNtoc53PEhncDUA5AaU4bACz6p75LcTDqkMAKY", + "balance" : 2916000000 +}, +{ + "ETH_account" : "0xd0317dbac2007be5a9fbe19e7056fff9dd1b0b29", + "name" : "0xd0317dbac2007be5a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7550000000 +}, +{ + "ETH_account" : "0x72375ca5cd3396e71a6b10efb163acf03cc88f19", + "name" : "0x72375ca5cd3396e71a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1400000000 +}, +{ + "ETH_account" : "0x9f232faa372baf1e93f6d862eb45d5654cadae32", + "name" : "0x9f232faa372baf1e93", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 557856000 +}, +{ + "ETH_account" : "0x8b20519fa46f3d526a834e41895d1d91d59c517d", + "name" : "0x8b20519fa46f3d526a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 765000000 +}, +{ + "ETH_account" : "0xfc196e2f5560360ef3449674de813430d1909afc", + "name" : "0xfc196e2f5560360ef3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xff183fe9d68546cee68c46bcff81cd156418ab76", + "name" : "0xff183fe9d68546cee6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 113926800 +}, +{ + "ETH_account" : "0xf1aad0b85098e623957bece3a3d6c662b8a9c5b2", + "name" : "0xf1aad0b85098e62395", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x761f3298028963722d851aa11efac7783a83d31a", + "name" : "0x761f3298028963722d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000000 +}, +{ + "ETH_account" : "0x33d256594420ac48255aee05ea0ab03836dc0d92", + "name" : "0x33d256594420ac4825", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150000000 +}, +{ + "ETH_account" : "0x8046bc2af3556c8657995d5c268195286925c67c", + "name" : "0x8046bc2af3556c8657", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 810000000 +}, +{ + "ETH_account" : "0x88e3ce99cf832ee1299a05323db9dd0690d0986f", + "name" : "0x88e3ce99cf832ee129", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000000 +}, +{ + "ETH_account" : "0x83fad94eaa0fa69df6a9f13f7c3577be6180b3bb", + "name" : "0x83fad94eaa0fa69df6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2758474000 +}, +{ + "ETH_account" : "0x832bec7d456d5b373c9c00d960e35e14a2f56c5a", + "name" : "0x832bec7d456d5b373c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 232000000 +}, +{ + "ETH_account" : "0x19f1b6c250649013e4349ed9fe5c50b0e427cf4d", + "name" : "0x19f1b6c250649013e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000000 +}, +{ + "ETH_account" : "0x05182424c60c37d4445b67be8cc5db9a5929b277", + "name" : "0x05182424c60c37d444", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 307109296 +}, +{ + "ETH_account" : "0x247990e6a71a92aa747cc5bfcf39a186d3ff598c", + "name" : "0x247990e6a71a92aa74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1570000000 +}, +{ + "ETH_account" : "0xb0086b1559432bc4e34b2d1b9804146a4b12ecb1", + "name" : "0xb0086b1559432bc4e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1533000000 +}, +{ + "ETH_account" : "0xa34eaf829cbad2826345351356976901be0507af", + "name" : "0xa34eaf829cbad28263", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 291150372 +}, +{ + "ETH_account" : "0x3653be1c98e99969705bd696aa636dccad09b51c", + "name" : "0x3653be1c98e9996970", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1643 +}, +{ + "ETH_account" : "0x2d46cbb523ebf692fb49d613864382f63efb8e45", + "name" : "0x2d46cbb523ebf692fb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2746800000 +}, +{ + "ETH_account" : "0xb8c50d882aa5133b4b577fbb8324bbcdb7cee874", + "name" : "0xb8c50d882aa5133b4b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14111000000 +}, +{ + "ETH_account" : "0xdf8f8e7caadc488e662fde34b830b3df3db9ce6f", + "name" : "0xdf8f8e7caadc488e66", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7704078300 +}, +{ + "ETH_account" : "0x0dd720ddfcfb5e9aed5e9e0a622a475ce72dcbb2", + "name" : "0x0dd720ddfcfb5e9aed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 297565079 +}, +{ + "ETH_account" : "0x717ddf56a7c21eec6016c87a0c637819b4185b48", + "name" : "0x717ddf56a7c21eec60", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 58332040399 +}, +{ + "ETH_account" : "0x72b27bdca711570afef1f5430aa98ecb495fc639", + "name" : "0x72b27bdca711570afe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0x77c6f95521c82b61b1062e8d5b1ec5e0db34728e", + "name" : "0x77c6f95521c82b61b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 876000000 +}, +{ + "ETH_account" : "0xb6100b7250d8ff3e2980c2683420941442ffd2db", + "name" : "0xb6100b7250d8ff3e29", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000 +}, +{ + "ETH_account" : "0x5a86ee185592ec84152107649e38ed290e591ba2", + "name" : "0x5a86ee185592ec8415", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6150788085 +}, +{ + "ETH_account" : "0xf9b360261753051a8aab6b972fa22e9c89590932", + "name" : "0xf9b360261753051a8a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19971841 +}, +{ + "ETH_account" : "0x11ff6bf1e93b38520e973d9a261c4de3ab517ef6", + "name" : "0x11ff6bf1e93b38520e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6122 +}, +{ + "ETH_account" : "0x31c8a7766dc5a66b91c852318fc4e71f0dc9b458", + "name" : "0x31c8a7766dc5a66b91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3684000000 +}, +{ + "ETH_account" : "0x94cdeef0f802212ffaef0d185c5f6cc4d73b7c75", + "name" : "0x94cdeef0f802212ffa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2778000000 +}, +{ + "ETH_account" : "0x0be1c351a4455f7b4f105ee897e2e9592f57540b", + "name" : "0x0be1c351a4455f7b4f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1691632542 +}, +{ + "ETH_account" : "0x572f9013618636b7c1eb1a7da150d196fdfb3d7c", + "name" : "0x572f9013618636b7c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2008864262 +}, +{ + "ETH_account" : "0x9de3c63da250c1a3430017d654bff4739a083bbd", + "name" : "0x9de3c63da250c1a343", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80000000 +}, +{ + "ETH_account" : "0x5293d026257f08efa8666aebfa824f0dad3acba0", + "name" : "0x5293d026257f08efa8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1800000000 +}, +{ + "ETH_account" : "0xb323e43cbf3aadbdd595a695ebe958330f897b8f", + "name" : "0xb323e43cbf3aadbdd5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 474792500 +}, +{ + "ETH_account" : "0x6857f172bed70f3435b1f59cc6c1c6081055c1ed", + "name" : "0x6857f172bed70f3435", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 51558255 +}, +{ + "ETH_account" : "0x3a034e4aa364f6a8e96ecffad5543cf468e63d9f", + "name" : "0x3a034e4aa364f6a8e9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 990144565 +}, +{ + "ETH_account" : "0x8ae35ec1765f6f2c8c9d44483f10fe53f5d29784", + "name" : "0x8ae35ec1765f6f2c8c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x51ced63512eaba7d14b8f39d88f280583dcdb00d", + "name" : "0x51ced63512eaba7d14", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14926 +}, +{ + "ETH_account" : "0xb883b4ac468629b93a2edba274da102ab9929e67", + "name" : "0xb883b4ac468629b93a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4365306500 +}, +{ + "ETH_account" : "0xe54fbd754bea2db5be54381ee351805fd0c669f8", + "name" : "0xe54fbd754bea2db5be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 569360000 +}, +{ + "ETH_account" : "0x465b1ca433630fbecf3fd565d9a303c1f4662453", + "name" : "0x465b1ca433630fbecf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2270000000 +}, +{ + "ETH_account" : "0xff24b44d0f7c5724272583e78b8a5018be245f57", + "name" : "0xff24b44d0f7c572427", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53100000000 +}, +{ + "ETH_account" : "0x154651d2e0b7550b220d148e65968b3a1d2f5cdc", + "name" : "0x154651d2e0b7550b22", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8034700000 +}, +{ + "ETH_account" : "0xf0bdf1d9c36271b2dff44275a84c0a966c23b5ed", + "name" : "0xf0bdf1d9c36271b2df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0xb0796f4daf75ddb2553e8729e576e8089d0c0287", + "name" : "0xb0796f4daf75ddb255", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 523040000 +}, +{ + "ETH_account" : "0x9ee3e803b1cec2d713b1b171856e40fcc6714f45", + "name" : "0x9ee3e803b1cec2d713", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x5b828ecd6c827a4cc91bbdc4ef7da0c84810f031", + "name" : "0x5b828ecd6c827a4cc9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1674040000 +}, +{ + "ETH_account" : "0x9906c0b6f3b9f084273649236ba25c63547c114a", + "name" : "0x9906c0b6f3b9f08427", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 169000000 +}, +{ + "ETH_account" : "0xc85794ceed821c5fc549fb60736f932fc889763a", + "name" : "0xc85794ceed821c5fc5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 185 +}, +{ + "ETH_account" : "0x28cbfcc18ef4b541ba3347150ca3f9f593dc7c1b", + "name" : "ekibastuz", + "publicKey" : "SPH82upT61AG1LrwatahFVauL6hmssyoXJ3Dd8y1omC6aNP4aXbd6", + "balance" : 35570085180 +}, +{ + "ETH_account" : "0x55fc6efa8be1c5c66d027f9882762e7af0bd2b9b", + "name" : "0x55fc6efa8be1c5c66d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3290000000 +}, +{ + "ETH_account" : "0x103c837f9b072745ec14fe5daa192736d98d1799", + "name" : "0x103c837f9b072745ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 951366712 +}, +{ + "ETH_account" : "0xfdad9c58e3e70aa5012a13e4d7aad2cd5d9784d4", + "name" : "0xfdad9c58e3e70aa501", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1352391000 +}, +{ + "ETH_account" : "0x8277fce34efba4e596e40dde7e95c09c3c7b27ca", + "name" : "jedisurfersphtx", + "publicKey" : "SPH5UysekayT8Bdrxqfz6iisWmpPMMmUnz1biTt9XRazz2DtfuTt4", + "balance" : 21755808037 +}, +{ + "ETH_account" : "0x0b102bf6947be4e50c090c30d5855184f66bf63e", + "name" : "lebowski", + "publicKey" : "SPH7Jgs1Xbd2fskvHes5Ue24pvJ2kGCKMxJnGPNxTe8mmtYWWwd2S", + "balance" : 3190723200 +}, +{ + "ETH_account" : "0xcc062209e4d148e41062b62c9ea4f1af390960f4", + "name" : "0xcc062209e4d148e410", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 228121766 +}, +{ + "ETH_account" : "0x471c4947f6c1e81b801cb070a7f2ea083ca80eb2", + "name" : "0x471c4947f6c1e81b80", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15000000000 +}, +{ + "ETH_account" : "0xc248ff787fd1b281f4c2e9a13f6ebff90870c9f9", + "name" : "0xc248ff787fd1b281f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3205000000 +}, +{ + "ETH_account" : "0x4a69986a9c46e1f3f1a8e306eb4804e192a8646d", + "name" : "0x4a69986a9c46e1f3f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10290000000 +}, +{ + "ETH_account" : "0xca165b61ccc560957e08e0b3dc4324f5a8a298ba", + "name" : "0xca165b61ccc560957e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0xa667bba5946d701fd95c17bee607e2c69269c1bb", + "name" : "0xa667bba5946d701fd9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 270821100 +}, +{ + "ETH_account" : "0x45c84feec343b8bd2d5306de180defd36a8fd310", + "name" : "0x45c84feec343b8bd2d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3372811500 +}, +{ + "ETH_account" : "0x1bdb7a41fdcf13702787c9e82576d568cacdfba2", + "name" : "0x1bdb7a41fdcf137027", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3065741600 +}, +{ + "ETH_account" : "0x89323ee168fb49f6f4a6d8d822b5e0f7f7a8a42b", + "name" : "0x89323ee168fb49f6f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2240000000 +}, +{ + "ETH_account" : "0x10626b7e86696fc10fcce8c9b09b37f2be263c3a", + "name" : "jamessutton", + "publicKey" : "SPH8J1rhDHdXJxtRuhPAL48Str4F7eqJYA4eW8vnbTFGdtgCjPBBr", + "balance" : 1477000000 +}, +{ + "ETH_account" : "0xecb6f48e44a9a7322e2ac13b2066b551e98473ed", + "name" : "0xecb6f48e44a9a7322e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 29960000000 +}, +{ + "ETH_account" : "0x5243d8fe9903bcd50359a88cbe68a83f8ce1be29", + "name" : "0x5243d8fe9903bcd503", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600000000 +}, +{ + "ETH_account" : "0x6d56ef3a53e5488f20345a445c70d7c4fa25d97c", + "name" : "0x6d56ef3a53e5488f20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 330000000 +}, +{ + "ETH_account" : "0x19005a516d05207cbf42dde23caa533c0ab4be64", + "name" : "sophiatxtokens", + "publicKey" : "SPH53rNM6gcKMK1QjJFCpgFUdFoPQQTWDMCfskE434fNVchAsFfKM", + "balance" : 12372000000 +}, +{ + "ETH_account" : "0x70c412435a9354cabb4d16148d6248c6d5f7bee9", + "name" : "0x70c412435a9354cabb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 617000000 +}, +{ + "ETH_account" : "0xd9530443e5b3732b47c61d489c70d27b11b04636", + "name" : "0xd9530443e5b3732b47", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1074779100 +}, +{ + "ETH_account" : "0x48ab6a2ff97ba6d2473dd34f60628c674c0e0551", + "name" : "0x48ab6a2ff97ba6d247", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150000000 +}, +{ + "ETH_account" : "0xdad201ea32736abc05d52ed1c0d77a129c6e02e0", + "name" : "0xdad201ea32736abc05", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 814675400 +}, +{ + "ETH_account" : "0x3a57b6f47f68fc3721f17fdc895b60b1cc1a2e40", + "name" : "0x3a57b6f47f68fc3721", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1191799982 +}, +{ + "ETH_account" : "0x700541bbced4858f911d47398ae912e8e907a6ed", + "name" : "0x700541bbced4858f91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6448959000 +}, +{ + "ETH_account" : "0xd5572f42e552a4e17b2970b5f550e8e4e8392016", + "name" : "0xd5572f42e552a4e17b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000342640 +}, +{ + "ETH_account" : "0xf3adf1941653078d19df60528b1857339c472b5d", + "name" : "0xf3adf1941653078d19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4891000000 +}, +{ + "ETH_account" : "0xca71d0217221f5abc035f6a2ac37f649a3b4d52e", + "name" : "malina", + "publicKey" : "SPH7TWrpjaZZ73mSYAK8VQDC1XwyS6f3wnit121ertcQsjwVrnJP7", + "balance" : 3350005919 +}, +{ + "ETH_account" : "0x26ec702ebdd9a80c1ef0cddb118e10350442e754", + "name" : "0x26ec702ebdd9a80c1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 497000000 +}, +{ + "ETH_account" : "0xd78516211bade39a55733b7f3bed9879e860b60f", + "name" : "0xd78516211bade39a55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3122785118 +}, +{ + "ETH_account" : "0x6be459eabe441738bc28a2b5ca156ebd32ffb2bb", + "name" : "0x6be459eabe441738bc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 945216000 +}, +{ + "ETH_account" : "0x900198c81b7d8837beba69c3b4dfa9292e20e44d", + "name" : "0x900198c81b7d8837be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2143681753 +}, +{ + "ETH_account" : "0x32da5efd1f9bc2ae50243fd56d0c9d95c51f6190", + "name" : "0x32da5efd1f9bc2ae50", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 867967000 +}, +{ + "ETH_account" : "0xb848c7e94a5d28b70d9a5423b538ce707a5fb67f", + "name" : "0xb848c7e94a5d28b70d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 528400000 +}, +{ + "ETH_account" : "0x5dd59d080fdb9614d20f8e597c99a3bb0082d9cd", + "name" : "0x5dd59d080fdb9614d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 117472947 +}, +{ + "ETH_account" : "0xa434d98d86dc7c1145b3610ef5a86c79eae7eb3c", + "name" : "0xa434d98d86dc7c1145", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x9ee4bc4ea876632d0ec384654bfb20360cfa88c7", + "name" : "0x9ee4bc4ea876632d0e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6640259500 +}, +{ + "ETH_account" : "0x556d9ce54f607c7cc42755319d9bd759dda2a43a", + "name" : "0x556d9ce54f607c7cc4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 930000000 +}, +{ + "ETH_account" : "0xbc58256744bca103bff179728f90f3006b9a3101", + "name" : "0xbc58256744bca103bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18555541 +}, +{ + "ETH_account" : "0x9038267fcb25a48937c8b282a166b81dfba9eff4", + "name" : "mojizetonce", + "publicKey" : "SPH6q8dfYP154zMMEvyynyM8G61fng3vU8E7LwfDjazBPA4Rzrae7", + "balance" : 694043631 +}, +{ + "ETH_account" : "0x4dd7cb50b4e23078ed3251dcce86e71cc161cf08", + "name" : "0x4dd7cb50b4e23078ed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3883000000 +}, +{ + "ETH_account" : "0xc4dab34383174091f03675734769ca25f14c149d", + "name" : "0xc4dab34383174091f0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x5b8a37b92e085c69c79dd1ac52056de37215bb35", + "name" : "0x5b8a37b92e085c69c7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1361025408 +}, +{ + "ETH_account" : "0x2e36ae81d5fd0bf1a6be5bd63b1a72f8fa8c5ea0", + "name" : "0x2e36ae81d5fd0bf1a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 730288400 +}, +{ + "ETH_account" : "0x948c1b8d9dedcda0690e78aac727d127fce191f2", + "name" : "0x948c1b8d9dedcda069", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 213495005 +}, +{ + "ETH_account" : "0x9a29e608db902614d3e5c941ad612838515e5829", + "name" : "0x9a29e608db902614d3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 908875000 +}, +{ + "ETH_account" : "0xec5ddd98a8985ce839bfbc91a924974f306fd8e0", + "name" : "0xec5ddd98a8985ce839", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 89582886861 +}, +{ + "ETH_account" : "0x320fbd62fbc9d2154e1aab3d131548a3d8dc1177", + "name" : "0x320fbd62fbc9d2154e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2752738589 +}, +{ + "ETH_account" : "0xfd13922d5d2d7f24e4e49520ad506c58f5524e8a", + "name" : "0xfd13922d5d2d7f24e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 497597200 +}, +{ + "ETH_account" : "0xc013e149f0ee911db6c1109db361676c034c8c79", + "name" : "0xc013e149f0ee911db6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 123000000 +}, +{ + "ETH_account" : "0x4fa03eac78ccc2d3755c199b2bb45f6742e05cb3", + "name" : "0x4fa03eac78ccc2d375", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1997567650 +}, +{ + "ETH_account" : "0x5324e611ac7da49506b056c169ec60e27ee5b24b", + "name" : "0x5324e611ac7da49506", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 93454489 +}, +{ + "ETH_account" : "0x7452fbeeb730a4090e2b8765df8d1f5f7bc1c361", + "name" : "0x7452fbeeb730a4090e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 187950000 +}, +{ + "ETH_account" : "0x6bdbf30ae304903562a690a4ee0576c89f72cffb", + "name" : "0x6bdbf30ae304903562", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9156520000 +}, +{ + "ETH_account" : "0x33e636d63a7fcc333beb2d535293d73067c7d864", + "name" : "0x33e636d63a7fcc333b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0xbe242ae5b3e7e600880229b355d1555c7e1f8d8e", + "name" : "0xbe242ae5b3e7e60088", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2 +}, +{ + "ETH_account" : "0xc5e4ecbe1ec4c407e9459d68a8e14f7fac7f169d", + "name" : "0xc5e4ecbe1ec4c407e9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 382441280 +}, +{ + "ETH_account" : "0xf82a0e915bcff370a8909d6fd630e497f32e1216", + "name" : "0xf82a0e915bcff370a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12924000 +}, +{ + "ETH_account" : "0xe16d80a9ba91901431ba189ebdef43e55d6c7515", + "name" : "0xe16d80a9ba91901431", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1143000000 +}, +{ + "ETH_account" : "0xcfb31247ccde8e70959c5d6352be7133805ce3eb", + "name" : "0xcfb31247ccde8e7095", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 524732 +}, +{ + "ETH_account" : "0x0006a9644f1fa0fb84d4c678cecdd6ed0be5199b", + "name" : "0x0006a9644f1fa0fb84", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 257646976 +}, +{ + "ETH_account" : "0xf24049173edfa11686e959fe19736d7a7aca3352", + "name" : "0xf24049173edfa11686", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3200000000 +}, +{ + "ETH_account" : "0xff57625c0d90b4c4048f60f82c002ed8390a98ad", + "name" : "sohphiatxswap", + "publicKey" : "SPH58VjxgFpucyp7zirEyzAmN5M1LCDD5wQxJz1ZX6CX2cMpxUxRG", + "balance" : 608712876 +}, +{ + "ETH_account" : "0x6c54a8c52430d2d2614571de17c5930da09f9d8c", + "name" : "0x6c54a8c52430d2d261", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 363325569 +}, +{ + "ETH_account" : "0xbb3c1db6b3aa64d6a097f5d3bbdfc3218934162a", + "name" : "0xbb3c1db6b3aa64d6a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 253000000 +}, +{ + "ETH_account" : "0x050b169f1cd05f3d682e2f95184262b8643daf7b", + "name" : "0x050b169f1cd05f3d68", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6928269000 +}, +{ + "ETH_account" : "0xd6d1bddd8b6347f34b9ce686ea129d0975dd9857", + "name" : "0xd6d1bddd8b6347f34b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10045000000 +}, +{ + "ETH_account" : "0xbc9348f8a1073d771e1b73552f9d4876e82f7a45", + "name" : "punkyc", + "publicKey" : "SPH5q8Mgx5b8gpitj5rtVjgapdWW1aKhiuECTVHhaC2DgMaumKYwX", + "balance" : 7932775500 +}, +{ + "ETH_account" : "0x394407f555b4536656c870f3717bc071a85f5e6c", + "name" : "0x394407f555b4536656", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1316800000 +}, +{ + "ETH_account" : "0xc6c28ea2ade91b2a76281ae4179247f0c7306fea", + "name" : "0xc6c28ea2ade91b2a76", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10019743400 +}, +{ + "ETH_account" : "0x7b642fd77a678190b05773e308c22cb04de3588f", + "name" : "0x7b642fd77a678190b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1060842650 +}, +{ + "ETH_account" : "0x21c9a48bf0b237c742d41ab5f617792719162a32", + "name" : "sphtxandrea", + "publicKey" : "SPH5X8xsT61EzP16n1cWAuyqLkLb1hfdoUBA5RwgjnnEB9X6JfRHF", + "balance" : 2999999827 +}, +{ + "ETH_account" : "0x7a08af18d15da7723371eab8e4e53ebd9c36460b", + "name" : "0x7a08af18d15da77233", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 31000 +}, +{ + "ETH_account" : "0x5eb80c7c7a3c93f9c14bbb11c76810a1580ef351", + "name" : "tomaskucera", + "publicKey" : "SPH8hdpwnKCFJqv1UwbYRonSQGoW4p6jCgFKnKXHHpzCyVB8iURCR", + "balance" : 2746466902 +}, +{ + "ETH_account" : "0x1a0600ca1c4b7839be05409e0cbd4e9069ad5099", + "name" : "0x1a0600ca1c4b7839be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 161895000 +}, +{ + "ETH_account" : "0x18c16fe9c09d1abcee84e99ab295e14c9ae5beb0", + "name" : "0x18c16fe9c09d1abcee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250554146 +}, +{ + "ETH_account" : "0x536a30da345d7967d14e2d84829337755bb4c72a", + "name" : "0x536a30da345d7967d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1747000000 +}, +{ + "ETH_account" : "0x1a75d938948d5b4bbc43784bae3f4077536d335b", + "name" : "0x1a75d938948d5b4bbc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0xadff8116d11a518a6228dbcfb22365cd5048b2c2", + "name" : "0xadff8116d11a518a62", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1667340276 +}, +{ + "ETH_account" : "0xb602479f8e7910d515c66a29a16d6fc3eb1ca7a5", + "name" : "0xb602479f8e7910d515", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 81761575 +}, +{ + "ETH_account" : "0x1bc78aec02afd79a36bbd528c1276e6c4b5137c5", + "name" : "0x1bc78aec02afd79a36", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 114874900 +}, +{ + "ETH_account" : "0x666fea264862d88bdc550abc838f49e950542aef", + "name" : "0x666fea264862d88bdc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1196497799 +}, +{ + "ETH_account" : "0xdff7fa4ed78d76c47ab957cb203de973cc5ddc3c", + "name" : "0xdff7fa4ed78d76c47a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 721556 +}, +{ + "ETH_account" : "0x5b48eaeb564fdc59236c2ce5191d8ebb94c6b91a", + "name" : "0x5b48eaeb564fdc5923", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2205000000 +}, +{ + "ETH_account" : "0xa6a8b7ab140d50c98581df2ae34658bd8700dae4", + "name" : "0xa6a8b7ab140d50c985", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 641437494 +}, +{ + "ETH_account" : "0x4f4e741e38aab6b3cd88875242fedc0fdc41d7f6", + "name" : "0x4f4e741e38aab6b3cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1606100000 +}, +{ + "ETH_account" : "0xa7fe861dbe139a93b0081ae12eaac213b6b2ffc2", + "name" : "0xa7fe861dbe139a93b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 214000000 +}, +{ + "ETH_account" : "0xb9fba00f923170b71f031b5e6b184e0db2aa7ece", + "name" : "0xb9fba00f923170b71f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1131000000 +}, +{ + "ETH_account" : "0x809749e8dcdaae516e20810c7788b3aa498e8626", + "name" : "0x809749e8dcdaae516e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 117000000 +}, +{ + "ETH_account" : "0x1179a63d53fce63f2469926ec367caaa86fe4f8d", + "name" : "0x1179a63d53fce63f24", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2137069200 +}, +{ + "ETH_account" : "0x8f2d911d811e5f5c687ff26f0054d7aea04d0ffd", + "name" : "0x8f2d911d811e5f5c68", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 131195 +}, +{ + "ETH_account" : "0xa2a064c7946aeec7c149dd65bd5ef7f76aea5dda", + "name" : "0xa2a064c7946aeec7c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25588102324 +}, +{ + "ETH_account" : "0x65247d18f929cfc0e25c7e9143dcc54381677aa6", + "name" : "0x65247d18f929cfc0e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 490000000 +}, +{ + "ETH_account" : "0x61bc51a2fe73ea970d80e8eb82edb5f19471c0b8", + "name" : "0x61bc51a2fe73ea970d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4155845500 +}, +{ + "ETH_account" : "0x16957624a1ae8d5edc02b0efc30ba5b27f52055d", + "name" : "0x16957624a1ae8d5edc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 254904520 +}, +{ + "ETH_account" : "0x15e91118807843715d3d8087392cb3a0809551de", + "name" : "0x15e91118807843715d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 501000000 +}, +{ + "ETH_account" : "0xe4dfa46b547eb91632ce29a4d6f50d1f028baa0a", + "name" : "0xe4dfa46b547eb91632", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 406651200 +}, +{ + "ETH_account" : "0x97af375fe80a69c7e6cf70ab4004243e3ef9e726", + "name" : "0x97af375fe80a69c7e6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1345510000 +}, +{ + "ETH_account" : "0x644018081eaf1aa387f9b945ca8af9767adbdd3b", + "name" : "0x644018081eaf1aa387", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 105772640 +}, +{ + "ETH_account" : "0x0fa7ca9f3657ed64ce284eb8e910937b184d2a69", + "name" : "0x0fa7ca9f3657ed64ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x12a3c1d0f1a09dc2f523342c3a9e274f04097e4b", + "name" : "0x12a3c1d0f1a09dc2f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 109495518 +}, +{ + "ETH_account" : "0xca36f65a46b2886e0f87c7278b881df8f7e9b42e", + "name" : "0xca36f65a46b2886e0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 683253000 +}, +{ + "ETH_account" : "0x4c0e1da6f41b448d72247f68b9ffe4942f57556f", + "name" : "pjfjansen", + "publicKey" : "SPH5v1GeW9uQaF4M6Tj8Pka1aFBqrUFGYbhYDf7qUtacSSzgqZ426", + "balance" : 5435000000 +}, +{ + "ETH_account" : "0xf07ff380384ae3b0f887512b3fce2296a5260aa5", + "name" : "0xf07ff380384ae3b0f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 225000000 +}, +{ + "ETH_account" : "0x17bde0a3703f1e3af070455dd32097891b880c0a", + "name" : "0x17bde0a3703f1e3af0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 182000000 +}, +{ + "ETH_account" : "0x969193a55b6f29599a9cda496301fa548c64bb49", + "name" : "0x969193a55b6f29599a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1822330000 +}, +{ + "ETH_account" : "0x115ebf0e4f44618f90c245599f005935f8db7ff5", + "name" : "0x115ebf0e4f44618f90", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200504995 +}, +{ + "ETH_account" : "0xda1a434f58439b811d3a0ea376f3949e61190356", + "name" : "0xda1a434f58439b811d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 130000000 +}, +{ + "ETH_account" : "0x189a85362210eb4a82c82a51b386c21e762c1bb2", + "name" : "0x189a85362210eb4a82", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 398763832 +}, +{ + "ETH_account" : "0x9cbc2c0e03922e25916cc6ad49f5c4234654af4a", + "name" : "speed", + "publicKey" : "SPH696yQKvsYrEaMfR3GQ6oRkstzbN8MoxrRDv7NQABRiYkQHVE4g", + "balance" : 498805000 +}, +{ + "ETH_account" : "0xc382f139f4d3590750e979cf0fc191694f5294bd", + "name" : "0xc382f139f4d3590750", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7 +}, +{ + "ETH_account" : "0xf8b562ba6f000e92636dd12200d1a2645999a61b", + "name" : "0xf8b562ba6f000e9263", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000 +}, +{ + "ETH_account" : "0x3678ffb2ef864fb79f4c1376482c23cea9b05473", + "name" : "sophiapm", + "publicKey" : "SPH8Gd9d7zYNTGSD4KfReue7uwCS6PLsYd9iC51dBujMXaqZn2xEW", + "balance" : 5340000000 +}, +{ + "ETH_account" : "0x132ae221469734dfe14f5242ec99f4c708b87b4c", + "name" : "0x132ae221469734dfe1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 462582774 +}, +{ + "ETH_account" : "0x16e2d7921679544ee2d0c8c80487960f94ccb6cb", + "name" : "0x16e2d7921679544ee2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14273194100 +}, +{ + "ETH_account" : "0xdb6c961280c8a7273fb6a4451fedbee9d53211e7", + "name" : "0xdb6c961280c8a7273f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0xea5c05b59047f4ab4198050e366e279e143aa02e", + "name" : "cryptophizz", + "publicKey" : "SPH5ZteMEDqBsGSTWszYNHcftsnHpLZnabU6b24PVPWNu6edCC3uj", + "balance" : 292000000 +}, +{ + "ETH_account" : "0xde151b7332c85fe17966d0735df8f9c8d596c165", + "name" : "0xde151b7332c85fe179", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9300000000 +}, +{ + "ETH_account" : "0xe40caeda87d31550bd70282ec4767d9eedc80c29", + "name" : "0xe40caeda87d31550bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x80abb8e3aa8a971b358a33a1a3e4a9f4f4ed4b1c", + "name" : "noboarder", + "publicKey" : "SPH5JfQKYBFWgBhdm5bXeHg1cYYsVkXrD5gbDPHHukGpgM2JZAGNW", + "balance" : 190000000 +}, +{ + "ETH_account" : "0x9b55f5d6b86dad9939defb0e7fe0ad1e7fda89cb", + "name" : "cryptoflux", + "publicKey" : "SPH7EcfVfpUmEB6vkpngbXeR7SgMAz9w55VQe2mKfoiK2AvjeEgcB", + "balance" : 166500000 +}, +{ + "ETH_account" : "0xfd7217efae36f4ed58a6800dbe52bfa489d85723", + "name" : "0xfd7217efae36f4ed58", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 685134300 +}, +{ + "ETH_account" : "0xedabdf3e0090e1f9b49b5bc62a830c11bd694b19", + "name" : "0xedabdf3e0090e1f9b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 460289253755 +}, +{ + "ETH_account" : "0x9c141dfc423176dca2954123332007cb00d3e388", + "name" : "0x9c141dfc423176dca2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 985180563 +}, +{ + "ETH_account" : "0xd6ae203e606f7e26c01df2b05d53da3380a559fd", + "name" : "0xd6ae203e606f7e26c0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 355500618 +}, +{ + "ETH_account" : "0x813ddcec5b57911d1e88028192cd63dafba5a509", + "name" : "0x813ddcec5b57911d1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 332772338 +}, +{ + "ETH_account" : "0x74dbc2d656f55c17bdfabcd9726293c8767abdeb", + "name" : "0x74dbc2d656f55c17bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9500000000 +}, +{ + "ETH_account" : "0x571b4aa3c080c669c261e3c17192f68132e15e80", + "name" : "0x571b4aa3c080c669c2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 888000000 +}, +{ + "ETH_account" : "0x0bed0bd43a703885fb1aca2bfa49609abf885253", + "name" : "0x0bed0bd43a703885fb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2064584100 +}, +{ + "ETH_account" : "0xbabb53b113890ba53f8dfda5421d29f2690988dd", + "name" : "0xbabb53b113890ba53f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9401760000 +}, +{ + "ETH_account" : "0xeaa9e5b24d5e181afaae1d037dc4d62bca675db6", + "name" : "0xeaa9e5b24d5e181afa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18016485012 +}, +{ + "ETH_account" : "0x88f74c6d828c84649fed91fa59d95b500dd6f4a1", + "name" : "0x88f74c6d828c84649f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 609537448 +}, +{ + "ETH_account" : "0x930b01abb91d5776aabc750b46e5c34cfac92cd2", + "name" : "0x930b01abb91d5776aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25571733993 +}, +{ + "ETH_account" : "0xfac0b6d0598d50e08a6590e153b38c85c808555a", + "name" : "0xfac0b6d0598d50e08a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 268000000 +}, +{ + "ETH_account" : "0x51484fdfa208d310d7e5260cc0341632bd9a96d3", + "name" : "0x51484fdfa208d310d7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6060100126 +}, +{ + "ETH_account" : "0xfdea49e8ff4f0cdb064d44265880a73dff06abe7", + "name" : "0xfdea49e8ff4f0cdb06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 670000000 +}, +{ + "ETH_account" : "0x430f6a22b0c68323d80dc0849f189845d6c741bc", + "name" : "0x430f6a22b0c68323d8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 52000000000 +}, +{ + "ETH_account" : "0xa4e57a4ee5c82f0052af70980c42e718f28095e9", + "name" : "0xa4e57a4ee5c82f0052", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x5433c3f4d872afec05827f3edbb38b1b097296b7", + "name" : "0x5433c3f4d872afec05", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000 +}, +{ + "ETH_account" : "0x2312c9612674c1eae4fbf0b7fb0efdddb3bb1a40", + "name" : "0x2312c9612674c1eae4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 999999 +}, +{ + "ETH_account" : "0x1f18d4e7dcfa45b30773273335c3d4aa7bc4d902", + "name" : "0x1f18d4e7dcfa45b307", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 599000000 +}, +{ + "ETH_account" : "0x3ace42f4964160e66782ba398a95eaa1ce746472", + "name" : "0x3ace42f4964160e667", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21000000 +}, +{ + "ETH_account" : "0x3bfed9830456f910ae695826c1685b854ca1c225", + "name" : "0x3bfed9830456f910ae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 412000000 +}, +{ + "ETH_account" : "0x0b22a8845e4e5e964ed8a5bd6e78a4ab382003bb", + "name" : "basoutsphtx", + "publicKey" : "SPH7KsyYvP9wTiq3k2EY924VBvKS9Y6uxjoFA88ndPTap3ndp4nWo", + "balance" : 11654000000 +}, +{ + "ETH_account" : "0xd2c2787ed30c0fb527b4520b4b88ea3c5d8dd3b9", + "name" : "0xd2c2787ed30c0fb527", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2770822700 +}, +{ + "ETH_account" : "0x523571346de07dab50a38983d7da8717c1fd6d3b", + "name" : "mmrider", + "publicKey" : "SPH7BQyY7fRu5Qav2MTDXGBfRGofYN6u3nDQfqpDmpU8qti3u6bVy", + "balance" : 1046035240 +}, +{ + "ETH_account" : "0x74b6627a88cf20903a56311bacca958ec054c7da", + "name" : "tinyrick", + "publicKey" : "SPH7LRATex9Watqy3jY2qxupuyrwrDhk7TUyPTwpJoUwUrLNsaGAZ", + "balance" : 2150000000 +}, +{ + "ETH_account" : "0x98df22b844f59d055cb756608fe7bd8463da8be2", + "name" : "0x98df22b844f59d055c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 790180269 +}, +{ + "ETH_account" : "0x5f6f9325733d1a6c28a1f7d0226afbbacead2844", + "name" : "0x5f6f9325733d1a6c28", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 220128884 +}, +{ + "ETH_account" : "0x2be61271469a736e1fe1f75fb8fd24ed9996675b", + "name" : "frankjvg", + "publicKey" : "SPH7RycZTGThuFfrKAG9ES6u7ZJHu2s1bcQdUCJohz1YUMgFy1hYy", + "balance" : 1663416811 +}, +{ + "ETH_account" : "0x3e1e27d7cabc90620118879d69f9fee18a8a0ad9", + "name" : "csphinxtx", + "publicKey" : "SPH6B3JrGaXNGg6iDBw9HuREUJGJ9Hny9vUBRQsnWi4VT7nVbVHWv", + "balance" : 71387463998 +}, +{ + "ETH_account" : "0xe18b6ece053c1fa6b90deff6bd340bd47cde2b80", + "name" : "0xe18b6ece053c1fa6b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 731720000 +}, +{ + "ETH_account" : "0xbcbcd39b4270b175f9f7726a3efe7faef6aa7539", + "name" : "0xbcbcd39b4270b175f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 610599219 +}, +{ + "ETH_account" : "0x7758fdf93ef3f190851f485e5adb2ec3c7099d1d", + "name" : "0x7758fdf93ef3f19085", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1157508116 +}, +{ + "ETH_account" : "0x7939da0c61ce7dddcb250a1d962d5affc480a93c", + "name" : "0x7939da0c61ce7dddcb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 155107999 +}, +{ + "ETH_account" : "0x1bce7714f28d8b763825231fd082b3da0b444d42", + "name" : "0x1bce7714f28d8b7638", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13000000000 +}, +{ + "ETH_account" : "0x1e8499eed5985f7f455fc6bc83fc20a1f98c6058", + "name" : "0x1e8499eed5985f7f45", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 350727657 +}, +{ + "ETH_account" : "0x9267e0f4578d92ffdb7adcfe077b1d5dd1223d31", + "name" : "0x9267e0f4578d92ffdb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 236900000 +}, +{ + "ETH_account" : "0x9186724e8e23cc26fd7742af8cdee0016a03a766", + "name" : "0x9186724e8e23cc26fd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1100000000 +}, +{ + "ETH_account" : "0x180e66bb6a2ed6e40a5a5e119ac0919cb34fefbf", + "name" : "rudie100", + "publicKey" : "SPH7q4EkEWR4agmu5SUFNkkAwMsuYGzAZZ42TYN2RaNcqYvgF5h6X", + "balance" : 453000000 +}, +{ + "ETH_account" : "0x602fd5be88bab542113527066855c9fbbdfe0d48", + "name" : "0x602fd5be88bab54211", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 856000000 +}, +{ + "ETH_account" : "0xc849c25c646dce8ba0661181bf721f8416968a55", + "name" : "0xc849c25c646dce8ba0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 96000000 +}, +{ + "ETH_account" : "0x9b4797bbbbdef4e7333cd48361f149f53159ff78", + "name" : "0x9b4797bbbbdef4e733", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2053093000 +}, +{ + "ETH_account" : "0xdb08a6d38286c3afe02b9e426e41e72aefa869f0", + "name" : "0xdb08a6d38286c3afe0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3400000000 +}, +{ + "ETH_account" : "0x1982220ac16d93005fa6077e1b9000aa3f44c781", + "name" : "0x1982220ac16d93005f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 627888706 +}, +{ + "ETH_account" : "0x668ed82da5c3caa5d0ff69533578529740142705", + "name" : "0x668ed82da5c3caa5d0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1280000000 +}, +{ + "ETH_account" : "0xe1b027d3e39dbb0a8b82b09554fa41308862ba00", + "name" : "0xe1b027d3e39dbb0a8b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14297957464 +}, +{ + "ETH_account" : "0x068cc6e9f6ae88b92516e74471963404403375d1", + "name" : "0x068cc6e9f6ae88b925", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 946896861 +}, +{ + "ETH_account" : "0x1a7942f7520ddd0f340834262ea81de113335806", + "name" : "0x1a7942f7520ddd0f34", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 199988000 +}, +{ + "ETH_account" : "0xd69c32cea484ca1fb1a8d43ef4eadf3a77aa6e58", + "name" : "0xd69c32cea484ca1fb1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 27000000 +}, +{ + "ETH_account" : "0x7583c7048f064800363bc31d8036f9f7deb598fa", + "name" : "lambocalrissian", + "publicKey" : "SPH6TB4L2M55ANvew9DJkUyo7VFrmvB8MyAuR8rTBmbqazBV7qKBh", + "balance" : 2789225300 +}, +{ + "ETH_account" : "0x2aceb39bec19bed4b9904aee79b7fec3809fbc1d", + "name" : "0x2aceb39bec19bed4b9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2080000000 +}, +{ + "ETH_account" : "0xcdf66dd4c2659faf08e6a9bb751d8d3e77c184bf", + "name" : "0xcdf66dd4c2659faf08", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10634661200 +}, +{ + "ETH_account" : "0xfc232a0566c515b43a10a8a978af1f3735efe75d", + "name" : "0xfc232a0566c515b43a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 71000000 +}, +{ + "ETH_account" : "0x1ef0e6ad093f38975cb03e371bd19e3fed82cbef", + "name" : "0x1ef0e6ad093f38975c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80000000000 +}, +{ + "ETH_account" : "0x124277d9de455531bb3e850f19b9bf415cfede35", + "name" : "0x124277d9de455531bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3973981323 +}, +{ + "ETH_account" : "0x7ece438c8098827fa68585aec17261a5b85db6c8", + "name" : "0x7ece438c8098827fa6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450000000 +}, +{ + "ETH_account" : "0x98921fa05b390b0d1a5fe4e2b616f99d4384c9aa", + "name" : "0x98921fa05b390b0d1a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 698000000 +}, +{ + "ETH_account" : "0xddd8851a102687cfa827663467ee1e2a80f20090", + "name" : "0xddd8851a102687cfa8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1710000000 +}, +{ + "ETH_account" : "0x238a81dc6846e13841408b9a04819c74bf0a681d", + "name" : "0x238a81dc6846e13841", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 620000000 +}, +{ + "ETH_account" : "0x4c29781d1696ec256bbb5f5c9c596d3d3017998b", + "name" : "0x4c29781d1696ec256b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22338572 +}, +{ + "ETH_account" : "0xe16f6a6837937ca9c8136c64c42dc9e2c45a5ac5", + "name" : "0xe16f6a6837937ca9c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 683187090 +}, +{ + "ETH_account" : "0x86341e73d9deb4696b1ae50dbce8f2d62fa06023", + "name" : "fleshproperty", + "publicKey" : "SPH5S4RcCvMgKLQNQdGHGthQUAfgtKkKARRtRVF7Yyk3mu58EJS1T", + "balance" : 892720000 +}, +{ + "ETH_account" : "0xeeba0b1b28996c5b6c236997c767ab5a091723f1", + "name" : "0xeeba0b1b28996c5b6c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 359000000 +}, +{ + "ETH_account" : "0x7e3f47d30de0f572b38590e01a5dcd7b104ea4bd", + "name" : "0x7e3f47d30de0f572b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 240 +}, +{ + "ETH_account" : "0xfab5ce26339642dbc4137b12b51d2b3d2770423c", + "name" : "0xfab5ce26339642dbc4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000 +}, +{ + "ETH_account" : "0x0342efed8bf307a40fb81b5ba7f7426ce8c1dd45", + "name" : "0x0342efed8bf307a40f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 455978000 +}, +{ + "ETH_account" : "0x4647161ddff1d0763084e90f692d076d1bc7c3c1", + "name" : "0x4647161ddff1d07630", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1300000000 +}, +{ + "ETH_account" : "0x64f91f1ca3dfa18b0c225bd349bb6cc8fb6948b2", + "name" : "0x64f91f1ca3dfa18b0c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1592306300 +}, +{ + "ETH_account" : "0x00b63dc73447cadb78dfce341bd59b4e3cf6bca5", + "name" : "0x00b63dc73447cadb78", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 594492709 +}, +{ + "ETH_account" : "0x4dc29af08712fc1405fbf610ed6a2da6f7ceb50b", + "name" : "0x4dc29af08712fc1405", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 498252942 +}, +{ + "ETH_account" : "0x58e820a6f96c5983cbc4abe7ff4db8bf809f5cc3", + "name" : "0x58e820a6f96c5983cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0x9aff4dfd7783decef6d9c1ed4d86387eeeca8c37", + "name" : "0x9aff4dfd7783decef6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 82000000000 +}, +{ + "ETH_account" : "0x13c10950c8130b6a119bbbcc3135ba6200c32863", + "name" : "0x13c10950c8130b6a11", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 527436839 +}, +{ + "ETH_account" : "0xae022f74e2930fb50106ae0139eff0cfafba4a09", + "name" : "dansphtx", + "publicKey" : "SPH8hstXTJXjjYaVh83aDpJqyq5hekHJxWgTU34i4Ht7sm3Hei8wW", + "balance" : 38727560382 +}, +{ + "ETH_account" : "0x112b9f857ece20d8cd6fdc9b1e417736cb9c55b0", + "name" : "0x112b9f857ece20d8cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2587010000 +}, +{ + "ETH_account" : "0x7017adb97c719a9fbe18936592df06e4f949eeb1", + "name" : "contractsphtxrm", + "publicKey" : "SPH8AfFSTA7XXGgXSAbJTbYcJfsAPy8bsZvPe871tWaQ8di8UhAoH", + "balance" : 12513458561 +}, +{ + "ETH_account" : "0xe05421b3b67b9082b807e86736ac48a10afcfe6c", + "name" : "0xe05421b3b67b9082b8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2432299970 +}, +{ + "ETH_account" : "0xcd4c932adbb4e1d504ea9d87fc2f4fae6108d873", + "name" : "0xcd4c932adbb4e1d504", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000 +}, +{ + "ETH_account" : "0x819e62b4895298fa4a4c1d2d62070fd3e84387eb", + "name" : "0x819e62b4895298fa4a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 507034883 +}, +{ + "ETH_account" : "0xe69c1335878e0c6175eb10fd23f55cf9d55f2897", + "name" : "0xe69c1335878e0c6175", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 197423381 +}, +{ + "ETH_account" : "0x5f77e2982ad77a02bd4d0aee0786a28d53e78988", + "name" : "0x5f77e2982ad77a02bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 32000000 +}, +{ + "ETH_account" : "0x2a5d259deb0bbfd4325dd85e233986a3e38488e8", + "name" : "0x2a5d259deb0bbfd432", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 185101084 +}, +{ + "ETH_account" : "0x29837c1c7141c713717532e00a8bbee5c0b0abea", + "name" : "delsignordaniel", + "publicKey" : "SPH89XfCYzyQvRQbVDBpYCjomku5U8Nsf1bMgbqm7G63VKerSfA1d", + "balance" : 637535507 +}, +{ + "ETH_account" : "0xc33a83ff2452128510c6e249c1c4c019c06a88ec", + "name" : "0xc33a83ff2452128510", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000 +}, +{ + "ETH_account" : "0x63fbf50b30f160f00902e3fd8f3eb613d810565c", + "name" : "ejhx", + "publicKey" : "SPH89kQb2mF8C5gvTDzsjYHNtuzRMT5pkFSVBRWPpULB5h8AeA1jm", + "balance" : 82544176284 +}, +{ + "ETH_account" : "0xccee5cb8512d3adc26d5a5185a4d47b0d02f1455", + "name" : "0xccee5cb8512d3adc26", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0x614684d73e5d7008dc0b45cd9e9d2580d1d11bff", + "name" : "evilcyclotron", + "publicKey" : "SPH8CMy3fttGWCprUNxu8FB2uwp6o5AfJqpCGwU7fim59zzqiCJpc", + "balance" : 1542720000 +}, +{ + "ETH_account" : "0x5437a30773f76e513a286e8bfbcfc4aed0b31046", + "name" : "0x5437a30773f76e513a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 817000000 +}, +{ + "ETH_account" : "0x12de01a12b8bc02c28ffc4946c46e6abe348c7eb", + "name" : "adebosschere", + "publicKey" : "SPH6BTGwmm68G7aFeNjhhNVawRXshRfm78xS7FcF8yPZMfii82PYB", + "balance" : 2438056098 +}, +{ + "ETH_account" : "0x42558220ab911397e02f1f31ef120026bef19112", + "name" : "0x42558220ab911397e0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40000000 +}, +{ + "ETH_account" : "0xc502261d9249a30f3cb8715c54d41f4424019a3a", + "name" : "scheich", + "publicKey" : "SPH6KYPe8tLXVAcgdHB1i3rx5PUL4JHHLTMU6sE7idQ4Uc9y2i1Qg", + "balance" : 14190381942 +}, +{ + "ETH_account" : "0x71b4288e21170fac0a507b49467933e14ed715fa", + "name" : "0x71b4288e21170fac0a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 156460628 +}, +{ + "ETH_account" : "0xd981e58fcce8324eb080dae55f6a04e72898e054", + "name" : "0xd981e58fcce8324eb0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4910000000 +}, +{ + "ETH_account" : "0xc90e8a76dbc332768ecef6ae8fb7d8aceda831cb", + "name" : "0xc90e8a76dbc332768e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000 +}, +{ + "ETH_account" : "0xbf67b17d7f37bcee8dc9902184955caefb4be8de", + "name" : "0xbf67b17d7f37bcee8d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 448358963 +}, +{ + "ETH_account" : "0xf2fdfdb081a68fee6b4dbba867bdd121479d1a7a", + "name" : "jrnufh", + "publicKey" : "SPH5vDCTXanhXEKVnSBwevP2KsfCnS7fSpVbRF4Aq7p24rS9CGiKF", + "balance" : 4759500000 +}, +{ + "ETH_account" : "0x5f89dfa542d6c763bce536a58bbaac5827eef20c", + "name" : "oozewallet", + "publicKey" : "SPH7JJTwpcsNobp2X2DeYYvMAVp6icJbon5nw8aBwV5G9CbEukCVf", + "balance" : 991073428 +}, +{ + "ETH_account" : "0x529ab4cbc491cfee94c03cfed37ec9752e29d897", + "name" : "0x529ab4cbc491cfee94", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 430263 +}, +{ + "ETH_account" : "0xfabd38e19d18765b606755a48b17e947da26d9c4", + "name" : "0xfabd38e19d18765b60", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 995582254 +}, +{ + "ETH_account" : "0xb20c7e84f001bdea0803466261a69b66a3ed1239", + "name" : "0xb20c7e84f001bdea08", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 77899764 +}, +{ + "ETH_account" : "0x628684fc0bbaa3d09f56d69e578c77e1d630f5a2", + "name" : "0x628684fc0bbaa3d09f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 127265400 +}, +{ + "ETH_account" : "0xb47ae344f18fa39c76774d2b6d0458745e6847da", + "name" : "0xb47ae344f18fa39c76", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 116318100 +}, +{ + "ETH_account" : "0x9f9c86a1c6b3ca15f3c2b507f54ed721bd79eb1d", + "name" : "0x9f9c86a1c6b3ca15f3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8280000000 +}, +{ + "ETH_account" : "0x84cb9b540fb57877e13157d67050eccd5248987e", + "name" : "0x84cb9b540fb57877e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 251000000 +}, +{ + "ETH_account" : "0xbc48e0001d94fcffecbebd1bb3e82fb1eff56c44", + "name" : "0xbc48e0001d94fcffec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28560000000 +}, +{ + "ETH_account" : "0x67d50c840234874a292e27c69237c2eaea5a8e82", + "name" : "0x67d50c840234874a29", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2288010000 +}, +{ + "ETH_account" : "0x688ba89cf568cb4f3334bc56c4691454ce93a500", + "name" : "0x688ba89cf568cb4f33", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 48600033600 +}, +{ + "ETH_account" : "0x6fe8596d8f7cf42a209d6b8792123470629ff502", + "name" : "0x6fe8596d8f7cf42a20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2243077500 +}, +{ + "ETH_account" : "0xd1d4ca7263b6fefe278bfc6e6881d0bac4896aed", + "name" : "0xd1d4ca7263b6fefe27", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1722243300 +}, +{ + "ETH_account" : "0xc24e9015d6d88a76b310547d631ca5361b14be64", + "name" : "0xc24e9015d6d88a76b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 75710000 +}, +{ + "ETH_account" : "0xcde22c488b66e4c0af02cb0c946dac9e371e9390", + "name" : "0xcde22c488b66e4c0af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1928000000 +}, +{ + "ETH_account" : "0x89f733fbf6ff245f983d95d98bcccf1ff2362118", + "name" : "0x89f733fbf6ff245f98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2500615280 +}, +{ + "ETH_account" : "0x7e9b9bd78ed22f31761e50abc695af1f901883d3", + "name" : "0x7e9b9bd78ed22f3176", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 152000000 +}, +{ + "ETH_account" : "0x99f7b0c6e2124df496d8cc89c01e6323cd494b04", + "name" : "0x99f7b0c6e2124df496", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0xab4ae626cbc93297e1ccce1dcd907cfa198b84c1", + "name" : "0xab4ae626cbc93297e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1436500000 +}, +{ + "ETH_account" : "0xa6031d5910501a0cd231224c76ba0c6d529a786f", + "name" : "0xa6031d5910501a0cd2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 96200000 +}, +{ + "ETH_account" : "0x7739d43dba975c2e95ac7414a13c7f3ec969e735", + "name" : "svenhokke", + "publicKey" : "SPH7XQp7tb288uXzNdGj1QAsN3ixjpKoCJim9gfZpFtqwj2aGGzpx", + "balance" : 7500000000 +}, +{ + "ETH_account" : "0x45db533e620c1b0a1400ca41bdff429030ee5391", + "name" : "0x45db533e620c1b0a14", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 502000000 +}, +{ + "ETH_account" : "0x9df56080d31cf156e4078aee013549917afd305d", + "name" : "0x9df56080d31cf156e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 629000000 +}, +{ + "ETH_account" : "0x42cc40f5a8516ab48d116716aab090b7a7794e71", + "name" : "0x42cc40f5a8516ab48d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33000000 +}, +{ + "ETH_account" : "0xa08c5f29955696cd2e6dbcd11004e82dd4ecab31", + "name" : "0xa08c5f29955696cd2e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 287000000 +}, +{ + "ETH_account" : "0xbbb3b5011347c64b3d57dba007263e27959787fa", + "name" : "0xbbb3b5011347c64b3d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10985000000 +}, +{ + "ETH_account" : "0xc2ba77a1e9a5842333f2962712c7fb3b6d973588", + "name" : "0xc2ba77a1e9a5842333", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 97500000 +}, +{ + "ETH_account" : "0xea21c6b31ff490dc742dde30ba7fc89ac216bbe3", + "name" : "0xea21c6b31ff490dc74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 532000000 +}, +{ + "ETH_account" : "0x0a5c9606ee6a32e0add7eb3132781806e18bc27e", + "name" : "0x0a5c9606ee6a32e0ad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 666383000 +}, +{ + "ETH_account" : "0xa221cffd88bd4a61834ae22fa3c346bcfe762445", + "name" : "0xa221cffd88bd4a6183", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000700000 +}, +{ + "ETH_account" : "0x6c5504c5d80f39bb35b1dc25bc271bdbc4b04a99", + "name" : "0x6c5504c5d80f39bb35", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 560268334 +}, +{ + "ETH_account" : "0xc1a4ce8f312f2e44a402c0e4fc6360019566e8ff", + "name" : "0xc1a4ce8f312f2e44a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 337000000 +}, +{ + "ETH_account" : "0x6e571bf41ac14280bd18b7216773fe577af244c8", + "name" : "0x6e571bf41ac14280bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3410000000 +}, +{ + "ETH_account" : "0x1508e175600c9b74e5a40f7ae4749ee83975412f", + "name" : "0x1508e175600c9b74e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1410240000 +}, +{ + "ETH_account" : "0x7149528bcef8766adc958cc74a47df98d95c3a32", + "name" : "0x7149528bcef8766adc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0xf1dd75ef1e05549c2ee4caf1d82e539d8f3fbf27", + "name" : "0xf1dd75ef1e05549c2e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1707088000 +}, +{ + "ETH_account" : "0x266e69a810b20a8ee17a1dc4a576fa5345db41db", + "name" : "0x266e69a810b20a8ee1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1512445645 +}, +{ + "ETH_account" : "0xaf849d35b9429098650b9ea35c0f377a1efe75aa", + "name" : "0xaf849d35b942909865", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x5551d5d059addb097fb06ed294d9a15da30235c8", + "name" : "0x5551d5d059addb097f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 916050597 +}, +{ + "ETH_account" : "0xfabd70bd8f26573e98e586b453b562e03dafa1ef", + "name" : "0xfabd70bd8f26573e98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 175320000 +}, +{ + "ETH_account" : "0xfb4b5fcc31ab6b960a2b46aabce928b82bac617b", + "name" : "0xfb4b5fcc31ab6b960a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1815000000 +}, +{ + "ETH_account" : "0x454c1f94df8178575f7d1603a063515a18446988", + "name" : "0x454c1f94df8178575f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7459584300 +}, +{ + "ETH_account" : "0x2959e3f2cbe1092e695c7509aeda141181ba9b1a", + "name" : "0x2959e3f2cbe1092e69", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 259310482 +}, +{ + "ETH_account" : "0x0d4038ecffc87b21090ab77ae0ebf36a5ab29c7d", + "name" : "amcsphtx", + "publicKey" : "SPH7YVpR6FXUybeReL2NiwUqgkie9nLG5mUoGrLBFKtMg9kdZofZM", + "balance" : 5105163926 +}, +{ + "ETH_account" : "0xed53036721b299a5d8d766a75fb9e4ecf90d4038", + "name" : "0xed53036721b299a5d8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 98995051 +}, +{ + "ETH_account" : "0x04c19ba52106efeec2b2a360d2616fec6b934fe3", + "name" : "0x04c19ba52106efeec2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14824280136 +}, +{ + "ETH_account" : "0xa308c8775b70fe575d7a8a95a8e6e339ebda90d9", + "name" : "0xa308c8775b70fe575d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 455729764 +}, +{ + "ETH_account" : "0x40f3fa2739f82abc57c4176addad2cc57f5823cb", + "name" : "0x40f3fa2739f82abc57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 995391679 +}, +{ + "ETH_account" : "0xb3d2a24537dcdfbd0fa5bde37445d31ed0215607", + "name" : "0xb3d2a24537dcdfbd0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1415846667 +}, +{ + "ETH_account" : "0x45e64e5025abb6a41b439d2b6b32db6fccf070e4", + "name" : "spleeky", + "publicKey" : "SPH6oYCxtZbnkwa7cpWYcxLkmM7WaDpioXaxDpdMtWFGDYbpi7LhA", + "balance" : 14601590000 +}, +{ + "ETH_account" : "0xb24deaa915ae791521077a300f7d6becdb921bf6", + "name" : "0xb24deaa915ae791521", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 996179801 +}, +{ + "ETH_account" : "0xc34153e89ff7936b7000ddb6807dd6575b7c4329", + "name" : "0xc34153e89ff7936b70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10021000000 +}, +{ + "ETH_account" : "0xa4088ceb6ea9134f5a457ae559ec611cd37510c6", + "name" : "0xa4088ceb6ea9134f5a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 582451604 +}, +{ + "ETH_account" : "0xff6a1b3af822479a00476571c33eaa2e39587b49", + "name" : "0xff6a1b3af822479a00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 31000000 +}, +{ + "ETH_account" : "0x8fe98ad69b1378b011db7873087f55f86e385e36", + "name" : "0x8fe98ad69b1378b011", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3400000000 +}, +{ + "ETH_account" : "0xa5939abdec1ee8a91ab56cd1490bdfe0f89964c0", + "name" : "0xa5939abdec1ee8a91a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20639000000 +}, +{ + "ETH_account" : "0x55307745db0c5c3faeebef58af1696d7a5031248", + "name" : "0x55307745db0c5c3fae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1843493803 +}, +{ + "ETH_account" : "0xa4186287c3caa796c0133bf3cc4d09289789cb4f", + "name" : "0xa4186287c3caa796c0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 62000000 +}, +{ + "ETH_account" : "0x1828185008fc5b89a0923f743ad3d6a4c71635c5", + "name" : "0x1828185008fc5b89a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0xfb5f900b62365efe56eabfb84033c5ffcf22a46c", + "name" : "0xfb5f900b62365efe56", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x2760581a6f5bb0d3f53047a80c9280229b36093e", + "name" : "0x2760581a6f5bb0d3f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 172000000 +}, +{ + "ETH_account" : "0x4636553f6c8ae71d14eb3460061638e0475a9cd7", + "name" : "0x4636553f6c8ae71d14", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 152000000 +}, +{ + "ETH_account" : "0x975d74f868bdd630e0655454b9ece9e0dcb63c1b", + "name" : "0x975d74f868bdd630e0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1269000000 +}, +{ + "ETH_account" : "0x47f34cdc8ded1b4313e5a701411e50cc7ab22188", + "name" : "0x47f34cdc8ded1b4313", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7395707100 +}, +{ + "ETH_account" : "0x83ceb0f0a7ebac1d764680d9455bba24ff52a1a6", + "name" : "0x83ceb0f0a7ebac1d76", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4370000000 +}, +{ + "ETH_account" : "0xa16e37864c1bb1c34160f1d55cf7a3786079af19", + "name" : "0xa16e37864c1bb1c341", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14202960000 +}, +{ + "ETH_account" : "0x76f785adf443be85928b56771ef3087e8e5fb33a", + "name" : "0x76f785adf443be8592", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 34793203 +}, +{ + "ETH_account" : "0x2abaead300d4447bfabffea79a8abdc174a01b1b", + "name" : "0x2abaead300d4447bfa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 327298811 +}, +{ + "ETH_account" : "0x0026f1d819e9f3a2a836da969c7fe98ed72d9454", + "name" : "0x0026f1d819e9f3a2a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 350000000 +}, +{ + "ETH_account" : "0x3340a0606fb39202080706632b8bf68a98ba2dd5", + "name" : "0x3340a0606fb3920208", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2017720000 +}, +{ + "ETH_account" : "0x4d937aa42a7c4d2389e271bd9f359e40a758d7f8", + "name" : "0x4d937aa42a7c4d2389", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1030354088 +}, +{ + "ETH_account" : "0x2cc4f04c8d6e3350dfc166a5264f085a42d25906", + "name" : "0x2cc4f04c8d6e3350df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2630429900 +}, +{ + "ETH_account" : "0x3688ed0738f7d8ee0be3e755ddbedf863c683997", + "name" : "0x3688ed0738f7d8ee0b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 517983284 +}, +{ + "ETH_account" : "0xd704906e8395d3c753b20fdda88ba83a4c89d15b", + "name" : "0xd704906e8395d3c753", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25 +}, +{ + "ETH_account" : "0xc4da44b9b928c5bf15b974aa65cdab48f041c771", + "name" : "0xc4da44b9b928c5bf15", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2015126237 +}, +{ + "ETH_account" : "0xdecfe644a306ae8a2eb102133995aaa29860a9f5", + "name" : "0xdecfe644a306ae8a2e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3427237977 +}, +{ + "ETH_account" : "0x153ce52e10c1b47efc9e6f0604e95d713f808998", + "name" : "0x153ce52e10c1b47efc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 72629090 +}, +{ + "ETH_account" : "0x6fd5a0d8018d56ce1e8695d4a93413d9fcb76be4", + "name" : "0x6fd5a0d8018d56ce1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2424380000 +}, +{ + "ETH_account" : "0xe787308582e508515d212b6371a8a8be3bc33b46", + "name" : "0xe787308582e508515d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 720000 +}, +{ + "ETH_account" : "0x465c82b3e1c1aed870ac2086e14cfcf07bab0465", + "name" : "0x465c82b3e1c1aed870", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1001930000 +}, +{ + "ETH_account" : "0x4fc15f86d163f70c3cb210f27ddf4ccb9f5cba82", + "name" : "0x4fc15f86d163f70c3c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4672509584 +}, +{ + "ETH_account" : "0xb516bc99cb09125c7379efc1e04ca3ddceb419c7", + "name" : "0xb516bc99cb09125c73", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 839868139 +}, +{ + "ETH_account" : "0x1fd6424983e36b9e1cae5da7a1f73aa053906130", + "name" : "0x1fd6424983e36b9e1c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3372000000 +}, +{ + "ETH_account" : "0xb0220d91199e4b83a84c5108212c47a3410ea787", + "name" : "qazxswedcvfrtgb", + "publicKey" : "SPH8BPCa4R7839nBTfMH6V1GAkieTnic2FD2RyyT5nfF9x1m8XKrC", + "balance" : 10195159540 +}, +{ + "ETH_account" : "0x46c5ef63cded9a411ee43a86199d8a1c4d9c1c81", + "name" : "0x46c5ef63cded9a411e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 425950267 +}, +{ + "ETH_account" : "0x59b0333fdddae7c758e67ae5b64d21073dc25ce3", + "name" : "0x59b0333fdddae7c758", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4504000000 +}, +{ + "ETH_account" : "0x214ab21a658d70a4006655c74cdf0441def73be0", + "name" : "0x214ab21a658d70a400", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2035993000 +}, +{ + "ETH_account" : "0x5f114867d351a38ebfe57f459bc651afdf667e42", + "name" : "0x5f114867d351a38ebf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 121663000 +}, +{ + "ETH_account" : "0xca64472a42866a82409623ffcfa58b5a0019d50b", + "name" : "0xca64472a42866a8240", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 399000000 +}, +{ + "ETH_account" : "0x6250173790cd3005a694af5bf52c6f0959133c15", + "name" : "0x6250173790cd3005a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 230000000 +}, +{ + "ETH_account" : "0x324ba0a8fc1f93179adebbb57f3d07cd66bcd626", + "name" : "0x324ba0a8fc1f93179a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 796720000 +}, +{ + "ETH_account" : "0xd29f4f7294fbaf8e57849834ca6bdcdfa06adcb3", + "name" : "victorsophia", + "publicKey" : "SPH5TcVugHcmBrBWzuH2SNgB33TznEqb53ZGTzexdC2vHcZzaVQrT", + "balance" : 120000000 +}, +{ + "ETH_account" : "0xf1b211041c605472067825f575642fac28e6b191", + "name" : "0xf1b211041c60547206", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 234301696 +}, +{ + "ETH_account" : "0x297eb7877064bd23e1f62104601452ba174e65f6", + "name" : "0x297eb7877064bd23e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 594056 +}, +{ + "ETH_account" : "0x7a5a61c46a85a7fba9bd39247aec09b02a4c220c", + "name" : "0x7a5a61c46a85a7fba9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 93000000 +}, +{ + "ETH_account" : "0x2f8f715e71684000dc0ca4ba4277dce6e1e4529a", + "name" : "0x2f8f715e71684000dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 95000000 +}, +{ + "ETH_account" : "0x751ddb17f2b22bad74ebd6a94f87fe318a877d1f", + "name" : "0x751ddb17f2b22bad74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 107899137 +}, +{ + "ETH_account" : "0x191d29e4bc77787e6a45829c90dbf854cd81f10e", + "name" : "0x191d29e4bc77787e6a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5660000 +}, +{ + "ETH_account" : "0xa64d4c28b4f07d1059235bf615b078c33abcb618", + "name" : "0xa64d4c28b4f07d1059", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10114360342 +}, +{ + "ETH_account" : "0x7e7435fc96bb0fe97c853962eaaed2c71fd66a28", + "name" : "0x7e7435fc96bb0fe97c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 526554426 +}, +{ + "ETH_account" : "0x78179c46cb84ec3fbdf3e3c3118593c921793cf2", + "name" : "0x78179c46cb84ec3fbd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 605913953 +}, +{ + "ETH_account" : "0x803cb32abfe7bf7ed9fb4fbe6fe2b93d55d49ddc", + "name" : "0x803cb32abfe7bf7ed9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6500000000 +}, +{ + "ETH_account" : "0x060dcb0f683d480f55c696a607c8defb82b9bb06", + "name" : "0x060dcb0f683d480f55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 848678078 +}, +{ + "ETH_account" : "0xac594e3e1a13141d4ab8740a8e59bc14aa0c2832", + "name" : "0xac594e3e1a13141d4a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0xd6551c7af6721527f8002f1d29f6a7e9be734834", + "name" : "0xd6551c7af6721527f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1859000000 +}, +{ + "ETH_account" : "0xf0669b87ba951baee6ca1877db5f2a33ce61bbc9", + "name" : "green", + "publicKey" : "SPH5cAgBBJton38WG7dieN41bNy3xeRC7GmyzAu6mnWy1PNvPaiVb", + "balance" : 16887124277 +}, +{ + "ETH_account" : "0xb3760357455f01f56e127885a9b312c05035bc19", + "name" : "molson", + "publicKey" : "SPH6LZd3HbYc1AL1d6PnQ3VY5syA43kfAzuHQZCcajYDG12UmxyAm", + "balance" : 9149191587 +}, +{ + "ETH_account" : "0x536340f03642901f00256a9c347cdbc78390a295", + "name" : "0x536340f03642901f00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 468623928 +}, +{ + "ETH_account" : "0xb9cd258f971741c9e273467b4a521d3178f54d05", + "name" : "0xb9cd258f971741c9e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2539565145 +}, +{ + "ETH_account" : "0x35b8be899dde1e725252644a77700e8d5b8e1f75", + "name" : "0x35b8be899dde1e7252", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12733000000 +}, +{ + "ETH_account" : "0x4d2e78a6882eb396e78389dd8071a74a6cce700c", + "name" : "0x4d2e78a6882eb396e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5262806823 +}, +{ + "ETH_account" : "0xe8b0e8d33f52d5986cd2ba52e942d847371a3e29", + "name" : "0xe8b0e8d33f52d5986c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13497000000 +}, +{ + "ETH_account" : "0xd048261ba81c8c952891d29bd9a94d0a7b94c3c6", + "name" : "0xd048261ba81c8c9528", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10800000 +}, +{ + "ETH_account" : "0xa0bb8e3f9f447c0ae8bf9a67eca6b43d618bbaca", + "name" : "0xa0bb8e3f9f447c0ae8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0x8ad13bf10b606ad30690dab163499c412f6468a7", + "name" : "0x8ad13bf10b606ad306", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 57550000000 +}, +{ + "ETH_account" : "0x313a7bfc9bc77b7360b66654819033b9bcf118a8", + "name" : "0x313a7bfc9bc77b7360", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1206179000 +}, +{ + "ETH_account" : "0x51d3547e21cc0f63c043c318e57f236a8b940c2d", + "name" : "0x51d3547e21cc0f63c0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4757000000 +}, +{ + "ETH_account" : "0xfa929891388befc66d3cb7ad96ddb88ec1df920d", + "name" : "0xfa929891388befc66d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2500000000 +}, +{ + "ETH_account" : "0x399b02422f268ea7b53038f1db8aa5c3a9989aa8", + "name" : "0x399b02422f268ea7b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xab6523974f48ca4a5e58031976520f60051ac664", + "name" : "0xab6523974f48ca4a5e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2142717900 +}, +{ + "ETH_account" : "0x73fcd27f5da1f3a7b7bcfd2653875bb311d3698c", + "name" : "0x73fcd27f5da1f3a7b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9984055267 +}, +{ + "ETH_account" : "0x579d31de8050f87bb1067dbac827d89e2e1df5dc", + "name" : "0x579d31de8050f87bb1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1194930000 +}, +{ + "ETH_account" : "0x7b50d6c8000745c8d078456ae3e7c650b76a643b", + "name" : "0x7b50d6c8000745c8d0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1524227260 +}, +{ + "ETH_account" : "0x1f73d74fecb522e1dfcd844cc4cafbb6a31caa66", + "name" : "0x1f73d74fecb522e1df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 983999987 +}, +{ + "ETH_account" : "0x8bf0d09ba8dfb6105cd2232b4cabdc7b804ba491", + "name" : "0x8bf0d09ba8dfb6105c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2898447790 +}, +{ + "ETH_account" : "0xd1fccfddd22be6597324c5f5a8ea1d7bdc2d9359", + "name" : "0xd1fccfddd22be65973", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0x1c51ed62663889de300b0993416064737a274852", + "name" : "0x1c51ed62663889de30", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 240947876 +}, +{ + "ETH_account" : "0xef591e2be31b54f8af52c8ace9ddff654b32022e", + "name" : "0xef591e2be31b54f8af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1833218012 +}, +{ + "ETH_account" : "0x210a60f5ff78ab65910edafc9b192cd1fea035b1", + "name" : "0x210a60f5ff78ab6591", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 821583366 +}, +{ + "ETH_account" : "0xf00115fb4c70f24c1540ff0ca53093e27a7a1649", + "name" : "0xf00115fb4c70f24c15", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900 +}, +{ + "ETH_account" : "0xa797c320f1bf2bbe730ef0c48c9737f2e020ef94", + "name" : "0xa797c320f1bf2bbe73", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 95974878 +}, +{ + "ETH_account" : "0xad8b1ebc7aa0f016463f28e3c7cbfa9cf11fd274", + "name" : "0xad8b1ebc7aa0f01646", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 234932000000 +}, +{ + "ETH_account" : "0x3ccaf896873d31ef0620f7199f20455d4ecded69", + "name" : "daisy", + "publicKey" : "SPH741mzay3ArbHupu3ojPs5pPKEuP6n4tYu1kQ2kA6sMmsp1pqxK", + "balance" : 701017200 +}, +{ + "ETH_account" : "0xb64d0877e256575b127d19b133baa92c1cb6e52f", + "name" : "0xb64d0877e256575b12", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3732347387 +}, +{ + "ETH_account" : "0x98b6df06b9c31831ac073239c508c1c6978cc691", + "name" : "0x98b6df06b9c31831ac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 161 +}, +{ + "ETH_account" : "0x1ab56269888eb2209abcc2e958aec2756c32ab90", + "name" : "0x1ab56269888eb2209a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 698830700 +}, +{ + "ETH_account" : "0xee1e75a3ae13e5c3a43ce918f0f40c45a8679ccf", + "name" : "0xee1e75a3ae13e5c3a4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 590684 +}, +{ + "ETH_account" : "0x5429401d8694275fe1738ed67046763bda94b06f", + "name" : "0x5429401d8694275fe1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 106441767628 +}, +{ + "ETH_account" : "0x6e6599042709567eaa46f6063b10d8380d0a86d1", + "name" : "0x6e6599042709567eaa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 170330335 +}, +{ + "ETH_account" : "0x84d6149f0aa46fa43989224f434ca934b1a84a53", + "name" : "0x84d6149f0aa46fa439", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xc0f56603743b8f4dc39c86a68d164bab964da232", + "name" : "0xc0f56603743b8f4dc3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3340000000 +}, +{ + "ETH_account" : "0x3927c48a1183217a7532fc752ca9ff6812ca883d", + "name" : "0x3927c48a1183217a75", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150000000 +}, +{ + "ETH_account" : "0xbe983b6aa605206d304e72c4d0441fed9f2afd95", + "name" : "0xbe983b6aa605206d30", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7740000000 +}, +{ + "ETH_account" : "0xba6b94865bd26bb12ce9c4ef59706551b9737dba", + "name" : "0xba6b94865bd26bb12c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 351361003 +}, +{ + "ETH_account" : "0x7f6b5ede5b5bc9f7aa04a42b8c2ea014da072a60", + "name" : "0x7f6b5ede5b5bc9f7aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7414038065 +}, +{ + "ETH_account" : "0x943febbdddedf1728d17997865ec6bdf22687db3", + "name" : "0x943febbdddedf1728d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4126669876 +}, +{ + "ETH_account" : "0xd98d33559d85d70d46d4facbcdee6d1ffaa4cbba", + "name" : "wissy", + "publicKey" : "SPH7UHGHMYKXvjnjgmoqcPDmPsbxefg7TY4xrJUz9fpwwucmNxBHk", + "balance" : 5827003366 +}, +{ + "ETH_account" : "0xcda58aac2b5d984a115d399117335e0da88c5df2", + "name" : "0xcda58aac2b5d984a11", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1756373743 +}, +{ + "ETH_account" : "0x3012f64794b2376c8ea1a5cdee8bd1721af084a9", + "name" : "sphtxseros", + "publicKey" : "SPH7PERjKGyXamNXej6yKX3FBAurTinzBpktGqJCMA6DgkoHWKbSo", + "balance" : 245000000 +}, +{ + "ETH_account" : "0x7805f95ec3a83ddf2a4da31af596ba7895a6f804", + "name" : "0x7805f95ec3a83ddf2a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3266864000 +}, +{ + "ETH_account" : "0x7ed70232df2aa56908204c8679bcb78d44731070", + "name" : "0x7ed70232df2aa56908", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60682730792 +}, +{ + "ETH_account" : "0x07e351da0f0bcedd0eed76029e9c4e901e9bffee", + "name" : "0x07e351da0f0bcedd0e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 712923559 +}, +{ + "ETH_account" : "0x00d44426ca561c35e5c469b2c83ae1bb94f92472", + "name" : "0x00d44426ca561c35e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1775000000 +}, +{ + "ETH_account" : "0x180f1d236f9f46e0dde20e4ced1c8792d23c69d3", + "name" : "adamov", + "publicKey" : "SPH7KvEF39TQ9mP5cbRHyva8Mu5gCKkEYQipMC8NFCi2VXuj4RDEu", + "balance" : 3599822700 +}, +{ + "ETH_account" : "0x8876bd9f5d3b0faa5bb999f759714f0eda3fdf5e", + "name" : "0x8876bd9f5d3b0faa5b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 621 +}, +{ + "ETH_account" : "0xa1171dea8897c89af612ab30df5d74999de38093", + "name" : "0xa1171dea8897c89af6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 295886500 +}, +{ + "ETH_account" : "0x5af197caeec0647a1e66fd00b355c4680a2dee49", + "name" : "0x5af197caeec0647a1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1134344673 +}, +{ + "ETH_account" : "0x96b9aafd45768b6206884926b9ac2af1ab3ea67e", + "name" : "0x96b9aafd45768b6206", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16491423300 +}, +{ + "ETH_account" : "0xe49067260fcc9af4414011a04194e4f3a16d5041", + "name" : "0xe49067260fcc9af441", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4344933300 +}, +{ + "ETH_account" : "0x29e847f6af498adce7d9a19b463c928d374cc196", + "name" : "0x29e847f6af498adce7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 263000000 +}, +{ + "ETH_account" : "0x92b6c4d71dd322f798b95101bb035e184906e99f", + "name" : "0x92b6c4d71dd322f798", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2037000000 +}, +{ + "ETH_account" : "0x63aeec3e6b5b32aa00cbb9e1538d32ffdc68539f", + "name" : "0x63aeec3e6b5b32aa00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5096724600 +}, +{ + "ETH_account" : "0x7e8ec116a535c08002a2312a87e4ab783ee60cb0", + "name" : "0x7e8ec116a535c08002", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1163000000 +}, +{ + "ETH_account" : "0x260f971ef7444ebe1da66a6913b7df387562e5cb", + "name" : "0x260f971ef7444ebe1d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2035000000 +}, +{ + "ETH_account" : "0x754b54e466a36cef00b0d53805cd3d66c794fa18", + "name" : "0x754b54e466a36cef00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7300 +}, +{ + "ETH_account" : "0x05a81e4a46af85aa51c4bdc4850986f554825b55", + "name" : "oliviabangbank", + "publicKey" : "SPH56yVon1pLfBfSGAd2civsaswF934v2Cpv9z4x9EJKQK73JxqdZ", + "balance" : 4382514200 +}, +{ + "ETH_account" : "0x215c3f138ab90a5ec95a082b51998298779540f7", + "name" : "vitawur", + "publicKey" : "SPH77FMDjEhAvN7dXdL6UFXS5eSpucKJmY64TZeeg4QMDbm7Wcrbx", + "balance" : 7381923624 +}, +{ + "ETH_account" : "0xcf5009f0e53b5e921e43326dedc3a3f36c2a6a10", + "name" : "0xcf5009f0e53b5e921e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 716947073 +}, +{ + "ETH_account" : "0xe29968ba8e62e8c33e9742eb0ef661a908f392fa", + "name" : "0xe29968ba8e62e8c33e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4000000 +}, +{ + "ETH_account" : "0x64375ac83dc742a0acf1ee5ae5c9fde02f97fe14", + "name" : "0x64375ac83dc742a0ac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3550000000 +}, +{ + "ETH_account" : "0x525151625efbf89dadb9ef5845ce30b1829b2e51", + "name" : "0x525151625efbf89dad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 131841817 +}, +{ + "ETH_account" : "0x48eb5b0c059fd5f8b84a8e72cea7a5fc9cb441c5", + "name" : "0x48eb5b0c059fd5f8b8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13162696209 +}, +{ + "ETH_account" : "0x2160050a37c1ee91751440b8383574a881080d28", + "name" : "shakitano", + "publicKey" : "SPH5xhtMHWsGP83yr2iUeNGRJdAuQBqtArZd4moe5wGtn25dHfUgu", + "balance" : 1740228666 +}, +{ + "ETH_account" : "0x1ce5743f385e70e62644e3baf1abf3d11590566c", + "name" : "0x1ce5743f385e70e626", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1749912059 +}, +{ + "ETH_account" : "0xc6b117dd4538a094bb1e0be87df043bbc9549bde", + "name" : "0xc6b117dd4538a094bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 834000000 +}, +{ + "ETH_account" : "0xeff5cf0fe0422d642448ba3b54c34c7ed14bd234", + "name" : "0xeff5cf0fe0422d6424", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 147266045 +}, +{ + "ETH_account" : "0x2b2482f19bc931aca3e3cfd77f1869fb1a196e43", + "name" : "0x2b2482f19bc931aca3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 392420000 +}, +{ + "ETH_account" : "0x4e5223aa4a4d443b284ee6bd6fdacb6431d5b70b", + "name" : "0x4e5223aa4a4d443b28", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 275536605 +}, +{ + "ETH_account" : "0x31a974839911e593ced3ac9402baa12edef9172e", + "name" : "rdship", + "publicKey" : "SPH5SdjDEy1ydtExURVpEuZ4WLBMLJr9umyG4seYDjCnnXShuhqcQ", + "balance" : 5595000000 +}, +{ + "ETH_account" : "0xfa332f70063f638ea56e1fb9d3ec11a9a3062ca3", + "name" : "0xfa332f70063f638ea5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 190235757 +}, +{ + "ETH_account" : "0xba43b1ce305c39c829efcb116d3bdf6dc4ed500e", + "name" : "0xba43b1ce305c39c829", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1416000000 +}, +{ + "ETH_account" : "0xca96f4bc53be3d6e6f80c2adf3268c7a5fb23f34", + "name" : "0xca96f4bc53be3d6e6f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 160000000 +}, +{ + "ETH_account" : "0xd24c013b2452b1e434fbdd4dbc92652c374d9209", + "name" : "sphtxswapabc", + "publicKey" : "SPH5MTaq2RH3JWJfjatMPZbCNwnNch8xht2KdXwktUM1ocT5CGmvH", + "balance" : 16548801670 +}, +{ + "ETH_account" : "0x3edde9346c0f5b015d9a49f185c759db5eea9009", + "name" : "0x3edde9346c0f5b015d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 981660382 +}, +{ + "ETH_account" : "0x00799bbc833d5b168f0410312d2a8fd9e0e3079c", + "name" : "0x00799bbc833d5b168f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1156000000 +}, +{ + "ETH_account" : "0xdf6620bf2e81dbb287f3bd6c070f1d1a60be03e0", + "name" : "0xdf6620bf2e81dbb287", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20358952847 +}, +{ + "ETH_account" : "0x0b467d294d35fcfdda05aaacdf818d64c918d5fe", + "name" : "0x0b467d294d35fcfdda", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 840613 +}, +{ + "ETH_account" : "0x1303ebc398664f2916c97ef8faea7031cad38929", + "name" : "0x1303ebc398664f2916", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1535700000 +}, +{ + "ETH_account" : "0x2b1e3fca761feb4140fae66609bb765f14bb1f20", + "name" : "0x2b1e3fca761feb4140", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4000000000 +}, +{ + "ETH_account" : "0x42b29f2cb1fdc9a8e2b3111b7116d323fa1e114e", + "name" : "0x42b29f2cb1fdc9a8e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 397508074 +}, +{ + "ETH_account" : "0x8d355495d51683287b777ae1b25fe7ab1f33887b", + "name" : "0x8d355495d51683287b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53600000000 +}, +{ + "ETH_account" : "0xbd3c0e89aaca8f35eebc139a0b4883e7922e6af5", + "name" : "0xbd3c0e89aaca8f35ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1209031300 +}, +{ + "ETH_account" : "0x64e7e6b48640e068e47e1e9059d011138e39158f", + "name" : "htecsphtx", + "publicKey" : "SPH6dpDuBoQ9cxKRepj1kzNxKydY6iydy6Pq1Q9LP91eAzLjuqUtE", + "balance" : 2523997097 +}, +{ + "ETH_account" : "0x8b3407a964510ebbd67d1c68878bb48cf1df8706", + "name" : "0x8b3407a964510ebbd6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39 +}, +{ + "ETH_account" : "0x94c150e63eb20cfa9b6bd7ac817caf32e6e05177", + "name" : "0x94c150e63eb20cfa9b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0xa96ae2438a7beb34f5ffbb722db81f08a1edacdb", + "name" : "horebez", + "publicKey" : "SPH5yRHYE5RV2etBVhpttbYU8NkRmW1bSCpw7faJfsAKB7ak8Pb95", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0xa4ed22e16ec4eb6a24c307062ac2270c790ada18", + "name" : "dancingtank", + "publicKey" : "SPH82fwb2yiy2JjJyLMU3DUW1bjCAiZc8tnUBE7FHMKZLWHoqpi4V", + "balance" : 8704000000 +}, +{ + "ETH_account" : "0xc4a1abcdb11b95d3111d543b1e23d6c74f2acba1", + "name" : "0xc4a1abcdb11b95d311", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xf6b7016ccad37d3f4d94072a92b02e410464f053", + "name" : "0xf6b7016ccad37d3f4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4830000000 +}, +{ + "ETH_account" : "0xfba37a53bd54832a80f5d87883e8d062defa56ac", + "name" : "0xfba37a53bd54832a80", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13020000000 +}, +{ + "ETH_account" : "0x0d08d1bd7d48cf8c169433ed518e4421e9622518", + "name" : "0x0d08d1bd7d48cf8c16", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4711424601 +}, +{ + "ETH_account" : "0x94f09ca5d8d15a8383f66e850ca0a7cb651a80e1", + "name" : "0x94f09ca5d8d15a8383", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 480715632 +}, +{ + "ETH_account" : "0xed881bdfcb9529d7770403f2b86697a4bc0cdf62", + "name" : "m65bim", + "publicKey" : "SPH84uxdUDnji7uDighnJbFwfSEvDMfWWWtC9wJwkqwYiKBJ7cBVa", + "balance" : 996731116 +}, +{ + "ETH_account" : "0xeec3f1c5fcbec804775661391b2c83bae6294a0c", + "name" : "0xeec3f1c5fcbec80477", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2263716536 +}, +{ + "ETH_account" : "0x3ddbee801becf26b8d2d8e071e5b76efa29355ab", + "name" : "0x3ddbee801becf26b8d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 743704000000 +}, +{ + "ETH_account" : "0x1ba6ccce70381b5abae6ae63fbc161e84ca7f559", + "name" : "0x1ba6ccce70381b5aba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 288749070 +}, +{ + "ETH_account" : "0xc052ff0367c20aa470f077b41311ccde3c1f4a6b", + "name" : "0xc052ff0367c20aa470", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18500000 +}, +{ + "ETH_account" : "0xf2f38bda472f1852546c9f547856d0f7711e55fb", + "name" : "0xf2f38bda472f185254", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5850049300 +}, +{ + "ETH_account" : "0xf2419862a8180a4b7c28e1676669a45bf3096fae", + "name" : "0xf2419862a8180a4b7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16747235000 +}, +{ + "ETH_account" : "0x34d79ac362a199b3756538732e7c0b3f599cd442", + "name" : "0x34d79ac362a199b375", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3516323120 +}, +{ + "ETH_account" : "0xc9be3c3cab7aca549b6330d88e264ee60f89e2c5", + "name" : "0xc9be3c3cab7aca549b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1663697021 +}, +{ + "ETH_account" : "0x9e125bdaf3cb6f7fb01700203fb380df96e46c9d", + "name" : "juju", + "publicKey" : "SPH7HmHxvYFSz3qtKBXxn8pE49rCVF3jV5Nehkxj9zWhQDnhQ8jbX", + "balance" : 301000000 +}, +{ + "ETH_account" : "0x3c0edd20f8813b79ef30cc6f57ea1ca45ae74aee", + "name" : "0x3c0edd20f8813b79ef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1471481999 +}, +{ + "ETH_account" : "0xf443399d433a546d7434e6107deac3aa867902ed", + "name" : "0xf443399d433a546d74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 958 +}, +{ + "ETH_account" : "0xc2be618971e364803d1a11b10af111688a265efa", + "name" : "0xc2be618971e364803d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7000000000 +}, +{ + "ETH_account" : "0xbdf44236d13649c3c3cd3737061558db2dd0b365", + "name" : "0xbdf44236d13649c3c3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11999900 +}, +{ + "ETH_account" : "0x5bfc2bda4e00a4e20ecb4bbbf6a5521f9fe47590", + "name" : "0x5bfc2bda4e00a4e20e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7414000000 +}, +{ + "ETH_account" : "0x7bda6b83351ea1cbe6e794b11bf76966c466152c", + "name" : "0x7bda6b83351ea1cbe6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2337120000 +}, +{ + "ETH_account" : "0x54a4a021c2fa8a5d5d5b9272e488e2654591c8e6", + "name" : "0x54a4a021c2fa8a5d5d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 557 +}, +{ + "ETH_account" : "0x20551a8c235242949bbec22302ff5cc5dda6bfd1", + "name" : "0x20551a8c235242949b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4455 +}, +{ + "ETH_account" : "0x67226186385b2368e6a631a56374909dfe0fb454", + "name" : "cryptogregi", + "publicKey" : "SPH5m7V5Dj8ewt1dKd9Vy23yLs5Ugi7DiykDYne6F8VgMPH7atfAa", + "balance" : 2037400000 +}, +{ + "ETH_account" : "0x5999953a0f024f1a019d38b50e8197bc71ae3200", + "name" : "cssophiacoins", + "publicKey" : "SPH5pKvSsbyTfuyxwR9LkrAg3nxdGw8CpEJPjrZQS5SRWMV8qt5jW", + "balance" : 2503092892 +}, +{ + "ETH_account" : "0x5b129dd524ee7d567fd12da3392ec684bddb702a", + "name" : "0x5b129dd524ee7d567f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1061710870 +}, +{ + "ETH_account" : "0xb2888de6fffc0860d6fdfe03af14d4ed973a5a9f", + "name" : "0xb2888de6fffc0860d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000000 +}, +{ + "ETH_account" : "0x4d3a2fb7eeec877b88753413e2fcec14f61b8997", + "name" : "0x4d3a2fb7eeec877b88", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1074680541 +}, +{ + "ETH_account" : "0xee3297dcf0299131acc96564e5dbc2bdd9df4947", + "name" : "0xee3297dcf0299131ac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 998504 +}, +{ + "ETH_account" : "0x7e494a77dab5b972c178c4a1e0ea851834f570f5", + "name" : "0x7e494a77dab5b972c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2013556884 +}, +{ + "ETH_account" : "0x5b8c225b23a817fd7ee8daf8e6a00b757612cca5", + "name" : "witus", + "publicKey" : "SPH6Vo6DE3ZAViYKx6NvWQRwYQqJVCPjjPbQQV79TnoarW2fZNHh1", + "balance" : 519069000 +}, +{ + "ETH_account" : "0x767262032cd6d0be1df9560aed3f5bd4d287224c", + "name" : "0x767262032cd6d0be1d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1133000000 +}, +{ + "ETH_account" : "0xe1134d4fb86ca1b7497911423597b4393efef149", + "name" : "0xe1134d4fb86ca1b749", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13507667150 +}, +{ + "ETH_account" : "0xd2dabcf616bbddfa6fd6db306e66b4fad6b4b149", + "name" : "0xd2dabcf616bbddfa6f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5075009854 +}, +{ + "ETH_account" : "0xd1efbcb4d0aadc07a8ee15f2acbac9b4bc2fc366", + "name" : "0xd1efbcb4d0aadc07a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22234000000 +}, +{ + "ETH_account" : "0x2ef7950223f49f6fbe71c8db48c43a4170dcf4ca", + "name" : "0x2ef7950223f49f6fbe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 399000000 +}, +{ + "ETH_account" : "0xb9e005d12fad3460a308c931c2f2b3f4a9ef7323", + "name" : "0xb9e005d12fad3460a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0xc1913e987817d415dfeaa4896670651d783e5fc4", + "name" : "tommyj", + "publicKey" : "SPH5i3LKk9m7d1WBGewvvjNiKrFr2fbmqnWafQHeqSkuWVvQZo9CK", + "balance" : 409348964 +}, +{ + "ETH_account" : "0x2b5634c42055806a59e9107ed44d43c426e58258", + "name" : "kucoin", + "publicKey" : "SPH6awUuZ83QWQA9u8vabaLm3fTTJ3DvcSh7YEcmoMeAe8fMhW1HQ", + "balance" : 23546098111977 +}, +{ + "ETH_account" : "0x6d2e49581f5810f6cd9ccb189344dd5e9269da8a", + "name" : "0x6d2e49581f5810f6cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 234789 +}, +{ + "ETH_account" : "0x8eb56fb566eb0662522e3e7bda27ec697bfbbf53", + "name" : "0x8eb56fb566eb066252", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2993081157 +}, +{ + "ETH_account" : "0x87de6f0b3940398e0a14cdd43a6d01011a5b94b0", + "name" : "0x87de6f0b3940398e0a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 95842 +}, +{ + "ETH_account" : "0xea6e3e41ebaa09d550d3c3f0d72971b3c5ccc261", + "name" : "0xea6e3e41ebaa09d550", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 171923 +}, +{ + "ETH_account" : "0xa5fe521a60a3b3a1871e0507640b778002f54a41", + "name" : "0xa5fe521a60a3b3a187", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2021 +}, +{ + "ETH_account" : "0xbe7e680704e6bb0b19fa9058b59176d04260bc33", + "name" : "0xbe7e680704e6bb0b19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 299000000 +}, +{ + "ETH_account" : "0x590e9a4a7829c6e86ee98f53978d09f60951558f", + "name" : "0x590e9a4a7829c6e86e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6991999900 +}, +{ + "ETH_account" : "0x8615e4615dade2e0dbb4e327c0362c0b02d9ca9b", + "name" : "0x8615e4615dade2e0db", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 828002518 +}, +{ + "ETH_account" : "0x71d2c1f4a3e80978738cc7aeed8a49e94083c3b8", + "name" : "0x71d2c1f4a3e8097873", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 931000000 +}, +{ + "ETH_account" : "0x7c4a3bdeb01ea3a1a2419128a6b4caeeb03b438f", + "name" : "0x7c4a3bdeb01ea3a1a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1032631600 +}, +{ + "ETH_account" : "0xb64051d0ad12652dee6ae034a0f9508932e44984", + "name" : "0xb64051d0ad12652dee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 373636400 +}, +{ + "ETH_account" : "0xee4aaf86c47a3d2bf2098253d72133599f88d8c2", + "name" : "0xee4aaf86c47a3d2bf2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1552993000 +}, +{ + "ETH_account" : "0x8e04dd2b48cd552346990212de3e794985debf2e", + "name" : "bravo", + "publicKey" : "SPH6Bg7EzCGoxCAoZbSN2NWWAbUbweEevDQD14TeT84eJu7DrQ641", + "balance" : 360420000 +}, +{ + "ETH_account" : "0x759dd38eb07c49a08f4617923876e6872ad67f0e", + "name" : "0x759dd38eb07c49a08f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 38000000 +}, +{ + "ETH_account" : "0x3cb838156d50d480de23a7f9497b03ac39d7ed54", + "name" : "0x3cb838156d50d480de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 281000000 +}, +{ + "ETH_account" : "0x5a96e1b5c3a8c9227b6ce3059dbfc90f7fd6a35e", + "name" : "0x5a96e1b5c3a8c9227b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 87068 +}, +{ + "ETH_account" : "0xdac59ec90895d084616b779f2dc305a137476a03", + "name" : "0xdac59ec90895d08461", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000 +}, +{ + "ETH_account" : "0x8c2a6e713bb18ce1a3cc7214eb198adcec3e3913", + "name" : "0x8c2a6e713bb18ce1a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1206000000 +}, +{ + "ETH_account" : "0xc097743371f2a672c176191b4dd46575c38510a7", + "name" : "0xc097743371f2a672c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 309000000 +}, +{ + "ETH_account" : "0x30635d06400e9b7208a918df934e080df6801119", + "name" : "0x30635d06400e9b7208", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 844000 +}, +{ + "ETH_account" : "0xc5786126b3ae061620859b04d418e5427ba51bc1", + "name" : "sparverius", + "publicKey" : "SPH4wKruLUNwVeVnZtUSb9UPDwpybYaR8WMsmKvJDRzr25TSN4Zok", + "balance" : 12524666575 +}, +{ + "ETH_account" : "0x9300909a77e765872022e7db5dfceb1330c836fb", + "name" : "0x9300909a77e7658720", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80079600 +}, +{ + "ETH_account" : "0xfd3ba7c963db22d0659a982b5e9ef8a89429626b", + "name" : "0xfd3ba7c963db22d065", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2543000000 +}, +{ + "ETH_account" : "0x961cec32f516b85457f6ce4042ed260b5604972d", + "name" : "0x961cec32f516b85457", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 436000000 +}, +{ + "ETH_account" : "0x73f836b5014ee697c6e0419fbb8d6ae704b5082d", + "name" : "0x73f836b5014ee697c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 225890508 +}, +{ + "ETH_account" : "0x0dc81ca2ce880403bf05207c3ea8ce946e038d82", + "name" : "0x0dc81ca2ce880403bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25004967000 +}, +{ + "ETH_account" : "0x7755486f7afc6b88be701dce7a25fc473d0cd21e", + "name" : "0x7755486f7afc6b88be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x2411b10c48dc4a04b1bca7fee62b0ad81a76e2d7", + "name" : "0x2411b10c48dc4a04b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000459400 +}, +{ + "ETH_account" : "0x05f14c683e395b8eebf00ac6e6b953f565a15353", + "name" : "0x05f14c683e395b8eeb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0xb651f5d7f78f4fd7f6c14a79c9bdfa7b272952e0", + "name" : "0xb651f5d7f78f4fd7f6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 461000000 +}, +{ + "ETH_account" : "0x613f25cf604d0849f2a973b5ab5ac82ad377dcd8", + "name" : "0x613f25cf604d0849f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 241849500 +}, +{ + "ETH_account" : "0x4069ec8aa6cf571b25282a1cc0f6fbf1722450f0", + "name" : "0x4069ec8aa6cf571b25", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 344095587 +}, +{ + "ETH_account" : "0x39deb852060a957945783eed103fc944e18b6bab", + "name" : "0x39deb852060a957945", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2934239700 +}, +{ + "ETH_account" : "0xcdc33510be11d0f599dffad1db278e7a809047d7", + "name" : "0xcdc33510be11d0f599", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50 +}, +{ + "ETH_account" : "0x0d5794e434b5ee28280cd83ceaaf43ad38faf4b9", + "name" : "0x0d5794e434b5ee2828", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x61a54ef268b150d171b7c81990f05b88ca13c1e4", + "name" : "0x61a54ef268b150d171", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2141074600 +}, +{ + "ETH_account" : "0x4966e8c4ccc0931c052a07bfeba5c9b962af5bbc", + "name" : "0x4966e8c4ccc0931c05", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 998630000 +}, +{ + "ETH_account" : "0x8aa9773c73323a43ec8b9917ac39e5b85f085840", + "name" : "0x8aa9773c73323a43ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 213000000 +}, +{ + "ETH_account" : "0x6a19bc8ff9525684a9e2ac9c7cc38f44be393475", + "name" : "0x6a19bc8ff9525684a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 115000000000 +}, +{ + "ETH_account" : "0x3c7279d9c7c17636b5f8fd11db753c22f04a5b15", + "name" : "0x3c7279d9c7c17636b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4000000000 +}, +{ + "ETH_account" : "0x082e72b8c7f4bd0c5a1c2cfabe83155be6735370", + "name" : "0x082e72b8c7f4bd0c5a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 683671993 +}, +{ + "ETH_account" : "0xa0069f46d715dfd7e83cc97292f11bc49c0d0979", + "name" : "0xa0069f46d715dfd7e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7731819228 +}, +{ + "ETH_account" : "0x565a786ee7ceb39d88cb269ed5415804c899a7e7", + "name" : "0x565a786ee7ceb39d88", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 35 +}, +{ + "ETH_account" : "0xf1f89275ad659748ed4e53c555a1beac0985958a", + "name" : "0xf1f89275ad659748ed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1568670000 +}, +{ + "ETH_account" : "0xa4e06fd754484592cbeff90144a67dae514a5617", + "name" : "0xa4e06fd754484592cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1205000000 +}, +{ + "ETH_account" : "0x6c131067001960bb7b2fc1ad239a9ea7f18cd2c6", + "name" : "0x6c131067001960bb7b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3743580 +}, +{ + "ETH_account" : "0xbd384fada55eb3af2d9d209d9129cbc99db9bf1e", + "name" : "0xbd384fada55eb3af2d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3300000000 +}, +{ + "ETH_account" : "0x2d7937f836a0de78c48cb1bc83871bfae243c4b7", + "name" : "0x2d7937f836a0de78c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 118677249 +}, +{ + "ETH_account" : "0x6dcd44b0ee5d4648242f04ca159e7f22d3b26ca8", + "name" : "0x6dcd44b0ee5d464824", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1267271923 +}, +{ + "ETH_account" : "0x2c9ea5e27fd8e6f4bd44b1c829f072ac76b9c537", + "name" : "0x2c9ea5e27fd8e6f4bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18429 +}, +{ + "ETH_account" : "0xcf92eb9d20aca421829bf59f8eaf5d0840c4fddc", + "name" : "lalatoc", + "publicKey" : "SPH8Gy5bYZvNZxoaftzZ9sD8vwkghkermszPUdYypHHmvJunfVE2N", + "balance" : 20409610029 +}, +{ + "ETH_account" : "0x5bdba255d8e3ac8e249b0b167837e9fd56ca9f57", + "name" : "newshptx", + "publicKey" : "SPH6FGuAQDD3bhg31YPtczXZCFk62LGRAmaAYCfmFcSYy19uss316", + "balance" : 12641474900 +}, +{ + "ETH_account" : "0xc1d81fa8de0dc07887424250fe067088fd5ac8fd", + "name" : "0xc1d81fa8de0dc07887", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 97332900 +}, +{ + "ETH_account" : "0xb76f1deb778d6ddccc3bea50f70b6e746117a8e1", + "name" : "0xb76f1deb778d6ddccc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 97332700 +}, +{ + "ETH_account" : "0x0a61e655ed7d802e70106919de4d1f56691ff7ca", + "name" : "0x0a61e655ed7d802e70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 396730000 +}, +{ + "ETH_account" : "0xf8700dffabac07a280069419298545387b4d5357", + "name" : "0xf8700dffabac07a280", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x040c10d48f4be1483745a2ef40de645659bc5eeb", + "name" : "0x040c10d48f4be14837", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 511577300 +}, +{ + "ETH_account" : "0x5aa59428f984afa4a8a38a7adeef4f5d3c43fb8b", + "name" : "0x5aa59428f984afa4a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8574383000 +}, +{ + "ETH_account" : "0x8b3f2b9c483fa7a2da79e59373af3ed4f76eaf3e", + "name" : "0x8b3f2b9c483fa7a2da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3026442536 +}, +{ + "ETH_account" : "0x05e003ec40da90eaea91589986258773b29b5639", + "name" : "0x05e003ec40da90eaea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 27803000000 +}, +{ + "ETH_account" : "0xc0699c6bbf7150238a3c6f63e25f77f224c15d8a", + "name" : "0xc0699c6bbf7150238a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 419000000 +}, +{ + "ETH_account" : "0xe6c39859f899aab60fa7eeccd0026ac244bcf299", + "name" : "panxiaolong", + "publicKey" : "SPH6snBCxfnCxDBykqCGEJgqjyJEbCqXnM1iR8ZXCt5tgvVzacRQA", + "balance" : 73080067300 +}, +{ + "ETH_account" : "0x5c8789556781bb67b7d36f02cbcfccf71f82cfb2", + "name" : "0x5c8789556781bb67b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1780825332 +}, +{ + "ETH_account" : "0xf3e8613f15cadc6690ddfd2c1b283e05df54f6f1", + "name" : "0xf3e8613f15cadc6690", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000000 +}, +{ + "ETH_account" : "0x909627cac0027407602d84ac380f736faa4b7493", + "name" : "0x909627cac002740760", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 174000000 +}, +{ + "ETH_account" : "0x546d6d8a57ec6e645a8a0572258385d0356aeffb", + "name" : "0x546d6d8a57ec6e645a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 306730000 +}, +{ + "ETH_account" : "0x78ac1fd3bed6cef2200a6f357c79d139f7f93d13", + "name" : "0x78ac1fd3bed6cef220", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19582000000 +}, +{ + "ETH_account" : "0x388e418f1557cd16f4c32de629d1c88a95916688", + "name" : "0x388e418f1557cd16f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2723539000 +}, +{ + "ETH_account" : "0xbadffcb79efe57e954fd79621b29b0c2dc170171", + "name" : "0xbadffcb79efe57e954", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 117989 +}, +{ + "ETH_account" : "0x7ad0f5daf1eb75a4d14014aa0672cc7488861b41", + "name" : "0x7ad0f5daf1eb75a4d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1023266374 +}, +{ + "ETH_account" : "0xea96eb430387dbb50f0f9d79ca97f80ac43a4861", + "name" : "0xea96eb430387dbb50f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 71 +}, +{ + "ETH_account" : "0x5c8b909a51995781a84846253fc7b0a590dbe206", + "name" : "minimalwerk", + "publicKey" : "SPH6xknFcKSDXhfpg38pyQ5X19eykLy374PXg5aJP2yRs4EMGPP2K", + "balance" : 616393200 +}, +{ + "ETH_account" : "0xcdaf2a96cb086c86cc5574bcdc49f71c52a8193e", + "name" : "0xcdaf2a96cb086c86cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0xa9fc0fcba072aa306d71610ddff6a3529375e33d", + "name" : "0xa9fc0fcba072aa306d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1826455929 +}, +{ + "ETH_account" : "0xeaf10f9a4f88b44b9d6890d87228fd9255ef0a7c", + "name" : "0xeaf10f9a4f88b44b9d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 94143268 +}, +{ + "ETH_account" : "0xb137d8baeef2e9b14e82f455dbbf6fe837a4eac9", + "name" : "0xb137d8baeef2e9b14e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 749900 +}, +{ + "ETH_account" : "0x3375e4e2575a195542793277a064a99e61597864", + "name" : "0x3375e4e2575a195542", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 80000000000 +}, +{ + "ETH_account" : "0xa001e93495ee1e750a46acb6c3962bfabb25060a", + "name" : "0xa001e93495ee1e750a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 257598800 +}, +{ + "ETH_account" : "0xd44a438bd7c154897640a80a86d1baa583b06c91", + "name" : "0xd44a438bd7c1548976", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 950000 +}, +{ + "ETH_account" : "0x17875b3fa4d4c5bc8367b5b6f01455dedfc1a336", + "name" : "0x17875b3fa4d4c5bc83", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 842730000 +}, +{ + "ETH_account" : "0xe49a94eac86b506d47baf735266d077f30354289", + "name" : "0xe49a94eac86b506d47", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 122101700 +}, +{ + "ETH_account" : "0x40be75a0b29b43faa148f56719fa87f87f3f2341", + "name" : "0x40be75a0b29b43faa1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4490000000 +}, +{ + "ETH_account" : "0x5e19929fcf62f3db8f90140c4eb0e3b6babdf59d", + "name" : "0x5e19929fcf62f3db8f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 481192307 +}, +{ + "ETH_account" : "0x6de71d18a535f4fdfab67e321d2b5d7998ee54a6", + "name" : "0x6de71d18a535f4fdfa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 96895000 +}, +{ + "ETH_account" : "0xdeab330800d9be00cfb3964828b66c78b7585aad", + "name" : "0xdeab330800d9be00cf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 615176000 +}, +{ + "ETH_account" : "0xd565de62e7c56fa99996d9d379a1f0a0d0960bb2", + "name" : "0xd565de62e7c56fa999", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15040000000 +}, +{ + "ETH_account" : "0x410e9a6a012d95b5f4350d6bf813ee5d2755f841", + "name" : "0x410e9a6a012d95b5f4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3047132900 +}, +{ + "ETH_account" : "0x37325f622e1066ba72bc88e74f727112df7f47df", + "name" : "niki", + "publicKey" : "SPH7oZoRtWyNPyfb1JW41yNTh4uY1pA3UDjnmcS8Qg5ggFZTy6JkP", + "balance" : 73000000 +}, +{ + "ETH_account" : "0x89f0948a501c778b7a098c677f13d832a578ab07", + "name" : "0x89f0948a501c778b7a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 134909162 +}, +{ + "ETH_account" : "0xae20a4f057acdd672bb51071d52321d8a7565d1b", + "name" : "noxzi", + "publicKey" : "SPH8ECicuKRecjRV5p4wgyQSYbQtyWMyTChpLTWjxSfxMsWzpMqsJ", + "balance" : 3662373078 +}, +{ + "ETH_account" : "0xfc37140958f0da16efbd37e1ccc92a55cd8ea198", + "name" : "0xfc37140958f0da16ef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4628185700 +}, +{ + "ETH_account" : "0x87e1129e02a40e868a6d785b73a98c1db42b62bb", + "name" : "0x87e1129e02a40e868a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1982910000 +}, +{ + "ETH_account" : "0xe9fd2a4ec60514187da318194efc66e23dff35b6", + "name" : "0xe9fd2a4ec60514187d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000000 +}, +{ + "ETH_account" : "0x1485ac14924480a35016b0675f706ccdbc7d02ab", + "name" : "0x1485ac14924480a350", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5498363667 +}, +{ + "ETH_account" : "0xd1e84325b71492ff1b21638e8135c51aafd27501", + "name" : "0xd1e84325b71492ff1b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24847000000 +}, +{ + "ETH_account" : "0x2618fd58c2ae8b5a8b62fa1991bd77e3fc28332c", + "name" : "0x2618fd58c2ae8b5a8b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 295000000 +}, +{ + "ETH_account" : "0xaecbad313cb21cb6922ed642a3cca6dff0367418", + "name" : "0xaecbad313cb21cb692", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65540000 +}, +{ + "ETH_account" : "0x8bd2590979820e2b4c674613bb88e23b260b9b37", + "name" : "0x8bd2590979820e2b4c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 110000000 +}, +{ + "ETH_account" : "0x8fd35112aa8a75b8a33e5e1bf59b2b0f3d7e22ba", + "name" : "jakemonster", + "publicKey" : "SPH7CV3vjiqy9dWxFHWtyw8yV3mpXDEEFHKuVtwCdFy6LNydJ9ijn", + "balance" : 331073300 +}, +{ + "ETH_account" : "0x644f1834b408597a75cce9c6dd808a559ff0d480", + "name" : "0x644f1834b408597a75", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9966000000 +}, +{ + "ETH_account" : "0x24741218e4ab0cf1ad4452cc1b6cf3eb1a34492d", + "name" : "0x24741218e4ab0cf1ad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3499999864 +}, +{ + "ETH_account" : "0xef4fc88f1dd64b21cca9f33c5dd6caeee6946f3a", + "name" : "0xef4fc88f1dd64b21cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 512977000 +}, +{ + "ETH_account" : "0x05a61522c2497f4dfe51621680e4d2cd68c70936", + "name" : "0x05a61522c2497f4dfe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 587800800 +}, +{ + "ETH_account" : "0x7577deaaf4ca6d234d61bc5b723f22c226e379c2", + "name" : "0x7577deaaf4ca6d234d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 111900000000 +}, +{ + "ETH_account" : "0xa2c873e9383ad392fec8934e0d8b95918917bef8", + "name" : "0xa2c873e9383ad392fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 185011000000 +}, +{ + "ETH_account" : "0xde549b3b011362ea3fbfc90553fe9cb8bfb1f7de", + "name" : "0xde549b3b011362ea3f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 194028800 +}, +{ + "ETH_account" : "0x1a25a0908184461d599868c53bb49087cde44dce", + "name" : "0x1a25a0908184461d59", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9058278255 +}, +{ + "ETH_account" : "0x4687466ac9bd165ca3bf2f6b6446822560b9fc3d", + "name" : "0x4687466ac9bd165ca3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 131257000000 +}, +{ + "ETH_account" : "0xa66a74907e9860a6a5815001e90990f032701186", + "name" : "0xa66a74907e9860a6a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33920000000 +}, +{ + "ETH_account" : "0x0a5ad8f54efeed4b5281fcf3a28d5f26bb21177c", + "name" : "0x0a5ad8f54efeed4b52", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 930000 +}, +{ + "ETH_account" : "0x8bc85dd31ce813845a1f03a94ecfc9166910d811", + "name" : "sophiatxaj", + "publicKey" : "SPH6rjy8TF24AhVCRQFXEdcZ7S8dj7mGbNnzvvmjh5xCEzaYpyjGi", + "balance" : 945754739 +}, +{ + "ETH_account" : "0x6abc1ac636c530a100cc18d6ea84551b8fe91019", + "name" : "0x6abc1ac636c530a100", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 378305000 +}, +{ + "ETH_account" : "0xa380d05ddd16f2a8fb67cac535fe0b2e400f0133", + "name" : "0xa380d05ddd16f2a8fb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3255932766 +}, +{ + "ETH_account" : "0xe7c215145eed6775c5c0773c8c7e36a6ab65d7c5", + "name" : "whatsappy", + "publicKey" : "SPH5XS1CDBQKDkbse6sNWbK1qaT1HMyTeh583duebQoNp3wszoxDh", + "balance" : 639641000 +}, +{ + "ETH_account" : "0xc37c7f0fa20d4c4079a647e00666e000069ae779", + "name" : "0xc37c7f0fa20d4c4079", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000000 +}, +{ + "ETH_account" : "0x7d8f575d070f0ee24b9110a1c95e2952ec6fe851", + "name" : "0x7d8f575d070f0ee24b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0xf9de704776950e4c47c1a2649d3055929338c7d9", + "name" : "0xf9de704776950e4c47", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 386730000 +}, +{ + "ETH_account" : "0x87a97204cc8b8a8ef863fca9bc60870e3f34f5cd", + "name" : "0x87a97204cc8b8a8ef8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1582161374 +}, +{ + "ETH_account" : "0xd2ab823855f3cbd2aa97b50c36681587897c3c14", + "name" : "0xd2ab823855f3cbd2aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10197337633 +}, +{ + "ETH_account" : "0x3126a5b5ad153d1c1db85c83d312501888d87e7f", + "name" : "0x3126a5b5ad153d1c1d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7000000000 +}, +{ + "ETH_account" : "0xf9dc7db12a6b46dc229cdea6804809b8f34cdc69", + "name" : "0xf9dc7db12a6b46dc22", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 94 +}, +{ + "ETH_account" : "0x3b31ce3106c567ae07e1ba94ccdd86645946d332", + "name" : "0x3b31ce3106c567ae07", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3897176901 +}, +{ + "ETH_account" : "0xd575c470ae9cef23c3665bd85bcdf2998ab0b227", + "name" : "0xd575c470ae9cef23c3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2574361112 +}, +{ + "ETH_account" : "0x77388c9fee4f1a3cab573451d6dc9ebdb92f625b", + "name" : "0x77388c9fee4f1a3cab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1678312000 +}, +{ + "ETH_account" : "0x281c2c8720cf75d27b64d3cf67e5b227cc36890c", + "name" : "0x281c2c8720cf75d27b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 532700000 +}, +{ + "ETH_account" : "0xa291d8a5108f72fd3d89ad9f87e71f95ba017b12", + "name" : "0xa291d8a5108f72fd3d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2476000000 +}, +{ + "ETH_account" : "0x45850f32422f3fd829f273128330df898c9047cc", + "name" : "0x45850f32422f3fd829", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 122423000 +}, +{ + "ETH_account" : "0x75682337a195ee36f19022a2e8ca3962caeb3ea5", + "name" : "0x75682337a195ee36f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1971150700 +}, +{ + "ETH_account" : "0x3223ae8bb0579cd90811839206d55497fdd8def9", + "name" : "malcain", + "publicKey" : "SPH4xZZ9oVZvjc7NQ3o9twxyi4Zj3cLf1KDKhvcVF8Jn7L9kwz7Ai", + "balance" : 3124531944 +}, +{ + "ETH_account" : "0xbe1c8fa9821261f8d0a01b69d80206c11d886faf", + "name" : "sophiatxmun1", + "publicKey" : "SPH7LjNgTNwjTTqq1qSxMLLyp6iJ2Nts2fcuWCPHBrUNHRs2Urz4C", + "balance" : 2087603700 +}, +{ + "ETH_account" : "0xc1b48e8490be402b0b58decf648a9946c57168b5", + "name" : "blanka", + "publicKey" : "SPH6q4cnN7gmq1MJwymGoihghxjLsBVSR7wG84Yfdt6LhYAdDjK7V", + "balance" : 12987432400 +}, +{ + "ETH_account" : "0x6b3af0f313e449725e709148668c8f4dec6d0453", + "name" : "0x6b3af0f313e449725e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5482000000 +}, +{ + "ETH_account" : "0x38e8db0a4e9d887ea10e0a524e444f13e3abd35a", + "name" : "0x38e8db0a4e9d887ea1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0x3f8e73e4a8c421c08f7d8921d6f66f8c6b0d581f", + "name" : "0x3f8e73e4a8c421c08f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 149242500 +}, +{ + "ETH_account" : "0xc713816183c2190ce06e19d8a9406dff5172d3c7", + "name" : "0xc713816183c2190ce0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 290500 +}, +{ + "ETH_account" : "0x14005e07086026daf0d1040316112df1a287e0b0", + "name" : "0x14005e07086026daf0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4767737900 +}, +{ + "ETH_account" : "0x940a9367c83fb119bd4b031e17d0ad405a8de41f", + "name" : "0x940a9367c83fb119bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65170566600 +}, +{ + "ETH_account" : "0x5475140142b1cc5745bf3cc7cadb42eeba6fc0d0", + "name" : "0x5475140142b1cc5745", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1180348300 +}, +{ + "ETH_account" : "0x96cff2f03acf700213b43c10c00b6627a9631809", + "name" : "0x96cff2f03acf700213", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9106248600 +}, +{ + "ETH_account" : "0xe66c2ae565bf93d3dffde166465c11b05de1f0fa", + "name" : "0xe66c2ae565bf93d3df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 292934186 +}, +{ + "ETH_account" : "0xe302309a8572cb88862f4470a9a34d12d904a10c", + "name" : "0xe302309a8572cb8886", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 874182603 +}, +{ + "ETH_account" : "0xcbec66da6ab27fbb19fde8491aa10e881a29bccd", + "name" : "0xcbec66da6ab27fbb19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1795059814 +}, +{ + "ETH_account" : "0x027fac5e1b28ae4b137c1a328293827b5fe05693", + "name" : "0x027fac5e1b28ae4b13", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 191384771 +}, +{ + "ETH_account" : "0x16f1d1ffd8f6242f8bcc84a9a8823496789be5e7", + "name" : "0x16f1d1ffd8f6242f8b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1054917100 +}, +{ + "ETH_account" : "0x3e22b134bc1ea921cd1b75aff67242159443208c", + "name" : "0x3e22b134bc1ea921cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 180000000 +}, +{ + "ETH_account" : "0x87ee54af47d8117814012218fedff4b1eeb58cc1", + "name" : "0x87ee54af47d8117814", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 483000000 +}, +{ + "ETH_account" : "0x2c7f452416bc083de198042ce04e6556ff2bdb9c", + "name" : "0x2c7f452416bc083de1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4838933800 +}, +{ + "ETH_account" : "0x2fa46c3662f870990d1bbf32130ac14a594a5dc1", + "name" : "0x2fa46c3662f870990d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3821221200 +}, +{ + "ETH_account" : "0xdea3fc0be3414ae05fd1d56dd13c4e34d1256947", + "name" : "0xdea3fc0be3414ae05f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9941005 +}, +{ + "ETH_account" : "0xf502e0ce2aba0a7b9cbacdd57c4208254413aa4e", + "name" : "0xf502e0ce2aba0a7b9c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 691245014 +}, +{ + "ETH_account" : "0x26022f10f52a9c8819fc9d0a2b5f3531f1248cdb", + "name" : "0x26022f10f52a9c8819", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 102420000 +}, +{ + "ETH_account" : "0x5af9d5c1e03ada6755c1c8210bc826594feab879", + "name" : "0x5af9d5c1e03ada6755", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90900000 +}, +{ + "ETH_account" : "0xa22b5680d42516d35890952c56592afc88fd3838", + "name" : "0xa22b5680d42516d358", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 51055118300 +}, +{ + "ETH_account" : "0xc0bbc1a1507911ce3d5980be1e1adab40e060b8c", + "name" : "0xc0bbc1a1507911ce3d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11128193000 +}, +{ + "ETH_account" : "0xf44d0be73a8b798a707b4f76874263df9303ea56", + "name" : "kasperaalsmeer", + "publicKey" : "SPH6DBMvs2hYBTkWNDaugMaNEdeHC5nx6rsgX6MfU7L35eoDngcTU", + "balance" : 4183248577 +}, +{ + "ETH_account" : "0x6ae8ae91b4a89b94600afa8dae311b65a04a25ad", + "name" : "0x6ae8ae91b4a89b9460", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3276750000000 +}, +{ + "ETH_account" : "0xa19354adf18d0acc012333252d55c05a54d5ac47", + "name" : "0xa19354adf18d0acc01", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 650647600 +}, +{ + "ETH_account" : "0x55e10ba92711865c4b7f5b523328b01e57925f54", + "name" : "0x55e10ba92711865c4b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 892000000 +}, +{ + "ETH_account" : "0xc75c1f96b6fd2a7b10bea6f31b3ad6c6ef593699", + "name" : "0xc75c1f96b6fd2a7b10", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1187000000 +}, +{ + "ETH_account" : "0x338480fa130f668aeed3675f4e20d3ba0077bdff", + "name" : "0x338480fa130f668aee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24900000000 +}, +{ + "ETH_account" : "0xdc6e60c2fe5ebac2dc626ba68a231e356ca44676", + "name" : "0xdc6e60c2fe5ebac2dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5937963316 +}, +{ + "ETH_account" : "0x9117f19ca30abe89cef9305067fd33b1475949a3", + "name" : "0x9117f19ca30abe89ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1592290000 +}, +{ + "ETH_account" : "0x2e1bfb63fb937b0d8b5d48983c640677c5cd7eac", + "name" : "cnn", + "publicKey" : "SPH6JH7tb17XLkrab6SSdrm7CjxhjRXXDMTjEwLsHJw9uQgrX2v3q", + "balance" : 1660000000 +}, +{ + "ETH_account" : "0x8ee3c9d7c1312cbde55268e73b9d46a79fdc5247", + "name" : "0x8ee3c9d7c1312cbde5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3307304000 +}, +{ + "ETH_account" : "0x88c4921d54e480471bf5ca61c085b4106440ca7b", + "name" : "0x88c4921d54e480471b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0xec54e6d7864a8a877395451d3822d436a741f25f", + "name" : "0xec54e6d7864a8a8773", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 991000000 +}, +{ + "ETH_account" : "0x38aa05012a184de2829aee24284a899b28331e1f", + "name" : "0x38aa05012a184de282", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3358237209 +}, +{ + "ETH_account" : "0x7b567cc1058ce9225bea18767ce5d567f5adbf89", + "name" : "0x7b567cc1058ce9225b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 850000000 +}, +{ + "ETH_account" : "0x051fcabd1d63bdef155613e805c4ddf105de7c27", + "name" : "0x051fcabd1d63bdef15", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 775000000 +}, +{ + "ETH_account" : "0xcc1a9f40d655b32350621bf055434bced6ae6d8b", + "name" : "0xcc1a9f40d655b32350", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18847581400 +}, +{ + "ETH_account" : "0xa0f1512df2fae05e9a5cf7b4fe2de266c83be5d4", + "name" : "0xa0f1512df2fae05e9a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10739000 +}, +{ + "ETH_account" : "0x71f44750197dc547a536123f8beed998bf4c9765", + "name" : "0x71f44750197dc547a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x13f35c7b31ddbbd555310a903298bfc3b9cd4ce9", + "name" : "0x13f35c7b31ddbbd555", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1400000000 +}, +{ + "ETH_account" : "0x0f2cfc1f1221e3fec16fba19d5e8c09812ce34bb", + "name" : "0x0f2cfc1f1221e3fec1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x89e43d3836c259a7ed168085e1225e1dda5931f4", + "name" : "0x89e43d3836c259a7ed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x790daf3be0eabec9f35db5754dfae01ef4b6a3e8", + "name" : "0x790daf3be0eabec9f3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x184fafb1812e9ba088470a9b18f211872cad8c79", + "name" : "0x184fafb1812e9ba088", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1724009 +}, +{ + "ETH_account" : "0xc34cc135286625bdc6073d93751ce6330ec126b0", + "name" : "0xc34cc135286625bdc6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5600000000 +}, +{ + "ETH_account" : "0x91bd586316bd0110b69033e7442c5dc7fa68576c", + "name" : "0x91bd586316bd0110b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 228629800 +}, +{ + "ETH_account" : "0xeb24986edec817dc346b80dd87678b3cf90f232b", + "name" : "0xeb24986edec817dc34", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39605613400 +}, +{ + "ETH_account" : "0xc065d52c4bd98c262266a8ab348e79a4f6a51ebd", + "name" : "0xc065d52c4bd98c2622", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8006718924 +}, +{ + "ETH_account" : "0x25ff2e40e75a7263c1f79a1d17720d752b3acb41", + "name" : "0x25ff2e40e75a7263c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2996450729 +}, +{ + "ETH_account" : "0x647eeabddb51856225a54853fe8485feb2eb2f5e", + "name" : "0x647eeabddb51856225", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 48496950 +}, +{ + "ETH_account" : "0x427cbcb6726888d9c99eb3cec272ddf18e8f6264", + "name" : "0x427cbcb6726888d9c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 635472030 +}, +{ + "ETH_account" : "0x68e38cc74bce70406f8eb3c82d59de53a9de94f3", + "name" : "0x68e38cc74bce70406f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 247000000 +}, +{ + "ETH_account" : "0xed6b99933f01dd31f396bfa787f5c3499dbadc10", + "name" : "0xed6b99933f01dd31f3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 855000000 +}, +{ + "ETH_account" : "0x851c093b15a463d1195c2f516d4ef10319cc1eaa", + "name" : "0x851c093b15a463d119", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18644649389 +}, +{ + "ETH_account" : "0xedf3625d43279827d03a60530ede7f68fdcf6a32", + "name" : "0xedf3625d43279827d0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1001862000 +}, +{ + "ETH_account" : "0x4372bc66b00887954a8f23d72c73e098918a2bfb", + "name" : "dalecooper", + "publicKey" : "SPH7PvgBcbPxKB9gEhtepJ5jQXCmC6HHMhXmZQfVQw6m4fQFvAdWa", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x95b87c4f3281e88430f1bbaa98573e214e981398", + "name" : "0x95b87c4f3281e88430", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 164088500 +}, +{ + "ETH_account" : "0x1a4acbc074bfeef32cc4a19c45ddbe04fecf97a4", + "name" : "0x1a4acbc074bfeef32c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 493498000 +}, +{ + "ETH_account" : "0x88f9a7585cfa6fc02a34b4d6fdc6670e814dcd1a", + "name" : "0x88f9a7585cfa6fc02a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2145000000 +}, +{ + "ETH_account" : "0x9eafa1b9edab86ee9182b65c4665e4635f1a9e2d", + "name" : "0x9eafa1b9edab86ee91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3591254568 +}, +{ + "ETH_account" : "0xa1521a6eb5d3f195635f4c71c19569d48b6b0dd5", + "name" : "parsa76", + "publicKey" : "SPH7Qn6TH9rsJhEcCMiuajfL3ZLDVzk8T5r3PkY3kRuvXqT9F5Qzn", + "balance" : 130000000 +}, +{ + "ETH_account" : "0x7b1dd86098b47f2d9d55b0139bfb38501ae54aa0", + "name" : "0x7b1dd86098b47f2d9d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0xdb6f47e34ea7b6b4095009e90dfa91d39fbc5cc0", + "name" : "0xdb6f47e34ea7b6b409", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 410710 +}, +{ + "ETH_account" : "0xa1241d8ac45a371e8ccba760c10e0795f6c7c8f8", + "name" : "0xa1241d8ac45a371e8c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 293848645 +}, +{ + "ETH_account" : "0x0c2c2ec01e50afcf66ee7a8358e420a678629717", + "name" : "anysphtxwall", + "publicKey" : "SPH7DPtJxvExyEQsJxeMMVipif439Rtk7jTtTTWrd7mBXzhsGBvUZ", + "balance" : 489751076 +}, +{ + "ETH_account" : "0x136021d786490b0e3178ed863ff569c6d0daa4af", + "name" : "0x136021d786490b0e31", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x80a25606d599a5169800ca11bccdc55e150cba09", + "name" : "0x80a25606d599a51698", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 461859500 +}, +{ + "ETH_account" : "0x8d5e72d6171e99cdcf16a2986027eb3a43d7a7e5", + "name" : "0x8d5e72d6171e99cdcf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 126486087533 +}, +{ + "ETH_account" : "0x2c75ae7123696a55265f9d60c74e885e43bed2d2", + "name" : "0x2c75ae7123696a5526", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 458339000 +}, +{ + "ETH_account" : "0x1feb0ebb04ab2510dd4fd1df55a968d64e6b1e20", + "name" : "0x1feb0ebb04ab2510dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 130925067 +}, +{ + "ETH_account" : "0xabff91777f1373a0102f1bdfc0b3f9df2e33ca66", + "name" : "0xabff91777f1373a010", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3056329162 +}, +{ + "ETH_account" : "0x72ec128cc277e31ca174d59e8f1ffa86a9210733", + "name" : "hootie", + "publicKey" : "SPH8XUtRoh2MP1aLkriRRmWGsJ2pjKFyzUKRYs3wctsxGwaZrmyXc", + "balance" : 1806387300 +}, +{ + "ETH_account" : "0xaab2a925d5879e78d5be0dad3e847c4320051376", + "name" : "0xaab2a925d5879e78d5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4398411819 +}, +{ + "ETH_account" : "0x54bb337189968bc25f6ae6655c406f02a65b19fe", + "name" : "mmm3458", + "publicKey" : "SPH6Gk5wMjt8UEaJ7JPhewwdzrXBFbHTeZCsKKSuCFC13QcAa4mhE", + "balance" : 200459000 +}, +{ + "ETH_account" : "0x69f1c7888cd929953240a9ff346998fb85ea5daf", + "name" : "0x69f1c7888cd9299532", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 157400000 +}, +{ + "ETH_account" : "0x0292698b485e0ff1623afe6a966fc0e83c2b99cd", + "name" : "leoyu", + "publicKey" : "SPH53iGnro9b1mbFNpfEt58ZQDvh365rF812sbbsaBZSAYRhEGckU", + "balance" : 386040425800 +}, +{ + "ETH_account" : "0x519fe9ffa9f6ba4724c8fcbaa0ff03d1d8b6a5ac", + "name" : "0x519fe9ffa9f6ba4724", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 872099521 +}, +{ + "ETH_account" : "0x1e1f00c4e4a9e7947439547e94fd59bc1c393774", + "name" : "0x1e1f00c4e4a9e79474", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 549578579 +}, +{ + "ETH_account" : "0x15b2fc3811434444e0b13df98f1ef5b41f9ad658", + "name" : "0x15b2fc3811434444e0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x79b3dadd217e7cc8aad9bda10abf310356bfef20", + "name" : "0x79b3dadd217e7cc8aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0x1954e2f9ed09e2d616bdadfb91cc0aa1cb80702c", + "name" : "0x1954e2f9ed09e2d616", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 62000000 +}, +{ + "ETH_account" : "0x8d8a520fb36371216420735ef16447b110d25a60", + "name" : "0x8d8a520fb363712164", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4574000000 +}, +{ + "ETH_account" : "0x9628f11c8fbf15df1307ad5284398ad7dcdf573c", + "name" : "0x9628f11c8fbf15df13", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 529999794 +}, +{ + "ETH_account" : "0x984b4eb4554135bed620560dc982adf31701087d", + "name" : "belushiwushi", + "publicKey" : "SPH7VvUkk4De2cfLgrABwFbzqa2J7YD1VLNxiwK5HRxzDVy6FCXpb", + "balance" : 10742604600 +}, +{ + "ETH_account" : "0x2790879f62713135ea123c451a0cb7ed9dd08b3b", + "name" : "0x2790879f62713135ea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1468000000 +}, +{ + "ETH_account" : "0x021f4aa7babb2f66811e43bfe1fca21c368ec106", + "name" : "0x021f4aa7babb2f6681", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0x8375bdffeec568dcf076b6febc4f6f56baadd096", + "name" : "0x8375bdffeec568dcf0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xebde649a46b611cbc144b88a852abf7e0b818bd7", + "name" : "0xebde649a46b611cbc1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x6546b938e33c754b17abeaf69657dae0c7675bec", + "name" : "0x6546b938e33c754b17", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33713000000 +}, +{ + "ETH_account" : "0x42ebe4f4013f5cd6fb02621dc4bc84d70bb8f675", + "name" : "0x42ebe4f4013f5cd6fb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1217000000 +}, +{ + "ETH_account" : "0x454206ed77e1b6f51b90e8ce2d85104df6129d6c", + "name" : "0x454206ed77e1b6f51b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1261000000 +}, +{ + "ETH_account" : "0x5a6fc2de011d93842411aa5f91a0a4acd3feffde", + "name" : "0x5a6fc2de011d938424", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9999 +}, +{ + "ETH_account" : "0x4b7f9b66ff32ad4e7c066785a8b9697cff5394b5", + "name" : "0x4b7f9b66ff32ad4e7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10326426700 +}, +{ + "ETH_account" : "0x1aac4b294873482bb428d7f6a4dab2693fc13739", + "name" : "0x1aac4b294873482bb4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20997281075 +}, +{ + "ETH_account" : "0xfb75d0a34739db0ffaba8f63d9fd0f24fad72903", + "name" : "0xfb75d0a34739db0ffa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 626728743 +}, +{ + "ETH_account" : "0x319acb99505a01fb15b2be6dd1fd2b108318be72", + "name" : "0x319acb99505a01fb15", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20996000000 +}, +{ + "ETH_account" : "0x4915b754c2c45a4705c9700be0df220362213546", + "name" : "0x4915b754c2c45a4705", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1474437000 +}, +{ + "ETH_account" : "0x1a7710954642aefb2ae89a7ff42a72880ddd8505", + "name" : "0x1a7710954642aefb2a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16872937000 +}, +{ + "ETH_account" : "0x8125e8c9641cf603c43edfcfc49ae6ad727e158d", + "name" : "0x8125e8c9641cf603c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50493000000 +}, +{ + "ETH_account" : "0x1ecbd4568f5f80787a70f463b249739d75d1420a", + "name" : "0x1ecbd4568f5f80787a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 312198700 +}, +{ + "ETH_account" : "0xfb1288e1a7e768865a3ee21b486c0c90885e7f4a", + "name" : "tadziusss1", + "publicKey" : "SPH8Z2HnyR6udehViJ4i6AFvuRJksPuKbKSgj7xLSCCDdAjXWD22P", + "balance" : 98000000 +}, +{ + "ETH_account" : "0x4ab8f137ae6c1c2aa4d7f85d02e96e0bfb3af9ab", + "name" : "0x4ab8f137ae6c1c2aa4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xc2c2696d2ac899e42ed0d7937fb5612fb58cfab8", + "name" : "0xc2c2696d2ac899e42e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x57d6c1069a45f7a0d4c7f32c30980f70e7851d6b", + "name" : "0x57d6c1069a45f7a0d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 822325000 +}, +{ + "ETH_account" : "0x427ed4bca47d5918397d8acb14ca3d7d25cf961d", + "name" : "0x427ed4bca47d591839", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1457000000 +}, +{ + "ETH_account" : "0x07b54549c82e17aad5d1690ed492326b81e44b80", + "name" : "0x07b54549c82e17aad5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2264126778 +}, +{ + "ETH_account" : "0x50400b2d4714cfb84cc83a995010ed38b2ec14ac", + "name" : "0x50400b2d4714cfb84c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1221699000 +}, +{ + "ETH_account" : "0xfdbf3e0c9ac0344456cac1dff03cc4d311af064c", + "name" : "0xfdbf3e0c9ac0344456", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1866725568 +}, +{ + "ETH_account" : "0x37b65ef9ba8ee6dce71094f5aee00e7eb9e62d9e", + "name" : "0x37b65ef9ba8ee6dce7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4258000000 +}, +{ + "ETH_account" : "0x4b50462d8432c840124e400226b15b5f6509f5ed", + "name" : "0x4b50462d8432c84012", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23300000 +}, +{ + "ETH_account" : "0xf1332e8a896dbae4aa9f47bae56c5856294aeefe", + "name" : "0xf1332e8a896dbae4aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40000000000 +}, +{ + "ETH_account" : "0xb56fa78b68f514e8a9f014134097a53905ab0f4c", + "name" : "0xb56fa78b68f514e8a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2257298500 +}, +{ + "ETH_account" : "0x58fa1d615a46a3244db453147b3159b046671ca7", + "name" : "0x58fa1d615a46a3244d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33004338200 +}, +{ + "ETH_account" : "0x35e2ffc6b5033dc56b61416e8fe4b3eced176857", + "name" : "scutch", + "publicKey" : "SPH6gW6mgUZ2ftuUk6kTLN357oz4cknUWiw6iLcKvesZxR9KJ37vk", + "balance" : 3992000000 +}, +{ + "ETH_account" : "0x70b2314032cff0ff21288481ca4fd93ae7b3d950", + "name" : "0x70b2314032cff0ff21", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 83000000 +}, +{ + "ETH_account" : "0x084dc66cd1c1d90e9262f7e5d798373c8a96a9e3", + "name" : "0x084dc66cd1c1d90e92", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1971754000 +}, +{ + "ETH_account" : "0xbca762ec97ebf5066d851d01e159928402014ce7", + "name" : "0xbca762ec97ebf5066d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 301460500 +}, +{ + "ETH_account" : "0x34e89c43c545aeb7f1f0b2a185cefea29439eac8", + "name" : "0x34e89c43c545aeb7f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 163430100 +}, +{ + "ETH_account" : "0x22173d154c3dd3c5f7d488368e3fd99ad1e822f9", + "name" : "0x22173d154c3dd3c5f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 235658 +}, +{ + "ETH_account" : "0x4abdf5d200c58d69477876f2fea13e439ce1458d", + "name" : "0x4abdf5d200c58d6947", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2524024000 +}, +{ + "ETH_account" : "0xf4c317c356c22caa121462a81571a275276c52b9", + "name" : "0xf4c317c356c22caa12", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 539443423696 +}, +{ + "ETH_account" : "0xadd0cc9e04c63fab789d278fe8459e542bd2f0ef", + "name" : "sophiatxjeroen", + "publicKey" : "SPH6nFueVpWB1Ut4gcSMZbZtjiYQtchhkzP9rrgBLZTvRdGwKUSD9", + "balance" : 1262264100 +}, +{ + "ETH_account" : "0x2899ccedbb8bb93d251cbdcb1ecf5be9696a5a88", + "name" : "0x2899ccedbb8bb93d25", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1102724000 +}, +{ + "ETH_account" : "0xd6226833094c25d19658af577b9a996fb25b0beb", + "name" : "dimisophiatx", + "publicKey" : "SPH5PnkyL417agctmJEyoaV94BR2tdRLjzjP9FCzLsM6vNnQpRDJD", + "balance" : 15212821400 +}, +{ + "ETH_account" : "0x59281678b69900559eb3e82a4f5fc95054a70335", + "name" : "0x59281678b69900559e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 550000000 +}, +{ + "ETH_account" : "0x1ed0d126970c4e6070d372ee3537476dd93d500a", + "name" : "0x1ed0d126970c4e6070", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 756192946 +}, +{ + "ETH_account" : "0x02e89c4264287e651f862e6afd10ae7dab4f2ddf", + "name" : "0x02e89c4264287e651f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 614930000 +}, +{ + "ETH_account" : "0x223558d22873b22942d79501c276d5badff59b6a", + "name" : "0x223558d22873b22942", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 823181600 +}, +{ + "ETH_account" : "0x5c7239651f7b66e6031e1d95deb8c2aedba3eb70", + "name" : "0x5c7239651f7b66e603", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0xecd989df0427f8a9fbe5cb7d9d556646f6f45831", + "name" : "0xecd989df0427f8a9fb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 139477308 +}, +{ + "ETH_account" : "0xcec76dc9e5967c415873178293de0925c29d2dd8", + "name" : "0xcec76dc9e5967c4158", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 180000000 +}, +{ + "ETH_account" : "0xf24018a2fabaf158ae6e635e818854af1f53e64e", + "name" : "0xf24018a2fabaf158ae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40000000000 +}, +{ + "ETH_account" : "0x23757d3507cf9f16cac4a18a37efc8f1669ec0e7", + "name" : "0x23757d3507cf9f16ca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x8a4e1cf8dbd881356032247104cc2071e0c7566f", + "name" : "0x8a4e1cf8dbd8813560", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 960000000 +}, +{ + "ETH_account" : "0xcff9dd2c80140a8c72b9d6a04fb68a8a845c46e5", + "name" : "0xcff9dd2c80140a8c72", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2290857535 +}, +{ + "ETH_account" : "0xd8193725764e7ad2dcbc91c9104f9cc8aa23e475", + "name" : "0xd8193725764e7ad2dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1019068600 +}, +{ + "ETH_account" : "0x765e6b572eeeb67f150b2ffe5a6ca81928158059", + "name" : "0x765e6b572eeeb67f15", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3324000000 +}, +{ + "ETH_account" : "0x43a70927cabea35e20f9ac6b1784925d30b35921", + "name" : "0x43a70927cabea35e20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7168587500 +}, +{ + "ETH_account" : "0xc93501696c5941a24114df29dcae13c31650ecca", + "name" : "0xc93501696c5941a241", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1345000000 +}, +{ + "ETH_account" : "0xc9559633a53ff2aa82f6b13b76a9751cb3a6d4b8", + "name" : "tigerkamp", + "publicKey" : "SPH83KjPybZzNWXybz3wxXtkUKC2V9BYrqyoXg2CPNUv3Y9TQoLPp", + "balance" : 5504782037 +}, +{ + "ETH_account" : "0xf7dd737639e6c9c07ab17c5124f3f799936d559e", + "name" : "0xf7dd737639e6c9c07a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 318300000 +}, +{ + "ETH_account" : "0xac6cb5ff1de7dd147b239dfd9a5e1a1646c4b506", + "name" : "0xac6cb5ff1de7dd147b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 361799200 +}, +{ + "ETH_account" : "0x5831ef003c34e0b4627622bbf67ceee593b5f596", + "name" : "0x5831ef003c34e0b462", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 249467000 +}, +{ + "ETH_account" : "0xfe1eda689c345c4645f68ed9a5d316d6422486f6", + "name" : "0xfe1eda689c345c4645", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8305080500 +}, +{ + "ETH_account" : "0x56861463ebf168f1d70cb2e3949522253a7bf6d2", + "name" : "0x56861463ebf168f1d7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11985770801 +}, +{ + "ETH_account" : "0x7ca0788f4e429957f36477707f425c6b108ba661", + "name" : "jaggajatt45199", + "publicKey" : "SPH6jzDjnNk2aHNDcNQP8tVUxof28HwvzZ6YG91azJgkLN3He7j8N", + "balance" : 5249107429 +}, +{ + "ETH_account" : "0x1a7f63ca817d146c09e115d518b98966694cdf04", + "name" : "0x1a7f63ca817d146c09", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 463812590 +}, +{ + "ETH_account" : "0x50155fae87a8b5d7c96a06212a9bb55634e54749", + "name" : "0x50155fae87a8b5d7c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4156000000 +}, +{ + "ETH_account" : "0xc7e9a9a9cd0ae3e279338945d8884b165c8d53a0", + "name" : "0xc7e9a9a9cd0ae3e279", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 154624700 +}, +{ + "ETH_account" : "0xa43b097d4fbf6b039628881541251f0bc01592ff", + "name" : "0xa43b097d4fbf6b0396", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 796803000 +}, +{ + "ETH_account" : "0x7d9b6211fa8db39b70debaf9514f64c7095dc994", + "name" : "0x7d9b6211fa8db39b70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3699696000 +}, +{ + "ETH_account" : "0xd5c8561b57a990579a6c343cec8a04f1406a5fe3", + "name" : "0xd5c8561b57a990579a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6820000000 +}, +{ + "ETH_account" : "0x6e9c2fd5c7b002c3c4255fcb9019d00bba86977e", + "name" : "0x6e9c2fd5c7b002c3c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 190297882594 +}, +{ + "ETH_account" : "0x53173177caee56c30f352698339263e0d918067e", + "name" : "0x53173177caee56c30f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1254651000 +}, +{ + "ETH_account" : "0xc4382e954372498012347a5f3ebe96b2a0f23cd7", + "name" : "0xc4382e954372498012", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x446a7cff6f00b1fec1ea4b74e23d97380c27c759", + "name" : "0x446a7cff6f00b1fec1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5076200000 +}, +{ + "ETH_account" : "0x6d7f6b558d5ce6292dca1325106772cf4d257274", + "name" : "0x6d7f6b558d5ce6292d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8545836300 +}, +{ + "ETH_account" : "0x2045d18d2a325ea4d31802b25eefdd10046b37c5", + "name" : "jatin", + "publicKey" : "SPH8fiCwVCqr6UqPjHRFPYW8r34vuUvP3Vj3G4vJJn3Yx3ksG4Kpa", + "balance" : 872846000 +}, +{ + "ETH_account" : "0x9859856cea1238441b0d4acfe8f01ff45b5287ea", + "name" : "0x9859856cea1238441b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150000000 +}, +{ + "ETH_account" : "0x4933660d7f44af5d7f2d7addc4fbee0eafca39dd", + "name" : "0x4933660d7f44af5d7f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2016000000 +}, +{ + "ETH_account" : "0x1de77ebbf18855eb5fa0005f5c2d8d12eac3f5a9", + "name" : "0x1de77ebbf18855eb5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0xc532d5862d2a9e63a8be451e448e3e7fdbddf140", + "name" : "0xc532d5862d2a9e63a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1720000000 +}, +{ + "ETH_account" : "0xab635cf54c4e6f84d2e75595c5c20045fdb5f793", + "name" : "0xab635cf54c4e6f84d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 584000000 +}, +{ + "ETH_account" : "0xaba13e396bb03f819a9e805df25181f9aa697692", + "name" : "0xaba13e396bb03f819a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2547171124 +}, +{ + "ETH_account" : "0x218fcd0a38e9d9cd30f948cf93cc40f67d4bf444", + "name" : "tman", + "publicKey" : "SPH8gPYdoKBgX3jLdev2dS5ZzFqT4iP2uByutpbtYPiyPRQye2hzu", + "balance" : 2968455565 +}, +{ + "ETH_account" : "0xa35278833e98835cf6096c9794fb7ede2b0fece2", + "name" : "sophiatxdv", + "publicKey" : "SPH4wmSXzfRC228yS6Da5yumGxGhDhAs5pBAMUafPRUmpnzPwW99V", + "balance" : 1011760000 +}, +{ + "ETH_account" : "0x3e214264b9ec23311a383b8cefd40eb5ef83a8ed", + "name" : "0x3e214264b9ec23311a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7038000000 +}, +{ + "ETH_account" : "0x99b9501d084600d311b96cef60fbc17f41e03342", + "name" : "0x99b9501d084600d311", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 324667000 +}, +{ + "ETH_account" : "0x059bfa0235ac1bf00310bf711a6e0f5be5682d5f", + "name" : "0x059bfa0235ac1bf003", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20864440000 +}, +{ + "ETH_account" : "0xfb27318b61a8d800024726e92a1fba16b138e5ab", + "name" : "0xfb27318b61a8d80002", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1085000000 +}, +{ + "ETH_account" : "0x93cce42882bbf9b2939f98e9723d3d7b3bb6f554", + "name" : "0x93cce42882bbf9b293", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1392000000 +}, +{ + "ETH_account" : "0x675c002976797ab10461c4231efea359ef520f8d", + "name" : "0x675c002976797ab104", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 70 +}, +{ + "ETH_account" : "0x062c4deef7d068a729260d5057ea553de75aa6cd", + "name" : "0x062c4deef7d068a729", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11 +}, +{ + "ETH_account" : "0xfd0641feacd5206edc7a4f2ed7f97cbb405f539b", + "name" : "0xfd0641feacd5206edc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16 +}, +{ + "ETH_account" : "0xe7414289d26719dc35a5674580db7508b041fa47", + "name" : "0xe7414289d26719dc35", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8282000000 +}, +{ + "ETH_account" : "0x568cbdd99da79418f81fb5304661c18b84e7b609", + "name" : "0x568cbdd99da79418f8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 999001000 +}, +{ + "ETH_account" : "0xae71fd12a05fc6acabcd23029e656e434e510526", + "name" : "0xae71fd12a05fc6acab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7000000000 +}, +{ + "ETH_account" : "0x17ecd0545d46ea2768ea3f987f0b8a4651b357c2", + "name" : "0x17ecd0545d46ea2768", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 723280000 +}, +{ + "ETH_account" : "0xdc268e304711a11dc4cef973b866eea6236db64e", + "name" : "0xdc268e304711a11dc4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 446046615 +}, +{ + "ETH_account" : "0x6a6866cb9a271ac824bcac04f9f3d7679a335fd0", + "name" : "0x6a6866cb9a271ac824", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1445035464 +}, +{ + "ETH_account" : "0x7c513ae23f5cb8f0a2cb113c76ae0d8a87bfe402", + "name" : "0x7c513ae23f5cb8f0a2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 138313 +}, +{ + "ETH_account" : "0xf8f9b8153a7b083bdf278599a13b5c45307fb699", + "name" : "0xf8f9b8153a7b083bdf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11514517208 +}, +{ + "ETH_account" : "0x90b2348219e9761ce3cc1d9f4a30e26718a37cac", + "name" : "0x90b2348219e9761ce3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 388883 +}, +{ + "ETH_account" : "0xe6d805bbba90e883bdb15ff31135b92777168ac1", + "name" : "0xe6d805bbba90e883bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2843350269 +}, +{ + "ETH_account" : "0x8404fa5c448c5a68900d516d1ff5cbed21866983", + "name" : "0x8404fa5c448c5a6890", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 171368400 +}, +{ + "ETH_account" : "0xfdd9bb70f2a2f20e3c0262b4c4b14e75db54b1d8", + "name" : "0xfdd9bb70f2a2f20e3c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 596964075 +}, +{ + "ETH_account" : "0x3bd0647a6df8467111c3c6f28652cb4a17643f4d", + "name" : "garyjitters", + "publicKey" : "SPH6W9gkyoKUj99dMy9ekocGVADkgUtL8qwKpxaQYgRpWQ8kSZxpG", + "balance" : 10607148600 +}, +{ + "ETH_account" : "0xa02a0224208c85fea7ee96723173d2a304ec2bb4", + "name" : "0xa02a0224208c85fea7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1047504655 +}, +{ + "ETH_account" : "0x8d5cc0cac7211293ce756437cd576c2ea2660f26", + "name" : "0x8d5cc0cac7211293ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 330803000 +}, +{ + "ETH_account" : "0x908e277614c62f6bfed47d4490784378fa52b7e6", + "name" : "0x908e277614c62f6bfe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 333000000 +}, +{ + "ETH_account" : "0xca099ad37ba8b63682e6d2814dc64025f1aa82b8", + "name" : "mlolabitcoins", + "publicKey" : "SPH4wnEn67zo9VqEPPdkGRyzvmnehVKwE14WqdCjAbvTyFiBYjHUv", + "balance" : 599000000 +}, +{ + "ETH_account" : "0x93930b20206000c7a1174e6d2f45558108c6d068", + "name" : "aleks", + "publicKey" : "SPH8N7wtQjvfD7P4C3wSsGU1kufc9CLxMhku8tCZBvwxPyA5ZYyHz", + "balance" : 5442040318 +}, +{ + "ETH_account" : "0x6529021b515d78da2ba77524a32573b350e289b9", + "name" : "0x6529021b515d78da2b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000000 +}, +{ + "ETH_account" : "0x647676ffaf299fd6c08720251d727accab64ae95", + "name" : "gtsphtx", + "publicKey" : "SPH81ye999bHU3dPWg5PQNh7wubazt24hVeiaptk9StzM1mTMAjhm", + "balance" : 9746623500 +}, +{ + "ETH_account" : "0x2ea1331950304271a1d2844b941daf92ad1c0cd7", + "name" : "0x2ea1331950304271a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 984877600 +}, +{ + "ETH_account" : "0xe8efa5e4d9599769043fc31715cec064b49442ab", + "name" : "0xe8efa5e4d959976904", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 632276000 +}, +{ + "ETH_account" : "0xb828e669321f33d0ffd806b226667c67ed361580", + "name" : "alexander", + "publicKey" : "SPH6D8KMGbwv2yGgHB99ZXkdmyJ8XFRDBQfi3iUCeGHFafr6QZQGG", + "balance" : 1990254700 +}, +{ + "ETH_account" : "0xa54badc85cbde1493228d6c68d497e41c0e154d1", + "name" : "0xa54badc85cbde14932", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 64420252448 +}, +{ + "ETH_account" : "0x241be547b539734d5b6e95d9cc14ee859f59c21f", + "name" : "0x241be547b539734d5b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 850000000 +}, +{ + "ETH_account" : "0xcd7e7eb47466fb46428c18ae5954e82d434e9889", + "name" : "0xcd7e7eb47466fb4642", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9323150000 +}, +{ + "ETH_account" : "0x4baa0950e7ff2a0279e816b83afbed286a3ce727", + "name" : "0x4baa0950e7ff2a0279", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3925600000 +}, +{ + "ETH_account" : "0xa91c2ceb9d2e343bfd5a12d5b3b3794346a8c473", + "name" : "0xa91c2ceb9d2e343bfd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1630200763 +}, +{ + "ETH_account" : "0xf3383b8d71b2414c94ad0b9333114f57be2b31a9", + "name" : "0xf3383b8d71b2414c94", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 540000000 +}, +{ + "ETH_account" : "0x0b736bca41c2f9653995e8d4792452261536d7fe", + "name" : "0x0b736bca41c2f96539", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3031826800 +}, +{ + "ETH_account" : "0x1076ef8d916b07d0817dc43829894d3650b5d7a9", + "name" : "0x1076ef8d916b07d081", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4666917332 +}, +{ + "ETH_account" : "0x6915a8561913b1bb98080a1eab63a11bd4fa488d", + "name" : "0x6915a8561913b1bb98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 99940000 +}, +{ + "ETH_account" : "0x1ab25c14563b66ad868e5d329f4ee5147bb1d30c", + "name" : "0x1ab25c14563b66ad86", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4169609600 +}, +{ + "ETH_account" : "0x211f722a42653ff493447767fb6f7343177530f7", + "name" : "0x211f722a42653ff493", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 350799611 +}, +{ + "ETH_account" : "0xa8cc8533da482f8008e29888547917c14777b989", + "name" : "0xa8cc8533da482f8008", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 822130600 +}, +{ + "ETH_account" : "0x03a2c68022f1b9c8aebb7dc9e11f6795526f3130", + "name" : "0x03a2c68022f1b9c8ae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 204350267 +}, +{ + "ETH_account" : "0x0ce5bbb61eb5d2b02514dd2ba5278c443d8dcbfc", + "name" : "stephen1245", + "publicKey" : "SPH5R27H8RNmDpmTXXQ8WnyVYyDfTG81Lk4v5f18CQpsVvaPVJ3D5", + "balance" : 1700000000 +}, +{ + "ETH_account" : "0x9d3592092e23606e899fb8f05692ed1a3b323f4e", + "name" : "0x9d3592092e23606e89", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 202154000 +}, +{ + "ETH_account" : "0xfce78e0bbf1e54ee05efd990aeb1614d8f07a36a", + "name" : "0xfce78e0bbf1e54ee05", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22125731200 +}, +{ + "ETH_account" : "0xe4ff2bf2d61719d5ad5343c36d31e9ab10535198", + "name" : "atxwqert", + "publicKey" : "SPH6xJ6Eq6asYNNowduT6Uat2GXgC95TEDGZ96EQND7PE3omuahwZ", + "balance" : 4179745678 +}, +{ + "ETH_account" : "0xd1cf7fa1fd44c5c53f090224088c45aa565e4aa0", + "name" : "0xd1cf7fa1fd44c5c53f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0xac955c1241cafb442913a8b10605c00938d65fb1", + "name" : "0xac955c1241cafb4429", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2003000000 +}, +{ + "ETH_account" : "0x94294ab5bfc9162d41ae7f650a1a053252d4b293", + "name" : "0x94294ab5bfc9162d41", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 710000000 +}, +{ + "ETH_account" : "0x64fddaafff115cc9f92e04d0c917a18a2bb544d1", + "name" : "dwaynos", + "publicKey" : "SPH6AyFdU7dKtUzB7DLvHCaWakKg2rnocwaT612gBAGpbtdxbXuNT", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0x3eda6ae60f170975be03847ab8e0cf3ff550bdfc", + "name" : "dng", + "publicKey" : "SPH6J4SGkDF3Hw9grZMq9jtTCb3g8hBDVjSL4qWvYXzpx7uKStYJA", + "balance" : 1810000000 +}, +{ + "ETH_account" : "0xd7bb15f7aeffe417255326126f7f3959f8f193e6", + "name" : "0xd7bb15f7aeffe41725", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1570000000 +}, +{ + "ETH_account" : "0x6370d43033cdf7d6fd2c267b08a623adb78500cf", + "name" : "0x6370d43033cdf7d6fd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 126720000 +}, +{ + "ETH_account" : "0xdb5acb04242472ef70c0fff39bcfe0af281e6a83", + "name" : "teddydergrosse", + "publicKey" : "SPH7eqFsHabbgz3Q4oofxqJDGgzivfu248oDejJ3RMkyuyFfkEE7A", + "balance" : 34996137799 +}, +{ + "ETH_account" : "0xfbeaeedffa80efe5c2a030bfa7790dfb43d27cbe", + "name" : "0xfbeaeedffa80efe5c2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1692999559 +}, +{ + "ETH_account" : "0xce431be47776951dc0e480608894dd36bbbdc7fe", + "name" : "0xce431be47776951dc0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1662780000 +}, +{ + "ETH_account" : "0x6d2be4193c472b987d11621adcac889806367ff0", + "name" : "0x6d2be4193c472b987d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9603805100 +}, +{ + "ETH_account" : "0xf780ec47a6bc70636b9b4838dca3c10f062ddf79", + "name" : "0xf780ec47a6bc70636b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 256000000 +}, +{ + "ETH_account" : "0x77e92a2699ce4baa52a1490e5bb815903620856f", + "name" : "0x77e92a2699ce4baa52", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2394939771 +}, +{ + "ETH_account" : "0xf9c4474da9e3a53d2e3b03612c7ab58ba3c2b07c", + "name" : "0xf9c4474da9e3a53d2e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1415795107 +}, +{ + "ETH_account" : "0x7ed448e7b908bebcea55e9d9844a57d2350dfd26", + "name" : "0x7ed448e7b908bebcea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1375922 +}, +{ + "ETH_account" : "0x2239f113e611d3081cc5564d9cac5c40809cc1ed", + "name" : "0x2239f113e611d3081c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x8a327dedcb96e426240e2fda646139f9def26264", + "name" : "rob", + "publicKey" : "SPH5kTrrgHxedJqgHZpeudYKY4YR48HWpT7vQn3jWBqRo67n7DmVZ", + "balance" : 1573000000 +}, +{ + "ETH_account" : "0xf78676d53c3b17997031028ecfcf8c0163719f9f", + "name" : "0xf78676d53c3b179970", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 160000000 +}, +{ + "ETH_account" : "0xde18847609f4586d88fe5e3cfbbfbc8a3b000c13", + "name" : "0xde18847609f4586d88", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xabb11c0f48bbea96d4d291b5fbfa7c01dd9acef6", + "name" : "0xabb11c0f48bbea96d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 72343305 +}, +{ + "ETH_account" : "0xd2bfd7cb56340adc6c542ce5ee5188e2d8a37ea9", + "name" : "0xd2bfd7cb56340adc6c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1039388930 +}, +{ + "ETH_account" : "0x9afbd21082cce6c784008f9c63593c01ca8f77bb", + "name" : "0x9afbd21082cce6c784", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xf0d926148393c20ab1df5a073547dcfdcc48c5e0", + "name" : "0xf0d926148393c20ab1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 166023000000 +}, +{ + "ETH_account" : "0x471b08df096177b004049e1ff554f360ae4b5537", + "name" : "0x471b08df096177b004", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14939999696 +}, +{ + "ETH_account" : "0x003533468308868cab965df7121acdd6cd67d523", + "name" : "0x003533468308868cab", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 498191200 +}, +{ + "ETH_account" : "0xdab82af4e6beb7090280430b75776536fb94383a", + "name" : "0xdab82af4e6beb70902", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 780456959 +}, +{ + "ETH_account" : "0x72dd5cdcc805d03846721e2fc158f64c93566f77", + "name" : "0x72dd5cdcc805d03846", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 627981000 +}, +{ + "ETH_account" : "0xb91a05d0fd2841af42712dbc7497ea6712a97dd4", + "name" : "0xb91a05d0fd2841af42", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 615030000 +}, +{ + "ETH_account" : "0x484ce6d79f3eff85917994b583e771a2fa64ad64", + "name" : "0x484ce6d79f3eff8591", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x3faf44565c296c45beb2645f3343a4390b724f5c", + "name" : "0x3faf44565c296c45be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 247998039 +}, +{ + "ETH_account" : "0x87a54a1c1b94f8f820640d7c9b076069cc028828", + "name" : "0x87a54a1c1b94f8f820", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16647706821 +}, +{ + "ETH_account" : "0xc186e11a243f55efda38a317b93a0a6e20c0291c", + "name" : "0xc186e11a243f55efda", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5825605903 +}, +{ + "ETH_account" : "0x1fe697fd43b3881a0c3de44aaf4de2fc5f24a22b", + "name" : "0x1fe697fd43b3881a0c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 214746800 +}, +{ + "ETH_account" : "0x2ef507853ab25d4bc016d9733f6a71eeea9df238", + "name" : "0x2ef507853ab25d4bc0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 475000 +}, +{ + "ETH_account" : "0x735aa8bd8aef29d05273061fd056d8a902559d92", + "name" : "0x735aa8bd8aef29d052", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3002026700 +}, +{ + "ETH_account" : "0x8c73bd2aba288564d444f8b7b0530197300055d7", + "name" : "0x8c73bd2aba288564d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 185000000 +}, +{ + "ETH_account" : "0x85fa61626f58ffeed098a5b925cd10753a0eb135", + "name" : "0x85fa61626f58ffeed0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2185787700 +}, +{ + "ETH_account" : "0xf0f01bb9fe06b504e9598f0061c575e4294e72f2", + "name" : "0xf0f01bb9fe06b504e9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 315409200 +}, +{ + "ETH_account" : "0x678b2861d7378d40d4cdb04743f32a9e1710075b", + "name" : "0x678b2861d7378d40d4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 278050209 +}, +{ + "ETH_account" : "0x2d755590d233019a2a4c584ac423083dfa44aa2f", + "name" : "0x2d755590d233019a2a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12161000000 +}, +{ + "ETH_account" : "0x8678c67876b83b596326a09bbc3443691778023a", + "name" : "0x8678c67876b83b5963", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 993100000 +}, +{ + "ETH_account" : "0xda802cab966a352216f179c618fda0399577382c", + "name" : "0xda802cab966a352216", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 900000000 +}, +{ + "ETH_account" : "0x381f01817a30d102c10b95c3fb893e3e0e31e78b", + "name" : "0x381f01817a30d102c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28433000000 +}, +{ + "ETH_account" : "0x39ba1733854e56bf6c5c29b4c567330055ad3042", + "name" : "0x39ba1733854e56bf6c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 499187030 +}, +{ + "ETH_account" : "0x347ea38e30c45061c4cd9fabc9cd0c691bfbd81e", + "name" : "0x347ea38e30c45061c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x590174d8246288bb00a5ee9bf7954a24d914a2e3", + "name" : "0x590174d8246288bb00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 124000000 +}, +{ + "ETH_account" : "0x72325228a13ee226a5775bd87de30800c8bba3d1", + "name" : "jeezusecl", + "publicKey" : "SPH7sBAfY9j3tR11SVbynQ1CDVPvi4n7yAgHMmTPDBMAayCeDABte", + "balance" : 60889163 +}, +{ + "ETH_account" : "0x9b8832dfd6e176834832021a84c6f7753c0296e4", + "name" : "0x9b8832dfd6e1768348", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1193540831 +}, +{ + "ETH_account" : "0x807d2d216a6bf1045530f0aa85a3760fe548688b", + "name" : "0x807d2d216a6bf10455", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1382615706 +}, +{ + "ETH_account" : "0x01c6d20cf18c5176a70635c01425be90b3ee10d8", + "name" : "0x01c6d20cf18c5176a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 152257123 +}, +{ + "ETH_account" : "0x78bb282c3ca3a3d64ee5f234ce13ec9d713b240f", + "name" : "0x78bb282c3ca3a3d64e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1256941700 +}, +{ + "ETH_account" : "0x321d5a4c9f9f0c9607df5464d993bebb0ad25fb1", + "name" : "0x321d5a4c9f9f0c9607", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3740692200 +}, +{ + "ETH_account" : "0xa6ed6833901112cbd833831c346773a65295c811", + "name" : "0xa6ed6833901112cbd8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 162068900 +}, +{ + "ETH_account" : "0xcdb0cd8934208d81f38c9b7798b13d46bffa741b", + "name" : "0xcdb0cd8934208d81f3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2644240426 +}, +{ + "ETH_account" : "0x80e7d7efdbd1e292352809da301ad2b140ccb192", + "name" : "0x80e7d7efdbd1e29235", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 87980323 +}, +{ + "ETH_account" : "0x2047f37c96f09de529331794459db5c0f5cd9c21", + "name" : "0x2047f37c96f09de529", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0x0fabd1d1a8cce637e8ae7a4e44af8c01fabd5382", + "name" : "0x0fabd1d1a8cce637e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 257287614 +}, +{ + "ETH_account" : "0x07efe4524df84fdbd4b92709b4e323caac3df8d8", + "name" : "0x07efe4524df84fdbd4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7200410900 +}, +{ + "ETH_account" : "0x25d300b996e16746c95d9e410ab99da9b3c2aa2d", + "name" : "lemarquis", + "publicKey" : "SPH81RnbWKaCw3JPLuUA5NmEXmas3ix53LMVTLeL9dLELjmk6Li8T", + "balance" : 1074696862 +}, +{ + "ETH_account" : "0x5ba9f9fb896ae9e41163c0266ab709250f1d28df", + "name" : "0x5ba9f9fb896ae9e411", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1106799831 +}, +{ + "ETH_account" : "0x98b7d0ecdb62595703259101bd45654f6f11b1b1", + "name" : "0x98b7d0ecdb62595703", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 47000000 +}, +{ + "ETH_account" : "0x943eaeaf113197630c073cc3a791bd7f046ab345", + "name" : "0x943eaeaf113197630c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0xb2d8c662cf53fb98bb0f761ac2c3d29fab9aa165", + "name" : "0xb2d8c662cf53fb98bb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2859952200 +}, +{ + "ETH_account" : "0x838bab416493f1bbe6cd27d73478b65fa8c124ce", + "name" : "0x838bab416493f1bbe6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2827957200 +}, +{ + "ETH_account" : "0xc03370e384c219ed72426e5baa05c5a131164dc8", + "name" : "0xc03370e384c219ed72", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 392500000 +}, +{ + "ETH_account" : "0xed6cc5c26af16234c8ce5f7d48bfaa03a07ecf00", + "name" : "0xed6cc5c26af16234c8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 650000000 +}, +{ + "ETH_account" : "0x98fc560df03f0e18a841e33179bb87ad90c75461", + "name" : "0x98fc560df03f0e18a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 296420406 +}, +{ + "ETH_account" : "0xc797a8f40bf1552477901a02271a936d96348cd9", + "name" : "0xc797a8f40bf1552477", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 26514563818 +}, +{ + "ETH_account" : "0x07982f0eb163123d10fd294081e3998ee6ce2b8e", + "name" : "0x07982f0eb163123d10", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1924 +}, +{ + "ETH_account" : "0x26724a8f5fb9b50c000510354099f17a07a45c36", + "name" : "0x26724a8f5fb9b50c00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12591313036 +}, +{ + "ETH_account" : "0x17f82b1a10402550de8dc901b73178ac356b9c25", + "name" : "0x17f82b1a10402550de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2498000000 +}, +{ + "ETH_account" : "0x404d1710a5c02412eca436e25c6e6a3295e2d267", + "name" : "kristijansphtx", + "publicKey" : "SPH6QFnBKfN44Ejdx4HrMB7Cwc1ZshRNM8mi4s5iJZRUAmC8ntjcW", + "balance" : 4314725700 +}, +{ + "ETH_account" : "0x3d4732e9d6efae277ab6a94fc7f583aebdeb2879", + "name" : "0x3d4732e9d6efae277a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 254102832 +}, +{ + "ETH_account" : "0x74e0f9c6e92da58ee6faa1df3a43b34251eef962", + "name" : "0x74e0f9c6e92da58ee6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3692000000 +}, +{ + "ETH_account" : "0x78ec3b864bc456cbdf2fa93fd1dbb57fdc3d02a7", + "name" : "0x78ec3b864bc456cbdf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 707600000 +}, +{ + "ETH_account" : "0xdbcc59184df6766e67e3bcf38b9d61ca01995010", + "name" : "cryptobruno", + "publicKey" : "SPH7XiDE2YcQREg2qiCiT7fMfakCtautbhT5ffAhsYe1hzpuXNucx", + "balance" : 129124359 +}, +{ + "ETH_account" : "0x1b88dd314b1da5890f7336b6f9e8218916a974a9", + "name" : "0x1b88dd314b1da5890f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3961 +}, +{ + "ETH_account" : "0x3e27c0d2431d14378fe702ce98a7262a79380eff", + "name" : "0x3e27c0d2431d14378f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9964 +}, +{ + "ETH_account" : "0xf37738983dc916f222e8ba20565fe705028e248f", + "name" : "0xf37738983dc916f222", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8156800000 +}, +{ + "ETH_account" : "0xa040bff363d9147065b9dae53471e7fe5f2b96e6", + "name" : "0xa040bff363d9147065", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x0136c2296460babf665cb7a687ade9a676b85b73", + "name" : "0x0136c2296460babf66", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1167152858 +}, +{ + "ETH_account" : "0xabe9a9eba97e194557d5b22df1f32b618e7e07c6", + "name" : "0xabe9a9eba97e194557", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 469134000 +}, +{ + "ETH_account" : "0xf48e8d690c4f941918879e374fec65b31a57c836", + "name" : "0xf48e8d690c4f941918", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 995822875 +}, +{ + "ETH_account" : "0x014c34c7f5ca5c65df60ba0cb3b555b8ff73b01f", + "name" : "0x014c34c7f5ca5c65df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20090000 +}, +{ + "ETH_account" : "0x0ad88f8753a695435998a5f18d77bb509a29513c", + "name" : "0x0ad88f8753a6954359", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 318000000 +}, +{ + "ETH_account" : "0xb4398eb741c9c9bac65c9f2bd90bbf517678b0fd", + "name" : "0xb4398eb741c9c9bac6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2916448055 +}, +{ + "ETH_account" : "0x9ff9b4508e30a5b7de41f021fc9634df1f7d5c87", + "name" : "sikkan", + "publicKey" : "SPH81ZLAt2vxHq26Niro1hxj2orBB5vKPaH2cKEuNpJVo8xWsnDWZ", + "balance" : 1462000000 +}, +{ + "ETH_account" : "0xb17434167923fa5404ac6b703f1dbd85620a77f1", + "name" : "0xb17434167923fa5404", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5450000000 +}, +{ + "ETH_account" : "0xd2816cbd395c9003341b77e686d65a3ba6375d4b", + "name" : "fiex", + "publicKey" : "SPH8hbmVJHkYd19xKeqricYh9tKzdZGkRZSbXZPmLkwWuu1y9EvYu", + "balance" : 8813485655 +}, +{ + "ETH_account" : "0x101ba83c5c80b78d10bcfe1b7b054e2004c27a0c", + "name" : "0x101ba83c5c80b78d10", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0xf4df06d04a9c4aa06f361c390def97c7c01a0a98", + "name" : "0xf4df06d04a9c4aa06f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 534758 +}, +{ + "ETH_account" : "0x4c6df76d41355d5d4227d147dfd778624baedfff", + "name" : "0x4c6df76d41355d5d42", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 304715000 +}, +{ + "ETH_account" : "0x670d469116f1cc8cad435847ca661b37ed07b9df", + "name" : "0x670d469116f1cc8cad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 291310000 +}, +{ + "ETH_account" : "0x9062438b00cbef275709b753de114a325be378f5", + "name" : "0x9062438b00cbef2757", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2756670000 +}, +{ + "ETH_account" : "0xa7401ee2f2eff6a8f673e29d4f6a34497ec0d8a5", + "name" : "0xa7401ee2f2eff6a8f6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 352000000 +}, +{ + "ETH_account" : "0xd7a89e6e711d9dc57514d5e1bd5bd947eca3917f", + "name" : "0xd7a89e6e711d9dc575", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2325000000 +}, +{ + "ETH_account" : "0x4bf009c7d8df7c970e564d5ce2b70ed1d20fe383", + "name" : "0x4bf009c7d8df7c970e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4250460000 +}, +{ + "ETH_account" : "0x6caf0b12777f647944d713e604b9da403f8d7456", + "name" : "0x6caf0b12777f647944", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5 +}, +{ + "ETH_account" : "0xb00e504bd65e0c6beb52dc8a2764ccf8848fa731", + "name" : "0xb00e504bd65e0c6beb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6809757905 +}, +{ + "ETH_account" : "0xee379ca4965e13ac3e134de2e75facf4a7988046", + "name" : "0xee379ca4965e13ac3e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1003000000 +}, +{ + "ETH_account" : "0x007d8db979528acfa01527365122777f4d863df5", + "name" : "0x007d8db979528acfa0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8100000000 +}, +{ + "ETH_account" : "0x4209c9ea64fb4fa437eb950b3839a43c99d96c06", + "name" : "0x4209c9ea64fb4fa437", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 101442720959 +}, +{ + "ETH_account" : "0xa26d9fead3fee383b398d5aa83e19f886667698f", + "name" : "0xa26d9fead3fee383b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5419641600 +}, +{ + "ETH_account" : "0x0c231e2e26917a6760c5b87f5d9424aa5e3b4769", + "name" : "0x0c231e2e26917a6760", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 985048800 +}, +{ + "ETH_account" : "0x94138c9e96b95714d18b506a7936237e97a41120", + "name" : "0x94138c9e96b95714d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 993000000 +}, +{ + "ETH_account" : "0x0735fcf55ed0d30f570cbf78277a097a75c926ef", + "name" : "0x0735fcf55ed0d30f57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 48610033600 +}, +{ + "ETH_account" : "0xbdeeb645eafd33df9056d3816e9fa3a1624e9f44", + "name" : "0xbdeeb645eafd33df90", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4861000000 +}, +{ + "ETH_account" : "0x8f92e674a4dbc7fa49a30623c6a0abb3b1ae0f65", + "name" : "hifihihi", + "publicKey" : "SPH6RSLPQAHQXQxQ6vZwEoWFdAE7MN2ygL43B5Npdm39L42R7YBza", + "balance" : 11201000000 +}, +{ + "ETH_account" : "0xc80a1af8d3753914e31f5f2aa634475d1e721e22", + "name" : "0xc80a1af8d3753914e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x36139bdd22a71cef37bdb25862f3b90c7fb76f04", + "name" : "0x36139bdd22a71cef37", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1757000000 +}, +{ + "ETH_account" : "0x764d043ab46e3322bfbf54eaef4a2d1fbc872401", + "name" : "0x764d043ab46e3322bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2373270800 +}, +{ + "ETH_account" : "0xd1ef04207179ee7b3711910c97a4114d11f6d2db", + "name" : "0xd1ef04207179ee7b37", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1109000000 +}, +{ + "ETH_account" : "0x22cf8a737963fbff00990a460751d63be828b025", + "name" : "0x22cf8a737963fbff00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 180715587 +}, +{ + "ETH_account" : "0xd59d4d3e229f25c89f75610bb2e24086694f9796", + "name" : "0xd59d4d3e229f25c89f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2010000000 +}, +{ + "ETH_account" : "0x999f8bd19bfd874f0132f80526952428f6380222", + "name" : "0x999f8bd19bfd874f01", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 91900000 +}, +{ + "ETH_account" : "0xb6a33e9b768fd987719a586be62896dbd244f513", + "name" : "0xb6a33e9b768fd98771", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5416598431 +}, +{ + "ETH_account" : "0xea823839e78ee418ec0152596f0ebf62096ce8c7", + "name" : "0xea823839e78ee418ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3147979505 +}, +{ + "ETH_account" : "0x84295e95f68c5cfb0e9c0b3fb1f5bbfb3070da07", + "name" : "gurug", + "publicKey" : "SPH87Fc6rWuHM5TTnLDqVXBHtUB1rbX5Beb7ngc1jHPq1TLFwU47r", + "balance" : 7043477795 +}, +{ + "ETH_account" : "0x4dce0eab01ff6eae21dcaa9eb3e7eba8eea3d033", + "name" : "alejandro", + "publicKey" : "SPH6bXjMm2apiHy6a4FXpQYmvtBNAx9DVMoAfj7dkRxeKrChaFjUB", + "balance" : 1641991724 +}, +{ + "ETH_account" : "0x75d9feba450ffded349f9c2744b8c668ac1763ae", + "name" : "0x75d9feba450ffded34", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2169160621 +}, +{ + "ETH_account" : "0xf3154c58930a67685db1559147d5ef439b8230f6", + "name" : "0xf3154c58930a67685d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 191668900 +}, +{ + "ETH_account" : "0xdaa9d01ff199ce4e0383891bb314db4dbdc22cb6", + "name" : "karsten", + "publicKey" : "SPH69TwJHWux2eTEuJPZFSebd51LisuD3mVSun3MHS5tCfJguiwM9", + "balance" : 2865987430 +}, +{ + "ETH_account" : "0x3c664016a293352b1e301bc78f2b68343ada5a03", + "name" : "0x3c664016a293352b1e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x2a6b0e53eb22c27db85253249cc72c99ebf982ee", + "name" : "meinesophias", + "publicKey" : "SPH8Co2mMYzWx55pcQw7v4pRYyXVjHNfbbcNXoLAnqg51XyhK31Tc", + "balance" : 100715500 +}, +{ + "ETH_account" : "0xe15bc7c4efdeab3eefe4b44406ae5667202ca514", + "name" : "0xe15bc7c4efdeab3eef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2077000000 +}, +{ + "ETH_account" : "0xb475adaea277ce7c51d82ab879d89bb375f4368f", + "name" : "0xb475adaea277ce7c51", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 121614460 +}, +{ + "ETH_account" : "0xc2587a32f37cfcffb79b1e11a77d8a90913c0c1b", + "name" : "0xc2587a32f37cfcffb7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 718695300 +}, +{ + "ETH_account" : "0x023f2ada480040975ef70f71e60d89f31242b89c", + "name" : "0x023f2ada480040975e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 450000000 +}, +{ + "ETH_account" : "0x49b63480f395b46d4a66e7c20155823e96b7fa12", + "name" : "0x49b63480f395b46d4a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1078071000 +}, +{ + "ETH_account" : "0x9e98f85295d9543e45e924a920c3cb48ff5de67a", + "name" : "0x9e98f85295d9543e45", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10185136345 +}, +{ + "ETH_account" : "0xf60f30e51ba008694dc1f91222ac8cedbb940804", + "name" : "0xf60f30e51ba008694d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 830000000 +}, +{ + "ETH_account" : "0x15a5795a65a4492ebd600df3ffe5ecf1cc76128f", + "name" : "0x15a5795a65a4492ebd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x45a3e56e047e6503320406463bc6a3681a7379f5", + "name" : "0x45a3e56e047e650332", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 197689774 +}, +{ + "ETH_account" : "0xf9b6aae381d3c645c46a6a2b2fb70bcf89bf5c21", + "name" : "0xf9b6aae381d3c645c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xcd1d8683114d2d35a0f2b26a9b513f66ad6172d6", + "name" : "0xcd1d8683114d2d35a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 748324799 +}, +{ + "ETH_account" : "0x3962be784ca3dafcb6cd6020d188933f83c29819", + "name" : "0x3962be784ca3dafcb6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20300000000 +}, +{ + "ETH_account" : "0xb296c702e7e9d7c709c5d750e3d7e8246b1a663a", + "name" : "0xb296c702e7e9d7c709", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13284300000 +}, +{ + "ETH_account" : "0x4cd60f180feb7309bc2f854368751ef9e1eb4a20", + "name" : "0x4cd60f180feb7309bc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11084000000 +}, +{ + "ETH_account" : "0xd04e1e5972e9877445175fbdcdeaca023e0be8cc", + "name" : "0xd04e1e5972e9877445", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0x10497613684e3a7d547f3e2cd6478d82b4ebf50c", + "name" : "0x10497613684e3a7d54", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x3c42581ca8e73b9b1d8e5509368f1c15329f129f", + "name" : "0x3c42581ca8e73b9b1d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2501805000 +}, +{ + "ETH_account" : "0x7bf8179a70add2a727c2991f9a9597fc0b1c2aaf", + "name" : "0x7bf8179a70add2a727", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3614607000 +}, +{ + "ETH_account" : "0xb5c20f389bdb36921f9d9e5103c60b56409d4b7f", + "name" : "0xb5c20f389bdb36921f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1146323393 +}, +{ + "ETH_account" : "0xf6e2b1dffe7b092e8e165455f4b5a392a541a49e", + "name" : "0xf6e2b1dffe7b092e8e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1550000000 +}, +{ + "ETH_account" : "0x33abd5e2acd50dd7644de04c3dda876660b4b4c6", + "name" : "0x33abd5e2acd50dd764", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0x4f16e8946a2443bc4eb263d38212b7767e199ad7", + "name" : "0x4f16e8946a2443bc4e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 278808200 +}, +{ + "ETH_account" : "0x1348367ffab77dcded9f4d5a29cfbc33234aeb77", + "name" : "0x1348367ffab77dcded", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 581000000 +}, +{ + "ETH_account" : "0x55815e72c17127920562d8e818ce4865df7e55fe", + "name" : "0x55815e72c171279205", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24836000000 +}, +{ + "ETH_account" : "0xe9dac8549679e19d7cec4dd8d7b10992e32947ec", + "name" : "0xe9dac8549679e19d7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 340099000 +}, +{ + "ETH_account" : "0xcb760c0a8f4ccc7114fc8264d9b35a77428126b1", + "name" : "0xcb760c0a8f4ccc7114", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0x0b8e4609004734a5160fde583c55b2525804f9ab", + "name" : "0x0b8e4609004734a516", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x0f0488a827af7cf2d64477c107eaa6de077af73f", + "name" : "0x0f0488a827af7cf2d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 689125543 +}, +{ + "ETH_account" : "0x250377eb09bed161dc20572153cddbaa9e8fba1e", + "name" : "0x250377eb09bed161dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xb402543540cca5386fddde226bb8b83bd8d0fb86", + "name" : "0xb402543540cca5386f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5721000000 +}, +{ + "ETH_account" : "0xae314da390ea408700d72301c2350ff023af2952", + "name" : "0xae314da390ea408700", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 240000000 +}, +{ + "ETH_account" : "0x12907c9c2de6d02dd92f8a6644a2b07e157d57f5", + "name" : "0x12907c9c2de6d02dd9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 816046604 +}, +{ + "ETH_account" : "0x43cc02cdb295679664560bac7757edd87703b05d", + "name" : "0x43cc02cdb295679664", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 466917529 +}, +{ + "ETH_account" : "0x951475e188539737028262084588484a3873f4c9", + "name" : "agadoin", + "publicKey" : "SPH7bYR8egiXyEJghHPH56oq6im8GU1zhHeo9YcRFWbZbLKULdArJ", + "balance" : 96470600 +}, +{ + "ETH_account" : "0x08a48ca0f222358b4dd403cdb6f792aa43dda9a9", + "name" : "0x08a48ca0f222358b4d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 62700000 +}, +{ + "ETH_account" : "0x890f69160eb098685d57c9b487a557ac2818bc01", + "name" : "0x890f69160eb098685d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 68991804 +}, +{ + "ETH_account" : "0xfb0ba39d06a28883c0cae82701598c79e4ecc190", + "name" : "0xfb0ba39d06a28883c0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 437308000 +}, +{ + "ETH_account" : "0x3cac460a5e4c7dfc4b8b41dd47750d76da55d225", + "name" : "0x3cac460a5e4c7dfc4b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3502700000 +}, +{ + "ETH_account" : "0xc2d7369b76e6233bbc9660b47b62b35368e1d30a", + "name" : "0xc2d7369b76e6233bbc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 310792 +}, +{ + "ETH_account" : "0x7b22c26061e530e98c9e292f7d2d89966bab5dbb", + "name" : "0x7b22c26061e530e98c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 343000000 +}, +{ + "ETH_account" : "0xadb89d2ac02b5227affeab2ee17b4aa0dc1cf9dc", + "name" : "0xadb89d2ac02b5227af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 471749727 +}, +{ + "ETH_account" : "0x4937c2843e9e73d6b46061a69abfa36b29d2b927", + "name" : "0x4937c2843e9e73d6b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 115568606 +}, +{ + "ETH_account" : "0x0bdcac33b5cee6f9a12cd101fe6f5d8f3b258879", + "name" : "0x0bdcac33b5cee6f9a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2598269236 +}, +{ + "ETH_account" : "0x77cc1948c8e96154a3b928e394c95c026e694e30", + "name" : "0x77cc1948c8e96154a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 29727438900 +}, +{ + "ETH_account" : "0x660869f08d33d2e5d6ed3ecb55416bf7c241cd5a", + "name" : "0x660869f08d33d2e5d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40000000000 +}, +{ + "ETH_account" : "0xd900e6cdb0bc8946184da2d5c75cdf6e608d71c9", + "name" : "0xd900e6cdb0bc894618", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18678000000 +}, +{ + "ETH_account" : "0x8f9f217ae5d0eb8a61de7a69ef942a4b4603dab8", + "name" : "0x8f9f217ae5d0eb8a61", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2435740918 +}, +{ + "ETH_account" : "0x713d7731965e649d38d68f5db85273a3206b0df7", + "name" : "0x713d7731965e649d38", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 270130000 +}, +{ + "ETH_account" : "0x3adc2e05a26c36e605945af867f9d7ac4fb7bc89", + "name" : "0x3adc2e05a26c36e605", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 681000000 +}, +{ + "ETH_account" : "0x7dc4f010cd8f7a4831adf69ede7bfb126867f6b6", + "name" : "0x7dc4f010cd8f7a4831", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 195806265 +}, +{ + "ETH_account" : "0x8783deb6128efe4301e21dd55f1d6dce01eb074d", + "name" : "0x8783deb6128efe4301", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 120008000 +}, +{ + "ETH_account" : "0xb15e37d48e9dd61e74a24fc2b1419f14c46f0d79", + "name" : "0xb15e37d48e9dd61e74", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6953831587 +}, +{ + "ETH_account" : "0xdc2357ec65cb4cd619d6c5622db3cfae31374ac9", + "name" : "0xdc2357ec65cb4cd619", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1237264521 +}, +{ + "ETH_account" : "0x53f40f3a65f7d2bad7b04614b73ef9ddda48bb27", + "name" : "0x53f40f3a65f7d2bad7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 218793800 +}, +{ + "ETH_account" : "0xca53dbda873f2643cb8a7d3e9b0173c658a76ccb", + "name" : "0xca53dbda873f2643cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 625908597 +}, +{ + "ETH_account" : "0xbcd0c4ca9d0e98b0aaf69cd75e875594c3f54ffa", + "name" : "0xbcd0c4ca9d0e98b0aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7184196608 +}, +{ + "ETH_account" : "0xc21d4fb7903941dfa3252184d28287bb44ca08d8", + "name" : "0xc21d4fb7903941dfa3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 116000 +}, +{ + "ETH_account" : "0x1771ca00014c0206304eba053885f938f6ee7ae8", + "name" : "0x1771ca00014c020630", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x0fd35b7f0ce2052b678b16ea7e23a31bcfa5b073", + "name" : "0x0fd35b7f0ce2052b67", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 305000000 +}, +{ + "ETH_account" : "0xb0678cdbff11a30947081a7207413e64edf424a9", + "name" : "0xb0678cdbff11a30947", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xdce5370940164e0a9b0340a7d0acf59f3babf7fe", + "name" : "0xdce5370940164e0a9b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3550000000 +}, +{ + "ETH_account" : "0xea051f9f6c61d8b226b5fbfe4f36466b3efb40b9", + "name" : "oxvund", + "publicKey" : "SPH6FJoHcFfKoLD9euvHSBCQs52WEdkmZYwmj5tG5yzgNi1Mbxooh", + "balance" : 18954000000 +}, +{ + "ETH_account" : "0x655374642640ea8b115a34e83d85b462dad4f35a", + "name" : "0x655374642640ea8b11", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0x443e2ad026116a7fc1327925c9c635e77774f5f6", + "name" : "0x443e2ad026116a7fc1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000000 +}, +{ + "ETH_account" : "0x666b5dbc910a1411274d5c3748afa4b18437a30f", + "name" : "0x666b5dbc910a141127", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 48509033600 +}, +{ + "ETH_account" : "0x77c5c0823e403f044e348f7e69544405070d0cfb", + "name" : "0x77c5c0823e403f044e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x6c0b5d60b45eb5af417adde4481a3faecb0c91b5", + "name" : "0x6c0b5d60b45eb5af41", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 862500000 +}, +{ + "ETH_account" : "0x98b3214e91f793c7c6f969eb1c82d61dcffcecd0", + "name" : "0x98b3214e91f793c7c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 27673782285 +}, +{ + "ETH_account" : "0x050b2f68edccf3743d916abe6bbb1fbda34eb497", + "name" : "xenophobe", + "publicKey" : "SPH56nFKFr8D4t1ojwx2JzncetJ3shsskkmtfP8KKsiESKFz4prxJ", + "balance" : 18964000000 +}, +{ + "ETH_account" : "0x7c86be686e3d7c1db111f813ca55494e95317e1b", + "name" : "0x7c86be686e3d7c1db1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 27999635673 +}, +{ + "ETH_account" : "0x7a8de2813766db4d2dcba810f9114e1833e71ca7", + "name" : "0x7a8de2813766db4d2d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xcdb921352f72fbfe5eecf0fa34d1b26a4e0c57ad", + "name" : "0xcdb921352f72fbfe5e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 241240000 +}, +{ + "ETH_account" : "0x859249c69c685d7f68a6c0235b2130fad26b8b65", + "name" : "0x859249c69c685d7f68", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 309000000 +}, +{ + "ETH_account" : "0xfc29d25c5be7c7af818ee7a8dbd218e958f01a51", + "name" : "0xfc29d25c5be7c7af81", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1535261400 +}, +{ + "ETH_account" : "0x50850db06b5225edc8a69fb9dd34538ba69b6a1a", + "name" : "0x50850db06b5225edc8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3329000000 +}, +{ + "ETH_account" : "0x56b1c2686f7da04f0ff9c18f55dc1d0095e768b9", + "name" : "0x56b1c2686f7da04f0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5040000000 +}, +{ + "ETH_account" : "0x0051e6a3d0d25921cd9227d7e72da2b0580e064e", + "name" : "0x0051e6a3d0d25921cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1920000000 +}, +{ + "ETH_account" : "0xaf346dda1a6da6f0f7dead45c4ae0c15f085026a", + "name" : "orcosophiawallet", + "publicKey" : "SPH6ecyNrfZtYtGcXBuG3Aptb55H3XQ31KyTcAVrnyJqWDAGqf95G", + "balance" : 3163191700 +}, +{ + "ETH_account" : "0xfca6215d8f262c1d9af878f180c489245a78d16a", + "name" : "0xfca6215d8f262c1d9a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5600000000 +}, +{ + "ETH_account" : "0xe543f6ca95d7387bf120a61359542b321fd71e87", + "name" : "0xe543f6ca95d7387bf1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0x4bdc787e15ae7a0aa03910261b1e95d8e88d304a", + "name" : "0x4bdc787e15ae7a0aa0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 948585000 +}, +{ + "ETH_account" : "0x4ea0540beab0208b6b0998ff04800f997d535a9d", + "name" : "0x4ea0540beab0208b6b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23288735204 +}, +{ + "ETH_account" : "0x4a15c1d012dca8807025f8ec54168f112f0c35da", + "name" : "0x4a15c1d012dca88070", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8983000000 +}, +{ + "ETH_account" : "0x5e5b561925ebd8ea37f48c6039a45c9f74c00980", + "name" : "0x5e5b561925ebd8ea37", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 333438578 +}, +{ + "ETH_account" : "0xb7beb4bf65505a8edf8f617dd6e15fb23089e6dd", + "name" : "0xb7beb4bf65505a8edf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2738000000 +}, +{ + "ETH_account" : "0xfe418f57a718f85b70a3e0b0683a9dc297ea2746", + "name" : "0xfe418f57a718f85b70", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 529537500 +}, +{ + "ETH_account" : "0xbbd4b05d21741ac78812249bee1d5e8c2dbbc9ba", + "name" : "0xbbd4b05d21741ac788", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1005000000 +}, +{ + "ETH_account" : "0x8bd6395620b3879ea2ead18cddb42c77e60591f6", + "name" : "0x8bd6395620b3879ea2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1127008100 +}, +{ + "ETH_account" : "0xfebddaa280f5e8852e2d068c7d000c49291f0142", + "name" : "0xfebddaa280f5e8852e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66477000 +}, +{ + "ETH_account" : "0x70046ffe9a1af2aceac9879d61870c31145fab99", + "name" : "0x70046ffe9a1af2acea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 532083400 +}, +{ + "ETH_account" : "0x1876d0cab8c947d3afd822225716c074b7e0c3a7", + "name" : "0x1876d0cab8c947d3af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21557717 +}, +{ + "ETH_account" : "0x333a41e68b1d0378bc3d56424fc782a29885efe0", + "name" : "ksint", + "publicKey" : "SPH6b5FCXZABWnehQYhRW1zfYEoKEB3ozRu4g6q6sB3FyQDeNYtXi", + "balance" : 5152200000 +}, +{ + "ETH_account" : "0xe5f8ce913d49e6fd2ed15f2b4740c5d4f93ba5d2", + "name" : "secsoft", + "publicKey" : "SPH8bUyi6Kv9ELm2wRHEtuMVdLvttecRaXp4pCzp1aWxHv8afBCtT", + "balance" : 20000000000 +}, +{ + "ETH_account" : "0x9c4997aca401da9cf09be3c8c16a4b8ea6a84234", + "name" : "0x9c4997aca401da9cf0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65841900 +}, +{ + "ETH_account" : "0xd19b8d199ca2c10ac32938c3c1dc5a92ff4758b4", + "name" : "joshuagrim", + "publicKey" : "SPH5n6bP3VQq29bxkm1FUB9sN7n8PJ7AB2EgqGNywY6fsymyutujM", + "balance" : 2462446500 +}, +{ + "ETH_account" : "0xd674c92fa1c4bb675a96a984bf7f7750381c0e08", + "name" : "0xd674c92fa1c4bb675a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 422000000 +}, +{ + "ETH_account" : "0x5ceac136540020fe8190ae07ad88da40d0a32bbb", + "name" : "0x5ceac136540020fe81", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11583397000 +}, +{ + "ETH_account" : "0xe183a9a6e93a32a186b8ffd662bddb7208529cf8", + "name" : "0xe183a9a6e93a32a186", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000456673 +}, +{ + "ETH_account" : "0x30e97f3a41656a609a22f257ff03d816eb5b394d", + "name" : "0x30e97f3a41656a609a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7337182904 +}, +{ + "ETH_account" : "0x2e2daf207ce2ca4d0acc71b9acc9ddfe11a82fe8", + "name" : "mapescmai", + "publicKey" : "SPH5TymuEQ2VuAzFAXoLsBdKdKtFw2DTAnLae8w2D87wpugGQzDjJ", + "balance" : 31883000000 +}, +{ + "ETH_account" : "0x4f9fcbcb2364772bd994bcb453e1cecdfc0325e3", + "name" : "0x4f9fcbcb2364772bd9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2650000000 +}, +{ + "ETH_account" : "0xa0764f0a62d7d2cbf447943d5bc00ddd16c55354", + "name" : "0xa0764f0a62d7d2cbf4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7 +}, +{ + "ETH_account" : "0xa363cfdcdd9339802222d626d627cf2a7cd89e8d", + "name" : "panna", + "publicKey" : "SPH69MRyiRddotYyZZB5NJtiGpcWE9gt37NVSy3nbXu8T2voYdmLE", + "balance" : 1948200000 +}, +{ + "ETH_account" : "0x6ac3f6463db28391e32291ca7ab504f9af7790b5", + "name" : "0x6ac3f6463db28391e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1246670000 +}, +{ + "ETH_account" : "0x06d21894645a9faa42c64139a354daa49d5b1ffd", + "name" : "0x06d21894645a9faa42", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 56227000000 +}, +{ + "ETH_account" : "0x8f788e9190b00146f7228c1b82b0b209e2069b2b", + "name" : "0x8f788e9190b00146f7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8838187939 +}, +{ + "ETH_account" : "0xb7268e6cb4bd0ccf76683aa3214b5a106c208d1a", + "name" : "0xb7268e6cb4bd0ccf76", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 978691000 +}, +{ + "ETH_account" : "0x1216ec8f9365064ed9110e1121ab1ebce07e3bdb", + "name" : "0x1216ec8f9365064ed9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 199999999 +}, +{ + "ETH_account" : "0x4fcdbc3d9d65c63f593d2d185535c51bef5e8a03", + "name" : "0x4fcdbc3d9d65c63f59", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1775418500 +}, +{ + "ETH_account" : "0xbcbae7e240f3e969c302e471be95b79573e0d657", + "name" : "scottssopiatx", + "publicKey" : "SPH7b4wtLWW3x87oui4MqqRWNpH5hxefmL2i2igg2Zss8USzeBejZ", + "balance" : 242690400 +}, +{ + "ETH_account" : "0xf5d3670c433e5c9d576d9aee73d62483a711f980", + "name" : "0xf5d3670c433e5c9d57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1381854326 +}, +{ + "ETH_account" : "0x32773d3d12ea8ec8288a7dbe3e7dcfe39fd554cd", + "name" : "0x32773d3d12ea8ec828", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 184196700 +}, +{ + "ETH_account" : "0x145ac17e541ab0dbacf8694aa5a8920199447f34", + "name" : "0x145ac17e541ab0dbac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9360000000 +}, +{ + "ETH_account" : "0x3308f043698b9adf1727026e8bb77eaa583c2d8b", + "name" : "0x3308f043698b9adf17", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 437000000 +}, +{ + "ETH_account" : "0xcf05a7df1bc57b21a1455ce3252eb006ba4f9479", + "name" : "0xcf05a7df1bc57b21a1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 340000000 +}, +{ + "ETH_account" : "0x19501140d734ced002da09ca84e965aa554b2d1f", + "name" : "0x19501140d734ced002", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 996909580 +}, +{ + "ETH_account" : "0xc850cfaa93d38a827e1af0ff165fcaa2aca7c06d", + "name" : "0xc850cfaa93d38a827e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 700306800 +}, +{ + "ETH_account" : "0xdf2aa8373b9f5bb34d4eb45c5dd723aa6b5e3ab7", + "name" : "remyslowgo", + "publicKey" : "SPH8kb3Knhyvdb7NrBsh2Xmd7W8fSDv4nRYuyrf8smsGjkZso6tcE", + "balance" : 306761500 +}, +{ + "ETH_account" : "0x8b1cff28eed2ad03fb019f9e952d417de12c848f", + "name" : "jackwagonsph", + "publicKey" : "SPH89at1grNXRj1qoJxH2crS8paiwa7ssD4nENBG2hLAFCzHTf6Jq", + "balance" : 10846460625 +}, +{ + "ETH_account" : "0xe330ad8e61199b454f6e89a895d03eb420cabb72", + "name" : "0xe330ad8e61199b454f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 921067000 +}, +{ + "ETH_account" : "0xe3eb0e7a646f2622b607108238ee3949c7b932dc", + "name" : "0xe3eb0e7a646f2622b6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 404000000 +}, +{ + "ETH_account" : "0x79e09e8c421800142a68f91648b489d0dc957f82", + "name" : "0x79e09e8c421800142a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1101141141 +}, +{ + "ETH_account" : "0xacc8223e27831a8467b9a5a742f5e327a1a0dd7c", + "name" : "0xacc8223e27831a8467", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 496111766 +}, +{ + "ETH_account" : "0xd114929c5108ce553c7bcced5dc341f93430e250", + "name" : "0xd114929c5108ce553c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x126398fdd24df205b0bc773607c022ad37789b0a", + "name" : "0x126398fdd24df205b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 541450000 +}, +{ + "ETH_account" : "0x852c6b14f77dfa3612d2abc321108a063a24de0d", + "name" : "cryptodarkforce", + "publicKey" : "SPH4txGnJYfCT5bmGVR4kEm6wTmwZ5p2jMDkE3wQBGBnDGcuPCAdv", + "balance" : 33808876300 +}, +{ + "ETH_account" : "0xf6e53843920776df045124b29d79ace160c835a3", + "name" : "cortesgab", + "publicKey" : "SPH6VaT7RqZqkR8zz4vX8AjAnT3PUu9UjJ8Jjif1kLGa8HAFwj5XB", + "balance" : 4209940000 +}, +{ + "ETH_account" : "0xc55f2aa68015fecece500438da98241cec0c1b36", + "name" : "0xc55f2aa68015fecece", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 642101006 +}, +{ + "ETH_account" : "0xeb5362fdc5855b496cfc25c2578e5757c6cec322", + "name" : "0xeb5362fdc5855b496c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 295646 +}, +{ + "ETH_account" : "0xe6ae59959185adb1e43594bd0cac7dafe9ab3f15", + "name" : "0xe6ae59959185adb1e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 51201000000 +}, +{ + "ETH_account" : "0x7dbdd5231b1af00ee39f03bbd7eb06d357979446", + "name" : "0x7dbdd5231b1af00ee3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 35021026000 +}, +{ + "ETH_account" : "0xee96de0dc4591d3bd3fa2fc0b03d1702f3690df7", + "name" : "sophiatxswap", + "publicKey" : "SPH6Q6Yi2bhwE3zHxmGMvbDXE15BVXGT33cr6HuJo7ShqDR3A2L4b", + "balance" : 1714839667 +}, +{ + "ETH_account" : "0x4ca10a29387712c64012af8f53591d7b77c6558e", + "name" : "0x4ca10a29387712c640", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 21150000000 +}, +{ + "ETH_account" : "0x63082d5709efbc66e3f8aaeaa298aee6abb77ff3", + "name" : "0x63082d5709efbc66e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 299862862 +}, +{ + "ETH_account" : "0x95bf9e69ca6aa29debc32c0dcf80c8911091aa09", + "name" : "0x95bf9e69ca6aa29deb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 455341000 +}, +{ + "ETH_account" : "0xcc8646ae5c689505bf5b43450f4ee6e49ec63b22", + "name" : "0xcc8646ae5c689505bf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 688798000 +}, +{ + "ETH_account" : "0x7b4be6643598dcc499c905b905f36c2b26cb6b7a", + "name" : "0x7b4be6643598dcc499", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2637924746 +}, +{ + "ETH_account" : "0x850c53779d46244b98f84e1add4ba01ee494f3fd", + "name" : "0x850c53779d46244b98", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2207000000 +}, +{ + "ETH_account" : "0xe13cefe51cd737aa2979bbaf70a0e994eb9ba068", + "name" : "0xe13cefe51cd737aa29", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20363047300 +}, +{ + "ETH_account" : "0x6811f0139d652568fdcd5a7626e72718de7a637b", + "name" : "0x6811f0139d652568fd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1963000000 +}, +{ + "ETH_account" : "0xfc981335350849e29a97ca22ce0a77ee2f40cc60", + "name" : "0xfc981335350849e29a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1800000000 +}, +{ + "ETH_account" : "0x03a50269555176f0b2f874bf014e89ac91436370", + "name" : "0x03a50269555176f0b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 58000000 +}, +{ + "ETH_account" : "0xd87a9e444bb8286cbcf5ae0306a6416472eff30c", + "name" : "0xd87a9e444bb8286cbc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x82de475e58925927663aef29cebc17cf6d2d6dd8", + "name" : "0x82de475e5892592766", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 832647498 +}, +{ + "ETH_account" : "0xede464a7e63e8d19229e380d6895acc24065f0a6", + "name" : "0xede464a7e63e8d1922", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5482424500 +}, +{ + "ETH_account" : "0x7f65301fd20f2ad8347ddb681a10bba5a97d4361", + "name" : "0x7f65301fd20f2ad834", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1677000000 +}, +{ + "ETH_account" : "0x6d05fa60f30aefd5a659bbfbb2bc2d7922514c58", + "name" : "0x6d05fa60f30aefd5a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10618934100 +}, +{ + "ETH_account" : "0x9d676d9393ea288b068a68c980c2729a2a4676d6", + "name" : "0x9d676d9393ea288b06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 216518236 +}, +{ + "ETH_account" : "0xc9533e9cc54e5a99383c7a8a8e6d663ad97e87d3", + "name" : "sophiasophia", + "publicKey" : "SPH6o5cRsgU26ePcCP8ydeq1swVrvBmRVYhHp1B7PUZhp2p79iNjB", + "balance" : 1360000000 +}, +{ + "ETH_account" : "0x911c990d3a12d7ae5ab9c9ebc3a614a2e0289aa4", + "name" : "0x911c990d3a12d7ae5a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13376000000 +}, +{ + "ETH_account" : "0x0e36ea6c562276098f62d037591bc7ae23a4bf9e", + "name" : "0x0e36ea6c562276098f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3780000000 +}, +{ + "ETH_account" : "0xb8e37db0c2fcbf67fc85d0841afbff2e70f77401", + "name" : "ryansphtxname", + "publicKey" : "SPH6kzuz5WftT5csr1UcPFxuwh9aeZvHRihcMk7mC79Ki8R6qTQay", + "balance" : 1797000000 +}, +{ + "ETH_account" : "0x3793cad1b5ed6330212201b5bfae6982dd5d77dc", + "name" : "0x3793cad1b5ed633021", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3471000000 +}, +{ + "ETH_account" : "0xc6557e99f33cdbd1745c31cca7b881ce678f8c4e", + "name" : "0xc6557e99f33cdbd174", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 702000000 +}, +{ + "ETH_account" : "0xec9bb300975d7c8d8f1174a03cfaa26ad39b9e71", + "name" : "0xec9bb300975d7c8d8f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4996990000 +}, +{ + "ETH_account" : "0xccf56698a8ea998ff456b732a0354ea523039fe8", + "name" : "0xccf56698a8ea998ff4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 734348000 +}, +{ + "ETH_account" : "0x170a6332bf0d741394c0c5ec33edb7e0a2656ba5", + "name" : "0x170a6332bf0d741394", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 991000000 +}, +{ + "ETH_account" : "0x6db63358837393753265c98e14f2123cddbfa58d", + "name" : "0x6db633588373937532", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x9c5dc330c026a567de590222dfff3cc5ef7b1e00", + "name" : "0x9c5dc330c026a567de", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 120000000 +}, +{ + "ETH_account" : "0x8fd84a1d18c4f728713a0dc496de34161748ff7b", + "name" : "0x8fd84a1d18c4f72871", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3488500000 +}, +{ + "ETH_account" : "0xfdf65361feae79ec417d3d70837d8c62d9dd2433", + "name" : "0xfdf65361feae79ec41", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 274104100 +}, +{ + "ETH_account" : "0x5bdcf430619de8edb5b736fdac0cd0fdff5c3c4c", + "name" : "0x5bdcf430619de8edb5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 294649000 +}, +{ + "ETH_account" : "0xf588019f07f4ffc791833da9477324d3b13b2491", + "name" : "0xf588019f07f4ffc791", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1300000000 +}, +{ + "ETH_account" : "0x430ba8132441b8f583aa4473baab5120de2340ef", + "name" : "0x430ba8132441b8f583", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5191641522 +}, +{ + "ETH_account" : "0xf4a5ce2cbe512adc16d4049e4d8a6c2d0476a51c", + "name" : "cucamonga", + "publicKey" : "SPH5bNmqv9AVrrgR7frXQxSdoT3WTmVfQsfXMnPDM3ZwLZE8aKAzk", + "balance" : 384001849 +}, +{ + "ETH_account" : "0x574a0111a8c6868d23361742bd9fb8e111653e0e", + "name" : "0x574a0111a8c6868d23", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7086173200 +}, +{ + "ETH_account" : "0xec9ef557392966bdc6cad9afd65d4e40128de76f", + "name" : "0xec9ef557392966bdc6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 466000000 +}, +{ + "ETH_account" : "0x062ad0ad9c0b046954cdb86edd735912a6247e32", + "name" : "0x062ad0ad9c0b046954", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1066000000 +}, +{ + "ETH_account" : "0x20990b7688861fd6d8f45efc1ffb051bb030532c", + "name" : "0x20990b7688861fd6d8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2242000000 +}, +{ + "ETH_account" : "0xd5a2c9e7c085e3efe7fc4899817ef8e5f20e10c7", + "name" : "0xd5a2c9e7c085e3efe7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 440347388 +}, +{ + "ETH_account" : "0xa60e321b166b8527359fe4e679ae8a894404585b", + "name" : "0xa60e321b166b852735", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1012000000 +}, +{ + "ETH_account" : "0xf49f2cb72bce5f3847c474f97224e6ef488a1f52", + "name" : "0xf49f2cb72bce5f3847", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1559399300 +}, +{ + "ETH_account" : "0xc43df36e46c16f037d801e01765a769ae474bccc", + "name" : "0xc43df36e46c16f037d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 122752000 +}, +{ + "ETH_account" : "0x54f4aff30c620eafc8cebcf2ebf28efd4681b6b9", + "name" : "0x54f4aff30c620eafc8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 956090000 +}, +{ + "ETH_account" : "0xd1a19777010dcf3cdddd5ec7c911241ea6e5d75d", + "name" : "0xd1a19777010dcf3cdd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 256000000 +}, +{ + "ETH_account" : "0x8eb485e78ed1991cb3effc16d863dcfc6592d248", + "name" : "0x8eb485e78ed1991cb3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000000 +}, +{ + "ETH_account" : "0x2d75d400d63d6afc43b414d87a948d048c41c59f", + "name" : "0x2d75d400d63d6afc43", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000000 +}, +{ + "ETH_account" : "0x0c22882f967444d11d3d0b09c61ddff9076df90f", + "name" : "0x0c22882f967444d11d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8011386 +}, +{ + "ETH_account" : "0xd1876bb066a438f06c42ee0aec8c286885047440", + "name" : "0xd1876bb066a438f06c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 337059600 +}, +{ + "ETH_account" : "0xde6aa42ff6abc682e2e76e6dff1e91bdd05d1c60", + "name" : "0xde6aa42ff6abc682e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5050000000 +}, +{ + "ETH_account" : "0x1c3e391875572668c68cd8584dfec7f45501b706", + "name" : "0x1c3e391875572668c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150000604 +}, +{ + "ETH_account" : "0xd28e65a2fd9166cbbcbf8d9225d33f1bdba5fc3a", + "name" : "comfycrypto", + "publicKey" : "SPH7SZCD5HWfnvnsQP6gT5829MnsjzdSsdktgFQ7t7beVNV1bR1JW", + "balance" : 26499519000 +}, +{ + "ETH_account" : "0x1f6e8ba65f9263e8eac63d7a76407e5982bbec83", + "name" : "0x1f6e8ba65f9263e8ea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1989727536 +}, +{ + "ETH_account" : "0x63e24c9ea5f07368603631a22eb2b99a7e3e313d", + "name" : "0x63e24c9ea5f0736860", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000 +}, +{ + "ETH_account" : "0xf3b393bc0a3b721509f6663340b59be08b6fcd84", + "name" : "0xf3b393bc0a3b721509", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13834278500 +}, +{ + "ETH_account" : "0xcfa1519d61cfcb889087385c67ec162b89b7f8e4", + "name" : "0xcfa1519d61cfcb8890", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xfef17e03fb3b14a71daee11d895e001c69dbf5d7", + "name" : "0xfef17e03fb3b14a71d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 109090000 +}, +{ + "ETH_account" : "0x9e4e32f1df53822ec53101f71c1e5b9572069f79", + "name" : "0x9e4e32f1df53822ec5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 166081795 +}, +{ + "ETH_account" : "0x5c1ea7ca39d7529f199b9bd296bf9e0940fd7913", + "name" : "altcoinjules", + "publicKey" : "SPH6F9EdgA9udvz3SJagVarELBmi3dVeWQ18fJAAjFpazjeGRkAhV", + "balance" : 1652819000 +}, +{ + "ETH_account" : "0x0dab6d627a1ee071e8c5d83dc087538baccb5116", + "name" : "0x0dab6d627a1ee071e8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 37645790894 +}, +{ + "ETH_account" : "0x945b2440e5790702b579d4eec4cd0f85c3e9c467", + "name" : "0x945b2440e5790702b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3087388673 +}, +{ + "ETH_account" : "0x9a0fab48bb880fa296dcfe3bb42cf3d8eb4cc05c", + "name" : "0x9a0fab48bb880fa296", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60000000 +}, +{ + "ETH_account" : "0xd13422809b87840ac66946ed6112d980ff6ec897", + "name" : "0xd13422809b87840ac6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1441000000 +}, +{ + "ETH_account" : "0xfd1eb7e1071aae56fc7022866eb6f2daf00539db", + "name" : "sebaconcon", + "publicKey" : "SPH7T9hz59kPSfA3Tx6jgoRmxcGwpcy2qKaCG5N4AoZmoeaKpSTgU", + "balance" : 110381305551 +}, +{ + "ETH_account" : "0x3b40b129a6931b5341a45e773d4411d74b9e4aec", + "name" : "0x3b40b129a6931b5341", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 680300225 +}, +{ + "ETH_account" : "0xee5b98998c49d29915d35c0b752bb86e476b7503", + "name" : "0xee5b98998c49d29915", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 47000000 +}, +{ + "ETH_account" : "0xd333d67fecc76b8a12ee84e625775bc77fba1d42", + "name" : "0xd333d67fecc76b8a12", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 375672100 +}, +{ + "ETH_account" : "0xf395dabfb8c95406379411c02446b73dbf717ac0", + "name" : "0xf395dabfb8c9540637", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22691000000 +}, +{ + "ETH_account" : "0xea369297e629f3c5b805dce7c163c9665cb201e1", + "name" : "0xea369297e629f3c5b8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 92592174745 +}, +{ + "ETH_account" : "0xc3d154d8fd9bc17bf71717bf2bba415cdf97bd3e", + "name" : "0xc3d154d8fd9bc17bf7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 82660000 +}, +{ + "ETH_account" : "0x6a71194c50e032aba99720fc7e13a7480b903b2f", + "name" : "0x6a71194c50e032aba9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 92899000 +}, +{ + "ETH_account" : "0xb493be57be512bd9f176eae420b8398216196d97", + "name" : "0xb493be57be512bd9f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1844000000 +}, +{ + "ETH_account" : "0x2e6f5eaefcdc77971db040c56561ce5f0d511a14", + "name" : "0x2e6f5eaefcdc77971d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 294420446 +}, +{ + "ETH_account" : "0x828c95657555d6a56d4f80f2515bb3dcb0e0a1e5", + "name" : "0x828c95657555d6a56d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 138911700 +}, +{ + "ETH_account" : "0x536bd993bdbfdf45c4f71bb012826ac8dace72b0", + "name" : "0x536bd993bdbfdf45c4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 223775927 +}, +{ + "ETH_account" : "0x5cfb03b8d6618c76b74fa02ade20633bbcd08701", + "name" : "0x5cfb03b8d6618c76b7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2567520000 +}, +{ + "ETH_account" : "0xfcf99e1580cd1dd152e7f4aabc4879c8482be446", + "name" : "0xfcf99e1580cd1dd152", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6750000000 +}, +{ + "ETH_account" : "0x12dcecc88ad1ac676e2949ccaf30c652ce19474a", + "name" : "0x12dcecc88ad1ac676e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000 +}, +{ + "ETH_account" : "0x71bb93fffc711c4acfe0be92133334ba438849dd", + "name" : "0x71bb93fffc711c4acf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10481771744 +}, +{ + "ETH_account" : "0xa0c3fad7e08a8176fe3a371aa473c49b07eabc35", + "name" : "0xa0c3fad7e08a8176fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xc798cccfc1ebfecd1998c90233e330031c46ecde", + "name" : "0xc798cccfc1ebfecd19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0xb38d9670418bc8b06108e417855559d550b9baad", + "name" : "0xb38d9670418bc8b061", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 600000000 +}, +{ + "ETH_account" : "0xaf67b5e1e0d6ff5f99d19afc81789f00342809ea", + "name" : "0xaf67b5e1e0d6ff5f99", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 133425800 +}, +{ + "ETH_account" : "0xe1eca39f4130436d550f3ff1f28292466b88df2d", + "name" : "0xe1eca39f4130436d55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4242131900 +}, +{ + "ETH_account" : "0xedb2af62ccdaf8bab2ee5905ca95fb844d948a1e", + "name" : "0xedb2af62ccdaf8bab2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 132298932 +}, +{ + "ETH_account" : "0xc2fa04d1a9f6a8bd191f5f576303fbdcda578b24", + "name" : "0xc2fa04d1a9f6a8bd19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 392391080 +}, +{ + "ETH_account" : "0x21da7691674722016b6198aec5a6189afd2b8567", + "name" : "sphstringbugge", + "publicKey" : "SPH5KJLjB84fz1CoH95dfChhC9WVRJHH5Vi4j3yE87gPMs8fkfs7C", + "balance" : 28305087103 +}, +{ + "ETH_account" : "0x2ed5031da36764664b7087bcd40418ba93823b52", + "name" : "0x2ed5031da36764664b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2908000000 +}, +{ + "ETH_account" : "0x823cf164eb4b17879ad68c234f696ac604602d63", + "name" : "0x823cf164eb4b17879a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2588673286 +}, +{ + "ETH_account" : "0x09a98b8b15c9fadff8524503768479b26ede3ec7", + "name" : "0x09a98b8b15c9fadff8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1214982869 +}, +{ + "ETH_account" : "0xe97a5e5cb7c06359f9b92cf1d789f60935f4ac9b", + "name" : "0xe97a5e5cb7c06359f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16263834000 +}, +{ + "ETH_account" : "0xd5493f25d2230cd4923ed68ac6b15dd344abfb6b", + "name" : "0xd5493f25d2230cd492", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 495774285 +}, +{ + "ETH_account" : "0xfb3f70b8b119c191f5a2a2d7f83568cd19d65646", + "name" : "0xfb3f70b8b119c191f5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1742981100 +}, +{ + "ETH_account" : "0xa531cf7cdbe4b86a063dce0bd23e26afef3f979a", + "name" : "soepenberg", + "publicKey" : "SPH6yiVmyVFT7eq7i7osYbSrWqzLiv5cMcqo7ap9CDBRzUPT1rasN", + "balance" : 8886339589 +}, +{ + "ETH_account" : "0x9b2e7a51f4fc9769665ab975d9808feb7116401e", + "name" : "tradeformersphtx", + "publicKey" : "SPH6QsJC49RdVCpbqhyhRnynCRKipMyiD5jUq68ctUvZYBvWgiJvJ", + "balance" : 9910167000 +}, +{ + "ETH_account" : "0x0954ac76926d033b569799ada3cdab4862740c58", + "name" : "0x0954ac76926d033b56", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 360000000 +}, +{ + "ETH_account" : "0xcfc12c816e3d20d2ff5035ce7b64ab801b1cd512", + "name" : "0xcfc12c816e3d20d2ff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 372480992 +}, +{ + "ETH_account" : "0x24fe4290b15499f1710e850d002e756e91bf4559", + "name" : "0x24fe4290b15499f171", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 123000000 +}, +{ + "ETH_account" : "0xff54308621eeddf887aa2d1470b480e2c0a195f5", + "name" : "0xff54308621eeddf887", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 998205410 +}, +{ + "ETH_account" : "0x782cd63ef9590782d82da22e2392305374f32702", + "name" : "0x782cd63ef9590782d8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0xd53bf7bee9e358cd405c3579cd0ed1e1e6ee0aa0", + "name" : "0xd53bf7bee9e358cd40", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 45609238248 +}, +{ + "ETH_account" : "0xf9bccc7451dd72862f6e3e0eac8d1b428fae87e7", + "name" : "0xf9bccc7451dd72862f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 81185000 +}, +{ + "ETH_account" : "0x1890dc24d348740e8e2dd04785d84c3a8b5cdb14", + "name" : "meganmargit", + "publicKey" : "SPH5saVFugzTGkFKCiHg9dFecWiPKhnvHYRbwDcKjtwFocRApJR3a", + "balance" : 919000000 +}, +{ + "ETH_account" : "0x0e6f7a8968c19e9ce90a2cd5c60096de68467997", + "name" : "paulaerkul", + "publicKey" : "SPH84BYBV5nbo9mmkqqLgmtftFx7avZoLmzXwfkar4tYdsFg7Fijy", + "balance" : 182240000 +}, +{ + "ETH_account" : "0x1254f1d05449bb2cbc8c1880d9a54a636e488097", + "name" : "0x1254f1d05449bb2cbc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3026396635 +}, +{ + "ETH_account" : "0x56a054854122618b605cce90e2a907eca44c8f1f", + "name" : "0x56a054854122618b60", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2596797583 +}, +{ + "ETH_account" : "0xd6657c87ce10763a3509ff45cd8ec58dddfbb95d", + "name" : "0xd6657c87ce10763a35", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 462000000 +}, +{ + "ETH_account" : "0x649350e617a0f91f2a989c00689e1c3aaa7680bf", + "name" : "0x649350e617a0f91f2a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10020000000 +}, +{ + "ETH_account" : "0x59c9e7e3266139d11f429afc8a67eccfc47f9738", + "name" : "0x59c9e7e3266139d11f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3836070976 +}, +{ + "ETH_account" : "0x7e2c5621ca98dab609ac7bc7360e07f558be65fc", + "name" : "0x7e2c5621ca98dab609", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0xa6b791fa6b26974f960c8dd5e17b1813f1ad4bb3", + "name" : "0xa6b791fa6b26974f96", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 991000000 +}, +{ + "ETH_account" : "0x5ac4225d0c4588667de9e7ca9df77768f3fb5ed9", + "name" : "0x5ac4225d0c4588667d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3140260000 +}, +{ + "ETH_account" : "0xf7534428d25c4b48c1bac9e3cd6aac8ba1075b35", + "name" : "marcello", + "publicKey" : "SPH7UPFwAPExuwzNZ3BFarQQewukEpJgoXdM9RzzPLnAp82san2yi", + "balance" : 2263322827 +}, +{ + "ETH_account" : "0x6a53fdae4e5326b242dbdc756686ba3faffb0a27", + "name" : "0x6a53fdae4e5326b242", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 975982387 +}, +{ + "ETH_account" : "0xcef58358e11dbd18866dc6b38f39f8bb989fdcc9", + "name" : "0xcef58358e11dbd1886", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3300000000 +}, +{ + "ETH_account" : "0x86df5b6a50413615ec62c8ff22f3b698b58d7c3c", + "name" : "0x86df5b6a50413615ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20599224 +}, +{ + "ETH_account" : "0x76f9704e3c7de9df2bf519067447f40a8440888f", + "name" : "0x76f9704e3c7de9df2b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 584296277 +}, +{ + "ETH_account" : "0x8e5f949bf46ba430ee207bd63e30e06177f47c5d", + "name" : "0x8e5f949bf46ba430ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 723344000 +}, +{ + "ETH_account" : "0x4354c0ee8f55b3733cc93b4409249cb2d9b9fa95", + "name" : "0x4354c0ee8f55b3733c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 96123174 +}, +{ + "ETH_account" : "0x1eacf59ad5063dadeece7dcf86010858cbd6b6e2", + "name" : "0x1eacf59ad5063dadee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1537137577 +}, +{ + "ETH_account" : "0x301725a50db2580e2b7cdfc131b900cdd5825428", + "name" : "0x301725a50db2580e2b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3200198900 +}, +{ + "ETH_account" : "0x7be8197ef046b497ddda5d955dfa84ce931df5f7", + "name" : "0x7be8197ef046b497dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 427709500 +}, +{ + "ETH_account" : "0x8cd3bec93d81f900f4faef7f40259d392b616a7e", + "name" : "biddu", + "publicKey" : "SPH67r2ufMaiSiPCNcRwMvxaY3WbDyZM82oQgnq9DSaDABWd4DbD8", + "balance" : 4303858000 +}, +{ + "ETH_account" : "0x8785d70fa41fe967a6257dbcc108d37ed1e8ed0f", + "name" : "0x8785d70fa41fe967a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9249980000 +}, +{ + "ETH_account" : "0x6ca0961003434978435ab8311419f0e6f336ec99", + "name" : "0x6ca096100343497843", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16 +}, +{ + "ETH_account" : "0xcc751b68ad0d7fdc26190b6571734981a602b813", + "name" : "0xcc751b68ad0d7fdc26", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500843800 +}, +{ + "ETH_account" : "0xf83965e8efc51d5db64d5cec8a4d5fabd544847d", + "name" : "0xf83965e8efc51d5db6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 178857887 +}, +{ + "ETH_account" : "0xe21c7e1cc273e9bfed28a94030d5056ca3a38602", + "name" : "0xe21c7e1cc273e9bfed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 843109500 +}, +{ + "ETH_account" : "0xc4393b6e53badf2166cb7e6ffb49151c58ef257d", + "name" : "0xc4393b6e53badf2166", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19810177052 +}, +{ + "ETH_account" : "0x9922f22812bb3041c09eceeeac38c063cd881d43", + "name" : "jemcp", + "publicKey" : "SPH8YbA9LM2Ng9wD2XYKrQNhfa5emhbh1RKT9uHPcz86HReA8Xv8u", + "balance" : 3872544600 +}, +{ + "ETH_account" : "0xcedb44ede1685687b027171136cc6e27df1ab6c4", + "name" : "0xcedb44ede1685687b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 60457200000 +}, +{ + "ETH_account" : "0xc8c45e03c71f9341244528ade06861056b888a2a", + "name" : "0xc8c45e03c71f934124", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23617253281 +}, +{ + "ETH_account" : "0xbf1e7b8a518a09943885fe60cd08eb37094ac039", + "name" : "0xbf1e7b8a518a099438", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 631030376 +}, +{ + "ETH_account" : "0xe1fa11206c2a4a8a65bc838ddddef08da1f39b81", + "name" : "0xe1fa11206c2a4a8a65", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 34623000000 +}, +{ + "ETH_account" : "0x3ca55ecb987edd94028a29e19fb69b8c68092dfd", + "name" : "0x3ca55ecb987edd9402", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1850777400 +}, +{ + "ETH_account" : "0x538530650eba60c5821dd56238204cec2ff5f492", + "name" : "0x538530650eba60c582", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 356754000 +}, +{ + "ETH_account" : "0x12c33a4c04bea1b69acc498f183ad517c99c0344", + "name" : "0x12c33a4c04bea1b69a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 263288497 +}, +{ + "ETH_account" : "0xa4751db317b015e876abf910ec2dc4ecf8af95e1", + "name" : "0xa4751db317b015e876", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 963972000 +}, +{ + "ETH_account" : "0xdb3e56575db7ecd610ab4168ec9b5e7f5c2d2d64", + "name" : "0xdb3e56575db7ecd610", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 526313376 +}, +{ + "ETH_account" : "0xa19336925671db414048758840b4fdff6e124a99", + "name" : "0xa19336925671db4140", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1518047400 +}, +{ + "ETH_account" : "0x13a6b929203d51ac981ff6896938e4f1aafda2d7", + "name" : "digicap", + "publicKey" : "SPH5E5VruQ3C36mwQqFejoXfbqtth9KhtpJmGHozWcKKfMUuJAeMZ", + "balance" : 51773100900 +}, +{ + "ETH_account" : "0x0fcd5ee147cc0062298ec239b0676effef742930", + "name" : "garry", + "publicKey" : "SPH5L7B41dprzsTguQ4XdMeNP6kxRyXxG6nL24iPX1Zr5uDi7Hk2W", + "balance" : 473520100 +}, +{ + "ETH_account" : "0xe0e93672caab3a7bed8fde383166020a1cd76f61", + "name" : "0xe0e93672caab3a7bed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2361480000 +}, +{ + "ETH_account" : "0x48907e9dfbf2d3cac6f724f898b7fef3a3f9b14c", + "name" : "0x48907e9dfbf2d3cac6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 891587519 +}, +{ + "ETH_account" : "0x853cb8a313b719c96d4ab437a80e0dc212e0f1d3", + "name" : "0x853cb8a313b719c96d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1040000000 +}, +{ + "ETH_account" : "0x8c679f6a0bdbf702f113633938b5e99c898eabe1", + "name" : "0x8c679f6a0bdbf702f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 327152845 +}, +{ + "ETH_account" : "0x1f4230816d80f6d83dedbbccca5d6d896698e1c4", + "name" : "0x1f4230816d80f6d83d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 915354400 +}, +{ + "ETH_account" : "0xf55de1ee405cab5830da288ebfd0c1b41424288f", + "name" : "0xf55de1ee405cab5830", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 304450767 +}, +{ + "ETH_account" : "0x6ad5ffcb38712caea53f2852cc6c768459964a60", + "name" : "0x6ad5ffcb38712caea5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40001000000 +}, +{ + "ETH_account" : "0x1af7dd00929f921c198e6e89c01725c928de0bb0", + "name" : "0x1af7dd00929f921c19", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30000000 +}, +{ + "ETH_account" : "0xc70fdd5b286d9f5b8eb8e40fdefb4158be35c534", + "name" : "0xc70fdd5b286d9f5b8e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3470135000 +}, +{ + "ETH_account" : "0x0159ec10d01d7efee547a46fbda78f5a41879243", + "name" : "0x0159ec10d01d7efee5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8716114238 +}, +{ + "ETH_account" : "0x3d1e6cf32e2bbd94082e754a0f93c55211259ca0", + "name" : "0x3d1e6cf32e2bbd9408", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 52321830 +}, +{ + "ETH_account" : "0xeb179815cb218b7752596d42c1db53312fd9458c", + "name" : "0xeb179815cb218b7752", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1323571041 +}, +{ + "ETH_account" : "0x64caf5fef891f84ef34b4b7d80bd6a18f61256ce", + "name" : "0x64caf5fef891f84ef3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1500000000 +}, +{ + "ETH_account" : "0x03a4096cac4e8cc023e971053c3d3bc84e45eb8a", + "name" : "0x03a4096cac4e8cc023", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 209344600 +}, +{ + "ETH_account" : "0xfde21ecbb7ae6ffa95976ce320e54b2913effb42", + "name" : "0xfde21ecbb7ae6ffa95", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 165932708 +}, +{ + "ETH_account" : "0x2007035a0ac890636cc223efe34b4647bb73d8c8", + "name" : "0x2007035a0ac890636c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 127236922 +}, +{ + "ETH_account" : "0xe63c4006d5edcb28afa52493862b0c8bbd8d7b2b", + "name" : "0xe63c4006d5edcb28af", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 184000000 +}, +{ + "ETH_account" : "0x92a219eb3bab1aba29d8312985f708fd7254f39b", + "name" : "0x92a219eb3bab1aba29", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 860056488 +}, +{ + "ETH_account" : "0x425dd61a01ac8a76c33d9a1b75156a91106b6963", + "name" : "0x425dd61a01ac8a76c3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2626000000 +}, +{ + "ETH_account" : "0x508d24d9856553ade146c3ef56dd24c9264d254e", + "name" : "0x508d24d9856553ade1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3100000000 +}, +{ + "ETH_account" : "0x41565d5e812d44e293f26d0b93278e0d530369ad", + "name" : "0x41565d5e812d44e293", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10208107069 +}, +{ + "ETH_account" : "0xab7742552da843558fc233380cf08a8dd358e260", + "name" : "0xab7742552da843558f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 498036314 +}, +{ + "ETH_account" : "0x680d4d88a6cd76d4437bae35bdd58bb967bccc98", + "name" : "0x680d4d88a6cd76d443", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000000 +}, +{ + "ETH_account" : "0xd762205476ea5649c689a8a703488572c8b3007d", + "name" : "0xd762205476ea5649c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 76711390000 +}, +{ + "ETH_account" : "0xb06a029979935a2aa94a6b74f52c7c9d630cfea9", + "name" : "0xb06a029979935a2aa9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24305016800 +}, +{ + "ETH_account" : "0xd27f4afc132208b456353073ba76678bc3da05d4", + "name" : "0xd27f4afc132208b456", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 798255523 +}, +{ + "ETH_account" : "0xf3ae59584a5ab0e1a98b157c849bdd9a433a7e7b", + "name" : "0xf3ae59584a5ab0e1a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 866486365 +}, +{ + "ETH_account" : "0x7db0b9d746bcacad557bbdb3642723e1510ab0fb", + "name" : "0x7db0b9d746bcacad55", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1535049900 +}, +{ + "ETH_account" : "0x0a361e4f7f952f3c1e9b21a7ac7faefb34a189a9", + "name" : "entropywolf", + "publicKey" : "SPH5iNJuyzzMx5VF2jARp2HVZJQbbH4mjM2oxr9dAnuwWmkuhabLW", + "balance" : 391600000 +}, +{ + "ETH_account" : "0x13c61bb3020d0cdb8338d67e43834573e8f83a04", + "name" : "0x13c61bb3020d0cdb83", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3823000000 +}, +{ + "ETH_account" : "0x57196ff99d519a65e66658e2c898812dad64def8", + "name" : "phentrin", + "publicKey" : "SPH7Yotxtoro7dm6mHZjS46G8yHknQz1fzNRsV7DkcDTihkV61pd9", + "balance" : 728061221 +}, +{ + "ETH_account" : "0x6297a3d8d98f108c8f6b12b802b7a88041d59241", + "name" : "0x6297a3d8d98f108c8f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 929919354 +}, +{ + "ETH_account" : "0x3cfb1e282541f5b13b79b47cd6e280cccaae3865", + "name" : "sophiatxmun2", + "publicKey" : "SPH56frdh9jqSNP9jVwSBjJ9arvUErX2baZu1SUydeBQjoqasuYTF", + "balance" : 4400825302 +}, +{ + "ETH_account" : "0x245f0725a5f7f9165f47263713f825f24b1e52ef", + "name" : "contractsphtxsc", + "publicKey" : "SPH6Gg6tWgNUdJoCaRzgxWWdDrVM1iupJ2Pod3RkdjfEeXZBqCgoZ", + "balance" : 1082183597 +}, +{ + "ETH_account" : "0xcf33c07570e74598fb0074a3a7e5e3ac1926f132", + "name" : "0xcf33c07570e74598fb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2626930450 +}, +{ + "ETH_account" : "0x761279a1759d9b09a0549eb73ae8d4f62f789002", + "name" : "0x761279a1759d9b09a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1062477345 +}, +{ + "ETH_account" : "0x68361779aca6d456cee8eb75ef99e855bef168f0", + "name" : "0x68361779aca6d456ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0x03cf659c87b12f358af2325dba6cd185062929cf", + "name" : "0x03cf659c87b12f358a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5468426092 +}, +{ + "ETH_account" : "0x51ac53eec04d4e79079bbeff1cc702ad37814701", + "name" : "0x51ac53eec04d4e7907", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1 +}, +{ + "ETH_account" : "0x554cf7f2c3a73eb222ced78ae9a4a4a5dd90cc26", + "name" : "0x554cf7f2c3a73eb222", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0x8903a25b52a253ba8d975ea84a5702669f2c527b", + "name" : "0x8903a25b52a253ba8d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 256845661 +}, +{ + "ETH_account" : "0xa1326eb56127c4834798ae6652e9ae0729ee2159", + "name" : "rah5sphtx", + "publicKey" : "SPH8WoEhs7AZJSGrSuF52hNcNbMGpGZjzULEgXGmq1cFx2d6xRFvx", + "balance" : 3900860000 +}, +{ + "ETH_account" : "0xef68c1356c9851a0e38fb769f916f8b069e34665", + "name" : "0xef68c1356c9851a0e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 845989000 +}, +{ + "ETH_account" : "0x4b592bb4420039ff859808ed588068733b50bba9", + "name" : "0x4b592bb4420039ff85", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 800000000 +}, +{ + "ETH_account" : "0xbe72d0cf5fe92c591767365425666d64b0c278df", + "name" : "0xbe72d0cf5fe92c5917", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3480378839 +}, +{ + "ETH_account" : "0x5d2b10dfe505d82b5799a371afa914dc6623c2cc", + "name" : "0x5d2b10dfe505d82b57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2529720907 +}, +{ + "ETH_account" : "0x14dcec9a3049d83c0b23a47161c10f0a3764707e", + "name" : "0x14dcec9a3049d83c0b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1592000 +}, +{ + "ETH_account" : "0x30211266c93b7e20c1141607057f1126b5b5e232", + "name" : "palo", + "publicKey" : "SPH5Y3BdobvMwk3A4hLWgDntCcUCEo4fmUfJHkcrzaEqaPfR3Aqfr", + "balance" : 8238465000 +}, +{ + "ETH_account" : "0x658059415259810adddafa40b6f67678f9bf9a19", + "name" : "0x658059415259810add", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 129417169 +}, +{ + "ETH_account" : "0x02523d88aaf1394c580aaa1f7973177679d91c37", + "name" : "0x02523d88aaf1394c58", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2226312099 +}, +{ + "ETH_account" : "0x77846087496928831813e5a30ad76a21431111ac", + "name" : "0x778460874969288318", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1247000000 +}, +{ + "ETH_account" : "0x8b9bd9d69089bca99bee9fb0974c2a2dd52719fe", + "name" : "0x8b9bd9d69089bca99b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1846200000 +}, +{ + "ETH_account" : "0xdcbb980886fb0ab10bc393f2a4c7d5a6d2d5f657", + "name" : "0xdcbb980886fb0ab10b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 475022000 +}, +{ + "ETH_account" : "0xa5abe4d40e41531c232d53cb490701d2f3fd9f00", + "name" : "nhtp", + "publicKey" : "SPH7FVVxDuNxVyjswLbHe65fHw5y8YuPfvf4P8Rhx2uanVGeN6Gvo", + "balance" : 23188516600 +}, +{ + "ETH_account" : "0xe2954620829f54bbc9875ce03a72474fc7dee19f", + "name" : "0xe2954620829f54bbc9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1586000000 +}, +{ + "ETH_account" : "0x8c68ace2f5267bb733de38b6cd8aaae23985996c", + "name" : "0x8c68ace2f5267bb733", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1724510 +}, +{ + "ETH_account" : "0xc8baffc935bc62b8a79e3482531f775ee26d7a49", + "name" : "0xc8baffc935bc62b8a7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 61930000 +}, +{ + "ETH_account" : "0x4519f0de74d6ef5b53f0b930523cb1bd6a210764", + "name" : "0x4519f0de74d6ef5b53", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 51692300 +}, +{ + "ETH_account" : "0x452b598b735dbfe272c15127434548dd4c5d287d", + "name" : "0x452b598b735dbfe272", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2869989397 +}, +{ + "ETH_account" : "0xb442beb7bb7b570857aa44e36d792b56b675b7ec", + "name" : "ouaouared", + "publicKey" : "SPH67SwczkwHAzVpSKPpDFQFid4xsnJ5u1uBNktBc81eJmovbzdj8", + "balance" : 1624516400 +}, +{ + "ETH_account" : "0x6dcc131c0cbd1602b39a75fb3cdaf86e860be529", + "name" : "0x6dcc131c0cbd1602b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6913 +}, +{ + "ETH_account" : "0x09dcba04c455c679259f1ee841431f7b4c49b25b", + "name" : "scottchesley", + "publicKey" : "SPH6LXmcXHvy1M1U4oUB14VVEQ4wPLEW9PX9FJCZQwqQk28CNCG96", + "balance" : 2992657700 +}, +{ + "ETH_account" : "0xb058d8ad6afceed942987180f7e4feaee6a5128c", + "name" : "0xb058d8ad6afceed942", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15693290000 +}, +{ + "ETH_account" : "0x14e4743eea77ed2e39d7f9db10fda525152eddb9", + "name" : "0x14e4743eea77ed2e39", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65876245 +}, +{ + "ETH_account" : "0x2a2013e3def558bd646175507a88b6cd6cbf20f3", + "name" : "0x2a2013e3def558bd64", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 146763376 +}, +{ + "ETH_account" : "0x0577ef8d70832c7269b9fe711032a939fdb8b5a3", + "name" : "0x0577ef8d70832c7269", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100 +}, +{ + "ETH_account" : "0xf54e92ee8f7f3ff05190c8c4acaf86370c6a6d77", + "name" : "0xf54e92ee8f7f3ff051", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12052072876 +}, +{ + "ETH_account" : "0xa758db3684031136b8874d9216b413e420bbf706", + "name" : "0xa758db3684031136b8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5 +}, +{ + "ETH_account" : "0x30e6b6820310c6640a02a7a1997fb4e19251c398", + "name" : "0x30e6b6820310c6640a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5525397000 +}, +{ + "ETH_account" : "0xb500ec2f3c8f5f556024b13812a2386756ffdbbf", + "name" : "0xb500ec2f3c8f5f5560", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9040200000 +}, +{ + "ETH_account" : "0x1275d1ba3c2a0213f1b90b4f99470f425605a275", + "name" : "0x1275d1ba3c2a0213f1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 329991426 +}, +{ + "ETH_account" : "0xb37d3cbf693e88e31e08f670eff12c978c7bc48d", + "name" : "0xb37d3cbf693e88e31e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 108391000 +}, +{ + "ETH_account" : "0x243baf9a113cd9a274950a50569aef646c96f133", + "name" : "0x243baf9a113cd9a274", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 309969400 +}, +{ + "ETH_account" : "0xaada36cee737f094cb5ba3ceac5c61dc42f16cc7", + "name" : "0xaada36cee737f094cb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 795520000 +}, +{ + "ETH_account" : "0x5d35c7eceaf5d3328a280324f2640f78f260e945", + "name" : "sphtxbyjk", + "publicKey" : "SPH7MFMrUpZNhdVMysqiNqZtQPn17BPWSqDc18YQXbZWuoJW441mZ", + "balance" : 247000000 +}, +{ + "ETH_account" : "0x2b5a7553554ee0c7b9a5a896c3f38cbc5161f486", + "name" : "meberl", + "publicKey" : "SPH4tvSyehGR5me6JK4JWGasnikv61GmfQ3RRMCRGwWdGT1rczGJp", + "balance" : 320000000 +}, +{ + "ETH_account" : "0x099e5f31fc625917544e5e84ff25e0a8d9725380", + "name" : "0x099e5f31fc62591754", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22002000000 +}, +{ + "ETH_account" : "0xd7ff4d11d15befc2cfeaa52a211cd1f04b43cbac", + "name" : "0xd7ff4d11d15befc2cf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 991017300 +}, +{ + "ETH_account" : "0x851cd0f53ab3ebbe9cc83d06bcb52af6e6c7ad24", + "name" : "0x851cd0f53ab3ebbe9c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 387000000 +}, +{ + "ETH_account" : "0x759f1dbb931556bbeaefaeda15904027dbded9a1", + "name" : "0x759f1dbb931556bbea", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0xbcd358e06a4be448b8b25dba6e56cca74df3f759", + "name" : "greenpurple", + "publicKey" : "SPH7KAY9m9iTdamXFRuF4hhgKL3miZewDUj8GL5QahBTVx23QSfpm", + "balance" : 201050750 +}, +{ + "ETH_account" : "0x645f7f5bb5749aa905c2bd2fef3f767b5ba3635c", + "name" : "cryptodavysphtx", + "publicKey" : "SPH6vdtdL2zCNqmbR7mjWZyzXsgy436yBjzQ5r6tEY2ZPZEEbtD3f", + "balance" : 5548507900 +}, +{ + "ETH_account" : "0x6dd0953f34ea4b7bd2900bd88a612515cb03f2d0", + "name" : "0x6dd0953f34ea4b7bd2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1609536503 +}, +{ + "ETH_account" : "0x49cf8d8f25f6217214b34ef4a11c658deb3893c7", + "name" : "0x49cf8d8f25f6217214", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12180349921 +}, +{ + "ETH_account" : "0xa9b91d856e6b7c44a844220c8dacc4fc34740925", + "name" : "0xa9b91d856e6b7c44a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4796000000 +}, +{ + "ETH_account" : "0xa03ee5f003f8ac08bca599e6b8844fba087729cb", + "name" : "0xa03ee5f003f8ac08bc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1346567700 +}, +{ + "ETH_account" : "0xf79afa81c23060161d1062b29955cd1c78cd0ae0", + "name" : "0xf79afa81c23060161d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3124915072 +}, +{ + "ETH_account" : "0xdbb9eb055ddb197ce3f873d5eb1cbed283e6ce7d", + "name" : "0xdbb9eb055ddb197ce3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11336978100 +}, +{ + "ETH_account" : "0x3260eb070b83568993c69ff8b5b3f663b382e8a8", + "name" : "0x3260eb070b83568993", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xa3f4f941ae3c4784e5edecb44f23e2fa1cad7fd3", + "name" : "0xa3f4f941ae3c4784e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1364485500 +}, +{ + "ETH_account" : "0x6fad326f3bcee3781d5652057e0dc2ffbb17d59a", + "name" : "0x6fad326f3bcee3781d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 18905217743 +}, +{ + "ETH_account" : "0x73707827f4d62f5f95690bc915633396274a6e27", + "name" : "0x73707827f4d62f5f95", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 841996200 +}, +{ + "ETH_account" : "0x52872ebe95c8b03e7fe91fcf16db4b1941ce9f8d", + "name" : "0x52872ebe95c8b03e7f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 898756500 +}, +{ + "ETH_account" : "0xde91c562f7dde683a038bd1754c9515b9c429686", + "name" : "0xde91c562f7dde683a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 28938000 +}, +{ + "ETH_account" : "0xa6732db064ebaa9665b0f67e972f945292741ea3", + "name" : "0xa6732db064ebaa9665", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 788127 +}, +{ + "ETH_account" : "0xd1eb505c693748bbe9134d9f7a4ada22f725739f", + "name" : "0xd1eb505c693748bbe9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 291320000 +}, +{ + "ETH_account" : "0x5ce95f80507c99cd0a120be56d67a66fa9676cb3", + "name" : "0x5ce95f80507c99cd0a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11926419000 +}, +{ + "ETH_account" : "0xbbaface58a00d7f1033b3aa579eca801cd7a824b", + "name" : "0xbbaface58a00d7f103", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3797000000 +}, +{ + "ETH_account" : "0x5361f8b3a8b56c84eeb1173024eb041673f22466", + "name" : "0x5361f8b3a8b56c84ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1240750000 +}, +{ + "ETH_account" : "0x16d3a734679d36e42cdceb70f43d91865a5a63c2", + "name" : "0x16d3a734679d36e42c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 794447661 +}, +{ + "ETH_account" : "0xd0eb41d951cc02a1fbc2544ba2764a46990e3779", + "name" : "0xd0eb41d951cc02a1fb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 184580000 +}, +{ + "ETH_account" : "0x5c773521260ac94e99805ee6857624485ef46e61", + "name" : "0x5c773521260ac94e99", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 125052000 +}, +{ + "ETH_account" : "0x33e10eeb388038ac60d477486e1185f686802083", + "name" : "0x33e10eeb388038ac60", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1446553800 +}, +{ + "ETH_account" : "0xadf3953f5942fd0da9f58f84e118fd97c1746992", + "name" : "0xadf3953f5942fd0da9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2141074600 +}, +{ + "ETH_account" : "0xe515ccdd9c37a3069b3bbed456c7be999ccb047b", + "name" : "0xe515ccdd9c37a3069b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2574500000 +}, +{ + "ETH_account" : "0x97b1284fde7d81243c757653d564a1d38634438a", + "name" : "0x97b1284fde7d81243c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 320000000 +}, +{ + "ETH_account" : "0xc85b38bcaded09598c6ab3f31710bc6153fb28a8", + "name" : "0xc85b38bcaded09598c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1651480000 +}, +{ + "ETH_account" : "0x950a41bbe11d69164086ac206c79dafa68057ecf", + "name" : "0x950a41bbe11d691640", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 58565610 +}, +{ + "ETH_account" : "0x920abebeebcbd05129840c6689b29475fae34992", + "name" : "0x920abebeebcbd05129", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 287356800 +}, +{ + "ETH_account" : "0x84f54d45c5618ce60e40f94bf178dfcd1f6d1049", + "name" : "0x84f54d45c5618ce60e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1097911300 +}, +{ + "ETH_account" : "0x3bc86d2a872080bc4e9bf608fd70b9258d9ffc16", + "name" : "0x3bc86d2a872080bc4e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 176000000 +}, +{ + "ETH_account" : "0x4a56646065eac74a2d21ea402e7913aa20075585", + "name" : "0x4a56646065eac74a2d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 778500 +}, +{ + "ETH_account" : "0xd9e3003f100aec57db2a738660c8fcf8a08a83d0", + "name" : "0xd9e3003f100aec57db", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 101609700 +}, +{ + "ETH_account" : "0xe163dbf2a1e938a0541c03a352f29ef297b5514e", + "name" : "0xe163dbf2a1e938a054", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0xef7813db77d9f297b00cc77b5c255a72fa9c679d", + "name" : "dimitri", + "publicKey" : "SPH81WwBhF9gpU1SEJCnmbCjvHqqNKwjb9Gq4UTq9gD54Vd32t8A9", + "balance" : 12765187900 +}, +{ + "ETH_account" : "0x8cdb9c9cb31de778a580c9a4e005cc835f21adaf", + "name" : "0x8cdb9c9cb31de778a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2680736300 +}, +{ + "ETH_account" : "0x32833bb6d0903a6818c92ce859a3e0737b0a1750", + "name" : "0x32833bb6d0903a6818", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000740000 +}, +{ + "ETH_account" : "0xa1b65f511bc2cd9181fa42e452c74b3c7e7e64db", + "name" : "0xa1b65f511bc2cd9181", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65831961600 +}, +{ + "ETH_account" : "0x3e7eb3ae912aaf22be45087d61a4c3c443361fba", + "name" : "0x3e7eb3ae912aaf22be", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 254319978 +}, +{ + "ETH_account" : "0x7446ca122dfae6012d5ce13d9938a5afdbef6828", + "name" : "0x7446ca122dfae6012d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1993112832 +}, +{ + "ETH_account" : "0x76bb8cbbcd1f49d086ca401df8e47a5d84c6c1d4", + "name" : "0x76bb8cbbcd1f49d086", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1266990000 +}, +{ + "ETH_account" : "0xd5b054c054eed091d2a68d3af84b9df115f23d07", + "name" : "0xd5b054c054eed091d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 448631100 +}, +{ + "ETH_account" : "0x5d81f0835a3ee862476ec97460718d5d0661308a", + "name" : "0x5d81f0835a3ee86247", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10167773535 +}, +{ + "ETH_account" : "0x946f0711dfea25dc2ab60e6ff0df6dbda32ee6c6", + "name" : "0x946f0711dfea25dc2a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 693130535 +}, +{ + "ETH_account" : "0x66d670d6793c5b31595c657bd2ede9863d999907", + "name" : "0x66d670d6793c5b3159", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 352260240 +}, +{ + "ETH_account" : "0x8f1276af643c193f005aef29f635a3e599946dd1", + "name" : "0x8f1276af643c193f00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6403800000 +}, +{ + "ETH_account" : "0x6577ad24fd8c088e29d3fc9db2b6ab864ac857cd", + "name" : "0x6577ad24fd8c088e29", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 251956582 +}, +{ + "ETH_account" : "0x1ccada8ab930e337ed95a8949174982e837267d6", + "name" : "0x1ccada8ab930e337ed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8957017770 +}, +{ + "ETH_account" : "0x798616f39ae48c306796cb9b74732e973822b1f8", + "name" : "0x798616f39ae48c3067", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1180566800 +}, +{ + "ETH_account" : "0xc62124bb4c01d87338c83470b4eb2927ec6ba13a", + "name" : "0xc62124bb4c01d87338", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 512063000 +}, +{ + "ETH_account" : "0x33987c2f2e07664c3a476fa0c67bb83e5de117d8", + "name" : "0x33987c2f2e07664c3a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 66002 +}, +{ + "ETH_account" : "0x800683b81e94eef9fe0a2c32f80d37e18b41fb95", + "name" : "0x800683b81e94eef9fe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6237000000 +}, +{ + "ETH_account" : "0x60bca81a28a18048523ad3a6577dfc190892d9ac", + "name" : "0x60bca81a28a1804852", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1090030000 +}, +{ + "ETH_account" : "0xfa8221505bb1554a1a05e2adfa78dad6e339974c", + "name" : "0xfa8221505bb1554a1a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2133653000 +}, +{ + "ETH_account" : "0xaf55460dd285c97450348afa30e7f1ca954bd25e", + "name" : "0xaf55460dd285c97450", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11200648997 +}, +{ + "ETH_account" : "0x4f5deb813b7af29ff5a388bf074cd8a4c32c2866", + "name" : "0x4f5deb813b7af29ff5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 332012979 +}, +{ + "ETH_account" : "0x7b6c82032e2a23fea2c95a995b83837093c25787", + "name" : "smsophiacoins", + "publicKey" : "SPH5ijpywq6cTGGr6tQyTzA8j82BEUMyQgLxSJoUrBY2tF3ew4HQ8", + "balance" : 621497400 +}, +{ + "ETH_account" : "0x84ce370e416330d496119ecf493253ed336db2c2", + "name" : "0x84ce370e416330d496", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 785044452 +}, +{ + "ETH_account" : "0xda50f95ec0a99ed5529d66473ad11b007e4233dc", + "name" : "0xda50f95ec0a99ed552", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 950000000 +}, +{ + "ETH_account" : "0x00e3ce15d86422d84a0a8ac487a9357fea89a518", + "name" : "0x00e3ce15d86422d84a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 458805000 +}, +{ + "ETH_account" : "0x57142d13bb63be7137f83876e3477d4a1634a025", + "name" : "0x57142d13bb63be7137", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6115000000 +}, +{ + "ETH_account" : "0x07905af7a5cb5080a48f3375d2fcf68ea521c327", + "name" : "andrewaralacyjoy", + "publicKey" : "SPH5VgMMn2EHmTsnghcpewbKxzAjs6XhvmfBLnA7mCjqsPAVACTsb", + "balance" : 30654880000 +}, +{ + "ETH_account" : "0x33cf5b775968bf599968091b08114507ea6c2d0e", + "name" : "0x33cf5b775968bf5999", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8035000000 +}, +{ + "ETH_account" : "0xb44a8d9d9b9ae9d87e5c5a707bb854350925291e", + "name" : "0xb44a8d9d9b9ae9d87e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6832396800 +}, +{ + "ETH_account" : "0x14724f0d7fb6080bc0c118471d01e458b53a464e", + "name" : "0x14724f0d7fb6080bc0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1173867993 +}, +{ + "ETH_account" : "0x6f1a96f4f88db028db43206ea9c6cae05a23da97", + "name" : "0x6f1a96f4f88db028db", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1537985600 +}, +{ + "ETH_account" : "0x9f029c322d91d9b0a9766648707531e6a8f4fb56", + "name" : "0x9f029c322d91d9b0a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1137228000 +}, +{ + "ETH_account" : "0x1b44013e3ff31a957bbdf0ee32b92e6749ad77a2", + "name" : "tonypeee", + "publicKey" : "SPH87WajhDtz6rNJjXiGX9Qi9uN2eEqeHxhXiPHXptvnHnUZNK9Gy", + "balance" : 1109889700 +}, +{ + "ETH_account" : "0xf3559c4b2d58a422e54723aef7a3953dce1dc773", + "name" : "0xf3559c4b2d58a422e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 43994671 +}, +{ + "ETH_account" : "0x50aff952f58b7fce115c367423ef3a07de2de364", + "name" : "0x50aff952f58b7fce11", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1845100000 +}, +{ + "ETH_account" : "0x0ee7ba6fca9ebafc40651849a6e999b9b90fab2f", + "name" : "0x0ee7ba6fca9ebafc40", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 432279300 +}, +{ + "ETH_account" : "0xef5175bf2513576bd529a2fa3885b744945e473b", + "name" : "0xef5175bf2513576bd5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 48140578600 +}, +{ + "ETH_account" : "0x3b9b57ff78bc40bf010981e7063eb4af6f89b791", + "name" : "spaceamoeba", + "publicKey" : "SPH6DPjUfDor6nFxwLY4fcNVb4p9DyxfuBKmPHV6ezMJ9hNA6895a", + "balance" : 11000222000 +}, +{ + "ETH_account" : "0x6950da3f9e7efe455c29270d4f98f232070a4b08", + "name" : "0x6950da3f9e7efe455c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 315251000000 +}, +{ + "ETH_account" : "0xaba9478ef4c22da8a5fd9f76e6e5ddff99c9a891", + "name" : "0xaba9478ef4c22da8a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 943000000 +}, +{ + "ETH_account" : "0x163bf0dfff3d4830c71f6585ccc2e37784ab263f", + "name" : "0x163bf0dfff3d4830c7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 117735045900 +}, +{ + "ETH_account" : "0x5101d7fd86d8a98f1a4ab21428db2521e1aad790", + "name" : "0x5101d7fd86d8a98f1a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2500000000 +}, +{ + "ETH_account" : "0xc01db3c85f356da35149e61aeb513afe3d8c9e9c", + "name" : "0xc01db3c85f356da351", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2767755000 +}, +{ + "ETH_account" : "0x8f91127a89a199d9f210f9b9442fd1bc18c2bde8", + "name" : "0x8f91127a89a199d9f2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 440000000 +}, +{ + "ETH_account" : "0xd3e85af02a637cdf3514c8ff08ede2ca1087e8d5", + "name" : "0xd3e85af02a637cdf35", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 441550000 +}, +{ + "ETH_account" : "0x3cb42a780e14ac1c4cfc1f19e82ce99d7b711052", + "name" : "0x3cb42a780e14ac1c4c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2200000000 +}, +{ + "ETH_account" : "0xfd0e9ea5dddb948ea2948894e59d0bff168d8547", + "name" : "dposking", + "publicKey" : "SPH8gWaPKajNG5LsEoaxnkHG8Qxx5BTPqXebezdBxy1pPGkD8C8mr", + "balance" : 3547365200 +}, +{ + "ETH_account" : "0x777487cff709f3ff3b1a2c52675b0ccd5b40721c", + "name" : "0x777487cff709f3ff3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2176135566 +}, +{ + "ETH_account" : "0x4ebb857b91ed78d970101acd8cb7905aeab9d1b2", + "name" : "0x4ebb857b91ed78d970", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24996752753 +}, +{ + "ETH_account" : "0x52615badf867600a8ebefb305890766bd4828b08", + "name" : "0x52615badf867600a8e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4941370000 +}, +{ + "ETH_account" : "0x4a34a4714a62a90012c2b24d7ae36bb7e77047f4", + "name" : "0x4a34a4714a62a90012", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1409263528 +}, +{ + "ETH_account" : "0xf1a1580b806bc1978ac139474d1bb1236848874e", + "name" : "andywolf", + "publicKey" : "SPH71N2WNegTXAEjAYemti5poqmDL8HEGLtrq2SkERFRn2qyBB9zq", + "balance" : 757396900 +}, +{ + "ETH_account" : "0x5424018354ef56c5805a57f6fef41e92f5b2d302", + "name" : "0x5424018354ef56c580", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 31254528100 +}, +{ + "ETH_account" : "0x77fcd5e909cf055335b38c755edac2d2d3d2659d", + "name" : "0x77fcd5e909cf055335", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6450136350 +}, +{ + "ETH_account" : "0xdf1cfe9b5b4e0da3ff24c080479c5628160dbde7", + "name" : "0xdf1cfe9b5b4e0da3ff", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x8ac8ad942a5f78f5e41b49034bc3a84403170559", + "name" : "0x8ac8ad942a5f78f5e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2521212314 +}, +{ + "ETH_account" : "0xecf6e22e8abcfe913f35c95dd578e3fdab5cf23f", + "name" : "0xecf6e22e8abcfe913f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4822800000 +}, +{ + "ETH_account" : "0xfebecf3344e38b4e82ba82ece696eb479680e606", + "name" : "0xfebecf3344e38b4e82", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1888000000 +}, +{ + "ETH_account" : "0x37fc94acf85ac0aec847619a5ecd20fc7a3f4471", + "name" : "0x37fc94acf85ac0aec8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 361720000 +}, +{ + "ETH_account" : "0xcc30791c2a0f24093995335e4a1002da073b830b", + "name" : "0xcc30791c2a0f240939", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 539750000 +}, +{ + "ETH_account" : "0x30432ff2077d9332099367452f3ebca8a585cdbe", + "name" : "0x30432ff2077d933209", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8315240000 +}, +{ + "ETH_account" : "0x5d02df9533ed9f0f6fa9e7ae21f2c44adcfa71fb", + "name" : "0x5d02df9533ed9f0f6f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50203238823 +}, +{ + "ETH_account" : "0x20942a4824fbdbe8fa79776d924bc963317d1b7f", + "name" : "0x20942a4824fbdbe8fa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 332029026 +}, +{ + "ETH_account" : "0x7c4cf8713f74cfaf603a596ad1ec6e0a0c89bf03", + "name" : "0x7c4cf8713f74cfaf60", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 97482152 +}, +{ + "ETH_account" : "0xd196a16fdb0d3a79064aa59e6e1a64c57855e020", + "name" : "0xd196a16fdb0d3a7906", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1599550000 +}, +{ + "ETH_account" : "0xf36a5f1e4c6e8e0c8025b173cedab61597d04b17", + "name" : "0xf36a5f1e4c6e8e0c80", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 94703150 +}, +{ + "ETH_account" : "0xaccb07f1d1e7e0a50fd6cd9d1f210de2f3214774", + "name" : "0xaccb07f1d1e7e0a50f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 522976000 +}, +{ + "ETH_account" : "0x5fa092aee8c41831a03fb87826ec74d01af65f88", + "name" : "0x5fa092aee8c41831a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25094598510 +}, +{ + "ETH_account" : "0x2fc65ffedb3381231a45bb38949b75a59b840fa1", + "name" : "kouwenhoven", + "publicKey" : "SPH6jDYuYAV6BCEHo5s7g4zTyCtHz6Ak1rccHzM1uDhW1qvxvp1K2", + "balance" : 2237569792 +}, +{ + "ETH_account" : "0x680dd4fc6f18d0892e2302e7041877ecce843b7a", + "name" : "0x680dd4fc6f18d0892e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4389674000 +}, +{ + "ETH_account" : "0x20a97b2ff36b6e020edcda68330df611767b7d8d", + "name" : "0x20a97b2ff36b6e020e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 327882135 +}, +{ + "ETH_account" : "0x814f66f9b94acfc0f50c0a90f18cc045ba7f2ebc", + "name" : "bluepit1", + "publicKey" : "SPH6WFjRx7eD6D4peYrpnQTiFJW6yzZ7rQ1zSR7eRNwooxbjGbsUz", + "balance" : 4932000000 +}, +{ + "ETH_account" : "0xb9a2148f41d9345a67dcf1a23d1c78b3155a8b9c", + "name" : "0xb9a2148f41d9345a67", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3350056247 +}, +{ + "ETH_account" : "0xe354781e0109f9680483919461bf66cfd46a93a9", + "name" : "wouter", + "publicKey" : "SPH8Zx3R7NdzKd383NcqARgSYXj9SSAUY7KGbzqgb6B1jbmEhQUYd", + "balance" : 4216993778 +}, +{ + "ETH_account" : "0x045a44878093da66c2bf673e161a2f970eafd560", + "name" : "0x045a44878093da66c2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 604711300 +}, +{ + "ETH_account" : "0x5d225a0b8734754c1048c1adefa8075d9f0aeb29", + "name" : "jojochinto", + "publicKey" : "SPH7xfhBAntjFWJXEqXKCrB8wdSJUFBG3dqMAghMbeYSxt2bVWsGw", + "balance" : 463083900 +}, +{ + "ETH_account" : "0x0b7105a1070feb7b78de6915ee7cd78e87938732", + "name" : "jadeharper", + "publicKey" : "SPH7yT16iS3YRgw6dyuWEXksLU3Ag5rqFcDyAJ2a87azSziaQZ4uK", + "balance" : 1077512000 +}, +{ + "ETH_account" : "0xa5a9f51f3cbf3e61d518b478469dd22640cff12a", + "name" : "0xa5a9f51f3cbf3e61d5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1260000000 +}, +{ + "ETH_account" : "0x82c4e1c7fa07bdde81e35dd378e18ec2b42e99b6", + "name" : "0x82c4e1c7fa07bdde81", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9971 +}, +{ + "ETH_account" : "0x1ecee058ebcecb0f17c3cf124acd139cf0d38710", + "name" : "0x1ecee058ebcecb0f17", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 264000000 +}, +{ + "ETH_account" : "0x8900ef12b8850f01d70e7191e952f072186c74dd", + "name" : "0x8900ef12b8850f01d7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 436312871 +}, +{ + "ETH_account" : "0x61beed14bff6f4ee3bd53294ca9bb3b3937d1dd0", + "name" : "0x61beed14bff6f4ee3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x0a09d4b4c4eace3e8cffe17d0b56d8cb2fecd36f", + "name" : "0x0a09d4b4c4eace3e8c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 683282300 +}, +{ + "ETH_account" : "0xfe884808c393ac6da06e0ce12f2eed438615b4ad", + "name" : "0xfe884808c393ac6da0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4432779393 +}, +{ + "ETH_account" : "0x1795125f9061f75c1f857a1ac0e8dff9afebb754", + "name" : "0x1795125f9061f75c1f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3879266385 +}, +{ + "ETH_account" : "0xce4bd2e8dd19eea450a27a1b2b375ea165f178dd", + "name" : "0xce4bd2e8dd19eea450", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1621000 +}, +{ + "ETH_account" : "0x5806f369363abd07ecfc2406cc918f08538bd784", + "name" : "0x5806f369363abd07ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1612613070 +}, +{ + "ETH_account" : "0xa13315193b2f23638a716859b25f1718cdc3008a", + "name" : "0xa13315193b2f23638a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 508000000 +}, +{ + "ETH_account" : "0xb4afeffba2e487c38ac96319299e3949134d3e41", + "name" : "0xb4afeffba2e487c38a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0xb935bd4afa018a6c434c4f50c78e54e2d39d7c84", + "name" : "0xb935bd4afa018a6c43", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1262715366 +}, +{ + "ETH_account" : "0xe5072a1f8f859117edda69e56905e78a7c030375", + "name" : "0xe5072a1f8f859117ed", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 374969839 +}, +{ + "ETH_account" : "0xd62d5deab2dec45574d20b0e7cc79cd4cceab3ba", + "name" : "0xd62d5deab2dec45574", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12497305800 +}, +{ + "ETH_account" : "0x0f80433d19fd16714b9909b8af6b88da30db10ea", + "name" : "0x0f80433d19fd16714b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7528465100 +}, +{ + "ETH_account" : "0x2c88cf08121512cc1b610bd2c06d56b7c646b80c", + "name" : "0x2c88cf08121512cc1b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 142000000 +}, +{ + "ETH_account" : "0xbb8d1db1f83f12afbe8aac77dfdc57624fcc98fa", + "name" : "0xbb8d1db1f83f12afbe", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2595000000 +}, +{ + "ETH_account" : "0x235d501c7e0eb71bf602c8c8fc9269ed09e306d2", + "name" : "0x235d501c7e0eb71bf6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x7ed1e469fcb3ee19c0366d829e291451be638e59", + "name" : "0x7ed1e469fcb3ee19c0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 29610214843 +}, +{ + "ETH_account" : "0x5a3d6f3564b871dc7f616a01fc2bcd9ce000b8b3", + "name" : "0x5a3d6f3564b871dc7f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xaf014e631ad5a2c6e9af9afbb16323d6171a9cdf", + "name" : "0xaf014e631ad5a2c6e9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 137568100 +}, +{ + "ETH_account" : "0x94698f7cf2b3890f4654a53d46ab5de2cd3c361f", + "name" : "0x94698f7cf2b3890f46", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1498737000 +}, +{ + "ETH_account" : "0xb2e0a0a3186f33e88c3ebc98112efd7a406d17bb", + "name" : "pradeepsophia", + "publicKey" : "SPH61g5LnpU5zLunaQ63qfbTiTGxmQkmAYnUK7pUmnie5Xg8DSzDL", + "balance" : 491246500 +}, +{ + "ETH_account" : "0xa4ed73d5b1e93594c94e3504b6d080853495c9ce", + "name" : "sophiatxftw", + "publicKey" : "SPH7kBrEhNxdvjZ55uVBbV3esqEYY3vKHwYv3bVaMkGKfy4EPY67z", + "balance" : 29646441691 +}, +{ + "ETH_account" : "0x2b765dc7aacda21d31fb68e1370cc3a46f120772", + "name" : "0x2b765dc7aacda21d31", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x9d0ceeb3781df72aaa4989aed813745af806fc17", + "name" : "0x9d0ceeb3781df72aaa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3999200000 +}, +{ + "ETH_account" : "0x4b2ed0a0b04abf14bd073ad4ebe26c5e2885f447", + "name" : "0x4b2ed0a0b04abf14bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4722000000 +}, +{ + "ETH_account" : "0x1fa8478a796f31af17a3e5b1b3c9cd57ec6559c6", + "name" : "0x1fa8478a796f31af17", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1137096000 +}, +{ + "ETH_account" : "0x6d04561b3cf56d7e6dad0f004dcab1428ca74da8", + "name" : "0x6d04561b3cf56d7e6d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x0a9072131ed84a91cd4f7ea542ce348334ee672a", + "name" : "0x0a9072131ed84a91cd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x1640f2b1c0f23a906eb6a062307db772a5907bb0", + "name" : "0x1640f2b1c0f23a906e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 110503964 +}, +{ + "ETH_account" : "0x3c6d5a09836757e6933704f3506ca0ee6683fa73", + "name" : "temp2", + "publicKey" : "SPH6dZHCBtcYbsSm7skJWGaY12m8o7T3nb8aFDDw6L1ZyuEzp7znK", + "balance" : 15256237200 +}, +{ + "ETH_account" : "0x555afb0650362fd16f16570e2255bcb533e4c00c", + "name" : "0x555afb0650362fd16f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 518389734 +}, +{ + "ETH_account" : "0x695ec6a91747678af5c380a69334e9f1ce72e62f", + "name" : "0x695ec6a91747678af5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 696111400 +}, +{ + "ETH_account" : "0xceb8fc1935f75eedc40344fbb0bb1aa2b96720a6", + "name" : "0xceb8fc1935f75eedc4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 170105481 +}, +{ + "ETH_account" : "0x50f5dbbb5136504e1468cefc30e4dd48cc921f62", + "name" : "0x50f5dbbb5136504e14", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 391774600 +}, +{ + "ETH_account" : "0x3327a0ecd76f46574ea695fd0d6c2c0546d33074", + "name" : "0x3327a0ecd76f46574e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 38641000000 +}, +{ + "ETH_account" : "0x21878f4b5efae68196641c012505cffa60e42a21", + "name" : "0x21878f4b5efae68196", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 51408110100 +}, +{ + "ETH_account" : "0x6154d6bbfdc497e2caadd3c58113b04eadd1334b", + "name" : "0x6154d6bbfdc497e2ca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3290000000 +}, +{ + "ETH_account" : "0x9c235db270c1ce199b8121cf8e99e549900b1645", + "name" : "0x9c235db270c1ce199b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x626b1c4bfa7e2b196e92b7bff2f51a25142ddfe4", + "name" : "0x626b1c4bfa7e2b196e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1142536000 +}, +{ + "ETH_account" : "0xbfe71145104e13e2a0fea6c56448fe4993b16a66", + "name" : "0xbfe71145104e13e2a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 171249443 +}, +{ + "ETH_account" : "0x7e32480cc12a3d0083a8dbdaa5b1865d43d68e6d", + "name" : "0x7e32480cc12a3d0083", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4389211800 +}, +{ + "ETH_account" : "0xfa4939a544c9df6da02e773c3e65d9f8ad914a02", + "name" : "0xfa4939a544c9df6da0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 670504224 +}, +{ + "ETH_account" : "0x96e12823ac0ce53da8785d16e678abfd7092c967", + "name" : "0x96e12823ac0ce53da8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2500000000 +}, +{ + "ETH_account" : "0xb7074f9bb6366ad27491ca874c86fcd9aad5a986", + "name" : "0xb7074f9bb6366ad274", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65783200 +}, +{ + "ETH_account" : "0x7ebf6714efe9cf92767b30179c214586814ab754", + "name" : "0x7ebf6714efe9cf9276", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6955000000 +}, +{ + "ETH_account" : "0x964a76ec6ac221108186db490e549ec20ec7855f", + "name" : "0x964a76ec6ac2211081", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 511630000 +}, +{ + "ETH_account" : "0x96487757fec06f3c6fed1fcd9805d16bb95a5625", + "name" : "0x96487757fec06f3c6f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15919743200 +}, +{ + "ETH_account" : "0x513965fd3cdeba63eef4ba0c9b0ffd82cfd45744", + "name" : "0x513965fd3cdeba63ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24807502800 +}, +{ + "ETH_account" : "0xa112bade181dcb71b1091d5e2ede651e362d2061", + "name" : "0xa112bade181dcb71b1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 135000000 +}, +{ + "ETH_account" : "0xb181b888eca8fa7919bc6e6e5dc56e979bd62427", + "name" : "robertkmueller", + "publicKey" : "SPH6fMvMJc2f3LoSCzjuboPndTi9GCcLDgfb5g5DVoPc9hUCHPkKg", + "balance" : 59783666425 +}, +{ + "ETH_account" : "0x0a796062214cf4fc232dd8538a19035ac79a595c", + "name" : "0x0a796062214cf4fc23", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 76520893 +}, +{ + "ETH_account" : "0x47d7c7ca8eaf20b6ebc805bee039315d13e95dcb", + "name" : "0x47d7c7ca8eaf20b6eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000000 +}, +{ + "ETH_account" : "0xe2d3ebaa3a07fb4e46409f4e28bba0b5226463e2", + "name" : "0xe2d3ebaa3a07fb4e46", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1733600000 +}, +{ + "ETH_account" : "0xe170549b3ae759f638b84f56574b322140f6d43e", + "name" : "0xe170549b3ae759f638", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 19536257400 +}, +{ + "ETH_account" : "0x14ee58d9cf39f879455941174f5715969288c63f", + "name" : "0x14ee58d9cf39f87945", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6178351806 +}, +{ + "ETH_account" : "0x94f3aae56d514a944121301393cb1394f6599a93", + "name" : "0x94f3aae56d514a9441", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1106585300 +}, +{ + "ETH_account" : "0x8337ddb93e3c767b07477837a08557ddb51215f2", + "name" : "0x8337ddb93e3c767b07", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1060153818 +}, +{ + "ETH_account" : "0xcbc0d913a1edc6e70c4fa4d199ad06b76c941fee", + "name" : "0xcbc0d913a1edc6e70c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 351106700 +}, +{ + "ETH_account" : "0x8b6e7a57f504d70d3b07613107144e4fec1b6a73", + "name" : "0x8b6e7a57f504d70d3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3814331144 +}, +{ + "ETH_account" : "0xa25d86a28c38a99d354fe446d0ae5f44b46705de", + "name" : "0xa25d86a28c38a99d35", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5926100000 +}, +{ + "ETH_account" : "0xf8a1d9f5a25638ec0646cbb52baa325c8d3763cb", + "name" : "0xf8a1d9f5a25638ec06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 964000000 +}, +{ + "ETH_account" : "0x32e1854edb582b4b206bfb6c14a238996a2179fe", + "name" : "0x32e1854edb582b4b20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 723578400 +}, +{ + "ETH_account" : "0x10f75edff56de3cba305427abce70fc60a4d8613", + "name" : "sphtxtaekim", + "publicKey" : "SPH8dWrXFQyaWCZmMrRHJxURxXGLTy9smPr9AAJtAu3S716c6HTpG", + "balance" : 10592780100 +}, +{ + "ETH_account" : "0x927e4a022871524b016bfb82a9a7c6cbb7cc5edb", + "name" : "0x927e4a022871524b01", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 834669283 +}, +{ + "ETH_account" : "0xa3f390052bfc39f8a688a839b014a9552052fb7b", + "name" : "0xa3f390052bfc39f8a6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 883818793 +}, +{ + "ETH_account" : "0xc94f2b5857df7903dcfb0341f68225cb28e58925", + "name" : "0xc94f2b5857df7903dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x9e650ef13d0893a8729b3685285fbc918b4850c6", + "name" : "0x9e650ef13d0893a872", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2053009043 +}, +{ + "ETH_account" : "0xc558ad3d61fe7006dd7014f785764dcaf8fd672a", + "name" : "0xc558ad3d61fe7006dd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 493307 +}, +{ + "ETH_account" : "0x14555deb6e7e7a382e84da207b22ad81614e0cab", + "name" : "0x14555deb6e7e7a382e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2651000000 +}, +{ + "ETH_account" : "0x9587469dba58db3e36cfead339daf7dbe7e4dc1d", + "name" : "ppc1300", + "publicKey" : "SPH4yMqcAjViux4jxfSYc3tokY2LYCxNcSAVj8gwsTPnnJRuS4x5C", + "balance" : 1982000000 +}, +{ + "ETH_account" : "0xdaf61606dd421081b44b19edd9baadc1eb418c2b", + "name" : "0xdaf61606dd421081b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 180349218 +}, +{ + "ETH_account" : "0x434e116b76824695aa08cfa8009d4cb441112e34", + "name" : "0x434e116b76824695aa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1910867590 +}, +{ + "ETH_account" : "0x6f7511c34ba574dc7d3107e7e03dfe32eb6d375f", + "name" : "0x6f7511c34ba574dc7d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 304300 +}, +{ + "ETH_account" : "0x1e1a108b9108e5ff6692053b175095c726682892", + "name" : "0x1e1a108b9108e5ff66", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 660074441 +}, +{ + "ETH_account" : "0x40c43f3f758bbbdecee657c7cbfb8b575d113f64", + "name" : "0x40c43f3f758bbbdece", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x8d84790fd8aafd5c7fc5c296283dc1de7b59db3b", + "name" : "0x8d84790fd8aafd5c7f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000925618 +}, +{ + "ETH_account" : "0x2859b2ad5cb65636976e9a3b3a4f2906372f00f2", + "name" : "frenchmedium", + "publicKey" : "SPH8iF1wco2AH8MBJtsD15pDJTvDWCi2CAZPyaVHMZpqAnSeZ6vEo", + "balance" : 4991996700 +}, +{ + "ETH_account" : "0x1da1c7f10f2baffdbc237c63fc9bad9690ceb818", + "name" : "floridagator", + "publicKey" : "SPH8gBZ8QBp2N25hNdjjg1PeQae9TNePDBPUVABzYc32pxkC2zAoW", + "balance" : 12910794300 +}, +{ + "ETH_account" : "0x4336c450ab5e50a95d6b896ec56372afef8444cf", + "name" : "coupersphtx", + "publicKey" : "SPH6BL5Wu8FVnJ8ioS8VC9DsFLQzcQBpKWdwfWZbWZGgUFk2SR15x", + "balance" : 2095128100 +}, +{ + "ETH_account" : "0xc5a8603726eeda2ab55987bf6ca6aff4c9a2eac6", + "name" : "lucsreis", + "publicKey" : "SPH7enfvxYeuPzeyhsRFrHpU8nE22y5YqhapNLLwzR43Zq7u8Fv3p", + "balance" : 63000000000 +}, +{ + "ETH_account" : "0x9dfe28104510d76340c964cdd3465b2ca08d8acc", + "name" : "0x9dfe28104510d76340", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9000000000 +}, +{ + "ETH_account" : "0xcc6a8b56fc6b372fe2d9c1901d0c216ff0add97b", + "name" : "0xcc6a8b56fc6b372fe2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 274000000 +}, +{ + "ETH_account" : "0x79d16bde907fa4b434f842ec57dd8756ab8fb0f7", + "name" : "0x79d16bde907fa4b434", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1087336100 +}, +{ + "ETH_account" : "0x923f118215aea98a510caffc53c5a197de5f4b93", + "name" : "0x923f118215aea98a51", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 41008028616 +}, +{ + "ETH_account" : "0x0f8b8801a738ba366b1703c35057c0fa6bcef5dd", + "name" : "0x0f8b8801a738ba366b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2515143100 +}, +{ + "ETH_account" : "0x657c9cb3f7395ef1a9790b82fa56041f49c38c34", + "name" : "0x657c9cb3f7395ef1a9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 507243483 +}, +{ + "ETH_account" : "0x2d24ce19d20071f61346ebd06f8ad56698195100", + "name" : "0x2d24ce19d20071f613", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 312234533 +}, +{ + "ETH_account" : "0xf7c8850c080d7d86e12207128f54f48d6b4c26f0", + "name" : "0xf7c8850c080d7d86e1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x1b74fac4e0a0858c207160c18b72947735ef5a01", + "name" : "0x1b74fac4e0a0858c20", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 995548200 +}, +{ + "ETH_account" : "0x2cc60c798b62e6e6a886fdae0ae4da8d0dc0b211", + "name" : "0x2cc60c798b62e6e6a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2800000000000 +}, +{ + "ETH_account" : "0x502a9d4ed201d31c5fc153e72b58b8ab129fdde0", + "name" : "0x502a9d4ed201d31c5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1502970900 +}, +{ + "ETH_account" : "0x2af43cc99701b401a5bf64e1544627e59d13507a", + "name" : "0x2af43cc99701b401a5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1611568720 +}, +{ + "ETH_account" : "0xcd0ca4b9bd3ca8001341fa06489a994e9c0a7a9b", + "name" : "0xcd0ca4b9bd3ca80013", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4690000 +}, +{ + "ETH_account" : "0x053a442cdcdfed6913f46f7338232ea0ee9c1f0f", + "name" : "mahdi", + "publicKey" : "SPH8LhWrLySAKes2xK756K5p59cZNnfGkbhAxe9HwAZmY7hCUZ9kY", + "balance" : 5696290000 +}, +{ + "ETH_account" : "0x8904899285aa3ddbbce52f28e7bd26cc706acb0d", + "name" : "0x8904899285aa3ddbbc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 125092813700 +}, +{ + "ETH_account" : "0x8b9310e47cd2d4aad77735a3218d9420cb152709", + "name" : "0x8b9310e47cd2d4aad7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90000000 +}, +{ + "ETH_account" : "0x88b5599d5fc1bb248b9008740a97e2e4d673edb6", + "name" : "0x88b5599d5fc1bb248b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3337034400 +}, +{ + "ETH_account" : "0x1fcd434c75e755820f8c22db8d672ded9393edb9", + "name" : "0x1fcd434c75e755820f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6853044400 +}, +{ + "ETH_account" : "0x6d26d2b84cb2c7d8866ff694efc41ef1ed4c242a", + "name" : "0x6d26d2b84cb2c7d886", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100432100 +}, +{ + "ETH_account" : "0xe73d3822c3bfbab845df0b0c465db7a879255397", + "name" : "0xe73d3822c3bfbab845", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 515288000 +}, +{ + "ETH_account" : "0x1a8d2c7468a92cdb0fbab3d04e8f628cc4743c45", + "name" : "0x1a8d2c7468a92cdb0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13609900000 +}, +{ + "ETH_account" : "0x26f9fecdb8cd8bd7d759f3770361dcaf44012c2e", + "name" : "0x26f9fecdb8cd8bd7d7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 51739000000 +}, +{ + "ETH_account" : "0x7210954c9561cf4b47c869dc4cd242021d103c60", + "name" : "0x7210954c9561cf4b47", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 779640628 +}, +{ + "ETH_account" : "0x8533a0bd9310eb63e7cc8e1116c18a3d67b1976a", + "name" : "0x8533a0bd9310eb63e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 119992000000 +}, +{ + "ETH_account" : "0xb064689a51bcd978043b40d7bae3320340af86c7", + "name" : "0xb064689a51bcd97804", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 771196886 +}, +{ + "ETH_account" : "0x9ca914e0adec2bcfe15857debb4258372c77951e", + "name" : "0x9ca914e0adec2bcfe1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2025255000 +}, +{ + "ETH_account" : "0xc6b09b2ca85a2b4a2df69b24f5d145b9719df2b4", + "name" : "murphy", + "publicKey" : "SPH6k9f6V2siPpyRFyZ3QuYHaD5Tb2u8CpZDXJv5SGwCZP7GnKngs", + "balance" : 684343700 +}, +{ + "ETH_account" : "0x5abdda609174222772b8b3215805ec183ab28f75", + "name" : "0x5abdda609174222772", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2600000000 +}, +{ + "ETH_account" : "0x3e9441a8ac2dfe5571fb73466353fdadcf34573d", + "name" : "gypsespthx", + "publicKey" : "SPH8FMVEjtu1vnzQAJptHGyXWiypKTcdzyEWDynRL3LeBj8or4d2d", + "balance" : 5740000000 +}, +{ + "ETH_account" : "0xba5c37b8b9be286e85578fa9fb23fd7139ecb7d9", + "name" : "0xba5c37b8b9be286e85", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 401475600 +}, +{ + "ETH_account" : "0x1c99fa613b144d27b7be91cf162749419985e46a", + "name" : "andrejsphtx", + "publicKey" : "SPH8aqSLPDvaPTEAHL7zkaRNdhpCqzMxGgGJBjzV8AjLMTgmN4auN", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0xb9117060181256c1c965779bed97e6af0762740c", + "name" : "0xb9117060181256c1c9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3480000000 +}, +{ + "ETH_account" : "0x00ee7474fd7bc64e47c6ec59075b112a32283b57", + "name" : "timsophiatx", + "publicKey" : "SPH5KssZJADMjTBCcY5XfYjsdDSMXYf5Gc9Pq7qDD6LXCc5EsbkAM", + "balance" : 10008000000 +}, +{ + "ETH_account" : "0x453f96121a341aac7c658283a0c494b77a94a2ce", + "name" : "0x453f96121a341aac7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3205285500 +}, +{ + "ETH_account" : "0xdbfbf087a3c83c5d3b3129a3ffc728e030cfdb58", + "name" : "0xdbfbf087a3c83c5d3b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 531460000 +}, +{ + "ETH_account" : "0x892b7ea893e3cd91e60da20874b8a65f26e58a99", + "name" : "0x892b7ea893e3cd91e6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0x37db745386fcf84105fdec8df12ae4333cfde214", + "name" : "0x37db745386fcf84105", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2737668300 +}, +{ + "ETH_account" : "0x1a80ea8c0c02ca5714602775e43f82e2b81360f3", + "name" : "0x1a80ea8c0c02ca5714", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3000000000 +}, +{ + "ETH_account" : "0x182057ca8e1f0a5293c1be38598e10bb09ba8e05", + "name" : "0x182057ca8e1f0a5293", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 390801078 +}, +{ + "ETH_account" : "0xf89d26febcbf81e5ff2786630fe0757c70cf1dec", + "name" : "madisonvecchio", + "publicKey" : "SPH8h22BxjR9UNKHo44YMf85o4gTiiW6JSxMLqPgh2aXiWhoe89ok", + "balance" : 17555000000 +}, +{ + "ETH_account" : "0xdc3787c38d0f292d21a17b50e0a26718783ebe17", + "name" : "0xdc3787c38d0f292d21", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4108000000 +}, +{ + "ETH_account" : "0x659459ca3609e1a313c0626771f85e6ae8d66571", + "name" : "0x659459ca3609e1a313", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100002548351 +}, +{ + "ETH_account" : "0x7970067cf83426450dd1c7e2b414c41dd07895fc", + "name" : "0x7970067cf83426450d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5515000000 +}, +{ + "ETH_account" : "0x9d010c3da94122a42e86dd29cf28242da505c82b", + "name" : "antoineyoung", + "publicKey" : "SPH7GhEb5fmXv8Gm1K1H4Di1v8RRZsAByPLsaPyB1Sz4MDWnx6gNR", + "balance" : 1109476804 +}, +{ + "ETH_account" : "0xc8b6a0bc4a6740ad2ee189e8352309e9901211bf", + "name" : "massomsphtx", + "publicKey" : "SPH6fak4PcRx9brte1rtfJHzXuPwvCRS8Rou13YuK1tcEqnE6Kdpe", + "balance" : 2240000000 +}, +{ + "ETH_account" : "0x9eb3edfb5a5ec79ee3a8a384103495b68f3cb10b", + "name" : "0x9eb3edfb5a5ec79ee3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 104348108 +}, +{ + "ETH_account" : "0x958b4555d1373614c0389501a769e378444b1c80", + "name" : "0x958b4555d1373614c0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15195000000 +}, +{ + "ETH_account" : "0x3efcc16bb81aa6448cdbb2009c733208f5ea054a", + "name" : "0x3efcc16bb81aa6448c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 55000000 +}, +{ + "ETH_account" : "0x576d461af2b661d2366a5aa012f386e823029911", + "name" : "0x576d461af2b661d236", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1193170300 +}, +{ + "ETH_account" : "0x81c1cfc271b0b092991b0cea016dc3ee82c4c1eb", + "name" : "0x81c1cfc271b0b09299", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 371923500 +}, +{ + "ETH_account" : "0xc1f031e96cb14d7a12987c28696e09d1396378c0", + "name" : "0xc1f031e96cb14d7a12", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1960000000 +}, +{ + "ETH_account" : "0x5dec5a4979962363962ddac5788a881c854048cf", + "name" : "0x5dec5a497996236396", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6079000000 +}, +{ + "ETH_account" : "0x173d13f39f70bb469995e25e2d1d81c7393e312f", + "name" : "0x173d13f39f70bb4699", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 48840000000 +}, +{ + "ETH_account" : "0xc47acee9fc96f6b3645dc372f78c5f1983fa88e6", + "name" : "0xc47acee9fc96f6b364", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 6062708100 +}, +{ + "ETH_account" : "0xe6b0330562735028e33bebce491bcacf10d2fab0", + "name" : "sophiatxmn", + "publicKey" : "SPH7WgRgn83jQxfTCfziNEscM5RALtwB8dGuZWVwN8Z3SzeAQ4iGz", + "balance" : 1492998000 +}, +{ + "ETH_account" : "0x6c2322f6fda5ecd4e365ffa48ace07df5ec4fa51", + "name" : "0x6c2322f6fda5ecd4e3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23250000000 +}, +{ + "ETH_account" : "0xb6fc48ccfa9c406d5675f7153a085864f643f7d3", + "name" : "0xb6fc48ccfa9c406d56", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 220415000 +}, +{ + "ETH_account" : "0xbf1e63b3bfb2fd80be3a2c74cd82ec3d114ed05c", + "name" : "sebbyssphtx", + "publicKey" : "SPH88zh5h5i6zF1BmimJ3NiPDLvNqBT6dcN31XZQppgvwsoVbJUfR", + "balance" : 6998157654 +}, +{ + "ETH_account" : "0xee4c39d0939576b3d8cfc9aac6afda05d95f5ac9", + "name" : "0xee4c39d0939576b3d8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 644293549 +}, +{ + "ETH_account" : "0xacbe443fe93a5c563eb0856f719da0ffe39d8b36", + "name" : "0xacbe443fe93a5c563e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x7bf1856278885123ff0a59a53c4d21092248c48b", + "name" : "paccvet", + "publicKey" : "SPH8LL9kNREhUAR3uaBGiNrArCPsz7Vc4YEk8d3sSxuK3deXqxCKq", + "balance" : 1968214000 +}, +{ + "ETH_account" : "0x08cd39c4a04156a658124c03f5ca15932117adea", + "name" : "0x08cd39c4a04156a658", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16540831400 +}, +{ + "ETH_account" : "0x2cf20736911deaaa1d78acb483b2ab382eb59bc6", + "name" : "0x2cf20736911deaaa1d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1709603100 +}, +{ + "ETH_account" : "0x3c8b4d2586732cd4e7efcd3c68e66ebb3534ccc2", + "name" : "0x3c8b4d2586732cd4e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 962660138 +}, +{ + "ETH_account" : "0x8fe4f03fdc1d88f147a540278113628e77295e7c", + "name" : "0x8fe4f03fdc1d88f147", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000 +}, +{ + "ETH_account" : "0x82f9bf1832d9c8b2e4fc46368f378c93edffb0ea", + "name" : "0x82f9bf1832d9c8b2e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10685828655 +}, +{ + "ETH_account" : "0x76106a15c15b7d568639968355d6166769536dfe", + "name" : "0x76106a15c15b7d5686", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 68870 +}, +{ + "ETH_account" : "0x3b4029f0c33f1b4ea7d51a390bf9f1b099d3c804", + "name" : "0x3b4029f0c33f1b4ea7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12575074600 +}, +{ + "ETH_account" : "0x874eee42b1d51c55186e2f06b2a755132c8c03fb", + "name" : "0x874eee42b1d51c5518", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8053763100 +}, +{ + "ETH_account" : "0x11b04f31785c11715933379ac1eba812766d6677", + "name" : "0x11b04f31785c117159", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100762000000 +}, +{ + "ETH_account" : "0x3fc36162edce83e5519c509683e1c111f0b6cea6", + "name" : "0x3fc36162edce83e551", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2117227000 +}, +{ + "ETH_account" : "0x9dcd72b09fc707866310c38d311624a1b3bc6faa", + "name" : "0x9dcd72b09fc7078663", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 127600000 +}, +{ + "ETH_account" : "0xfa8f58fc035444182850464d731229a8af0b2c1e", + "name" : "0xfa8f58fc0354441828", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 128244000 +}, +{ + "ETH_account" : "0xd030b4235ca33ccfaf2bdd217f72e74d2c0cbc95", + "name" : "0xd030b4235ca33ccfaf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40304800000 +}, +{ + "ETH_account" : "0x45a67a68661b99435049dd33e72b629270db04ca", + "name" : "0x45a67a68661b994350", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1797560000 +}, +{ + "ETH_account" : "0x977a776613a45ac2616b98387a1fb389465571cb", + "name" : "0x977a776613a45ac261", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 726736500 +}, +{ + "ETH_account" : "0x9cc860e73d113f5985840fc0b077aca55e306425", + "name" : "0x9cc860e73d113f5985", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3581576682 +}, +{ + "ETH_account" : "0xc4acafd006c93e8a75d96c1364541d4160ce78c9", + "name" : "0xc4acafd006c93e8a75", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 82209700 +}, +{ + "ETH_account" : "0xbb0808311c964d97563c7bf2fe299b15b39ede3a", + "name" : "onionoreo", + "publicKey" : "SPH6h4je13Q33oxwt6nJH68qWsfynSAMRQwqyzYHNgzDKweWZ49dC", + "balance" : 184589635000 +}, +{ + "ETH_account" : "0x4281fca95bc3aff8135265c75e643ee7fde5392a", + "name" : "0x4281fca95bc3aff813", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2000000 +}, +{ + "ETH_account" : "0x25b5208068c77e8350358604ebb2dbf7ed33bc63", + "name" : "0x25b5208068c77e8350", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 108408250 +}, +{ + "ETH_account" : "0x4715186ed61111f188eeaba9c571ad202ba3e152", + "name" : "0x4715186ed61111f188", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 189399600 +}, +{ + "ETH_account" : "0x632e9121f5196bd37f1623f6cff56ea9156cc7ec", + "name" : "0x632e9121f5196bd37f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8000000000 +}, +{ + "ETH_account" : "0x455a131831f4685086d75f07b3edeb923e33412e", + "name" : "0x455a131831f4685086", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 202382800 +}, +{ + "ETH_account" : "0xb8170134c411e55a8ff3c058e284ff0ec897ca19", + "name" : "0xb8170134c411e55a8f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15000000000 +}, +{ + "ETH_account" : "0xa6def0dd2d98cf06e66e656cf6cbfa1ffe6b5d89", + "name" : "0xa6def0dd2d98cf06e6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5302912065 +}, +{ + "ETH_account" : "0x685d3393de575aa97b16330ecff1f4ab6010a7ca", + "name" : "0x685d3393de575aa97b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2477507357 +}, +{ + "ETH_account" : "0x5efc5f3d168162205f9a17212a5ccad3c909fe15", + "name" : "0x5efc5f3d168162205f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65674 +}, +{ + "ETH_account" : "0xf45a1e6b56cccdc56ec182dc25302162673fc462", + "name" : "0xf45a1e6b56cccdc56e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 108860000 +}, +{ + "ETH_account" : "0x593d8abca3ca03d1ae21ba3e956511af2f26bfcb", + "name" : "0x593d8abca3ca03d1ae", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1621639800 +}, +{ + "ETH_account" : "0x97d5272fe2ef5e1d72e54a569072b87cdf8d6b13", + "name" : "skylerelon", + "publicKey" : "SPH6WkGRH9HAH1qzLdbsJvZr6k3Nxw7P8MgN2fovS4MLA6Z2FRfAe", + "balance" : 673254100 +}, +{ + "ETH_account" : "0xda758b01b4fddd54924f6cdc2333cff6baadec9d", + "name" : "0xda758b01b4fddd5492", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2522426021 +}, +{ + "ETH_account" : "0xe11eb0bc4b34dea57dcb0b74019ba05b28b6f91c", + "name" : "0xe11eb0bc4b34dea57d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10260000000 +}, +{ + "ETH_account" : "0x3f44d68161a46e464aa6393e61261b75afdf819a", + "name" : "sophiakhiarazoe", + "publicKey" : "SPH6jHVn9zXjUG4yM1MG73v8j5oWE9RwwqShq8KDRnun5ebYTYVoc", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0x95dd10fdbce6d5a00aaf9b5ecdfc767fc1e523c0", + "name" : "0x95dd10fdbce6d5a00a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 42588000000 +}, +{ + "ETH_account" : "0xd91b2cede1d2f580715eaaeb95d1397dcce1d9a3", + "name" : "0xd91b2cede1d2f58071", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 151840000 +}, +{ + "ETH_account" : "0xb958ddbf40f29502bd89d1497e7c7ac56bf0f89f", + "name" : "0xb958ddbf40f29502bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 868000000 +}, +{ + "ETH_account" : "0x8b2a81d7d997468da4114fa9e82c3e4353d1da5e", + "name" : "0x8b2a81d7d997468da4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 853000000 +}, +{ + "ETH_account" : "0xb2736a404222a7b6c242f1e0e1d2aa2f2d6705d4", + "name" : "0xb2736a404222a7b6c2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1053700000 +}, +{ + "ETH_account" : "0xac243a4b68488be23d1bce20683911119a7c83fe", + "name" : "0xac243a4b68488be23d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 191960900 +}, +{ + "ETH_account" : "0x80962e76fd16506100f91984e4db617a0d172fb1", + "name" : "0x80962e76fd16506100", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 336000000 +}, +{ + "ETH_account" : "0xdc50f486d740a8b6efc20942890b7d090113740a", + "name" : "0xdc50f486d740a8b6ef", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3255161885 +}, +{ + "ETH_account" : "0xbecd07ae54bf7c026558b1327268e3e5efb2659b", + "name" : "0xbecd07ae54bf7c0265", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1999900 +}, +{ + "ETH_account" : "0x1a3d87320166e885d4f3d911fa820372ba279c75", + "name" : "novak", + "publicKey" : "SPH74Zha6G8U327aXgmR8EtjguuaAM4TVHr95hgHTh7sZv54qebM9", + "balance" : 116363636 +}, +{ + "ETH_account" : "0x23c9c6a968024bc73a39155f45491c3effe6efd8", + "name" : "0x23c9c6a968024bc73a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x091ae3faa903e88f30b398f21c99a78a3f87642f", + "name" : "0x091ae3faa903e88f30", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 625794714 +}, +{ + "ETH_account" : "0x3d62cea88052cc6f0cb970ebc686da2c882d932f", + "name" : "0x3d62cea88052cc6f0c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 137000000 +}, +{ + "ETH_account" : "0x6e9170e6a5aca940182eae871bf74511d0f298cb", + "name" : "jonathansophia", + "publicKey" : "SPH6jM7ma89gLP8JXLxVfLp6p3Gwi3iRS5bJ58YvdoAYYkSQijM7y", + "balance" : 5326660000 +}, +{ + "ETH_account" : "0x4a645804b92372297fd064c9067d967ea3ea5a8a", + "name" : "0x4a645804b92372297f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9399809298 +}, +{ + "ETH_account" : "0x203972c8979f6d1f9cf6d1a763cbac4bcc581760", + "name" : "0x203972c8979f6d1f9c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 613300000 +}, +{ + "ETH_account" : "0x82d3f4ff32d844d46c5f14359891841581d7fbae", + "name" : "0x82d3f4ff32d844d46c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13239668000 +}, +{ + "ETH_account" : "0x7d680ecf2d9906a96f068542e17ad959450c36f3", + "name" : "0x7d680ecf2d9906a96f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3128718500 +}, +{ + "ETH_account" : "0xe88b4534674816371d779595a66699fa88d9e83e", + "name" : "0xe88b4534674816371d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 32732221900 +}, +{ + "ETH_account" : "0x0a64eccec268b86df4d0eaf8db67db0e5f581e5c", + "name" : "0x0a64eccec268b86df4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 53998682630 +}, +{ + "ETH_account" : "0xaaed6a05aee4bac313c7aee300ff322c54104bf8", + "name" : "0xaaed6a05aee4bac313", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4222695600 +}, +{ + "ETH_account" : "0x20a49096f35b735c3dca787b9b71e9eec9b2e04b", + "name" : "tomjones", + "publicKey" : "SPH5M2FgK64Tu2mfpnkyzQo4cjTqSzrj2y4oK7KC6bThwdnebgmdA", + "balance" : 62131414500 +}, +{ + "ETH_account" : "0x1e418ba35e39716d2e3570c4f9b9f2a12c9f2673", + "name" : "0x1e418ba35e39716d2e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25104284700 +}, +{ + "ETH_account" : "0x88ab31ab3dc11e9b0f911dc97243a818187eb483", + "name" : "0x88ab31ab3dc11e9b0f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30780140000 +}, +{ + "ETH_account" : "0xcf57b56663c5cbec38a184e287a59815acc27d24", + "name" : "0xcf57b56663c5cbec38", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0xc028e77c5a074a8193540ee5835d9c6faaced4a0", + "name" : "0xc028e77c5a074a8193", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10154000000 +}, +{ + "ETH_account" : "0xa236e46cc3834a89458809ee1b603c3358b9257c", + "name" : "corpusdelicti", + "publicKey" : "SPH66eRrockt5MqfkKF6tHQXAuQUAH89BfWmKmBmmYazWUCmJtMct", + "balance" : 2839000000 +}, +{ + "ETH_account" : "0xd825e02d4ab2db51bd5f47172420c560c27b1e58", + "name" : "0xd825e02d4ab2db51bd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3233282992 +}, +{ + "ETH_account" : "0x37eeaef04bd8d90ad000b7ad3907727c789628b5", + "name" : "0x37eeaef04bd8d90ad0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 176413400 +}, +{ + "ETH_account" : "0x27ca0fc4822445009dce04a2a94e29bd1df40d27", + "name" : "0x27ca0fc4822445009d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1420205994 +}, +{ + "ETH_account" : "0xc1d3a8c8422c1694e7abe63d87afa16f3df49967", + "name" : "avizar", + "publicKey" : "SPH8fFgUSD3tGx3MzYrm6Mmkh4nSfwbLEBAPTpRuYNSrQdkeECyWA", + "balance" : 513546737 +}, +{ + "ETH_account" : "0x648262cd9620adb89ef46f0e278534cf4321eea0", + "name" : "0x648262cd9620adb89e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 93713000000 +}, +{ + "ETH_account" : "0xbb55df2b278bdcb7f985c519f1aaf044fc315ae4", + "name" : "0xbb55df2b278bdcb7f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 24000000000 +}, +{ + "ETH_account" : "0x674cc6e8aa33074e4643cd83b529b56f59531f26", + "name" : "0x674cc6e8aa33074e46", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23428000000 +}, +{ + "ETH_account" : "0x4d17c234c8d6a07b83c550e8e9bf13123fcf4ab6", + "name" : "silverlining", + "publicKey" : "SPH6S24zPJGTGhhbii57PmxV4QuZdRYucyDh9jZE7n4wPMYodJgYn", + "balance" : 25000000000 +}, +{ + "ETH_account" : "0x0dbff5c319c23c70c1e9f92415d4eeebfd24486a", + "name" : "0x0dbff5c319c23c70c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1300021 +}, +{ + "ETH_account" : "0xdb4d3184107cf739c6fbb059d78a66004bce6bbb", + "name" : "0xdb4d3184107cf739c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 26797652200 +}, +{ + "ETH_account" : "0xf5392be471ad7225542dee5c74d6be485e5f38c3", + "name" : "0xf5392be471ad722554", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 65000000 +}, +{ + "ETH_account" : "0x6b9b32bf72893f8158f7e92965233a5edfec60a6", + "name" : "0x6b9b32bf72893f8158", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50000000 +}, +{ + "ETH_account" : "0x8d452c1f4bae385b13933c83ecff70d74229915f", + "name" : "main", + "publicKey" : "SPH6mXjwU7jmCJx2unF5VDHgg2LucJ5Pr2c8RwrXJUnYPD2GVqRnv", + "balance" : 970000000 +}, +{ + "ETH_account" : "0x2c797034d08b25df0d4529db68e5ec4510f03ecf", + "name" : "xandersphtxswap", + "publicKey" : "SPH5oGoSuqkPX3iXVd2r9aJdYnc2rKDrAZQBVsDrwNV8fLgTNZEYh", + "balance" : 21668000000 +}, +{ + "ETH_account" : "0x03e89c3421e74e13ec6e71657d2cd519d9b46b8f", + "name" : "0x03e89c3421e74e13ec", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 39794222400 +}, +{ + "ETH_account" : "0xd20a34dc6a0e0341d5ff7303f85cae860cec1057", + "name" : "0xd20a34dc6a0e0341d5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7877000000 +}, +{ + "ETH_account" : "0x630ca21c60ec6fbcd39febff96e4e1693df73e8f", + "name" : "0x630ca21c60ec6fbcd3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 25005875847 +}, +{ + "ETH_account" : "0x038c399cf6d9dece36ba331c5bb40416ad77ba6a", + "name" : "0x038c399cf6d9dece36", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 231640600 +}, +{ + "ETH_account" : "0x144f1cf5fcfa410908bf2c13cb6937b5abe4ffbc", + "name" : "0x144f1cf5fcfa410908", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 46856000000 +}, +{ + "ETH_account" : "0xe375b27886447f137855cec04e216ab246867cb3", + "name" : "roy", + "publicKey" : "SPH7orUpjs5GPxpu2mNGLv2p25NPSDv4tYHF6SVgr3LHCZVzGePaC", + "balance" : 943000000 +}, +{ + "ETH_account" : "0xbbc33ded48a88ab000a8af8f4bd8eab5ccd5f57e", + "name" : "0xbbc33ded48a88ab000", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 100 +}, +{ + "ETH_account" : "0x5bc81f74b39da2bb2c520ecc067ee751fc11cf83", + "name" : "0x5bc81f74b39da2bb2c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14056000000 +}, +{ + "ETH_account" : "0xcba42faea3880a2317b10c4bffce1f2d698e056d", + "name" : "0xcba42faea3880a2317", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 30456000000 +}, +{ + "ETH_account" : "0xd3038ec3c4ee64aabeb8d5106f3d40371b5cc3f4", + "name" : "strophy", + "publicKey" : "SPH7ZoSrymtECcMH4reY5hjsM9juhkrHCNr5fc5HGPKXtN1a9KXbx", + "balance" : 2965000000 +}, +{ + "ETH_account" : "0x3dee4a4e076e8d82859d241db0baf46f112cfa23", + "name" : "0x3dee4a4e076e8d8285", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 326665 +}, +{ + "ETH_account" : "0x6258c32aa6ae524f4c46b5737e11c9ea3e9d2dc4", + "name" : "0x6258c32aa6ae524f4c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1363000000 +}, +{ + "ETH_account" : "0xfb6582be6c5b113d6563ba831063752a7b214329", + "name" : "0xfb6582be6c5b113d65", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11187000000 +}, +{ + "ETH_account" : "0x44670a22aa90d806a3dea12badd363f2d0e7ee9f", + "name" : "0x44670a22aa90d806a3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x24674f924275be1e5f79ed94f7bcf5929295dea4", + "name" : "0x24674f924275be1e5f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 488000000 +}, +{ + "ETH_account" : "0xf9f4a2bf5d138c477ee6b8051a61a9767a88306a", + "name" : "herroyuyji", + "publicKey" : "SPH8LcnsDxMJwu9xqMEZ7LVrHDtv6bym9DfqiUCi5W812iDWmKpbJ", + "balance" : 252227844900 +}, +{ + "ETH_account" : "0xc2429c45c1a02b09a8d2ce8318e0ec81e7fa619c", + "name" : "0xc2429c45c1a02b09a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50200000000 +}, +{ + "ETH_account" : "0xbc6e11edfab3f4daa6731fb73fb8518868ec2f7e", + "name" : "0xbc6e11edfab3f4daa6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0x8f49f927b0f962f60ded491ad564ec72edc70c1e", + "name" : "0x8f49f927b0f962f60d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000000 +}, +{ + "ETH_account" : "0x0ed64eb880b1688e2d0ecf33dbfaca030ca2da6e", + "name" : "baftales", + "publicKey" : "SPH6fap2JFvdiro9YzxwKmyTJ6MjFCzCRG5GfGzQXkhN2y5SRxuVD", + "balance" : 13220548945 +}, +{ + "ETH_account" : "0x710c4e4e22f846b2b2c53a22e20edceb12513596", + "name" : "0x710c4e4e22f846b2b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x5151a3a27a91062d79aec65d097ab2e35a3b9ebb", + "name" : "0x5151a3a27a91062d79", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1770410139 +}, +{ + "ETH_account" : "0x57017d13c1e41ed9fceb7c4cc7beee4b06aa97a5", + "name" : "0x57017d13c1e41ed9fc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1428939600 +}, +{ + "ETH_account" : "0x3bc1d39e90459d9862e832d19e08cfcb83d27b35", + "name" : "0x3bc1d39e90459d9862", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10457000000 +}, +{ + "ETH_account" : "0x00a6ecf26a0c725950f1247075b79c273e21f89e", + "name" : "test12345", + "publicKey" : "SPH6cRzwuPyzoNxsPi1ecfGHPme5GHKDsunG7vSTPuPPbPSMEcoHu", + "balance" : 50000000 +}, +{ + "ETH_account" : "0xf5f12037ebc7cd71e744a944b422fa90fc85a06b", + "name" : "0xf5f12037ebc7cd71e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1215250841 +}, +{ + "ETH_account" : "0x583513b6be750abd69caa9086ddf8341ee612013", + "name" : "krypto69", + "publicKey" : "SPH61wDbKywYr4p6Qdgbmj8asjy2rjSnyE8M8rkGffvRFRqAoGmMb", + "balance" : 5126842000 +}, +{ + "ETH_account" : "0xd53737112a41d0ec91c51946dc94504960e328ca", + "name" : "0xd53737112a41d0ec91", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23991261161 +}, +{ + "ETH_account" : "0x196bf1e9611324bb24e7edc6f8cd3fa23919142e", + "name" : "0x196bf1e9611324bb24", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 909800000 +}, +{ + "ETH_account" : "0xb9996a5b98c3e8de0bc26152f38bfe406110c868", + "name" : "nadroj", + "publicKey" : "SPH7nkG5yq5EBmLA9s78iYGtSPybU25zXHFn6XfN8nsEZFaR9pep2", + "balance" : 212705096 +}, +{ + "ETH_account" : "0x269d54915542d3aba190dc46002eab1fdf56e636", + "name" : "wussy", + "publicKey" : "SPH72J1pJVVVrGu15xyVg6KAaeFYMGVEbDQ1AtuuRDPvf34Cc11nG", + "balance" : 362500000 +}, +{ + "ETH_account" : "0x7adf30dca721f792a4308dcac6607117e697a432", + "name" : "mysophy", + "publicKey" : "SPH7kEW8HHMBjAj6FYjWZcsHtPgrbAFb3fjSgGiPXhooCHBTc7ZJh", + "balance" : 567861350 +}, +{ + "ETH_account" : "0x9991d7e6d8d5fe2a1b7185479922adc46c8e67a1", + "name" : "0x9991d7e6d8d5fe2a1b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4934920800 +}, +{ + "ETH_account" : "0x1f6c3e1b2d4807af43491a3fbe52914f3a45feba", + "name" : "0x1f6c3e1b2d4807af43", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4258000000 +}, +{ + "ETH_account" : "0xe5607761fd436d3147393bf434f0a0c512163dce", + "name" : "0xe5607761fd436d3147", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 696007800 +}, +{ + "ETH_account" : "0xc7b630c04d85521ecee9299257bf0b3b7bf5404c", + "name" : "alex", + "publicKey" : "SPH6PBLHHH2egNLRwixKudPi1c2USMzotsXXZZeRHZkiiE8m9MmUB", + "balance" : 39972030900 +}, +{ + "ETH_account" : "0xadbc97b077093b386e34c319eb20fbb00ef38042", + "name" : "0xadbc97b077093b386e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 366399900 +}, +{ + "ETH_account" : "0xf286f56310df6c4f08ca38832e80c43e5bab866e", + "name" : "romoventura", + "publicKey" : "SPH5Hsjvdmq57SnZCRpwFtLUpDaF5jHdLjVhcReNypYRRBwd6XViY", + "balance" : 1865852261800 +}, +{ + "ETH_account" : "0x4481c2c091b647dd959d4f690c9cf47873a1b7f7", + "name" : "0x4481c2c091b647dd95", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 463145700 +}, +{ + "ETH_account" : "0xda9c77a167b7ff3a3ea27472e2dca5ff97eb30fa", + "name" : "0xda9c77a167b7ff3a3e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20000000 +}, +{ + "ETH_account" : "0x5d1340bfb566e4fd43635369312277dfe62505bc", + "name" : "0x5d1340bfb566e4fd43", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 90632800000 +}, +{ + "ETH_account" : "0xbdfe024756c6e01e7825be22a90f32c9dbd0f991", + "name" : "mingoso", + "publicKey" : "SPH4yRZwhWqkn6grapjMWdWUduUTmWPoJL6mRQsyG9JUp4MZSbAhL", + "balance" : 571813900 +}, +{ + "ETH_account" : "0xed0eb8166fedae8a630f11d7822f8c8832a6baaf", + "name" : "0xed0eb8166fedae8a63", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50200000000 +}, +{ + "ETH_account" : "0xa4506c67b3233a2878d4bd41b442b9c028c26cb6", + "name" : "0xa4506c67b3233a2878", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 63202851800 +}, +{ + "ETH_account" : "0xa70795264eb9910230e33749d3fb9fc8505acd01", + "name" : "0xa70795264eb9910230", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 12763000000 +}, +{ + "ETH_account" : "0xe5d17edbded30bee8851f219296161107dbc1a56", + "name" : "0xe5d17edbded30bee88", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5735603500 +}, +{ + "ETH_account" : "0x4eeda143c26a1208e71b4daf08582ad9f1fd7233", + "name" : "0x4eeda143c26a1208e7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15569013400 +}, +{ + "ETH_account" : "0xbca8788b6cbf52ebff90b4dfe15f4aa5e2b53e0b", + "name" : "kaandsophia", + "publicKey" : "SPH7a9pLuwrcxp2CsYgCFHXiAZeGQXchss77VmyvUHgM5r1ZYVR7K", + "balance" : 4138083800 +}, +{ + "ETH_account" : "0x067ccd7d0e8b58bd096b8bb40f6150fc6e012a60", + "name" : "0x067ccd7d0e8b58bd09", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16240423083 +}, +{ + "ETH_account" : "0x163a2412ccf0ac2179da6fcf0978389c887c3d19", + "name" : "0x163a2412ccf0ac2179", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 107398832 +}, +{ + "ETH_account" : "0x1557ecb5ecb90ff5336a8abf6ccc541446835c06", + "name" : "ebrak", + "publicKey" : "SPH5jAci7d7sqWTSMxwGPsdJr1Nym6nk4kePQN8PP4Gj6AB1sjy1W", + "balance" : 40002765220 +}, +{ + "ETH_account" : "0xfb5215d08eb15391b27e62a896092d97d1127e18", + "name" : "0xfb5215d08eb15391b2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 55000000 +}, +{ + "ETH_account" : "0xd61ea73b824270d6ebc5951abb6f6503a4850538", + "name" : "0xd61ea73b824270d6eb", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2167778104 +}, +{ + "ETH_account" : "0x3145191e77c3eb1e30009056030e444b9fb828c7", + "name" : "0x3145191e77c3eb1e30", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4188473000 +}, +{ + "ETH_account" : "0xd0d3e6d1a8185412d6c3dcec6a561f04b465d6c1", + "name" : "0xd0d3e6d1a8185412d6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 199562400 +}, +{ + "ETH_account" : "0xf1800d281277d7c354c43540002e1ae46423a30e", + "name" : "0xf1800d281277d7c354", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4627570876 +}, +{ + "ETH_account" : "0x97309a6ba218a7f399e5107061f0fecf08befa5d", + "name" : "hisanash", + "publicKey" : "SPH5Y4s6E2q3AwbSKFu8jdncBnymqTsMmv1EMUDjbV8M8SAmbkHVj", + "balance" : 33685144520 +}, +{ + "ETH_account" : "0xa8b23477bbd6323885660d6a53d26189de8efd54", + "name" : "0xa8b23477bbd6323885", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0xdc5fcf79acb9fba6e931dd9e76869a943c055841", + "name" : "0xdc5fcf79acb9fba6e9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x488f91c923a296821e0b483d0e85aebc66c1d8b6", + "name" : "0x488f91c923a296821e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 840000000 +}, +{ + "ETH_account" : "0x5ab6aea184e7686136f2774c46e05903bc1ae04f", + "name" : "0x5ab6aea184e7686136", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7291505000 +}, +{ + "ETH_account" : "0xa2efa246300822bf3d480c84c8d890a2fca42c1e", + "name" : "0xa2efa246300822bf3d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 806000000 +}, +{ + "ETH_account" : "0x9b57e05c104e02d4968d8e8c991a7fd3ce952cc3", + "name" : "lphrichter", + "publicKey" : "SPH77ESnkEppL8cUprpJZUaNANBqxJpTucKcy3eLHmF5YRWJcbFAU", + "balance" : 1847645600 +}, +{ + "ETH_account" : "0x151e120f6a0a0cf3e49013fd1d64c3d0dc261c60", + "name" : "0x151e120f6a0a0cf3e4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 830803042 +}, +{ + "ETH_account" : "0x7b9c5a8acb0715e31a083c04618b9f851ec79f80", + "name" : "0x7b9c5a8acb0715e31a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 33090933 +}, +{ + "ETH_account" : "0x3db09dfd4657289fbf81412ea8ef2eed792543fa", + "name" : "0x3db09dfd4657289fbf", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 128204 +}, +{ + "ETH_account" : "0x36e7c97a374d0aef93ce82ff4947bb68f844d391", + "name" : "0x36e7c97a374d0aef93", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1111193818 +}, +{ + "ETH_account" : "0x636f2208ffd9a4cf35d5a4018d8ea519fd45d1ca", + "name" : "0x636f2208ffd9a4cf35", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 40523991800 +}, +{ + "ETH_account" : "0xe2d4cbaa5e011739dfb8770f784f9ce1f4c447a8", + "name" : "0xe2d4cbaa5e011739df", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10000000 +}, +{ + "ETH_account" : "0x36ffa82c828991f52f128f230d8921599ff3a276", + "name" : "gal", + "publicKey" : "SPH7rYYtN7RNdqWocPEh7MMpqYbp2z8L4U1e5TPF3KbXvT1C76RZh", + "balance" : 643220000 +}, +{ + "ETH_account" : "0xd5679602ef308dc4478445b2c553bdb4de4ad45a", + "name" : "0xd5679602ef308dc447", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23428000000 +}, +{ + "ETH_account" : "0xdf56a2664346ef57857396d6db368148a6b38c3e", + "name" : "0xdf56a2664346ef5785", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15299000000 +}, +{ + "ETH_account" : "0xbd617f72b205fb151e683ba1a5bc496994d4962c", + "name" : "0xbd617f72b205fb151e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2877690884 +}, +{ + "ETH_account" : "0x5f1411c381834e4e7aa9aa71d48cfa8bf661ff37", + "name" : "mrdancrypto", + "publicKey" : "SPH5mgZmi22w5xQNG1jNKZsstkwwYNk7jm7kAE1AbrZ4QntMykDAW", + "balance" : 2420560000 +}, +{ + "ETH_account" : "0x0d8c48d3a2dee874ccc5912977ad589fa3f015a0", + "name" : "alysianation", + "publicKey" : "SPH6dh27rKC24QQiZeB2aVG173VT14tDaatoKnnytab9Zhzzs6psd", + "balance" : 3000000000000 +}, +{ + "ETH_account" : "0xa68d67cab554a2f7b42b06f9365fbc2c8152e67d", + "name" : "sammiebreeden", + "publicKey" : "SPH5Gjd1jiL7t2PXtLgsT5HMjqg5rV2fCro5HGHJSjNJGJoyRqGq3", + "balance" : 3100000000000 +}, +{ + "ETH_account" : "0xab167f3b95f8c95d70eaf86dedb3202d96865260", + "name" : "fairyspeer", + "publicKey" : "SPH8EMiiaGRGeQa9cW726DSAWDrYS4VqCBJnDgkeu1UjjQc7JJbbP", + "balance" : 3200000000000 +}, +{ + "ETH_account" : "0x281519d0e415b01a5f2fe99968e473c3a0aea44b", + "name" : "laylalevy", + "publicKey" : "SPH8aKahpjiU59zYjrXnmTeLb2UBcNR7XQzN3zPJFXCEwC7dXJx59", + "balance" : 3300000000000 +}, +{ + "ETH_account" : "0x38118d77dd45a38cc729192c8e727efc908773cf", + "name" : "delciestackhouse", + "publicKey" : "SPH8HLVwqReJP7vhLX9wAbQp7HRR8qKTbn1Gqt83ztA9SWPfAFTzL", + "balance" : 3400000000000 +}, +{ + "ETH_account" : "0xcf1a7476a2cd193bd82cf4d338443e66a20b8c25", + "name" : "detrabrewster", + "publicKey" : "SPH7p5QicKNkGQKs3pBK5sSkzDMLNMhbccet4Auw7iwQV77A5DeiK", + "balance" : 3500000000000 +}, +{ + "ETH_account" : "0xa993723ed5cf8ebbc8aad2bfaf2afbc23d00fa52", + "name" : "jettiebabcock", + "publicKey" : "SPH57opGKdogUSg8wYiWW8DtMTxyWDw37KQ7zv4BFb1MzesVZQsLq", + "balance" : 3600000000000 +}, +{ + "ETH_account" : "0xddbdf7d8bf2e2ee2ea0253da9334159d82225d1f", + "name" : "adelchristopher", + "publicKey" : "SPH71qsjnCA6uDJ8NWWz9WfWXR3AbTxZGLHdBURd2znwTRgF4tHgV", + "balance" : 2500000000000 +}, +{ + "ETH_account" : "0x876b3a34ab895af8fe833b9e4edc9953eb934c37", + "name" : "ozieknudson", + "publicKey" : "SPH74i4nDH5uHMTukEokpsYrAnfSYzdPdWLfCivTYABHvMG4oRXJw", + "balance" : 2600000000000 +}, +{ + "ETH_account" : "0x9400c9796376d3492f276224865a8ba22f92c251", + "name" : "aronhilton", + "publicKey" : "SPH6G4fTbh8skedEiXP5ZraApYFo54devm97bj3S5bbTT4yEchwmW", + "balance" : 4830262878812 +}, +{ + "ETH_account" : "0x1f89df390ab1ed7d557276b431f5c5a0cfda8b21", + "name" : "pegleyva", + "publicKey" : "SPH5ncVyWML5FXqL2xMTT777Z2zUvCe4zAJcJNEEaKwcDyJazJS2p", + "balance" : 2300000000000 +}, +{ + "ETH_account" : "0x0e19428d628d302768d52024daad83590bca9b66", + "name" : "kimberbrannon", + "publicKey" : "SPH8Q3ehSFy6VUyU2AR7QJvgNJTGijveMWH4HrHZFUqZy39kGJkRT", + "balance" : 2100000000000 +}, +{ + "ETH_account" : "0xad0ad9b4bdce0e784870f9c153bed450be1b7bd7", + "name" : "marileestacey", + "publicKey" : "SPH7WVTfUktgx3SW2efR8qD9xxyvoQmhsU8WMmFFQeGpjNCET5NM7", + "balance" : 2200000000000 +}, +{ + "ETH_account" : "0x869abc2cc29e32816b3fd089577bb4b4343b9aa9", + "name" : "dustylarsen", + "publicKey" : "SPH4u2AC8JcxjdKn9v6NjcfQ7woKtQzHdh12kptYWgz5ivN6Cf9mH", + "balance" : 2000000000000 +}, +{ + "ETH_account" : "0x99b3ec86e272dd4dc313a8e72aa68e3f0a8c351f", + "name" : "shaneli", + "publicKey" : "SPH5Cs4uKgqjr8GLiBdeuM2qg3i46zn5CpXmjQzUzYShecf6QHiBG", + "balance" : 1900000000000 +}, +{ + "ETH_account" : "0xa7be1e4590a409810a309b6b0aff154bab2b74a9", + "name" : "marceleneyount", + "publicKey" : "SPH7RKh5PpRZyVeJWaynbg5VVVTEW7voHrJmbuztSepgoSo7THe31", + "balance" : 1900000000000 +}, +{ + "ETH_account" : "0x6d663bcb0b7b147e839cf56c53884a01e29eaa89", + "name" : "fridafedbetter", + "publicKey" : "SPH8Hz4QNpG8ZG4pMZf4UdFq6Qi2wpbECMYLLZhabWz5M1QQvxvyD", + "balance" : 1800000000000 +}, +{ + "ETH_account" : "0x3d29cce1349fe5af04d2cb5bb1fd98a5f1d59170", + "name" : "karanhong", + "publicKey" : "SPH5vp1K7VxuoALxPuxd4z4rrYj7S1n7EHqgodo61iQDmUmp7u5iJ", + "balance" : 1800000000000 +}, +{ + "ETH_account" : "0xf03e9271b05116207573af33408264359f47e002", + "name" : "kileydaly", + "publicKey" : "SPH8AVDuKR4uWwnVAan2Y6ZrXnjR8Xd7thtwV3rfodHwQmQXAE46n", + "balance" : 1200000000000 +}, +{ + "ETH_account" : "0xde9074a957c86e63bcbe9efd55939e2b03086776", + "name" : "loraleeanders", + "publicKey" : "SPH76e275tdLsUgDVyZQCTuzjW1gHFXvEmX2926ktYe7SdrCngCfi", + "balance" : 1237714743893 +}, +{ + "ETH_account" : "0x0a7e3c07870875eb173c02350debdf9220789fb1", + "name" : "0x0a7e3c07870875eb17", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 123221514000 +}, +{ + "ETH_account" : "0x56f44b0d1e22135ac7b628317bedde677251e1a0", + "name" : "0x56f44b0d1e22135ac7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 550000000 +}, +{ + "ETH_account" : "0xdf9a1859d9a949a959c304e6740258b005033eda", + "name" : "0xdf9a1859d9a949a959", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 515000000 +}, +{ + "ETH_account" : "0x877215afa6dab31ae7d2ed8c20a19adedde8718e", + "name" : "0x877215afa6dab31ae7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3609000000 +}, +{ + "ETH_account" : "0x247ae05c9d81863f588c69717bcae06742a6e94a", + "name" : "0x247ae05c9d81863f58", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 212556900 +}, +{ + "ETH_account" : "0xcd2340d8ddd304892462d68267e5adf35d074a09", + "name" : "0xcd2340d8ddd3048924", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 50054825044 +}, +{ + "ETH_account" : "0x98948c895864e8f9b8b91e290b1318d428c637cd", + "name" : "colfax", + "publicKey" : "SPH531ECCND3KR2i8nFtpfULXAkVBcDSHLVNSkG7nbiuRP8DZgX48", + "balance" : 1721248900 +}, +{ + "ETH_account" : "0x6a320d994a2970288d5873a34edc558ef4b1629c", + "name" : "0x6a320d994a2970288d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1494363242 +}, +{ + "ETH_account" : "0x2380a720ac78a48300aa520c3de7e17aadaa8237", + "name" : "0x2380a720ac78a48300", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2616040062 +}, +{ + "ETH_account" : "0x5e5375c9455507fa6328d74d26ec47f9b86c2c3a", + "name" : "0x5e5375c9455507fa63", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 22000000 +}, +{ + "ETH_account" : "0x23d5cb9e437c0eeda2cdb75bb857af5d2a11dd10", + "name" : "0x23d5cb9e437c0eeda2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 296570267 +}, +{ + "ETH_account" : "0x772e1cc6de7b00f4a85cf1b6225378bb4bcfee39", + "name" : "0x772e1cc6de7b00f4a8", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11779000000 +}, +{ + "ETH_account" : "0x6c04b754cd0330777378e4a37a8b083387a9e17f", + "name" : "magicfluppe", + "publicKey" : "SPH715xuFxhVUi8iSDuL4Npakti1Q7ZqjqD3rvrbKgoaJkqq1KaV", + "balance" : 395834795 +}, +{ + "ETH_account" : "0x7b5db188eed1b4f12b53444f559a961115d62c31", + "name" : "0x7b5db188eed1b4f12b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 165000000 +}, +{ + "ETH_account" : "0xbb1eaeac570614531e4e4ef7dcb199c98fae8115", + "name" : "0xbb1eaeac570614531e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10684297600 +}, +{ + "ETH_account" : "0x9e3213238453adfff49aa147d37a924b9c8d6c5d", + "name" : "0x9e3213238453adfff4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1277000000 +}, +{ + "ETH_account" : "0x64988ab8378569043243591b2667ac2abf6355f2", + "name" : "josephzpayne", + "publicKey" : "SPH8kvo8vhjFPJipQq3C2mLApq1YvEwbtB5B5SkaYFQePewbMPnyV", + "balance" : 472267734 +}, +{ + "ETH_account" : "0x67e77baaa6ec270d57ef07ec7b2ae3ea43fa628f", + "name" : "0x67e77baaa6ec270d57", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 995083584 +}, +{ + "ETH_account" : "0xcb283e8037c07270e543de3dcf343c5b7fea77b1", + "name" : "0xcb283e8037c07270e5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x0b5764f57c5e94a495c2e0cebd40472eb3b6dd9e", + "name" : "0x0b5764f57c5e94a495", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 17656000000 +}, +{ + "ETH_account" : "0x3370dd85e728431f03f61b4814f2ec5f36ff3136", + "name" : "0x3370dd85e728431f03", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14583000000 +}, +{ + "ETH_account" : "0x9728cb1f8f2c6e56ee351d5f30f57ad91ceb74fc", + "name" : "0x9728cb1f8f2c6e56ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1023760800 +}, +{ + "ETH_account" : "0x63a39f2ee172797dfd4707ea4065d8b37af9d532", + "name" : "0x63a39f2ee172797dfd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7327985945 +}, +{ + "ETH_account" : "0xabd4d8ce2993481365e7f033e6eecea810bce5e5", + "name" : "jaydensamuel", + "publicKey" : "SPH5BKQP9ELdwJdwLgQZhQ2kaZr8vEXJKcYr5vuW5Za55EUmpNeCT", + "balance" : 4636400000 +}, +{ + "ETH_account" : "0xda02f92e0a8371da30361e39c2058eb1061bfdba", + "name" : "sheng", + "publicKey" : "SPH58TowTFU8iLHj1PbTGUAb4rHE65YZKA1KpdTPSBwqVW3Ezg6by", + "balance" : 250000000000 +}, +{ + "ETH_account" : "0x86a95f3424c3c2a981875115710f553f51f2978d", + "name" : "twismmm", + "publicKey" : "SPH8bQnkQPva2WyTzZu9htHvcSqAUxR3oj2kAMn1LtY2ktRKTPHMz", + "balance" : 33964769 +}, +{ + "ETH_account" : "0xc7d5ef04a8b8592694903353c6fb5b06d1a3ce1b", + "name" : "0xc7d5ef04a8b8592694", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1480092577 +}, +{ + "ETH_account" : "0xc197b495ee1bff372ca923ed720d99a0734ac169", + "name" : "0xc197b495ee1bff372c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 38000000 +}, +{ + "ETH_account" : "0xc8c5a6b603dffc8ae7d2f390681d788d5045511d", + "name" : "0xc8c5a6b603dffc8ae7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7999000000 +}, +{ + "ETH_account" : "0x1966ce73a2c7c30d1b6923e28720059de70478b1", + "name" : "0x1966ce73a2c7c30d1b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8516000000 +}, +{ + "ETH_account" : "0x9b4c5d97b82497198ded4ce643960404c27acf62", + "name" : "0x9b4c5d97b82497198d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1899696000 +}, +{ + "ETH_account" : "0xbcd9c52ded3f2ec56eb8b9540d0a458b1128300f", + "name" : "0xbcd9c52ded3f2ec56e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0x0e6a0a83af76d5be5c595553fddd24f7f62edf74", + "name" : "lynx", + "publicKey" : "SPH8NqmpjGNPmkoAgmYj5mfWrXVUZ9g91EdAvczEwtXaemCV1EdLe", + "balance" : 1855247691 +}, +{ + "ETH_account" : "0x621f49aa1fb39dc35bad34f4b7ad692949874b53", + "name" : "0x621f49aa1fb39dc35b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1138047114 +}, +{ + "ETH_account" : "0xa8c690d497ce49fa416132f8cf540e5b91dc7959", + "name" : "0xa8c690d497ce49fa41", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 802838300 +}, +{ + "ETH_account" : "0xbdaefa53c85d168e8488156c193d7fe58d9c8a31", + "name" : "palahniuk", + "publicKey" : "SPH78hjKUEhF4yta32AGMbyaea5vbwwDwMhZ6Hr6Srb88a8CLRGUK", + "balance" : 38000000 +}, +{ + "ETH_account" : "0xa05816ed65e053fa5a7907f5904bcfa6d2ba93f2", + "name" : "benitezduran", + "publicKey" : "SPH6SS49McDNVPAsu6Et42N39inHhSbMB7t569T6Z3uMy5ZAnZYFZ", + "balance" : 26408745960 +}, +{ + "ETH_account" : "0xf3f7a4f1bfda9de226ebde4bbb2a7be39bdc8405", + "name" : "ahmadt", + "publicKey" : "SPH8Sm2dogybPzaSsNWYkxfb3Rq4fBxPzP1hbYVNFhG87yXvEfMJ2", + "balance" : 32306000000 +}, +{ + "ETH_account" : "0x87776af8bf8b8978c55f7df62cc3572a6f0d5a16", + "name" : "0x87776af8bf8b8978c5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4022550000 +}, +{ + "ETH_account" : "0xd8411968ec7407935501d7bde52204d7a7bd35c0", + "name" : "0xd8411968ec74079355", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1430000000 +}, +{ + "ETH_account" : "0x58868f49f6e3fbcef518b5b0156bf36f9bc4acbc", + "name" : "0x58868f49f6e3fbcef5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 64286580705 +}, +{ + "ETH_account" : "0x67e46be459eac259d1c1a99ab916dcd73bbc1b09", + "name" : "0x67e46be459eac259d1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1055453853 +}, +{ + "ETH_account" : "0x0d037ca75f1afeba681d128020561ce3aec95dfc", + "name" : "0x0d037ca75f1afeba68", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 95256000000 +}, +{ + "ETH_account" : "0xcc363237acda601621d489adbda53e8d46c5b6ed", + "name" : "0xcc363237acda601621", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 36112000000 +}, +{ + "ETH_account" : "0x50721ee44bcbd6d7ee50e4a24c426eb964542194", + "name" : "0x50721ee44bcbd6d7ee", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 209438000 +}, +{ + "ETH_account" : "0x9f949962334279e588558139fc8ebdb8d22f32af", + "name" : "0x9f949962334279e588", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 280000000 +}, +{ + "ETH_account" : "0x143284d3b0c646dbc6174fe6619637c6a78088cd", + "name" : "0x143284d3b0c646dbc6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2534845782 +}, +{ + "ETH_account" : "0x2dd8fa8f67ac2cf5c10f481e983bf48118e2d285", + "name" : "wsophia1", + "publicKey" : "SPH7AguyezNJY6pBMwqZ26AgTTrq27Uj4HRpV5FFXD2NsEVweFq8V", + "balance" : 251000000000 +}, +{ + "ETH_account" : "0x4d99c4f63ff843ae1fe4263d9716c72f28a02e1d", + "name" : "wsophia3", + "publicKey" : "SPH7fkHEfkiG4GssQm5SeyNaFHiCK8hv3TNjCqJhzyzxPW6YXDfCX", + "balance" : 251000000000 +}, +{ + "ETH_account" : "0xce1c4399afadbf2786076a273554fba85e716002", + "name" : "wsophia4", + "publicKey" : "SPH5zKdDUd1axUDNhJViXXqtqxSc263vcccW3WXMNiRR3eLFkjhG8", + "balance" : 251000000000 +}, +{ + "ETH_account" : "0xfe4fa3981bb378565f39c71c533dbde2c097db73", + "name" : "wsophia2", + "publicKey" : "SPH5CsXdZvSB9JCSV6otocLWyi3ZRgSe2UFzsD3hV3zfSjoRmMbu7", + "balance" : 251000000000 +}, +{ + "ETH_account" : "0x6cd749ebd04ce9deaa2b6be21744af1bb18a2f47", + "name" : "0x6cd749ebd04ce9deaa", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2371000000 +}, +{ + "ETH_account" : "0x84a2d0ec19b045fe611ebcc378b0ceb7765a3559", + "name" : "0x84a2d0ec19b045fe61", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 150000000 +}, +{ + "ETH_account" : "0x549a156141561821dcd5c113770fc9d047b9bc79", + "name" : "0x549a156141561821dc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2933826000 +}, +{ + "ETH_account" : "0xf42d469780c859608523b22c37d57dcb9219c2ef", + "name" : "0xf42d469780c8596085", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4135852266 +}, +{ + "ETH_account" : "0xbb6851dced2f0a306cefde44704595838e5f73aa", + "name" : "0xbb6851dced2f0a306c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 29000000 +}, +{ + "ETH_account" : "0x98dcb607fb4837798211ef1f50a380d296414433", + "name" : "0x98dcb607fb48377982", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5575544218 +}, +{ + "ETH_account" : "0x87bbfdff2eb6d064833e20cfda357ebcda9bbdbe", + "name" : "zacsbrown", + "publicKey" : "SPH6M8gcTFKK6YKqwpVBudoKYTednDCRZbW9N7TmEHRoVmAjcWAgg", + "balance" : 471907400 +}, +{ + "ETH_account" : "0xcf32bff3f7d2dfcf0ae1f799449645752bb3ed77", + "name" : "0xcf32bff3f7d2dfcf0a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10033227600 +}, +{ + "ETH_account" : "0x17d23476e56fc60e9c15a2a0658d090b5d75d07d", + "name" : "0x17d23476e56fc60e9c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0x483d1a1010b1c64bf98c37058796d59ab08e2c39", + "name" : "0x483d1a1010b1c64bf9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20712191366 +}, +{ + "ETH_account" : "0x69da159d0021f899d55337e68404163295cca624", + "name" : "0x69da159d0021f899d5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 16897020199 +}, +{ + "ETH_account" : "0x6e449645602264b5c2352d7241906efd04ed16f3", + "name" : "0x6e449645602264b5c2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4743000000 +}, +{ + "ETH_account" : "0xd2217cdb9ff6e4f1c601e094d322348e6883d387", + "name" : "0xd2217cdb9ff6e4f1c6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3210527200 +}, +{ + "ETH_account" : "0xa3a804cc711581a597c3abdecae5f8a02de93595", + "name" : "sore", + "publicKey" : "SPH5Gy32t4kBhfa9dxxB2nbjtYK22EjJ3ehUBqbDaSkNkdA4gT2WT", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xa9a1206cda8a9fb1591dc415f4d26702c577137e", + "name" : "cawsxtriplsfu", + "publicKey" : "SPH7PGFVzzbiunAqHv7eG1uh9WuhVHPq9fEg2fzy2yAATy6dBoXwW", + "balance" : 532208838143 +}, +{ + "ETH_account" : "0x4c089456d94898f430ab5e2fb2b071eb1adf7864", + "name" : "0x4c089456d94898f430", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 151461000 +}, +{ + "ETH_account" : "0x87d61c57e27696c7d26206cc68d297d4a124a215", + "name" : "0x87d61c57e27696c7d2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1300000000 +}, +{ + "ETH_account" : "0xd990433aa916e483adee933a616887e1a4479b50", + "name" : "0xd990433aa916e483ad", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 501589300 +}, +{ + "ETH_account" : "0xaa730ef82e9a476b9f8156db362bdec21e80a615", + "name" : "0xaa730ef82e9a476b9f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1637000000 +}, +{ + "ETH_account" : "0xe0ece5756927a3619e311b9d9de98fea3c3c8787", + "name" : "0xe0ece5756927a3619e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23428000000 +}, +{ + "ETH_account" : "0x7cb9f57bf9f75185b1739062db495b94db0cfef1", + "name" : "bluephilsix", + "publicKey" : "SPH6umEbDpFQ1YSsVrCN9pV6EVb347jus2zQGGBH2j6sqA5y5S7ka", + "balance" : 100000000 +}, +{ + "ETH_account" : "0xa536655df0e809cc8d019f8a673ec4ccfe6078c7", + "name" : "0xa536655df0e809cc8d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 506500000 +}, +{ + "ETH_account" : "0x35bb1d677864865cd62cf6f6cb47068869d8a530", + "name" : "0x35bb1d677864865cd6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 403755761 +}, +{ + "ETH_account" : "0xe50775a92ed9d87e009f60b46cba30dd7f4b3cb8", + "name" : "0xe50775a92ed9d87e00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11319000000 +}, +{ + "ETH_account" : "0xcd58bce1c8da510e94ab193937295cd2557cb531", + "name" : "0xcd58bce1c8da510e94", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3111042154 +}, +{ + "ETH_account" : "0x9b1a7fd861c56b26cefdb34e624a7fc742edb0a4", + "name" : "0x9b1a7fd861c56b26ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 20873150000 +}, +{ + "ETH_account" : "0x0424b58012b879831169e94de5051a47277cf841", + "name" : "0x0424b58012b8798311", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11262558200 +}, +{ + "ETH_account" : "0x0dd3e1c52f217e29ff6ca0c8eb26631a99ff3238", + "name" : "sphtxswapx", + "publicKey" : "SPH67W7Aj2vuRJb3v71cKDL6bReKyZn7HpTNSyGJUN3Hu8tV2zR2z", + "balance" : 250000000 +}, +{ + "ETH_account" : "0xa01a92d49feef7a94270102525a8ddaba11cf23c", + "name" : "0xa01a92d49feef7a942", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1960000000 +}, +{ + "ETH_account" : "0x3418bc3542e3989d56dcb03d7777fa151bb63ef9", + "name" : "0x3418bc3542e3989d56", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8314428018 +}, +{ + "ETH_account" : "0x284c00337ac1b555387e0690bd5a82fc6d083db8", + "name" : "0x284c00337ac1b55538", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4975759929 +}, +{ + "ETH_account" : "0x1992514e1082499406120ccf1d5254a30f9fe6de", + "name" : "gingfinger", + "publicKey" : "SPH5YLFfWz8ZdZPcAwM7DrGGrcggnLoyM89DoksvLWFskf8LvP2Sa", + "balance" : 2478392867 +}, +{ + "ETH_account" : "0x225961f97def6a3c6da2a2d4f80b3d69157ab8a4", + "name" : "0x225961f97def6a3c6d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9715000000 +}, +{ + "ETH_account" : "0xf8cea134cdb9db583300c4dd9c695174244f82f3", + "name" : "0xf8cea134cdb9db5833", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1004655170 +}, +{ + "ETH_account" : "0xcd8a3095a941defeaf14e4976d2c757794439692", + "name" : "rmsophiatx", + "publicKey" : "SPH7qHMJ5WihQFKMXjdgEe7CgbmSN9GmGBqburhszT617tbPoFqYY", + "balance" : 4000000 +}, +{ + "ETH_account" : "0x77b8fd435eff7ee02a9f5e1351ddf77c10c18326", + "name" : "0x77b8fd435eff7ee02a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 26428185325 +}, +{ + "ETH_account" : "0xbfc62ae2ebc305f6b3ab2f2c855c30e26bbbbee7", + "name" : "0xbfc62ae2ebc305f6b3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9921750000 +}, +{ + "ETH_account" : "0x23d8e12ba10003acc5ba60002ddb6128e54bc5cc", + "name" : "boom", + "publicKey" : "SPH7A9GupBg5ekCXYfk4LYjv8fnDm51R3S7gdfzPeo61zf9Ya7AVF", + "balance" : 3425000000 +}, +{ + "ETH_account" : "0xa0888e44ec3b5a311c1316c4d1be44578d023fc3", + "name" : "0xa0888e44ec3b5a311c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 275715518 +}, +{ + "ETH_account" : "0x2e383bcddcb20583d93e93a4af575a6db1c92546", + "name" : "0x2e383bcddcb20583d9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 11454233800 +}, +{ + "ETH_account" : "0x62b32a3d148c0e5c78256805eb4da3da7be4a93e", + "name" : "tokenalain", + "publicKey" : "SPH6eAGEnc79tLQsq1nqFW6bZhQCySWrGq4rB3CLqd4XzmFgt4Ji2", + "balance" : 140000000 +}, +{ + "ETH_account" : "0x48406c8dd3651fc3ed94e101e602fe415aa0f888", + "name" : "decembertoken", + "publicKey" : "SPH7uAkn3f6XdsfyYH7wQTgD52vhm8y7xff5JeKgAU38jWSuwug4T", + "balance" : 100000000 +}, +{ + "ETH_account" : "0x8b627d7e599bd09de5221b4a80cc31fb013b4bda", + "name" : "0x8b627d7e599bd09de5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2518588000 +}, +{ + "ETH_account" : "0xaf6bcf37252903a1d839139bb920005d8e8c9c1e", + "name" : "muid", + "publicKey" : "SPH5RW8cHC2CKtANmCgk2mNihpJBV4bFz3WPXJH4NCBZAU7D1zpFb", + "balance" : 253700000 +}, +{ + "ETH_account" : "0x0384df33fc05974125794707caaeb14f51a0e1ca", + "name" : "0x0384df33fc05974125", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7029000000 +}, +{ + "ETH_account" : "0xe66540143076c0321017c420f96f0570f877bd1b", + "name" : "0xe66540143076c03210", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2002523983 +}, +{ + "ETH_account" : "0x5cafe5d7e9a9a1226b96bbbedb5fab1e21de86fd", + "name" : "0x5cafe5d7e9a9a1226b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 13606340338 +}, +{ + "ETH_account" : "0x1bf872592c64ff9e735366ec4152daa19ad45e77", + "name" : "0x1bf872592c64ff9e73", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 10100000000 +}, +{ + "ETH_account" : "0x7721f041514819fadf047c790124e65a199de466", + "name" : "jmy", + "publicKey" : "SPH7SkdMWY7R69GDG5iQReU57AnrBNAckpFH1Z2ZgKdHhvvSg9mjJ", + "balance" : 22856000000 +}, +{ + "ETH_account" : "0x3bbc2de66365a5ee830b31fc0ce294a0e370346c", + "name" : "0x3bbc2de66365a5ee83", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 8571577238 +}, +{ + "ETH_account" : "0x58798a244fe0fa9b026f29e1856ca145f2a7b548", + "name" : "0x58798a244fe0fa9b02", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 158100000 +}, +{ + "ETH_account" : "0x727dbaa53030f1df7cf8cee014a7dac1633b3362", + "name" : "0x727dbaa53030f1df7c", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2096911644 +}, +{ + "ETH_account" : "0x630c1a2a46269402b578636485c708e11e509aa9", + "name" : "0x630c1a2a46269402b5", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 138920000 +}, +{ + "ETH_account" : "0xc677e066284face940584d274200aa73b3f5d0d7", + "name" : "0xc677e066284face940", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 559866000 +}, +{ + "ETH_account" : "0x58ff7c164e9c7e23e27c9431ad67171526eabbf6", + "name" : "0x58ff7c164e9c7e23e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 23714718834 +}, +{ + "ETH_account" : "0xe386d1421d9ffad796cc8efb5ccaf19830844ec7", + "name" : "camoka", + "publicKey" : "SPH6DT5whUz6NiQvapJquCqS4MsQLbj5Buuo1GZgDWxYymLWkUNXW", + "balance" : 1111994000 +}, +{ + "ETH_account" : "0xdd70fd82bba8e45200df93eb941c8200ff9c4d23", + "name" : "0xdd70fd82bba8e45200", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 300000000 +}, +{ + "ETH_account" : "0x68f4f8b70fff0e2f7667e37db20d3b3f4bf14788", + "name" : "federicogenoni", + "publicKey" : "SPH7BUf3LR7zueb9Q9MURFHAUns3aW6uuV43RZZVSGGbezTSjY2o4", + "balance" : 6235192053 +}, +{ + "ETH_account" : "0xb37c82619e098d02ced9b1902b103f07e1c7a95b", + "name" : "0xb37c82619e098d02ce", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3538275740 +}, +{ + "ETH_account" : "0x55792b9b83e400db2ad07a70715fb58d0a562842", + "name" : "0x55792b9b83e400db2a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 738407100 +}, +{ + "ETH_account" : "0x382488889ad47db58ffc3c3b69a07845603e38f9", + "name" : "pal", + "publicKey" : "SPH5fdQ4rUo5yJWvmKbnq2ZbiCWHbPEw2hJMQ1u6U1kh9oPSVfYfL", + "balance" : 268400860 +}, +{ + "ETH_account" : "0x685d863fed687b4a4b67d49aeac9f2234ed5e80f", + "name" : "0x685d863fed687b4a4b", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0xf2efe6cd8def6f8e9a81ab839ca74ffae46a9dae", + "name" : "ficovababka", + "publicKey" : "SPH6MhaGzGDesFHUDUoexySyYup6QAJKojHnRw5ZYCzjX47Fs9n9t", + "balance" : 10137492900 +}, +{ + "ETH_account" : "0xd574000f93401a57bcfcf059443cc36ed73c166c", + "name" : "0xd574000f93401a57bc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 46071645200 +}, +{ + "ETH_account" : "0xf5c5aa7b579d4c4a0640bfa5609ec7f5bee718d4", + "name" : "actyper", + "publicKey" : "SPH5dcNxvsLP2g4Bz9Vyvwi9i8uy9oLtCvxwq9s5xkAdvSWynH5Z7", + "balance" : 660566504 +}, +{ + "ETH_account" : "0x8378c03a6092665740891d409fd831d6dbc896ec", + "name" : "0x8378c03a6092665740", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1459891883 +}, +{ + "ETH_account" : "0x83b237e04c490299780de243ac846c266508653f", + "name" : "0x83b237e04c49029978", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1730000000 +}, +{ + "ETH_account" : "0xd5ef1b2bce8af35c06f6595ef0f4d14799bc86c7", + "name" : "0xd5ef1b2bce8af35c06", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1664000000 +}, +{ + "ETH_account" : "0xe6c8e870601c89e224d946e3b3b5d2107c4324a5", + "name" : "0xe6c8e870601c89e224", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 7706159359 +}, +{ + "ETH_account" : "0x4e5c4012860ff7301d7b49d6b7e694c4062cf894", + "name" : "0x4e5c4012860ff7301d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1171550000 +}, +{ + "ETH_account" : "0xe263dab7b769c4f420928ad565acee0dd84bd2b3", + "name" : "0xe263dab7b769c4f420", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 621240000 +}, +{ + "ETH_account" : "0xb2d3df731ffa6d9d29225ccc76641b4064cf131c", + "name" : "0xb2d3df731ffa6d9d29", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1382983453 +}, +{ + "ETH_account" : "0x57e26d9a3675a42aa6c8e8d5aa2d2120a1de066c", + "name" : "0x57e26d9a3675a42aa6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3306000000 +}, +{ + "ETH_account" : "0xd4b367b272e4b421b4925ec600f6aebd992db0a6", + "name" : "0xd4b367b272e4b421b4", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 468751556 +}, +{ + "ETH_account" : "0x80a35c3086eb680e192072efd8036adfe5ada804", + "name" : "strovi", + "publicKey" : "SPH6nGrjbeRPiVWa6g7UUugYL1137TTWGrHZhQ8Lgpnh8mTLTJk6Q", + "balance" : 6492893550 +}, +{ + "ETH_account" : "0x9c3db7578dc5e33a438c0b45f6103a0da3b1360b", + "name" : "0x9c3db7578dc5e33a43", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2275153921 +}, +{ + "ETH_account" : "0xe242b5aa01fe2408b05e8a110e9525b9c497baab", + "name" : "0xe242b5aa01fe2408b0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 3341864867 +}, +{ + "ETH_account" : "0xf098c234674e4baa33321994d02f322ac6440e9c", + "name" : "0xf098c234674e4baa33", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1305000000 +}, +{ + "ETH_account" : "0xf1703b74a51af4fc216b372be51a88bf582220fa", + "name" : "0xf1703b74a51af4fc21", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1098504000 +}, +{ + "ETH_account" : "0x20faf326725d4b3a95ad482f02be72659d596275", + "name" : "0x20faf326725d4b3a95", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 9934163000 +}, +{ + "ETH_account" : "0x5e0c70268cbeb964d7f1cc137b93c9707da4c587", + "name" : "sphirish20tx", + "publicKey" : "SPH5YTiExjKW4iLVif4E6poLGCATZRQmkXYY5bswT567fe2NvdXXh", + "balance" : 3394081741 +}, +{ + "ETH_account" : "0x30d1073ac70e401cc47738a9375d324392e84c34", + "name" : "saphirevin", + "publicKey" : "SPH6Y8bSFddhs1XBe5YTtiEwyEDTj1zu3KLq6Y2HrrnugBLFSimYX", + "balance" : 5480000000 +}, +{ + "ETH_account" : "0xd53d99fbce1f563dd67a5287898127ed86848a09", + "name" : "cryptocoiner", + "publicKey" : "SPH5LfPNmKFkYnKBfHxK9X3QoRUoPqV7V5UUd7zjq4w4seYQB5HKj", + "balance" : 2779361224 +}, +{ + "ETH_account" : "0x063f6c1f0144d19637789ff6e9773d0fdd7a549b", + "name" : "fireball", + "publicKey" : "SPH6WDCWfgNYjqezkrzeE7vQLgcaTpGap17dmYxTevv3VWcQGiPH5", + "balance" : 305036787 +}, +{ + "ETH_account" : "0x1244da1d383838d4a0b2b7d89b17182432fe0cb5", + "name" : "0x1244da1d383838d4a0", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1686000000 +}, +{ + "ETH_account" : "0x4f2659d0b580fcb8cb335c16ce11b568fb19cab1", + "name" : "sophiayokohama", + "publicKey" : "SPH6uBhCoTUjTEdWi3KQ54UfiGonTcLhYSgAW9p7gzMYtYhuYsyYh", + "balance" : 6427072734 +}, +{ + "ETH_account" : "0x07a546004c6d9a5bcada596b87421a2515a36186", + "name" : "0x07a546004c6d9a5bca", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1077000000 +}, +{ + "ETH_account" : "0x177e7ab39f0c8b95cc02cbd57af549dc1825071e", + "name" : "0x177e7ab39f0c8b95cc", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 78736907000 +}, +{ + "ETH_account" : "0xa5e9740d0c75e92335e40b3018aed0b0772c5366", + "name" : "0xa5e9740d0c75e92335", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4800000000 +}, +{ + "ETH_account" : "0x1e675e05153fdd5ec62225afcda52074edd735df", + "name" : "hhfc", + "publicKey" : "SPH7fMEFcaEyoJVP4LLrVKASNg53fZpjc3e4XKSrvxNddspNgLyUq", + "balance" : 303550000 +}, +{ + "ETH_account" : "0x0b5e48a210a439d5b3189de453d4f18b513f25f8", + "name" : "jjnozo", + "publicKey" : "SPH58HYHTNVhMc4Y9AnFPiQ4WB4VWpjQP7Qaj8Q3HB7ixuE43w66t", + "balance" : 5000000000 +}, +{ + "ETH_account" : "0x7c477fef290c426fb8e05aaf478507546068345e", + "name" : "sophiatxmagic", + "publicKey" : "SPH7UsZp9pep1PKtGGcQjHiPL37r4SwTP2m9nBa3HgANVnmhYkc6F", + "balance" : 4641370000 +}, +{ + "ETH_account" : "0xa52248e897c596d9dabd517a0c41b016b0afa2e7", + "name" : "0xa52248e897c596d9da", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1098000000 +}, +{ + "ETH_account" : "0xc29c211674882e571c0630d5f19bca4f47bf4702", + "name" : "parvesh", + "publicKey" : "SPH4xTnnyTSZXiEgH8n5ahEPqHYtBCRzsbroq1nVDW7Deo7dc4UvK", + "balance" : 1749999633 +}, +{ + "ETH_account" : "0x89cc45da9aee67525add90a626affbfb91aac374", + "name" : "wolfganghoehl", + "publicKey" : "SPH8MeXgExwM16qbqgj1zvzeH1oNuAmXCoZoCVdCZPsfYDvphD5pf", + "balance" : 11647199771 +}, +{ + "ETH_account" : "0x1401508387ecae174e07d6d0738ba720134bdb4a", + "name" : "0x1401508387ecae174e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 234148000000 +}, +{ + "ETH_account" : "0x865dde7fec2997fcd3a0814cff439a462036371c", + "name" : "0x865dde7fec2997fcd3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 17323220931 +}, +{ + "ETH_account" : "0x0d462924bb9d24000ae92a3f7c9aba5c905f2a13", + "name" : "0x0d462924bb9d24000a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 112420000 +}, +{ + "ETH_account" : "0x644f0d5f19f8fb1eb355685159b2e6a228d0c72d", + "name" : "0x644f0d5f19f8fb1eb3", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4405277312 +}, +{ + "ETH_account" : "0xd9bcd1787bad02b70f8751ae2659a9830763595b", + "name" : "charlz", + "publicKey" : "SPH66E1Pz3fEi348AHxsiYbYH7j4vrdVF54e5ekCJAqcgAkGd2ZFr", + "balance" : 400000000 +}, +{ + "ETH_account" : "0x0212f6deb8435082863c2c7ecbb9d363e0f98860", + "name" : "0x0212f6deb843508286", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 315617849 +}, +{ + "ETH_account" : "0x632fdc961a38f7592a4d023c163e456387f5c785", + "name" : "0x632fdc961a38f7592a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 15026007000 +}, +{ + "ETH_account" : "0x903a8df43fdcefff00a7b64c30b44641b8fb3eb6", + "name" : "0x903a8df43fdcefff00", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 329130168700 +}, +{ + "ETH_account" : "0xb4fc8b124498077911e3a9e4a2a93c36d092b410", + "name" : "chschneiatsoph", + "publicKey" : "SPH7p4QZh8BURSJbvxgGFwinVHhW3dhXrshRXGbzjfCDZiGJrw98a", + "balance" : 316000000 +}, +{ + "ETH_account" : "0x7e3c18250888f081653a6d731c517ea8706af7a7", + "name" : "0x7e3c18250888f08165", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 645065448 +}, +{ + "ETH_account" : "0x43a126dc05ed791b05800734aa84bf5ad5a0a80e", + "name" : "kupkakekrew", + "publicKey" : "SPH7WRLDSRqSNxADt9bAUE2LDvfGm15hgKacgQxAVkSMUoiGKkXgK", + "balance" : 982550000 +}, +{ + "ETH_account" : "0x376cabb52c062433dd33b16e1b87c5bb5801d41d", + "name" : "gerlierosesophia", + "publicKey" : "SPH7rgqfqchgvdPLpzuzUtD6Wrg6qwcyHYKR4pwHdifEw49CcQuzf", + "balance" : 232550000 +}, +{ + "ETH_account" : "0xb6a375b7215e9cc9baaa619f2d23e3fc74ae3c20", + "name" : "0xb6a375b7215e9cc9ba", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 97673683 +}, +{ + "ETH_account" : "0xd1e70841518fd4194a8ef7a9777851a4d1d85a57", + "name" : "igloosphtx", + "publicKey" : "SPH7nohkYFXzHQxyozQzPYxLC2jQCR78qyWxk41Jy3FdZJqNbj69Y", + "balance" : 7720639678 +}, +{ + "ETH_account" : "0xed806b44473c5f511328719254cc3893c3edd7f7", + "name" : "0xed806b44473c5f5113", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 400000000 +}, +{ + "ETH_account" : "0x3814dd3bf6c79dff442aa1ce78f3dc8ca668ba2d", + "name" : "transfer", + "publicKey" : "SPH72UU5gyNS6g278wbXkdFLrKK5wXyL7mArc25Mqr1FaPtQq6VyF", + "balance" : 39515359502 +}, +{ + "ETH_account" : "0xd5b72627fc7fa32f455c9e6f8804021bc881150e", + "name" : "0xd5b72627fc7fa32f45", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 639000000 +}, +{ + "ETH_account" : "0x71b0e23802a538895e95e34b7b07a3dc3d3dc271", + "name" : "0x71b0e23802a538895e", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 14030636400 +}, +{ + "ETH_account" : "0xe8ab8017a9bdb4868b815328a303e53a4f3f6d4f", + "name" : "dfa", + "publicKey" : "SPH72o4anCh6898YqMNMmskikMSjT3H9wnD556rTrzeKEGM1Auoyo", + "balance" : 38569393870 +}, +{ + "ETH_account" : "0xaf1f448e3fe36e9b3e7841272164d4a5ea2fc9f1", + "name" : "flyupmoon", + "publicKey" : "SPH55zf2Lc54t9T2gWuTbpsVQeg19xnf4Wnx4P6Px5yut4GEF25SA", + "balance" : 243536000000 +}, +{ + "ETH_account" : "0x3782ee596b94538c0a17926488e52098d15f51d3", + "name" : "robcrypto", + "publicKey" : "SPH5AaTuuw4R5YHBm4J6KPzDN97YexdyRm2RTZkfmANjtCYach7Wv", + "balance" : 1819013945 +}, +{ + "ETH_account" : "0xddb3d951717936b51d5f80651ee8343c834980d8", + "name" : "0xddb3d951717936b51d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1331000000 +}, +{ + "ETH_account" : "0x44113e90b39bbd5e32f255955d53fd70c94b2e4d", + "name" : "zabchdqr", + "publicKey" : "SPH7Kf3ATy9WzYC9X3XkWNqTNxNKryci6LM4UQTxnNci2pJLqawYi", + "balance" : 1207896722 +}, +{ + "ETH_account" : "0x9144cb3d07c22082c13e954d3b698b85efbc7023", + "name" : "0x9144cb3d07c22082c1", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1593870641 +}, +{ + "ETH_account" : "0x825c6840b35726d1f96a1af02c52bd33443ff1c0", + "name" : "0x825c6840b35726d1f9", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 234057366 +}, +{ + "ETH_account" : "0xa04e084b4865f8b40d1464f85b434318f8cd0ab1", + "name" : "0xa04e084b4865f8b40d", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 516479581 +}, +{ + "ETH_account" : "0x421b1533c81ce31352c0ae5f90c24459012bc751", + "name" : "jazaniahjaden", + "publicKey" : "SPH8eK1zBKtkPsC972beTzLkZcy7WSVqd8TjHg6eXTkcuSJTGQCJ3", + "balance" : 606237846 +}, +{ + "ETH_account" : "0xfd920417a707c61f83cece0656a64c54f2b054d2", + "name" : "0xfd920417a707c61f83", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 500000000 +}, +{ + "ETH_account" : "0xcc46c12ed2e2ee6e76d6d2264c6747587b88c04e", + "name" : "0xcc46c12ed2e2ee6e76", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 982000000 +}, +{ + "ETH_account" : "0x88dc2d6fe8cc3c461b9294ca9b381a00e86f8347", + "name" : "sophiatxwallet", + "publicKey" : "SPH688CjH1c1QAC61K7goB5yLxccc6yWpSaYzjtxE13vouJLGw9sG", + "balance" : 592550000 +}, +{ + "ETH_account" : "0x29a3f364680210448677c5fda25e35c3004cd935", + "name" : "0x29a3f3646802104486", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 200000000 +}, +{ + "ETH_account" : "0x5bf04d4be742df84a58df70d6a46b1ef6db7432b", + "name" : "vladimirzeman", + "publicKey" : "SPH8hnhYo3mb1yt4rfgwbrHe29aqsS1tV3sT7W5onvtWrBKDKnCSA", + "balance" : 60561690555 +}, +{ + "ETH_account" : "0xf5fcba08a68f155245ea9ea2830c64b97a32d647", + "name" : "salmonofwisdom", + "publicKey" : "SPH8jV9Kg2evdYEbAtaVA2uncxqLEfpWkCCVcZBLpEgRoVsqW93gE", + "balance" : 626550000 +}, +{ + "ETH_account" : "0xde7628b136963ecc284eba4666c9a8c38be75002", + "name" : "0xde7628b136963ecc28", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1056185800 +}, +{ + "ETH_account" : "0x51885a4f89e4b83efd34405ff0e421295c11bd44", + "name" : "0x51885a4f89e4b83efd", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 104119600973 +}, +{ + "ETH_account" : "0xe3fadef284b5dcfda6777453a929fbdd375f4fbe", + "name" : "0xe3fadef284b5dcfda6", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 38869188691 +}, +{ + "ETH_account" : "0xc26941f9ac6bc89802097a6408c96ba661184dc4", + "name" : "heisme95827", + "publicKey" : "SPH7h4KtRQL9DaHaPT1TL4qq8XAVbs58SWXJ3yKE9sMGC5tkYPpiU", + "balance" : 21053827896 +}, +{ + "ETH_account" : "0x804ac6f74d1bad65a6c398bd59b79578ed733588", + "name" : "javedsphtxrci", + "publicKey" : "SPH6MdzzZzbzgNrUsMZxg2KhLdU719LFFhB9GjnU5vFygdKQHAeUU", + "balance" : 630754940 +}, +{ + "ETH_account" : "0x6e80d9024f81c8676d4d22896a1f21652b650191", + "name" : "flesphtx", + "publicKey" : "SPH8QxpPB57ek92sfUvmkf4SzQV37yBAdfsfwQM9BHm91Zki3Vxns", + "balance" : 543550000 +}, +{ + "ETH_account" : "0xdb382f4c926142d095215467d2727ae60d6c85f8", + "name" : "chetan", + "publicKey" : "SPH6JhoSMfqkhxcrog1zco3rmh2bNFXT9esrK9tjyh7Kd7tkrJQzP", + "balance" : 200000000 +}, +{ + "ETH_account" : "0xabb69887468b7bfaac753d9980ed8880a68ed5e8", + "name" : "0xabb69887468b7bfaac", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 421641000 +}, +{ + "ETH_account" : "0x19a427631bffcdc1102d7585fb5e0052b1de76a4", + "name" : "sophiatxcode", + "publicKey" : "SPH551oLreZ13A4eW196J6uWTFu7ty9kj7wgzapZ3nV6JtQYWpYQf", + "balance" : 993444148 +}, +{ + "ETH_account" : "0x79a14910689b6c055a1fc4e4ef85925c1382c634", + "name" : "ledgersphtxfa", + "publicKey" : "SPH8ZkoWq53LkQwMoSJ7YPQfxtxwwE3EDFGNXQ4MDtM4N3HZd5nKL", + "balance" : 182871408 +}, +{ + "ETH_account" : "0x03dffb5789578849900cd60a4c0c384633d194c8", + "name" : "0x03dffb578957884990", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 4500000000 +}, +{ + "ETH_account" : "0x0ff605819e53780928977f87a7cb2d387267a9e3", + "name" : "0x0ff605819e53780928", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 118414592 +}, +{ + "ETH_account" : "0x40df1e21ac3d7658ff62a38d95f0004eb4a52e10", + "name" : "skurysphtx", + "publicKey" : "SPH7pqeWiC4tvoZH81gcWTotwnvnRHA8DNiUSXjwAaDH7XVqCzNAt", + "balance" : 752678692 +}, +{ + "ETH_account" : "0x4e0e0c3241741756d1a1dc764c7c51362785174b", + "name" : "sophiatex", + "publicKey" : "SPH7MWfX6pzWfAexPF5soZWGxYjTjr3a4tS3JiWbSkc3aghuR4JBQ", + "balance" : 431759686 +}, +{ + "ETH_account" : "0x244de0468620cb10c0a240a0a8cdb07478588385", + "name" : "alejo", + "publicKey" : "SPH8LWi3aUxtPTMwVfapZfTLcSDZHoPv7hptsYhGxXjKTwWZJyTb3", + "balance" : 3266623000 +}, +{ + "ETH_account" : "0x622447f7a63bda1fa241bb43b6aa1cb41c9f42c6", + "name" : "rpetrice", + "publicKey" : "SPH7eNkVZfaeaVpJxQH9n5HEVpSUopb4tems6iYSEwriSh3eUeUr1", + "balance" : 10000000 +}, +{ + "ETH_account" : "0xad73b1510676798599a8e18fd70997846638e61c", + "name" : "sosoph", + "publicKey" : "SPH7yJhfydK65S99b77GSHuBE61DzXSjLzGsrCPtMnboRpkgTqJrJ", + "balance" : 360550000 +}, +{ + "ETH_account" : "0x0cd25ac6fe394578a837554ba85c793e891df769", + "name" : "marcuitsphtx", + "publicKey" : "SPH57cARXg7KvAKkYYkiepj1Wh13crCch7MPX4ANRJNn39UM4hTm4", + "balance" : 216550000 +}, +{ + "ETH_account" : "0x26c96c9a559d92e4e26b0db5c5dccebc067b94fb", + "name" : "0x26c96c9a559d92e4e2", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1992000000 +}, +{ + "ETH_account" : "0x63c35cbbe091b2fcabb1cf1504b1f092390e0de4", + "name" : "petricek", + "publicKey" : "SPH73zAs8gnv6qXDP5w72GwQfrWozgg4W456ZdUhSHKAd47cpwWCK", + "balance" : 10000000 +}, +{ + "ETH_account" : "0x5721ae7b6369c4dfa2202af34465e126b67e64eb", + "name" : "blackexhausttips", + "publicKey" : "SPH5Kxs8VnBwbWzDKFNPVpYXtcsKtmE4vou9zRSuE49xSoz1e7Jre", + "balance" : 266550000 +}, +{ + "ETH_account" : "0x63839f948717b4548797521a1eb1d5be8c7edc1e", + "name" : "rpetricek", + "publicKey" : "SPH5aD4awwV3xWt8jXeiN5bvc8zwB3uhF2tBXi7Rz2DrtwjEehSeM", + "balance" : 10000000 +}, +{ + "ETH_account" : "0x91237dfc2f7a96b28aa103080dbf4cad056a879b", + "name" : "newcoins", + "publicKey" : "SPH5YvDLE1YoELWWeKa18MgGFFcmopDubJZzcNo6wWbRe3b6wDY6Q", + "balance" : 456458782 +}, +{ + "ETH_account" : "0xc37c74a49b82cea3ac7d64d9d6f5dcdd0e02aa27", + "name" : "xxforsalon", + "publicKey" : "SPH86t37k5zEMAe6hWFJdmDrRFSZgJiMvTvftQ1UBRWmkLJh4Kxsd", + "balance" : 1580944788 +}, +{ + "ETH_account" : "0x516a6aed45017d0c78ed2b451e575364b3a80374", + "name" : "0x516a6aed45017d0c78", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 170000000 +}, +{ + "ETH_account" : "0x1fcba1c8bb1692067fd327da3334231b2d507b99", + "name" : "0x1fcba1c8bb1692067f", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 291000000 +}, +{ + "ETH_account" : "0xf6a12e3792dc82a81add956adde7aa3e3912d80f", + "name" : "0xf6a12e3792dc82a81a", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 1000000000 +}, +{ + "ETH_account" : "0x07013b9765f4b55340d56143547ab1a1b82e70ff", + "name" : "0x07013b9765f4b55340", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 564228075 +}, +{ + "ETH_account" : "0xcc28ce54f0bc4fca89d0a3fa1b8adca994bb240d", + "name" : "0xcc28ce54f0bc4fca89", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 2376741966 +}, +{ + "ETH_account" : "0x7d45f22814a9c882d707e4dd10d2c55841280fe2", + "name" : "0x7d45f22814a9c882d7", + "publicKey" : "SPH1111111111111111111111111111111114T1Anm", + "balance" : 667564062 +} + ], + "genesis_time" :"2018-07-24T11:00:00", + "initial_chain_id" : "" +} + diff --git a/libraries/egenesis/genesis_testnet.json b/libraries/egenesis/genesis_testnet.json new file mode 100644 index 00000000..200d54ea --- /dev/null +++ b/libraries/egenesis/genesis_testnet.json @@ -0,0 +1,58 @@ +{ + "initial_public_key" : "SPH8MYLsv8yDKnrysHHDvXGqypG4piPx29xBapt9RXZyMGaYWESe5", + "initial_balace" : 349000000000000, + "initial_accounts" : [ + { + "name":"ejossev", + "key": "SPH8D8De3AFYZyc3vDfZSQogqSUAc7pbzqgYUuw5x6JBXNDp5d4i5", + "balance": 100000000000 + }, + { + "name":"matej", + "key": "SPH8M7RdvhK7gBvwGq2BcGqWFgiscvKWZT6irGnN43cd1mzoAfXKc", + "balance": 100000000000 + }, + { + "name":"pato", + "key": "SPH6usa8PYnA2gdDKSLiWPqDjKN4JjtRPBCazv3u3ky6Fw15BdexZ", + "balance": 100000000000 + }, + { + "name":"peto", + "key": "SPH6Yx7Dn5xQyCUzK23JyhpLaWr3mwJv6dagB9c3A6LjPhXFdJHuq", + "balance": 100000000000 + }, + { + "name":"sanjiv", + "key": "SPH7GvbxZTntaqCnNSsuai1Dguejh23RKJHmu2uuR869BLbM3yWPK", + "balance": 100000000000 + }, + { + "name":"honza", + "key": "SPH7qyB1qvNvB1bnGRvemRJZHSFX5XKtEBjPVSSeJYQshruQgWB2k", + "balance": 100000000000 + }, + { + "name":"matus", + "key": "SPH8CCSuKrntXmjZQvzarisey1yxG94Dspoa9VQVn1b2aFummfVig", + "balance": 100000000000 + }, + { + "name":"mrajnic", + "key": "SPH5ue1zKq2qkpnGdfk57qa4GF7eGdWFq68cgYrarRAeXF89CagE3", + "balance": 100000000000 + }, + { + "name":"rpetricek", + "key": "SPH5ieVFuVbYGkhVjNaBM8k5Hr3ZZrb4gajAwjCCByTMUAko9EU27", + "balance": 100000000000 + }, + { + "name":"martyn", + "key": "SPH8DaynogzuT4jYkGqVB7pcxC5xU8Pj7qJ6RGnqLQCTiLGYA5ZSz", + "balance": 100000000000 + } + ], + "genesis_time" : "2018-07-17T11:00:00", + "initial_chain_id" : "" +} diff --git a/libraries/legacy_plugins/delayed_node/include/steem/delayed_node/delayed_node_plugin.hpp b/libraries/egenesis/include/sophiatx/egenesis/egenesis.hpp similarity index 55% rename from libraries/legacy_plugins/delayed_node/include/steem/delayed_node/delayed_node_plugin.hpp rename to libraries/egenesis/include/sophiatx/egenesis/egenesis.hpp index d2ac7714..5051587a 100644 --- a/libraries/legacy_plugins/delayed_node/include/steem/delayed_node/delayed_node_plugin.hpp +++ b/libraries/egenesis/include/sophiatx/egenesis/egenesis.hpp @@ -21,35 +21,31 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -#pragma once -#include -#include +#pragma once -namespace steem { namespace delayed_node { -namespace detail { struct delayed_node_plugin_impl; } +#include -using app::application; +#include +#include +#include -class delayed_node_plugin : public steem::app::plugin -{ - std::unique_ptr my; -public: - delayed_node_plugin( application* app ); - virtual ~delayed_node_plugin(); +namespace sophiatx { namespace egenesis { - std::string plugin_name()const override { return "delayed_node"; } - virtual void plugin_set_program_options(boost::program_options::options_description&, - boost::program_options::options_description& cfg) override; - virtual void plugin_initialize(const boost::program_options::variables_map& options) override; - virtual void plugin_startup() override; - void mainloop(); +/** + * Get the chain ID of the built-in egenesis, or chain_id_type() + * if none was compiled in. + */ +sophiatx::protocol::chain_id_type get_egenesis_chain_id(); -protected: - void connection_failed(); - void connect(); - void sync_with_trusted_node(); -}; +/** + * Get the egenesis JSON, or the empty string if none was compiled in. + */ +void compute_egenesis_json( std::string& result ); -} } //steem::account_history +/** + * The file returned by compute_egenesis_json() should have this hash. + */ +fc::sha256 get_egenesis_json_hash(); +} } // graphene::egenesis \ No newline at end of file diff --git a/libraries/fc b/libraries/fc index 53dd73b5..0740ec8d 160000 --- a/libraries/fc +++ b/libraries/fc @@ -1 +1 @@ -Subproject commit 53dd73b5a1fa2b5ea6c244981bbf3d7c6b9a8b24 +Subproject commit 0740ec8df3279dbe34d145e6b1cb818330960fb8 diff --git a/libraries/legacy_plugins/CMakeLists.txt b/libraries/legacy_plugins/CMakeLists.txt deleted file mode 100644 index 6b4e2633..00000000 --- a/libraries/legacy_plugins/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ - -# for each subdirectory containing a CMakeLists.txt, add that subdirectory -file( GLOB children RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} * ) -foreach( child ${children} ) - if( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${child}" ) - if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${child}/CMakeLists.txt" ) - add_subdirectory( "${child}" ) - endif() - endif() -endforeach() diff --git a/libraries/legacy_plugins/account_statistics/CMakeLists.txt b/libraries/legacy_plugins/account_statistics/CMakeLists.txt deleted file mode 100644 index 821b027e..00000000 --- a/libraries/legacy_plugins/account_statistics/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -file(GLOB HEADERS "include/steem/account_statistics/*.hpp") - -add_library( steem_account_statistics - account_statistics_plugin.cpp - account_statistics_api.cpp - ) - -target_link_libraries( steem_account_statistics steem_chain steem_protocol steem_app ) -target_include_directories( steem_account_statistics - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) - -install( TARGETS - steem_account_statistics - - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) \ No newline at end of file diff --git a/libraries/legacy_plugins/account_statistics/account_statistics_api.cpp b/libraries/legacy_plugins/account_statistics/account_statistics_api.cpp deleted file mode 100644 index 0c0923be..00000000 --- a/libraries/legacy_plugins/account_statistics/account_statistics_api.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include - -namespace steem { namespace account_statistics { - -namespace detail -{ - class account_statistics_api_impl - { - public: - account_statistics_api_impl( steem::app::application& app ) - :_app( app ) {} - - steem::app::application& _app; - }; -} // detail - -account_statistics_api::account_statistics_api( const steem::app::api_context& ctx ) -{ - _my= std::make_shared< detail::account_statistics_api_impl >( ctx.app ); -} - -void account_statistics_api::on_api_startup() {} - -} } // steem::account_statistics \ No newline at end of file diff --git a/libraries/legacy_plugins/account_statistics/account_statistics_plugin.cpp b/libraries/legacy_plugins/account_statistics/account_statistics_plugin.cpp deleted file mode 100644 index 20677690..00000000 --- a/libraries/legacy_plugins/account_statistics/account_statistics_plugin.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include - -#include -#include - -#include - -namespace steem { namespace account_statistics { - -namespace detail -{ - -class account_statistics_plugin_impl -{ - public: - account_statistics_plugin_impl( account_statistics_plugin& plugin ) - :_self( plugin ) {} - virtual ~account_statistics_plugin_impl() {} - - void on_operation( const operation_notification& o ); - - account_statistics_plugin& _self; - flat_set< uint32_t > _tracked_buckets = { 60, 3600, 21600, 86400, 604800, 2592000 }; - uint32_t _maximum_history_per_bucket_size = 100; - flat_set< string > _tracked_accounts; -}; - -struct operation_process -{ - const account_statistics_plugin& _plugin; - const account_stats_bucket_object& _stats; - const account_activity_bucket_object& _activity; - chain::database& _db; - - operation_process( account_statistics_plugin& asp, const account_stats_bucket_object& s, const account_activity_bucket_object& a ) - :_plugin( asp ), _stats( s ), _activity( a ), _db( asp.database() ) {} - - typedef void result_type; - - template< typename T > - void operator()( const T& )const {} -}; - -void account_statistics_plugin_impl::on_operation( const operation_notification& o ) -{ - -} - -} // detail - -account_statistics_plugin::account_statistics_plugin( application* app ) - :plugin( app ), _my( new detail::account_statistics_plugin_impl( *this ) ) {} - -account_statistics_plugin::~account_statistics_plugin() {} - -void account_statistics_plugin::plugin_set_program_options( - boost::program_options::options_description& cli, - boost::program_options::options_description& cfg -) -{ - cli.add_options() - ("account-stats-bucket-size", boost::program_options::value()->default_value("[60,3600,21600,86400,604800,2592000]"), - "Track account statistics by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers" ) - ("account-stats-history-per-bucket", boost::program_options::value()->default_value(100), - "How far back in time to track history for each bucker size, measured in the number of buckets (default: 100)") - ("account-stats-tracked-accounts", boost::program_options::value()->default_value("[]"), - "Which accounts to track the statistics of. Empty list tracks all accounts.") - ; - cfg.add( cli ); -} - -void account_statistics_plugin::plugin_initialize( const boost::program_options::variables_map& options ) -{ - try - { - ilog( "account_stats plugin: plugin_initialize() begin" ); - - database().post_apply_operation.connect( [&]( const operation_notification& o ){ _my->on_operation( o ); } ); - - ilog( "account_stats plugin: plugin_initialize() end" ); - } FC_CAPTURE_AND_RETHROW() -} - -void account_statistics_plugin::plugin_startup() -{ - ilog( "account_stats plugin: plugin_startup() begin" ); - - app().register_api_factory< account_statistics_api >( "account_stats_api" ); - - ilog( "account_stats plugin: plugin_startup() end" ); -} - -const flat_set< uint32_t >& account_statistics_plugin::get_tracked_buckets() const -{ - return _my->_tracked_buckets; -} - -uint32_t account_statistics_plugin::get_max_history_per_bucket() const -{ - return _my->_maximum_history_per_bucket_size; -} - -const flat_set< std::string >& account_statistics_plugin::get_tracked_accounts() const -{ - return _my->_tracked_accounts; -} - -} } // steem::account_statistics - -STEEM_DEFINE_PLUGIN( account_statistics, steem::account_statistics::account_statistics_plugin ); diff --git a/libraries/legacy_plugins/account_statistics/include/steem/account_statistics/account_statistics_api.hpp b/libraries/legacy_plugins/account_statistics/include/steem/account_statistics/account_statistics_api.hpp deleted file mode 100644 index b7f18bdb..00000000 --- a/libraries/legacy_plugins/account_statistics/include/steem/account_statistics/account_statistics_api.hpp +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -#include - -#include - -namespace steem { namespace app { - struct api_context; -} } - -namespace steem { namespace account_statistics { - -namespace detail -{ - class account_statistics_api_impl; -} - -class account_statistics_api -{ - public: - account_statistics_api( const steem::app::api_context& ctx ); - - void on_api_startup(); - - private: - std::shared_ptr< detail::account_statistics_api_impl > _my; -}; - -} } // steem::account_statistics - -FC_API( steem::account_statistics::account_statistics_api, ) \ No newline at end of file diff --git a/libraries/legacy_plugins/account_statistics/include/steem/account_statistics/account_statistics_plugin.hpp b/libraries/legacy_plugins/account_statistics/include/steem/account_statistics/account_statistics_plugin.hpp deleted file mode 100644 index 94ad7a62..00000000 --- a/libraries/legacy_plugins/account_statistics/include/steem/account_statistics/account_statistics_plugin.hpp +++ /dev/null @@ -1,237 +0,0 @@ -#include - -#include - -// -// Plugins should #define their SPACE_ID's so plugins with -// conflicting SPACE_ID assignments can be compiled into the -// same binary (by simply re-assigning some of the conflicting #defined -// SPACE_ID's in a build script). -// -// Assignment of SPACE_ID's cannot be done at run-time because -// various template automagic depends on them being known at compile -// time. -// -#ifndef STEEM_ACCOUNT_STATISTICS_SPACE_ID -#define STEEM_ACCOUNT_STATISTICS_SPACE_ID 10 -#endif - -#ifndef STEEM_ACCOUNT_STATISTICS_PLUGIN_NAME -#define STEEM_ACCOUNT_STATISTICS_PLUGIN_NAME "account_stats" -#endif - -namespace steem { namespace account_statistics { - -using namespace chain; -using app::application; - -enum account_statistics_plugin_object_types -{ - account_stats_bucket_object_type = ( STEEM_ACCOUNT_STATISTICS_SPACE_ID << 8 ), - account_activity_bucket_object_type = ( STEEM_ACCOUNT_STATISTICS_SPACE_ID << 8 ) + 1 -}; - -struct account_stats_bucket_object : public object< account_stats_bucket_object_type, account_stats_bucket_object > -{ - template< typename Constructor, typename Allocator > - account_stats_bucket_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - account_stats_bucket_object() {} - - id_type id; - - fc::time_point_sec open; ///< Open time of the bucket - uint32_t seconds = 0; ///< Seconds accounted for in the bucket - account_name_type name; ///< Account name - uint32_t transactions = 0; ///< Transactions this account signed - uint32_t market_bandwidth = 0; ///< Charged bandwidth for market transactions - uint32_t non_market_bandwidth = 0; ///< Charged bandwidth for non-market transactions - uint32_t total_ops = 0; ///< Ops this account was an authority on - uint32_t market_ops = 0; ///< Market operations - uint32_t forum_ops = 0; ///< Forum operations - uint32_t root_comments = 0; ///< Top level root comments - uint32_t root_comment_edits = 0; ///< Edits to root comments - uint32_t root_comments_deleted = 0; ///< Root comments deleted - uint32_t replies = 0; ///< Replies to comments - uint32_t reply_edits = 0; ///< Edits to replies - uint32_t replies_deleted = 0; ///< Replies deleted - uint32_t new_root_votes = 0; ///< New votes on root comments - uint32_t changed_root_votes = 0; ///< Changed votes for root comments - uint32_t new_reply_votes = 0; ///< New votes on replies - uint32_t changed_reply_votes = 0; ///< Changed votes for replies - uint32_t author_reward_payouts = 0; ///< Number of author reward payouts - share_type author_rewards_sbd = 0; ///< SBD paid for author rewards - share_type author_rewards_vests = 0; ///< VESTS paid for author rewards - share_type author_rewards_total_steem_value = 0; ///< STEEM Value of author rewards - share_type author_rewards_payout_sbd_value = 0; ///< SBD Value of author rewards at time of payout - uint32_t curation_reward_payouts = 0; ///< Number of curation reward payouts. - share_type curation_rewards_vests = 0; ///< VESTS paid for curation rewards - share_type curation_rewards_steem_value = 0; ///< STEEM Value of curation rewards - share_type curation_rewards_payout_sbd_value = 0; ///< SBD Value of curation rewards at time of payout - uint32_t liquidity_reward_payouts = 0; ///< Number of liquidity reward payouts - share_type liquidity_rewards = 0; ///< Amount of STEEM paid as liquidity rewards - uint32_t transfers_to = 0; ///< Account to account transfers to this account - uint32_t transfers_from = 0; ///< Account to account transfers from this account - share_type steem_sent = 0; ///< STEEM sent from this account - share_type steem_received = 0; ///< STEEM received by this account - share_type sbd_sent = 0; ///< SBD sent from this account - share_type sbd_received = 0; ///< SBD received by this account - uint32_t sbd_interest_payments = 0; ///< Number of times interest was paid to SBD - share_type sbd_paid_as_interest = 0; ///< Amount of SBD paid as interest - uint32_t transfers_to_vesting = 0; ///< Transfers to vesting by this account. Note: Transfer to vesting from A to B counts as a transfer from A to B followed by a vesting deposit by B. - share_type steem_vested = 0; ///< STEEM vested by the account - share_type new_vests = 0; ///< New VESTS by vesting transfers - uint32_t new_vesting_withdrawal_requests = 0; ///< New vesting withdrawal requests - uint32_t modified_vesting_withdrawal_requests = 0; ///< Changes to vesting withdraw requests - uint32_t vesting_withdrawals_processed = 0; ///< Vesting withdrawals processed for this account - uint32_t finished_vesting_withdrawals = 0; ///< Processed vesting withdrawals that are now finished - share_type vests_withdrawn = 0; ///< VESTS withdrawn from the account - share_type steem_received_from_withdrawls = 0; ///< STEEM received from this account's vesting withdrawals - share_type steem_received_from_routes = 0; ///< STEEM received from another account's vesting withdrawals - share_type vests_received_from_routes = 0; ///< VESTS received from another account's vesting withdrawals - uint32_t sbd_conversion_requests_created = 0; ///< SBD conversion requests created - share_type sbd_to_be_converted = 0; ///< Amount of SBD to be converted - uint32_t sbd_conversion_requests_filled = 0; ///< SBD conversion requests filled - share_type steem_converted = 0; ///< Amount of STEEM that was converted - uint32_t limit_orders_created = 0; ///< Limit orders created by this account - uint32_t limit_orders_filled = 0; ///< Limit orders filled by this account - uint32_t limit_orders_cancelled = 0; ///< Limit orders cancelled by this account - share_type limit_order_steem_paid = 0; ///< STEEM paid by limit orders - share_type limit_order_steem_received = 0; ///< STEEM received from limit orders - share_type limit_order_sbd_paid = 0; ///< SBD paid by limit orders - share_type limit_order_sbd_received = 0; ///< SBD received by limit orders - uint32_t total_pow = 0; ///< POW completed - uint128_t estimated_hashpower = 0; ///< Estimated hashpower -}; - -typedef account_stats_bucket_object::id_type account_stats_bucket_id_type; - -struct account_activity_bucket_object : public object< account_activity_bucket_object_type, account_activity_bucket_object > -{ - template< typename Constructor, typename Allocator > - account_activity_bucket_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - account_activity_bucket_object() {} - - id_type id; - - fc::time_point_sec open; ///< Open time for the bucket - uint32_t seconds = 0; ///< Seconds accounted for in the bucket - uint32_t active_market_accounts = 0; ///< Active market accounts in the bucket - uint32_t active_forum_accounts = 0; ///< Active forum accounts in the bucket - uint32_t active_market_and_forum_accounts = 0; ///< Active accounts in both the market and the forum -}; - -typedef account_activity_bucket_object::id_type account_activity_bucket_id_type; - -namespace detail -{ - class account_statistics_plugin_impl; -} - -class account_statistics_plugin : public steem::app::plugin -{ - public: - account_statistics_plugin( application* app ); - virtual ~account_statistics_plugin(); - - virtual std::string plugin_name()const override { return STEEM_ACCOUNT_STATISTICS_PLUGIN_NAME; } - virtual void plugin_set_program_options( - boost::program_options::options_description& cli, - boost::program_options::options_description& cfg ) override; - virtual void plugin_initialize( const boost::program_options::variables_map& options ) override; - virtual void plugin_startup() override; - - const flat_set< uint32_t >& get_tracked_buckets() const; - uint32_t get_max_history_per_bucket() const; - const flat_set< std::string >& get_tracked_accounts() const; - - private: - friend class detail::account_statistics_plugin_impl; - std::unique_ptr< detail::account_statistics_plugin_impl > _my; -}; - -} } // steem::account_statistics - -FC_REFLECT( steem::account_statistics::account_stats_bucket_object, - (id) - (open) - (seconds) - (name) - (transactions) - (market_bandwidth) - (non_market_bandwidth) - (total_ops) - (market_ops) - (forum_ops) - (root_comments) - (root_comment_edits) - (root_comments_deleted) - (replies) - (reply_edits) - (replies_deleted) - (new_root_votes) - (changed_root_votes) - (new_reply_votes) - (changed_reply_votes) - (author_reward_payouts) - (author_rewards_sbd) - (author_rewards_vests) - (author_rewards_total_steem_value) - (author_rewards_payout_sbd_value) - (curation_reward_payouts) - (curation_rewards_vests) - (curation_rewards_steem_value) - (curation_rewards_payout_sbd_value) - (liquidity_reward_payouts) - (liquidity_rewards) - (transfers_to) - (transfers_from) - (steem_sent) - (steem_received) - (sbd_sent) - (sbd_received) - (sbd_interest_payments) - (sbd_paid_as_interest) - (transfers_to_vesting) - (steem_vested) - (new_vests) - (new_vesting_withdrawal_requests) - (modified_vesting_withdrawal_requests) - (vesting_withdrawals_processed) - (finished_vesting_withdrawals) - (vests_withdrawn) - (steem_received_from_withdrawls) - (steem_received_from_routes) - (vests_received_from_routes) - (sbd_conversion_requests_created) - (sbd_to_be_converted) - (sbd_conversion_requests_filled) - (steem_converted) - (limit_orders_created) - (limit_orders_filled) - (limit_orders_cancelled) - (limit_order_steem_paid) - (limit_order_steem_received) - (limit_order_sbd_paid) - (limit_order_sbd_received) - (total_pow) - (estimated_hashpower) -) -//SET_INDEX_TYPE( steem::account_statistics::account_stats_bucket_object,) - -FC_REFLECT( - steem::account_statistics::account_activity_bucket_object, - (id) - (open) - (seconds) - (active_market_accounts) - (active_forum_accounts) - (active_market_and_forum_accounts) -) diff --git a/libraries/legacy_plugins/account_statistics/plugin.json b/libraries/legacy_plugins/account_statistics/plugin.json deleted file mode 100644 index 9e6e60b2..00000000 --- a/libraries/legacy_plugins/account_statistics/plugin.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugin_name": "account_statistics", - "plugin_project": "steemit_account_statistics" -} diff --git a/libraries/legacy_plugins/auth_util/CMakeLists.txt b/libraries/legacy_plugins/auth_util/CMakeLists.txt deleted file mode 100644 index 3add998f..00000000 --- a/libraries/legacy_plugins/auth_util/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -file(GLOB HEADERS "include/steem/plugins/auth_util/*.hpp") - -add_library( steem_auth_util - ${HEADERS} - auth_util_plugin.cpp - auth_util_api.cpp - ) - -target_link_libraries( steem_auth_util steem_app steem_chain steem_protocol fc ) -target_include_directories( steem_auth_util - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) diff --git a/libraries/legacy_plugins/auth_util/auth_util_api.cpp b/libraries/legacy_plugins/auth_util/auth_util_api.cpp deleted file mode 100644 index dbf628ab..00000000 --- a/libraries/legacy_plugins/auth_util/auth_util_api.cpp +++ /dev/null @@ -1,97 +0,0 @@ - -#include -#include - -#include -#include - -#include -#include - -#include -#include - -#include - -namespace steem { namespace plugin { namespace auth_util { - -using boost::container::flat_set; - -namespace detail { - -class auth_util_api_impl -{ - public: - auth_util_api_impl( steem::app::application& _app ); - void check_authority_signature( const check_authority_signature_params& args, check_authority_signature_result& result ); - - std::shared_ptr< steem::plugin::auth_util::auth_util_plugin > get_plugin(); - - steem::app::application& app; -}; - -auth_util_api_impl::auth_util_api_impl( steem::app::application& _app ) : app( _app ) -{} - -std::shared_ptr< steem::plugin::auth_util::auth_util_plugin > auth_util_api_impl::get_plugin() -{ - return app.get_plugin< auth_util_plugin >( "auth_util" ); -} - -void auth_util_api_impl::check_authority_signature( const check_authority_signature_params& args, check_authority_signature_result& result ) -{ - std::shared_ptr< chain::database > db = app.chain_database(); - const chain::account_authority_object& acct = db->get< chain::account_authority_object, chain::by_account >( args.account_name ); - protocol::authority auth; - if( (args.level == "posting") || (args.level == "p") ) - { - auth = protocol::authority( acct.posting ); - } - else if( (args.level == "active") || (args.level == "a") || (args.level == "") ) - { - auth = protocol::authority( acct.active ); - } - else if( (args.level == "owner") || (args.level == "o") ) - { - auth = protocol::authority( acct.owner ); - } - else - { - FC_ASSERT( false, "invalid level specified" ); - } - flat_set< protocol::public_key_type > signing_keys; - for( const protocol::signature_type& sig : args.sigs ) - { - result.keys.emplace_back( fc::ecc::public_key( sig, args.dig, true ) ); - signing_keys.insert( result.keys.back() ); - } - - flat_set< protocol::public_key_type > avail; - protocol::sign_state ss( signing_keys, [&db]( const std::string& account_name ) -> const protocol::authority - { - return protocol::authority(db->get< chain::account_authority_object, chain::by_account >( account_name ).active ); - }, avail ); - - bool has_authority = ss.check_authority( auth ); - FC_ASSERT( has_authority ); - - return; -} - -} // detail - -auth_util_api::auth_util_api( const steem::app::api_context& ctx ) -{ - my = std::make_shared< detail::auth_util_api_impl >(ctx.app); -} - -void auth_util_api::on_api_startup() { } - -check_authority_signature_result auth_util_api::check_authority_signature( check_authority_signature_params args ) -{ - check_authority_signature_result result; - my->check_authority_signature( args, result ); - return result; -} - -} } } // steem::plugin::auth_util diff --git a/libraries/legacy_plugins/auth_util/auth_util_plugin.cpp b/libraries/legacy_plugins/auth_util/auth_util_plugin.cpp deleted file mode 100644 index b310edc3..00000000 --- a/libraries/legacy_plugins/auth_util/auth_util_plugin.cpp +++ /dev/null @@ -1,33 +0,0 @@ - - -#include -#include - -#include - -namespace steem { namespace plugin { namespace auth_util { - -auth_util_plugin::auth_util_plugin( application* app ) : plugin( app ) {} -auth_util_plugin::~auth_util_plugin() {} - -std::string auth_util_plugin::plugin_name()const -{ - return "auth_util"; -} - -void auth_util_plugin::plugin_initialize( const boost::program_options::variables_map& options ) -{ -} - -void auth_util_plugin::plugin_startup() -{ - app().register_api_factory< auth_util_api >( "auth_util_api" ); -} - -void auth_util_plugin::plugin_shutdown() -{ -} - -} } } // steem::plugin::auth_util - -STEEM_DEFINE_PLUGIN( auth_util, steem::plugin::auth_util::auth_util_plugin ) diff --git a/libraries/legacy_plugins/auth_util/include/steem/plugins/auth_util/auth_util_api.hpp b/libraries/legacy_plugins/auth_util/include/steem/plugins/auth_util/auth_util_api.hpp deleted file mode 100644 index d7469f20..00000000 --- a/libraries/legacy_plugins/auth_util/include/steem/plugins/auth_util/auth_util_api.hpp +++ /dev/null @@ -1,61 +0,0 @@ - -#pragma once - -#include - -#include -#include - -#include - -namespace steem { namespace app { - struct api_context; -} } - -namespace steem { namespace plugin { namespace auth_util { - -namespace detail { -class auth_util_api_impl; -} - -struct check_authority_signature_params -{ - std::string account_name; - std::string level; - fc::sha256 dig; - std::vector< protocol::signature_type > sigs; -}; - -struct check_authority_signature_result -{ - std::vector< protocol::public_key_type > keys; -}; - -class auth_util_api -{ - public: - auth_util_api( const steem::app::api_context& ctx ); - - void on_api_startup(); - - check_authority_signature_result check_authority_signature( check_authority_signature_params args ); - - private: - std::shared_ptr< detail::auth_util_api_impl > my; -}; - -} } } - -FC_REFLECT( steem::plugin::auth_util::check_authority_signature_params, - (account_name) - (level) - (dig) - (sigs) - ) -FC_REFLECT( steem::plugin::auth_util::check_authority_signature_result, - (keys) - ) - -FC_API( steem::plugin::auth_util::auth_util_api, - (check_authority_signature) - ) diff --git a/libraries/legacy_plugins/auth_util/include/steem/plugins/auth_util/auth_util_plugin.hpp b/libraries/legacy_plugins/auth_util/include/steem/plugins/auth_util/auth_util_plugin.hpp deleted file mode 100644 index 352bf095..00000000 --- a/libraries/legacy_plugins/auth_util/include/steem/plugins/auth_util/auth_util_plugin.hpp +++ /dev/null @@ -1,22 +0,0 @@ - -#pragma once - -#include - -namespace steem { namespace plugin { namespace auth_util { - -using steem::app::application; - -class auth_util_plugin : public steem::app::plugin -{ - public: - auth_util_plugin( application* app ) ; - virtual ~auth_util_plugin(); - - virtual std::string plugin_name()const override; - virtual void plugin_initialize( const boost::program_options::variables_map& options ) override; - virtual void plugin_startup() override; - virtual void plugin_shutdown() override; -}; - -} } } diff --git a/libraries/legacy_plugins/auth_util/plugin.json b/libraries/legacy_plugins/auth_util/plugin.json deleted file mode 100644 index 5e4321d5..00000000 --- a/libraries/legacy_plugins/auth_util/plugin.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugin_name": "auth_util", - "plugin_project": "steemit_auth_util" -} diff --git a/libraries/legacy_plugins/block_info/CMakeLists.txt b/libraries/legacy_plugins/block_info/CMakeLists.txt deleted file mode 100644 index 76c9d98d..00000000 --- a/libraries/legacy_plugins/block_info/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -file(GLOB HEADERS "include/steem/plugins/block_info/*.hpp") - -add_library( steem_block_info - ${HEADERS} - block_info_plugin.cpp - block_info_api.cpp - ) - -target_link_libraries( steem_block_info steem_app steem_chain steem_protocol fc ) -target_include_directories( steem_block_info - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) diff --git a/libraries/legacy_plugins/block_info/block_info_api.cpp b/libraries/legacy_plugins/block_info/block_info_api.cpp deleted file mode 100644 index f20f4c40..00000000 --- a/libraries/legacy_plugins/block_info/block_info_api.cpp +++ /dev/null @@ -1,90 +0,0 @@ - -#include -#include - -#include -#include - -namespace steem { namespace plugin { namespace block_info { - -namespace detail { - -class block_info_api_impl -{ - public: - block_info_api_impl( steem::app::application& _app ); - - std::shared_ptr< steem::plugin::block_info::block_info_plugin > get_plugin(); - - void get_block_info( const get_block_info_args& args, std::vector< block_info >& result ); - void get_blocks_with_info( const get_block_info_args& args, std::vector< block_with_info >& result ); - - steem::app::application& app; -}; - -block_info_api_impl::block_info_api_impl( steem::app::application& _app ) : app( _app ) -{} - -std::shared_ptr< steem::plugin::block_info::block_info_plugin > block_info_api_impl::get_plugin() -{ - return app.get_plugin< block_info_plugin >( "block_info" ); -} - -void block_info_api_impl::get_block_info( const get_block_info_args& args, std::vector< block_info >& result ) -{ - const std::vector< block_info >& _block_info = get_plugin()->_block_info; - - FC_ASSERT( args.start_block_num > 0 ); - FC_ASSERT( args.count <= 10000 ); - uint32_t n = std::min( uint32_t( _block_info.size() ), args.start_block_num + args.count ); - for( uint32_t block_num=args.start_block_num; block_num& result ) -{ - const std::vector< block_info >& _block_info = get_plugin()->_block_info; - const chain::database& db = get_plugin()->database(); - - FC_ASSERT( args.start_block_num > 0 ); - FC_ASSERT( args.count <= 10000 ); - uint32_t n = std::min( uint32_t( _block_info.size() ), args.start_block_num + args.count ); - uint64_t total_size = 0; - for( uint32_t block_num=args.start_block_num; block_num 8*1024*1024) && (block_num != args.start_block_num) ) - break; - total_size = new_size; - result.emplace_back(); - result.back().block = *db.fetch_block_by_number(block_num); - result.back().info = _block_info[block_num]; - } - return; -} - -} // detail - -block_info_api::block_info_api( const steem::app::api_context& ctx ) -{ - my = std::make_shared< detail::block_info_api_impl >(ctx.app); -} - -std::vector< block_info > block_info_api::get_block_info( get_block_info_args args ) -{ - std::vector< block_info > result; - my->get_block_info( args, result ); - return result; -} - -std::vector< block_with_info > block_info_api::get_blocks_with_info( get_block_info_args args ) -{ - std::vector< block_with_info > result; - my->get_blocks_with_info( args, result ); - return result; -} - -void block_info_api::on_api_startup() { } - -} } } // steem::plugin::block_info diff --git a/libraries/legacy_plugins/block_info/block_info_plugin.cpp b/libraries/legacy_plugins/block_info/block_info_plugin.cpp deleted file mode 100644 index 3916bc7f..00000000 --- a/libraries/legacy_plugins/block_info/block_info_plugin.cpp +++ /dev/null @@ -1,58 +0,0 @@ - -#include -#include - -#include -#include -#include - -#include - -namespace steem { namespace plugin { namespace block_info { - -block_info_plugin::block_info_plugin( application* app ) : plugin( app ) {} -block_info_plugin::~block_info_plugin() {} - -std::string block_info_plugin::plugin_name()const -{ - return "block_info"; -} - -void block_info_plugin::plugin_initialize( const boost::program_options::variables_map& options ) -{ - chain::database& db = database(); - - _applied_block_conn = db.applied_block.connect([this](const chain::signed_block& b){ on_applied_block(b); }); -} - -void block_info_plugin::plugin_startup() -{ - app().register_api_factory< block_info_api >( "block_info_api" ); -} - -void block_info_plugin::plugin_shutdown() -{ -} - -void block_info_plugin::on_applied_block( const chain::signed_block& b ) -{ - uint32_t block_num = b.block_num(); - const chain::database& db = database(); - - while( block_num >= _block_info.size() ) - _block_info.emplace_back(); - - block_info& info = _block_info[block_num]; - const chain::dynamic_global_property_object& dgpo = db.get_dynamic_global_properties(); - - info.block_id = b.id(); - info.block_size = fc::raw::pack_size( b ); - info.aslot = dgpo.current_aslot; - info.last_irreversible_block_num = dgpo.last_irreversible_block_num; - info.num_pow_witnesses = dgpo.num_pow_witnesses; - return; -} - -} } } // steem::plugin::block_info - -STEEM_DEFINE_PLUGIN( block_info, steem::plugin::block_info::block_info_plugin ) diff --git a/libraries/legacy_plugins/block_info/include/steem/plugins/block_info/block_info.hpp b/libraries/legacy_plugins/block_info/include/steem/plugins/block_info/block_info.hpp deleted file mode 100644 index f8500af4..00000000 --- a/libraries/legacy_plugins/block_info/include/steem/plugins/block_info/block_info.hpp +++ /dev/null @@ -1,36 +0,0 @@ - -#pragma once - -#include - -namespace steem { namespace plugin { namespace block_info { - -struct block_info -{ - chain::block_id_type block_id; - uint32_t block_size = 0; - uint64_t aslot = 0; - uint32_t last_irreversible_block_num = 0; - uint32_t num_pow_witnesses = 0; -}; - -struct block_with_info -{ - chain::signed_block block; - block_info info; -}; - -} } } - -FC_REFLECT( steem::plugin::block_info::block_info, - (block_id) - (block_size) - (aslot) - (last_irreversible_block_num) - (num_pow_witnesses) - ) - -FC_REFLECT( steem::plugin::block_info::block_with_info, - (block) - (info) - ) diff --git a/libraries/legacy_plugins/block_info/include/steem/plugins/block_info/block_info_api.hpp b/libraries/legacy_plugins/block_info/include/steem/plugins/block_info/block_info_api.hpp deleted file mode 100644 index d19afbba..00000000 --- a/libraries/legacy_plugins/block_info/include/steem/plugins/block_info/block_info_api.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#pragma once - -#include - -#include - -namespace steem { namespace app { - struct api_context; -} } - -namespace steem { namespace plugin { namespace block_info { - -namespace detail { -class block_info_api_impl; -} - -struct get_block_info_args -{ - uint32_t start_block_num = 0; - uint32_t count = 1000; -}; - -class block_info_api -{ - public: - block_info_api( const steem::app::api_context& ctx ); - - void on_api_startup(); - - std::vector< block_info > get_block_info( get_block_info_args args ); - std::vector< block_with_info > get_blocks_with_info( get_block_info_args args ); - - private: - std::shared_ptr< detail::block_info_api_impl > my; -}; - -} } } - -FC_REFLECT( steem::plugin::block_info::get_block_info_args, - (start_block_num) - (count) - ) - -FC_API( steem::plugin::block_info::block_info_api, - (get_block_info) - (get_blocks_with_info) - ) diff --git a/libraries/legacy_plugins/block_info/include/steem/plugins/block_info/block_info_plugin.hpp b/libraries/legacy_plugins/block_info/include/steem/plugins/block_info/block_info_plugin.hpp deleted file mode 100644 index 9cb1448c..00000000 --- a/libraries/legacy_plugins/block_info/include/steem/plugins/block_info/block_info_plugin.hpp +++ /dev/null @@ -1,36 +0,0 @@ - -#pragma once - -#include -#include - -#include -#include - -namespace steem { namespace protocol { -struct signed_block; -} } - -namespace steem { namespace plugin { namespace block_info { - -using steem::app::application; - -class block_info_plugin : public steem::app::plugin -{ - public: - block_info_plugin( application* app ); - virtual ~block_info_plugin(); - - virtual std::string plugin_name()const override; - virtual void plugin_initialize( const boost::program_options::variables_map& options ) override; - virtual void plugin_startup() override; - virtual void plugin_shutdown() override; - - void on_applied_block( const chain::signed_block& b ); - - std::vector< block_info > _block_info; - - boost::signals2::scoped_connection _applied_block_conn; -}; - -} } } diff --git a/libraries/legacy_plugins/block_info/plugin.json b/libraries/legacy_plugins/block_info/plugin.json deleted file mode 100644 index 9f2ccf29..00000000 --- a/libraries/legacy_plugins/block_info/plugin.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugin_name": "block_info", - "plugin_project": "steemit_block_info" -} diff --git a/libraries/legacy_plugins/blockchain_statistics/CMakeLists.txt b/libraries/legacy_plugins/blockchain_statistics/CMakeLists.txt deleted file mode 100644 index ec08f902..00000000 --- a/libraries/legacy_plugins/blockchain_statistics/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -file(GLOB HEADERS "include/steem/blockchain_statistics/*.hpp") - -add_library( steem_blockchain_statistics - blockchain_statistics_plugin.cpp - blockchain_statistics_api.cpp - ) - -target_link_libraries( steem_blockchain_statistics steem_chain steem_protocol steem_app ) -target_include_directories( steem_blockchain_statistics - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) - -install( TARGETS - steem_blockchain_statistics - - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) \ No newline at end of file diff --git a/libraries/legacy_plugins/blockchain_statistics/blockchain_statistics_api.cpp b/libraries/legacy_plugins/blockchain_statistics/blockchain_statistics_api.cpp deleted file mode 100644 index 3d0e8909..00000000 --- a/libraries/legacy_plugins/blockchain_statistics/blockchain_statistics_api.cpp +++ /dev/null @@ -1,158 +0,0 @@ -#include - -namespace steem { namespace blockchain_statistics { - -namespace detail -{ - class blockchain_statistics_api_impl - { - public: - blockchain_statistics_api_impl( steem::app::application& app ) - :_app( app ) {} - - statistics get_stats_for_time( fc::time_point_sec open, uint32_t interval )const; - statistics get_stats_for_interval( fc::time_point_sec start, fc::time_point_sec end )const; - statistics get_lifetime_stats()const; - - steem::app::application& _app; - }; - - statistics blockchain_statistics_api_impl::get_stats_for_time( fc::time_point_sec open, uint32_t interval )const - { - statistics result; - const auto& bucket_idx = _app.chain_database()->get_index< bucket_index >().indices().get< by_bucket >(); - auto itr = bucket_idx.lower_bound( boost::make_tuple( interval, open ) ); - - if( itr != bucket_idx.end() ) - result += *itr; - - return result; - } - - statistics blockchain_statistics_api_impl::get_stats_for_interval( fc::time_point_sec start, fc::time_point_sec end )const - { - statistics result; - const auto& bucket_itr = _app.chain_database()->get_index< bucket_index >().indices().get< by_bucket >(); - const auto& sizes = _app.get_plugin< blockchain_statistics_plugin >( STEEM_BLOCKCHAIN_STATISTICS_PLUGIN_NAME )->get_tracked_buckets(); - auto size_itr = sizes.rbegin(); - auto time = start; - - // This is a greedy algorithm, same as the ubiquitous "making change" problem. - // So long as the bucket sizes share a common denominator, the greedy solution - // has the same efficiency as the dynamic solution. - while( size_itr != sizes.rend() && time < end ) - { - auto itr = bucket_itr.find( boost::make_tuple( *size_itr, time ) ); - - while( itr != bucket_itr.end() && itr->seconds == *size_itr && time + itr->seconds <= end ) - { - time += *size_itr; - result += *itr; - itr++; - } - - size_itr++; - } - - return result; - } - - statistics blockchain_statistics_api_impl::get_lifetime_stats()const - { - statistics result; - result += _app.chain_database()->get( bucket_id_type() ); - - return result; - } -} // detail - -blockchain_statistics_api::blockchain_statistics_api( const steem::app::api_context& ctx ) -{ - my = std::make_shared< detail::blockchain_statistics_api_impl >( ctx.app ); -} - -void blockchain_statistics_api::on_api_startup() {} - -statistics blockchain_statistics_api::get_stats_for_time( fc::time_point_sec open, uint32_t interval )const -{ - return my->_app.chain_database()->with_read_lock( [&]() - { - return my->get_stats_for_time( open, interval ); - }); -} - -statistics blockchain_statistics_api::get_stats_for_interval( fc::time_point_sec start, fc::time_point_sec end )const -{ - return my->_app.chain_database()->with_read_lock( [&]() - { - return my->get_stats_for_interval( start, end ); - }); -} - -statistics blockchain_statistics_api::get_lifetime_stats()const -{ - return my->_app.chain_database()->with_read_lock( [&]() - { - return my->get_lifetime_stats(); - }); -} - -statistics& statistics::operator +=( const bucket_object& b ) -{ - this->blocks += b.blocks; - this->bandwidth += b.bandwidth; - this->operations += b.operations; - this->transactions += b.transactions; - this->transfers += b.transfers; - this->steem_transferred += b.steem_transferred; - this->sbd_transferred += b.sbd_transferred; - this->sbd_paid_as_interest += b.sbd_paid_as_interest; - this->accounts_created += b.paid_accounts_created + b.mined_accounts_created; - this->paid_accounts_created += b.paid_accounts_created; - this->mined_accounts_created += b.mined_accounts_created; - this->total_comments += b.root_comments + b.replies; - this->total_comment_edits += b.root_comment_edits + b.reply_edits; - this->total_comments_deleted += b.root_comments_deleted + b.replies_deleted; - this->root_comments += b.root_comments; - this->root_comment_edits += b.root_comment_edits; - this->root_comments_deleted += b.root_comments_deleted; - this->replies += b.replies; - this->reply_edits += b.reply_edits; - this->replies_deleted += b.replies_deleted; - this->total_votes += b.new_root_votes + b.changed_root_votes + b.new_reply_votes + b.changed_reply_votes; - this->new_votes += b.new_root_votes + b.new_reply_votes; - this->changed_votes += b.changed_root_votes + b.changed_reply_votes; - this->total_root_votes += b.new_root_votes + b.changed_root_votes; - this->new_root_votes += b.new_root_votes; - this->changed_root_votes += b.changed_root_votes; - this->total_reply_votes += b.new_reply_votes + b.changed_reply_votes; - this->new_reply_votes += b.new_reply_votes; - this->changed_reply_votes += b.changed_reply_votes; - this->payouts += b.payouts; - this->sbd_paid_to_authors += b.sbd_paid_to_authors; - this->vests_paid_to_authors += b.vests_paid_to_authors; - this->vests_paid_to_curators += b.vests_paid_to_curators; - this->liquidity_rewards_paid += b.liquidity_rewards_paid; - this->transfers_to_vesting += b.transfers_to_vesting; - this->steem_vested += b.steem_vested; - this->new_vesting_withdrawal_requests += b.new_vesting_withdrawal_requests; - this->vesting_withdraw_rate_delta += b.vesting_withdraw_rate_delta; - this->modified_vesting_withdrawal_requests += b.modified_vesting_withdrawal_requests; - this->vesting_withdrawals_processed += b.vesting_withdrawals_processed; - this->finished_vesting_withdrawals += b.finished_vesting_withdrawals; - this->vests_withdrawn += b.vests_withdrawn; - this->vests_transferred += b.vests_transferred; - this->sbd_conversion_requests_created += b.sbd_conversion_requests_created; - this->sbd_to_be_converted += b.sbd_to_be_converted; - this->sbd_conversion_requests_filled += b.sbd_conversion_requests_filled; - this->steem_converted += b.steem_converted; - this->limit_orders_created += b.limit_orders_created; - this->limit_orders_filled += b.limit_orders_filled; - this->limit_orders_cancelled += b.limit_orders_cancelled; - this->total_pow += b.total_pow; - this->estimated_hashpower += b.estimated_hashpower; - - return ( *this ); -} - -} } // steem::blockchain_statistics diff --git a/libraries/legacy_plugins/blockchain_statistics/blockchain_statistics_plugin.cpp b/libraries/legacy_plugins/blockchain_statistics/blockchain_statistics_plugin.cpp deleted file mode 100644 index 47e700d1..00000000 --- a/libraries/legacy_plugins/blockchain_statistics/blockchain_statistics_plugin.cpp +++ /dev/null @@ -1,473 +0,0 @@ -#include - -#include -#include -#include -#include - -#include -#include -#include - -namespace steem { namespace blockchain_statistics { - -namespace detail -{ - -using namespace steem::protocol; - -class blockchain_statistics_plugin_impl -{ - public: - blockchain_statistics_plugin_impl( blockchain_statistics_plugin& plugin ) - :_self( plugin ) {} - virtual ~blockchain_statistics_plugin_impl() {} - - void on_block( const signed_block& b ); - void pre_operation( const operation_notification& o ); - void post_operation( const operation_notification& o ); - - blockchain_statistics_plugin& _self; - flat_set< uint32_t > _tracked_buckets = { 60, 3600, 21600, 86400, 604800, 2592000 }; - flat_set< bucket_id_type > _current_buckets; - uint32_t _maximum_history_per_bucket_size = 100; -}; - -struct operation_process -{ - const blockchain_statistics_plugin& _plugin; - const bucket_object& _bucket; - chain::database& _db; - - operation_process( blockchain_statistics_plugin& bsp, const bucket_object& b ) - :_plugin( bsp ), _bucket( b ), _db( bsp.database() ) {} - - typedef void result_type; - - template< typename T > - void operator()( const T& )const {} - - void operator()( const transfer_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - b.transfers++; - - if( op.amount.symbol == STEEM_SYMBOL ) - b.steem_transferred += op.amount.amount; - else - b.sbd_transferred += op.amount.amount; - }); - } - - void operator()( const interest_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - b.sbd_paid_as_interest += op.interest.amount; - }); - } - - void operator()( const account_create_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - b.paid_accounts_created++; - }); - } - - void operator()( const pow_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - auto& worker = _db.get_account( op.worker_account ); - - if( worker.created == _db.head_block_time() ) - b.mined_accounts_created++; - - b.total_pow++; - - uint64_t bits = ( _db.get_dynamic_global_properties().num_pow_witnesses / 4 ) + 4; - uint128_t estimated_hashes = ( 1 << bits ); - uint32_t delta_t; - - if( b.seconds == 0 ) - delta_t = _db.head_block_time().sec_since_epoch() - b.open.sec_since_epoch(); - else - delta_t = b.seconds; - - b.estimated_hashpower = ( b.estimated_hashpower * delta_t + estimated_hashes ) / delta_t; - }); - } - - void operator()( const comment_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - auto& comment = _db.get_comment( op.author, op.permlink ); - - if( comment.created == _db.head_block_time() ) - { - if( comment.parent_author.length() ) - b.replies++; - else - b.root_comments++; - } - else - { - if( comment.parent_author.length() ) - b.reply_edits++; - else - b.root_comment_edits++; - } - }); - } - - void operator()( const vote_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - const auto& cv_idx = _db.get_index< comment_vote_index >().indices().get< by_comment_voter >(); - auto& comment = _db.get_comment( op.author, op.permlink ); - auto& voter = _db.get_account( op.voter ); - auto itr = cv_idx.find( boost::make_tuple( comment.id, voter.id ) ); - - if( itr->num_changes ) - { - if( comment.parent_author.size() ) - b.new_reply_votes++; - else - b.new_root_votes++; - } - else - { - if( comment.parent_author.size() ) - b.changed_reply_votes++; - else - b.changed_root_votes++; - } - }); - } - - void operator()( const author_reward_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - b.payouts++; - b.sbd_paid_to_authors += op.sbd_payout.amount; - b.vests_paid_to_authors += op.vesting_payout.amount; - }); - } - - void operator()( const curation_reward_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - b.vests_paid_to_curators += op.reward.amount; - }); - } - - void operator()( const liquidity_reward_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - b.liquidity_rewards_paid += op.payout.amount; - }); - } - - void operator()( const transfer_to_vesting_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - b.transfers_to_vesting++; - b.steem_vested += op.amount.amount; - }); - } - - void operator()( const fill_vesting_withdraw_operation& op )const - { - auto& account = _db.get_account( op.from_account ); - - _db.modify( _bucket, [&]( bucket_object& b ) - { - b.vesting_withdrawals_processed++; - if( op.deposited.symbol == STEEM_SYMBOL ) - b.vests_withdrawn += op.withdrawn.amount; - else - b.vests_transferred += op.withdrawn.amount; - - if( account.vesting_withdraw_rate.amount == 0 ) - b.finished_vesting_withdrawals++; - }); - } - - void operator()( const limit_order_create_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - b.limit_orders_created++; - }); - } - - void operator()( const fill_order_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - b.limit_orders_filled += 2; - }); - } - - void operator()( const limit_order_cancel_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - b.limit_orders_cancelled++; - }); - } - - void operator()( const convert_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - b.sbd_conversion_requests_created++; - b.sbd_to_be_converted += op.amount.amount; - }); - } - - void operator()( const fill_convert_request_operation& op )const - { - _db.modify( _bucket, [&]( bucket_object& b ) - { - b.sbd_conversion_requests_filled++; - b.steem_converted += op.amount_out.amount; - }); - } -}; - -void blockchain_statistics_plugin_impl::on_block( const signed_block& b ) -{ - auto& db = _self.database(); - - if( b.block_num() == 1 ) - { - db.create< bucket_object >( [&]( bucket_object& bo ) - { - bo.open = b.timestamp; - bo.seconds = 0; - bo.blocks = 1; - }); - } - else - { - db.modify( db.get( bucket_id_type() ), [&]( bucket_object& bo ) - { - bo.blocks++; - }); - } - - _current_buckets.clear(); - _current_buckets.insert( bucket_id_type() ); - - const auto& bucket_idx = db.get_index< bucket_index >().indices().get< by_bucket >(); - - uint32_t trx_size = 0; - uint32_t num_trx =b.transactions.size(); - - for( const auto& trx : b.transactions ) - { - trx_size += fc::raw::pack_size( trx ); - } - - - for( const auto& bucket : _tracked_buckets ) - { - auto open = fc::time_point_sec( ( db.head_block_time().sec_since_epoch() / bucket ) * bucket ); - auto itr = bucket_idx.find( boost::make_tuple( bucket, open ) ); - - if( itr == bucket_idx.end() ) - { - _current_buckets.insert( - db.create< bucket_object >( [&]( bucket_object& bo ) - { - bo.open = open; - bo.seconds = bucket; - bo.blocks = 1; - }).id ); - - if( _maximum_history_per_bucket_size > 0 ) - { - try - { - auto cutoff = fc::time_point_sec( ( safe< uint32_t >( db.head_block_time().sec_since_epoch() ) - safe< uint32_t >( bucket ) * safe< uint32_t >( _maximum_history_per_bucket_size ) ).value ); - - itr = bucket_idx.lower_bound( boost::make_tuple( bucket, fc::time_point_sec() ) ); - - while( itr->seconds == bucket && itr->open < cutoff ) - { - auto old_itr = itr; - ++itr; - db.remove( *old_itr ); - } - } - catch( fc::overflow_exception& e ) {} - catch( fc::underflow_exception& e ) {} - } - } - else - { - db.modify( *itr, [&]( bucket_object& bo ) - { - bo.blocks++; - }); - - _current_buckets.insert( itr->id ); - } - - db.modify( *itr, [&]( bucket_object& bo ) - { - bo.transactions += num_trx; - bo.bandwidth += trx_size; - }); - } -} - -void blockchain_statistics_plugin_impl::pre_operation( const operation_notification& o ) -{ - auto& db = _self.database(); - - for( const auto& bucket_id : _current_buckets ) - { - if( o.op.which() == operation::tag< delete_comment_operation >::value ) - { - delete_comment_operation op = o.op.get< delete_comment_operation >(); - auto comment = db.get_comment( op.author, op.permlink ); - const auto& bucket = db.get(bucket_id); - - db.modify( bucket, [&]( bucket_object& b ) - { - if( comment.parent_author.length() ) - b.replies_deleted++; - else - b.root_comments_deleted++; - }); - } - else if( o.op.which() == operation::tag< withdraw_vesting_operation >::value ) - { - withdraw_vesting_operation op = o.op.get< withdraw_vesting_operation >(); - auto& account = db.get_account( op.account ); - const auto& bucket = db.get(bucket_id); - - auto new_vesting_withdrawal_rate = op.vesting_shares.amount / STEEM_VESTING_WITHDRAW_INTERVALS; - if( op.vesting_shares.amount > 0 && new_vesting_withdrawal_rate == 0 ) - new_vesting_withdrawal_rate = 1; - - if( !db.has_hardfork( STEEM_HARDFORK_0_1 ) ) - new_vesting_withdrawal_rate *= 1000000; - - db.modify( bucket, [&]( bucket_object& b ) - { - if( account.vesting_withdraw_rate.amount > 0 ) - b.modified_vesting_withdrawal_requests++; - else - b.new_vesting_withdrawal_requests++; - - // TODO: Figure out how to change delta when a vesting withdraw finishes. Have until March 24th 2018 to figure that out... - b.vesting_withdraw_rate_delta += new_vesting_withdrawal_rate - account.vesting_withdraw_rate.amount; - }); - } - } -} - -void blockchain_statistics_plugin_impl::post_operation( const operation_notification& o ) -{ - try - { - auto& db = _self.database(); - - for( const auto& bucket_id : _current_buckets ) - { - const auto& bucket = db.get(bucket_id); - - if( !is_virtual_operation( o.op ) ) - { - db.modify( bucket, [&]( bucket_object& b ) - { - b.operations++; - }); - } - o.op.visit( operation_process( _self, bucket ) ); - } - } FC_CAPTURE_AND_RETHROW() -} - -} // detail - -blockchain_statistics_plugin::blockchain_statistics_plugin( application* app ) - :plugin( app ), _my( new detail::blockchain_statistics_plugin_impl( *this ) ) {} - -blockchain_statistics_plugin::~blockchain_statistics_plugin() {} - -void blockchain_statistics_plugin::plugin_set_program_options( - boost::program_options::options_description& cli, - boost::program_options::options_description& cfg -) -{ - cli.add_options() - ("chain-stats-bucket-size", boost::program_options::value()->default_value("[60,3600,21600,86400,604800,2592000]"), - "Track blockchain statistics by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers") - ("chain-stats-history-per-bucket", boost::program_options::value()->default_value(100), - "How far back in time to track history for each bucket size, measured in the number of buckets (default: 100)") - ; - cfg.add(cli); -} - -void blockchain_statistics_plugin::plugin_initialize( const boost::program_options::variables_map& options ) -{ - try - { - ilog( "chain_stats_plugin: plugin_initialize() begin" ); - chain::database& db = database(); - - db.applied_block.connect( [&]( const signed_block& b ){ _my->on_block( b ); } ); - db.pre_apply_operation.connect( [&]( const operation_notification& o ){ _my->pre_operation( o ); } ); - db.post_apply_operation.connect( [&]( const operation_notification& o ){ _my->post_operation( o ); } ); - - add_plugin_index< bucket_index >(db); - - if( options.count( "chain-stats-bucket-size" ) ) - { - const std::string& buckets = options[ "chain-stats-bucket-size" ].as< string >(); - _my->_tracked_buckets = fc::json::from_string( buckets ).as< flat_set< uint32_t > >(); - } - if( options.count( "chain-stats-history-per-bucket" ) ) - _my->_maximum_history_per_bucket_size = options[ "chain-stats-history-per-bucket" ].as< uint32_t >(); - - wlog( "chain-stats-bucket-size: ${b}", ("b", _my->_tracked_buckets) ); - wlog( "chain-stats-history-per-bucket: ${h}", ("h", _my->_maximum_history_per_bucket_size) ); - - ilog( "chain_stats_plugin: plugin_initialize() end" ); - } FC_CAPTURE_AND_RETHROW() -} - -void blockchain_statistics_plugin::plugin_startup() -{ - ilog( "chain_stats plugin: plugin_startup() begin" ); - - app().register_api_factory< blockchain_statistics_api >( "chain_stats_api" ); - - ilog( "chain_stats plugin: plugin_startup() end" ); -} - -const flat_set< uint32_t >& blockchain_statistics_plugin::get_tracked_buckets() const -{ - return _my->_tracked_buckets; -} - -uint32_t blockchain_statistics_plugin::get_max_history_per_bucket() const -{ - return _my->_maximum_history_per_bucket_size; -} - -} } // steem::blockchain_statistics - -STEEM_DEFINE_PLUGIN( blockchain_statistics, steem::blockchain_statistics::blockchain_statistics_plugin ); diff --git a/libraries/legacy_plugins/blockchain_statistics/include/steem/blockchain_statistics/blockchain_statistics_api.hpp b/libraries/legacy_plugins/blockchain_statistics/include/steem/blockchain_statistics/blockchain_statistics_api.hpp deleted file mode 100644 index f3aa555e..00000000 --- a/libraries/legacy_plugins/blockchain_statistics/include/steem/blockchain_statistics/blockchain_statistics_api.hpp +++ /dev/null @@ -1,169 +0,0 @@ -#pragma once - -#include - -#include - -namespace steem { namespace app { - struct api_context; -} } - -namespace steem { namespace blockchain_statistics { - -namespace detail -{ - class blockchain_statistics_api_impl; -} - -struct statistics -{ - uint32_t blocks = 0; ///< Blocks produced - uint32_t bandwidth = 0; ///< Bandwidth in bytes - uint32_t operations = 0; ///< Operations evaluated - uint32_t transactions = 0; ///< Transactions processed - uint32_t transfers = 0; ///< Account to account transfers - share_type steem_transferred = 0; ///< STEEM transferred from account to account - share_type sbd_transferred = 0; ///< SBD transferred from account to account - share_type sbd_paid_as_interest = 0; ///< SBD paid as interest - uint32_t accounts_created = 0; ///< Total accounts created - uint32_t paid_accounts_created = 0; ///< Accounts created with fee - uint32_t mined_accounts_created = 0; ///< Accounts mined for free - uint32_t total_comments= 0; ///< Total comments - uint32_t total_comment_edits = 0; ///< Edits to comments - uint32_t total_comments_deleted = 0; ///< Comments deleted - uint32_t root_comments = 0; ///< Top level root comments - uint32_t root_comment_edits = 0; ///< Edits to root comments - uint32_t root_comments_deleted = 0; ///< Root comments deleted - uint32_t replies = 0; ///< Replies to comments - uint32_t reply_edits = 0; ///< Edits to replies - uint32_t replies_deleted = 0; ///< Replies deleted - uint32_t total_votes = 0; ///< Total votes on all comments - uint32_t new_votes = 0; ///< New votes on comments - uint32_t changed_votes = 0; ///< Changed votes on comments - uint32_t total_root_votes = 0; ///< Total votes on root comments - uint32_t new_root_votes = 0; ///< New votes on root comments - uint32_t changed_root_votes = 0; ///< Changed votes on root comments - uint32_t total_reply_votes = 0; ///< Total votes on replies - uint32_t new_reply_votes = 0; ///< New votes on replies - uint32_t changed_reply_votes = 0; ///< Changed votes on replies - uint32_t payouts = 0; ///< Number of comment payouts - share_type sbd_paid_to_authors = 0; ///< Ammount of SBD paid to authors - share_type vests_paid_to_authors = 0; ///< Ammount of VESS paid to authors - share_type vests_paid_to_curators = 0; ///< Ammount of VESTS paid to curators - share_type liquidity_rewards_paid = 0; ///< Ammount of STEEM paid to market makers - uint32_t transfers_to_vesting = 0; ///< Transfers of STEEM into VESTS - share_type steem_vested = 0; ///< Ammount of STEEM vested - uint32_t new_vesting_withdrawal_requests = 0; ///< New vesting withdrawal requests - uint32_t modified_vesting_withdrawal_requests = 0; ///< Changes to vesting withdrawal requests - share_type vesting_withdraw_rate_delta = 0; - uint32_t vesting_withdrawals_processed = 0; ///< Number of vesting withdrawals - uint32_t finished_vesting_withdrawals = 0; ///< Processed vesting withdrawals that are now finished - share_type vests_withdrawn = 0; ///< Ammount of VESTS withdrawn to STEEM - share_type vests_transferred = 0; ///< Ammount of VESTS transferred to another account - uint32_t sbd_conversion_requests_created = 0; ///< SBD conversion requests created - share_type sbd_to_be_converted = 0; ///< Amount of SBD to be converted - uint32_t sbd_conversion_requests_filled = 0; ///< SBD conversion requests filled - share_type steem_converted = 0; ///< Amount of STEEM that was converted - uint32_t limit_orders_created = 0; ///< Limit orders created - uint32_t limit_orders_filled = 0; ///< Limit orders filled - uint32_t limit_orders_cancelled = 0; ///< Limit orders cancelled - uint32_t total_pow = 0; ///< POW submitted - uint128_t estimated_hashpower = 0; ///< Estimated average hashpower over interval - - statistics& operator += ( const bucket_object& b ); -}; - -class blockchain_statistics_api -{ - public: - blockchain_statistics_api( const steem::app::api_context& ctx ); - - void on_api_startup(); - - /** - * @brief Gets statistics over the time window length, interval, that contains time, open. - * @param open The opening time, or a time contained within the window. - * @param interval The size of the window for which statistics were aggregated. - * @returns Statistics for the window. - */ - statistics get_stats_for_time( fc::time_point_sec open, uint32_t interval )const; - - /** - * @brief Aggregates statistics over a time interval. - * @param start The beginning time of the window. - * @param stop The end time of the window. stop must take place after start. - * @returns Aggregated statistics over the interval. - */ - statistics get_stats_for_interval( fc::time_point_sec start, fc::time_point_sec end )const; - - /** - * @brief Returns lifetime statistics. - */ - statistics get_lifetime_stats()const; - - private: - std::shared_ptr< detail::blockchain_statistics_api_impl > my; -}; - -} } // steem::blockchain_statistics - -FC_REFLECT( steem::blockchain_statistics::statistics, - (blocks) - (bandwidth) - (operations) - (transactions) - (transfers) - (steem_transferred) - (sbd_transferred) - (sbd_paid_as_interest) - (accounts_created) - (paid_accounts_created) - (mined_accounts_created) - (total_comments) - (total_comment_edits) - (total_comments_deleted) - (root_comments) - (root_comment_edits) - (root_comments_deleted) - (replies) - (reply_edits) - (replies_deleted) - (total_votes) - (new_votes) - (changed_votes) - (total_root_votes) - (new_root_votes) - (changed_root_votes) - (total_reply_votes) - (new_reply_votes) - (changed_reply_votes) - (payouts) - (sbd_paid_to_authors) - (vests_paid_to_authors) - (vests_paid_to_curators) - (liquidity_rewards_paid) - (transfers_to_vesting) - (steem_vested) - (new_vesting_withdrawal_requests) - (modified_vesting_withdrawal_requests) - (vesting_withdraw_rate_delta) - (vesting_withdrawals_processed) - (finished_vesting_withdrawals) - (vests_withdrawn) - (vests_transferred) - (sbd_conversion_requests_created) - (sbd_to_be_converted) - (sbd_conversion_requests_filled) - (steem_converted) - (limit_orders_created) - (limit_orders_filled) - (limit_orders_cancelled) - (total_pow) - (estimated_hashpower) ) - - -FC_API( steem::blockchain_statistics::blockchain_statistics_api, - (get_stats_for_time) - (get_stats_for_interval) - (get_lifetime_stats) -) diff --git a/libraries/legacy_plugins/blockchain_statistics/include/steem/blockchain_statistics/blockchain_statistics_plugin.hpp b/libraries/legacy_plugins/blockchain_statistics/include/steem/blockchain_statistics/blockchain_statistics_plugin.hpp deleted file mode 100644 index d0a90ed2..00000000 --- a/libraries/legacy_plugins/blockchain_statistics/include/steem/blockchain_statistics/blockchain_statistics_plugin.hpp +++ /dev/null @@ -1,187 +0,0 @@ -#pragma once -#include - -#include - -#include - -// -// Plugins should #define their SPACE_ID's so plugins with -// conflicting SPACE_ID assignments can be compiled into the -// same binary (by simply re-assigning some of the conflicting #defined -// SPACE_ID's in a build script). -// -// Assignment of SPACE_ID's cannot be done at run-time because -// various template automagic depends on them being known at compile -// time. -// -#ifndef STEEM_BLOCKCHAIN_STATISTICS_SPACE_ID -#define STEEM_BLOCKCHAIN_STATISTICS_SPACE_ID 9 -#endif - -#ifndef STEEM_BLOCKCHAIN_STATISTICS_PLUGIN_NAME -#define STEEM_BLOCKCHAIN_STATISTICS_PLUGIN_NAME "chain_stats" -#endif - -namespace steem { namespace blockchain_statistics { - -using namespace steem::chain; -using app::application; - -enum blockchain_statistics_object_type -{ - bucket_object_type = ( STEEM_BLOCKCHAIN_STATISTICS_SPACE_ID << 8 ) -}; - -namespace detail -{ - class blockchain_statistics_plugin_impl; -} - -class blockchain_statistics_plugin : public steem::app::plugin -{ - public: - blockchain_statistics_plugin( application* app ); - virtual ~blockchain_statistics_plugin(); - - virtual std::string plugin_name()const override { return STEEM_BLOCKCHAIN_STATISTICS_PLUGIN_NAME; } - virtual void plugin_set_program_options( - boost::program_options::options_description& cli, - boost::program_options::options_description& cfg ) override; - virtual void plugin_initialize( const boost::program_options::variables_map& options ) override; - virtual void plugin_startup() override; - - const flat_set< uint32_t >& get_tracked_buckets() const; - uint32_t get_max_history_per_bucket() const; - - private: - friend class detail::blockchain_statistics_plugin_impl; - std::unique_ptr< detail::blockchain_statistics_plugin_impl > _my; -}; - -struct bucket_object : public object< bucket_object_type, bucket_object > -{ - template< typename Constructor, typename Allocator > - bucket_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - id_type id; - - fc::time_point_sec open; ///< Open time of the bucket - uint32_t seconds = 0; ///< Seconds accounted for in the bucket - uint32_t blocks = 0; ///< Blocks produced - uint32_t bandwidth = 0; ///< Bandwidth in bytes - uint32_t operations = 0; ///< Operations evaluated - uint32_t transactions = 0; ///< Transactions processed - uint32_t transfers = 0; ///< Account to account transfers - share_type steem_transferred = 0; ///< STEEM transferred from account to account - share_type sbd_transferred = 0; ///< SBD transferred from account to account - share_type sbd_paid_as_interest = 0; ///< SBD paid as interest - uint32_t paid_accounts_created = 0; ///< Accounts created with fee - uint32_t mined_accounts_created = 0; ///< Accounts mined for free - uint32_t root_comments = 0; ///< Top level root comments - uint32_t root_comment_edits = 0; ///< Edits to root comments - uint32_t root_comments_deleted = 0; ///< Root comments deleted - uint32_t replies = 0; ///< Replies to comments - uint32_t reply_edits = 0; ///< Edits to replies - uint32_t replies_deleted = 0; ///< Replies deleted - uint32_t new_root_votes = 0; ///< New votes on root comments - uint32_t changed_root_votes = 0; ///< Changed votes on root comments - uint32_t new_reply_votes = 0; ///< New votes on replies - uint32_t changed_reply_votes = 0; ///< Changed votes on replies - uint32_t payouts = 0; ///< Number of comment payouts - share_type sbd_paid_to_authors = 0; ///< Ammount of SBD paid to authors - share_type vests_paid_to_authors = 0; ///< Ammount of VESS paid to authors - share_type vests_paid_to_curators = 0; ///< Ammount of VESTS paid to curators - share_type liquidity_rewards_paid = 0; ///< Ammount of STEEM paid to market makers - uint32_t transfers_to_vesting = 0; ///< Transfers of STEEM into VESTS - share_type steem_vested = 0; ///< Ammount of STEEM vested - uint32_t new_vesting_withdrawal_requests = 0; ///< New vesting withdrawal requests - uint32_t modified_vesting_withdrawal_requests = 0; ///< Changes to vesting withdrawal requests - share_type vesting_withdraw_rate_delta = 0; - uint32_t vesting_withdrawals_processed = 0; ///< Number of vesting withdrawals - uint32_t finished_vesting_withdrawals = 0; ///< Processed vesting withdrawals that are now finished - share_type vests_withdrawn = 0; ///< Ammount of VESTS withdrawn to STEEM - share_type vests_transferred = 0; ///< Ammount of VESTS transferred to another account - uint32_t sbd_conversion_requests_created = 0; ///< SBD conversion requests created - share_type sbd_to_be_converted = 0; ///< Amount of SBD to be converted - uint32_t sbd_conversion_requests_filled = 0; ///< SBD conversion requests filled - share_type steem_converted = 0; ///< Amount of STEEM that was converted - uint32_t limit_orders_created = 0; ///< Limit orders created - uint32_t limit_orders_filled = 0; ///< Limit orders filled - uint32_t limit_orders_cancelled = 0; ///< Limit orders cancelled - uint32_t total_pow = 0; ///< POW submitted - uint128_t estimated_hashpower = 0; ///< Estimated average hashpower over interval -}; - -typedef oid< bucket_object > bucket_id_type; - -struct by_id; -struct by_bucket; -typedef multi_index_container< - bucket_object, - indexed_by< - ordered_unique< tag< by_id >, member< bucket_object, bucket_id_type, &bucket_object::id > >, - ordered_unique< tag< by_bucket >, - composite_key< bucket_object, - member< bucket_object, uint32_t, &bucket_object::seconds >, - member< bucket_object, fc::time_point_sec, &bucket_object::open > - > - > - >, - allocator< bucket_object > -> bucket_index; - -} } // steem::blockchain_statistics - -FC_REFLECT( steem::blockchain_statistics::bucket_object, - (id) - (open) - (seconds) - (blocks) - (bandwidth) - (operations) - (transactions) - (transfers) - (steem_transferred) - (sbd_transferred) - (sbd_paid_as_interest) - (paid_accounts_created) - (mined_accounts_created) - (root_comments) - (root_comment_edits) - (root_comments_deleted) - (replies) - (reply_edits) - (replies_deleted) - (new_root_votes) - (changed_root_votes) - (new_reply_votes) - (changed_reply_votes) - (payouts) - (sbd_paid_to_authors) - (vests_paid_to_authors) - (vests_paid_to_curators) - (liquidity_rewards_paid) - (transfers_to_vesting) - (steem_vested) - (new_vesting_withdrawal_requests) - (modified_vesting_withdrawal_requests) - (vesting_withdraw_rate_delta) - (vesting_withdrawals_processed) - (finished_vesting_withdrawals) - (vests_withdrawn) - (vests_transferred) - (sbd_conversion_requests_created) - (sbd_to_be_converted) - (sbd_conversion_requests_filled) - (steem_converted) - (limit_orders_created) - (limit_orders_filled) - (limit_orders_cancelled) - (total_pow) - (estimated_hashpower) -) -CHAINBASE_SET_INDEX_TYPE( steem::blockchain_statistics::bucket_object, steem::blockchain_statistics::bucket_index ) diff --git a/libraries/legacy_plugins/blockchain_statistics/plugin.json b/libraries/legacy_plugins/blockchain_statistics/plugin.json deleted file mode 100644 index a01553e0..00000000 --- a/libraries/legacy_plugins/blockchain_statistics/plugin.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugin_name": "blockchain_statistics", - "plugin_project": "steemit_blockchain_statistics" -} diff --git a/libraries/legacy_plugins/delayed_node/CMakeLists.txt b/libraries/legacy_plugins/delayed_node/CMakeLists.txt deleted file mode 100644 index ef6b41bb..00000000 --- a/libraries/legacy_plugins/delayed_node/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -file(GLOB HEADERS "include/steem/delayed_node/*.hpp") - -add_library( steem_delayed_node - delayed_node_plugin.cpp - ) - -target_link_libraries( steem_delayed_node steem_chain steem_protocol steem_app ) -target_include_directories( steem_delayed_node - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) - -if(MSVC) - set_source_files_properties( delayed_node_plugin.cpp PROPERTIES COMPILE_FLAGS "/bigobj" ) -endif(MSVC) - -install( TARGETS - steem_delayed_node - - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) diff --git a/libraries/legacy_plugins/delayed_node/delayed_node_plugin.cpp b/libraries/legacy_plugins/delayed_node/delayed_node_plugin.cpp deleted file mode 100644 index 78594445..00000000 --- a/libraries/legacy_plugins/delayed_node/delayed_node_plugin.cpp +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright (c) 2015 Cryptonomex, Inc., and contributors. - * - * The MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include - -#include - -#include -#include -#include - -#include -#include -#include -#include - - -namespace steem { namespace delayed_node { -namespace bpo = boost::program_options; - -namespace detail { -struct delayed_node_plugin_impl { - std::string remote_endpoint; - fc::http::websocket_client client; - std::shared_ptr client_connection; - fc::api database_api; - boost::signals2::scoped_connection client_connection_closed; - steem::chain::block_id_type last_received_remote_head; - steem::chain::block_id_type last_processed_remote_head; -}; -} - -delayed_node_plugin::delayed_node_plugin( application* app ) - : plugin( app ), my(new detail::delayed_node_plugin_impl) -{} - -delayed_node_plugin::~delayed_node_plugin() -{} - -void delayed_node_plugin::plugin_set_program_options(bpo::options_description& cli, bpo::options_description& cfg) -{ - cli.add_options() - ("trusted-node", boost::program_options::value(), "RPC endpoint of a trusted validating node (required)") - ; - cfg.add(cli); -} - -void delayed_node_plugin::connect() -{ - my->client_connection = std::make_shared(*my->client.connect(my->remote_endpoint)); - my->database_api = my->client_connection->get_remote_api(0); - my->client_connection_closed = my->client_connection->closed.connect([this] { - connection_failed(); - }); -} - -void delayed_node_plugin::plugin_initialize(const boost::program_options::variables_map& options) -{ - FC_ASSERT( options.count( "trusted-node" ) > 0 ); - my->remote_endpoint = "ws://" + options.at("trusted-node").as(); -} - -void delayed_node_plugin::sync_with_trusted_node() -{ - auto& db = database(); - uint32_t synced_blocks = 0; - uint32_t pass_count = 0; - while( true ) - { - steem::chain::dynamic_global_property_object remote_dpo = my->database_api->get_dynamic_global_properties(); - if( remote_dpo.last_irreversible_block_num <= db.head_block_num() ) - { - if( remote_dpo.last_irreversible_block_num < db.head_block_num() ) - { - wlog( "Trusted node seems to be behind delayed node" ); - } - if( synced_blocks > 1 ) - { - ilog( "Delayed node finished syncing ${n} blocks in ${k} passes", ("n", synced_blocks)("k", pass_count) ); - } - break; - } - pass_count++; - while( remote_dpo.last_irreversible_block_num > db.head_block_num() ) - { - fc::optional block = my->database_api->get_block( db.head_block_num()+1 ); - FC_ASSERT(block, "Trusted node claims it has blocks it doesn't actually have."); - ilog("Pushing block #${n}", ("n", block->block_num())); - db.push_block(*block); - synced_blocks++; - } - } -} - -void delayed_node_plugin::mainloop() -{ - while( true ) - { - try - { - fc::usleep( fc::microseconds( 296645 ) ); // wake up a little over 3Hz - - if( my->last_received_remote_head == my->last_processed_remote_head ) - continue; - - sync_with_trusted_node(); - my->last_processed_remote_head = my->last_received_remote_head; - } - catch( const fc::exception& e ) - { - elog("Error during connection: ${e}", ("e", e.to_detail_string())); - } - } -} - -void delayed_node_plugin::plugin_startup() -{ - fc::async([this]() - { - mainloop(); - }); - - try - { - connect(); - my->database_api->set_block_applied_callback([this]( const fc::variant& block_id ) - { - fc::from_variant( block_id, my->last_received_remote_head ); - } ); - return; - } - catch (const fc::exception& e) - { - elog("Error during connection: ${e}", ("e", e.to_detail_string())); - } - fc::async([this]{connection_failed();}); -} - -void delayed_node_plugin::connection_failed() -{ - elog("Connection to trusted node failed; retrying in 5 seconds..."); - fc::schedule([this]{connect();}, fc::time_point::now() + fc::seconds(5)); -} - -} } - -STEEM_DEFINE_PLUGIN( delayed_node, steem::delayed_node::delayed_node_plugin ) diff --git a/libraries/legacy_plugins/delayed_node/plugin.json b/libraries/legacy_plugins/delayed_node/plugin.json deleted file mode 100644 index d2db4be1..00000000 --- a/libraries/legacy_plugins/delayed_node/plugin.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugin_name": "delayed_node", - "plugin_project": "steemit_delayed_node" -} diff --git a/libraries/legacy_plugins/private_message/CMakeLists.txt b/libraries/legacy_plugins/private_message/CMakeLists.txt deleted file mode 100644 index f9f46226..00000000 --- a/libraries/legacy_plugins/private_message/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -file(GLOB HEADERS "include/steem/private_message/*.hpp") - -add_library( steem_private_message - private_message_plugin.cpp - ) - -target_link_libraries( steem_private_message steem_chain steem_protocol steem_app ) -target_include_directories( steem_private_message - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) - -install( TARGETS - steem_private_message - - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) diff --git a/libraries/legacy_plugins/private_message/include/steem/private_message/private_message_evaluators.hpp b/libraries/legacy_plugins/private_message/include/steem/private_message/private_message_evaluators.hpp deleted file mode 100644 index be0994f6..00000000 --- a/libraries/legacy_plugins/private_message/include/steem/private_message/private_message_evaluators.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#include - -#include -#include - -namespace steem { namespace private_message { - -STEEM_DEFINE_PLUGIN_EVALUATOR( private_message_plugin, steem::private_message::private_message_plugin_operation, private_message ) - -} } diff --git a/libraries/legacy_plugins/private_message/include/steem/private_message/private_message_operations.hpp b/libraries/legacy_plugins/private_message/include/steem/private_message/private_message_operations.hpp deleted file mode 100644 index 196c236f..00000000 --- a/libraries/legacy_plugins/private_message/include/steem/private_message/private_message_operations.hpp +++ /dev/null @@ -1,33 +0,0 @@ - -#pragma once - -#include -#include - -#include - -#include -#include -#include - -namespace steem { namespace private_message { - -struct private_message_operation : public steem::protocol::base_operation -{ - protocol::account_name_type from; - protocol::account_name_type to; - protocol::public_key_type from_memo_key; - protocol::public_key_type to_memo_key; - uint64_t sent_time = 0; /// used as seed to secret generation - uint32_t checksum = 0; - std::vector encrypted_message; -}; - -typedef fc::static_variant< private_message_operation > private_message_plugin_operation; - -} } - -FC_REFLECT( steem::private_message::private_message_operation, (from)(to)(from_memo_key)(to_memo_key)(sent_time)(checksum)(encrypted_message) ) - -STEEM_DECLARE_OPERATION_TYPE( steem::private_message::private_message_plugin_operation ) -FC_REFLECT_TYPENAME( steem::private_message::private_message_plugin_operation ) diff --git a/libraries/legacy_plugins/private_message/include/steem/private_message/private_message_plugin.hpp b/libraries/legacy_plugins/private_message/include/steem/private_message/private_message_plugin.hpp deleted file mode 100644 index 9d1c6bf7..00000000 --- a/libraries/legacy_plugins/private_message/include/steem/private_message/private_message_plugin.hpp +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (c) 2015 Cryptonomex, Inc., and contributors. - * - * The MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#pragma once - -#include -#include - -#include - -#include -#include - -namespace steem { namespace private_message { -using namespace chain; -using app::application; - -// -// Plugins should #define their SPACE_ID's so plugins with -// conflicting SPACE_ID assignments can be compiled into the -// same binary (by simply re-assigning some of the conflicting #defined -// SPACE_ID's in a build script). -// -// Assignment of SPACE_ID's cannot be done at run-time because -// various template automagic depends on them being known at compile -// time. -// -#ifndef STEEM_PRIVATE_MESSAGE_SPACE_ID -#define STEEM_PRIVATE_MESSAGE_SPACE_ID 6 -#endif - -#define STEEM_PRIVATE_MESSAGE_COP_ID 777 - -enum private_message_object_type -{ - message_object_type = ( STEEM_PRIVATE_MESSAGE_SPACE_ID << 8 ) -}; - - -namespace detail -{ - class private_message_plugin_impl; -} - -struct message_body -{ - fc::time_point thread_start; /// the sent_time of the original message, if any - string subject; - string body; - string json_meta; - flat_set cc; -}; - - - -class message_object : public object< message_object_type, message_object > -{ - public: - template< typename Constructor, typename Allocator > - message_object( Constructor&& c, allocator< Allocator > a ) : - encrypted_message( a ) - { - c( *this ); - } - - id_type id; - - account_name_type from; - account_name_type to; - public_key_type from_memo_key; - public_key_type to_memo_key; - uint64_t sent_time = 0; /// used as seed to secret generation - time_point_sec receive_time; /// time received by blockchain - uint32_t checksum = 0; - buffer_type encrypted_message; -}; - -typedef message_object::id_type message_id_type; - -struct message_api_obj -{ - message_api_obj( const message_object& o ) : - id( o.id ), - from( o.from ), - to( o.to ), - from_memo_key( o.from_memo_key ), - to_memo_key( o.to_memo_key ), - sent_time( o.sent_time ), - receive_time( o.receive_time ), - checksum( o.checksum ), - encrypted_message( o.encrypted_message.begin(), o.encrypted_message.end() ) - {} - - message_api_obj(){} - - message_id_type id; - account_name_type from; - account_name_type to; - public_key_type from_memo_key; - public_key_type to_memo_key; - uint64_t sent_time; - time_point_sec receive_time; - uint32_t checksum; - vector< char > encrypted_message; -}; - -struct extended_message_object : public message_api_obj -{ - extended_message_object() {} - extended_message_object( const message_api_obj& o ):message_api_obj( o ) {} - - message_body message; -}; - -struct by_to_date; -struct by_from_date; - -using namespace boost::multi_index; - -typedef multi_index_container< - message_object, - indexed_by< - ordered_unique< tag< by_id >, member< message_object, message_id_type, &message_object::id > >, - ordered_unique< tag< by_to_date >, - composite_key< message_object, - member< message_object, account_name_type, &message_object::to >, - member< message_object, time_point_sec, &message_object::receive_time >, - member< message_object, message_id_type, &message_object::id > - >, - composite_key_compare< std::less< string >, std::greater< time_point_sec >, std::less< message_id_type > > - >, - ordered_unique< tag< by_from_date >, - composite_key< message_object, - member< message_object, account_name_type, &message_object::from >, - member< message_object, time_point_sec, &message_object::receive_time >, - member< message_object, message_id_type, &message_object::id > - >, - composite_key_compare< std::less< string >, std::greater< time_point_sec >, std::less< message_id_type > > - > - >, - allocator< message_object > -> message_index; - - -/** - * This plugin scans the blockchain for custom operations containing a valid message and authorized - * by the posting key. - * - */ -class private_message_plugin : public steem::app::plugin -{ - public: - private_message_plugin( application* app ); - virtual ~private_message_plugin(); - - std::string plugin_name()const override; - virtual void plugin_set_program_options( - boost::program_options::options_description& cli, - boost::program_options::options_description& cfg) override; - virtual void plugin_initialize(const boost::program_options::variables_map& options) override; - virtual void plugin_startup() override; - - flat_map tracked_accounts()const; /// map start_range to end_range - - friend class detail::private_message_plugin_impl; - std::unique_ptr my; -}; - -class private_message_api : public std::enable_shared_from_this { - public: - private_message_api(){}; - private_message_api(const app::api_context& ctx):_app(&ctx.app){ - ilog( "creating private message api" ); - } - void on_api_startup(){ - wlog( "on private_message api startup" ); - } - - /** - * - */ - vector< message_api_obj > get_inbox( string to, time_point newest, uint16_t limit )const; - vector< message_api_obj > get_outbox( string from, time_point newest, uint16_t limit )const; - - private: - app::application* _app = nullptr; -}; - -} } //steem::private_message - -FC_API( steem::private_message::private_message_api, (get_inbox)(get_outbox) ); - -FC_REFLECT( steem::private_message::message_body, (thread_start)(subject)(body)(json_meta)(cc) ); - -FC_REFLECT( steem::private_message::message_object, (id)(from)(to)(from_memo_key)(to_memo_key)(sent_time)(receive_time)(checksum)(encrypted_message) ); -CHAINBASE_SET_INDEX_TYPE( steem::private_message::message_object, steem::private_message::message_index ); - -FC_REFLECT( steem::private_message::message_api_obj, (id)(from)(to)(from_memo_key)(to_memo_key)(sent_time)(receive_time)(checksum)(encrypted_message) ); - -FC_REFLECT_DERIVED( steem::private_message::extended_message_object, (steem::private_message::message_api_obj), (message) ); diff --git a/libraries/legacy_plugins/private_message/plugin.json b/libraries/legacy_plugins/private_message/plugin.json deleted file mode 100644 index 9cf317f3..00000000 --- a/libraries/legacy_plugins/private_message/plugin.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugin_name": "private_message", - "plugin_project": "steemit_private_message" -} diff --git a/libraries/legacy_plugins/private_message/private_message_plugin.cpp b/libraries/legacy_plugins/private_message/private_message_plugin.cpp deleted file mode 100644 index c7be3e2a..00000000 --- a/libraries/legacy_plugins/private_message/private_message_plugin.cpp +++ /dev/null @@ -1,190 +0,0 @@ -/* - * Copyright (c) 2015 Cryptonomex, Inc., and contributors. - * - * The MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include -#include -#include - -#include - -#include - -#include -#include -#include - -#include -#include - -namespace steem { namespace private_message { - -namespace detail -{ - -class private_message_plugin_impl -{ - public: - private_message_plugin_impl(private_message_plugin& _plugin); - virtual ~private_message_plugin_impl(); - - steem::chain::database& database() - { - return _self.database(); - } - - private_message_plugin& _self; - std::shared_ptr< generic_custom_operation_interpreter< steem::private_message::private_message_plugin_operation > > _custom_operation_interpreter; - flat_map _tracked_accounts; -}; - -private_message_plugin_impl::private_message_plugin_impl( private_message_plugin& _plugin ) - : _self( _plugin ) -{ - _custom_operation_interpreter = std::make_shared< generic_custom_operation_interpreter< steem::private_message::private_message_plugin_operation > >( database() ); - - _custom_operation_interpreter->register_evaluator< private_message_evaluator >( &_self ); - - database().set_custom_operation_interpreter( _self.plugin_name(), _custom_operation_interpreter ); - return; -} - -private_message_plugin_impl::~private_message_plugin_impl() -{ - return; -} - -} // end namespace detail - -void private_message_evaluator::do_apply( const private_message_operation& pm ) -{ - database& d = db(); - - const flat_map& tracked_accounts = _plugin->my->_tracked_accounts; - - auto to_itr = tracked_accounts.lower_bound(pm.to); - auto from_itr = tracked_accounts.lower_bound(pm.from); - - FC_ASSERT( pm.from != pm.to ); - FC_ASSERT( pm.from_memo_key != pm.to_memo_key ); - FC_ASSERT( pm.sent_time != 0 ); - FC_ASSERT( pm.encrypted_message.size() >= 32 ); - - if( !tracked_accounts.size() || - (to_itr != tracked_accounts.end() && pm.to >= to_itr->first && pm.to <= to_itr->second) || - (from_itr != tracked_accounts.end() && pm.from >= from_itr->first && pm.from <= from_itr->second) ) - { - d.create( [&]( message_object& pmo ) - { - pmo.from = pm.from; - pmo.to = pm.to; - pmo.from_memo_key = pm.from_memo_key; - pmo.to_memo_key = pm.to_memo_key; - pmo.checksum = pm.checksum; - pmo.sent_time = pm.sent_time; - pmo.receive_time = d.head_block_time(); - pmo.encrypted_message.resize( pm.encrypted_message.size() ); - std::copy( pm.encrypted_message.begin(), pm.encrypted_message.end(), pmo.encrypted_message.begin() ); - } ); - } -} - -private_message_plugin::private_message_plugin( application* app ) - : plugin( app ), my( new detail::private_message_plugin_impl(*this) ) -{ -} - -private_message_plugin::~private_message_plugin() -{ -} - -std::string private_message_plugin::plugin_name()const -{ - return "private_message"; -} - -void private_message_plugin::plugin_set_program_options( - boost::program_options::options_description& cli, - boost::program_options::options_description& cfg - ) -{ - cli.add_options() - ("pm-account-range", boost::program_options::value>()->composing()->multitoken(), "Defines a range of accounts to private messages to/from as a json pair [\"from\",\"to\"] [from,to)") - ; - cfg.add(cli); -} - -void private_message_plugin::plugin_initialize(const boost::program_options::variables_map& options) -{ - ilog("Intializing private message plugin" ); - chain::database& db = database(); - add_plugin_index< message_index >(db); - - app().register_api_factory("private_message_api"); - - typedef pair pairstring; - STEEM_LOAD_VALUE_SET(options, "pm-accounts", my->_tracked_accounts, pairstring); -} - -vector< message_api_obj > private_message_api::get_inbox( string to, time_point newest, uint16_t limit )const { - FC_ASSERT( limit <= 100 ); - vector< message_api_obj > result; - const auto& idx = _app->chain_database()->get_index< message_index >().indices().get< by_to_date >(); - auto itr = idx.lower_bound( std::make_tuple( to, newest ) ); - while( itr != idx.end() && limit && itr->to == to ) { - result.push_back(*itr); - ++itr; - --limit; - } - - return result; -} - -vector< message_api_obj > private_message_api::get_outbox( string from, time_point newest, uint16_t limit )const { - FC_ASSERT( limit <= 100 ); - vector< message_api_obj > result; - const auto& idx = _app->chain_database()->get_index< message_index >().indices().get< by_from_date >(); - - auto itr = idx.lower_bound( std::make_tuple( from, newest ) ); - while( itr != idx.end() && limit && itr->from == from ) { - result.push_back(*itr); - ++itr; - --limit; - } - return result; -} - -void private_message_plugin::plugin_startup() -{ -} - -flat_map private_message_plugin::tracked_accounts() const -{ - return my->_tracked_accounts; -} - -} } - -STEEM_DEFINE_PLUGIN( private_message, steem::private_message::private_message_plugin ) - -STEEM_DEFINE_OPERATION_TYPE( steem::private_message::private_message_plugin_operation ) diff --git a/libraries/legacy_plugins/raw_block/CMakeLists.txt b/libraries/legacy_plugins/raw_block/CMakeLists.txt deleted file mode 100644 index b4d15cc2..00000000 --- a/libraries/legacy_plugins/raw_block/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -file(GLOB HEADERS "include/steem/plugins/raw_block/*.hpp") - -add_library( steem_raw_block - ${HEADERS} - raw_block_plugin.cpp - raw_block_api.cpp - ) - -target_link_libraries( steem_raw_block steem_app steem_chain steem_protocol fc ) -target_include_directories( steem_raw_block - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) diff --git a/libraries/legacy_plugins/raw_block/include/steem/plugins/raw_block/raw_block_api.hpp b/libraries/legacy_plugins/raw_block/include/steem/plugins/raw_block/raw_block_api.hpp deleted file mode 100644 index b1cf4b45..00000000 --- a/libraries/legacy_plugins/raw_block/include/steem/plugins/raw_block/raw_block_api.hpp +++ /dev/null @@ -1,61 +0,0 @@ - -#pragma once - -#include - -#include - -namespace steem { namespace app { - struct api_context; -} } - -namespace steem { namespace plugin { namespace raw_block { - -namespace detail { -class raw_block_api_impl; -} - -struct get_raw_block_args -{ - uint32_t block_num = 0; -}; - -struct get_raw_block_result -{ - chain::block_id_type block_id; - chain::block_id_type previous; - fc::time_point_sec timestamp; - std::string raw_block; -}; - -class raw_block_api -{ - public: - raw_block_api( const steem::app::api_context& ctx ); - - void on_api_startup(); - - get_raw_block_result get_raw_block( get_raw_block_args args ); - void push_raw_block( std::string block_b64 ); - - private: - std::shared_ptr< detail::raw_block_api_impl > my; -}; - -} } } - -FC_REFLECT( steem::plugin::raw_block::get_raw_block_args, - (block_num) - ) - -FC_REFLECT( steem::plugin::raw_block::get_raw_block_result, - (block_id) - (previous) - (timestamp) - (raw_block) - ) - -FC_API( steem::plugin::raw_block::raw_block_api, - (get_raw_block) - (push_raw_block) - ) diff --git a/libraries/legacy_plugins/raw_block/include/steem/plugins/raw_block/raw_block_plugin.hpp b/libraries/legacy_plugins/raw_block/include/steem/plugins/raw_block/raw_block_plugin.hpp deleted file mode 100644 index 929df9ed..00000000 --- a/libraries/legacy_plugins/raw_block/include/steem/plugins/raw_block/raw_block_plugin.hpp +++ /dev/null @@ -1,22 +0,0 @@ - -#pragma once - -#include - -namespace steem { namespace plugin { namespace raw_block { - -using steem::app::application; - -class raw_block_plugin : public steem::app::plugin -{ - public: - raw_block_plugin( application* app ); - virtual ~raw_block_plugin(); - - virtual std::string plugin_name()const override; - virtual void plugin_initialize( const boost::program_options::variables_map& options ) override; - virtual void plugin_startup() override; - virtual void plugin_shutdown() override; -}; - -} } } diff --git a/libraries/legacy_plugins/raw_block/plugin.json b/libraries/legacy_plugins/raw_block/plugin.json deleted file mode 100644 index 2c8d4197..00000000 --- a/libraries/legacy_plugins/raw_block/plugin.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "plugin_name": "raw_block", - "plugin_project": "steemit_raw_block" -} diff --git a/libraries/legacy_plugins/raw_block/raw_block_api.cpp b/libraries/legacy_plugins/raw_block/raw_block_api.cpp deleted file mode 100644 index 25d091ce..00000000 --- a/libraries/legacy_plugins/raw_block/raw_block_api.cpp +++ /dev/null @@ -1,72 +0,0 @@ - -#include -#include - -#include -#include - -namespace steem { namespace plugin { namespace raw_block { - -namespace detail { - -class raw_block_api_impl -{ - public: - raw_block_api_impl( steem::app::application& _app ); - - std::shared_ptr< steem::plugin::raw_block::raw_block_plugin > get_plugin(); - - steem::app::application& app; -}; - -raw_block_api_impl::raw_block_api_impl( steem::app::application& _app ) : app( _app ) -{} - -std::shared_ptr< steem::plugin::raw_block::raw_block_plugin > raw_block_api_impl::get_plugin() -{ - return app.get_plugin< raw_block_plugin >( "raw_block" ); -} - -} // detail - -raw_block_api::raw_block_api( const steem::app::api_context& ctx ) -{ - my = std::make_shared< detail::raw_block_api_impl >(ctx.app); -} - -get_raw_block_result raw_block_api::get_raw_block( get_raw_block_args args ) -{ - get_raw_block_result result; - std::shared_ptr< steem::chain::database > db = my->app.chain_database(); - - fc::optional block = db->fetch_block_by_number( args.block_num ); - if( !block.valid() ) - { - return result; - } - std::vector serialized_block = fc::raw::pack( *block ); - result.raw_block = fc::base64_encode( std::string( - &serialized_block[0], &serialized_block[0] + serialized_block.size()) ); - result.block_id = block->id(); - result.previous = block->previous; - result.timestamp = block->timestamp; - return result; -} - -void raw_block_api::push_raw_block( std::string block_b64 ) -{ - std::shared_ptr< steem::chain::database > db = my->app.chain_database(); - - std::string block_bin = fc::base64_decode( block_b64 ); - fc::datastream ds( block_bin.c_str(), block_bin.size() ); - chain::signed_block block; - fc::raw::unpack( ds, block ); - - db->push_block( block ); - - return; -} - -void raw_block_api::on_api_startup() { } - -} } } // steem::plugin::raw_block diff --git a/libraries/legacy_plugins/raw_block/raw_block_plugin.cpp b/libraries/legacy_plugins/raw_block/raw_block_plugin.cpp deleted file mode 100644 index 479bcb39..00000000 --- a/libraries/legacy_plugins/raw_block/raw_block_plugin.cpp +++ /dev/null @@ -1,33 +0,0 @@ - - -#include -#include - -#include - -namespace steem { namespace plugin { namespace raw_block { - -raw_block_plugin::raw_block_plugin( application* app ) : plugin( app ) {} -raw_block_plugin::~raw_block_plugin() {} - -std::string raw_block_plugin::plugin_name()const -{ - return "raw_block"; -} - -void raw_block_plugin::plugin_initialize( const boost::program_options::variables_map& options ) -{ -} - -void raw_block_plugin::plugin_startup() -{ - app().register_api_factory< raw_block_api >( "raw_block_api" ); -} - -void raw_block_plugin::plugin_shutdown() -{ -} - -} } } // steem::plugin::raw_block - -STEEM_DEFINE_PLUGIN( raw_block, steem::plugin::raw_block::raw_block_plugin ) diff --git a/libraries/manifest/CMakeLists.txt b/libraries/manifest/CMakeLists.txt index e8f58400..859bab57 100644 --- a/libraries/manifest/CMakeLists.txt +++ b/libraries/manifest/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB HEADERS "include/steem/plugins/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/*.hpp") # helpful hints from # https://blog.kangz.net/posts/2016/05/26/integrating-a-code-generator-with-cmake/ @@ -14,9 +14,15 @@ file(GLOB HEADERS "include/steem/plugins/*.hpp") # This way it will be properly regenerated. # +if(WIN32) + set( PYTHON_EXE "python") +else() + set( PYTHON_EXE "python3") +endif() + execute_process( COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} - python3 -m steem_manifest.plugins + ${PYTHON_EXE} -m sophiatx_manifest.plugins ${CMAKE_CURRENT_SOURCE_DIR}/../plugins -o ${CMAKE_CURRENT_BINARY_DIR}/template_context/plugins.json --print-dependencies @@ -31,11 +37,11 @@ message( STATUS "PLUGINS_DEPS: ${PLUGINS_DEPS}" ) add_custom_command( COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} - python3 -m steem_manifest.plugins + ${PYTHON_EXE} -m sophiatx_manifest.plugins ${CMAKE_CURRENT_SOURCE_DIR}/../plugins -o ${CMAKE_CURRENT_BINARY_DIR}/template_context/plugins.json OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/template_context/plugins.json - DEPENDS ${PLUGINS_DEPS} ${CMAKE_CURRENT_SOURCE_DIR}/steem_manifest/plugins.py + DEPENDS ${PLUGINS_DEPS} ${CMAKE_CURRENT_SOURCE_DIR}/sophiatx_manifest/plugins.py ) ############################################################################## @@ -46,7 +52,7 @@ add_custom_command( execute_process( COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} - python3 -m steem_manifest.build + ${PYTHON_EXE} -m sophiatx_manifest.build -j ${CMAKE_CURRENT_BINARY_DIR}/template_context -t ${CMAKE_CURRENT_SOURCE_DIR}/templates -o ${CMAKE_CURRENT_BINARY_DIR}/gensrc @@ -62,7 +68,7 @@ message( STATUS "MANIFEST_DEPS: ${MANIFEST_DEPS}" ) execute_process( COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} - python3 -m steem_manifest.build + ${PYTHON_EXE} -m sophiatx_manifest.build -j ${CMAKE_CURRENT_BINARY_DIR}/template_context -t ${CMAKE_CURRENT_SOURCE_DIR}/templates -o ${CMAKE_CURRENT_BINARY_DIR}/gensrc @@ -78,12 +84,12 @@ message( STATUS "MANIFEST_OUTPUTS: ${MANIFEST_OUTPUTS}" ) add_custom_command( COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} - python3 -m steem_manifest.build + ${PYTHON_EXE} -m sophiatx_manifest.build -j ${CMAKE_CURRENT_BINARY_DIR}/template_context -t ${CMAKE_CURRENT_SOURCE_DIR}/templates -o ${CMAKE_CURRENT_BINARY_DIR}/gensrc OUTPUT ${MANIFEST_OUTPUTS} - DEPENDS ${MANIFEST_DEPS} ${CMAKE_CURRENT_SOURCE_DIR}/steem_manifest/build.py + DEPENDS ${MANIFEST_DEPS} ${CMAKE_CURRENT_SOURCE_DIR}/sophiatx_manifest/build.py ) ############################################################################## @@ -94,14 +100,14 @@ add_custom_command( execute_process( COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} - python3 -m steem_manifest.plugins + ${PYTHON_EXE} -m sophiatx_manifest.plugins ${CMAKE_CURRENT_SOURCE_DIR}/../plugins -o ${CMAKE_CURRENT_BINARY_DIR}/template_context/plugins.json ) execute_process( COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} - python3 -m steem_manifest.build + ${PYTHON_EXE} -m sophiatx_manifest.build -j ${CMAKE_CURRENT_BINARY_DIR}/template_context -t ${CMAKE_CURRENT_SOURCE_DIR}/templates -o ${CMAKE_CURRENT_BINARY_DIR}/gensrc diff --git a/libraries/manifest/gensrc/plugins/CMakeLists.txt b/libraries/manifest/gensrc/plugins/CMakeLists.txt index 83b057fd..43dd6940 100644 --- a/libraries/manifest/gensrc/plugins/CMakeLists.txt +++ b/libraries/manifest/gensrc/plugins/CMakeLists.txt @@ -1,22 +1,20 @@ -add_library( steem_plugins +add_library( sophiatx_plugins mf_plugins.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/include/steem/manifest/plugins.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/sophiatx/manifest/plugins.hpp ) -target_link_libraries( steem_plugins appbase fc +target_link_libraries( sophiatx_plugins appbase fc smt_test_plugin witness_plugin - follow_api_plugin - account_history_api_plugin - witness_api_plugin + custom_api_plugin - market_history_api_plugin + witness_api_plugin network_broadcast_api_plugin @@ -24,8 +22,6 @@ target_link_libraries( steem_plugins appbase fc chain_api_plugin - tags_api_plugin - account_by_key_api_plugin block_api_plugin @@ -36,14 +32,10 @@ target_link_libraries( steem_plugins appbase fc account_history_plugin - follow_plugin - chain_plugin debug_node_plugin - tags_plugin - webserver_plugin p2p_plugin @@ -52,16 +44,14 @@ target_link_libraries( steem_plugins appbase fc account_by_key_plugin - market_history_plugin - ) -target_include_directories( steem_plugins +target_include_directories( sophiatx_plugins PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) INSTALL( TARGETS - steem_plugins + sophiatx_plugins RUNTIME DESTINATION bin LIBRARY DESTINATION lib diff --git a/libraries/manifest/gensrc/plugins/include/steem/manifest/plugins.hpp b/libraries/manifest/gensrc/plugins/include/sophiatx/manifest/plugins.hpp similarity index 71% rename from libraries/manifest/gensrc/plugins/include/steem/manifest/plugins.hpp rename to libraries/manifest/gensrc/plugins/include/sophiatx/manifest/plugins.hpp index ca48f804..42248874 100644 --- a/libraries/manifest/gensrc/plugins/include/steem/manifest/plugins.hpp +++ b/libraries/manifest/gensrc/plugins/include/sophiatx/manifest/plugins.hpp @@ -5,7 +5,7 @@ #include #include -namespace steem { namespace plugins { +namespace sophiatx { namespace plugins { void register_plugins(); diff --git a/libraries/manifest/gensrc/plugins/mf_plugins.cpp b/libraries/manifest/gensrc/plugins/mf_plugins.cpp index 9bea3daa..e3d3e163 100644 --- a/libraries/manifest/gensrc/plugins/mf_plugins.cpp +++ b/libraries/manifest/gensrc/plugins/mf_plugins.cpp @@ -1,110 +1,90 @@ #include #include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include +#include -#include -#include - -#include - -#include - -#include - - -namespace steem { namespace plugins { +namespace sophiatx { namespace plugins { void register_plugins() { - appbase::app().register_plugin< steem::plugins::smt_test::smt_test_plugin >(); - - appbase::app().register_plugin< steem::plugins::witness::witness_plugin >(); - - appbase::app().register_plugin< steem::plugins::follow::follow_api_plugin >(); - - appbase::app().register_plugin< steem::plugins::account_history::account_history_api_plugin >(); - - appbase::app().register_plugin< steem::plugins::witness::witness_api_plugin >(); - - appbase::app().register_plugin< steem::plugins::market_history::market_history_api_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::smt_test::smt_test_plugin >(); - appbase::app().register_plugin< steem::plugins::network_broadcast_api::network_broadcast_api_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::witness::witness_plugin >(); - appbase::app().register_plugin< steem::plugins::database_api::database_api_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::account_history::account_history_api_plugin >(); - appbase::app().register_plugin< steem::plugins::chain::chain_api_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::custom::custom_api_plugin >(); - appbase::app().register_plugin< steem::plugins::tags::tags_api_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::witness::witness_api_plugin >(); - appbase::app().register_plugin< steem::plugins::account_by_key::account_by_key_api_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::network_broadcast_api::network_broadcast_api_plugin >(); - appbase::app().register_plugin< steem::plugins::block_api::block_api_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::database_api::database_api_plugin >(); - appbase::app().register_plugin< steem::plugins::debug_node::debug_node_api_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::chain::chain_api_plugin >(); - appbase::app().register_plugin< steem::plugins::condenser_api::condenser_api_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::account_by_key::account_by_key_api_plugin >(); - appbase::app().register_plugin< steem::plugins::account_history::account_history_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::block_api::block_api_plugin >(); - appbase::app().register_plugin< steem::plugins::follow::follow_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::debug_node::debug_node_api_plugin >(); - appbase::app().register_plugin< steem::plugins::chain::chain_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::condenser_api::condenser_api_plugin >(); - appbase::app().register_plugin< steem::plugins::debug_node::debug_node_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::account_history::account_history_plugin >(); - appbase::app().register_plugin< steem::plugins::tags::tags_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::chain::chain_plugin >(); - appbase::app().register_plugin< steem::plugins::webserver::webserver_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::debug_node::debug_node_plugin >(); - appbase::app().register_plugin< steem::plugins::p2p::p2p_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::webserver::webserver_plugin >(); - appbase::app().register_plugin< steem::plugins::block_log_info::block_log_info_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::p2p::p2p_plugin >(); - appbase::app().register_plugin< steem::plugins::account_by_key::account_by_key_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::block_log_info::block_log_info_plugin >(); - appbase::app().register_plugin< steem::plugins::market_history::market_history_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::account_by_key::account_by_key_plugin >(); } diff --git a/libraries/manifest/templates/plugins/include/steem/manifest/plugins.hpp b/libraries/manifest/include/sophiatx/manifest/plugins.hpp similarity index 71% rename from libraries/manifest/templates/plugins/include/steem/manifest/plugins.hpp rename to libraries/manifest/include/sophiatx/manifest/plugins.hpp index ca48f804..42248874 100644 --- a/libraries/manifest/templates/plugins/include/steem/manifest/plugins.hpp +++ b/libraries/manifest/include/sophiatx/manifest/plugins.hpp @@ -5,7 +5,7 @@ #include #include -namespace steem { namespace plugins { +namespace sophiatx { namespace plugins { void register_plugins(); diff --git a/libraries/manifest/steem_manifest/__init__.py b/libraries/manifest/sophiatx_manifest/__init__.py similarity index 100% rename from libraries/manifest/steem_manifest/__init__.py rename to libraries/manifest/sophiatx_manifest/__init__.py diff --git a/libraries/manifest/steem_manifest/build.py b/libraries/manifest/sophiatx_manifest/build.py similarity index 100% rename from libraries/manifest/steem_manifest/build.py rename to libraries/manifest/sophiatx_manifest/build.py diff --git a/libraries/manifest/steem_manifest/plugins.py b/libraries/manifest/sophiatx_manifest/plugins.py similarity index 100% rename from libraries/manifest/steem_manifest/plugins.py rename to libraries/manifest/sophiatx_manifest/plugins.py diff --git a/libraries/manifest/steem_manifest/__pycache__/__init__.cpython-36.pyc b/libraries/manifest/steem_manifest/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 1bdc8383..00000000 Binary files a/libraries/manifest/steem_manifest/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/libraries/manifest/steem_manifest/__pycache__/build.cpython-36.pyc b/libraries/manifest/steem_manifest/__pycache__/build.cpython-36.pyc deleted file mode 100644 index 94630345..00000000 Binary files a/libraries/manifest/steem_manifest/__pycache__/build.cpython-36.pyc and /dev/null differ diff --git a/libraries/manifest/steem_manifest/__pycache__/plugins.cpython-36.pyc b/libraries/manifest/steem_manifest/__pycache__/plugins.cpython-36.pyc deleted file mode 100644 index e88f8f84..00000000 Binary files a/libraries/manifest/steem_manifest/__pycache__/plugins.cpython-36.pyc and /dev/null differ diff --git a/libraries/manifest/template_context/plugins.json b/libraries/manifest/template_context/plugins.json index c33f4914..1e95bad3 100644 --- a/libraries/manifest/template_context/plugins.json +++ b/libraries/manifest/template_context/plugins.json @@ -1 +1 @@ -{"plugins": [{"plugin_name": "smt_test", "plugin_namespace": "smt_test", "plugin_project": "smt_test_plugin"}, {"plugin_name": "witness", "plugin_namespace": "witness", "plugin_project": "witness_plugin"}, {"plugin_name": "follow_api", "plugin_namespace": "follow", "plugin_project": "follow_api_plugin"}, {"plugin_name": "account_history_api", "plugin_namespace": "account_history", "plugin_project": "account_history_api_plugin"}, {"plugin_name": "witness_api", "plugin_namespace": "witness", "plugin_project": "witness_api_plugin"}, {"plugin_name": "market_history_api", "plugin_namespace": "market_history", "plugin_project": "market_history_api_plugin"}, {"plugin_name": "network_broadcast_api", "plugin_namespace": "network_broadcast_api", "plugin_project": "network_broadcast_api_plugin"}, {"plugin_name": "database_api", "plugin_namespace": "database_api", "plugin_project": "database_api_plugin"}, {"plugin_name": "chain_api", "plugin_namespace": "chain", "plugin_project": "chain_api_plugin"}, {"plugin_name": "tags_api", "plugin_namespace": "tags", "plugin_project": "tags_api_plugin"}, {"plugin_name": "account_by_key_api", "plugin_namespace": "account_by_key", "plugin_project": "account_by_key_api_plugin"}, {"plugin_name": "block_api", "plugin_namespace": "block_api", "plugin_project": "block_api_plugin"}, {"plugin_name": "debug_node_api", "plugin_namespace": "debug_node", "plugin_project": "debug_node_api_plugin"}, {"plugin_name": "condenser_api", "plugin_namespace": "condenser_api", "plugin_project": "condenser_api_plugin"}, {"plugin_name": "account_history", "plugin_namespace": "account_history", "plugin_project": "account_history_plugin"}, {"plugin_name": "follow", "plugin_namespace": "follow", "plugin_project": "follow_plugin"}, {"plugin_name": "chain", "plugin_namespace": "chain", "plugin_project": "chain_plugin"}, {"plugin_name": "debug_node", "plugin_namespace": "debug_node", "plugin_project": "debug_node_plugin"}, {"plugin_name": "tags", "plugin_namespace": "tags", "plugin_project": "tags_plugin"}, {"plugin_name": "webserver", "plugin_namespace": "webserver", "plugin_project": "webserver_plugin"}, {"plugin_name": "p2p", "plugin_namespace": "p2p", "plugin_project": "p2p_plugin"}, {"plugin_name": "block_log_info", "plugin_namespace": "block_log_info", "plugin_project": "block_log_info_plugin"}, {"plugin_name": "account_by_key", "plugin_namespace": "account_by_key", "plugin_project": "account_by_key_plugin"}, {"plugin_name": "market_history", "plugin_namespace": "market_history", "plugin_project": "market_history_plugin"}], "index_extensions": []} +{"plugins": [{"plugin_name": "smt_test", "plugin_namespace": "smt_test", "plugin_project": "smt_test_plugin"}, {"plugin_name": "witness", "plugin_namespace": "witness", "plugin_project": "witness_plugin"}, {"plugin_name": "account_history_api", "plugin_namespace": "account_history", "plugin_project": "account_history_api_plugin"}, {"plugin_name": "custom_api", "plugin_namespace": "custom", "plugin_project": "custom_api_plugin"}, {"plugin_name": "witness_api", "plugin_namespace": "witness", "plugin_project": "witness_api_plugin"}, {"plugin_name": "network_broadcast_api", "plugin_namespace": "network_broadcast_api", "plugin_project": "network_broadcast_api_plugin"}, {"plugin_name": "database_api", "plugin_namespace": "database_api", "plugin_project": "database_api_plugin"}, {"plugin_name": "chain_api", "plugin_namespace": "chain", "plugin_project": "chain_api_plugin"}, {"plugin_name": "account_by_key_api", "plugin_namespace": "account_by_key", "plugin_project": "account_by_key_api_plugin"}, {"plugin_name": "block_api", "plugin_namespace": "block_api", "plugin_project": "block_api_plugin"}, {"plugin_name": "debug_node_api", "plugin_namespace": "debug_node", "plugin_project": "debug_node_api_plugin"}, {"plugin_name": "condenser_api", "plugin_namespace": "condenser_api", "plugin_project": "condenser_api_plugin"}, {"plugin_name": "account_history", "plugin_namespace": "account_history", "plugin_project": "account_history_plugin"}, {"plugin_name": "chain", "plugin_namespace": "chain", "plugin_project": "chain_plugin"}, {"plugin_name": "debug_node", "plugin_namespace": "debug_node", "plugin_project": "debug_node_plugin"}, {"plugin_name": "webserver", "plugin_namespace": "webserver", "plugin_project": "webserver_plugin"}, {"plugin_name": "p2p", "plugin_namespace": "p2p", "plugin_project": "p2p_plugin"}, {"plugin_name": "block_log_info", "plugin_namespace": "block_log_info", "plugin_project": "block_log_info_plugin"}, {"plugin_name": "account_by_key", "plugin_namespace": "account_by_key", "plugin_project": "account_by_key_plugin"}], "index_extensions": []} diff --git a/libraries/manifest/templates/plugins/CMakeLists.txt.j2 b/libraries/manifest/templates/plugins/CMakeLists.txt.j2 index 8785125d..b4ea0fc8 100644 --- a/libraries/manifest/templates/plugins/CMakeLists.txt.j2 +++ b/libraries/manifest/templates/plugins/CMakeLists.txt.j2 @@ -1,21 +1,21 @@ -add_library( steem_plugins +add_library( sophiatx_plugins mf_plugins.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/include/steem/manifest/plugins.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/include/sophiatx/manifest/plugins.hpp ) -target_link_libraries( steem_plugins appbase fc +target_link_libraries( sophiatx_plugins appbase fc {% for plugin in plugins %} {{ plugin["plugin_project"] }} {% endfor %} ) -target_include_directories( steem_plugins +target_include_directories( sophiatx_plugins PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) INSTALL( TARGETS - steem_plugins + sophiatx_plugins RUNTIME DESTINATION bin LIBRARY DESTINATION lib diff --git a/libraries/manifest/include/steem/manifest/plugins.hpp b/libraries/manifest/templates/plugins/include/sophiatx/manifest/plugins.hpp similarity index 71% rename from libraries/manifest/include/steem/manifest/plugins.hpp rename to libraries/manifest/templates/plugins/include/sophiatx/manifest/plugins.hpp index ca48f804..42248874 100644 --- a/libraries/manifest/include/steem/manifest/plugins.hpp +++ b/libraries/manifest/templates/plugins/include/sophiatx/manifest/plugins.hpp @@ -5,7 +5,7 @@ #include #include -namespace steem { namespace plugins { +namespace sophiatx { namespace plugins { void register_plugins(); diff --git a/libraries/manifest/templates/plugins/mf_plugins.cpp.j2 b/libraries/manifest/templates/plugins/mf_plugins.cpp.j2 index 2c058fbd..8251ae51 100644 --- a/libraries/manifest/templates/plugins/mf_plugins.cpp.j2 +++ b/libraries/manifest/templates/plugins/mf_plugins.cpp.j2 @@ -1,18 +1,18 @@ #include #include -#include +#include {% for plugin in plugins %} -#include +#include {% endfor %} -namespace steem { namespace plugins { +namespace sophiatx { namespace plugins { void register_plugins() { {% for plugin in plugins %} - appbase::app().register_plugin< steem::plugins::{{ plugin["plugin_namespace"] }}::{{ plugin["plugin_name" ] }}_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::{{ plugin["plugin_namespace"] }}::{{ plugin["plugin_name" ] }}_plugin >(); {% endfor %} } diff --git a/libraries/net/CMakeLists.txt b/libraries/net/CMakeLists.txt index cfb050bf..95407cf4 100644 --- a/libraries/net/CMakeLists.txt +++ b/libraries/net/CMakeLists.txt @@ -10,7 +10,7 @@ set(SOURCES node.cpp add_library( graphene_net ${SOURCES} ${HEADERS} ) target_link_libraries( graphene_net - PUBLIC steem_protocol fc ) + PUBLIC sophiatx_protocol fc ) target_include_directories( graphene_net PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" "${CMAKE_CURRENT_BINARY_DIR}/include" ) diff --git a/libraries/net/include/graphene/net/core_messages.hpp b/libraries/net/include/graphene/net/core_messages.hpp index 653f616a..6e7ad800 100644 --- a/libraries/net/include/graphene/net/core_messages.hpp +++ b/libraries/net/include/graphene/net/core_messages.hpp @@ -24,7 +24,7 @@ #pragma once #include -#include +#include #include #include @@ -40,10 +40,10 @@ #include namespace graphene { namespace net { - using steem::protocol::signed_transaction; - using steem::protocol::block_id_type; - using steem::protocol::transaction_id_type; - using steem::protocol::signed_block; + using sophiatx::protocol::signed_transaction; + using sophiatx::protocol::block_id_type; + using sophiatx::protocol::transaction_id_type; + using sophiatx::protocol::signed_block; typedef fc::ecc::public_key_data node_id_t; typedef fc::ripemd160 item_hash_t; diff --git a/libraries/net/include/graphene/net/node.hpp b/libraries/net/include/graphene/net/node.hpp index e54f6f4e..ada6b6d1 100644 --- a/libraries/net/include/graphene/net/node.hpp +++ b/libraries/net/include/graphene/net/node.hpp @@ -28,14 +28,14 @@ #include #include -#include +#include #include namespace graphene { namespace net { using fc::variant_object; - using steem::protocol::chain_id_type; + using sophiatx::protocol::chain_id_type; namespace detail { @@ -65,7 +65,7 @@ namespace graphene { namespace net { virtual ~node_delegate(){} - virtual steem::protocol::chain_id_type get_chain_id() const = 0; + virtual sophiatx::protocol::chain_id_type get_chain_id() const = 0; /** * If delegate has the item, the network has no need to fetch it. @@ -276,8 +276,8 @@ namespace graphene { namespace net { void set_advanced_node_parameters(const fc::variant_object& params); node_configuration get_advanced_node_parameters()const; - message_propagation_data get_transaction_propagation_data(const steem::protocol::transaction_id_type& transaction_id); - message_propagation_data get_block_propagation_data(const steem::protocol::block_id_type& block_id); + message_propagation_data get_transaction_propagation_data(const sophiatx::protocol::transaction_id_type& transaction_id); + message_propagation_data get_block_propagation_data(const sophiatx::protocol::block_id_type& block_id); node_id_t get_node_id() const; void set_allowed_peers(const std::vector& allowed_peers); diff --git a/libraries/net/include/graphene/net/peer_connection.hpp b/libraries/net/include/graphene/net/peer_connection.hpp index ded3dae1..1525b063 100644 --- a/libraries/net/include/graphene/net/peer_connection.hpp +++ b/libraries/net/include/graphene/net/peer_connection.hpp @@ -207,7 +207,7 @@ namespace graphene { namespace net fc::optional fc_git_revision_unix_timestamp; fc::optional platform; fc::optional bitness; - fc::optional chain_id; + fc::optional chain_id; // for inbound connections, these fields record what the peer sent us in // its hello message. For outbound, they record what we sent the peer diff --git a/libraries/net/node.cpp b/libraries/net/node.cpp index f70b5061..9e0d9ae4 100644 --- a/libraries/net/node.cpp +++ b/libraries/net/node.cpp @@ -79,7 +79,7 @@ #include #include -#include +#include #include @@ -351,7 +351,7 @@ namespace graphene { namespace net { fc::variant_object get_call_statistics(); - steem::protocol::chain_id_type get_chain_id() const override; + sophiatx::protocol::chain_id_type get_chain_id() const override; bool has_item( const net::item_id& id ) override; void handle_message( const message& ) override; bool handle_block( const graphene::net::block_message& block_message, bool sync_mode, std::vector& contained_transaction_message_ids ) override; @@ -753,7 +753,7 @@ namespace graphene { namespace net { _suspend_fetching_sync_blocks(false), _items_to_fetch_updated(false), _items_to_fetch_sequence_counter(0), - _recent_block_interval_in_seconds(STEEM_BLOCK_INTERVAL), + _recent_block_interval_in_seconds(SOPHIATX_BLOCK_INTERVAL), _user_agent_string(user_agent), _most_recent_blocks_accepted(GRAPHENE_NET_DEFAULT_MAX_CONNECTIONS), _total_number_of_unfetched_items(0), @@ -1846,7 +1846,7 @@ namespace graphene { namespace net { if (user_data.contains("last_known_fork_block_number")) originating_peer->last_known_fork_block_number = user_data["last_known_fork_block_number"].as(); if (user_data.contains("chain_id")) - originating_peer->chain_id = user_data["chain_id"].as(); + originating_peer->chain_id = user_data["chain_id"].as(); } void node_impl::on_hello_message( peer_connection* originating_peer, const hello_message& hello_message_received ) @@ -1941,7 +1941,7 @@ namespace graphene { namespace net { } if ( !originating_peer->chain_id || *originating_peer->chain_id != _delegate->get_chain_id() ) { - wlog("Received hello message from peer running a node for different blockchain.", + wlog("Received hello message from peer running a node for different blockchain; my chain: ${my_chain_id}, their chain: ${their_chain_id}", ("my_chain_id", _delegate->get_chain_id())("their_chain_id", originating_peer->chain_id) ); std::ostringstream rejection_message; @@ -2616,7 +2616,7 @@ namespace graphene { namespace net { // they must be an attacker or have a buggy client. fc::time_point_sec minimum_time_of_last_offered_block = originating_peer->last_block_time_delegate_has_seen + // timestamp of the block immediately before the first unfetched block - originating_peer->number_of_unfetched_item_ids * STEEM_BLOCK_INTERVAL; + originating_peer->number_of_unfetched_item_ids * SOPHIATX_BLOCK_INTERVAL; if (minimum_time_of_last_offered_block > _delegate->get_blockchain_now() + GRAPHENE_NET_FUTURE_SYNC_BLOCKS_GRACE_PERIOD_SEC) { wlog("Disconnecting from peer ${peer} who offered us an implausible number of blocks, their last block would be in the future (${timestamp})", @@ -4273,7 +4273,7 @@ namespace graphene { namespace net { // limit the rate at which we accept connections to mitigate DOS attacks fc::usleep( fc::milliseconds(10) ); - } FC_CAPTURE_AND_LOG( () ) + } FC_CAPTURE_AND_LOG( (_user_agent_string) ) } } // accept_loop() @@ -5478,7 +5478,7 @@ namespace graphene { namespace net { */ #endif - steem::protocol::chain_id_type statistics_gathering_node_delegate_wrapper::get_chain_id() const + sophiatx::protocol::chain_id_type statistics_gathering_node_delegate_wrapper::get_chain_id() const { INVOKE_AND_COLLECT_STATISTICS(get_chain_id); } diff --git a/libraries/net/peer_connection.cpp b/libraries/net/peer_connection.cpp index d698cfd6..9c276a6b 100644 --- a/libraries/net/peer_connection.cpp +++ b/libraries/net/peer_connection.cpp @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include @@ -511,7 +511,7 @@ namespace graphene { namespace net // to give us some wiggle room) return inventory_peer_advertised_to_us.size() > GRAPHENE_NET_MAX_INVENTORY_SIZE_IN_MINUTES * GRAPHENE_NET_MAX_TRX_PER_SECOND * 60 + - (GRAPHENE_NET_MAX_INVENTORY_SIZE_IN_MINUTES + 1) * 60 / STEEM_BLOCK_INTERVAL; + (GRAPHENE_NET_MAX_INVENTORY_SIZE_IN_MINUTES + 1) * 60 / SOPHIATX_BLOCK_INTERVAL; } bool peer_connection::performing_firewall_check() const diff --git a/libraries/plugins/account_by_key/CMakeLists.txt b/libraries/plugins/account_by_key/CMakeLists.txt index e928824a..a474d11b 100644 --- a/libraries/plugins/account_by_key/CMakeLists.txt +++ b/libraries/plugins/account_by_key/CMakeLists.txt @@ -1,10 +1,10 @@ -file(GLOB HEADERS "include/steem/plugins/account_by_key/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/account_by_key/*.hpp") add_library( account_by_key_plugin account_by_key_plugin.cpp ) -target_link_libraries( account_by_key_plugin chain_plugin steem_chain steem_protocol ) +target_link_libraries( account_by_key_plugin chain_plugin sophiatx_chain sophiatx_protocol ) target_include_directories( account_by_key_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) diff --git a/libraries/plugins/account_by_key/account_by_key_plugin.cpp b/libraries/plugins/account_by_key/account_by_key_plugin.cpp index bbb7549c..2370c780 100644 --- a/libraries/plugins/account_by_key/account_by_key_plugin.cpp +++ b/libraries/plugins/account_by_key/account_by_key_plugin.cpp @@ -1,12 +1,12 @@ -#include -#include +#include +#include -#include -#include -#include -#include +#include +#include +#include +#include -namespace steem { namespace plugins { namespace account_by_key { +namespace sophiatx { namespace plugins { namespace account_by_key { namespace detail { @@ -14,7 +14,7 @@ class account_by_key_plugin_impl { public: account_by_key_plugin_impl( account_by_key_plugin& _plugin ) : - _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ), + _db( appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db() ), _self( _plugin ) {} void pre_operation( const operation_notification& op_obj ); @@ -22,6 +22,7 @@ class account_by_key_plugin_impl void clear_cache(); void cache_auths( const account_authority_object& a ); void update_key_lookup( const account_authority_object& a ); + void delete_cached_key(const account_name_type& a); flat_set< public_key_type > cached_keys; database& _db; @@ -46,11 +47,6 @@ struct pre_operation_visitor _plugin.clear_cache(); } - void operator()( const account_create_with_delegation_operation& op )const - { - _plugin.clear_cache(); - } - void operator()( const account_update_operation& op )const { _plugin.clear_cache(); @@ -65,15 +61,13 @@ struct pre_operation_visitor if( acct_itr ) _plugin.cache_auths( *acct_itr ); } - void operator()( const pow_operation& op )const + void operator()( const account_delete_operation& op )const { _plugin.clear_cache(); + auto acct_itr = _plugin._db.find< account_authority_object, by_account >( op.account ); + if( acct_itr ) _plugin.cache_auths( *acct_itr ); } - void operator()( const pow2_operation& op )const - { - _plugin.clear_cache(); - } }; struct pow2_work_get_account_visitor @@ -100,13 +94,8 @@ struct post_operation_visitor void operator()( const account_create_operation& op )const { - auto acct_itr = _plugin._db.find< account_authority_object, by_account >( op.new_account_name ); - if( acct_itr ) _plugin.update_key_lookup( *acct_itr ); - } - - void operator()( const account_create_with_delegation_operation& op )const - { - auto acct_itr = _plugin._db.find< account_authority_object, by_account >( op.new_account_name ); + account_name_type new_account_name = make_random_fixed_string(op.name_seed); + auto acct_itr = _plugin._db.find< account_authority_object, by_account >( new_account_name ); if( acct_itr ) _plugin.update_key_lookup( *acct_itr ); } @@ -122,40 +111,10 @@ struct post_operation_visitor if( acct_itr ) _plugin.update_key_lookup( *acct_itr ); } - void operator()( const pow_operation& op )const + void operator()( const account_delete_operation& op )const { - auto acct_itr = _plugin._db.find< account_authority_object, by_account >( op.worker_account ); - if( acct_itr ) _plugin.update_key_lookup( *acct_itr ); - } - - void operator()( const pow2_operation& op )const - { - const account_name_type* worker_account = op.work.visit( pow2_work_get_account_visitor() ); - if( worker_account == nullptr ) - return; - auto acct_itr = _plugin._db.find< account_authority_object, by_account >( *worker_account ); - if( acct_itr ) _plugin.update_key_lookup( *acct_itr ); - } - - void operator()( const hardfork_operation& op )const - { - if( op.hardfork_id == STEEM_HARDFORK_0_9 ) - { - auto& db = _plugin._db; - - for( const std::string& acc : hardfork9::get_compromised_accounts() ) - { - const account_object* account = db.find_account( acc ); - if( account == nullptr ) - continue; - - db.create< key_lookup_object >( [&]( key_lookup_object& o ) - { - o.key = public_key_type( "STM7sw22HqsXbz7D2CmJfmMwt9rimtk518dRzsR1f8Cgw52dQR1pR" ); - o.account = account->name; - }); - } - } + auto acct_itr = _plugin._db.find< account_authority_object, by_account >( op.account ); + if( acct_itr == nullptr) _plugin.delete_cached_key( op.account ); } }; @@ -170,8 +129,7 @@ void account_by_key_plugin_impl::cache_auths( const account_authority_object& a cached_keys.insert( item.first ); for( const auto& item : a.active.key_auths ) cached_keys.insert( item.first ); - for( const auto& item : a.posting.key_auths ) - cached_keys.insert( item.first ); + } void account_by_key_plugin_impl::update_key_lookup( const account_authority_object& a ) @@ -183,8 +141,7 @@ void account_by_key_plugin_impl::update_key_lookup( const account_authority_obje new_keys.insert( item.first ); for( const auto& item : a.active.key_auths ) new_keys.insert( item.first ); - for( const auto& item : a.posting.key_auths ) - new_keys.insert( item.first ); + // For each key that needs a lookup for( const auto& key : new_keys ) @@ -210,10 +167,15 @@ void account_by_key_plugin_impl::update_key_lookup( const account_authority_obje } } + delete_cached_key(a.account); +} + +void account_by_key_plugin_impl::delete_cached_key(const account_name_type& a) +{ // Loop over the keys that were in authority but are no longer and remove them from the lookup for( const auto& key : cached_keys ) { - auto lookup_itr = _db.find< key_lookup_object, by_key >( std::make_tuple( key, a.account ) ); + auto lookup_itr = _db.find< key_lookup_object, by_key >( std::make_tuple( key, a ) ); if( lookup_itr != nullptr ) { @@ -247,7 +209,7 @@ void account_by_key_plugin::plugin_initialize( const boost::program_options::var try { ilog( "Initializing account_by_key plugin" ); - chain::database& db = appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db(); + chain::database& db = appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db(); my->pre_apply_connection = db.pre_apply_operation.connect( 0, [&]( const operation_notification& o ){ my->pre_operation( o ); } ); my->post_apply_connection = db.post_apply_operation.connect( 0, [&]( const operation_notification& o ){ my->post_operation( o ); } ); @@ -265,4 +227,4 @@ void account_by_key_plugin::plugin_shutdown() chain::util::disconnect_signal( my->post_apply_connection ); } -} } } // steem::plugins::account_by_key +} } } // sophiatx::plugins::account_by_key diff --git a/libraries/plugins/account_by_key/include/steem/plugins/account_by_key/account_by_key_objects.hpp b/libraries/plugins/account_by_key/include/sophiatx/plugins/account_by_key/account_by_key_objects.hpp similarity index 66% rename from libraries/plugins/account_by_key/include/steem/plugins/account_by_key/account_by_key_objects.hpp rename to libraries/plugins/account_by_key/include/sophiatx/plugins/account_by_key/account_by_key_objects.hpp index 05c6e2b6..ab72e7df 100644 --- a/libraries/plugins/account_by_key/include/steem/plugins/account_by_key/account_by_key_objects.hpp +++ b/libraries/plugins/account_by_key/include/sophiatx/plugins/account_by_key/account_by_key_objects.hpp @@ -1,20 +1,20 @@ #pragma once -#include +#include #include -namespace steem { namespace plugins { namespace account_by_key { +namespace sophiatx { namespace plugins { namespace account_by_key { using namespace std; -using namespace steem::chain; +using namespace sophiatx::chain; -#ifndef STEEM_ACCOUNT_BY_KEY_SPACE_ID -#define STEEM_ACCOUNT_BY_KEY_SPACE_ID 11 +#ifndef SOPHIATX_ACCOUNT_BY_KEY_SPACE_ID +#define SOPHIATX_ACCOUNT_BY_KEY_SPACE_ID 11 #endif enum account_by_key_object_types { - key_lookup_object_type = ( STEEM_ACCOUNT_BY_KEY_SPACE_ID << 8 ) + key_lookup_object_type = ( SOPHIATX_ACCOUNT_BY_KEY_SPACE_ID << 8 ) }; class key_lookup_object : public object< key_lookup_object_type, key_lookup_object > @@ -53,8 +53,8 @@ typedef multi_index_container< allocator< key_lookup_object > > key_lookup_index; -} } } // steem::plugins::account_by_key +} } } // sophiatx::plugins::account_by_key -FC_REFLECT( steem::plugins::account_by_key::key_lookup_object, (id)(key)(account) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::account_by_key::key_lookup_object, steem::plugins::account_by_key::key_lookup_index ) +FC_REFLECT( sophiatx::plugins::account_by_key::key_lookup_object, (id)(key)(account) ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::plugins::account_by_key::key_lookup_object, sophiatx::plugins::account_by_key::key_lookup_index ) diff --git a/libraries/plugins/account_by_key/include/steem/plugins/account_by_key/account_by_key_plugin.hpp b/libraries/plugins/account_by_key/include/sophiatx/plugins/account_by_key/account_by_key_plugin.hpp similarity index 67% rename from libraries/plugins/account_by_key/include/steem/plugins/account_by_key/account_by_key_plugin.hpp rename to libraries/plugins/account_by_key/include/sophiatx/plugins/account_by_key/account_by_key_plugin.hpp index 51fef49d..898df461 100644 --- a/libraries/plugins/account_by_key/include/steem/plugins/account_by_key/account_by_key_plugin.hpp +++ b/libraries/plugins/account_by_key/include/sophiatx/plugins/account_by_key/account_by_key_plugin.hpp @@ -1,15 +1,15 @@ #pragma once #include -#include +#include -namespace steem { namespace plugins { namespace account_by_key { +namespace sophiatx { namespace plugins { namespace account_by_key { namespace detail { class account_by_key_plugin_impl; } using namespace appbase; -#define STEEM_ACCOUNT_BY_KEY_PLUGIN_NAME "account_by_key" +#define SOPHIATX_ACCOUNT_BY_KEY_PLUGIN_NAME "account_by_key" class account_by_key_plugin : public appbase::plugin< account_by_key_plugin > { @@ -17,9 +17,9 @@ class account_by_key_plugin : public appbase::plugin< account_by_key_plugin > account_by_key_plugin(); virtual ~account_by_key_plugin(); - APPBASE_PLUGIN_REQUIRES( (steem::plugins::chain::chain_plugin) ) + APPBASE_PLUGIN_REQUIRES( (sophiatx::plugins::chain::chain_plugin) ) - static const std::string& name() { static std::string name = STEEM_ACCOUNT_BY_KEY_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_ACCOUNT_BY_KEY_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, options_description& cfg ) override; virtual void plugin_initialize( const variables_map& options ) override; @@ -30,4 +30,4 @@ class account_by_key_plugin : public appbase::plugin< account_by_key_plugin > std::unique_ptr< detail::account_by_key_plugin_impl > my; }; -} } } // steem::plugins::account_by_key +} } } // sophiatx::plugins::account_by_key diff --git a/libraries/plugins/account_history/CMakeLists.txt b/libraries/plugins/account_history/CMakeLists.txt index a1aa4c5c..3ffdf80b 100644 --- a/libraries/plugins/account_history/CMakeLists.txt +++ b/libraries/plugins/account_history/CMakeLists.txt @@ -1,10 +1,10 @@ -file(GLOB HEADERS "include/steem/plugins/account_history/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/account_history/*.hpp") add_library( account_history_plugin account_history_plugin.cpp ) -target_link_libraries( account_history_plugin chain_plugin steem_chain steem_protocol steem_utilities ) +target_link_libraries( account_history_plugin chain_plugin sophiatx_chain sophiatx_protocol sophiatx_utilities ) target_include_directories( account_history_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) diff --git a/libraries/plugins/account_history/account_history_plugin.cpp b/libraries/plugins/account_history/account_history_plugin.cpp index 9563b0a7..b3476245 100644 --- a/libraries/plugins/account_history/account_history_plugin.cpp +++ b/libraries/plugins/account_history/account_history_plugin.cpp @@ -1,13 +1,13 @@ -#include +#include -#include +#include -#include +#include -#include -#include +#include +#include -#include +#include #include #include @@ -15,11 +15,11 @@ #include -#define STEEM_NAMESPACE_PREFIX "steem::protocol::" +#define SOPHIATX_NAMESPACE_PREFIX "sophiatx::protocol::" -namespace steem { namespace plugins { namespace account_history { +namespace sophiatx { namespace plugins { namespace account_history { -using namespace steem::protocol; +using namespace sophiatx::protocol; using chain::database; using chain::operation_notification; @@ -31,7 +31,7 @@ class account_history_plugin_impl { public: account_history_plugin_impl() : - _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ) {} + _db( appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db() ) {} virtual ~account_history_plugin_impl() {} @@ -73,6 +73,8 @@ struct operation_visitor obj.op_in_trx = _note.op_in_trx; obj.virtual_op = _note.virtual_op; obj.timestamp = _db.head_block_time(); + + obj.fee_payer = _note.fee_payer; //fc::raw::pack( obj.serialized_op , _note.op); //call to 'pack' is ambiguous auto size = fc::raw::pack_size( _note.op ); obj.serialized_op.resize( size ); @@ -152,6 +154,7 @@ void account_history_plugin_impl::on_operation( const operation_notification& no const operation_object* new_obj = nullptr; app::operation_get_impacted_accounts( note.op, impacted ); + impacted.insert(note.fee_payer); for( const auto& item : impacted ) { auto itr = _tracked_accounts.lower_bound( item ); @@ -223,12 +226,12 @@ void account_history_plugin::plugin_initialize( const boost::program_options::va my->pre_apply_connection = my->_db.pre_apply_operation.connect( 0, [&]( const operation_notification& note ){ my->on_operation(note); } ); typedef pair< account_name_type, account_name_type > pairstring; - STEEM_LOAD_VALUE_SET(options, "account-history-track-account-range", my->_tracked_accounts, pairstring); + SOPHIATX_LOAD_VALUE_SET(options, "account-history-track-account-range", my->_tracked_accounts, pairstring); if( options.count( "track-account-range" ) ) { wlog( "track-account-range is deprecated in favor of account-history-track-account-range" ); - STEEM_LOAD_VALUE_SET( options, "track-account-range", my->_tracked_accounts, pairstring ); + SOPHIATX_LOAD_VALUE_SET( options, "track-account-range", my->_tracked_accounts, pairstring ); } @@ -247,7 +250,7 @@ void account_history_plugin::plugin_initialize( const boost::program_options::va for( const string& op : ops ) { if( op.size() ) - my->_op_list.insert( STEEM_NAMESPACE_PREFIX + op ); + my->_op_list.insert( SOPHIATX_NAMESPACE_PREFIX + op ); } } } @@ -264,7 +267,7 @@ void account_history_plugin::plugin_initialize( const boost::program_options::va for( const string& op : ops ) { if( op.size() ) - my->_op_list.insert( STEEM_NAMESPACE_PREFIX + op ); + my->_op_list.insert( SOPHIATX_NAMESPACE_PREFIX + op ); } } } @@ -286,7 +289,7 @@ void account_history_plugin::plugin_initialize( const boost::program_options::va for( const string& op : ops ) { if( op.size() ) - my->_op_list.insert( STEEM_NAMESPACE_PREFIX + op ); + my->_op_list.insert( SOPHIATX_NAMESPACE_PREFIX + op ); } } } @@ -303,7 +306,7 @@ void account_history_plugin::plugin_initialize( const boost::program_options::va for( const string& op : ops ) { if( op.size() ) - my->_op_list.insert( STEEM_NAMESPACE_PREFIX + op ); + my->_op_list.insert( SOPHIATX_NAMESPACE_PREFIX + op ); } } } @@ -329,4 +332,4 @@ flat_map< account_name_type, account_name_type > account_history_plugin::tracked return my->_tracked_accounts; } -} } } // steem::plugins::account_history +} } } // sophiatx::plugins::account_history diff --git a/libraries/plugins/account_history/include/steem/plugins/account_history/account_history_plugin.hpp b/libraries/plugins/account_history/include/sophiatx/plugins/account_history/account_history_plugin.hpp similarity index 73% rename from libraries/plugins/account_history/include/steem/plugins/account_history/account_history_plugin.hpp rename to libraries/plugins/account_history/include/sophiatx/plugins/account_history/account_history_plugin.hpp index c4438848..0dc6ce82 100644 --- a/libraries/plugins/account_history/include/steem/plugins/account_history/account_history_plugin.hpp +++ b/libraries/plugins/account_history/include/sophiatx/plugins/account_history/account_history_plugin.hpp @@ -1,14 +1,14 @@ #pragma once -#include +#include -#define STEEM_ACCOUNT_HISTORY_PLUGIN_NAME "account_history" +#define SOPHIATX_ACCOUNT_HISTORY_PLUGIN_NAME "account_history" -namespace steem { namespace plugins { namespace account_history { +namespace sophiatx { namespace plugins { namespace account_history { namespace detail { class account_history_plugin_impl; } using namespace appbase; -using steem::protocol::account_name_type; +using sophiatx::protocol::account_name_type; // // Plugins should #define their SPACE_ID's so plugins with @@ -20,8 +20,8 @@ using steem::protocol::account_name_type; // various template automagic depends on them being known at compile // time. // -#ifndef STEEM_ACCOUNT_HISTORY_SPACE_ID -#define STEEM_ACCOUNT_HISTORY_SPACE_ID 5 +#ifndef SOPHIATX_ACCOUNT_HISTORY_SPACE_ID +#define SOPHIATX_ACCOUNT_HISTORY_SPACE_ID 5 #endif /** @@ -34,9 +34,9 @@ class account_history_plugin : public plugin< account_history_plugin > account_history_plugin(); virtual ~account_history_plugin(); - APPBASE_PLUGIN_REQUIRES( (steem::plugins::chain::chain_plugin) ) + APPBASE_PLUGIN_REQUIRES( (sophiatx::plugins::chain::chain_plugin) ) - static const std::string& name() { static std::string name = STEEM_ACCOUNT_HISTORY_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_ACCOUNT_HISTORY_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, @@ -51,5 +51,5 @@ class account_history_plugin : public plugin< account_history_plugin > std::unique_ptr< detail::account_history_plugin_impl > my; }; -} } } //steem::plugins::account_history +} } } //sophiatx::plugins::account_history diff --git a/libraries/plugins/apis/account_by_key_api/CMakeLists.txt b/libraries/plugins/apis/account_by_key_api/CMakeLists.txt index 3d9fe927..1e2a9d85 100644 --- a/libraries/plugins/apis/account_by_key_api/CMakeLists.txt +++ b/libraries/plugins/apis/account_by_key_api/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB HEADERS "include/steem/plugins/account_by_key_api/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/account_by_key_api/*.hpp") add_library( account_by_key_api_plugin account_by_key_api_plugin.cpp account_by_key_api.cpp diff --git a/libraries/plugins/apis/account_by_key_api/account_by_key_api.cpp b/libraries/plugins/apis/account_by_key_api/account_by_key_api.cpp index b1f535be..a5cce128 100644 --- a/libraries/plugins/apis/account_by_key_api/account_by_key_api.cpp +++ b/libraries/plugins/apis/account_by_key_api/account_by_key_api.cpp @@ -1,16 +1,16 @@ -#include -#include +#include +#include -#include +#include -namespace steem { namespace plugins { namespace account_by_key { +namespace sophiatx { namespace plugins { namespace account_by_key { namespace detail { class account_by_key_api_impl { public: - account_by_key_api_impl() : _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ) {} + account_by_key_api_impl() : _db( appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db() ) {} get_key_references_return get_key_references( const get_key_references_args& args )const; @@ -26,7 +26,7 @@ get_key_references_return account_by_key_api_impl::get_key_references( const get for( auto& key : args.keys ) { - std::vector< steem::protocol::account_name_type > result; + std::vector< sophiatx::protocol::account_name_type > result; auto lookup_itr = key_idx.lower_bound( key ); while( lookup_itr != key_idx.end() && lookup_itr->key == key ) @@ -45,11 +45,11 @@ get_key_references_return account_by_key_api_impl::get_key_references( const get account_by_key_api::account_by_key_api(): my( new detail::account_by_key_api_impl() ) { - JSON_RPC_REGISTER_API( STEEM_ACCOUNT_BY_KEY_API_PLUGIN_NAME ); + JSON_RPC_REGISTER_API( SOPHIATX_ACCOUNT_BY_KEY_API_PLUGIN_NAME ); } account_by_key_api::~account_by_key_api() {} DEFINE_READ_APIS( account_by_key_api, (get_key_references) ) -} } } // steem::plugins::account_by_key +} } } // sophiatx::plugins::account_by_key diff --git a/libraries/plugins/apis/account_by_key_api/account_by_key_api_plugin.cpp b/libraries/plugins/apis/account_by_key_api/account_by_key_api_plugin.cpp index 2b360adc..6f1ce7ca 100644 --- a/libraries/plugins/apis/account_by_key_api/account_by_key_api_plugin.cpp +++ b/libraries/plugins/apis/account_by_key_api/account_by_key_api_plugin.cpp @@ -1,14 +1,13 @@ -#include -#include +#include +#include -namespace steem { namespace plugins { namespace account_by_key { +namespace sophiatx { namespace plugins { namespace account_by_key { account_by_key_api_plugin::account_by_key_api_plugin() {} account_by_key_api_plugin::~account_by_key_api_plugin() {} void account_by_key_api_plugin::set_program_options( options_description& cli, options_description& cfg ) {} - void account_by_key_api_plugin::plugin_initialize( const variables_map& options ) { api = std::make_shared< account_by_key_api >(); @@ -17,4 +16,4 @@ void account_by_key_api_plugin::plugin_initialize( const variables_map& options void account_by_key_api_plugin::plugin_startup() {} void account_by_key_api_plugin::plugin_shutdown() {} -} } } // steem::plugins::account_by_key +} } } // sophiatx::plugins::account_by_key diff --git a/libraries/plugins/apis/account_by_key_api/include/sophiatx/plugins/account_by_key_api/account_by_key_api.hpp b/libraries/plugins/apis/account_by_key_api/include/sophiatx/plugins/account_by_key_api/account_by_key_api.hpp new file mode 100644 index 00000000..2234096c --- /dev/null +++ b/libraries/plugins/apis/account_by_key_api/include/sophiatx/plugins/account_by_key_api/account_by_key_api.hpp @@ -0,0 +1,45 @@ +#pragma once +#include + +#include + +#include +#include +#include + +namespace sophiatx { namespace plugins { namespace account_by_key { + +namespace detail +{ + class account_by_key_api_impl; +} + +struct get_key_references_args +{ + std::vector< sophiatx::protocol::public_key_type > keys; +}; + +struct get_key_references_return +{ + std::vector< std::vector< sophiatx::protocol::account_name_type > > accounts; +}; + +class account_by_key_api +{ + public: + account_by_key_api(); + ~account_by_key_api(); + + DECLARE_API( (get_key_references) ) + + private: + std::unique_ptr< detail::account_by_key_api_impl > my; +}; + +} } } // sophiatx::plugins::account_by_key + +FC_REFLECT( sophiatx::plugins::account_by_key::get_key_references_args, + (keys) ) + +FC_REFLECT( sophiatx::plugins::account_by_key::get_key_references_return, + (accounts) ) diff --git a/libraries/plugins/apis/account_by_key_api/include/steem/plugins/account_by_key_api/account_by_key_api_plugin.hpp b/libraries/plugins/apis/account_by_key_api/include/sophiatx/plugins/account_by_key_api/account_by_key_api_plugin.hpp similarity index 58% rename from libraries/plugins/apis/account_by_key_api/include/steem/plugins/account_by_key_api/account_by_key_api_plugin.hpp rename to libraries/plugins/apis/account_by_key_api/include/sophiatx/plugins/account_by_key_api/account_by_key_api_plugin.hpp index aa182415..a8bc82dd 100644 --- a/libraries/plugins/apis/account_by_key_api/include/steem/plugins/account_by_key_api/account_by_key_api_plugin.hpp +++ b/libraries/plugins/apis/account_by_key_api/include/sophiatx/plugins/account_by_key_api/account_by_key_api_plugin.hpp @@ -1,13 +1,13 @@ #pragma once -#include -#include +#include +#include #include -#define STEEM_ACCOUNT_BY_KEY_API_PLUGIN_NAME "account_by_key_api" +#define SOPHIATX_ACCOUNT_BY_KEY_API_PLUGIN_NAME "account_by_key_api" -namespace steem { namespace plugins { namespace account_by_key { +namespace sophiatx { namespace plugins { namespace account_by_key { using namespace appbase; @@ -15,14 +15,14 @@ class account_by_key_api_plugin : public appbase::plugin< account_by_key_api_plu { public: APPBASE_PLUGIN_REQUIRES( - (steem::plugins::account_by_key::account_by_key_plugin) - (steem::plugins::json_rpc::json_rpc_plugin) + (sophiatx::plugins::account_by_key::account_by_key_plugin) + (sophiatx::plugins::json_rpc::json_rpc_plugin) ) account_by_key_api_plugin(); virtual ~account_by_key_api_plugin(); - static const std::string& name() { static std::string name = STEEM_ACCOUNT_BY_KEY_API_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_ACCOUNT_BY_KEY_API_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, options_description& cfg ) override; @@ -33,4 +33,4 @@ class account_by_key_api_plugin : public appbase::plugin< account_by_key_api_plu std::shared_ptr< class account_by_key_api > api; }; -} } } // steem::plugins::account_by_key +} } } // sophiatx::plugins::account_by_key diff --git a/libraries/plugins/apis/account_by_key_api/include/steem/plugins/account_by_key_api/account_by_key_api.hpp b/libraries/plugins/apis/account_by_key_api/include/steem/plugins/account_by_key_api/account_by_key_api.hpp deleted file mode 100644 index 9641d8e6..00000000 --- a/libraries/plugins/apis/account_by_key_api/include/steem/plugins/account_by_key_api/account_by_key_api.hpp +++ /dev/null @@ -1,45 +0,0 @@ -#pragma once -#include - -#include - -#include -#include -#include - -namespace steem { namespace plugins { namespace account_by_key { - -namespace detail -{ - class account_by_key_api_impl; -} - -struct get_key_references_args -{ - std::vector< steem::protocol::public_key_type > keys; -}; - -struct get_key_references_return -{ - std::vector< std::vector< steem::protocol::account_name_type > > accounts; -}; - -class account_by_key_api -{ - public: - account_by_key_api(); - ~account_by_key_api(); - - DECLARE_API( (get_key_references) ) - - private: - std::unique_ptr< detail::account_by_key_api_impl > my; -}; - -} } } // steem::plugins::account_by_key - -FC_REFLECT( steem::plugins::account_by_key::get_key_references_args, - (keys) ) - -FC_REFLECT( steem::plugins::account_by_key::get_key_references_return, - (accounts) ) diff --git a/libraries/plugins/apis/account_history_api/CMakeLists.txt b/libraries/plugins/apis/account_history_api/CMakeLists.txt index e7737a3b..34e33e26 100644 --- a/libraries/plugins/apis/account_history_api/CMakeLists.txt +++ b/libraries/plugins/apis/account_history_api/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB HEADERS "include/steem/plugins/account_history_api/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/account_history_api/*.hpp") add_library( account_history_api_plugin account_history_api_plugin.cpp account_history_api.cpp diff --git a/libraries/plugins/apis/account_history_api/account_history_api.cpp b/libraries/plugins/apis/account_history_api/account_history_api.cpp index dca988fd..0659e8d1 100644 --- a/libraries/plugins/apis/account_history_api/account_history_api.cpp +++ b/libraries/plugins/apis/account_history_api/account_history_api.cpp @@ -1,14 +1,14 @@ -#include -#include +#include +#include -namespace steem { namespace plugins { namespace account_history { +namespace sophiatx { namespace plugins { namespace account_history { namespace detail { class account_history_api_impl { public: - account_history_api_impl() : _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ) {} + account_history_api_impl() : _db( appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db() ) {} DECLARE_API_IMPL( (get_ops_in_block) @@ -78,7 +78,7 @@ DEFINE_API_IMPL( account_history_api_impl, get_account_history ) account_history_api::account_history_api(): my( new detail::account_history_api_impl() ) { - JSON_RPC_REGISTER_API( STEEM_ACCOUNT_HISTORY_API_PLUGIN_NAME ); + JSON_RPC_REGISTER_API( SOPHIATX_ACCOUNT_HISTORY_API_PLUGIN_NAME ); } account_history_api::~account_history_api() {} @@ -89,4 +89,4 @@ DEFINE_READ_APIS( account_history_api, (get_account_history) ) -} } } // steem::plugins::account_history +} } } // sophiatx::plugins::account_history diff --git a/libraries/plugins/apis/account_history_api/account_history_api_plugin.cpp b/libraries/plugins/apis/account_history_api/account_history_api_plugin.cpp index f42ddee8..dcdd81a8 100644 --- a/libraries/plugins/apis/account_history_api/account_history_api_plugin.cpp +++ b/libraries/plugins/apis/account_history_api/account_history_api_plugin.cpp @@ -1,8 +1,8 @@ -#include -#include +#include +#include -namespace steem { namespace plugins { namespace account_history { +namespace sophiatx { namespace plugins { namespace account_history { account_history_api_plugin::account_history_api_plugin() {} account_history_api_plugin::~account_history_api_plugin() {} @@ -17,4 +17,4 @@ void account_history_api_plugin::plugin_initialize( const variables_map& options void account_history_api_plugin::plugin_startup() {} void account_history_api_plugin::plugin_shutdown() {} -} } } // steem::plugins::account_history +} } } // sophiatx::plugins::account_history diff --git a/libraries/plugins/apis/account_history_api/include/steem/plugins/account_history_api/account_history_api.hpp b/libraries/plugins/apis/account_history_api/include/sophiatx/plugins/account_history_api/account_history_api.hpp similarity index 54% rename from libraries/plugins/apis/account_history_api/include/steem/plugins/account_history_api/account_history_api.hpp rename to libraries/plugins/apis/account_history_api/include/sophiatx/plugins/account_history_api/account_history_api.hpp index 3725cb30..1c78005e 100644 --- a/libraries/plugins/apis/account_history_api/include/steem/plugins/account_history_api/account_history_api.hpp +++ b/libraries/plugins/apis/account_history_api/include/sophiatx/plugins/account_history_api/account_history_api.hpp @@ -1,16 +1,16 @@ #pragma once -#include +#include -#include -#include +#include +#include -#include +#include #include #include #include -namespace steem { namespace plugins { namespace account_history { +namespace sophiatx { namespace plugins { namespace account_history { namespace detail { class account_history_api_impl; } @@ -18,23 +18,25 @@ namespace detail { class account_history_api_impl; } struct api_operation_object { api_operation_object() {} - api_operation_object( const steem::chain::operation_object& op_obj ) : + api_operation_object( const sophiatx::chain::operation_object& op_obj ) : trx_id( op_obj.trx_id ), block( op_obj.block ), trx_in_block( op_obj.trx_in_block ), virtual_op( op_obj.virtual_op ), - timestamp( op_obj.timestamp ) + timestamp( op_obj.timestamp ), + fee_payer( op_obj.fee_payer ) { - op = fc::raw::unpack_from_buffer< steem::protocol::operation >( op_obj.serialized_op ); + op = fc::raw::unpack_from_buffer< sophiatx::protocol::operation >( op_obj.serialized_op ); } - steem::protocol::transaction_id_type trx_id; + sophiatx::protocol::transaction_id_type trx_id; uint32_t block = 0; uint32_t trx_in_block = 0; uint16_t op_in_trx = 0; uint64_t virtual_op = 0; fc::time_point_sec timestamp; - steem::protocol::operation op; + sophiatx::protocol::operation op; + string fee_payer; }; @@ -52,15 +54,15 @@ struct get_ops_in_block_return struct get_transaction_args { - steem::protocol::transaction_id_type id; + sophiatx::protocol::transaction_id_type id; }; -typedef steem::protocol::annotated_signed_transaction get_transaction_return; +typedef sophiatx::protocol::annotated_signed_transaction get_transaction_return; struct get_account_history_args { - steem::protocol::account_name_type account; + sophiatx::protocol::account_name_type account; uint64_t start = -1; uint32_t limit = 1000; }; @@ -87,22 +89,22 @@ class account_history_api std::unique_ptr< detail::account_history_api_impl > my; }; -} } } // steem::plugins::account_history +} } } // sophiatx::plugins::account_history -FC_REFLECT( steem::plugins::account_history::api_operation_object, - (trx_id)(block)(trx_in_block)(op_in_trx)(virtual_op)(timestamp)(op) ) +FC_REFLECT( sophiatx::plugins::account_history::api_operation_object, + (trx_id)(block)(trx_in_block)(op_in_trx)(virtual_op)(timestamp)(op)(fee_payer) ) -FC_REFLECT( steem::plugins::account_history::get_ops_in_block_args, +FC_REFLECT( sophiatx::plugins::account_history::get_ops_in_block_args, (block_num)(only_virtual) ) -FC_REFLECT( steem::plugins::account_history::get_ops_in_block_return, +FC_REFLECT( sophiatx::plugins::account_history::get_ops_in_block_return, (ops) ) -FC_REFLECT( steem::plugins::account_history::get_transaction_args, +FC_REFLECT( sophiatx::plugins::account_history::get_transaction_args, (id) ) -FC_REFLECT( steem::plugins::account_history::get_account_history_args, +FC_REFLECT( sophiatx::plugins::account_history::get_account_history_args, (account)(start)(limit) ) -FC_REFLECT( steem::plugins::account_history::get_account_history_return, +FC_REFLECT( sophiatx::plugins::account_history::get_account_history_return, (history) ) diff --git a/libraries/plugins/apis/account_history_api/include/steem/plugins/account_history_api/account_history_api_plugin.hpp b/libraries/plugins/apis/account_history_api/include/sophiatx/plugins/account_history_api/account_history_api_plugin.hpp similarity index 57% rename from libraries/plugins/apis/account_history_api/include/steem/plugins/account_history_api/account_history_api_plugin.hpp rename to libraries/plugins/apis/account_history_api/include/sophiatx/plugins/account_history_api/account_history_api_plugin.hpp index d5f983a0..b81c0a47 100644 --- a/libraries/plugins/apis/account_history_api/include/steem/plugins/account_history_api/account_history_api_plugin.hpp +++ b/libraries/plugins/apis/account_history_api/include/sophiatx/plugins/account_history_api/account_history_api_plugin.hpp @@ -1,13 +1,13 @@ #pragma once -#include -#include +#include +#include #include -#define STEEM_ACCOUNT_HISTORY_API_PLUGIN_NAME "account_history_api" +#define SOPHIATX_ACCOUNT_HISTORY_API_PLUGIN_NAME "account_history_api" -namespace steem { namespace plugins { namespace account_history { +namespace sophiatx { namespace plugins { namespace account_history { using namespace appbase; @@ -15,14 +15,14 @@ class account_history_api_plugin : public plugin< account_history_api_plugin > { public: APPBASE_PLUGIN_REQUIRES( - (steem::plugins::account_history::account_history_plugin) - (steem::plugins::json_rpc::json_rpc_plugin) + (sophiatx::plugins::account_history::account_history_plugin) + (sophiatx::plugins::json_rpc::json_rpc_plugin) ) account_history_api_plugin(); virtual ~account_history_api_plugin(); - static const std::string& name() { static std::string name = STEEM_ACCOUNT_HISTORY_API_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_ACCOUNT_HISTORY_API_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, options_description& cfg ) override; @@ -33,4 +33,4 @@ class account_history_api_plugin : public plugin< account_history_api_plugin > std::shared_ptr< class account_history_api > api; }; -} } } // steem::plugins::account_history +} } } // sophiatx::plugins::account_history diff --git a/libraries/plugins/apis/block_api/CMakeLists.txt b/libraries/plugins/apis/block_api/CMakeLists.txt index 38df76f4..002a8f7f 100644 --- a/libraries/plugins/apis/block_api/CMakeLists.txt +++ b/libraries/plugins/apis/block_api/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB HEADERS "include/steem/plugins/block_api/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/block_api/*.hpp") add_library( block_api_plugin block_api.cpp diff --git a/libraries/plugins/apis/block_api/block_api.cpp b/libraries/plugins/apis/block_api/block_api.cpp index f6973b44..2d890b28 100644 --- a/libraries/plugins/apis/block_api/block_api.cpp +++ b/libraries/plugins/apis/block_api/block_api.cpp @@ -1,11 +1,11 @@ #include -#include -#include +#include +#include -#include +#include -namespace steem { namespace plugins { namespace block_api { +namespace sophiatx { namespace plugins { namespace block_api { class block_api_impl { @@ -30,13 +30,13 @@ class block_api_impl block_api::block_api() : my( new block_api_impl() ) { - JSON_RPC_REGISTER_API( STEEM_BLOCK_API_PLUGIN_NAME ); + JSON_RPC_REGISTER_API( SOPHIATX_BLOCK_API_PLUGIN_NAME ); } block_api::~block_api() {} block_api_impl::block_api_impl() - : _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ) {} + : _db( appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db() ) {} block_api_impl::~block_api_impl() {} @@ -73,4 +73,4 @@ DEFINE_READ_APIS( block_api, (get_block) ) -} } } // steem::plugins::block_api +} } } // sophiatx::plugins::block_api diff --git a/libraries/plugins/apis/block_api/block_api_plugin.cpp b/libraries/plugins/apis/block_api/block_api_plugin.cpp index d060928b..47552231 100644 --- a/libraries/plugins/apis/block_api/block_api_plugin.cpp +++ b/libraries/plugins/apis/block_api/block_api_plugin.cpp @@ -1,7 +1,7 @@ -#include -#include +#include +#include -namespace steem { namespace plugins { namespace block_api { +namespace sophiatx { namespace plugins { namespace block_api { block_api_plugin::block_api_plugin() {} block_api_plugin::~block_api_plugin() {} @@ -19,4 +19,4 @@ void block_api_plugin::plugin_startup() {} void block_api_plugin::plugin_shutdown() {} -} } } // steem::plugins::block_api +} } } // sophiatx::plugins::block_api diff --git a/libraries/plugins/apis/block_api/include/steem/plugins/block_api/block_api.hpp b/libraries/plugins/apis/block_api/include/sophiatx/plugins/block_api/block_api.hpp similarity index 80% rename from libraries/plugins/apis/block_api/include/steem/plugins/block_api/block_api.hpp rename to libraries/plugins/apis/block_api/include/sophiatx/plugins/block_api/block_api.hpp index bae1212b..9a45fa03 100644 --- a/libraries/plugins/apis/block_api/include/steem/plugins/block_api/block_api.hpp +++ b/libraries/plugins/apis/block_api/include/sophiatx/plugins/block_api/block_api.hpp @@ -1,12 +1,12 @@ #pragma once -#include +#include -#include +#include #define BLOCK_API_SINGLE_QUERY_LIMIT 1000 -namespace steem { namespace plugins { namespace block_api { +namespace sophiatx { namespace plugins { namespace block_api { class block_api_impl; @@ -41,5 +41,5 @@ class block_api std::unique_ptr< block_api_impl > my; }; -} } } //steem::plugins::block_api +} } } //sophiatx::plugins::block_api diff --git a/libraries/plugins/apis/block_api/include/sophiatx/plugins/block_api/block_api_args.hpp b/libraries/plugins/apis/block_api/include/sophiatx/plugins/block_api/block_api_args.hpp new file mode 100644 index 00000000..97870d50 --- /dev/null +++ b/libraries/plugins/apis/block_api/include/sophiatx/plugins/block_api/block_api_args.hpp @@ -0,0 +1,48 @@ +#pragma once +#include + +#include +#include +#include + +#include + +namespace sophiatx { namespace plugins { namespace block_api { + +/* get_block_header */ + +struct get_block_header_args +{ + uint32_t block_num; +}; + +struct get_block_header_return +{ + optional< block_header > header; +}; + +/* get_block */ +struct get_block_args +{ + uint32_t block_num; +}; + +struct get_block_return +{ + optional< api_signed_block_object > block; +}; + +} } } // sophiatx::block_api + +FC_REFLECT( sophiatx::plugins::block_api::get_block_header_args, + (block_num) ) + +FC_REFLECT( sophiatx::plugins::block_api::get_block_header_return, + (header) ) + +FC_REFLECT( sophiatx::plugins::block_api::get_block_args, + (block_num) ) + +FC_REFLECT( sophiatx::plugins::block_api::get_block_return, + (block) ) + diff --git a/libraries/plugins/apis/block_api/include/steem/plugins/block_api/block_api_objects.hpp b/libraries/plugins/apis/block_api/include/sophiatx/plugins/block_api/block_api_objects.hpp similarity index 52% rename from libraries/plugins/apis/block_api/include/steem/plugins/block_api/block_api_objects.hpp rename to libraries/plugins/apis/block_api/include/sophiatx/plugins/block_api/block_api_objects.hpp index 1b954a22..d5f812a1 100644 --- a/libraries/plugins/apis/block_api/include/steem/plugins/block_api/block_api_objects.hpp +++ b/libraries/plugins/apis/block_api/include/sophiatx/plugins/block_api/block_api_objects.hpp @@ -1,17 +1,16 @@ #pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include -namespace steem { namespace plugins { namespace block_api { +namespace sophiatx { namespace plugins { namespace block_api { -using namespace steem::chain; +using namespace sophiatx::chain; struct api_signed_block_object : public signed_block { @@ -30,9 +29,9 @@ struct api_signed_block_object : public signed_block vector< transaction_id_type > transaction_ids; }; -} } } // steem::plugins::database_api +} } } // sophiatx::plugins::database_api -FC_REFLECT_DERIVED( steem::plugins::block_api::api_signed_block_object, (steem::protocol::signed_block), +FC_REFLECT_DERIVED( sophiatx::plugins::block_api::api_signed_block_object, (sophiatx::protocol::signed_block), (block_id) (signing_key) (transaction_ids) diff --git a/libraries/plugins/apis/block_api/include/steem/plugins/block_api/block_api_plugin.hpp b/libraries/plugins/apis/block_api/include/sophiatx/plugins/block_api/block_api_plugin.hpp similarity index 60% rename from libraries/plugins/apis/block_api/include/steem/plugins/block_api/block_api_plugin.hpp rename to libraries/plugins/apis/block_api/include/sophiatx/plugins/block_api/block_api_plugin.hpp index eacd9f72..ecb815b0 100644 --- a/libraries/plugins/apis/block_api/include/steem/plugins/block_api/block_api_plugin.hpp +++ b/libraries/plugins/apis/block_api/include/sophiatx/plugins/block_api/block_api_plugin.hpp @@ -1,14 +1,14 @@ #pragma once -#include -#include +#include +#include #include -namespace steem { namespace plugins { namespace block_api { +namespace sophiatx { namespace plugins { namespace block_api { using namespace appbase; -#define STEEM_BLOCK_API_PLUGIN_NAME "block_api" +#define SOPHIATX_BLOCK_API_PLUGIN_NAME "block_api" class block_api_plugin : public plugin< block_api_plugin > { @@ -17,11 +17,11 @@ class block_api_plugin : public plugin< block_api_plugin > virtual ~block_api_plugin(); APPBASE_PLUGIN_REQUIRES( - (steem::plugins::json_rpc::json_rpc_plugin) - (steem::plugins::chain::chain_plugin) + (sophiatx::plugins::json_rpc::json_rpc_plugin) + (sophiatx::plugins::chain::chain_plugin) ) - static const std::string& name() { static std::string name = STEEM_BLOCK_API_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_BLOCK_API_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, @@ -33,4 +33,4 @@ class block_api_plugin : public plugin< block_api_plugin > std::shared_ptr< class block_api > api; }; -} } } // steem::plugins::block_api +} } } // sophiatx::plugins::block_api diff --git a/libraries/plugins/apis/block_api/include/steem/plugins/block_api/block_api_args.hpp b/libraries/plugins/apis/block_api/include/steem/plugins/block_api/block_api_args.hpp deleted file mode 100644 index 40eb3f6f..00000000 --- a/libraries/plugins/apis/block_api/include/steem/plugins/block_api/block_api_args.hpp +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once -#include - -#include -#include -#include - -#include - -namespace steem { namespace plugins { namespace block_api { - -/* get_block_header */ - -struct get_block_header_args -{ - uint32_t block_num; -}; - -struct get_block_header_return -{ - optional< block_header > header; -}; - -/* get_block */ -struct get_block_args -{ - uint32_t block_num; -}; - -struct get_block_return -{ - optional< api_signed_block_object > block; -}; - -} } } // steem::block_api - -FC_REFLECT( steem::plugins::block_api::get_block_header_args, - (block_num) ) - -FC_REFLECT( steem::plugins::block_api::get_block_header_return, - (header) ) - -FC_REFLECT( steem::plugins::block_api::get_block_args, - (block_num) ) - -FC_REFLECT( steem::plugins::block_api::get_block_return, - (block) ) - diff --git a/libraries/plugins/apis/chain_api/CMakeLists.txt b/libraries/plugins/apis/chain_api/CMakeLists.txt index 12c0240e..46531ce5 100644 --- a/libraries/plugins/apis/chain_api/CMakeLists.txt +++ b/libraries/plugins/apis/chain_api/CMakeLists.txt @@ -1,4 +1,4 @@ -file( GLOB HEADERS "include/steem/plugins/chain_api/*.hpp" ) +file( GLOB HEADERS "include/sophiatx/plugins/chain_api/*.hpp" ) set( SOURCES chain_api.cpp chain_api_plugin.cpp ) add_library( chain_api_plugin ${SOURCES} ${HEADERS} ) diff --git a/libraries/plugins/apis/chain_api/chain_api.cpp b/libraries/plugins/apis/chain_api/chain_api.cpp index 67f7e2c5..58f70a3f 100644 --- a/libraries/plugins/apis/chain_api/chain_api.cpp +++ b/libraries/plugins/apis/chain_api/chain_api.cpp @@ -1,7 +1,7 @@ -#include -#include +#include +#include -namespace steem { namespace plugins { namespace chain { +namespace sophiatx { namespace plugins { namespace chain { namespace detail { @@ -76,7 +76,7 @@ DEFINE_API_IMPL( chain_api_impl, push_transaction ) chain_api::chain_api(): my( new detail::chain_api_impl() ) { - JSON_RPC_REGISTER_API( STEEM_CHAIN_API_PLUGIN_NAME ); + JSON_RPC_REGISTER_API( SOPHIATX_CHAIN_API_PLUGIN_NAME ); } chain_api::~chain_api() {} @@ -86,4 +86,4 @@ DEFINE_LOCKLESS_APIS( chain_api, (push_transaction) ) -} } } //steem::plugins::chain +} } } //sophiatx::plugins::chain diff --git a/libraries/plugins/apis/chain_api/chain_api_plugin.cpp b/libraries/plugins/apis/chain_api/chain_api_plugin.cpp index d553f61e..bf881f53 100644 --- a/libraries/plugins/apis/chain_api/chain_api_plugin.cpp +++ b/libraries/plugins/apis/chain_api/chain_api_plugin.cpp @@ -1,8 +1,8 @@ -#include -#include +#include +#include -namespace steem { namespace plugins { namespace chain { +namespace sophiatx { namespace plugins { namespace chain { chain_api_plugin::chain_api_plugin() {} chain_api_plugin::~chain_api_plugin() {} @@ -17,4 +17,4 @@ void chain_api_plugin::plugin_initialize( const variables_map& options ) void chain_api_plugin::plugin_startup() {} void chain_api_plugin::plugin_shutdown() {} -} } } // steem::plugins::chain +} } } // sophiatx::plugins::chain diff --git a/libraries/plugins/apis/chain_api/include/steem/plugins/chain_api/chain_api.hpp b/libraries/plugins/apis/chain_api/include/sophiatx/plugins/chain_api/chain_api.hpp similarity index 52% rename from libraries/plugins/apis/chain_api/include/steem/plugins/chain_api/chain_api.hpp rename to libraries/plugins/apis/chain_api/include/sophiatx/plugins/chain_api/chain_api.hpp index c694fc05..2a4c5021 100644 --- a/libraries/plugins/apis/chain_api/include/steem/plugins/chain_api/chain_api.hpp +++ b/libraries/plugins/apis/chain_api/include/sophiatx/plugins/chain_api/chain_api.hpp @@ -1,17 +1,17 @@ #pragma once -#include +#include -#include +#include #include -namespace steem { namespace plugins { namespace chain { +namespace sophiatx { namespace plugins { namespace chain { namespace detail { class chain_api_impl; } struct push_block_args { - steem::chain::signed_block block; + sophiatx::chain::signed_block block; bool currently_syncing = false; }; @@ -22,7 +22,7 @@ struct push_block_return optional error; }; -typedef steem::chain::signed_transaction push_transaction_args; +typedef sophiatx::chain::signed_transaction push_transaction_args; struct push_transaction_return { @@ -45,8 +45,8 @@ class chain_api std::unique_ptr< detail::chain_api_impl > my; }; -} } } // steem::plugins::chain +} } } // sophiatx::plugins::chain -FC_REFLECT( steem::plugins::chain::push_block_args, (block)(currently_syncing) ) -FC_REFLECT( steem::plugins::chain::push_block_return, (success)(error) ) -FC_REFLECT( steem::plugins::chain::push_transaction_return, (success)(error) ) +FC_REFLECT( sophiatx::plugins::chain::push_block_args, (block)(currently_syncing) ) +FC_REFLECT( sophiatx::plugins::chain::push_block_return, (success)(error) ) +FC_REFLECT( sophiatx::plugins::chain::push_transaction_return, (success)(error) ) diff --git a/libraries/plugins/apis/chain_api/include/steem/plugins/chain_api/chain_api_plugin.hpp b/libraries/plugins/apis/chain_api/include/sophiatx/plugins/chain_api/chain_api_plugin.hpp similarity index 56% rename from libraries/plugins/apis/chain_api/include/steem/plugins/chain_api/chain_api_plugin.hpp rename to libraries/plugins/apis/chain_api/include/sophiatx/plugins/chain_api/chain_api_plugin.hpp index 53199711..f194926f 100644 --- a/libraries/plugins/apis/chain_api/include/steem/plugins/chain_api/chain_api_plugin.hpp +++ b/libraries/plugins/apis/chain_api/include/sophiatx/plugins/chain_api/chain_api_plugin.hpp @@ -1,13 +1,13 @@ #pragma once -#include -#include +#include +#include #include -#define STEEM_CHAIN_API_PLUGIN_NAME "chain_api" +#define SOPHIATX_CHAIN_API_PLUGIN_NAME "chain_api" -namespace steem { namespace plugins { namespace chain { +namespace sophiatx { namespace plugins { namespace chain { using namespace appbase; @@ -15,15 +15,15 @@ class chain_api_plugin : public plugin< chain_api_plugin > { public: APPBASE_PLUGIN_REQUIRES( - (steem::plugins::chain::chain_plugin) - (steem::plugins::json_rpc::json_rpc_plugin) + (sophiatx::plugins::chain::chain_plugin) + (sophiatx::plugins::json_rpc::json_rpc_plugin) ) chain_api_plugin(); virtual ~chain_api_plugin(); static const std::string& name() - { static std::string name = STEEM_CHAIN_API_PLUGIN_NAME; return name; } + { static std::string name = SOPHIATX_CHAIN_API_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, options_description& cfg ) override; @@ -35,4 +35,4 @@ class chain_api_plugin : public plugin< chain_api_plugin > std::shared_ptr< class chain_api > api; }; -} } } // steem::plugins::chain +} } } // sophiatx::plugins::chain diff --git a/libraries/plugins/apis/condenser_api/CMakeLists.txt b/libraries/plugins/apis/condenser_api/CMakeLists.txt index c6f1471d..b182518e 100644 --- a/libraries/plugins/apis/condenser_api/CMakeLists.txt +++ b/libraries/plugins/apis/condenser_api/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB HEADERS "include/steem/condenser_api_plugin/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/condenser_api/*.hpp") add_library( condenser_api_plugin condenser_api.cpp condenser_api_plugin.cpp @@ -11,12 +11,10 @@ target_link_libraries( condenser_api_plugin account_history_api_plugin database_api_plugin block_api_plugin - follow_api_plugin - market_history_api_plugin network_broadcast_api_plugin - tags_api_plugin witness_api_plugin - steem_utilities ) + custom_api_plugin + sophiatx_utilities ) target_include_directories( condenser_api_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) if( CLANG_TIDY_EXE ) @@ -33,4 +31,4 @@ install( TARGETS LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) -install( FILES ${HEADERS} DESTINATION "include/steem/condenser_api_plugin" ) +install( FILES ${HEADERS} DESTINATION "include/sophiatx/condenser_api_plugin" ) diff --git a/libraries/plugins/apis/condenser_api/condenser_api.cpp b/libraries/plugins/apis/condenser_api/condenser_api.cpp index 192e6af6..e8b0f282 100644 --- a/libraries/plugins/apis/condenser_api/condenser_api.cpp +++ b/libraries/plugins/apis/condenser_api/condenser_api.cpp @@ -1,20 +1,17 @@ -#include -#include +#include +#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include -#include +#include -#include -#include +#include #include @@ -24,7 +21,7 @@ #define CHECK_ARG_SIZE( s ) \ FC_ASSERT( args.size() == s, "Expected #s argument(s), was ${n}", ("n", args.size()) ); -namespace steem { namespace plugins { namespace condenser_api { +namespace sophiatx { namespace plugins { namespace condenser_api { namespace detail { @@ -35,7 +32,6 @@ namespace detail DECLARE_API_IMPL( (get_version) - (get_trending_tags) (get_state) (get_active_witnesses) (get_block_header) @@ -49,7 +45,6 @@ namespace detail (get_witness_schedule) (get_hardfork_version) (get_next_scheduled_hardfork) - (get_reward_fund) (get_key_references) (get_accounts) (get_account_references) @@ -59,71 +54,29 @@ namespace detail (get_owner_history) (get_recovery_request) (get_escrow) - (get_withdraw_routes) - (get_account_bandwidth) - (get_savings_withdraw_from) - (get_savings_withdraw_to) - (get_vesting_delegations) - (get_expiring_vesting_delegations) (get_witnesses) - (get_conversion_requests) (get_witness_by_account) (get_witnesses_by_vote) (lookup_witness_accounts) (get_witness_count) - (get_open_orders) (get_transaction_hex) (get_transaction) (get_required_signatures) (get_potential_signatures) (verify_authority) (verify_account_authority) - (get_active_votes) - (get_account_votes) - (get_content) - (get_content_replies) - (get_tags_used_by_author) - (get_post_discussions_by_payout) - (get_comment_discussions_by_payout) - (get_discussions_by_trending) - (get_discussions_by_created) - (get_discussions_by_active) - (get_discussions_by_cashout) - (get_discussions_by_votes) - (get_discussions_by_children) - (get_discussions_by_hot) - (get_discussions_by_feed) - (get_discussions_by_blog) - (get_discussions_by_comments) - (get_discussions_by_promoted) - (get_replies_by_last_update) - (get_discussions_by_author_before_date) + // (get_account_votes) (get_account_history) (broadcast_transaction) (broadcast_transaction_synchronous) (broadcast_block) - (get_followers) - (get_following) - (get_follow_count) - (get_feed_entries) - (get_feed) - (get_blog_entries) - (get_blog) - (get_account_reputations) - (get_reblogged_by) - (get_blog_authors) - (get_ticker) - (get_volume) - (get_order_book) - (get_trade_history) - (get_recent_trades) - (get_market_history) - (get_market_history_buckets) + (get_applications) + (get_promotion_pool_balance) + (get_received_documents) + (get_application_buyings) ) - void recursively_fetch_content( state& _state, tags::discussion& root, set& referenced_accounts ); - void set_pending_payout( discussion& d ); chain::database& _db; @@ -132,10 +85,8 @@ namespace detail std::shared_ptr< account_history::account_history_api > _account_history_api; std::shared_ptr< account_by_key::account_by_key_api > _account_by_key_api; std::shared_ptr< network_broadcast_api::network_broadcast_api > _network_broadcast_api; - std::shared_ptr< tags::tags_api > _tags_api; - std::shared_ptr< follow::follow_api > _follow_api; - std::shared_ptr< market_history::market_history_api > _market_history_api; std::shared_ptr< witness::witness_api > _witness_api; + std::shared_ptr< custom::custom_api > _custom_api; }; DEFINE_API_IMPL( condenser_api_impl, get_version ) @@ -143,28 +94,13 @@ namespace detail CHECK_ARG_SIZE( 0 ) return get_version_return ( - fc::string( STEEM_BLOCKCHAIN_VERSION ), - fc::string( steem::utilities::git_revision_sha ), - fc::string( fc::git_revision_sha ) + fc::string( SOPHIATX_BLOCKCHAIN_VERSION ), + fc::string( sophiatx::utilities::git_revision_sha ), + fc::string( fc::git_revision_sha ), + fc::string( _database_api->get_dynamic_global_properties({}).chain_id ) ); } - DEFINE_API_IMPL( condenser_api_impl, get_trending_tags ) - { - CHECK_ARG_SIZE( 2 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto tags = _tags_api->get_trending_tags( { args[0].as< string >(), args[1].as< uint32_t >() } ).tags; - vector< api_tag_object > result; - - for( const auto& t : tags ) - { - result.push_back( api_tag_object( t ) ); - } - - return result; - } - DEFINE_API_IMPL( condenser_api_impl, get_state ) { CHECK_ARG_SIZE( 1 ) @@ -180,18 +116,6 @@ namespace detail if( path.size() && path[0] == '/' ) path = path.substr(1); /// remove '/' from front - if( !path.size() ) - path = "trending"; - - /// FETCH CATEGORY STATE - if( _tags_api ) - { - auto trending_tags = _tags_api->get_trending_tags( { std::string(), 50 } ).tags; - for( const auto& t : trending_tags ) - { - _state.tag_idx.trending.push_back( t.name ); - } - } /// END FETCH CATEGORY STATE set accounts; @@ -206,15 +130,6 @@ namespace detail auto acnt = part[0].substr(1); _state.accounts[acnt] = extended_account( database_api::api_account_object( _db.get_account( acnt ), _db ) ); - if( _tags_api ) - _state.accounts[acnt].tags_usage = _tags_api->get_tags_used_by_author( { acnt } ).tags; - - if( _follow_api ) - { - _state.accounts[acnt].guest_bloggers = _follow_api->get_blog_authors( { acnt } ).blog_authors; - _state.accounts[acnt].reputation = _follow_api->get_account_reputations( { acnt, 1 } ).reputations[0].reputation; - } - auto& eacnt = _state.accounts[acnt]; if( part[1] == "transfers" ) { @@ -230,41 +145,25 @@ namespace detail case operation::tag::value: case operation::tag::value: case operation::tag::value: - case operation::tag::value: - case operation::tag::value: - case operation::tag::value: - case operation::tag::value: - case operation::tag::value: - case operation::tag::value: - case operation::tag::value: case operation::tag::value: case operation::tag::value: case operation::tag::value: case operation::tag::value: - case operation::tag::value: - case operation::tag::value: - case operation::tag::value: if( item.second.op.visit( visitor ) ) { eacnt.transfer_history.emplace( item.first, api_operation_object( item.second, visitor.l_op ) ); } break; - case operation::tag::value: - // eacnt.post_history[item.first] = item.second; - break; - case operation::tag::value: - case operation::tag::value: - // eacnt.market_history[item.first] = item.second; - break; - case operation::tag::value: case operation::tag::value: case operation::tag::value: + //TODO_SOPHIA Shall we return the vote history??? // eacnt.vote_history[item.first] = item.second; break; case operation::tag::value: case operation::tag::value: case operation::tag::value: - case operation::tag::value: + case operation::tag::value: + case operation::tag::value: case operation::tag::value: default: @@ -276,100 +175,8 @@ namespace detail } } } - else if( part[1] == "recent-replies" ) - { - if( _tags_api ) - { - auto replies = _tags_api->get_replies_by_last_update( { acnt, "", 50 } ).discussions; - eacnt.recent_replies = vector< string >(); - - for( const auto& reply : replies ) - { - string reply_ref = reply.author + "/" + reply.permlink; - _state.content[ reply_ref ] = reply; - - if( _follow_api ) - { - _state.accounts[ reply_ref ].reputation = _follow_api->get_account_reputations( { reply.author, 1 } ).reputations[0].reputation; - } - - eacnt.recent_replies->push_back( reply_ref ); - } - } - } - else if( part[1] == "posts" || part[1] == "comments" ) - { - #ifndef IS_LOW_MEM - int count = 0; - const auto& pidx = _db.get_index< comment_index, by_author_last_update >(); - auto itr = pidx.lower_bound( acnt ); - eacnt.comments = vector(); - - while( itr != pidx.end() && itr->author == acnt && count < 20 ) - { - if( itr->parent_author.size() ) - { - const auto link = acnt + "/" + to_string( itr->permlink ); - eacnt.comments->push_back( link ); - _state.content[ link ] = tags::discussion( *itr, _db ); - - set_pending_payout( _state.content[ link ] ); - - ++count; - } - - ++itr; - } - #endif - } - else if( part[1].size() == 0 || part[1] == "blog" ) - { - if( _follow_api ) - { - auto blog = _follow_api->get_blog_entries( { eacnt.name, 0, 20 } ).blog; - eacnt.blog = vector(); - eacnt.blog->reserve(blog.size()); - - for( const auto& b: blog ) - { - const auto link = b.author + "/" + b.permlink; - eacnt.blog->push_back( link ); - _state.content[ link ] = tags::discussion( _db.get_comment( b.author, b.permlink ), _db ); - - set_pending_payout( _state.content[ link ] ); - - if( b.reblog_on > time_point_sec() ) - { - _state.content[ link ].first_reblogged_on = b.reblog_on; - } - } - } - } - else if( part[1].size() == 0 || part[1] == "feed" ) - { - if( _follow_api ) - { - auto feed = _follow_api->get_feed_entries( { eacnt.name, 0, 20 } ).feed; - eacnt.feed = vector(); - eacnt.feed->reserve( feed.size()); - - for( const auto& f: feed ) - { - const auto link = f.author + "/" + f.permlink; - eacnt.feed->push_back( link ); - _state.content[ link ] = tags::discussion( _db.get_comment( f.author, f.permlink ), _db ); + //else if( part[1].size() == 0 || part[1] == "blog" ) - set_pending_payout( _state.content[ link ] ); - - if( f.reblog_by.empty() == false) - { - _state.content[link].first_reblogged_by = f.reblog_by[0]; - _state.content[link].reblogged_by = f.reblog_by; - _state.content[link].first_reblogged_on = f.reblog_on; - } - } - } - } } /// pull a complete discussion else if( part[1].size() && part[1][0] == '@' ) @@ -378,275 +185,23 @@ namespace detail auto slug = part[2]; string key = account + "/" + slug; - if( _tags_api ) - { - auto dis = _tags_api->get_discussion( { account, slug } ); - recursively_fetch_content( _state, dis, accounts ); - _state.content[key] = std::move(dis); - } } else if( part[0] == "witnesses" || part[0] == "~witnesses") { - auto wits = get_witnesses_by_vote( (vector< fc::variant >){ fc::variant(""), fc::variant(50) } ); + auto wits = get_witnesses_by_vote( { fc::variant(""), fc::variant(50) } ); for( const auto& w : wits ) { _state.witnesses[w.owner] = w; } } - else if( part[0] == "trending" ) - { - if( _tags_api ) - { - tags::discussion_query q; - q.tag = tag; - q.limit = 20; - q.truncate_body = 1024; - auto trending_disc = _tags_api->get_discussions_by_trending( q ).discussions; - - auto& didx = _state.discussion_idx[tag]; - for( const auto& d : trending_disc ) - { - string key = d.author + "/" + d.permlink; - didx.trending.push_back( key ); - if( d.author.size() ) accounts.insert(d.author); - _state.content[key] = std::move(d); - } - } - } else if( part[0] == "payout" ) { - if( _tags_api ) - { - tags::discussion_query q; - q.tag = tag; - q.limit = 20; - q.truncate_body = 1024; - auto trending_disc = _tags_api->get_post_discussions_by_payout( q ).discussions; - - auto& didx = _state.discussion_idx[tag]; - for( const auto& d : trending_disc ) - { - string key = d.author + "/" + d.permlink; - didx.payout.push_back( key ); - if( d.author.size() ) accounts.insert(d.author); - _state.content[key] = std::move(d); - } - } - } - else if( part[0] == "payout_comments" ) - { - if( _tags_api ) - { - tags::discussion_query q; - q.tag = tag; - q.limit = 20; - q.truncate_body = 1024; - auto trending_disc = _tags_api->get_comment_discussions_by_payout( q ).discussions; - - auto& didx = _state.discussion_idx[tag]; - for( const auto& d : trending_disc ) - { - string key = d.author + "/" + d.permlink; - didx.payout_comments.push_back( key ); - if( d.author.size() ) accounts.insert(d.author); - _state.content[key] = std::move(d); - } - } - } - else if( part[0] == "promoted" ) - { - if( _tags_api ) - { - tags::discussion_query q; - q.tag = tag; - q.limit = 20; - q.truncate_body = 1024; - auto trending_disc = _tags_api->get_discussions_by_promoted( q ).discussions; - - auto& didx = _state.discussion_idx[tag]; - for( const auto& d : trending_disc ) - { - string key = d.author + "/" + d.permlink; - didx.promoted.push_back( key ); - if( d.author.size() ) accounts.insert(d.author); - _state.content[key] = std::move(d); - } - } - } - else if( part[0] == "responses" ) - { - if( _tags_api ) - { - tags::discussion_query q; - q.tag = tag; - q.limit = 20; - q.truncate_body = 1024; - auto trending_disc = _tags_api->get_discussions_by_children( q ).discussions; - - auto& didx = _state.discussion_idx[tag]; - for( const auto& d : trending_disc ) - { - string key = d.author + "/" + d.permlink; - didx.responses.push_back( key ); - if( d.author.size() ) accounts.insert(d.author); - _state.content[key] = std::move(d); - } - } - } - else if( !part[0].size() || part[0] == "hot" ) - { - if( _tags_api ) - { - tags::discussion_query q; - q.tag = tag; - q.limit = 20; - q.truncate_body = 1024; - auto trending_disc = _tags_api->get_discussions_by_hot( q ).discussions; - - auto& didx = _state.discussion_idx[tag]; - for( const auto& d : trending_disc ) - { - string key = d.author + "/" + d.permlink; - didx.hot.push_back( key ); - if( d.author.size() ) accounts.insert(d.author); - _state.content[key] = std::move(d); - } - } - } - else if( !part[0].size() || part[0] == "promoted" ) - { - if( _tags_api ) - { - tags::discussion_query q; - q.tag = tag; - q.limit = 20; - q.truncate_body = 1024; - auto trending_disc = _tags_api->get_discussions_by_promoted( q ).discussions; - - auto& didx = _state.discussion_idx[tag]; - for( const auto& d : trending_disc ) - { - string key = d.author + "/" + d.permlink; - didx.promoted.push_back( key ); - if( d.author.size() ) accounts.insert(d.author); - _state.content[key] = std::move(d); - } - } + //TODO_SOPHIA - payouts from mining } else if( part[0] == "votes" ) { - if( _tags_api ) - { - tags::discussion_query q; - q.tag = tag; - q.limit = 20; - q.truncate_body = 1024; - auto trending_disc = _tags_api->get_discussions_by_votes( q ).discussions; - - auto& didx = _state.discussion_idx[tag]; - for( const auto& d : trending_disc ) - { - string key = d.author + "/" + d.permlink; - didx.votes.push_back( key ); - if( d.author.size() ) accounts.insert(d.author); - _state.content[key] = std::move(d); - } - } - } - else if( part[0] == "cashout" ) - { - if( _tags_api ) - { - tags::discussion_query q; - q.tag = tag; - q.limit = 20; - q.truncate_body = 1024; - auto trending_disc = _tags_api->get_discussions_by_cashout( q ).discussions; - - auto& didx = _state.discussion_idx[tag]; - for( const auto& d : trending_disc ) - { - string key = d.author + "/" + d.permlink; - didx.cashout.push_back( key ); - if( d.author.size() ) accounts.insert(d.author); - _state.content[key] = std::move(d); - } - } - } - else if( part[0] == "active" ) - { - if( _tags_api ) - { - tags::discussion_query q; - q.tag = tag; - q.limit = 20; - q.truncate_body = 1024; - auto trending_disc = _tags_api->get_discussions_by_active( q ).discussions; - - auto& didx = _state.discussion_idx[tag]; - for( const auto& d : trending_disc ) - { - string key = d.author + "/" + d.permlink; - didx.active.push_back( key ); - if( d.author.size() ) accounts.insert(d.author); - _state.content[key] = std::move(d); - } - } - } - else if( part[0] == "created" ) - { - if( _tags_api ) - { - tags::discussion_query q; - q.tag = tag; - q.limit = 20; - q.truncate_body = 1024; - auto trending_disc = _tags_api->get_discussions_by_created( q ).discussions; - - auto& didx = _state.discussion_idx[tag]; - for( const auto& d : trending_disc ) - { - string key = d.author + "/" + d.permlink; - didx.created.push_back( key ); - if( d.author.size() ) accounts.insert(d.author); - _state.content[key] = std::move(d); - } - } - } - else if( part[0] == "recent" ) - { - if( _tags_api ) - { - tags::discussion_query q; - q.tag = tag; - q.limit = 20; - q.truncate_body = 1024; - auto trending_disc = _tags_api->get_discussions_by_created( q ).discussions; - - auto& didx = _state.discussion_idx[tag]; - for( const auto& d : trending_disc ) - { - string key = d.author + "/" + d.permlink; - didx.created.push_back( key ); - if( d.author.size() ) accounts.insert(d.author); - _state.content[key] = std::move(d); - } - } - } - else if( part[0] == "tags" ) - { - if( _tags_api ) - { - _state.tag_idx.trending.clear(); - auto trending_tags = _tags_api->get_trending_tags( { std::string(), 250 } ).tags; - for( const auto& t : trending_tags ) - { - string name = t.name; - _state.tag_idx.trending.push_back( name ); - _state.tags[ name ] = api_tag_object( t ); - } - } + //TODO_SOPHIA Shall we return the vote history??? } else { elog( "What... no matches" ); @@ -657,19 +212,9 @@ namespace detail _state.accounts.erase(""); _state.accounts[a] = extended_account( database_api::api_account_object( _db.get_account( a ), _db ) ); - if( _follow_api ) - { - _state.accounts[a].reputation = _follow_api->get_account_reputations( { a, 1 } ).reputations[0].reputation; - } - } - if( _tags_api ) - { - for( auto& d : _state.content ) - { - d.second.active_votes = _tags_api->get_active_votes( { d.second.author, d.second.permlink } ).votes; - } } + _state.witness_schedule = _database_api->get_witness_schedule( {} ); } @@ -743,8 +288,6 @@ namespace detail { auto reserve_ratio = _witness_api->get_reserve_ratio( {} ); gpo.average_block_size = reserve_ratio.average_block_size; - gpo.current_reserve_ratio = reserve_ratio.current_reserve_ratio; - gpo.max_virtual_bandwidth = reserve_ratio.max_virtual_bandwidth; } return gpo; @@ -758,14 +301,14 @@ namespace detail DEFINE_API_IMPL( condenser_api_impl, get_current_median_history_price ) { - CHECK_ARG_SIZE( 0 ) - return _database_api->get_current_price_feed( {} ); + CHECK_ARG_SIZE( 1 ) + return _database_api->get_current_price_feed( {args[0].as< asset_symbol_type >()} ); } DEFINE_API_IMPL( condenser_api_impl, get_feed_history ) { - CHECK_ARG_SIZE( 0 ) - return _database_api->get_feed_history( {} ); + CHECK_ARG_SIZE( 1 ) + return _database_api->get_feed_history( {args[0].as< asset_symbol_type>()} ); } DEFINE_API_IMPL( condenser_api_impl, get_witness_schedule ) @@ -790,16 +333,6 @@ namespace detail return shf; } - DEFINE_API_IMPL( condenser_api_impl, get_reward_fund ) - { - CHECK_ARG_SIZE( 1 ) - string name = args[0].as< string >(); - - auto fund = _db.find< reward_fund_object, by_name >( name ); - FC_ASSERT( fund != nullptr, "Invalid reward fund name" ); - - return api_reward_fund_object( *fund ); - } DEFINE_API_IMPL( condenser_api_impl, get_key_references ) { @@ -826,31 +359,6 @@ namespace detail { results.emplace_back( extended_account( database_api::api_account_object( *itr, _db ) ) ); - if( _follow_api ) - { - results.back().reputation = _follow_api->get_account_reputations( { itr->name, 1 } ).reputations[0].reputation; - } - - if( _witness_api ) - { - auto& e_acct = results.back(); - auto forum_bandwidth = _witness_api->get_account_bandwidth( { itr->name, witness::bandwidth_type::forum } ); - if( forum_bandwidth.bandwidth.valid() ) - { - e_acct.average_bandwidth = forum_bandwidth.bandwidth->average_bandwidth; - e_acct.lifetime_bandwidth = forum_bandwidth.bandwidth->lifetime_bandwidth; - e_acct.last_bandwidth_update = forum_bandwidth.bandwidth->last_bandwidth_update; - } - - auto market_bandwidth = _witness_api->get_account_bandwidth( { itr->name, witness::bandwidth_type::market } ); - if( market_bandwidth.bandwidth.valid() ) - { - e_acct.average_market_bandwidth = market_bandwidth.bandwidth->average_bandwidth; - e_acct.lifetime_market_bandwidth = market_bandwidth.bandwidth->lifetime_bandwidth; - e_acct.last_market_bandwidth_update = market_bandwidth.bandwidth->last_bandwidth_update; - } - } - auto vitr = vidx.lower_bound( boost::make_tuple( itr->name, account_name_type() ) ); while( vitr != vidx.end() && vitr->account == itr->name ) { results.back().witness_votes.insert( _db.get< witness_object, by_name >( vitr->witness ).owner ); @@ -864,7 +372,7 @@ namespace detail DEFINE_API_IMPL( condenser_api_impl, get_account_references ) { - FC_ASSERT( false, "condenser_api::get_account_references --- Needs to be refactored for Steem." ); + FC_ASSERT( false, "condenser_api::get_account_references --- Needs to be refactored for SophiaTX." ); } DEFINE_API_IMPL( condenser_api_impl, lookup_account_names ) @@ -954,119 +462,7 @@ namespace detail return result; } - DEFINE_API_IMPL( condenser_api_impl, get_withdraw_routes ) - { - FC_ASSERT( args.size() == 1 || args.size() == 2, "Expected 1-2 arguments, was ${n}", ("n", args.size()) ); - - auto account = args[0].as< string >(); - auto destination = args.size() == 2 ? args[1].as< withdraw_route_type >() : outgoing; - - get_withdraw_routes_return result; - - if( destination == outgoing || destination == all ) - { - auto routes = _database_api->find_withdraw_vesting_routes( { account, database_api::by_withdraw_route } ).routes; - result.insert( result.end(), routes.begin(), routes.end() ); - } - - if( destination == incoming || destination == all ) - { - auto routes = _database_api->find_withdraw_vesting_routes( { account, database_api::by_destination } ).routes; - result.insert( result.end(), routes.begin(), routes.end() ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_account_bandwidth ) - { - CHECK_ARG_SIZE( 2 ) - FC_ASSERT( _witness_api, "witness_api_plugin not enabled." ); - return _witness_api->get_account_bandwidth( - { - args[0].as< string >(), - args[1].as< witness::bandwidth_type >() - }).bandwidth; - } - - DEFINE_API_IMPL( condenser_api_impl, get_savings_withdraw_from ) - { - CHECK_ARG_SIZE( 1 ) - - auto withdrawals = _database_api->find_savings_withdrawals( - { - args[0].as< string >() - }).withdrawals; - - get_savings_withdraw_from_return result; - - for( auto& w : withdrawals ) - { - result.push_back( api_savings_withdraw_object( w ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_savings_withdraw_to ) - { - CHECK_ARG_SIZE( 1 ) - account_name_type account = args[0].as< account_name_type >(); - - get_savings_withdraw_to_return result; - - const auto& to_complete_idx = _db.get_index< savings_withdraw_index, by_to_complete >(); - auto itr = to_complete_idx.lower_bound( account ); - while( itr != to_complete_idx.end() && itr->to == account ) - { - result.push_back( api_savings_withdraw_object( *itr ) ); - ++itr; - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_vesting_delegations ) - { - FC_ASSERT( args.size() == 2 || args.size() == 3, "Expected 2-3 arguments, was ${n}", ("n", args.size()) ); - - database_api::list_vesting_delegations_args a; - account_name_type account = args[0].as< account_name_type >(); - a.start = fc::variant( (vector< variant >){ args[0], args[1] } ); - a.limit = args.size() == 3 ? args[2].as< uint32_t >() : 100; - a.order = database_api::by_delegation; - - auto delegations = _database_api->list_vesting_delegations( a ).delegations; - get_vesting_delegations_return result; - - for( auto itr = delegations.begin(); itr != delegations.end() && itr->delegator == account; ++itr ) - { - result.push_back( api_vesting_delegation_object( *itr ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_expiring_vesting_delegations ) - { - FC_ASSERT( args.size() == 2 || args.size() == 3, "Expected 2-3 arguments, was ${n}", ("n", args.size()) ); - - database_api::list_vesting_delegation_expirations_args a; - account_name_type account = args[0].as< account_name_type >(); - a.start = fc::variant( (vector< variant >){ args[0], args[1], fc::variant( vesting_delegation_expiration_id_type() ) } ); - a.limit = args.size() == 3 ? args[2].as< uint32_t >() : 100; - a.order = database_api::by_account_expiration; - - auto delegations = _database_api->list_vesting_delegation_expirations( a ).delegations; - get_expiring_vesting_delegations_return result; - - for( auto itr = delegations.begin(); itr != delegations.end() && itr->delegator == account; ++itr ) - { - result.push_back( api_vesting_delegation_expiration_object( *itr ) ); - } - return result; - } DEFINE_API_IMPL( condenser_api_impl, get_witnesses ) { @@ -1090,24 +486,6 @@ namespace detail return result; } - DEFINE_API_IMPL( condenser_api_impl, get_conversion_requests ) - { - CHECK_ARG_SIZE( 1 ) - auto requests = _database_api->find_sbd_conversion_requests( - { - args[0].as< account_name_type >() - }).requests; - - get_conversion_requests_return result; - - for( auto& r : requests ) - { - result.push_back( api_convert_request_object( r ) ); - } - - return result; - } - DEFINE_API_IMPL( condenser_api_impl, get_witness_by_account ) { CHECK_ARG_SIZE( 1 ) @@ -1175,36 +553,13 @@ namespace detail return result; } + DEFINE_API_IMPL( condenser_api_impl, get_witness_count ) { CHECK_ARG_SIZE( 0 ) return _db.get_index< witness_index >().indices().size(); } - DEFINE_API_IMPL( condenser_api_impl, get_open_orders ) - { - CHECK_ARG_SIZE( 1 ) - account_name_type owner = args[0].as< account_name_type >(); - - vector< api_limit_order_object > result; - const auto& idx = _db.get_index< limit_order_index, by_account >(); - auto itr = idx.lower_bound( owner ); - - while( itr != idx.end() && itr->seller == owner ) - { - result.push_back( *itr ); - - // if( itr->sell_price.base.symbol == STEEM_SYMBOL ) - // result.back().real_price = (~result.back().sell_price).to_real(); - // else - // result.back().real_price = (result.back().sell_price).to_real(); - result.back().real_price = 0.0; - ++itr; - } - - return result; - } - DEFINE_API_IMPL( condenser_api_impl, get_transaction_hex ) { CHECK_ARG_SIZE( 1 ) @@ -1246,14 +601,7 @@ namespace detail return _database_api->verify_account_authority( { args[0].as< account_name_type >(), args[1].as< flat_set< public_key_type > >() } ).valid; } - DEFINE_API_IMPL( condenser_api_impl, get_active_votes ) - { - CHECK_ARG_SIZE( 2 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - return _tags_api->get_active_votes( { args[0].as< account_name_type >(), args[1].as< string >() } ).votes; - } - +/* DEFINE_API_IMPL( condenser_api_impl, get_account_votes ) { CHECK_ARG_SIZE( 1 ) @@ -1281,294 +629,9 @@ namespace detail } return result; - } + }*/ - DEFINE_API_IMPL( condenser_api_impl, get_content ) - { - CHECK_ARG_SIZE( 2 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - return discussion( _tags_api->get_discussion( { args[0].as< account_name_type >(), args[1].as< string >() } ) ); - } - - DEFINE_API_IMPL( condenser_api_impl, get_content_replies ) - { - CHECK_ARG_SIZE( 2 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_content_replies( { args[0].as< account_name_type >(), args[1].as< string >() } ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_tags_used_by_author ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - return _tags_api->get_tags_used_by_author( { args[0].as< account_name_type >() } ).tags; - } - - DEFINE_API_IMPL( condenser_api_impl, get_post_discussions_by_payout ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_post_discussions_by_payout( - args[0].as< tags::get_post_discussions_by_payout_args >() ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_comment_discussions_by_payout ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_comment_discussions_by_payout( - args[0].as< tags::get_comment_discussions_by_payout_args >() ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_discussions_by_trending ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_discussions_by_trending( - args[0].as< tags::get_discussions_by_trending_args >() ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_discussions_by_created ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_discussions_by_created( - args[0].as< tags::get_discussions_by_created_args >() ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_discussions_by_active ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_discussions_by_active( - args[0].as< tags::get_discussions_by_active_args >() ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_discussions_by_cashout ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_discussions_by_cashout( - args[0].as< tags::get_discussions_by_cashout_args >() ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_discussions_by_votes ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_discussions_by_votes( - args[0].as< tags::get_discussions_by_votes_args >() ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_discussions_by_children ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_discussions_by_children( - args[0].as< tags::get_discussions_by_children_args >() ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_discussions_by_hot ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_discussions_by_hot( - args[0].as< tags::get_discussions_by_hot_args >() ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_discussions_by_feed ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_discussions_by_feed( - args[0].as< tags::get_discussions_by_feed_args >() ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_discussions_by_blog ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_discussions_by_blog( - args[0].as< tags::get_discussions_by_blog_args >() ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_discussions_by_comments ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_discussions_by_comments( - args[0].as< tags::get_discussions_by_comments_args >() ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_discussions_by_promoted ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_discussions_by_promoted( - args[0].as< tags::get_discussions_by_promoted_args >() ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_replies_by_last_update ) - { - CHECK_ARG_SIZE( 3 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_replies_by_last_update( { args[0].as< account_name_type >(), args[1].as< string >(), args[2].as< uint32_t >() } ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_discussions_by_author_before_date ) - { - CHECK_ARG_SIZE( 4 ) - FC_ASSERT( _tags_api, "tags_api_plugin not enabled." ); - - auto discussions = _tags_api->get_discussions_by_author_before_date( { args[0].as< account_name_type >(), args[1].as< string >(), args[2].as< time_point_sec >(), args[3].as< uint32_t >() } ).discussions; - vector< discussion > result; - - for( auto& d : discussions ) - { - result.push_back( discussion( d ) ); - } - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_account_history ) + DEFINE_API_IMPL( condenser_api_impl, get_account_history ) { CHECK_ARG_SIZE( 3 ) FC_ASSERT( _account_history_api, "account_history_api_plugin not enabled." ); @@ -1590,6 +653,14 @@ namespace detail return result; } + DEFINE_API_IMPL( condenser_api_impl, get_received_documents ) + { + CHECK_ARG_SIZE( 5 ) + FC_ASSERT( _custom_api, "custom_api_plugin not enabled." ); + + return _custom_api->get_received_documents( { args[0].as< uint32_t >(), args[1].as< string >(), args[2].as< string >(), args[3].as< string >(), args[4].as< uint32_t >() } ).history; + } + DEFINE_API_IMPL( condenser_api_impl, broadcast_transaction ) { CHECK_ARG_SIZE( 1 ) @@ -1614,254 +685,39 @@ namespace detail return _network_broadcast_api->broadcast_block( { signed_block( args[0].as< legacy_signed_block >() ) } ); } - DEFINE_API_IMPL( condenser_api_impl, get_followers ) - { - CHECK_ARG_SIZE( 4 ) - FC_ASSERT( _follow_api, "follow_api_plugin not enabled." ); - - return _follow_api->get_followers( { args[0].as< account_name_type >(), args[1].as< account_name_type >(), args[2].as< follow::follow_type >(), args[3].as< uint32_t >() } ).followers; - } - - DEFINE_API_IMPL( condenser_api_impl, get_following ) - { - CHECK_ARG_SIZE( 4 ) - FC_ASSERT( _follow_api, "follow_api_plugin not enabled." ); - - return _follow_api->get_following( { args[0].as< account_name_type >(), args[1].as< account_name_type >(), args[2].as< follow::follow_type >(), args[3].as< uint32_t >() } ).following; - } - - DEFINE_API_IMPL( condenser_api_impl, get_follow_count ) + DEFINE_API_IMPL( condenser_api_impl, get_applications ) { CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _follow_api, "follow_api_plugin not enabled." ); - - return _follow_api->get_follow_count( { args[0].as< account_name_type >() } ); - } - - DEFINE_API_IMPL( condenser_api_impl, get_feed_entries ) - { - FC_ASSERT( args.size() == 2 || args.size() == 3, "Expected 2-3 arguments, was ${n}", ("n", args.size()) ); - FC_ASSERT( _follow_api, "follow_api_plugin not enabled." ); - - return _follow_api->get_feed_entries( { args[0].as< account_name_type >(), args[1].as< uint32_t >(), args.size() == 3 ? args[2].as< uint32_t >() : 500 } ).feed; - } - - DEFINE_API_IMPL( condenser_api_impl, get_feed ) - { - FC_ASSERT( args.size() == 2 || args.size() == 3, "Expected 2-3 arguments, was ${n}", ("n", args.size()) ); - FC_ASSERT( _follow_api, "follow_api_plugin not enabled." ); - - return _follow_api->get_feed( { args[0].as< account_name_type >(), args[1].as< uint32_t >(), args.size() == 3 ? args[2].as< uint32_t >() : 500 } ).feed; - } - - DEFINE_API_IMPL( condenser_api_impl, get_blog_entries ) - { - FC_ASSERT( args.size() == 2 || args.size() == 3, "Expected 2-3 arguments, was ${n}", ("n", args.size()) ); - FC_ASSERT( _follow_api, "follow_api_plugin not enabled." ); - - return _follow_api->get_blog_entries( { args[0].as< account_name_type >(), args[1].as< uint32_t >(), args.size() == 3 ? args[2].as< uint32_t >() : 500 } ).blog; - } - - DEFINE_API_IMPL( condenser_api_impl, get_blog ) - { - FC_ASSERT( args.size() == 2 || args.size() == 3, "Expected 2-3 arguments, was ${n}", ("n", args.size()) ); - FC_ASSERT( _follow_api, "follow_api_plugin not enabled." ); - - return _follow_api->get_blog( { args[0].as< account_name_type >(), args[1].as< uint32_t >(), args.size() == 3 ? args[2].as< uint32_t >() : 500 } ).blog; - } - - DEFINE_API_IMPL( condenser_api_impl, get_account_reputations ) - { - FC_ASSERT( args.size() == 1 || args.size() == 2, "Expected 1-2 arguments, was ${n}", ("n", args.size()) ); - FC_ASSERT( _follow_api, "follow_api_plugin not enabled." ); - - return _follow_api->get_account_reputations( { args[0].as< account_name_type >(), args.size() == 2 ? args[1].as< uint32_t >() : 1000 } ).reputations; - } - - DEFINE_API_IMPL( condenser_api_impl, get_reblogged_by ) - { - CHECK_ARG_SIZE( 2 ) - FC_ASSERT( _follow_api, "follow_api_plugin not enabled." ); - - return _follow_api->get_reblogged_by( { args[0].as< account_name_type >(), args[1].as< string >() } ).accounts; - } - - DEFINE_API_IMPL( condenser_api_impl, get_blog_authors ) - { - CHECK_ARG_SIZE( 1 ) - FC_ASSERT( _follow_api, "follow_api_plugin not enabled." ); - - return _follow_api->get_blog_authors( { args[0].as< account_name_type >() } ).blog_authors; - } - - DEFINE_API_IMPL( condenser_api_impl, get_ticker ) - { - CHECK_ARG_SIZE( 0 ) - FC_ASSERT( _market_history_api, "market_history_api_plugin not enabled." ); + vector< string > app_names = args[0].as< vector< string > >(); - return get_ticker_return( _market_history_api->get_ticker( {} ) ); - } - - DEFINE_API_IMPL( condenser_api_impl, get_volume ) - { - CHECK_ARG_SIZE( 0 ) - FC_ASSERT( _market_history_api, "market_history_api_plugin not enabled." ); - - return get_volume_return( _market_history_api->get_volume( {} ) ); - } - - DEFINE_API_IMPL( condenser_api_impl, get_order_book ) - { - FC_ASSERT( args.size() == 0 || args.size() == 1, "Expected 0-1 arguments, was ${n}", ("n", args.size()) ); - FC_ASSERT( _market_history_api, "market_history_api_plugin not enabled." ); - - return get_order_book_return( _market_history_api->get_order_book( { args.size() == 1 ? args[0].as< uint32_t >() : 500 } ) ); - } - - DEFINE_API_IMPL( condenser_api_impl, get_trade_history ) - { - FC_ASSERT( args.size() == 2 || args.size() == 3, "Expected 2-3 arguments, was ${n}", ("n", args.size()) ); - FC_ASSERT( _market_history_api, "market_history_api_plugin not enabled." ); - - const auto& trades = _market_history_api->get_trade_history( { args[0].as< time_point_sec >(), args[1].as< time_point_sec >(), args.size() == 3 ? args[2].as< uint32_t >() : 1000 } ).trades; - get_trade_history_return result; - - for( const auto& t : trades ) result.push_back( market_trade( t ) ); - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_recent_trades ) - { - FC_ASSERT( args.size() == 0 || args.size() == 1, "Expected 0-1 arguments, was ${n}", ("n", args.size()) ); - FC_ASSERT( _market_history_api, "market_history_api_plugin not enabled." ); - - const auto& trades = _market_history_api->get_recent_trades( { args.size() == 1 ? args[0].as< uint32_t >() : 1000 } ).trades; - get_trade_history_return result; - - for( const auto& t : trades ) result.push_back( market_trade( t ) ); - - return result; - } - - DEFINE_API_IMPL( condenser_api_impl, get_market_history ) - { - CHECK_ARG_SIZE( 3 ) - FC_ASSERT( _market_history_api, "market_history_api_plugin not enabled." ); + vector< api_application_object > result; + result.reserve( app_names.size() ); - return _market_history_api->get_market_history( { args[0].as< uint32_t >(), args[1].as< time_point_sec >(), args[2].as< time_point_sec >() } ).buckets; - } - - DEFINE_API_IMPL( condenser_api_impl, get_market_history_buckets ) - { - CHECK_ARG_SIZE( 0 ) - FC_ASSERT( _market_history_api, "market_history_api_plugin not enabled." ); - - return _market_history_api->get_market_history_buckets( {} ).bucket_sizes; - } - - /** - * This call assumes root already stored as part of state, it will - * modify root.replies to contain links to the reply posts and then - * add the reply discussions to the state. This method also fetches - * any accounts referenced by authors. - * - */ - void condenser_api_impl::recursively_fetch_content( state& _state, tags::discussion& root, set& referenced_accounts ) - { - try + for( auto& name : app_names ) { - if( root.author.size() ) - referenced_accounts.insert( root.author ); + auto itr = _db.find< application_object, by_name >( name ); - if( _tags_api ) + if( itr ) { - auto replies = _tags_api->get_content_replies( { root.author, root.permlink } ).discussions; - for( auto& r : replies ) - { - try - { - recursively_fetch_content( _state, r, referenced_accounts ); - root.replies.push_back( r.author + "/" + r.permlink ); - _state.content[r.author + "/" + r.permlink] = std::move( r ); - - if( r.author.size() ) - referenced_accounts.insert( r.author ); - } - catch( const fc::exception& e ) - { - edump( (e.to_detail_string()) ); - } - } + result.push_back( api_application_object( database_api::api_application_object( *itr ) ) ); } } - FC_CAPTURE_AND_RETHROW( (root.author)(root.permlink) ) + return result; } - void condenser_api_impl::set_pending_payout( discussion& d ) + DEFINE_API_IMPL( condenser_api_impl, get_application_buyings ) { - if( !_tags_api ) - return; - - const auto& cidx = _db.get_index< tags::tag_index, tags::by_comment>(); - auto itr = cidx.lower_bound( d.id ); - if( itr != cidx.end() && itr->comment == d.id ) { - d.promoted = legacy_asset::from_asset( asset( itr->promoted_balance, SBD_SYMBOL ) ); - } - - const auto& props = _db.get_dynamic_global_properties(); - const auto& hist = _db.get_feed_history(); - - asset pot; - if( _db.has_hardfork( STEEM_HARDFORK_0_17__774 ) ) - pot = _db.get_reward_fund( _db.get_comment( d.author, d.permlink ) ).reward_balance; - else - pot = props.total_reward_fund_steem; - - if( !hist.current_median_history.is_null() ) pot = pot * hist.current_median_history; - - u256 total_r2 = 0; - if( _db.has_hardfork( STEEM_HARDFORK_0_17__774 ) ) - total_r2 = chain::util::to256( _db.get_reward_fund( _db.get_comment( d.author, d.permlink ) ).recent_claims ); - else - total_r2 = chain::util::to256( props.total_reward_shares2 ); - - if( total_r2 > 0 ) - { - uint128_t vshares; - if( _db.has_hardfork( STEEM_HARDFORK_0_17__774 ) ) - { - const auto& rf = _db.get_reward_fund( _db.get_comment( d.author, d.permlink ) ); - vshares = d.net_rshares.value > 0 ? chain::util::evaluate_reward_curve( d.net_rshares.value, rf.author_reward_curve, rf.content_constant ) : 0; - } - else - vshares = d.net_rshares.value > 0 ? chain::util::evaluate_reward_curve( d.net_rshares.value ) : 0; - - u256 r2 = chain::util::to256( vshares ); //to256(abs_net_rshares); - r2 *= pot.amount.value; - r2 /= total_r2; - - d.pending_payout_value = legacy_asset::from_asset( asset( static_cast(r2), pot.symbol ) ); - - if( _follow_api ) - { - d.author_reputation = _follow_api->get_account_reputations( follow::get_account_reputations_args( { d.author, 1} ) ).reputations[0].reputation; - } - } - - if( d.parent_author != STEEM_ROOT_POST_PARENT ) - d.cashout_time = _db.calculate_discussion_payout_time( _db.get< chain::comment_object >( d.id ) ); + CHECK_ARG_SIZE( 3 ) + FC_ASSERT( _database_api, "database_api_plugin not enabled." ); - if( d.body.size() > 1024*128 ) - d.body = "body pruned due to size"; - if( d.parent_author.size() > 0 && d.body.size() > 1024*16 ) - d.body = "comment pruned due to size"; + return _database_api->get_application_buyings({ args[0], args[1].as< uint32_t >(), args[2].as< string >()}).application_buyings; + } - const database_api::api_comment_object root( _db.get_comment( d.root_author, d.root_permlink ), _db ); - d.url = "/" + root.category + "/@" + root.author + "/" + root.permlink; - d.root_title = root.title; - if( root.id != d.id ) - d.url += "#@" + d.author + "/" + d.permlink; + + DEFINE_API_IMPL( condenser_api_impl, get_promotion_pool_balance ) + { + CHECK_ARG_SIZE(0); + return legacy_asset::from_asset(_database_api->get_promotion_pool_balance( {} )); } } // detail @@ -1869,7 +725,7 @@ namespace detail condenser_api::condenser_api() : my( new detail::condenser_api_impl() ) { - JSON_RPC_REGISTER_API( STEEM_CONDENSER_API_PLUGIN_NAME ); + JSON_RPC_REGISTER_API( SOPHIATX_CONDENSER_API_PLUGIN_NAME ); } condenser_api::~condenser_api() {} @@ -1896,21 +752,13 @@ void condenser_api::api_startup() if( network_broadcast != nullptr ) my->_network_broadcast_api = network_broadcast->api; - auto tags = appbase::app().find_plugin< tags::tags_api_plugin >(); - if( tags != nullptr ) - my->_tags_api = tags->api; - - auto follow = appbase::app().find_plugin< follow::follow_api_plugin >(); - if( follow != nullptr ) - my->_follow_api = follow->api; - - auto market_history = appbase::app().find_plugin< market_history::market_history_api_plugin >(); - if( market_history != nullptr ) - my->_market_history_api = market_history->api; - auto witness = appbase::app().find_plugin< witness::witness_api_plugin >(); if( witness != nullptr ) my->_witness_api = witness->api; + + auto custom = appbase::app().find_plugin< custom::custom_api_plugin>(); + if( custom != nullptr ) + my->_custom_api = custom->api; } DEFINE_LOCKLESS_APIS( condenser_api, @@ -1920,11 +768,9 @@ DEFINE_LOCKLESS_APIS( condenser_api, (broadcast_transaction) (broadcast_transaction_synchronous) (broadcast_block) - (get_market_history_buckets) ) DEFINE_READ_APIS( condenser_api, - (get_trending_tags) (get_state) (get_active_witnesses) (get_block_header) @@ -1937,7 +783,6 @@ DEFINE_READ_APIS( condenser_api, (get_witness_schedule) (get_hardfork_version) (get_next_scheduled_hardfork) - (get_reward_fund) (get_key_references) (get_accounts) (lookup_account_names) @@ -1946,62 +791,23 @@ DEFINE_READ_APIS( condenser_api, (get_owner_history) (get_recovery_request) (get_escrow) - (get_withdraw_routes) - (get_account_bandwidth) - (get_savings_withdraw_from) - (get_savings_withdraw_to) - (get_vesting_delegations) - (get_expiring_vesting_delegations) (get_witnesses) - (get_conversion_requests) (get_witness_by_account) (get_witnesses_by_vote) (lookup_witness_accounts) (get_witness_count) - (get_open_orders) (get_transaction_hex) (get_transaction) (get_required_signatures) (get_potential_signatures) (verify_authority) (verify_account_authority) - (get_active_votes) - (get_account_votes) - (get_content) - (get_content_replies) - (get_tags_used_by_author) - (get_post_discussions_by_payout) - (get_comment_discussions_by_payout) - (get_discussions_by_trending) - (get_discussions_by_created) - (get_discussions_by_active) - (get_discussions_by_cashout) - (get_discussions_by_votes) - (get_discussions_by_children) - (get_discussions_by_hot) - (get_discussions_by_feed) - (get_discussions_by_blog) - (get_discussions_by_comments) - (get_discussions_by_promoted) - (get_replies_by_last_update) - (get_discussions_by_author_before_date) + // (get_account_votes) (get_account_history) - (get_followers) - (get_following) - (get_follow_count) - (get_feed_entries) - (get_feed) - (get_blog_entries) - (get_blog) - (get_account_reputations) - (get_reblogged_by) - (get_blog_authors) - (get_ticker) - (get_volume) - (get_order_book) - (get_trade_history) - (get_recent_trades) - (get_market_history) + (get_applications) + (get_promotion_pool_balance) + (get_received_documents) + (get_application_buyings) ) -} } } // steem::plugins::condenser_api +} } } // sophiatx::plugins::condenser_api diff --git a/libraries/plugins/apis/condenser_api/condenser_api_legacy_asset.cpp b/libraries/plugins/apis/condenser_api/condenser_api_legacy_asset.cpp index 05d4e499..20f05804 100644 --- a/libraries/plugins/apis/condenser_api/condenser_api_legacy_asset.cpp +++ b/libraries/plugins/apis/condenser_api/condenser_api_legacy_asset.cpp @@ -1,122 +1,26 @@ -#include +#include -namespace steem { namespace plugins { namespace condenser_api { -uint32_t string_to_asset_num( const char* p, uint8_t decimals ) -{ - while( true ) - { - switch( *p ) - { - case ' ': case '\t': case '\n': case '\r': - ++p; - continue; - default: - break; - } - break; - } - - // [A-Z] - uint32_t asset_num = 0; - switch( *p ) - { - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': - case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': - { - // [A-Z]{1,6} - int shift = 0; - uint64_t name_u64 = 0; - while( true ) - { - if( ((*p) >= 'A') && ((*p) <= 'Z') ) - { - FC_ASSERT( shift < 64, "Cannot parse asset symbol" ); - name_u64 |= uint64_t(*p) << shift; - shift += 8; - ++p; - continue; - } - break; - } - switch( name_u64 ) - { - case STEEM_SYMBOL_U64: - FC_ASSERT( decimals == 3, "Incorrect decimal places" ); - asset_num = STEEM_ASSET_NUM_STEEM; - break; - case SBD_SYMBOL_U64: - FC_ASSERT( decimals == 3, "Incorrect decimal places" ); - asset_num = STEEM_ASSET_NUM_SBD; - break; - case VESTS_SYMBOL_U64: - FC_ASSERT( decimals == 6, "Incorrect decimal places" ); - asset_num = STEEM_ASSET_NUM_VESTS; - break; - default: - FC_ASSERT( false, "Cannot parse asset symbol" ); - } - break; - } - default: - FC_ASSERT( false, "Cannot parse asset symbol" ); - } - - // \s*\0 - while( true ) - { - switch( *p ) - { - case ' ': case '\t': case '\n': case '\r': - ++p; - continue; - case '\0': - break; - default: - FC_ASSERT( false, "Cannot parse asset symbol" ); - } - break; - } +namespace { - return asset_num; -} - -std::string asset_num_to_string( uint32_t asset_num ) +int64_t precision( const sophiatx::protocol::asset_symbol_type& symbol ) { - switch( asset_num ) - { -#ifdef IS_TEST_NET - case STEEM_ASSET_NUM_STEEM: - return "TESTS"; - case STEEM_ASSET_NUM_SBD: - return "TBD"; -#else - case STEEM_ASSET_NUM_STEEM: - return "STEEM"; - case STEEM_ASSET_NUM_SBD: - return "SBD"; -#endif - case STEEM_ASSET_NUM_VESTS: - return "VESTS"; - default: - return "UNKN"; // SMTs will return this symbol if returned as a legacy asset - } + /*static int64_t table[] = { + 1, 10, 100, 1000, 10000, + 100000, 1000000, 10000000, 100000000ll, + 1000000000ll, 10000000000ll, + 100000000000ll, 1000000000000ll, + 10000000000000ll, 100000000000000ll + }; + uint8_t d = symbol.decimals(); + return table[ d ];*/ + return SOPHIATX_SATOSHIS; } -int64_t precision( const asset_symbol_type& symbol ) -{ - static int64_t table[] = { - 1, 10, 100, 1000, 10000, - 100000, 1000000, 10000000, 100000000ll, - 1000000000ll, 10000000000ll, - 100000000000ll, 1000000000000ll, - 10000000000000ll, 100000000000000ll - }; - uint8_t d = symbol.decimals(); - return table[ d ]; } +namespace sophiatx { namespace plugins { namespace condenser_api { + string legacy_asset::to_string()const { int64_t prec = precision(symbol); @@ -130,7 +34,7 @@ string legacy_asset::to_string()const // leading 1. result += "." + fc::to_string(prec + fract).erase(0,1); } - return result + " " + asset_num_to_string( symbol.asset_num ); + return result + " " + symbol.to_string(); } legacy_asset legacy_asset::from_string( const string& from ) @@ -141,35 +45,28 @@ legacy_asset legacy_asset::from_string( const string& from ) auto space_pos = s.find( " " ); auto dot_pos = s.find( "." ); + if(dot_pos != std::string::npos) + { + FC_ASSERT( SOPHIATX_DECIMALS >= (space_pos - dot_pos - 1)); + } + FC_ASSERT( space_pos != std::string::npos ); legacy_asset result; string str_symbol = s.substr( space_pos + 1 ); - if( dot_pos != std::string::npos ) - { - FC_ASSERT( space_pos > dot_pos ); + result.symbol = asset_symbol_type::from_string( str_symbol.c_str() ); - auto intpart = s.substr( 0, dot_pos ); - auto fractpart = "1" + s.substr( dot_pos + 1, space_pos - dot_pos - 1 ); - uint8_t decimals = uint8_t( fractpart.size() - 1 ); + auto numpart = s.substr( 0, space_pos ); + auto dvalue = fc::to_double(numpart); + auto ivalue = static_cast(round(dvalue * precision( result.symbol ))); - result.symbol.asset_num = string_to_asset_num( str_symbol.c_str(), decimals ); + FC_ASSERT( ivalue >= 0); + FC_ASSERT( SOPHIATX_MAX_SHARE_SUPPLY >= ivalue); - int64_t prec = precision( result.symbol ); + result.amount = ivalue; - result.amount = fc::to_int64( intpart ); - result.amount.value *= prec; - result.amount.value += fc::to_int64( fractpart ); - result.amount.value -= prec; - } - else - { - auto intpart = s.substr( 0, space_pos ); - result.amount = fc::to_int64( intpart ); - result.symbol.asset_num = string_to_asset_num( str_symbol.c_str(), 0 ); - } return result; } FC_CAPTURE_AND_RETHROW( (from) ) diff --git a/libraries/plugins/apis/condenser_api/condenser_api_legacy_operations.cpp b/libraries/plugins/apis/condenser_api/condenser_api_legacy_operations.cpp index 57fdb9ed..c28abd47 100644 --- a/libraries/plugins/apis/condenser_api/condenser_api_legacy_operations.cpp +++ b/libraries/plugins/apis/condenser_api/condenser_api_legacy_operations.cpp @@ -1,4 +1,4 @@ -#include +#include #define LEGACY_PREFIX "legacy_" #define LEGACY_PREFIX_OFFSET (7) @@ -48,19 +48,19 @@ struct get_operation_name } }; -void to_variant( const steem::plugins::condenser_api::legacy_operation& var, fc::variant& vo ) +void to_variant( const sophiatx::plugins::condenser_api::legacy_operation& var, fc::variant& vo ) { var.visit( from_operation( vo ) ); } -void from_variant( const fc::variant& var, steem::plugins::condenser_api::legacy_operation& vo ) +void from_variant( const fc::variant& var, sophiatx::plugins::condenser_api::legacy_operation& vo ) { static std::map to_tag = []() { std::map name_map; - for( int i = 0; i < steem::plugins::condenser_api::legacy_operation::count(); ++i ) + for( int i = 0; i < sophiatx::plugins::condenser_api::legacy_operation::count(); ++i ) { - steem::plugins::condenser_api::legacy_operation tmp; + sophiatx::plugins::condenser_api::legacy_operation tmp; tmp.set_which(i); string n; tmp.visit( get_operation_name(n) ); diff --git a/libraries/plugins/apis/condenser_api/condenser_api_plugin.cpp b/libraries/plugins/apis/condenser_api/condenser_api_plugin.cpp index 2b7671d0..58110ca7 100644 --- a/libraries/plugins/apis/condenser_api/condenser_api_plugin.cpp +++ b/libraries/plugins/apis/condenser_api/condenser_api_plugin.cpp @@ -1,8 +1,8 @@ -#include -#include -#include +#include +#include +#include -namespace steem { namespace plugins { namespace condenser_api { +namespace sophiatx { namespace plugins { namespace condenser_api { condenser_api_plugin::condenser_api_plugin() {} condenser_api_plugin::~condenser_api_plugin() {} @@ -26,4 +26,4 @@ void condenser_api_plugin::plugin_startup() void condenser_api_plugin::plugin_shutdown() {} -} } } // steem::plugins::condenser_api +} } } // sophiatx::plugins::condenser_api diff --git a/libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api.hpp b/libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api.hpp new file mode 100644 index 00000000..a8de8c05 --- /dev/null +++ b/libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api.hpp @@ -0,0 +1,553 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +namespace sophiatx { namespace plugins { namespace condenser_api { + +using std::vector; +using fc::variant; +using fc::optional; + +using namespace chain; + +namespace detail{ class condenser_api_impl; } + +//typedef account_history::api_operation_object api_operation_object; +struct api_operation_object +{ + api_operation_object() {} + api_operation_object( const account_history::api_operation_object& obj, const legacy_operation& l_op ) : + trx_id( obj.trx_id ), + block( obj.block ), + trx_in_block( obj.trx_in_block ), + virtual_op( obj.virtual_op ), + timestamp( obj.timestamp ), + op( l_op ), + fee_payer( obj.fee_payer) + {} + + transaction_id_type trx_id; + uint32_t block = 0; + uint32_t trx_in_block = 0; + uint16_t op_in_trx = 0; + uint64_t virtual_op = 0; + fc::time_point_sec timestamp; + legacy_operation op; + string fee_payer; +}; + +typedef sophiatx::plugins::custom::received_object api_received_object; + + +struct api_account_object +{ + api_account_object( const database_api::api_account_object& a ) : + id( a.id ), + name( a.name ), + owner( a.owner ), + active( a.active ), + memo_key( a.memo_key ), + json_metadata( a.json_metadata ), + voting_proxy( a.voting_proxy ), + balance( legacy_asset::from_asset( a.balance ) ), + sponsoring_account(a.sponsoring_account), + vesting_shares( legacy_asset::from_asset( a.vesting_shares ) ), + vesting_withdraw_rate( legacy_asset::from_asset( a.vesting_withdraw_rate ) ), + to_withdraw( a.to_withdraw ) + { + sponsored_accounts.insert( sponsored_accounts.end(), a.sponsored_accounts.begin(), a.sponsored_accounts.end() ); + witness_votes.insert( witness_votes.end(), a.witness_votes.begin(), a.witness_votes.end() ); + + } + + + api_account_object(){} + + account_id_type id; + + account_name_type name; + authority owner; + authority active; + public_key_type memo_key; + string json_metadata; + account_name_type voting_proxy; + + legacy_asset balance; + + std::vector sponsored_accounts; + account_name_type sponsoring_account; + vector witness_votes; + + legacy_asset vesting_shares; + legacy_asset vesting_withdraw_rate; + + share_type to_withdraw; + +}; + +struct extended_account : public api_account_object +{ + extended_account(){} + extended_account( const database_api::api_account_object& a ) : + api_account_object( a ) {} + + + legacy_asset vesting_balance; /// convert vesting_shares to vesting sophiatx + map< uint64_t, api_operation_object > transfer_history; /// transfer to/from vesting + map< uint64_t, api_operation_object > other_history; + set< string > witness_votes; + /// posts recommened for this user +}; + + +struct extended_dynamic_global_properties +{ + extended_dynamic_global_properties() {} + extended_dynamic_global_properties( const database_api::api_dynamic_global_property_object& o ) : + head_block_number( o.head_block_number ), + head_block_id( o.head_block_id ), + time( o.time ), + current_witness( o.current_witness ), + + current_supply( legacy_asset::from_asset( o.current_supply ) ), + total_vesting_shares( legacy_asset::from_asset( o.total_vesting_shares ) ), + maximum_block_size( o.maximum_block_size ), + current_aslot( o.current_aslot ), + recent_slots_filled( o.recent_slots_filled ), + participation_count( o.participation_count ), + witness_required_vesting( legacy_asset::from_asset( o.witness_required_vesting ) ), + last_irreversible_block_num( o.last_irreversible_block_num ) + + {} + + uint32_t head_block_number = 0; + block_id_type head_block_id; + time_point_sec time; + account_name_type current_witness; + + legacy_asset current_supply; + legacy_asset total_vesting_shares; + + uint32_t maximum_block_size = 0; + uint64_t current_aslot = 0; + fc::uint128_t recent_slots_filled; + uint8_t participation_count = 0; + legacy_asset witness_required_vesting; + + + uint32_t last_irreversible_block_num = 0; + + int32_t average_block_size = 0; +}; + +struct legacy_chain_properties +{ + legacy_chain_properties() {} + legacy_chain_properties( const chain::chain_properties& c ) : + account_creation_fee( legacy_asset::from_asset( c.account_creation_fee ) ), + maximum_block_size( c.maximum_block_size ) + {} + + legacy_asset account_creation_fee; + uint32_t maximum_block_size = SOPHIATX_MIN_BLOCK_SIZE_LIMIT * 2; +}; + +struct api_witness_object +{ + api_witness_object() {} + api_witness_object( const database_api::api_witness_object& w ) : + id( w.id ), + owner( w.owner ), + created( w.created ), + url( w.url ), + total_missed( w.total_missed ), + last_aslot( w.last_aslot ), + last_confirmed_block_num( w.last_confirmed_block_num ), + signing_key( w.signing_key ), + props( w.props ), + votes( w.votes ), + virtual_last_update( w.virtual_last_update ), + virtual_position( w.virtual_position ), + virtual_scheduled_time( w.virtual_scheduled_time ), + running_version( w.running_version ), + hardfork_version_vote( w.hardfork_version_vote ), + hardfork_time_vote( w.hardfork_time_vote ) + { + for(const auto&i : w.submitted_exchange_rates) + submitted_exchange_rates.insert(i); + } + + witness_id_type id; + account_name_type owner; + time_point_sec created; + string url; + uint32_t total_missed = 0; + uint64_t last_aslot = 0; + uint64_t last_confirmed_block_num = 0; + public_key_type signing_key; + legacy_chain_properties props; + flat_map submitted_exchange_rates; + + share_type votes; + fc::uint128_t virtual_last_update; + fc::uint128_t virtual_position; + fc::uint128_t virtual_scheduled_time = fc::uint128_t::max_value(); + version running_version; + hardfork_version hardfork_version_vote; + time_point_sec hardfork_time_vote = SOPHIATX_GENESIS_TIME; +}; + +struct api_witness_schedule_object +{ + api_witness_schedule_object() {} + api_witness_schedule_object( const database_api::api_witness_schedule_object& w ) : + id( w.id ), + current_virtual_time( w.current_virtual_time ), + next_shuffle_block_num( w.next_shuffle_block_num ), + num_scheduled_witnesses( w.num_scheduled_witnesses ), + top19_weight( w.top19_weight ), + timeshare_weight( w.timeshare_weight ), + witness_pay_normalization_factor( w.witness_pay_normalization_factor ), + median_props( w.median_props ), + majority_version( w.majority_version ), + max_voted_witnesses( w.max_voted_witnesses ), + max_runner_witnesses( w.max_runner_witnesses ), + hardfork_required_witnesses( w.hardfork_required_witnesses ) + { + current_shuffled_witnesses.insert( current_shuffled_witnesses.begin(), w.current_shuffled_witnesses.begin(), w.current_shuffled_witnesses.end() ); + } + + witness_schedule_id_type id; + fc::uint128_t current_virtual_time; + uint32_t next_shuffle_block_num = 1; + vector< account_name_type > current_shuffled_witnesses; + uint8_t num_scheduled_witnesses = 1; + uint8_t top19_weight = 1; + uint8_t timeshare_weight = 5; + uint32_t witness_pay_normalization_factor = 25; + legacy_chain_properties median_props; + version majority_version; + uint8_t max_voted_witnesses = SOPHIATX_MAX_VOTED_WITNESSES_HF0; + uint8_t max_runner_witnesses = SOPHIATX_MAX_RUNNER_WITNESSES_HF0; + uint8_t hardfork_required_witnesses = SOPHIATX_HARDFORK_REQUIRED_WITNESSES; +}; + +struct api_feed_history_object +{ + api_feed_history_object() {} + api_feed_history_object( const database_api::api_feed_history_object& f ) : + current_median_price( f.current_median_history ) + { + for( auto& p : f.price_history ) + { + price_history.push_back( legacy_price( p ) ); + } + } + + feed_history_id_type id; + legacy_price current_median_price; + deque< legacy_price > price_history; +}; + + + +struct api_escrow_object +{ + api_escrow_object() {} + api_escrow_object( const database_api::api_escrow_object& e ) : + id( e.id ), + escrow_id( e.escrow_id ), + from( e.from ), + to( e.to ), + agent( e.agent ), + ratification_deadline( e.ratification_deadline ), + escrow_expiration( e.escrow_expiration ), + sophiatx_balance( legacy_asset::from_asset( e.sophiatx_balance ) ), + pending_fee( legacy_asset::from_asset( e.pending_fee ) ), + to_approved( e.to_approved ), + disputed( e.disputed ), + agent_approved( e.agent_approved ) + {} + + escrow_id_type id; + uint32_t escrow_id = 20; + account_name_type from; + account_name_type to; + account_name_type agent; + time_point_sec ratification_deadline; + time_point_sec escrow_expiration; + legacy_asset sophiatx_balance; + legacy_asset pending_fee; + bool to_approved = false; + bool disputed = false; + bool agent_approved = false; +}; + +struct api_application_object +{ + api_application_object( const database_api::api_application_object& a ) : + id( a.id ), + name( a.name ), + author( a.author ), + url( a.url ), + metadata( a.metadata ), + price_param( a.price_param ) + {} + + api_application_object() {} + + application_id_type id; + string name; + account_name_type author; + string url; + string metadata; + application_price_param price_param; +}; + +typedef sophiatx::plugins::database_api::api_application_buying_object api_application_buying_object; + +struct state +{ + string current_route; + + extended_dynamic_global_properties props; + + map< string, extended_account > accounts; + + map< string, api_witness_object > witnesses; + api_witness_schedule_object witness_schedule; + legacy_price feed_price; + string error; +}; + +struct scheduled_hardfork +{ + hardfork_version hf_version; + fc::time_point_sec live_time; +}; + +typedef vector< variant > get_version_args; + +struct get_version_return +{ + get_version_return() {} + get_version_return( fc::string bc_v, fc::string s_v, fc::string fc_v, fc::string ci_v ) + :blockchain_version( bc_v ), sophiatx_revision( s_v ), fc_revision( fc_v ), chain_id(ci_v) {} + + fc::string blockchain_version; + fc::string sophiatx_revision; + fc::string fc_revision; + fc::string chain_id; +}; + +typedef map< uint32_t, api_operation_object > get_account_history_return_type; +typedef map< uint64_t, api_received_object > get_received_documents_return_type; +typedef vector< api_application_buying_object > get_application_buyings_return_type; + + +#define DEFINE_API_ARGS( api_name, arg_type, return_type ) \ +typedef arg_type api_name ## _args; \ +typedef return_type api_name ## _return; + +/* API, args, return */ +DEFINE_API_ARGS( get_state, vector< variant >, state ) +DEFINE_API_ARGS( get_active_witnesses, vector< variant >, vector< account_name_type > ) +DEFINE_API_ARGS( get_block_header, vector< variant >, optional< block_header > ) +DEFINE_API_ARGS( get_block, vector< variant >, optional< legacy_signed_block > ) +DEFINE_API_ARGS( get_ops_in_block, vector< variant >, vector< api_operation_object > ) +DEFINE_API_ARGS( get_config, vector< variant >, fc::variant_object ) +DEFINE_API_ARGS( get_dynamic_global_properties, vector< variant >, extended_dynamic_global_properties ) +DEFINE_API_ARGS( get_chain_properties, vector< variant >, legacy_chain_properties ) +DEFINE_API_ARGS( get_current_median_history_price, vector< variant >, legacy_price ) +DEFINE_API_ARGS( get_feed_history, vector< variant >, api_feed_history_object ) +DEFINE_API_ARGS( get_witness_schedule, vector< variant >, api_witness_schedule_object ) +DEFINE_API_ARGS( get_hardfork_version, vector< variant >, hardfork_version ) +DEFINE_API_ARGS( get_next_scheduled_hardfork, vector< variant >, scheduled_hardfork ) +DEFINE_API_ARGS( get_key_references, vector< variant >, vector< vector< account_name_type > > ) +DEFINE_API_ARGS( get_accounts, vector< variant >, vector< extended_account > ) +DEFINE_API_ARGS( get_account_references, vector< variant >, vector< account_id_type > ) +DEFINE_API_ARGS( lookup_account_names, vector< variant >, vector< optional< api_account_object > > ) +DEFINE_API_ARGS( lookup_accounts, vector< variant >, set< string > ) +DEFINE_API_ARGS( get_account_count, vector< variant >, uint64_t ) +DEFINE_API_ARGS( get_owner_history, vector< variant >, vector< database_api::api_owner_authority_history_object > ) +DEFINE_API_ARGS( get_recovery_request, vector< variant >, optional< database_api::api_account_recovery_request_object > ) +DEFINE_API_ARGS( get_escrow, vector< variant >, optional< api_escrow_object > ) +DEFINE_API_ARGS( get_witnesses, vector< variant >, vector< optional< api_witness_object > > ) +DEFINE_API_ARGS( get_witness_by_account, vector< variant >, optional< api_witness_object > ) +DEFINE_API_ARGS( get_witnesses_by_vote, vector< variant >, vector< api_witness_object > ) +DEFINE_API_ARGS( lookup_witness_accounts, vector< variant >, vector< account_name_type > ) +DEFINE_API_ARGS( get_witness_count, vector< variant >, uint64_t ) +DEFINE_API_ARGS( get_transaction_hex, vector< variant >, string ) +DEFINE_API_ARGS( get_transaction, vector< variant >, annotated_signed_transaction ) +DEFINE_API_ARGS( get_required_signatures, vector< variant >, set< public_key_type > ) +DEFINE_API_ARGS( get_potential_signatures, vector< variant >, set< public_key_type > ) +DEFINE_API_ARGS( verify_authority, vector< variant >, bool ) +DEFINE_API_ARGS( verify_account_authority, vector< variant >, bool ) +DEFINE_API_ARGS( get_account_history, vector< variant >, get_account_history_return_type ) +DEFINE_API_ARGS( broadcast_transaction, vector< variant >, json_rpc::void_type ) +DEFINE_API_ARGS( broadcast_transaction_synchronous, vector< variant >, network_broadcast_api::broadcast_transaction_synchronous_return ) +DEFINE_API_ARGS( broadcast_block, vector< variant >, json_rpc::void_type ) +DEFINE_API_ARGS( get_applications, vector< variant >, vector< api_application_object > ) +DEFINE_API_ARGS( get_promotion_pool_balance, vector< variant >, legacy_asset) +DEFINE_API_ARGS( get_received_documents, vector< variant >, get_received_documents_return_type ) +DEFINE_API_ARGS( get_application_buyings, vector< variant >, get_application_buyings_return_type ) + +#undef DEFINE_API_ARGS + +class condenser_api +{ +public: + condenser_api(); + ~condenser_api(); + + DECLARE_API( + (get_version) + (get_state) + (get_active_witnesses) + (get_block_header) + (get_block) + (get_ops_in_block) + (get_config) + (get_dynamic_global_properties) + (get_chain_properties) + (get_current_median_history_price) + (get_feed_history) + (get_witness_schedule) + (get_hardfork_version) + (get_next_scheduled_hardfork) + (get_key_references) + (get_accounts) + (get_account_references) + (lookup_account_names) + (lookup_accounts) + (get_account_count) + (get_owner_history) + (get_recovery_request) + (get_escrow) + (get_witnesses) + (get_witness_by_account) + (get_witnesses_by_vote) + (lookup_witness_accounts) + (get_witness_count) + (get_transaction_hex) + (get_transaction) + (get_required_signatures) + (get_potential_signatures) + (verify_authority) + (verify_account_authority) + (get_account_history) + (get_received_documents) + (broadcast_transaction) + (broadcast_transaction_synchronous) + (broadcast_block) + (get_applications) + (get_promotion_pool_balance) + (get_application_buyings) + ) + + private: + friend class condenser_api_plugin; + void api_startup(); + + std::unique_ptr< detail::condenser_api_impl > my; +}; + +} } } // sophiatx::plugins::condenser_api + +FC_REFLECT( sophiatx::plugins::condenser_api::state, + (current_route)(props)(accounts)(witnesses)(witness_schedule)(feed_price)(error) ) + +FC_REFLECT( sophiatx::plugins::condenser_api::api_operation_object, + (trx_id)(block)(trx_in_block)(op_in_trx)(virtual_op)(timestamp)(op)(fee_payer) ) + +FC_REFLECT( sophiatx::plugins::condenser_api::api_account_object, + (id)(name)(owner)(active)(memo_key)(json_metadata)(voting_proxy) + (balance) + (vesting_shares)(vesting_withdraw_rate)(to_withdraw) + (witness_votes)(sponsored_accounts)(sponsoring_account) +) + +FC_REFLECT_DERIVED( sophiatx::plugins::condenser_api::extended_account, (sophiatx::plugins::condenser_api::api_account_object), + (vesting_balance)(transfer_history)(other_history)(witness_votes) ) + +FC_REFLECT( sophiatx::plugins::condenser_api::extended_dynamic_global_properties, + (head_block_number)(head_block_id)(time) + (current_witness) + (current_supply) + (total_vesting_shares)(witness_required_vesting) + (maximum_block_size)(current_aslot)(recent_slots_filled)(participation_count)(last_irreversible_block_num) + (average_block_size) ) + +FC_REFLECT( sophiatx::plugins::condenser_api::legacy_chain_properties, + (account_creation_fee)(maximum_block_size) + ) + +FC_REFLECT( sophiatx::plugins::condenser_api::api_witness_object, + (id) + (owner) + (created) + (url)(votes)(virtual_last_update)(virtual_position)(virtual_scheduled_time)(total_missed) + (last_aslot)(last_confirmed_block_num)(signing_key) + (props) + (submitted_exchange_rates) + (running_version) + (hardfork_version_vote)(hardfork_time_vote) + ) + +FC_REFLECT( sophiatx::plugins::condenser_api::api_witness_schedule_object, + (id) + (current_virtual_time) + (next_shuffle_block_num) + (current_shuffled_witnesses) + (num_scheduled_witnesses) + (top19_weight) + (timeshare_weight) + (witness_pay_normalization_factor) + (median_props) + (majority_version) + (max_voted_witnesses) + (max_runner_witnesses) + (hardfork_required_witnesses) + ) + +FC_REFLECT( sophiatx::plugins::condenser_api::api_feed_history_object, + (id) + (current_median_price) + (price_history) + ) + + +FC_REFLECT( sophiatx::plugins::condenser_api::api_escrow_object, + (id)(escrow_id)(from)(to)(agent) + (ratification_deadline)(escrow_expiration) + (sophiatx_balance)(pending_fee) + (to_approved)(agent_approved)(disputed) ) + + +FC_REFLECT( sophiatx::plugins::condenser_api::scheduled_hardfork, + (hf_version)(live_time) ) + +FC_REFLECT( sophiatx::plugins::condenser_api::get_version_return, + (blockchain_version)(sophiatx_revision)(fc_revision)(chain_id) ) + +FC_REFLECT( sophiatx::plugins::condenser_api::api_application_object, + (id) + (name) + (author) + (url) + (metadata) + (price_param) +) diff --git a/libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api_legacy_asset.hpp b/libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api_legacy_asset.hpp new file mode 100644 index 00000000..7b624fed --- /dev/null +++ b/libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api_legacy_asset.hpp @@ -0,0 +1,58 @@ +#pragma once + +#include + +namespace sophiatx { namespace plugins { namespace condenser_api { + +using sophiatx::protocol::asset; +using sophiatx::protocol::asset_symbol_type; +using sophiatx::protocol::share_type; + +struct legacy_asset +{ + public: + legacy_asset() {} + + asset to_asset()const + { + return asset( amount, symbol ); + } + + operator asset()const { return to_asset(); } + + static legacy_asset from_asset( const asset& a ) + { + legacy_asset leg; + leg.amount = a.amount; + leg.symbol = a.symbol; + return leg; + } + + string to_string()const; + static legacy_asset from_string( const string& from ); + + + share_type amount; + asset_symbol_type symbol = SOPHIATX_SYMBOL; +}; + +} } } // sophiatx::plugins::condenser_api + +namespace fc { + + inline void to_variant( const sophiatx::plugins::condenser_api::legacy_asset& a, fc::variant& var ) + { + var = a.to_string(); + } + + inline void from_variant( const fc::variant& var, sophiatx::plugins::condenser_api::legacy_asset& a ) + { + a = sophiatx::plugins::condenser_api::legacy_asset::from_string( var.as_string() ); + } + +} // fc + +FC_REFLECT( sophiatx::plugins::condenser_api::legacy_asset, + (amount) + (symbol) + ) diff --git a/libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api_legacy_objects.hpp b/libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api_legacy_objects.hpp similarity index 90% rename from libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api_legacy_objects.hpp rename to libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api_legacy_objects.hpp index f4dc7860..256d4cb8 100644 --- a/libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api_legacy_objects.hpp +++ b/libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api_legacy_objects.hpp @@ -1,9 +1,9 @@ #pragma once -#include +#include -#include +#include -namespace steem { namespace plugins { namespace condenser_api { +namespace sophiatx { namespace plugins { namespace condenser_api { struct legacy_signed_transaction { @@ -110,10 +110,10 @@ struct legacy_signed_block vector< transaction_id_type > transaction_ids; }; -} } } // steem::plugins::condenser_api +} } } // sophiatx::plugins::condenser_api -FC_REFLECT( steem::plugins::condenser_api::legacy_signed_transaction, +FC_REFLECT( sophiatx::plugins::condenser_api::legacy_signed_transaction, (ref_block_num)(ref_block_prefix)(expiration)(operations)(extensions)(signatures)(transaction_id)(block_num)(transaction_num) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_signed_block, +FC_REFLECT( sophiatx::plugins::condenser_api::legacy_signed_block, (previous)(timestamp)(witness)(transaction_merkle_root)(extensions)(witness_signature)(transactions)(block_id)(signing_key)(transaction_ids) ) diff --git a/libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api_legacy_operations.hpp b/libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api_legacy_operations.hpp new file mode 100644 index 00000000..ae7797b3 --- /dev/null +++ b/libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api_legacy_operations.hpp @@ -0,0 +1,278 @@ +#include +#include + +namespace sophiatx { namespace plugins { namespace condenser_api { + + using namespace sophiatx::protocol; + + typedef account_update_operation legacy_account_update_operation; + typedef escrow_approve_operation legacy_escrow_approve_operation; + typedef escrow_dispute_operation legacy_escrow_dispute_operation; + typedef witness_set_properties_operation legacy_witness_set_properties_operation; + typedef account_witness_vote_operation legacy_account_witness_vote_operation; + typedef account_witness_proxy_operation legacy_account_witness_proxy_operation; + typedef custom_operation legacy_custom_operation; + typedef custom_json_operation legacy_custom_json_operation; + typedef custom_binary_operation legacy_custom_binary_operation; + typedef request_account_recovery_operation legacy_request_account_recovery_operation; + typedef recover_account_operation legacy_recover_account_operation; + typedef reset_account_operation legacy_reset_account_operation; + typedef set_reset_account_operation legacy_set_reset_account_operation; + typedef change_recovery_account_operation legacy_change_recovery_account_operation; + typedef shutdown_witness_operation legacy_shutdown_witness_operation; + typedef hardfork_operation legacy_hardfork_operation; + typedef witness_stop_operation legacy_witness_stop_operation; + typedef transfer_from_promotion_pool_operation legacy_transfer_from_promotion_pool_operation; + typedef account_create_operation legacy_account_create_operation; + typedef account_delete_operation legacy_account_delete_operation; + typedef price legacy_price; + typedef transfer_operation legacy_transfer_operation; + typedef escrow_transfer_operation legacy_escrow_transfer_operation; + typedef escrow_release_operation legacy_escrow_release_operation; + typedef transfer_to_vesting_operation legacy_transfer_to_vesting_operation; + typedef withdraw_vesting_operation legacy_withdraw_vesting_operation; + typedef withdraw_vesting_operation legacy_withdraw_vesting_operation; + typedef witness_update_operation legacy_witness_update_operation; + typedef feed_publish_operation legacy_feed_publish_operation; + typedef interest_operation legacy_interest_operation; + typedef fill_vesting_withdraw_operation legacy_fill_vesting_withdraw_operation; + typedef producer_reward_operation legacy_producer_reward_operation; + typedef promotion_pool_withdraw_operation legacy_promotion_pool_withdraw_operation; + typedef application_create_operation legacy_application_create_operation; + typedef application_update_operation legacy_application_update_operation; + typedef application_delete_operation legacy_application_delete_operation; + typedef sponsor_fees_operation legacy_sponsor_fees_operation; + typedef buy_application_operation legacy_buy_application_operation; + typedef cancel_application_buying_operation legacy_cancel_application_buying_operation; + + typedef placeholder_a_operation legacy_placeholder_a_operation; + typedef placeholder_b_operation legacy_placeholder_b_operation; + + typedef fc::static_variant< + legacy_transfer_operation, + legacy_transfer_to_vesting_operation, + legacy_withdraw_vesting_operation, + legacy_feed_publish_operation, + + legacy_account_create_operation, + legacy_account_update_operation, + legacy_account_delete_operation, + + legacy_witness_update_operation, + legacy_witness_stop_operation, + legacy_account_witness_vote_operation, + legacy_account_witness_proxy_operation, + legacy_witness_set_properties_operation, + + legacy_custom_operation, + legacy_custom_json_operation, + legacy_custom_binary_operation, + + + legacy_request_account_recovery_operation, + legacy_recover_account_operation, + legacy_change_recovery_account_operation, + legacy_escrow_transfer_operation, + legacy_escrow_dispute_operation, + legacy_escrow_release_operation, + legacy_escrow_approve_operation, + + legacy_reset_account_operation, + legacy_set_reset_account_operation, + + legacy_application_create_operation, + legacy_application_update_operation, + legacy_application_delete_operation, + legacy_buy_application_operation, + legacy_cancel_application_buying_operation, + + legacy_transfer_from_promotion_pool_operation, + legacy_sponsor_fees_operation, + + legacy_interest_operation, + legacy_fill_vesting_withdraw_operation, + legacy_shutdown_witness_operation, + legacy_hardfork_operation, + legacy_producer_reward_operation, + legacy_promotion_pool_withdraw_operation, + + legacy_placeholder_a_operation + > legacy_operation; + + struct legacy_operation_conversion_visitor + { + legacy_operation_conversion_visitor( legacy_operation& legacy_op ) : l_op( legacy_op ) {} + + typedef bool result_type; + + legacy_operation& l_op; + bool operator()( const transfer_operation& op )const { l_op = op; return true; } + bool operator()( const transfer_to_vesting_operation& op )const { l_op = op; return true; } + bool operator()( const withdraw_vesting_operation& op )const { l_op = op; return true; } + bool operator()( const feed_publish_operation& op )const { l_op = op; return true; } + bool operator()( const account_create_operation& op )const { l_op = op; return true; } + bool operator()( const account_update_operation& op )const { l_op = op; return true; } + bool operator()( const account_delete_operation& op )const { l_op = op; return true; } + bool operator()( const witness_update_operation& op )const { l_op = op; return true; } + bool operator()( const witness_stop_operation& op )const { l_op = op; return true; } + bool operator()( const account_witness_vote_operation& op )const { l_op = op; return true; } + bool operator()( const account_witness_proxy_operation& op )const { l_op = op; return true; } + bool operator()( const witness_set_properties_operation& op )const { l_op = op; return true; } + bool operator()( const custom_operation& op )const { l_op = op; return true; } + bool operator()( const custom_json_operation& op )const { l_op = op; return true; } + bool operator()( const custom_binary_operation& op )const { l_op = op; return true; } + bool operator()( const request_account_recovery_operation& op )const { l_op = op; return true; } + bool operator()( const recover_account_operation& op )const { l_op = op; return true; } + bool operator()( const change_recovery_account_operation& op )const { l_op = op; return true; } + bool operator()( const escrow_transfer_operation& op )const { l_op = op; return true; } + bool operator()( const escrow_approve_operation& op )const { l_op = op; return true; } + bool operator()( const escrow_dispute_operation& op )const { l_op = op; return true; } + bool operator()( const escrow_release_operation& op )const { l_op = op; return true; } + bool operator()( const reset_account_operation& op )const { l_op = op; return true; } + bool operator()( const set_reset_account_operation& op )const { l_op = op; return true; } + bool operator()( const application_create_operation& op )const { l_op = op; return true; } + bool operator()( const application_update_operation& op )const { l_op = op; return true; } + bool operator()( const application_delete_operation& op )const { l_op = op; return true; } + bool operator()( const buy_application_operation& op )const { l_op = op; return true; } + bool operator()( const cancel_application_buying_operation& op )const { l_op = op; return true; } + bool operator()( const transfer_from_promotion_pool_operation& op )const { l_op = op; return true; } + bool operator()( const sponsor_fees_operation& op )const { l_op = op; return true; } + + bool operator()( const interest_operation& op )const { l_op = op; return true; } + bool operator()( const fill_vesting_withdraw_operation& op )const { l_op = op; return true; } + bool operator()( const shutdown_witness_operation& op )const { l_op = op; return true; } + bool operator()( const hardfork_operation& op )const { l_op = op; return true; } + bool operator()( const producer_reward_operation& op )const { l_op = op; return true; } + bool operator()( const promotion_pool_withdraw_operation& op )const { l_op = op; return true; } + + // Should only be SMT ops + template< typename T > + bool operator()( const T& )const { return false; } +}; + +struct convert_from_legacy_operation_visitor +{ + convert_from_legacy_operation_visitor() {} + + typedef operation result_type; + + /*operation operator()( const legacy_transfer_operation& op )const + { + return operation( transfer_operation( op ) ); + } + + operation operator()( const legacy_transfer_to_vesting_operation& op )const + { + return operation( transfer_to_vesting_operation( op ) ); + } + + operation operator()( const legacy_withdraw_vesting_operation& op )const + { + return operation( withdraw_vesting_operation( op ) ); + } + + operation operator()( const legacy_feed_publish_operation& op )const + { + return operation( feed_publish_operation( op ) ); + } + + operation operator()( const legacy_account_create_operation& op )const + { + return operation( account_create_operation( op ) ); + } + + operation operator()( const legacy_account_delete_operation& op )const + { + return operation( account_delete_operation( op ) ); + } + + operation operator()( const legacy_witness_update_operation& op )const + { + return operation( witness_update_operation( op ) ); + } + + operation operator()( const legacy_witness_stop_operation& op )const + { + return operation( witness_stop_operation( op ) ); + } + + operation operator()( const legacy_escrow_transfer_operation& op )const + { + return operation( escrow_transfer_operation( op ) ); + } + + operation operator()( const legacy_escrow_release_operation& op )const + { + return operation( escrow_release_operation( op ) ); + } + + operation operator()( const legacy_interest_operation& op )const + { + return operation( interest_operation( op ) ); + } + + operation operator()( const legacy_fill_vesting_withdraw_operation& op )const + { + return operation( fill_vesting_withdraw_operation( op ) ); + } + + operation operator()( const legacy_producer_reward_operation& op )const + { + return operation( producer_reward_operation( op ) ); + } + + operation operator()( const legacy_promotion_pool_withdraw_operation& op)const + { + return operation( promotion_pool_withdraw_operation(op) ); + } + + operation operator()( const legacy_transfer_from_promotion_pool_operation& op)const + { + return operation( transfer_from_promotion_pool_operation(op)); + } + + operation operator()( const legacy_application_create_operation& op)const + { + return operation( application_create_operation(op)); + } + + operation operator()( const legacy_application_update_operation& op)const + { + return operation( application_update_operation(op)); + } + + operation operator()( const legacy_application_delete_operation& op)const + { + return operation( application_delete_operation(op)); + } + + operation operator()( const legacy_buy_application_operation& op)const + { + return operation( buy_application_operation(op)); + } + + operation operator()( const legacy_cancel_application_buying_operation& op)const + { + return operation( cancel_application_buying_operation(op)); + }*/ + + operation operator() (const legacy_placeholder_a_operation& op)const{ + return operation( transfer_operation() ); + } + template< typename T > + operation operator()( const T& t )const + { + return operation( t ); + } +}; + +} } } // sophiatx::plugins::condenser_api + +namespace fc { + +void to_variant( const sophiatx::plugins::condenser_api::legacy_operation&, fc::variant& ); +void from_variant( const fc::variant&, sophiatx::plugins::condenser_api::legacy_operation& ); + +} + +FC_REFLECT_TYPENAME( sophiatx::plugins::condenser_api::legacy_operation ) diff --git a/libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api_plugin.hpp b/libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api_plugin.hpp similarity index 51% rename from libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api_plugin.hpp rename to libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api_plugin.hpp index afb06598..99f8cf0a 100644 --- a/libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api_plugin.hpp +++ b/libraries/plugins/apis/condenser_api/include/sophiatx/plugins/condenser_api/condenser_api_plugin.hpp @@ -1,23 +1,23 @@ #pragma once -#include -#include -#include +#include +#include +#include -#define STEEM_CONDENSER_API_PLUGIN_NAME "condenser_api" +#define SOPHIATX_CONDENSER_API_PLUGIN_NAME "condenser_api" -namespace steem { namespace plugins { namespace condenser_api { +namespace sophiatx { namespace plugins { namespace condenser_api { using namespace appbase; class condenser_api_plugin : public appbase::plugin< condenser_api_plugin > { public: - APPBASE_PLUGIN_REQUIRES( (steem::plugins::json_rpc::json_rpc_plugin)(steem::plugins::database_api::database_api_plugin) ) + APPBASE_PLUGIN_REQUIRES( (sophiatx::plugins::json_rpc::json_rpc_plugin)(sophiatx::plugins::database_api::database_api_plugin) ) condenser_api_plugin(); virtual ~condenser_api_plugin(); - static const std::string& name() { static std::string name = STEEM_CONDENSER_API_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_CONDENSER_API_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, options_description& cfg ) override; @@ -28,4 +28,4 @@ class condenser_api_plugin : public appbase::plugin< condenser_api_plugin > std::shared_ptr< class condenser_api > api; }; -} } } // steem::plugins::condenser_api +} } } // sophiatx::plugins::condenser_api diff --git a/libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api.hpp b/libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api.hpp deleted file mode 100644 index 8bca6a52..00000000 --- a/libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api.hpp +++ /dev/null @@ -1,1221 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - -namespace steem { namespace plugins { namespace condenser_api { - -using std::vector; -using fc::variant; -using fc::optional; - -using namespace chain; - -namespace detail{ class condenser_api_impl; } - -struct discussion_index -{ - string category; /// category by which everything is filtered - vector< string > trending; /// trending posts over the last 24 hours - vector< string > payout; /// pending posts by payout - vector< string > payout_comments; /// pending comments by payout - vector< string > trending30; /// pending lifetime payout - vector< string > created; /// creation date - vector< string > responses; /// creation date - vector< string > updated; /// creation date - vector< string > active; /// last update or reply - vector< string > votes; /// last update or reply - vector< string > cashout; /// last update or reply - vector< string > maturing; /// about to be paid out - vector< string > best; /// total lifetime payout - vector< string > hot; /// total lifetime payout - vector< string > promoted; /// pending lifetime payout -}; - -struct api_limit_order_object -{ - api_limit_order_object( const limit_order_object& o ) : - id( o.id ), - created( o.created ), - expiration( o.expiration ), - seller( o.seller ), - orderid( o.orderid ), - for_sale( o.for_sale ), - sell_price( o.sell_price ) - {} - - api_limit_order_object(){} - - limit_order_id_type id; - time_point_sec created; - time_point_sec expiration; - account_name_type seller; - uint32_t orderid = 0; - share_type for_sale; - legacy_price sell_price; - double real_price = 0; - bool rewarded = false; -}; - - -struct api_operation_object -{ - api_operation_object() {} - api_operation_object( const account_history::api_operation_object& obj, const legacy_operation& l_op ) : - trx_id( obj.trx_id ), - block( obj.block ), - trx_in_block( obj.trx_in_block ), - virtual_op( obj.virtual_op ), - timestamp( obj.timestamp ), - op( l_op ) - {} - - transaction_id_type trx_id; - uint32_t block = 0; - uint32_t trx_in_block = 0; - uint16_t op_in_trx = 0; - uint64_t virtual_op = 0; - fc::time_point_sec timestamp; - legacy_operation op; -}; - -struct api_account_object -{ - api_account_object( const database_api::api_account_object& a ) : - id( a.id ), - name( a.name ), - owner( a.owner ), - active( a.active ), - posting( a.posting ), - memo_key( a.memo_key ), - json_metadata( a.json_metadata ), - proxy( a.proxy ), - last_owner_update( a.last_owner_update ), - last_account_update( a.last_account_update ), - created( a.created ), - mined( a.mined ), - recovery_account( a.recovery_account ), - reset_account( a.reset_account ), - last_account_recovery( a.last_account_recovery ), - comment_count( a.comment_count ), - lifetime_vote_count( a.lifetime_vote_count ), - post_count( a.post_count ), - can_vote( a.can_vote ), - voting_power( a.voting_power ), - last_vote_time( a.last_vote_time ), - balance( legacy_asset::from_asset( a.balance ) ), - savings_balance( legacy_asset::from_asset( a.savings_balance ) ), - sbd_balance( legacy_asset::from_asset( a.sbd_balance ) ), - sbd_seconds( a.sbd_seconds ), - sbd_seconds_last_update( a.sbd_seconds_last_update ), - sbd_last_interest_payment( a.sbd_last_interest_payment ), - savings_sbd_balance( legacy_asset::from_asset( a.savings_sbd_balance ) ), - savings_sbd_seconds( a.savings_sbd_seconds ), - savings_sbd_seconds_last_update( a.savings_sbd_seconds_last_update ), - savings_sbd_last_interest_payment( a.savings_sbd_last_interest_payment ), - savings_withdraw_requests( a.savings_withdraw_requests ), - reward_sbd_balance( legacy_asset::from_asset( a.reward_sbd_balance ) ), - reward_steem_balance( legacy_asset::from_asset( a.reward_steem_balance ) ), - reward_vesting_balance( legacy_asset::from_asset( a.reward_vesting_balance ) ), - reward_vesting_steem( legacy_asset::from_asset( a.reward_vesting_steem ) ), - curation_rewards( a.curation_rewards ), - posting_rewards( a.posting_rewards ), - vesting_shares( legacy_asset::from_asset( a.vesting_shares ) ), - delegated_vesting_shares( legacy_asset::from_asset( a.delegated_vesting_shares ) ), - received_vesting_shares( legacy_asset::from_asset( a.received_vesting_shares ) ), - vesting_withdraw_rate( legacy_asset::from_asset( a.vesting_withdraw_rate ) ), - next_vesting_withdrawal( a.next_vesting_withdrawal ), - withdrawn( a.withdrawn ), - to_withdraw( a.to_withdraw ), - withdraw_routes( a.withdraw_routes ), - witnesses_voted_for( a.witnesses_voted_for ), - last_post( a.last_post ), - last_root_post( a.last_root_post ) - { - proxied_vsf_votes.insert( proxied_vsf_votes.end(), a.proxied_vsf_votes.begin(), a.proxied_vsf_votes.end() ); - } - - - api_account_object(){} - - account_id_type id; - - account_name_type name; - authority owner; - authority active; - authority posting; - public_key_type memo_key; - string json_metadata; - account_name_type proxy; - - time_point_sec last_owner_update; - time_point_sec last_account_update; - - time_point_sec created; - bool mined = false; - account_name_type recovery_account; - account_name_type reset_account; - time_point_sec last_account_recovery; - uint32_t comment_count = 0; - uint32_t lifetime_vote_count = 0; - uint32_t post_count = 0; - - bool can_vote = false; - uint16_t voting_power = 0; - time_point_sec last_vote_time; - - legacy_asset balance; - legacy_asset savings_balance; - - legacy_asset sbd_balance; - uint128_t sbd_seconds; - time_point_sec sbd_seconds_last_update; - time_point_sec sbd_last_interest_payment; - - legacy_asset savings_sbd_balance; - uint128_t savings_sbd_seconds; - time_point_sec savings_sbd_seconds_last_update; - time_point_sec savings_sbd_last_interest_payment; - - uint8_t savings_withdraw_requests = 0; - - legacy_asset reward_sbd_balance; - legacy_asset reward_steem_balance; - legacy_asset reward_vesting_balance; - legacy_asset reward_vesting_steem; - - share_type curation_rewards; - share_type posting_rewards; - - legacy_asset vesting_shares; - legacy_asset delegated_vesting_shares; - legacy_asset received_vesting_shares; - legacy_asset vesting_withdraw_rate; - time_point_sec next_vesting_withdrawal; - share_type withdrawn; - share_type to_withdraw; - uint16_t withdraw_routes = 0; - - vector< share_type > proxied_vsf_votes; - - uint16_t witnesses_voted_for; - - time_point_sec last_post; - time_point_sec last_root_post; -}; - -struct extended_account : public api_account_object -{ - extended_account(){} - extended_account( const database_api::api_account_object& a ) : - api_account_object( a ) {} - - share_type average_bandwidth; - share_type lifetime_bandwidth; - time_point_sec last_bandwidth_update; - share_type average_market_bandwidth; - share_type lifetime_market_bandwidth; - time_point_sec last_market_bandwidth_update; - - legacy_asset vesting_balance; /// convert vesting_shares to vesting steem - share_type reputation = 0; - map< uint64_t, api_operation_object > transfer_history; /// transfer to/from vesting - map< uint64_t, api_operation_object > market_history; /// limit order / cancel / fill - map< uint64_t, api_operation_object > post_history; - map< uint64_t, api_operation_object > vote_history; - map< uint64_t, api_operation_object > other_history; - set< string > witness_votes; - vector< tags::tag_count_object > tags_usage; - vector< follow::reblog_count > guest_bloggers; - - optional< map< uint32_t, api_limit_order_object > > open_orders; - optional< vector< string > > comments; /// permlinks for this user - optional< vector< string > > blog; /// blog posts for this user - optional< vector< string > > feed; /// feed posts for this user - optional< vector< string > > recent_replies; /// blog posts for this user - optional< vector< string > > recommended; /// posts recommened for this user -}; - -struct extended_dynamic_global_properties -{ - extended_dynamic_global_properties() {} - extended_dynamic_global_properties( const database_api::api_dynamic_global_property_object& o ) : - head_block_number( o.head_block_number ), - head_block_id( o.head_block_id ), - time( o.time ), - current_witness( o.current_witness ), - total_pow( o.total_pow ), - num_pow_witnesses( o.num_pow_witnesses ), - virtual_supply( legacy_asset::from_asset( o.virtual_supply ) ), - current_supply( legacy_asset::from_asset( o.current_supply ) ), - confidential_supply( legacy_asset::from_asset( o.confidential_supply ) ), - current_sbd_supply( legacy_asset::from_asset( o.current_sbd_supply ) ), - confidential_sbd_supply( legacy_asset::from_asset( o.confidential_sbd_supply ) ), - total_vesting_fund_steem( legacy_asset::from_asset( o.total_vesting_fund_steem ) ), - total_vesting_shares( legacy_asset::from_asset( o.total_vesting_shares ) ), - total_reward_fund_steem( legacy_asset::from_asset( o.total_reward_fund_steem ) ), - total_reward_shares2( o.total_reward_shares2 ), - pending_rewarded_vesting_shares( legacy_asset::from_asset( o.pending_rewarded_vesting_shares ) ), - pending_rewarded_vesting_steem( legacy_asset::from_asset( o.pending_rewarded_vesting_steem ) ), - sbd_interest_rate( o.sbd_interest_rate ), - sbd_print_rate( o.sbd_print_rate ), - maximum_block_size( o.maximum_block_size ), - current_aslot( o.current_aslot ), - recent_slots_filled( o.recent_slots_filled ), - participation_count( o.participation_count ), - last_irreversible_block_num( o.last_irreversible_block_num ), - vote_power_reserve_rate( o.vote_power_reserve_rate ) - {} - - uint32_t head_block_number = 0; - block_id_type head_block_id; - time_point_sec time; - account_name_type current_witness; - - uint64_t total_pow = -1; - - uint32_t num_pow_witnesses = 0; - - legacy_asset virtual_supply; - legacy_asset current_supply; - legacy_asset confidential_supply; - legacy_asset current_sbd_supply; - legacy_asset confidential_sbd_supply; - legacy_asset total_vesting_fund_steem; - legacy_asset total_vesting_shares; - legacy_asset total_reward_fund_steem; - fc::uint128 total_reward_shares2; - legacy_asset pending_rewarded_vesting_shares; - legacy_asset pending_rewarded_vesting_steem; - - uint16_t sbd_interest_rate = 0; - uint16_t sbd_print_rate = STEEM_100_PERCENT; - - uint32_t maximum_block_size = 0; - uint64_t current_aslot = 0; - fc::uint128_t recent_slots_filled; - uint8_t participation_count = 0; - - uint32_t last_irreversible_block_num = 0; - - uint32_t vote_power_reserve_rate = STEEM_INITIAL_VOTE_POWER_RATE; - - int32_t average_block_size = 0; - int64_t current_reserve_ratio = 1; - uint128_t max_virtual_bandwidth = 0; -}; - -struct legacy_chain_properties -{ - legacy_chain_properties() {} - legacy_chain_properties( const chain::chain_properties& c ) : - account_creation_fee( legacy_asset::from_asset( c.account_creation_fee ) ), - maximum_block_size( c.maximum_block_size ), - sbd_interest_rate( c.sbd_interest_rate ) - {} - - legacy_asset account_creation_fee; - uint32_t maximum_block_size = STEEM_MIN_BLOCK_SIZE_LIMIT * 2; - uint16_t sbd_interest_rate = STEEM_DEFAULT_SBD_INTEREST_RATE; -}; - -struct api_witness_object -{ - api_witness_object() {} - api_witness_object( const database_api::api_witness_object& w ) : - id( w.id ), - owner( w.owner ), - created( w.created ), - url( w.url ), - total_missed( w.total_missed ), - last_aslot( w.last_aslot ), - last_confirmed_block_num( w.last_confirmed_block_num ), - pow_worker( w.pow_worker ), - signing_key( w.signing_key ), - props( w.props ), - sbd_exchange_rate( w.sbd_exchange_rate ), - last_sbd_exchange_update( w.last_sbd_exchange_update ), - votes( w.votes ), - virtual_last_update( w.virtual_last_update ), - virtual_position( w.virtual_position ), - virtual_scheduled_time( w.virtual_scheduled_time ), - last_work( w.last_work ), - running_version( w.running_version ), - hardfork_version_vote( w.hardfork_version_vote ), - hardfork_time_vote( w.hardfork_time_vote ) - {} - - witness_id_type id; - account_name_type owner; - time_point_sec created; - string url; - uint32_t total_missed = 0; - uint64_t last_aslot = 0; - uint64_t last_confirmed_block_num = 0; - uint64_t pow_worker; - public_key_type signing_key; - legacy_chain_properties props; - legacy_price sbd_exchange_rate; - time_point_sec last_sbd_exchange_update; - share_type votes; - fc::uint128_t virtual_last_update; - fc::uint128_t virtual_position; - fc::uint128_t virtual_scheduled_time = fc::uint128_t::max_value(); - digest_type last_work; - version running_version; - hardfork_version hardfork_version_vote; - time_point_sec hardfork_time_vote = STEEM_GENESIS_TIME; -}; - -struct api_witness_schedule_object -{ - api_witness_schedule_object() {} - api_witness_schedule_object( const database_api::api_witness_schedule_object& w ) : - id( w.id ), - current_virtual_time( w.current_virtual_time ), - next_shuffle_block_num( w.next_shuffle_block_num ), - num_scheduled_witnesses( w.num_scheduled_witnesses ), - top19_weight( w.top19_weight ), - timeshare_weight( w.timeshare_weight ), - miner_weight( w.miner_weight ), - witness_pay_normalization_factor( w.witness_pay_normalization_factor ), - median_props( w.median_props ), - majority_version( w.majority_version ), - max_voted_witnesses( w.max_voted_witnesses ), - max_miner_witnesses( w.max_miner_witnesses ), - max_runner_witnesses( w.max_runner_witnesses ), - hardfork_required_witnesses( w.hardfork_required_witnesses ) - { - current_shuffled_witnesses.insert( current_shuffled_witnesses.begin(), w.current_shuffled_witnesses.begin(), w.current_shuffled_witnesses.end() ); - } - - witness_schedule_id_type id; - fc::uint128_t current_virtual_time; - uint32_t next_shuffle_block_num = 1; - vector< account_name_type > current_shuffled_witnesses; - uint8_t num_scheduled_witnesses = 1; - uint8_t top19_weight = 1; - uint8_t timeshare_weight = 5; - uint8_t miner_weight = 1; - uint32_t witness_pay_normalization_factor = 25; - legacy_chain_properties median_props; - version majority_version; - uint8_t max_voted_witnesses = STEEM_MAX_VOTED_WITNESSES_HF0; - uint8_t max_miner_witnesses = STEEM_MAX_MINER_WITNESSES_HF0; - uint8_t max_runner_witnesses = STEEM_MAX_RUNNER_WITNESSES_HF0; - uint8_t hardfork_required_witnesses = STEEM_HARDFORK_REQUIRED_WITNESSES; -}; - -struct api_feed_history_object -{ - api_feed_history_object() {} - api_feed_history_object( const database_api::api_feed_history_object& f ) : - current_median_history( f.current_median_history ) - { - for( auto& p : f.price_history ) - { - price_history.push_back( legacy_price( p ) ); - } - } - - feed_history_id_type id; - legacy_price current_median_history; - deque< legacy_price > price_history; -}; - -struct api_reward_fund_object -{ - api_reward_fund_object() {} - api_reward_fund_object( const database_api::api_reward_fund_object& r ) : - id( r.id ), - name( r.name ), - reward_balance( legacy_asset::from_asset( r.reward_balance ) ), - recent_claims( r.recent_claims ), - last_update( r.last_update ), - content_constant( r.content_constant ), - percent_curation_rewards( r.percent_curation_rewards ), - percent_content_rewards( r.percent_content_rewards ), - author_reward_curve( r.author_reward_curve ), - curation_reward_curve( r.curation_reward_curve ) - {} - - reward_fund_id_type id; - reward_fund_name_type name; - legacy_asset reward_balance; - fc::uint128_t recent_claims = 0; - time_point_sec last_update; - uint128_t content_constant = 0; - uint16_t percent_curation_rewards = 0; - uint16_t percent_content_rewards = 0; - protocol::curve_id author_reward_curve; - protocol::curve_id curation_reward_curve; -}; - -struct api_escrow_object -{ - api_escrow_object() {} - api_escrow_object( const database_api::api_escrow_object& e ) : - id( e.id ), - escrow_id( e.escrow_id ), - from( e.from ), - to( e.to ), - agent( e.agent ), - ratification_deadline( e.ratification_deadline ), - escrow_expiration( e.escrow_expiration ), - sbd_balance( legacy_asset::from_asset( e.sbd_balance ) ), - steem_balance( legacy_asset::from_asset( e.steem_balance ) ), - pending_fee( legacy_asset::from_asset( e.pending_fee ) ), - to_approved( e.to_approved ), - disputed( e.disputed ), - agent_approved( e.agent_approved ) - {} - - escrow_id_type id; - uint32_t escrow_id = 20; - account_name_type from; - account_name_type to; - account_name_type agent; - time_point_sec ratification_deadline; - time_point_sec escrow_expiration; - legacy_asset sbd_balance; - legacy_asset steem_balance; - legacy_asset pending_fee; - bool to_approved = false; - bool disputed = false; - bool agent_approved = false; -}; - -struct api_savings_withdraw_object -{ - api_savings_withdraw_object() {} - api_savings_withdraw_object( const database_api::api_savings_withdraw_object& s ) : - id( s.id ), - from( s.from ), - to( s.to ), - memo( s.memo ), - request_id( s.request_id ), - amount( legacy_asset::from_asset( s.amount ) ), - complete( s.complete ) - {} - - savings_withdraw_id_type id; - - account_name_type from; - account_name_type to; - string memo; - uint32_t request_id = 0; - legacy_asset amount; - time_point_sec complete; -}; - -struct api_vesting_delegation_object -{ - api_vesting_delegation_object() {} - api_vesting_delegation_object( const database_api::api_vesting_delegation_object& v ) : - id( v.id ), - delegator( v.delegator ), - delegatee( v.delegatee ), - vesting_shares( legacy_asset::from_asset( v.vesting_shares ) ), - min_delegation_time( v.min_delegation_time ) - {} - - vesting_delegation_id_type id; - account_name_type delegator; - account_name_type delegatee; - legacy_asset vesting_shares; - time_point_sec min_delegation_time; -}; - -struct api_vesting_delegation_expiration_object -{ - api_vesting_delegation_expiration_object() {} - api_vesting_delegation_expiration_object( const database_api::api_vesting_delegation_expiration_object& v ) : - id( v.id ), - delegator( v.delegator ), - vesting_shares( legacy_asset::from_asset( v.vesting_shares ) ), - expiration( v.expiration ) - {} - - vesting_delegation_expiration_id_type id; - account_name_type delegator; - legacy_asset vesting_shares; - time_point_sec expiration; -}; - -struct api_convert_request_object -{ - api_convert_request_object() {} - api_convert_request_object( const database_api::api_convert_request_object& c ) : - id( c.id ), - owner( c.owner ), - requestid( c.requestid ), - amount( legacy_asset::from_asset( c.amount ) ), - conversion_date( c.conversion_date ) - {} - - - convert_request_id_type id; - - account_name_type owner; - uint32_t requestid = 0; - legacy_asset amount; - time_point_sec conversion_date; -}; - -struct discussion -{ - discussion() {} - discussion( const tags::discussion& d ) : - id( d.id ), - category( d.category ), - parent_author( d.parent_author ), - parent_permlink( d.parent_permlink ), - author( d.author ), - permlink( d.permlink ), - title( d.title ), - body( d.body ), - json_metadata( d.json_metadata ), - last_update( d.last_update ), - created( d.created ), - active( d.active ), - last_payout( d.last_payout ), - depth( d.depth ), - children( d.children ), - net_rshares( d.net_rshares ), - abs_rshares( d.abs_rshares ), - vote_rshares( d.vote_rshares ), - children_abs_rshares( d.children_abs_rshares ), - cashout_time( d.cashout_time ), - max_cashout_time( d.max_cashout_time ), - total_vote_weight( d.total_vote_weight ), - reward_weight( d.reward_weight ), - total_payout_value( legacy_asset::from_asset( d.total_payout_value ) ), - curator_payout_value( legacy_asset::from_asset( d.curator_payout_value ) ), - author_rewards( d.author_rewards ), - net_votes( d.net_votes ), - root_author( d.root_author ), - root_permlink( d.root_permlink ), - max_accepted_payout( legacy_asset::from_asset( d.max_accepted_payout ) ), - percent_steem_dollars( d.percent_steem_dollars ), - allow_replies( d.allow_replies ), - allow_votes( d.allow_votes ), - allow_curation_rewards( d.allow_curation_rewards ), - beneficiaries( d.beneficiaries ), - url( d.url ), - root_title( d.root_title ), - pending_payout_value( legacy_asset::from_asset( d.pending_payout_value ) ), - total_pending_payout_value( legacy_asset::from_asset( d.total_pending_payout_value ) ), - active_votes( d.active_votes ), - replies( d.replies ), - author_reputation( d.author_reputation ), - promoted( legacy_asset::from_asset( d.promoted ) ), - body_length( d.body_length ), - reblogged_by( d.reblogged_by ), - first_reblogged_by( d.first_reblogged_by ), - first_reblogged_on( d.first_reblogged_on ) - {} - - - comment_id_type id; - string category; - string parent_author; - string parent_permlink; - string author; - string permlink; - - string title; - string body; - string json_metadata; - time_point_sec last_update; - time_point_sec created; - time_point_sec active; - time_point_sec last_payout; - - uint8_t depth = 0; - uint32_t children = 0; - - share_type net_rshares; - share_type abs_rshares; - share_type vote_rshares; - - share_type children_abs_rshares; - time_point_sec cashout_time; - time_point_sec max_cashout_time; - uint64_t total_vote_weight = 0; - - uint16_t reward_weight = 0; - - legacy_asset total_payout_value; - legacy_asset curator_payout_value; - - share_type author_rewards; - - int32_t net_votes = 0; - - account_name_type root_author; - string root_permlink; - - legacy_asset max_accepted_payout; - uint16_t percent_steem_dollars = 0; - bool allow_replies = false; - bool allow_votes = false; - bool allow_curation_rewards = false; - vector< beneficiary_route_type > beneficiaries; - - string url; /// /category/@rootauthor/root_permlink#author/permlink - string root_title; - legacy_asset pending_payout_value; ///< sbd - legacy_asset total_pending_payout_value; ///< sbd including replies - vector< tags::vote_state > active_votes; - vector< string > replies; ///< author/slug mapping - share_type author_reputation = 0; - legacy_asset promoted; - uint32_t body_length = 0; - vector< account_name_type > reblogged_by; - optional< account_name_type > first_reblogged_by; - optional< time_point_sec > first_reblogged_on; -}; - -struct tag_index -{ - vector< tags::tag_name_type > trending; /// pending payouts -}; - -struct api_tag_object -{ - api_tag_object( const tags::api_tag_object& o ) : - name( o.name ), - total_payouts( legacy_asset::from_asset( o.total_payouts ) ), - net_votes( o.net_votes ), - top_posts( o.top_posts ), - comments( o.comments ), - trending( o.trending ) {} - - api_tag_object() {} - - string name; - legacy_asset total_payouts; - int32_t net_votes = 0; - uint32_t top_posts = 0; - uint32_t comments = 0; - fc::uint128 trending = 0; -}; - -struct state -{ - string current_route; - - extended_dynamic_global_properties props; - - tag_index tag_idx; - - /** - * "" is the global tags::discussion index - */ - map< string, discussion_index > discussion_idx; - - map< string, api_tag_object > tags; - - /** - * map from account/slug to full nested tags::discussion - */ - map< string, discussion > content; - map< string, extended_account > accounts; - - map< string, api_witness_object > witnesses; - api_witness_schedule_object witness_schedule; - legacy_price feed_price; - string error; -}; - -struct scheduled_hardfork -{ - hardfork_version hf_version; - fc::time_point_sec live_time; -}; - -struct account_vote -{ - string authorperm; - uint64_t weight = 0; - int64_t rshares = 0; - int16_t percent = 0; - time_point_sec time; -}; - -enum withdraw_route_type -{ - incoming, - outgoing, - all -}; - -typedef vector< variant > get_version_args; - -struct get_version_return -{ - get_version_return() {} - get_version_return( fc::string bc_v, fc::string s_v, fc::string fc_v ) - :blockchain_version( bc_v ), steem_revision( s_v ), fc_revision( fc_v ) {} - - fc::string blockchain_version; - fc::string steem_revision; - fc::string fc_revision; -}; - -typedef map< uint32_t, api_operation_object > get_account_history_return_type; - -struct ticker -{ - ticker() {} - ticker( const market_history::get_ticker_return& t ) : - latest( t.latest ), - lowest_ask( t.lowest_ask ), - highest_bid( t.highest_bid ), - percent_change( t.percent_change ), - steem_volume( legacy_asset::from_asset( t.steem_volume ) ), - sbd_volume( legacy_asset::from_asset( t.sbd_volume ) ) - {} - - double latest = 0; - double lowest_ask = 0; - double highest_bid = 0; - double percent_change = 0; - legacy_asset steem_volume; - legacy_asset sbd_volume; -}; - -struct volume -{ - volume() {} - volume( const market_history::get_volume_return& v ) : - steem_volume( legacy_asset::from_asset( v.steem_volume ) ), - sbd_volume( legacy_asset::from_asset( v.sbd_volume ) ) - {} - - legacy_asset steem_volume; - legacy_asset sbd_volume; -}; - -struct order -{ - order() {} - order( const market_history::order& o ) : - order_price( o.order_price ), - real_price( o.real_price ), - steem( o.steem ), - sbd( o.sbd ), - created( o.created ) - {} - - legacy_price order_price; - double real_price; - share_type steem; - share_type sbd; - time_point_sec created; -}; - -struct order_book -{ - order_book() {} - order_book( const market_history::get_order_book_return& book ) - { - for( auto& b : book.bids ) bids.push_back( order( b ) ); - for( auto& a : book.asks ) asks.push_back( order( a ) ); - } - - vector< order > bids; - vector< order > asks; -}; - -struct market_trade -{ - market_trade() {} - market_trade( const market_history::market_trade& t ) : - date( t.date ), - current_pays( legacy_asset::from_asset( t.current_pays ) ), - open_pays( legacy_asset::from_asset( t.open_pays ) ) - {} - - time_point_sec date; - legacy_asset current_pays; - legacy_asset open_pays; -}; - -#define DEFINE_API_ARGS( api_name, arg_type, return_type ) \ -typedef arg_type api_name ## _args; \ -typedef return_type api_name ## _return; - -/* API, args, return */ -DEFINE_API_ARGS( get_trending_tags, vector< variant >, vector< api_tag_object > ) -DEFINE_API_ARGS( get_state, vector< variant >, state ) -DEFINE_API_ARGS( get_active_witnesses, vector< variant >, vector< account_name_type > ) -DEFINE_API_ARGS( get_block_header, vector< variant >, optional< block_header > ) -DEFINE_API_ARGS( get_block, vector< variant >, optional< legacy_signed_block > ) -DEFINE_API_ARGS( get_ops_in_block, vector< variant >, vector< api_operation_object > ) -DEFINE_API_ARGS( get_config, vector< variant >, fc::variant_object ) -DEFINE_API_ARGS( get_dynamic_global_properties, vector< variant >, extended_dynamic_global_properties ) -DEFINE_API_ARGS( get_chain_properties, vector< variant >, legacy_chain_properties ) -DEFINE_API_ARGS( get_current_median_history_price, vector< variant >, legacy_price ) -DEFINE_API_ARGS( get_feed_history, vector< variant >, api_feed_history_object ) -DEFINE_API_ARGS( get_witness_schedule, vector< variant >, api_witness_schedule_object ) -DEFINE_API_ARGS( get_hardfork_version, vector< variant >, hardfork_version ) -DEFINE_API_ARGS( get_next_scheduled_hardfork, vector< variant >, scheduled_hardfork ) -DEFINE_API_ARGS( get_reward_fund, vector< variant >, api_reward_fund_object ) -DEFINE_API_ARGS( get_key_references, vector< variant >, vector< vector< account_name_type > > ) -DEFINE_API_ARGS( get_accounts, vector< variant >, vector< extended_account > ) -DEFINE_API_ARGS( get_account_references, vector< variant >, vector< account_id_type > ) -DEFINE_API_ARGS( lookup_account_names, vector< variant >, vector< optional< api_account_object > > ) -DEFINE_API_ARGS( lookup_accounts, vector< variant >, set< string > ) -DEFINE_API_ARGS( get_account_count, vector< variant >, uint64_t ) -DEFINE_API_ARGS( get_owner_history, vector< variant >, vector< database_api::api_owner_authority_history_object > ) -DEFINE_API_ARGS( get_recovery_request, vector< variant >, optional< database_api::api_account_recovery_request_object > ) -DEFINE_API_ARGS( get_escrow, vector< variant >, optional< api_escrow_object > ) -DEFINE_API_ARGS( get_withdraw_routes, vector< variant >, vector< database_api::api_withdraw_vesting_route_object > ) -DEFINE_API_ARGS( get_account_bandwidth, vector< variant >, optional< witness::api_account_bandwidth_object > ) -DEFINE_API_ARGS( get_savings_withdraw_from, vector< variant >, vector< api_savings_withdraw_object > ) -DEFINE_API_ARGS( get_savings_withdraw_to, vector< variant >, vector< api_savings_withdraw_object > ) -DEFINE_API_ARGS( get_vesting_delegations, vector< variant >, vector< api_vesting_delegation_object > ) -DEFINE_API_ARGS( get_expiring_vesting_delegations, vector< variant >, vector< api_vesting_delegation_expiration_object > ) -DEFINE_API_ARGS( get_witnesses, vector< variant >, vector< optional< api_witness_object > > ) -DEFINE_API_ARGS( get_conversion_requests, vector< variant >, vector< api_convert_request_object > ) -DEFINE_API_ARGS( get_witness_by_account, vector< variant >, optional< api_witness_object > ) -DEFINE_API_ARGS( get_witnesses_by_vote, vector< variant >, vector< api_witness_object > ) -DEFINE_API_ARGS( lookup_witness_accounts, vector< variant >, vector< account_name_type > ) -DEFINE_API_ARGS( get_open_orders, vector< variant >, vector< api_limit_order_object > ) -DEFINE_API_ARGS( get_witness_count, vector< variant >, uint64_t ) -DEFINE_API_ARGS( get_transaction_hex, vector< variant >, string ) -DEFINE_API_ARGS( get_transaction, vector< variant >, annotated_signed_transaction ) -DEFINE_API_ARGS( get_required_signatures, vector< variant >, set< public_key_type > ) -DEFINE_API_ARGS( get_potential_signatures, vector< variant >, set< public_key_type > ) -DEFINE_API_ARGS( verify_authority, vector< variant >, bool ) -DEFINE_API_ARGS( verify_account_authority, vector< variant >, bool ) -DEFINE_API_ARGS( get_active_votes, vector< variant >, vector< tags::vote_state > ) -DEFINE_API_ARGS( get_account_votes, vector< variant >, vector< account_vote > ) -DEFINE_API_ARGS( get_content, vector< variant >, discussion ) -DEFINE_API_ARGS( get_content_replies, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_tags_used_by_author, vector< variant >, vector< tags::tag_count_object > ) -DEFINE_API_ARGS( get_post_discussions_by_payout, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_comment_discussions_by_payout, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_discussions_by_trending, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_discussions_by_created, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_discussions_by_active, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_discussions_by_cashout, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_discussions_by_votes, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_discussions_by_children, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_discussions_by_hot, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_discussions_by_feed, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_discussions_by_blog, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_discussions_by_comments, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_discussions_by_promoted, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_replies_by_last_update, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_discussions_by_author_before_date, vector< variant >, vector< discussion > ) -DEFINE_API_ARGS( get_account_history, vector< variant >, get_account_history_return_type ) -DEFINE_API_ARGS( broadcast_transaction, vector< variant >, json_rpc::void_type ) -DEFINE_API_ARGS( broadcast_transaction_synchronous, vector< variant >, network_broadcast_api::broadcast_transaction_synchronous_return ) -DEFINE_API_ARGS( broadcast_block, vector< variant >, json_rpc::void_type ) -DEFINE_API_ARGS( get_followers, vector< variant >, vector< follow::api_follow_object > ) -DEFINE_API_ARGS( get_following, vector< variant >, vector< follow::api_follow_object > ) -DEFINE_API_ARGS( get_follow_count, vector< variant >, follow::get_follow_count_return ) -DEFINE_API_ARGS( get_feed_entries, vector< variant >, vector< follow::feed_entry > ) -DEFINE_API_ARGS( get_feed, vector< variant >, vector< follow::comment_feed_entry > ) -DEFINE_API_ARGS( get_blog_entries, vector< variant >, vector< follow::blog_entry > ) -DEFINE_API_ARGS( get_blog, vector< variant >, vector< follow::comment_blog_entry > ) -DEFINE_API_ARGS( get_account_reputations, vector< variant >, vector< follow::account_reputation > ) -DEFINE_API_ARGS( get_reblogged_by, vector< variant >, vector< account_name_type > ) -DEFINE_API_ARGS( get_blog_authors, vector< variant >, vector< follow::reblog_count > ) -DEFINE_API_ARGS( get_ticker, vector< variant >, ticker ) -DEFINE_API_ARGS( get_volume, vector< variant >, volume ) -DEFINE_API_ARGS( get_order_book, vector< variant >, order_book ) -DEFINE_API_ARGS( get_trade_history, vector< variant >, vector< market_trade > ) -DEFINE_API_ARGS( get_recent_trades, vector< variant >, vector< market_trade > ) -DEFINE_API_ARGS( get_market_history, vector< variant >, vector< market_history::bucket_object > ) -DEFINE_API_ARGS( get_market_history_buckets, vector< variant >, flat_set< uint32_t > ) - -#undef DEFINE_API_ARGS - -class condenser_api -{ -public: - condenser_api(); - ~condenser_api(); - - DECLARE_API( - (get_version) - (get_trending_tags) - (get_state) - (get_active_witnesses) - (get_block_header) - (get_block) - (get_ops_in_block) - (get_config) - (get_dynamic_global_properties) - (get_chain_properties) - (get_current_median_history_price) - (get_feed_history) - (get_witness_schedule) - (get_hardfork_version) - (get_next_scheduled_hardfork) - (get_reward_fund) - (get_key_references) - (get_accounts) - (get_account_references) - (lookup_account_names) - (lookup_accounts) - (get_account_count) - (get_owner_history) - (get_recovery_request) - (get_escrow) - (get_withdraw_routes) - (get_account_bandwidth) - (get_savings_withdraw_from) - (get_savings_withdraw_to) - (get_vesting_delegations) - (get_expiring_vesting_delegations) - (get_witnesses) - (get_conversion_requests) - (get_witness_by_account) - (get_witnesses_by_vote) - (lookup_witness_accounts) - (get_witness_count) - (get_open_orders) - (get_transaction_hex) - (get_transaction) - (get_required_signatures) - (get_potential_signatures) - (verify_authority) - (verify_account_authority) - (get_active_votes) - (get_account_votes) - (get_content) - (get_content_replies) - (get_tags_used_by_author) - (get_post_discussions_by_payout) - (get_comment_discussions_by_payout) - (get_discussions_by_trending) - (get_discussions_by_created) - (get_discussions_by_active) - (get_discussions_by_cashout) - (get_discussions_by_votes) - (get_discussions_by_children) - (get_discussions_by_hot) - (get_discussions_by_feed) - (get_discussions_by_blog) - (get_discussions_by_comments) - (get_discussions_by_promoted) - (get_replies_by_last_update) - (get_discussions_by_author_before_date) - (get_account_history) - (broadcast_transaction) - (broadcast_transaction_synchronous) - (broadcast_block) - (get_followers) - (get_following) - (get_follow_count) - (get_feed_entries) - (get_feed) - (get_blog_entries) - (get_blog) - (get_account_reputations) - (get_reblogged_by) - (get_blog_authors) - (get_ticker) - (get_volume) - (get_order_book) - (get_trade_history) - (get_recent_trades) - (get_market_history) - (get_market_history_buckets) - ) - - private: - friend class condenser_api_plugin; - void api_startup(); - - std::unique_ptr< detail::condenser_api_impl > my; -}; - -} } } // steem::plugins::condenser_api - -FC_REFLECT( steem::plugins::condenser_api::discussion_index, - (category)(trending)(payout)(payout_comments)(trending30)(updated)(created)(responses)(active)(votes)(maturing)(best)(hot)(promoted)(cashout) ) - -FC_REFLECT( steem::plugins::condenser_api::api_tag_object, - (name)(total_payouts)(net_votes)(top_posts)(comments)(trending) ) - -FC_REFLECT( steem::plugins::condenser_api::state, - (current_route)(props)(tag_idx)(tags)(content)(accounts)(witnesses)(discussion_idx)(witness_schedule)(feed_price)(error) ) - -FC_REFLECT( steem::plugins::condenser_api::api_limit_order_object, - (id)(created)(expiration)(seller)(orderid)(for_sale)(sell_price)(real_price)(rewarded) ) - -FC_REFLECT( steem::plugins::condenser_api::api_operation_object, - (trx_id)(block)(trx_in_block)(op_in_trx)(virtual_op)(timestamp)(op) ) - -FC_REFLECT( steem::plugins::condenser_api::api_account_object, - (id)(name)(owner)(active)(posting)(memo_key)(json_metadata)(proxy)(last_owner_update)(last_account_update) - (created)(mined) - (recovery_account)(last_account_recovery)(reset_account) - (comment_count)(lifetime_vote_count)(post_count)(can_vote)(voting_power)(last_vote_time) - (balance) - (savings_balance) - (sbd_balance)(sbd_seconds)(sbd_seconds_last_update)(sbd_last_interest_payment) - (savings_sbd_balance)(savings_sbd_seconds)(savings_sbd_seconds_last_update)(savings_sbd_last_interest_payment)(savings_withdraw_requests) - (reward_sbd_balance)(reward_steem_balance)(reward_vesting_balance)(reward_vesting_steem) - (vesting_shares)(delegated_vesting_shares)(received_vesting_shares)(vesting_withdraw_rate)(next_vesting_withdrawal)(withdrawn)(to_withdraw)(withdraw_routes) - (curation_rewards) - (posting_rewards) - (proxied_vsf_votes)(witnesses_voted_for) - (last_post)(last_root_post) - ) - -FC_REFLECT_DERIVED( steem::plugins::condenser_api::extended_account, (steem::plugins::condenser_api::api_account_object), - (average_bandwidth)(lifetime_bandwidth)(last_bandwidth_update)(average_market_bandwidth)(lifetime_market_bandwidth)(last_market_bandwidth_update) - (vesting_balance)(reputation)(transfer_history)(market_history)(post_history)(vote_history)(other_history)(witness_votes)(tags_usage)(guest_bloggers)(open_orders)(comments)(feed)(blog)(recent_replies)(recommended) ) - -FC_REFLECT( steem::plugins::condenser_api::extended_dynamic_global_properties, - (head_block_number)(head_block_id)(time) - (current_witness)(total_pow)(num_pow_witnesses) - (virtual_supply)(current_supply)(confidential_supply)(current_sbd_supply)(confidential_sbd_supply) - (total_vesting_fund_steem)(total_vesting_shares) - (total_reward_fund_steem)(total_reward_shares2)(pending_rewarded_vesting_shares)(pending_rewarded_vesting_steem) - (sbd_interest_rate)(sbd_print_rate) - (maximum_block_size)(current_aslot)(recent_slots_filled)(participation_count)(last_irreversible_block_num)(vote_power_reserve_rate) - (average_block_size)(current_reserve_ratio)(max_virtual_bandwidth) ) - -FC_REFLECT( steem::plugins::condenser_api::legacy_chain_properties, - (account_creation_fee)(maximum_block_size)(sbd_interest_rate) - ) - -FC_REFLECT( steem::plugins::condenser_api::api_witness_object, - (id) - (owner) - (created) - (url)(votes)(virtual_last_update)(virtual_position)(virtual_scheduled_time)(total_missed) - (last_aslot)(last_confirmed_block_num)(pow_worker)(signing_key) - (props) - (sbd_exchange_rate)(last_sbd_exchange_update) - (last_work) - (running_version) - (hardfork_version_vote)(hardfork_time_vote) - ) - -FC_REFLECT( steem::plugins::condenser_api::api_witness_schedule_object, - (id) - (current_virtual_time) - (next_shuffle_block_num) - (current_shuffled_witnesses) - (num_scheduled_witnesses) - (top19_weight) - (timeshare_weight) - (miner_weight) - (witness_pay_normalization_factor) - (median_props) - (majority_version) - (max_voted_witnesses) - (max_miner_witnesses) - (max_runner_witnesses) - (hardfork_required_witnesses) - ) - -FC_REFLECT( steem::plugins::condenser_api::api_feed_history_object, - (id) - (current_median_history) - (price_history) - ) - -FC_REFLECT( steem::plugins::condenser_api::api_reward_fund_object, - (id) - (name) - (reward_balance) - (recent_claims) - (last_update) - (content_constant) - (percent_curation_rewards) - (percent_content_rewards) - (author_reward_curve) - (curation_reward_curve) - ) - -FC_REFLECT( steem::plugins::condenser_api::api_escrow_object, - (id)(escrow_id)(from)(to)(agent) - (ratification_deadline)(escrow_expiration) - (sbd_balance)(steem_balance)(pending_fee) - (to_approved)(agent_approved)(disputed) ) - -FC_REFLECT( steem::plugins::condenser_api::api_savings_withdraw_object, - (id) - (from) - (to) - (memo) - (request_id) - (amount) - (complete) - ) - -FC_REFLECT( steem::plugins::condenser_api::api_vesting_delegation_object, - (id)(delegator)(delegatee)(vesting_shares)(min_delegation_time) ) - -FC_REFLECT( steem::plugins::condenser_api::api_vesting_delegation_expiration_object, - (id)(delegator)(vesting_shares)(expiration) ) - -FC_REFLECT( steem::plugins::condenser_api::api_convert_request_object, - (id)(owner)(requestid)(amount)(conversion_date) ) - -FC_REFLECT( steem::plugins::condenser_api::discussion, - (id)(author)(permlink) - (category)(parent_author)(parent_permlink) - (title)(body)(json_metadata)(last_update)(created)(active)(last_payout) - (depth)(children) - (net_rshares)(abs_rshares)(vote_rshares) - (children_abs_rshares)(cashout_time)(max_cashout_time) - (total_vote_weight)(reward_weight)(total_payout_value)(curator_payout_value)(author_rewards)(net_votes) - (root_author)(root_permlink) - (max_accepted_payout)(percent_steem_dollars)(allow_replies)(allow_votes)(allow_curation_rewards) - (beneficiaries) - (url)(root_title)(pending_payout_value)(total_pending_payout_value) - (active_votes)(replies)(author_reputation)(promoted) - (body_length)(reblogged_by)(first_reblogged_by)(first_reblogged_on) - ) - -FC_REFLECT( steem::plugins::condenser_api::scheduled_hardfork, - (hf_version)(live_time) ) - -FC_REFLECT( steem::plugins::condenser_api::account_vote, - (authorperm)(weight)(rshares)(percent)(time) ) - -FC_REFLECT( steem::plugins::condenser_api::tag_index, (trending) ) - -FC_REFLECT_ENUM( steem::plugins::condenser_api::withdraw_route_type, (incoming)(outgoing)(all) ) - -FC_REFLECT( steem::plugins::condenser_api::get_version_return, - (blockchain_version)(steem_revision)(fc_revision) ) - -FC_REFLECT( steem::plugins::condenser_api::ticker, - (latest)(lowest_ask)(highest_bid)(percent_change)(steem_volume)(sbd_volume) ) - -FC_REFLECT( steem::plugins::condenser_api::volume, - (steem_volume)(sbd_volume) ) - -FC_REFLECT( steem::plugins::condenser_api::order, - (order_price)(real_price)(steem)(sbd)(created) ) - -FC_REFLECT( steem::plugins::condenser_api::order_book, - (bids)(asks) ) - -FC_REFLECT( steem::plugins::condenser_api::market_trade, - (date)(current_pays)(open_pays) ) diff --git a/libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api_legacy_asset.hpp b/libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api_legacy_asset.hpp deleted file mode 100644 index 5f93b1c2..00000000 --- a/libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api_legacy_asset.hpp +++ /dev/null @@ -1,57 +0,0 @@ -#pragma once - -#include - -namespace steem { namespace plugins { namespace condenser_api { - -using steem::protocol::asset; -using steem::protocol::asset_symbol_type; -using steem::protocol::share_type; - -struct legacy_asset -{ - public: - legacy_asset() {} - - asset to_asset()const - { - return asset( amount, symbol ); - } - - operator asset()const { return to_asset(); } - - static legacy_asset from_asset( const asset& a ) - { - legacy_asset leg; - leg.amount = a.amount; - leg.symbol = a.symbol; - return leg; - } - - string to_string()const; - static legacy_asset from_string( const string& from ); - - share_type amount; - asset_symbol_type symbol = STEEM_SYMBOL; -}; - -} } } // steem::plugins::condenser_api - -namespace fc { - - inline void to_variant( const steem::plugins::condenser_api::legacy_asset& a, fc::variant& var ) - { - var = a.to_string(); - } - - inline void from_variant( const fc::variant& var, steem::plugins::condenser_api::legacy_asset& a ) - { - a = steem::plugins::condenser_api::legacy_asset::from_string( var.as_string() ); - } - -} // fc - -FC_REFLECT( steem::plugins::condenser_api::legacy_asset, - (amount) - (symbol) - ) diff --git a/libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api_legacy_operations.hpp b/libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api_legacy_operations.hpp deleted file mode 100644 index ccd77623..00000000 --- a/libraries/plugins/apis/condenser_api/include/steem/plugins/condenser_api/condenser_api_legacy_operations.hpp +++ /dev/null @@ -1,1367 +0,0 @@ -#include -#include - -namespace steem { namespace plugins { namespace condenser_api { - - using namespace steem::protocol; - - typedef account_update_operation legacy_account_update_operation; - typedef comment_operation legacy_comment_operation; - typedef placeholder_a_operation legacy_placeholder_a_operation; - typedef placeholder_b_operation legacy_placeholder_b_operation; - typedef delete_comment_operation legacy_delete_comment_operation; - typedef vote_operation legacy_vote_operation; - typedef escrow_approve_operation legacy_escrow_approve_operation; - typedef escrow_dispute_operation legacy_escrow_dispute_operation; - typedef set_withdraw_vesting_route_operation legacy_set_withdraw_vesting_route_operation; - typedef witness_set_properties_operation legacy_witness_set_properties_operation; - typedef account_witness_vote_operation legacy_account_witness_vote_operation; - typedef account_witness_proxy_operation legacy_account_witness_proxy_operation; - typedef custom_operation legacy_custom_operation; - typedef custom_json_operation legacy_custom_json_operation; - typedef custom_binary_operation legacy_custom_binary_operation; - typedef limit_order_cancel_operation legacy_limit_order_cancel_operation; - typedef pow_operation legacy_pow_operation; - typedef pow2_operation legacy_pow2_operation; - typedef report_over_production_operation legacy_report_over_production_operation; - typedef request_account_recovery_operation legacy_request_account_recovery_operation; - typedef recover_account_operation legacy_recover_account_operation; - typedef reset_account_operation legacy_reset_account_operation; - typedef set_reset_account_operation legacy_set_reset_account_operation; - typedef change_recovery_account_operation legacy_change_recovery_account_operation; - typedef cancel_transfer_from_savings_operation legacy_cancel_transfer_from_savings_operation; - typedef decline_voting_rights_operation legacy_decline_voting_rights_operation; - typedef shutdown_witness_operation legacy_shutdown_witness_operation; - typedef hardfork_operation legacy_hardfork_operation; - typedef comment_payout_update_operation legacy_comment_payout_update_operation; - - struct legacy_price - { - legacy_price() {} - legacy_price( const protocol::price& p ) : - base( legacy_asset::from_asset( p.base ) ), - quote( legacy_asset::from_asset( p.quote ) ) - {} - - operator price()const { return price( base, quote ); } - - legacy_asset base; - legacy_asset quote; - }; - - struct legacy_account_create_operation - { - legacy_account_create_operation() {} - legacy_account_create_operation( const account_create_operation& op ) : - fee( legacy_asset::from_asset( op.fee ) ), - creator( op.creator ), - new_account_name( op.new_account_name ), - owner( op.owner ), - active( op.active ), - posting( op.posting ), - memo_key( op.memo_key ), - json_metadata( op.json_metadata ) - {} - - operator account_create_operation()const - { - account_create_operation op; - op.fee = fee; - op.creator = creator; - op.new_account_name = new_account_name; - op.owner = owner; - op.active = active; - op.posting = posting; - op.memo_key = memo_key; - op.json_metadata = json_metadata; - return op; - } - - legacy_asset fee; - account_name_type creator; - account_name_type new_account_name; - authority owner; - authority active; - authority posting; - public_key_type memo_key; - string json_metadata; - }; - - struct legacy_account_create_with_delegation_operation - { - legacy_account_create_with_delegation_operation() {} - legacy_account_create_with_delegation_operation( const account_create_with_delegation_operation op ) : - fee( legacy_asset::from_asset( op.fee ) ), - delegation( legacy_asset::from_asset( op.delegation ) ), - creator( op.creator ), - new_account_name( op.new_account_name ), - owner( op.owner ), - active( op.active ), - posting( op.posting ), - memo_key( op.memo_key ), - json_metadata( op.json_metadata ) - { - extensions.insert( op.extensions.begin(), op.extensions.end() ); - } - - operator account_create_with_delegation_operation()const - { - account_create_with_delegation_operation op; - op.fee = fee; - op.delegation = delegation; - op.creator = creator; - op.new_account_name = new_account_name; - op.owner = owner; - op.active = active; - op.posting = posting; - op.memo_key = memo_key; - op.json_metadata = json_metadata; - op.extensions.insert( extensions.begin(), extensions.end() ); - return op; - } - - legacy_asset fee; - legacy_asset delegation; - account_name_type creator; - account_name_type new_account_name; - authority owner; - authority active; - authority posting; - public_key_type memo_key; - string json_metadata; - - extensions_type extensions; - }; - - struct legacy_comment_options_operation - { - legacy_comment_options_operation() {} - legacy_comment_options_operation( const comment_options_operation& op ) : - author( op.author ), - permlink( op.permlink ), - max_accepted_payout( legacy_asset::from_asset( op.max_accepted_payout ) ), - allow_votes( op.allow_votes ), - allow_curation_rewards( op.allow_curation_rewards ) - { - extensions.insert( op.extensions.begin(), op.extensions.end() ); - } - - operator comment_options_operation()const - { - comment_options_operation op; - op.author = author; - op.permlink = permlink; - op.max_accepted_payout = max_accepted_payout; - op.percent_steem_dollars = percent_steem_dollars; - op.allow_curation_rewards = allow_curation_rewards; - op.extensions.insert( extensions.begin(), extensions.end() ); - return op; - } - - account_name_type author; - string permlink; - - legacy_asset max_accepted_payout; - uint16_t percent_steem_dollars; - bool allow_votes; - bool allow_curation_rewards; - protocol::comment_options_extensions_type extensions; - }; - - - struct legacy_transfer_operation - { - legacy_transfer_operation() {} - legacy_transfer_operation( const transfer_operation& op ) : - from( op.from ), - to( op.to ), - amount( legacy_asset::from_asset( op.amount ) ), - memo( op.memo ) - {} - - operator transfer_operation()const - { - transfer_operation op; - op.from = from; - op.to = to; - op.amount = amount; - op.memo = memo; - return op; - } - - account_name_type from; - account_name_type to; - legacy_asset amount; - string memo; - }; - - struct legacy_escrow_transfer_operation - { - legacy_escrow_transfer_operation() {} - legacy_escrow_transfer_operation( const escrow_transfer_operation& op ) : - from( op.from ), - to( op.to ), - agent( op.agent ), - escrow_id( op.escrow_id ), - sbd_amount( legacy_asset::from_asset( op.sbd_amount ) ), - steem_amount( legacy_asset::from_asset( op.steem_amount ) ), - fee( legacy_asset::from_asset( op.fee ) ), - ratification_deadline( op.ratification_deadline ), - escrow_expiration( op.escrow_expiration ), - json_meta( op.json_meta ) - {} - - operator escrow_transfer_operation()const - { - escrow_transfer_operation op; - op.from = from; - op.to = to; - op.agent = agent; - op.escrow_id = escrow_id; - op.sbd_amount = sbd_amount; - op.steem_amount = steem_amount; - op.fee = fee; - op.ratification_deadline = ratification_deadline; - op.escrow_expiration = escrow_expiration; - op.json_meta = json_meta; - return op; - } - - account_name_type from; - account_name_type to; - account_name_type agent; - uint32_t escrow_id; - - legacy_asset sbd_amount; - legacy_asset steem_amount; - legacy_asset fee; - - time_point_sec ratification_deadline; - time_point_sec escrow_expiration; - - string json_meta; - }; - - struct legacy_escrow_release_operation - { - legacy_escrow_release_operation() {} - legacy_escrow_release_operation( const escrow_release_operation& op ) : - from( op.from ), - to( op.to ), - agent( op.agent ), - who( op.who ), - receiver( op.receiver ), - escrow_id( op.escrow_id ), - sbd_amount( legacy_asset::from_asset( op.sbd_amount ) ), - steem_amount( legacy_asset::from_asset( op.steem_amount ) ) - {} - - operator escrow_release_operation()const - { - escrow_release_operation op; - op.from = from; - op.to = to; - op.agent = agent; - op.who = who; - op.receiver = receiver; - op.escrow_id = escrow_id; - op.sbd_amount = sbd_amount; - op.steem_amount = steem_amount; - return op; - } - - account_name_type from; - account_name_type to; - account_name_type agent; - account_name_type who; - account_name_type receiver; - - uint32_t escrow_id; - legacy_asset sbd_amount; - legacy_asset steem_amount; - }; - - struct legacy_transfer_to_vesting_operation - { - legacy_transfer_to_vesting_operation() {} - legacy_transfer_to_vesting_operation( const transfer_to_vesting_operation& op ) : - from( op.from ), - to( op.to ), - amount( legacy_asset::from_asset( op.amount ) ) - {} - - operator transfer_to_vesting_operation()const - { - transfer_to_vesting_operation op; - op.from = from; - op.to = to; - op.amount = amount; - return op; - } - - account_name_type from; - account_name_type to; - legacy_asset amount; - }; - - struct legacy_withdraw_vesting_operation - { - legacy_withdraw_vesting_operation() {} - legacy_withdraw_vesting_operation( const withdraw_vesting_operation& op ) : - account( op.account ), - vesting_shares( legacy_asset::from_asset( op.vesting_shares) ) - {} - - operator withdraw_vesting_operation()const - { - withdraw_vesting_operation op; - op.account = account; - op.vesting_shares = vesting_shares; - return op; - } - - account_name_type account; - legacy_asset vesting_shares; - }; - - struct legacy_witness_update_operation - { - legacy_witness_update_operation() {} - legacy_witness_update_operation( const witness_update_operation& op ) : - owner( op.owner ), - url( op.url ), - block_signing_key( op.block_signing_key ), - fee( legacy_asset::from_asset( op.fee ) ) - { - props.account_creation_fee = op.props.account_creation_fee; - props.maximum_block_size = op.props.maximum_block_size; - props.sbd_interest_rate = op.props.sbd_interest_rate; - } - - operator witness_update_operation()const - { - witness_update_operation op; - op.owner = owner; - op.url = url; - op.block_signing_key = block_signing_key; - op.props.account_creation_fee = props.account_creation_fee; - op.props.maximum_block_size = props.maximum_block_size; - op.props.sbd_interest_rate = props.sbd_interest_rate; - op.fee = fee; - return op; - } - - account_name_type owner; - string url; - public_key_type block_signing_key; - legacy_chain_properties props; - legacy_asset fee; - }; - - struct legacy_feed_publish_operation - { - legacy_feed_publish_operation() {} - legacy_feed_publish_operation( const feed_publish_operation& op ) : - publisher( op.publisher ), - exchange_rate( legacy_price( op.exchange_rate ) ) - {} - - operator feed_publish_operation()const - { - feed_publish_operation op; - op.publisher = publisher; - op.exchange_rate = exchange_rate; - return op; - } - - account_name_type publisher; - legacy_price exchange_rate; - }; - - struct legacy_convert_operation - { - legacy_convert_operation() {} - legacy_convert_operation( const convert_operation& op ) : - owner( op.owner ), - requestid( op.requestid ), - amount( legacy_asset::from_asset( op.amount ) ) - {} - - operator convert_operation()const - { - convert_operation op; - op.owner = owner; - op.requestid = requestid; - op.amount = amount; - return op; - } - - account_name_type owner; - uint32_t requestid = 0; - legacy_asset amount; - }; - - struct legacy_limit_order_create_operation - { - legacy_limit_order_create_operation() {} - legacy_limit_order_create_operation( const limit_order_create_operation& op ) : - owner( op.owner ), - orderid( op.orderid ), - amount_to_sell( legacy_asset::from_asset( op.amount_to_sell ) ), - min_to_receive( legacy_asset::from_asset( op.min_to_receive ) ), - fill_or_kill( op.fill_or_kill ), - expiration( op.expiration ) - {} - - operator limit_order_create_operation()const - { - limit_order_create_operation op; - op.owner = owner; - op.orderid = orderid; - op.amount_to_sell = amount_to_sell; - op.min_to_receive = min_to_receive; - op.fill_or_kill = fill_or_kill; - op.expiration = expiration; - return op; - } - - account_name_type owner; - uint32_t orderid; - legacy_asset amount_to_sell; - legacy_asset min_to_receive; - bool fill_or_kill; - time_point_sec expiration; - }; - - struct legacy_limit_order_create2_operation - { - legacy_limit_order_create2_operation() {} - legacy_limit_order_create2_operation( const limit_order_create2_operation& op ) : - owner( op.owner ), - orderid( op.orderid ), - amount_to_sell( legacy_asset::from_asset( op.amount_to_sell ) ), - fill_or_kill( op.fill_or_kill ), - exchange_rate( op.exchange_rate ), - expiration( op.expiration ) - {} - - operator limit_order_create2_operation()const - { - limit_order_create2_operation op; - op.owner = owner; - op.orderid = orderid; - op.amount_to_sell = amount_to_sell; - op.fill_or_kill = fill_or_kill; - op.exchange_rate = exchange_rate; - op.expiration = expiration; - return op; - } - - account_name_type owner; - uint32_t orderid; - legacy_asset amount_to_sell; - bool fill_or_kill; - legacy_price exchange_rate; - time_point_sec expiration; - }; - - struct legacy_transfer_to_savings_operation - { - legacy_transfer_to_savings_operation() {} - legacy_transfer_to_savings_operation( const transfer_to_savings_operation& op ) : - from( op.from ), - to( op.to ), - amount( legacy_asset::from_asset( op.amount ) ), - memo( op.memo ) - {} - - operator transfer_to_savings_operation()const - { - transfer_to_savings_operation op; - op.from = from; - op.to = to; - op.amount = amount; - op.memo = memo; - return op; - } - - account_name_type from; - account_name_type to; - legacy_asset amount; - string memo; - }; - - struct legacy_transfer_from_savings_operation - { - legacy_transfer_from_savings_operation() {} - legacy_transfer_from_savings_operation( const transfer_from_savings_operation& op ) : - from( op.from ), - request_id( op.request_id ), - to( op.to ), - amount( legacy_asset::from_asset( op.amount ) ), - memo( op.memo ) - {} - - operator transfer_from_savings_operation()const - { - transfer_from_savings_operation op; - op.from = from; - op.request_id = request_id; - op.to = to; - op.amount = amount; - op.memo = memo; - return op; - } - - account_name_type from; - uint32_t request_id; - account_name_type to; - legacy_asset amount; - string memo; - }; - - struct legacy_claim_reward_balance_operation - { - legacy_claim_reward_balance_operation() {} - legacy_claim_reward_balance_operation( const claim_reward_balance_operation& op ) : - account( op.account ), - reward_steem( legacy_asset::from_asset( op.reward_steem ) ), - reward_sbd( legacy_asset::from_asset( op.reward_sbd ) ), - reward_vests( legacy_asset::from_asset( op.reward_vests ) ) - {} - - operator claim_reward_balance_operation()const - { - claim_reward_balance_operation op; - op.account = account; - op.reward_steem = reward_steem; - op.reward_sbd = reward_sbd; - op.reward_vests = reward_vests; - return op; - } - - account_name_type account; - legacy_asset reward_steem; - legacy_asset reward_sbd; - legacy_asset reward_vests; - }; - - struct legacy_delegate_vesting_shares_operation - { - legacy_delegate_vesting_shares_operation() {} - legacy_delegate_vesting_shares_operation( const delegate_vesting_shares_operation& op ) : - delegator( op.delegator ), - delegatee( op.delegatee ), - vesting_shares( legacy_asset::from_asset( op.vesting_shares ) ) - {} - - operator delegate_vesting_shares_operation()const - { - delegate_vesting_shares_operation op; - op.delegator = delegator; - op.delegatee = delegatee; - op.vesting_shares = vesting_shares; - return op; - } - - account_name_type delegator; - account_name_type delegatee; - legacy_asset vesting_shares; - }; - - struct legacy_author_reward_operation - { - legacy_author_reward_operation() {} - legacy_author_reward_operation( const author_reward_operation& op ) : - author( op.author ), - permlink( op.permlink ), - sbd_payout( legacy_asset::from_asset( op.sbd_payout ) ), - steem_payout( legacy_asset::from_asset( op.steem_payout ) ), - vesting_payout( legacy_asset::from_asset( op.vesting_payout ) ) - {} - - operator author_reward_operation()const - { - author_reward_operation op; - op.author = author; - op.permlink = permlink; - op.sbd_payout = sbd_payout; - op.steem_payout = steem_payout; - op.vesting_payout = vesting_payout; - return op; - } - - account_name_type author; - string permlink; - legacy_asset sbd_payout; - legacy_asset steem_payout; - legacy_asset vesting_payout; - }; - - struct legacy_curation_reward_operation - { - legacy_curation_reward_operation() {} - legacy_curation_reward_operation( const curation_reward_operation& op ) : - curator( op.curator ), - reward( legacy_asset::from_asset( op.reward ) ), - comment_author( op.comment_author ), - comment_permlink( op.comment_permlink ) - {} - - operator curation_reward_operation()const - { - curation_reward_operation op; - op.curator = curator; - op.reward = reward; - op.comment_author = comment_author; - op.comment_permlink = comment_permlink; - return op; - } - - account_name_type curator; - legacy_asset reward; - account_name_type comment_author; - string comment_permlink; - }; - - struct legacy_comment_reward_operation - { - legacy_comment_reward_operation() {} - legacy_comment_reward_operation( const comment_reward_operation& op ) : - author( op.author ), - permlink( op.permlink ), - payout( legacy_asset::from_asset( op.payout ) ) - {} - - operator comment_reward_operation()const - { - comment_reward_operation op; - op.author = author; - op.permlink = permlink; - op.payout = payout; - return op; - } - - account_name_type author; - string permlink; - legacy_asset payout; - }; - - struct legacy_liquidity_reward_operation - { - legacy_liquidity_reward_operation() {} - legacy_liquidity_reward_operation( const liquidity_reward_operation& op ) : - owner( op.owner ), - payout( legacy_asset::from_asset( op.payout ) ) - {} - - operator liquidity_reward_operation()const - { - liquidity_reward_operation op; - op.owner = owner; - op.payout = payout; - return op; - } - - account_name_type owner; - legacy_asset payout; - }; - - struct legacy_interest_operation - { - legacy_interest_operation() {} - legacy_interest_operation( const interest_operation& op ) : - owner( op.owner ), - interest( legacy_asset::from_asset( op.interest ) ) - {} - - operator interest_operation()const - { - interest_operation op; - op.owner = owner; - op.interest = interest; - return op; - } - - account_name_type owner; - legacy_asset interest; - }; - - struct legacy_fill_convert_request_operation - { - legacy_fill_convert_request_operation() {} - legacy_fill_convert_request_operation( const fill_convert_request_operation& op ) : - owner( op.owner ), - requestid( op.requestid ), - amount_in( legacy_asset::from_asset( op.amount_in ) ), - amount_out( legacy_asset::from_asset( op.amount_out ) ) - {} - - operator fill_convert_request_operation()const - { - fill_convert_request_operation op; - op.owner = owner; - op.requestid = requestid; - op.amount_in = amount_in; - op.amount_out = amount_out; - return op; - } - - account_name_type owner; - uint32_t requestid; - legacy_asset amount_in; - legacy_asset amount_out; - }; - - struct legacy_fill_vesting_withdraw_operation - { - legacy_fill_vesting_withdraw_operation() {} - legacy_fill_vesting_withdraw_operation( const fill_vesting_withdraw_operation& op ) : - from_account( op.from_account ), - to_account( op.to_account ), - withdrawn( legacy_asset::from_asset( op.withdrawn ) ), - deposited( legacy_asset::from_asset( op.deposited ) ) - {} - - operator fill_vesting_withdraw_operation()const - { - fill_vesting_withdraw_operation op; - op.from_account = from_account; - op.to_account = to_account; - op.withdrawn = withdrawn; - op.deposited = deposited; - return op; - } - - account_name_type from_account; - account_name_type to_account; - legacy_asset withdrawn; - legacy_asset deposited; - }; - - struct legacy_fill_order_operation - { - legacy_fill_order_operation() {} - legacy_fill_order_operation( const fill_order_operation& op ) : - current_owner( op.current_owner ), - current_orderid( op.current_orderid ), - current_pays( legacy_asset::from_asset( op.current_pays ) ), - open_owner( op.open_owner ), - open_orderid( op.open_orderid ), - open_pays( legacy_asset::from_asset( op.open_pays ) ) - {} - - operator fill_order_operation()const - { - fill_order_operation op; - op.current_owner = current_owner; - op.current_orderid = current_orderid; - op.current_pays = current_pays; - op.open_owner = open_owner; - op.open_orderid = open_orderid; - op.open_pays = open_pays; - return op; - } - - account_name_type current_owner; - uint32_t current_orderid; - legacy_asset current_pays; - account_name_type open_owner; - uint32_t open_orderid; - legacy_asset open_pays; - }; - - struct legacy_fill_transfer_from_savings_operation - { - legacy_fill_transfer_from_savings_operation() {} - legacy_fill_transfer_from_savings_operation( const fill_transfer_from_savings_operation& op ) : - from( op.from ), - to( op.to ), - amount( legacy_asset::from_asset( op.amount ) ), - request_id( op.request_id ), - memo( op.memo ) - {} - - operator fill_transfer_from_savings_operation()const - { - fill_transfer_from_savings_operation op; - op.from = from; - op.to = to; - op.amount = amount; - op.request_id = request_id; - op.memo = memo; - return op; - } - - account_name_type from; - account_name_type to; - legacy_asset amount; - uint32_t request_id = 0; - string memo; - }; - - struct legacy_return_vesting_delegation_operation - { - legacy_return_vesting_delegation_operation() {} - legacy_return_vesting_delegation_operation( const return_vesting_delegation_operation& op ) : - account( op.account ), - vesting_shares( legacy_asset::from_asset( op.vesting_shares ) ) - {} - - operator return_vesting_delegation_operation()const - { - return_vesting_delegation_operation op; - op.account = account; - op.vesting_shares = vesting_shares; - return op; - } - - account_name_type account; - legacy_asset vesting_shares; - }; - - struct legacy_comment_benefactor_reward_operation - { - legacy_comment_benefactor_reward_operation() {} - legacy_comment_benefactor_reward_operation( const comment_benefactor_reward_operation& op ) : - benefactor( op.benefactor ), - author( op.author ), - permlink( op.permlink ), - reward( legacy_asset::from_asset( op.reward ) ) - {} - - operator comment_benefactor_reward_operation()const - { - comment_benefactor_reward_operation op; - op.benefactor = benefactor; - op.author = author; - op.permlink = permlink; - op.reward = reward; - return op; - } - - account_name_type benefactor; - account_name_type author; - string permlink; - legacy_asset reward; - }; - - struct legacy_producer_reward_operation - { - legacy_producer_reward_operation() {} - legacy_producer_reward_operation( const producer_reward_operation& op ) : - producer( op.producer ), - vesting_shares( legacy_asset::from_asset( op.vesting_shares ) ) - {} - - operator producer_reward_operation()const - { - producer_reward_operation op; - op.producer = producer; - op.vesting_shares = vesting_shares; - return op; - } - - account_name_type producer; - legacy_asset vesting_shares; - }; - - typedef fc::static_variant< - legacy_vote_operation, - legacy_comment_operation, - legacy_transfer_operation, - legacy_transfer_to_vesting_operation, - legacy_withdraw_vesting_operation, - legacy_limit_order_create_operation, - legacy_limit_order_cancel_operation, - legacy_feed_publish_operation, - legacy_convert_operation, - legacy_account_create_operation, - legacy_account_update_operation, - legacy_witness_update_operation, - legacy_account_witness_vote_operation, - legacy_account_witness_proxy_operation, - legacy_pow_operation, - legacy_custom_operation, - legacy_report_over_production_operation, - legacy_delete_comment_operation, - legacy_custom_json_operation, - legacy_comment_options_operation, - legacy_set_withdraw_vesting_route_operation, - legacy_limit_order_create2_operation, - legacy_placeholder_a_operation, - legacy_placeholder_b_operation, - legacy_request_account_recovery_operation, - legacy_recover_account_operation, - legacy_change_recovery_account_operation, - legacy_escrow_transfer_operation, - legacy_escrow_dispute_operation, - legacy_escrow_release_operation, - legacy_pow2_operation, - legacy_escrow_approve_operation, - legacy_transfer_to_savings_operation, - legacy_transfer_from_savings_operation, - legacy_cancel_transfer_from_savings_operation, - legacy_custom_binary_operation, - legacy_decline_voting_rights_operation, - legacy_reset_account_operation, - legacy_set_reset_account_operation, - legacy_claim_reward_balance_operation, - legacy_delegate_vesting_shares_operation, - legacy_account_create_with_delegation_operation, - legacy_witness_set_properties_operation, - legacy_fill_convert_request_operation, - legacy_author_reward_operation, - legacy_curation_reward_operation, - legacy_comment_reward_operation, - legacy_liquidity_reward_operation, - legacy_interest_operation, - legacy_fill_vesting_withdraw_operation, - legacy_fill_order_operation, - legacy_shutdown_witness_operation, - legacy_fill_transfer_from_savings_operation, - legacy_hardfork_operation, - legacy_comment_payout_update_operation, - legacy_return_vesting_delegation_operation, - legacy_comment_benefactor_reward_operation, - legacy_producer_reward_operation - > legacy_operation; - - struct legacy_operation_conversion_visitor - { - legacy_operation_conversion_visitor( legacy_operation& legacy_op ) : l_op( legacy_op ) {} - - typedef bool result_type; - - legacy_operation& l_op; - - bool operator()( const account_update_operation& op )const { l_op = op; return true; } - bool operator()( const comment_operation& op )const { l_op = op; return true; } - bool operator()( const placeholder_a_operation& op )const { l_op = op; return true; } - bool operator()( const placeholder_b_operation& op )const { l_op = op; return true; } - bool operator()( const delete_comment_operation& op )const { l_op = op; return true; } - bool operator()( const vote_operation& op )const { l_op = op; return true; } - bool operator()( const escrow_approve_operation& op )const { l_op = op; return true; } - bool operator()( const escrow_dispute_operation& op )const { l_op = op; return true; } - bool operator()( const set_withdraw_vesting_route_operation& op )const { l_op = op; return true; } - bool operator()( const witness_set_properties_operation& op )const { l_op = op; return true; } - bool operator()( const account_witness_vote_operation& op )const { l_op = op; return true; } - bool operator()( const account_witness_proxy_operation& op )const { l_op = op; return true; } - bool operator()( const custom_operation& op )const { l_op = op; return true; } - bool operator()( const custom_json_operation& op )const { l_op = op; return true; } - bool operator()( const custom_binary_operation& op )const { l_op = op; return true; } - bool operator()( const limit_order_cancel_operation& op )const { l_op = op; return true; } - bool operator()( const pow_operation& op )const { l_op = op; return true; } - bool operator()( const pow2_operation& op )const { l_op = op; return true; } - bool operator()( const report_over_production_operation& op )const { l_op = op; return true; } - bool operator()( const request_account_recovery_operation& op )const { l_op = op; return true; } - bool operator()( const recover_account_operation& op )const { l_op = op; return true; } - bool operator()( const reset_account_operation& op )const { l_op = op; return true; } - bool operator()( const set_reset_account_operation& op )const { l_op = op; return true; } - bool operator()( const change_recovery_account_operation& op )const { l_op = op; return true; } - bool operator()( const cancel_transfer_from_savings_operation& op )const { l_op = op; return true; } - bool operator()( const decline_voting_rights_operation& op )const { l_op = op; return true; } - bool operator()( const shutdown_witness_operation& op )const { l_op = op; return true; } - bool operator()( const hardfork_operation& op )const { l_op = op; return true; } - bool operator()( const comment_payout_update_operation& op )const { l_op = op; return true; } - - bool operator()( const transfer_operation& op )const - { - l_op = legacy_transfer_operation( op ); - return true; - } - - bool operator()( const transfer_to_vesting_operation& op )const - { - l_op = legacy_transfer_to_vesting_operation( op ); - return true; - } - - bool operator()( const withdraw_vesting_operation& op )const - { - l_op = legacy_withdraw_vesting_operation( op ); - return true; - } - - bool operator()( const limit_order_create_operation& op )const - { - l_op = legacy_limit_order_create_operation( op ); - return true; - } - - bool operator()( const feed_publish_operation& op )const - { - l_op = legacy_feed_publish_operation( op ); - return true; - } - - bool operator()( const convert_operation& op )const - { - l_op = legacy_convert_operation( op ); - return true; - } - - bool operator()( const account_create_operation& op )const - { - l_op = legacy_account_create_operation( op ); - return true; - } - - bool operator()( const witness_update_operation& op )const - { - l_op = legacy_witness_update_operation( op ); - return true; - } - - bool operator()( const comment_options_operation& op )const - { - l_op = legacy_comment_options_operation( op ); - return true; - } - - bool operator()( const limit_order_create2_operation& op )const - { - l_op = legacy_limit_order_create2_operation( op ); - return true; - } - - bool operator()( const escrow_transfer_operation& op )const - { - l_op = legacy_escrow_transfer_operation( op ); - return true; - } - - bool operator()( const escrow_release_operation& op )const - { - l_op = legacy_escrow_release_operation( op ); - return true; - } - - bool operator()( const transfer_to_savings_operation& op )const - { - l_op = legacy_transfer_to_savings_operation( op ); - return true; - } - - bool operator()( const transfer_from_savings_operation& op )const - { - l_op = legacy_transfer_from_savings_operation( op ); - return true; - } - - bool operator()( const claim_reward_balance_operation& op )const - { - l_op = legacy_claim_reward_balance_operation( op ); - return true; - } - - bool operator()( const delegate_vesting_shares_operation& op )const - { - l_op = legacy_delegate_vesting_shares_operation( op ); - return true; - } - - bool operator()( const account_create_with_delegation_operation& op )const - { - l_op = legacy_account_create_with_delegation_operation( op ); - return true; - } - - bool operator()( const fill_convert_request_operation& op )const - { - l_op = legacy_fill_convert_request_operation( op ); - return true; - } - - bool operator()( const author_reward_operation& op )const - { - l_op = legacy_author_reward_operation( op ); - return true; - } - - bool operator()( const curation_reward_operation& op )const - { - l_op = legacy_curation_reward_operation( op ); - return true; - } - - bool operator()( const comment_reward_operation& op )const - { - l_op = legacy_comment_reward_operation( op ); - return true; - } - - bool operator()( const liquidity_reward_operation& op )const - { - l_op = legacy_liquidity_reward_operation( op ); - return true; - } - - bool operator()( const interest_operation& op )const - { - l_op = legacy_interest_operation( op ); - return true; - } - - bool operator()( const fill_vesting_withdraw_operation& op )const - { - l_op = legacy_fill_vesting_withdraw_operation( op ); - return true; - } - - bool operator()( const fill_order_operation& op )const - { - l_op = legacy_fill_order_operation( op ); - return true; - } - - bool operator()( const fill_transfer_from_savings_operation& op )const - { - l_op = legacy_fill_transfer_from_savings_operation( op ); - return true; - } - - bool operator()( const return_vesting_delegation_operation& op )const - { - l_op = legacy_return_vesting_delegation_operation( op ); - return true; - } - - bool operator()( const comment_benefactor_reward_operation& op )const - { - l_op = legacy_comment_benefactor_reward_operation( op ); - return true; - } - - bool operator()( const producer_reward_operation& op )const - { - l_op = legacy_producer_reward_operation( op ); - return true; - } - - - // Should only be SMT ops - template< typename T > - bool operator()( const T& )const { return false; } -}; - -struct convert_from_legacy_operation_visitor -{ - convert_from_legacy_operation_visitor() {} - - typedef operation result_type; - - operation operator()( const legacy_transfer_operation& op )const - { - return operation( transfer_operation( op ) ); - } - - operation operator()( const legacy_transfer_to_vesting_operation& op )const - { - return operation( transfer_to_vesting_operation( op ) ); - } - - operation operator()( const legacy_withdraw_vesting_operation& op )const - { - return operation( withdraw_vesting_operation( op ) ); - } - - operation operator()( const legacy_limit_order_create_operation& op )const - { - return operation( limit_order_create_operation( op ) ); - } - - operation operator()( const legacy_feed_publish_operation& op )const - { - return operation( feed_publish_operation( op ) ); - } - - operation operator()( const legacy_convert_operation& op )const - { - return operation( convert_operation( op ) ); - } - - operation operator()( const legacy_account_create_operation& op )const - { - return operation( account_create_operation( op ) ); - } - - operation operator()( const legacy_witness_update_operation& op )const - { - return operation( witness_update_operation( op ) ); - } - - operation operator()( const legacy_comment_options_operation& op )const - { - return operation( comment_options_operation( op ) ); - } - - operation operator()( const legacy_limit_order_create2_operation& op )const - { - return operation( limit_order_create2_operation( op ) ); - } - - operation operator()( const legacy_escrow_transfer_operation& op )const - { - return operation( escrow_transfer_operation( op ) ); - } - - operation operator()( const legacy_escrow_release_operation& op )const - { - return operation( escrow_release_operation( op ) ); - } - - operation operator()( const legacy_transfer_to_savings_operation& op )const - { - return operation( transfer_to_savings_operation( op ) ); - } - - operation operator()( const legacy_transfer_from_savings_operation& op )const - { - return operation( transfer_from_savings_operation( op ) ); - } - - operation operator()( const legacy_claim_reward_balance_operation& op )const - { - return operation( claim_reward_balance_operation( op ) ); - } - - operation operator()( const legacy_delegate_vesting_shares_operation& op )const - { - return operation( delegate_vesting_shares_operation( op ) ); - } - - operation operator()( const legacy_account_create_with_delegation_operation& op )const - { - return operation( account_create_with_delegation_operation( op ) ); - } - - operation operator()( const legacy_fill_convert_request_operation& op )const - { - return operation( fill_convert_request_operation( op ) ); - } - - operation operator()( const legacy_author_reward_operation& op )const - { - return operation( author_reward_operation( op ) ); - } - - operation operator()( const legacy_curation_reward_operation& op )const - { - return operation( curation_reward_operation( op ) ); - } - - operation operator()( const legacy_comment_reward_operation& op )const - { - return operation( comment_reward_operation( op ) ); - } - - operation operator()( const legacy_liquidity_reward_operation& op )const - { - return operation( liquidity_reward_operation( op ) ); - } - - operation operator()( const legacy_interest_operation& op )const - { - return operation( interest_operation( op ) ); - } - - operation operator()( const legacy_fill_vesting_withdraw_operation& op )const - { - return operation( fill_vesting_withdraw_operation( op ) ); - } - - operation operator()( const legacy_fill_order_operation& op )const - { - return operation( fill_order_operation( op ) ); - } - - operation operator()( const legacy_fill_transfer_from_savings_operation& op )const - { - return operation( fill_transfer_from_savings_operation( op ) ); - } - - operation operator()( const legacy_return_vesting_delegation_operation& op )const - { - return operation( return_vesting_delegation_operation( op ) ); - } - - operation operator()( const legacy_comment_benefactor_reward_operation& op )const - { - return operation( comment_benefactor_reward_operation( op ) ); - } - - operation operator()( const legacy_producer_reward_operation& op )const - { - return operation( producer_reward_operation( op ) ); - } - - template< typename T > - operation operator()( const T& t )const - { - return operation( t ); - } -}; - -} } } // steem::plugins::condenser_api - -namespace fc { - -void to_variant( const steem::plugins::condenser_api::legacy_operation&, fc::variant& ); -void from_variant( const fc::variant&, steem::plugins::condenser_api::legacy_operation& ); - -} - -FC_REFLECT( steem::plugins::condenser_api::legacy_price, (base)(quote) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_transfer_to_savings_operation, (from)(to)(amount)(memo) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_transfer_from_savings_operation, (from)(request_id)(to)(amount)(memo) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_convert_operation, (owner)(requestid)(amount) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_feed_publish_operation, (publisher)(exchange_rate) ) - -FC_REFLECT( steem::plugins::condenser_api::legacy_account_create_operation, - (fee) - (creator) - (new_account_name) - (owner) - (active) - (posting) - (memo_key) - (json_metadata) ) - -FC_REFLECT( steem::plugins::condenser_api::legacy_account_create_with_delegation_operation, - (fee) - (delegation) - (creator) - (new_account_name) - (owner) - (active) - (posting) - (memo_key) - (json_metadata) - (extensions) ) - -FC_REFLECT( steem::plugins::condenser_api::legacy_transfer_operation, (from)(to)(amount)(memo) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_transfer_to_vesting_operation, (from)(to)(amount) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_withdraw_vesting_operation, (account)(vesting_shares) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_witness_update_operation, (owner)(url)(block_signing_key)(props)(fee) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_limit_order_create_operation, (owner)(orderid)(amount_to_sell)(min_to_receive)(fill_or_kill)(expiration) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_limit_order_create2_operation, (owner)(orderid)(amount_to_sell)(exchange_rate)(fill_or_kill)(expiration) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_comment_options_operation, (author)(permlink)(max_accepted_payout)(percent_steem_dollars)(allow_votes)(allow_curation_rewards)(extensions) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_escrow_transfer_operation, (from)(to)(sbd_amount)(steem_amount)(escrow_id)(agent)(fee)(json_meta)(ratification_deadline)(escrow_expiration) ); -FC_REFLECT( steem::plugins::condenser_api::legacy_escrow_release_operation, (from)(to)(agent)(who)(receiver)(escrow_id)(sbd_amount)(steem_amount) ); -FC_REFLECT( steem::plugins::condenser_api::legacy_claim_reward_balance_operation, (account)(reward_steem)(reward_sbd)(reward_vests) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_delegate_vesting_shares_operation, (delegator)(delegatee)(vesting_shares) ); -FC_REFLECT( steem::plugins::condenser_api::legacy_author_reward_operation, (author)(permlink)(sbd_payout)(steem_payout)(vesting_payout) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_curation_reward_operation, (curator)(reward)(comment_author)(comment_permlink) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_comment_reward_operation, (author)(permlink)(payout) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_fill_convert_request_operation, (owner)(requestid)(amount_in)(amount_out) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_liquidity_reward_operation, (owner)(payout) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_interest_operation, (owner)(interest) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_fill_vesting_withdraw_operation, (from_account)(to_account)(withdrawn)(deposited) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_fill_order_operation, (current_owner)(current_orderid)(current_pays)(open_owner)(open_orderid)(open_pays) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_fill_transfer_from_savings_operation, (from)(to)(amount)(request_id)(memo) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_return_vesting_delegation_operation, (account)(vesting_shares) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_comment_benefactor_reward_operation, (benefactor)(author)(permlink)(reward) ) -FC_REFLECT( steem::plugins::condenser_api::legacy_producer_reward_operation, (producer)(vesting_shares) ) - -FC_REFLECT_TYPENAME( steem::plugins::condenser_api::legacy_operation ) diff --git a/libraries/plugins/apis/custom_api/CMakeLists.txt b/libraries/plugins/apis/custom_api/CMakeLists.txt new file mode 100644 index 00000000..ad134f19 --- /dev/null +++ b/libraries/plugins/apis/custom_api/CMakeLists.txt @@ -0,0 +1,23 @@ +file(GLOB HEADERS "include/sophiatx/plugins/custom_api/*.hpp") +add_library( custom_api_plugin + custom_api_plugin.cpp + custom_api.cpp + ) + +target_link_libraries( custom_api_plugin json_rpc_plugin chain_plugin sophiatx_chain sophiatx_protocol ) +target_include_directories( custom_api_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) + +if( CLANG_TIDY_EXE ) + set_target_properties( + custom_api_plugin PROPERTIES + CXX_CLANG_TIDY "${DO_CLANG_TIDY}" + ) +endif( CLANG_TIDY_EXE ) + +install( TARGETS + custom_api_plugin + + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + ) diff --git a/libraries/plugins/apis/custom_api/custom_api.cpp b/libraries/plugins/apis/custom_api/custom_api.cpp new file mode 100644 index 00000000..c6a47a61 --- /dev/null +++ b/libraries/plugins/apis/custom_api/custom_api.cpp @@ -0,0 +1,105 @@ +#include +#include +#include + +namespace sophiatx { namespace plugins { namespace custom { + +namespace detail { + +class custom_api_impl +{ +public: + custom_api_impl() : _db( appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db() ) {} + + DECLARE_API_IMPL( + (get_received_documents) + ) + + chain::database& _db; +}; + +DEFINE_API_IMPL( custom_api_impl, get_received_documents ) +{ + FC_ASSERT( args.count <= 10000, "limit of ${l} is greater than maxmimum allowed", ("l",args.count) ); + if(args.search_type == "by_sender"){ + uint64_t start = std::stoull(args.start); + FC_ASSERT( start >= args.count, "start must be greater than limit" ); + const auto& idx = _db.get_index< chain::custom_content_index, chain::by_sender >(); + auto itr = idx.lower_bound( boost::make_tuple( args.account_name, args.app_id, start ) ); + auto end = idx.upper_bound( boost::make_tuple( args.account_name, args.app_id, std::max( int64_t(0), int64_t(itr->sender_sequence) - args.count ) ) ); + + get_received_documents_return result; result.history.clear(); + while( itr != end && result.history.size() < args.count ) + { + result.history[ itr->sender_sequence ] = *itr; + ++itr; + } + + return result; + }else if(args.search_type == "by_recipient"){ + uint64_t start = std::stoull(args.start); + FC_ASSERT( start >= args.count, "start must be greater than limit" ); + const auto& idx = _db.get_index< chain::custom_content_index, chain::by_recipient >(); + auto itr = idx.lower_bound( boost::make_tuple( args.account_name, args.app_id, start ) ); + auto end = idx.upper_bound( boost::make_tuple( args.account_name, args.app_id, std::max( int64_t(0), int64_t(itr->recipient_sequence) - args.count ) ) ); + + get_received_documents_return result; result.history.clear(); + while( itr != end && result.history.size() < args.count) + { + result.history[ itr->recipient_sequence ] = *itr; + ++itr; + } + + return result; + }else if(args.search_type == "by_sender_datetime"){ + fc::time_point_sec start = fc::time_point_sec::from_iso_string(args.start); + const auto& idx = _db.get_index< chain::custom_content_index, chain::by_sender_time >(); + auto itr = idx.lower_bound( boost::make_tuple( args.account_name, args.app_id, start ) ); + auto end = idx.upper_bound( boost::make_tuple( args.account_name, args.app_id, fc::time_point_sec::min() ) ); + + + get_received_documents_return result; result.history.clear(); + while( itr != end && result.history.size() < args.count) + { + result.history[ itr->sender_sequence ] = *itr; + ++itr; + } + + return result; + + }else if(args.search_type == "by_recipient_datetime"){ + fc::time_point_sec start = fc::time_point_sec::from_iso_string(args.start); + const auto& idx = _db.get_index< chain::custom_content_index, chain::by_recipient_time >(); + auto itr = idx.lower_bound( boost::make_tuple( args.account_name, args.app_id, start ) ); + auto end = idx.upper_bound( boost::make_tuple( args.account_name, args.app_id, fc::time_point_sec::min() ) ); + + get_received_documents_return result; result.history.clear(); + while( itr != end && result.history.size() < args.count) + { + result.history[ itr->recipient_sequence ] = *itr; + ++itr; + } + + return result; + + }else{ + FC_ASSERT(false, "Unknown search type argument"); + } + +} + + +} // detail + +custom_api::custom_api(): my( new detail::custom_api_impl() ) +{ + JSON_RPC_REGISTER_API( SOPHIATX_CUSTOM_API_PLUGIN_NAME ); +} + +custom_api::~custom_api() {} + +DEFINE_READ_APIS( custom_api, + (get_received_documents) +) + +} } } // sophiatx::plugins::custom diff --git a/libraries/plugins/apis/custom_api/custom_api_plugin.cpp b/libraries/plugins/apis/custom_api/custom_api_plugin.cpp new file mode 100644 index 00000000..d0919b13 --- /dev/null +++ b/libraries/plugins/apis/custom_api/custom_api_plugin.cpp @@ -0,0 +1,20 @@ +#include +#include + + +namespace sophiatx { namespace plugins { namespace custom { + +custom_api_plugin::custom_api_plugin() {} +custom_api_plugin::~custom_api_plugin() {} + +void custom_api_plugin::set_program_options( options_description& cli, options_description& cfg ) {} + +void custom_api_plugin::plugin_initialize( const variables_map& options ) +{ + api = std::make_shared< custom_api >(); +} + +void custom_api_plugin::plugin_startup() {} +void custom_api_plugin::plugin_shutdown() {} + +} } } // namespace diff --git a/libraries/plugins/apis/custom_api/include/sophiatx/plugins/custom_api/custom_api.hpp b/libraries/plugins/apis/custom_api/include/sophiatx/plugins/custom_api/custom_api.hpp new file mode 100644 index 00000000..b20a711e --- /dev/null +++ b/libraries/plugins/apis/custom_api/include/sophiatx/plugins/custom_api/custom_api.hpp @@ -0,0 +1,89 @@ +#pragma once +#include + +#include + +#include + +#include +#include +#include +#include + +namespace sophiatx { namespace plugins { namespace custom { + + +namespace detail { class custom_api_impl; } + + +struct received_object +{ + received_object() {}; + received_object( const sophiatx::chain::custom_content_object& obj ) : + sender( obj.sender ), + app_id( obj.app_id ), + binary( obj.binary ), + received( obj.received) + { + if(binary) + data = fc::to_base58(obj.data); + else + data = obj.json; + for(const auto&r: obj.all_recipients) + recipients.push_back(r); + } + + string sender; + vector recipients; + uint64_t app_id; + string data; + bool binary; + time_point_sec received; + +}; + + +struct get_received_documents_args +{ + uint32_t app_id; + string account_name; + string search_type; //"by_sender", "by_recipient", "by_sender_datetime", "by_recipient_datetime" + string start; + uint32_t count; +}; + +typedef get_received_documents_args get_received_documents_json_args; +typedef get_received_documents_args get_received_documents_data_args; + + +struct get_received_documents_return +{ + std::map< uint64_t, received_object > history; +}; + + +class custom_api +{ +public: + custom_api(); + ~custom_api(); + + DECLARE_API( + (get_received_documents) + ) + +private: + std::unique_ptr< detail::custom_api_impl > my; +}; + +} } } // sophiatx::plugins::custom + + +FC_REFLECT( sophiatx::plugins::custom::received_object, + (sender)(recipients)(app_id)(data)(received)(binary) ) + +FC_REFLECT( sophiatx::plugins::custom::get_received_documents_args, + (app_id)(account_name)(search_type)(start)(count) ) + +FC_REFLECT( sophiatx::plugins::custom::get_received_documents_return, + (history) ) diff --git a/libraries/plugins/apis/custom_api/include/sophiatx/plugins/custom_api/custom_api_plugin.hpp b/libraries/plugins/apis/custom_api/include/sophiatx/plugins/custom_api/custom_api_plugin.hpp new file mode 100644 index 00000000..bace097b --- /dev/null +++ b/libraries/plugins/apis/custom_api/include/sophiatx/plugins/custom_api/custom_api_plugin.hpp @@ -0,0 +1,35 @@ +#pragma once +#include + +#include + +#define SOPHIATX_CUSTOM_API_PLUGIN_NAME "custom_api" + + +namespace sophiatx { namespace plugins { namespace custom { + +using namespace appbase; + +class custom_api_plugin : public plugin< custom_api_plugin > +{ +public: + APPBASE_PLUGIN_REQUIRES( + //(sophiatx::plugins::custom::custom_plugin) + (sophiatx::plugins::json_rpc::json_rpc_plugin) + ) + + custom_api_plugin(); + virtual ~custom_api_plugin(); + + static const std::string& name() { static std::string name = SOPHIATX_CUSTOM_API_PLUGIN_NAME; return name; } + + virtual void set_program_options( options_description& cli, options_description& cfg ) override; + + virtual void plugin_initialize( const variables_map& options ) override; + virtual void plugin_startup() override; + virtual void plugin_shutdown() override; + + std::shared_ptr< class custom_api > api; +}; + +} } } // sophiatx::plugins::custom diff --git a/libraries/plugins/apis/custom_api/plugin.json b/libraries/plugins/apis/custom_api/plugin.json new file mode 100644 index 00000000..3ca7807e --- /dev/null +++ b/libraries/plugins/apis/custom_api/plugin.json @@ -0,0 +1,5 @@ +{ + "plugin_name": "custom_api", + "plugin_namespace": "custom", + "plugin_project": "custom_api_plugin" +} diff --git a/libraries/plugins/apis/database_api/CMakeLists.txt b/libraries/plugins/apis/database_api/CMakeLists.txt index b5eef31d..125a2752 100644 --- a/libraries/plugins/apis/database_api/CMakeLists.txt +++ b/libraries/plugins/apis/database_api/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB HEADERS "include/steem/plugins/database_api/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/database_api/*.hpp") add_library( database_api_plugin database_api.cpp diff --git a/libraries/plugins/apis/database_api/database_api.cpp b/libraries/plugins/apis/database_api/database_api.cpp index e781c12b..fe02d755 100644 --- a/libraries/plugins/apis/database_api/database_api.cpp +++ b/libraries/plugins/apis/database_api/database_api.cpp @@ -1,13 +1,13 @@ #include -#include -#include +#include +#include -#include -#include -#include +#include +#include +#include -namespace steem { namespace plugins { namespace database_api { +namespace sophiatx { namespace plugins { namespace database_api { class database_api_impl { @@ -21,7 +21,6 @@ class database_api_impl (get_dynamic_global_properties) (get_witness_schedule) (get_hardfork_properties) - (get_reward_funds) (get_current_price_feed) (get_feed_history) (list_witnesses) @@ -38,34 +37,16 @@ class database_api_impl (find_change_recovery_account_requests) (list_escrows) (find_escrows) - (list_withdraw_vesting_routes) - (find_withdraw_vesting_routes) - (list_savings_withdrawals) - (find_savings_withdrawals) - (list_vesting_delegations) - (find_vesting_delegations) - (list_vesting_delegation_expirations) - (find_vesting_delegation_expirations) - (list_sbd_conversion_requests) - (find_sbd_conversion_requests) - (list_decline_voting_rights_requests) - (find_decline_voting_rights_requests) - (list_comments) - (find_comments) - (list_votes) - (find_votes) - (list_limit_orders) - (find_limit_orders) - (get_order_book) (get_transaction_hex) (get_required_signatures) (get_potential_signatures) (verify_authority) (verify_account_authority) (verify_signatures) -#ifdef STEEM_ENABLE_SMT - (get_smt_next_identifier) -#endif + (list_applications) + (get_application_buyings) + (get_promotion_pool_balance) + (get_burned_balance) ) template< typename ResultType > @@ -97,13 +78,13 @@ class database_api_impl database_api::database_api() : my( new database_api_impl() ) { - JSON_RPC_REGISTER_API( STEEM_DATABASE_API_PLUGIN_NAME ); + JSON_RPC_REGISTER_API( SOPHIATX_DATABASE_API_PLUGIN_NAME ); } database_api::~database_api() {} database_api_impl::database_api_impl() - : _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ) {} + : _db( appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db() ) {} database_api_impl::~database_api_impl() {} @@ -116,7 +97,7 @@ database_api_impl::~database_api_impl() {} DEFINE_API_IMPL( database_api_impl, get_config ) { - return steem::protocol::get_config(); + return sophiatx::protocol::get_config(); } DEFINE_API_IMPL( database_api_impl, get_dynamic_global_properties ) @@ -134,30 +115,14 @@ DEFINE_API_IMPL( database_api_impl, get_hardfork_properties ) return _db.get_hardfork_property_object(); } -DEFINE_API_IMPL( database_api_impl, get_reward_funds ) -{ - get_reward_funds_return result; - - const auto& rf_idx = _db.get_index< reward_fund_index, by_id >(); - auto itr = rf_idx.begin(); - - while( itr != rf_idx.end() ) - { - result.funds.push_back( *itr ); - ++itr; - } - - return result; -} - DEFINE_API_IMPL( database_api_impl, get_current_price_feed ) { - return _db.get_feed_history().current_median_history;; + return _db.get_feed_history( args.symbol ).current_median_history;; } DEFINE_API_IMPL( database_api_impl, get_feed_history ) { - return _db.get_feed_history(); + return _db.get_feed_history( args.symbol ); } @@ -546,743 +511,37 @@ DEFINE_API_IMPL( database_api_impl, find_escrows ) return result; } - -/* Withdraw Vesting Routes */ - -DEFINE_API_IMPL( database_api_impl, list_withdraw_vesting_routes ) -{ - FC_ASSERT( args.limit <= DATABASE_API_SINGLE_QUERY_LIMIT ); - - list_withdraw_vesting_routes_return result; - result.routes.reserve( args.limit ); - - switch( args.order ) - { - case( by_withdraw_route ): - { - auto key = args.start.as< std::pair< account_name_type, account_name_type > >(); - iterate_results< chain::withdraw_vesting_route_index, chain::by_withdraw_route >( - boost::make_tuple( key.first, key.second ), - result.routes, - args.limit, - &database_api_impl::on_push_default< withdraw_vesting_route_object > ); - break; - } - case( by_destination ): - { - auto key = args.start.as< std::pair< account_name_type, withdraw_vesting_route_id_type > >(); - iterate_results< chain::withdraw_vesting_route_index, chain::by_destination >( - boost::make_tuple( key.first, key.second ), - result.routes, - args.limit, - &database_api_impl::on_push_default< withdraw_vesting_route_object > ); - break; - } - default: - FC_ASSERT( false, "Unknown or unsupported sort order" ); - } - - return result; -} - -DEFINE_API_IMPL( database_api_impl, find_withdraw_vesting_routes ) -{ - find_withdraw_vesting_routes_return result; - - switch( args.order ) - { - case( by_withdraw_route ): - { - const auto& route_idx = _db.get_index< chain::withdraw_vesting_route_index, chain::by_withdraw_route >(); - auto itr = route_idx.lower_bound( args.account ); - - while( itr != route_idx.end() && itr->from_account == args.account && result.routes.size() <= DATABASE_API_SINGLE_QUERY_LIMIT ) - { - result.routes.push_back( *itr ); - ++itr; - } - - break; - } - case( by_destination ): - { - const auto& route_idx = _db.get_index< chain::withdraw_vesting_route_index, chain::by_destination >(); - auto itr = route_idx.lower_bound( args.account ); - - while( itr != route_idx.end() && itr->to_account == args.account && result.routes.size() <= DATABASE_API_SINGLE_QUERY_LIMIT ) - { - result.routes.push_back( *itr ); - ++itr; - } - - break; - } - default: - FC_ASSERT( false, "Unknown or unsupported sort order" ); - } - - return result; -} - - -/* Savings Withdrawals */ - -DEFINE_API_IMPL( database_api_impl, list_savings_withdrawals ) -{ - FC_ASSERT( args.limit <= DATABASE_API_SINGLE_QUERY_LIMIT ); - - list_savings_withdrawals_return result; - result.withdrawals.reserve( args.limit ); - - switch( args.order ) - { - case( by_from_id ): - { - auto key = args.start.as< std::pair< account_name_type, uint32_t > >(); - iterate_results< chain::savings_withdraw_index, chain::by_from_rid >( - boost::make_tuple( key.first, key.second ), - result.withdrawals, - args.limit, - [&]( const savings_withdraw_object& w ){ return api_savings_withdraw_object( w ); } ); - break; - } - case( by_complete_from_id ): - { - auto key = args.start.as< std::vector< fc::variant > >(); - FC_ASSERT( key.size() == 3, "by_complete_from_id start requires 3 values. (time_point_sec, account_name_type, uint32_t)" ); - iterate_results< chain::savings_withdraw_index, chain::by_complete_from_rid >( - boost::make_tuple( key[0].as< fc::time_point_sec >(), key[1].as< account_name_type >(), key[2].as< uint32_t >() ), - result.withdrawals, - args.limit, - [&]( const savings_withdraw_object& w ){ return api_savings_withdraw_object( w ); } ); - break; - } - case( by_to_complete ): - { - auto key = args.start.as< std::vector< fc::variant > >(); - FC_ASSERT( key.size() == 3, "by_to_complete start requires 3 values. (account_name_type, time_point_sec, savings_withdraw_id_type" ); - iterate_results< chain::savings_withdraw_index, chain::by_to_complete >( - boost::make_tuple( key[0].as< account_name_type >(), key[1].as< fc::time_point_sec >(), key[2].as< savings_withdraw_id_type >() ), - result.withdrawals, - args.limit, - [&]( const savings_withdraw_object& w ){ return api_savings_withdraw_object( w ); } ); - break; - } - default: - FC_ASSERT( false, "Unknown or unsupported sort order" ); - } - - return result; -} - -DEFINE_API_IMPL( database_api_impl, find_savings_withdrawals ) -{ - find_savings_withdrawals_return result; - const auto& withdraw_idx = _db.get_index< chain::savings_withdraw_index, chain::by_from_rid >(); - auto itr = withdraw_idx.lower_bound( args.account ); - - while( itr != withdraw_idx.end() && itr->from == args.account && result.withdrawals.size() <= DATABASE_API_SINGLE_QUERY_LIMIT ) - { - result.withdrawals.push_back( api_savings_withdraw_object( *itr ) ); - ++itr; - } - - return result; -} - - -/* Vesting Delegations */ - -DEFINE_API_IMPL( database_api_impl, list_vesting_delegations ) -{ - FC_ASSERT( args.limit <= DATABASE_API_SINGLE_QUERY_LIMIT ); - - list_vesting_delegations_return result; - result.delegations.reserve( args.limit ); - - switch( args.order ) - { - case( by_delegation ): - { - auto key = args.start.as< std::pair< account_name_type, account_name_type > >(); - iterate_results< chain::vesting_delegation_index, chain::by_delegation >( - boost::make_tuple( key.first, key.second ), - result.delegations, - args.limit, - &database_api_impl::on_push_default< api_vesting_delegation_object > ); - break; - } - default: - FC_ASSERT( false, "Unknown or unsupported sort order" ); - } - - return result; -} - -DEFINE_API_IMPL( database_api_impl, find_vesting_delegations ) -{ - find_vesting_delegations_return result; - const auto& delegation_idx = _db.get_index< chain::vesting_delegation_index, chain::by_delegation >(); - auto itr = delegation_idx.lower_bound( args.account ); - - while( itr != delegation_idx.end() && itr->delegator == args.account && result.delegations.size() <= DATABASE_API_SINGLE_QUERY_LIMIT ) - { - result.delegations.push_back( api_vesting_delegation_object( *itr ) ); - ++itr; - } - - return result; -} - - -/* Vesting Delegation Expirations */ - -DEFINE_API_IMPL( database_api_impl, list_vesting_delegation_expirations ) -{ - FC_ASSERT( args.limit <= DATABASE_API_SINGLE_QUERY_LIMIT ); - - list_vesting_delegation_expirations_return result; - result.delegations.reserve( args.limit ); - - switch( args.order ) - { - case( by_expiration ): - { - auto key = args.start.as< std::pair< time_point_sec, vesting_delegation_expiration_id_type > >(); - iterate_results< chain::vesting_delegation_expiration_index, chain::by_expiration >( - boost::make_tuple( key.first, key.second ), - result.delegations, - args.limit, - &database_api_impl::on_push_default< api_vesting_delegation_expiration_object > ); - break; - } - case( by_account_expiration ): - { - auto key = args.start.as< std::vector< fc::variant > >(); - FC_ASSERT( key.size() == 3, "by_account_expiration start requires 3 values. (account_name_type, time_point_sec, vesting_delegation_expiration_id_type" ); - iterate_results< chain::vesting_delegation_expiration_index, chain::by_account_expiration >( - boost::make_tuple( key[0].as< account_name_type >(), key[1].as< time_point_sec >(), key[2].as< vesting_delegation_expiration_id_type >() ), - result.delegations, - args.limit, - &database_api_impl::on_push_default< api_vesting_delegation_expiration_object > ); - break; - } - default: - FC_ASSERT( false, "Unknown or unsupported sort order" ); - } - - return result; -} - -DEFINE_API_IMPL( database_api_impl, find_vesting_delegation_expirations ) -{ - find_vesting_delegation_expirations_return result; - const auto& del_exp_idx = _db.get_index< chain::vesting_delegation_expiration_index, chain::by_account_expiration >(); - auto itr = del_exp_idx.lower_bound( args.account ); - - while( itr != del_exp_idx.end() && itr->delegator == args.account && result.delegations.size() <= DATABASE_API_SINGLE_QUERY_LIMIT ) - { - result.delegations.push_back( *itr ); - ++itr; - } - - return result; -} - - -/* SBD Conversion Requests */ - -DEFINE_API_IMPL( database_api_impl, list_sbd_conversion_requests ) -{ - FC_ASSERT( args.limit <= DATABASE_API_SINGLE_QUERY_LIMIT ); - - list_sbd_conversion_requests_return result; - result.requests.reserve( args.limit ); - - switch( args.order ) - { - case( by_conversion_date ): - { - auto key = args.start.as< std::pair< time_point_sec, convert_request_id_type > >(); - iterate_results< chain::convert_request_index, chain::by_conversion_date >( - boost::make_tuple( key.first, key.second ), - result.requests, - args.limit, - &database_api_impl::on_push_default< api_convert_request_object > ); - break; - } - case( by_account ): - { - auto key = args.start.as< std::pair< account_name_type, uint32_t > >(); - iterate_results< chain::convert_request_index, chain::by_owner >( - boost::make_tuple( key.first, key.second ), - result.requests, - args.limit, - &database_api_impl::on_push_default< api_convert_request_object > ); - break; - } - default: - FC_ASSERT( false, "Unknown or unsupported sort order" ); - } - - return result; -} - -DEFINE_API_IMPL( database_api_impl, find_sbd_conversion_requests ) -{ - find_sbd_conversion_requests_return result; - const auto& convert_idx = _db.get_index< chain::convert_request_index, chain::by_owner >(); - auto itr = convert_idx.lower_bound( args.account ); - - while( itr != convert_idx.end() && itr->owner == args.account && result.requests.size() <= DATABASE_API_SINGLE_QUERY_LIMIT ) - { - result.requests.push_back( *itr ); - ++itr; - } - - return result; -} - - -/* Decline Voting Rights Requests */ - -DEFINE_API_IMPL( database_api_impl, list_decline_voting_rights_requests ) -{ - FC_ASSERT( args.limit <= DATABASE_API_SINGLE_QUERY_LIMIT ); - - list_decline_voting_rights_requests_return result; - result.requests.reserve( args.limit ); - - switch( args.order ) - { - case( by_account ): - { - iterate_results< chain::decline_voting_rights_request_index, chain::by_account >( - args.start.as< account_name_type >(), - result.requests, - args.limit, - &database_api_impl::on_push_default< api_decline_voting_rights_request_object > ); - break; - } - case( by_effective_date ): - { - auto key = args.start.as< std::pair< time_point_sec, account_name_type > >(); - iterate_results< chain::decline_voting_rights_request_index, chain::by_effective_date >( - boost::make_tuple( key.first, key.second ), - result.requests, - args.limit, - &database_api_impl::on_push_default< api_decline_voting_rights_request_object > ); - break; - } - default: - FC_ASSERT( false, "Unknown or unsupported sort order" ); - } - - return result; -} - -DEFINE_API_IMPL( database_api_impl, find_decline_voting_rights_requests ) -{ - FC_ASSERT( args.accounts.size() <= DATABASE_API_SINGLE_QUERY_LIMIT ); - find_decline_voting_rights_requests_return result; - - for( auto& a : args.accounts ) - { - auto request = _db.find< chain::decline_voting_rights_request_object, chain::by_account >( a ); - - if( request != nullptr ) - result.requests.push_back( *request ); - } - - return result; -} - - ////////////////////////////////////////////////////////////////////// // // -// Comments // +// Applications // // // ////////////////////////////////////////////////////////////////////// -/* Comments */ - -DEFINE_API_IMPL( database_api_impl, list_comments ) +DEFINE_API_IMPL( database_api_impl, list_applications ) { FC_ASSERT( args.limit <= DATABASE_API_SINGLE_QUERY_LIMIT ); - list_comments_return result; - result.comments.reserve( args.limit ); + list_applications_return result; + result.applications.reserve( args.limit ); switch( args.order ) { - case( by_cashout_time ): - { - auto key = args.start.as< vector< fc::variant > >(); - FC_ASSERT( key.size() == 3, "by_cashout_time start requires 3 values. (time_point_sec, account_name_type, string)" ); - - auto author = key[1].as< account_name_type >(); - auto permlink = key[2].as< string >(); - comment_id_type comment_id; - - if( author != account_name_type() || permlink.size() ) - { - auto comment = _db.find< chain::comment_object, chain::by_permlink >( boost::make_tuple( author, permlink ) ); - FC_ASSERT( comment != nullptr, "Could not find comment ${a}/${p}.", ("a", author)("p", permlink) ); - comment_id = comment->id; - } - - iterate_results< chain::comment_index, chain::by_cashout_time >( - boost::make_tuple( key[0].as< fc::time_point_sec >(), comment_id ), - result.comments, - args.limit, - [&]( const comment_object& c ){ return api_comment_object( c, _db ); } ); - break; - } - case( by_permlink ): - { - auto key = args.start.as< std::pair< account_name_type, string > >(); - iterate_results< chain::comment_index, chain::by_permlink >( - boost::make_tuple( key.first, key.second ), - result.comments, - args.limit, - [&]( const comment_object& c ){ return api_comment_object( c, _db ); } ); - break; - } - case( by_root ): - { - auto key = args.start.as< vector< fc::variant > >(); - FC_ASSERT( key.size() == 4, "by_root start requires 4 values. (account_name_type, string, account_name_type, string)" ); - - auto root_author = key[0].as< account_name_type >(); - auto root_permlink = key[1].as< string >(); - comment_id_type root_id; - - if( root_author != account_name_type() || root_permlink.size() ) - { - auto root = _db.find< chain::comment_object, chain::by_permlink >( boost::make_tuple( root_author, root_permlink ) ); - FC_ASSERT( root != nullptr, "Could not find comment ${a}/${p}.", ("a", root_author)("p", root_permlink) ); - root_id = root->id; - } - - auto child_author = key[2].as< account_name_type >(); - auto child_permlink = key[3].as< string >(); - comment_id_type child_id; - - if( child_author != account_name_type() || child_permlink.size() ) - { - auto child = _db.find< chain::comment_object, chain::by_permlink >( boost::make_tuple( child_author, child_permlink ) ); - FC_ASSERT( child != nullptr, "Could not find comment ${a}/${p}.", ("a", child_author)("p", child_permlink) ); - child_id = child->id; - } - - iterate_results< chain::comment_index, chain::by_root >( - boost::make_tuple( root_id, child_id ), - result.comments, - args.limit, - [&]( const comment_object& c ){ return api_comment_object( c, _db ); } ); - break; - } - case( by_parent ): - { - auto key = args.start.as< vector< fc::variant > >(); - FC_ASSERT( key.size() == 4, "by_parent start requires 4 values. (account_name_type, string, account_name_type, string)" ); - - auto child_author = key[2].as< account_name_type >(); - auto child_permlink = key[3].as< string >(); - comment_id_type child_id; - - if( child_author != account_name_type() || child_permlink.size() ) - { - auto child = _db.find< chain::comment_object, chain::by_permlink >( boost::make_tuple( child_author, child_permlink ) ); - FC_ASSERT( child != nullptr, "Could not find comment ${a}/${p}.", ("a", child_author)("p", child_permlink) ); - child_id = child->id; - } - - iterate_results< chain::comment_index, chain::by_parent >( - boost::make_tuple( key[0].as< account_name_type >(), key[1].as< string >(), child_id ), - result.comments, - args.limit, - [&]( const comment_object& c ){ return api_comment_object( c, _db ); } ); - break; - } -#ifndef IS_LOW_MEM - case( by_last_update ): - { - auto key = args.start.as< vector< fc::variant > >(); - FC_ASSERT( key.size() == 4, "by_last_update start requires 4 values. (account_name_type, time_point_sec, account_name_type, string)" ); - - auto child_author = key[2].as< account_name_type >(); - auto child_permlink = key[3].as< string >(); - comment_id_type child_id; - - if( child_author != account_name_type() || child_permlink.size() ) - { - auto child = _db.find< chain::comment_object, chain::by_permlink >( boost::make_tuple( child_author, child_permlink ) ); - FC_ASSERT( child != nullptr, "Could not find comment ${a}/${p}.", ("a", child_author)("p", child_permlink) ); - child_id = child->id; - } - - iterate_results< chain::comment_index, chain::by_last_update >( - boost::make_tuple( key[0].as< account_name_type >(), key[1].as< fc::time_point_sec >(), child_id ), - result.comments, - args.limit, - [&]( const comment_object& c ){ return api_comment_object( c, _db ); } ); - break; - } - case( by_author_last_update ): - { - auto key = args.start.as< vector< fc::variant > >(); - FC_ASSERT( key.size() == 4, "by_author_last_update start requires 4 values. (account_name_type, time_point_sec, account_name_type, string)" ); - - auto author = key[2].as< account_name_type >(); - auto permlink = key[3].as< string >(); - comment_id_type comment_id; - - if( author != account_name_type() || permlink.size() ) - { - auto comment = _db.find< chain::comment_object, chain::by_permlink >( boost::make_tuple( author, permlink ) ); - FC_ASSERT( comment != nullptr, "Could not find comment ${a}/${p}.", ("a", author)("p", permlink) ); - comment_id = comment->id; - } - - iterate_results< chain::comment_index, chain::by_last_update >( - boost::make_tuple( key[0].as< account_name_type >(), key[1].as< fc::time_point_sec >(), comment_id ), - result.comments, - args.limit, - [&]( const comment_object& c ){ return api_comment_object( c, _db ); } ); - break; - } -#endif - default: - FC_ASSERT( false, "Unknown or unsupported sort order" ); - } - - return result; -} - -DEFINE_API_IMPL( database_api_impl, find_comments ) -{ - FC_ASSERT( args.comments.size() <= DATABASE_API_SINGLE_QUERY_LIMIT ); - find_comments_return result; - result.comments.reserve( args.comments.size() ); - - for( auto& key: args.comments ) - { - auto comment = _db.find< chain::comment_object, chain::by_permlink >( boost::make_tuple( key.first, key.second ) ); - - if( comment != nullptr ) - result.comments.push_back( api_comment_object( *comment, _db ) ); - } - - return result; -} - - -/* Votes */ - -DEFINE_API_IMPL( database_api_impl, list_votes ) -{ - FC_ASSERT( args.limit <= DATABASE_API_SINGLE_QUERY_LIMIT ); - - list_votes_return result; - result.votes.reserve( args.limit ); - - switch( args.order ) - { - case( by_comment_voter ): - { - auto key = args.start.as< vector< fc::variant > >(); - FC_ASSERT( key.size() == 3, "by_comment_voter start requires 3 values. (account_name_type, string, account_name_type)" ); - - auto author = key[0].as< account_name_type >(); - auto permlink = key[1].as< string >(); - comment_id_type comment_id; - - if( author != account_name_type() || permlink.size() ) - { - auto comment = _db.find< chain::comment_object, chain::by_permlink >( boost::make_tuple( author, permlink ) ); - FC_ASSERT( comment != nullptr, "Could not find comment ${a}/${p}.", ("a", author)("p", permlink) ); - comment_id = comment->id; - } - - auto voter = key[2].as< account_name_type >(); - account_id_type voter_id; - - if( voter != account_name_type() ) - { - auto account = _db.find< chain::account_object, chain::by_name >( voter ); - FC_ASSERT( account != nullptr, "Could not find voter ${v}.", ("v", voter ) ); - voter_id = account->id; - } - - iterate_results< chain::comment_vote_index, chain::by_comment_voter >( - boost::make_tuple( comment_id, voter_id ), - result.votes, - args.limit, - [&]( const comment_vote_object& cv ){ return api_comment_vote_object( cv, _db ); } ); - break; - } - case( by_voter_comment ): - { - auto key = args.start.as< vector< fc::variant > >(); - FC_ASSERT( key.size() == 3, "by_comment_voter start requires 3 values. (account_name_type, account_name_type, string)" ); - - auto voter = key[0].as< account_name_type >(); - account_id_type voter_id; - - if( voter != account_name_type() ) - { - auto account = _db.find< chain::account_object, chain::by_name >( voter ); - FC_ASSERT( account != nullptr, "Could not find voter ${v}.", ("v", voter ) ); - voter_id = account->id; - } - - auto author = key[1].as< account_name_type >(); - auto permlink = key[2].as< string >(); - comment_id_type comment_id; - - if( author != account_name_type() || permlink.size() ) - { - auto comment = _db.find< chain::comment_object, chain::by_permlink >( boost::make_tuple( author, permlink ) ); - FC_ASSERT( comment != nullptr, "Could not find comment ${a}/${p}.", ("a", author)("p", permlink) ); - comment_id = comment->id; - } - - iterate_results< chain::comment_vote_index, chain::by_voter_comment >( - boost::make_tuple( voter_id, comment_id ), - result.votes, - args.limit, - [&]( const comment_vote_object& cv ){ return api_comment_vote_object( cv, _db ); } ); - break; - } - case( by_voter_last_update ): - { - auto key = args.start.as< vector< fc::variant > >(); - FC_ASSERT( key.size() == 4, "by_comment_voter start requires 4 values. (account_name_type, time_point_sec, account_name_type, string)" ); - - auto voter = key[0].as< account_name_type >(); - account_id_type voter_id; - - if( voter != account_name_type() ) - { - auto account = _db.find< chain::account_object, chain::by_name >( voter ); - FC_ASSERT( account != nullptr, "Could not find voter ${v}.", ("v", voter ) ); - voter_id = account->id; - } - - auto author = key[2].as< account_name_type >(); - auto permlink = key[3].as< string >(); - comment_id_type comment_id; - - if( author != account_name_type() || permlink.size() ) - { - auto comment = _db.find< chain::comment_object, chain::by_permlink >( boost::make_tuple( author, permlink ) ); - FC_ASSERT( comment != nullptr, "Could not find comment ${a}/${p}.", ("a", author)("p", permlink) ); - comment_id = comment->id; - } - - iterate_results< chain::comment_vote_index, chain::by_voter_last_update >( - boost::make_tuple( voter_id, key[1].as< fc::time_point_sec >(), comment_id ), - result.votes, - args.limit, - [&]( const comment_vote_object& cv ){ return api_comment_vote_object( cv, _db ); } ); - break; - } - case( by_comment_weight_voter ): - { - auto key = args.start.as< vector< fc::variant > >(); - FC_ASSERT( key.size() == 4, "by_comment_voter start requires 4 values. (account_name_type, string, uint64_t, account_name_type)" ); - - auto author = key[0].as< account_name_type >(); - auto permlink = key[1].as< string >(); - comment_id_type comment_id; - - if( author != account_name_type() || permlink.size() ) - { - auto comment = _db.find< chain::comment_object, chain::by_permlink >( boost::make_tuple( author, permlink ) ); - FC_ASSERT( comment != nullptr, "Could not find comment ${a}/${p}.", ("a", author)("p", permlink) ); - comment_id = comment->id; - } - - auto voter = key[3].as< account_name_type >(); - account_id_type voter_id; - - if( voter != account_name_type() ) - { - auto account = _db.find< chain::account_object, chain::by_name >( voter ); - FC_ASSERT( account != nullptr, "Could not find voter ${v}.", ("v", voter ) ); - voter_id = account->id; - } - - iterate_results< chain::comment_vote_index, chain::by_comment_weight_voter >( - boost::make_tuple( comment_id, key[2].as< uint64_t >(), voter_id ), - result.votes, - args.limit, - [&]( const comment_vote_object& cv ){ return api_comment_vote_object( cv, _db ); } ); - break; - } - default: - FC_ASSERT( false, "Unknown or unsupported sort order" ); - } - - return result; -} - -DEFINE_API_IMPL( database_api_impl, find_votes ) -{ - find_votes_return result; - - auto comment = _db.find< chain::comment_object, chain::by_permlink >( boost::make_tuple( args.author, args.permlink ) ); - FC_ASSERT( comment != nullptr, "Could not find comment ${a}/${p}", ("a", args.author)("p", args.permlink ) ); - - const auto& vote_idx = _db.get_index< chain::comment_vote_index, chain::by_comment_voter >(); - auto itr = vote_idx.lower_bound( comment->id ); - - while( itr != vote_idx.end() && itr->comment == comment->id && result.votes.size() <= DATABASE_API_SINGLE_QUERY_LIMIT ) - { - result.votes.push_back( api_comment_vote_object( *itr, _db ) ); - ++itr; - } - - return result; -} - - -////////////////////////////////////////////////////////////////////// -// // -// Market // -// // -////////////////////////////////////////////////////////////////////// - -/* Limit Orders */ - -DEFINE_API_IMPL( database_api_impl, list_limit_orders ) -{ - FC_ASSERT( args.limit <= DATABASE_API_SINGLE_QUERY_LIMIT ); - - list_limit_orders_return result; - result.orders.reserve( args.limit ); - - switch( args.order ) - { - case( by_price ): + case( by_name ): { - auto key = args.start.as< std::pair< price, limit_order_id_type > >(); - iterate_results< chain::limit_order_index, chain::by_price >( - boost::make_tuple( key.first, key.second ), - result.orders, - args.limit, - &database_api_impl::on_push_default< api_limit_order_object > ); + iterate_results< chain::application_index, chain::by_name >( + args.start.as(), + result.applications, + args.limit, + [&]( const application_object& a ){ return api_application_object( a ); } ); break; } - case( by_account ): + case( by_author ): { - auto key = args.start.as< std::pair< account_name_type, uint32_t > >(); - iterate_results< chain::limit_order_index, chain::by_account >( - boost::make_tuple( key.first, key.second ), - result.orders, - args.limit, - &database_api_impl::on_push_default< api_limit_order_object > ); + iterate_results< chain::application_index, chain::by_author >( + args.start.as< protocol::account_name_type >(), + result.applications, + args.limit, + [&]( const application_object& a ){ return api_application_object( a ); } ); break; } default: @@ -1292,68 +551,31 @@ DEFINE_API_IMPL( database_api_impl, list_limit_orders ) return result; } -DEFINE_API_IMPL( database_api_impl, find_limit_orders ) -{ - find_limit_orders_return result; - const auto& order_idx = _db.get_index< chain::limit_order_index, chain::by_account >(); - auto itr = order_idx.lower_bound( args.account ); - - while( itr != order_idx.end() && itr->seller == args.account && result.orders.size() <= DATABASE_API_SINGLE_QUERY_LIMIT ) - { - result.orders.push_back( *itr ); - ++itr; - } - - return result; -} - - -/* Order Book */ - -DEFINE_API_IMPL( database_api_impl, get_order_book ) +DEFINE_API_IMPL( database_api_impl, get_application_buyings ) { FC_ASSERT( args.limit <= DATABASE_API_SINGLE_QUERY_LIMIT ); - get_order_book_return result; - - auto max_sell = price::max( SBD_SYMBOL, STEEM_SYMBOL ); - auto max_buy = price::max( STEEM_SYMBOL, SBD_SYMBOL ); - const auto& limit_price_idx = _db.get_index< chain::limit_order_index >().indices().get< chain::by_price >(); - auto sell_itr = limit_price_idx.lower_bound( max_sell ); - auto buy_itr = limit_price_idx.lower_bound( max_buy ); - auto end = limit_price_idx.end(); + get_application_buyings_return result; + result.application_buyings.reserve( args.limit ); - while( sell_itr != end && sell_itr->sell_price.base.symbol == SBD_SYMBOL && result.bids.size() < args.limit ) - { - auto itr = sell_itr; - order cur; - cur.order_price = itr->sell_price; - cur.real_price = 0.0; - // cur.real_price = (cur.order_price).to_real(); - cur.sbd = itr->for_sale; - cur.steem = ( asset( itr->for_sale, SBD_SYMBOL ) * cur.order_price ).amount; - cur.created = itr->created; - result.bids.push_back( cur ); - ++sell_itr; + if(args.search_type == "by_buyer") { + iterate_results< chain::application_buying_index, chain::by_author >( + args.start.as(), + result.application_buyings, + args.limit, + [&]( const application_buying_object& a ){ return api_application_buying_object( a ); } ); + } else if(args.search_type == "by_app_id") { + iterate_results< chain::application_buying_index, chain::by_app_id >( + args.start.as(), + result.application_buyings, + args.limit, + [&]( const application_buying_object& a ){ return api_application_buying_object( a ); } ); + } else { + FC_ASSERT( false, "Unknown search type argument" ); } - while( buy_itr != end && buy_itr->sell_price.base.symbol == STEEM_SYMBOL && result.asks.size() < args.limit ) - { - auto itr = buy_itr; - order cur; - cur.order_price = itr->sell_price; - cur.real_price = 0.0; - // cur.real_price = (~cur.order_price).to_real(); - cur.steem = itr->for_sale; - cur.sbd = ( asset( itr->for_sale, STEEM_SYMBOL ) * cur.order_price ).amount; - cur.created = itr->created; - result.asks.push_back( cur ); - ++buy_itr; - } - return result; } - ////////////////////////////////////////////////////////////////////// // // // Authority / Validation // @@ -1372,8 +594,7 @@ DEFINE_API_IMPL( database_api_impl, get_required_signatures ) args.available_keys, [&]( string account_name ){ return authority( _db.get< chain::account_authority_object, chain::by_account >( account_name ).active ); }, [&]( string account_name ){ return authority( _db.get< chain::account_authority_object, chain::by_account >( account_name ).owner ); }, - [&]( string account_name ){ return authority( _db.get< chain::account_authority_object, chain::by_account >( account_name ).posting ); }, - STEEM_MAX_SIG_CHECK_DEPTH ); + SOPHIATX_MAX_SIG_CHECK_DEPTH ); return result; } @@ -1398,14 +619,7 @@ DEFINE_API_IMPL( database_api_impl, get_potential_signatures ) result.keys.insert( k ); return authority( auth ); }, - [&]( account_name_type account_name ) - { - const auto& auth = _db.get< chain::account_authority_object, chain::by_account >( account_name ).posting; - for( const auto& k : auth.get_keys() ) - result.keys.insert( k ); - return authority( auth ); - }, - STEEM_MAX_SIG_CHECK_DEPTH + SOPHIATX_MAX_SIG_CHECK_DEPTH ); return result; @@ -1416,8 +630,7 @@ DEFINE_API_IMPL( database_api_impl, verify_authority ) args.trx.verify_authority(_db.get_chain_id(), [&]( string account_name ){ return authority( _db.get< chain::account_authority_object, chain::by_account >( account_name ).active ); }, [&]( string account_name ){ return authority( _db.get< chain::account_authority_object, chain::by_account >( account_name ).owner ); }, - [&]( string account_name ){ return authority( _db.get< chain::account_authority_object, chain::by_account >( account_name ).posting ); }, - STEEM_MAX_SIG_CHECK_DEPTH ); + SOPHIATX_MAX_SIG_CHECK_DEPTH ); return verify_authority_return( { true } ); } @@ -1443,7 +656,7 @@ DEFINE_API_IMPL( database_api_impl, verify_signatures ) flat_set< public_key_type > sig_keys; for( const auto& sig : args.signatures ) { - STEEM_ASSERT( + SOPHIATX_ASSERT( sig_keys.insert( fc::ecc::public_key( sig, args.hash ) ).second, protocol::tx_duplicate_sig, "Duplicate Signature detected" ); @@ -1455,20 +668,30 @@ DEFINE_API_IMPL( database_api_impl, verify_signatures ) // verify authority throws on failure, catch and return false try { - steem::protocol::verify_authority< verify_signatures_args >( + sophiatx::protocol::verify_authority< verify_signatures_args >( { args }, sig_keys, [this]( const string& name ) { return authority( _db.get< chain::account_authority_object, chain::by_account >( name ).owner ); }, [this]( const string& name ) { return authority( _db.get< chain::account_authority_object, chain::by_account >( name ).active ); }, - [this]( const string& name ) { return authority( _db.get< chain::account_authority_object, chain::by_account >( name ).posting ); }, - STEEM_MAX_SIG_CHECK_DEPTH ); + SOPHIATX_MAX_SIG_CHECK_DEPTH ); } catch( fc::exception& ) { result.valid = false; } return result; } -#ifdef STEEM_ENABLE_SMT +DEFINE_API_IMPL( database_api_impl, get_promotion_pool_balance ) +{ + return asset(_db.get_economic_model().get_available_promotion_pool(_db.head_block_num()), SOPHIATX_SYMBOL); +} + + +DEFINE_API_IMPL( database_api_impl, get_burned_balance ) +{ + return asset(_db.get_economic_model().burn_pool, SOPHIATX_SYMBOL); +} + +#ifdef SOPHIATX_ENABLE_SMT ////////////////////////////////////////////////////////////////////// // // // SMT // @@ -1489,7 +712,6 @@ DEFINE_READ_APIS( database_api, (get_dynamic_global_properties) (get_witness_schedule) (get_hardfork_properties) - (get_reward_funds) (get_current_price_feed) (get_feed_history) (list_witnesses) @@ -1506,34 +728,16 @@ DEFINE_READ_APIS( database_api, (find_change_recovery_account_requests) (list_escrows) (find_escrows) - (list_withdraw_vesting_routes) - (find_withdraw_vesting_routes) - (list_savings_withdrawals) - (find_savings_withdrawals) - (list_vesting_delegations) - (find_vesting_delegations) - (list_vesting_delegation_expirations) - (find_vesting_delegation_expirations) - (list_sbd_conversion_requests) - (find_sbd_conversion_requests) - (list_decline_voting_rights_requests) - (find_decline_voting_rights_requests) - (list_comments) - (find_comments) - (list_votes) - (find_votes) - (list_limit_orders) - (find_limit_orders) - (get_order_book) (get_transaction_hex) (get_required_signatures) (get_potential_signatures) (verify_authority) (verify_account_authority) (verify_signatures) -#ifdef STEEM_ENABLE_SMT - (get_smt_next_identifier) -#endif + (list_applications) + (get_application_buyings) + (get_promotion_pool_balance) + (get_burned_balance) ) -} } } // steem::plugins::database_api +} } } // sophiatx::plugins::database_api diff --git a/libraries/plugins/apis/database_api/database_api_plugin.cpp b/libraries/plugins/apis/database_api/database_api_plugin.cpp index 375cafbe..fe27f9dd 100644 --- a/libraries/plugins/apis/database_api/database_api_plugin.cpp +++ b/libraries/plugins/apis/database_api/database_api_plugin.cpp @@ -1,7 +1,7 @@ -#include -#include +#include +#include -namespace steem { namespace plugins { namespace database_api { +namespace sophiatx { namespace plugins { namespace database_api { database_api_plugin::database_api_plugin() {} database_api_plugin::~database_api_plugin() {} @@ -19,4 +19,4 @@ void database_api_plugin::plugin_startup() {} void database_api_plugin::plugin_shutdown() {} -} } } // steem::plugins::database_api +} } } // sophiatx::plugins::database_api diff --git a/libraries/plugins/apis/database_api/include/steem/plugins/database_api/database_api.hpp b/libraries/plugins/apis/database_api/include/sophiatx/plugins/database_api/database_api.hpp similarity index 67% rename from libraries/plugins/apis/database_api/include/steem/plugins/database_api/database_api.hpp rename to libraries/plugins/apis/database_api/include/sophiatx/plugins/database_api/database_api.hpp index a100a288..257648fa 100644 --- a/libraries/plugins/apis/database_api/include/steem/plugins/database_api/database_api.hpp +++ b/libraries/plugins/apis/database_api/include/sophiatx/plugins/database_api/database_api.hpp @@ -1,13 +1,13 @@ #pragma once -#include +#include -#include -#include +#include +#include #define DATABASE_API_SINGLE_QUERY_LIMIT 1000 -namespace steem { namespace plugins { namespace database_api { +namespace sophiatx { namespace plugins { namespace database_api { class database_api_impl; @@ -34,7 +34,6 @@ class database_api (get_dynamic_global_properties) (get_witness_schedule) (get_hardfork_properties) - (get_reward_funds) (get_current_price_feed) (get_feed_history) @@ -55,7 +54,6 @@ class database_api * */ (list_accounts) - /** * @brief Find accounts by primary key (account name) */ @@ -68,33 +66,13 @@ class database_api (find_change_recovery_account_requests) (list_escrows) (find_escrows) - (list_withdraw_vesting_routes) - (find_withdraw_vesting_routes) - (list_savings_withdrawals) - (find_savings_withdrawals) - (list_vesting_delegations) - (find_vesting_delegations) - (list_vesting_delegation_expirations) - (find_vesting_delegation_expirations) - (list_sbd_conversion_requests) - (find_sbd_conversion_requests) - (list_decline_voting_rights_requests) - (find_decline_voting_rights_requests) - ////////////// - // Comments // - ////////////// - (list_comments) - (find_comments) - (list_votes) - (find_votes) - - //////////// - // Market // - //////////// - (list_limit_orders) - (find_limit_orders) - (get_order_book) + ////////////////// + // Applications // + ////////////////// + + (list_applications) + (get_application_buyings) //////////////////////////// // Authority / validation // @@ -128,21 +106,24 @@ class database_api /* * This is a general purpose API that checks signatures against accounts for an arbitrary sha256 hash - * using the existing authority structures in Steem + * using the existing authority structures in SophiaTX */ (verify_signatures) -#ifdef STEEM_ENABLE_SMT - /** - * @return array of Numeric Asset Identifier (NAI) available to be used for new SMT to be created. - */ - (get_smt_next_identifier) -#endif + /* + * This is used to get remaining promotion pool balance + */ + (get_promotion_pool_balance) + + /* + * Get amount of SPHTX burned + */ + (get_burned_balance) ) private: std::unique_ptr< database_api_impl > my; }; -} } } //steem::plugins::database_api +} } } //sophiatx::plugins::database_api diff --git a/libraries/plugins/apis/database_api/include/sophiatx/plugins/database_api/database_api_args.hpp b/libraries/plugins/apis/database_api/include/sophiatx/plugins/database_api/database_api_args.hpp new file mode 100644 index 00000000..4f8e6132 --- /dev/null +++ b/libraries/plugins/apis/database_api/include/sophiatx/plugins/database_api/database_api_args.hpp @@ -0,0 +1,507 @@ +#pragma once +#include + +#include +#include +#include + +#include + +namespace sophiatx { namespace plugins { namespace database_api { + +using protocol::account_name_type; +using protocol::signed_transaction; +using protocol::transaction_id_type; +using protocol::public_key_type; +using plugins::json_rpc::void_type; + +enum sort_order_type +{ + by_name, + by_proxy, + by_next_vesting_withdrawal, + by_account, + by_expiration, + by_effective_date, + by_vote_name, + by_schedule_time, + by_account_witness, + by_witness_account, + by_from_id, + by_ratification_deadline, + by_withdraw_route, + by_destination, + by_complete_from_id, + by_to_complete, + by_account_expiration, + by_price, + by_author, + by_buyer_app, + by_app_id +}; + +/* get_config */ + +typedef void_type get_config_args; +typedef fc::variant_object get_config_return; + + +/* Singletons */ + +/* get_dynamic_global_properties */ + +typedef void_type get_dynamic_global_properties_args; +typedef api_dynamic_global_property_object get_dynamic_global_properties_return; + + +/* get_witness_schedule */ + +typedef void_type get_witness_schedule_args; +typedef api_witness_schedule_object get_witness_schedule_return; + + +/* get_hardfork_properties */ + +typedef void_type get_hardfork_properties_args; +typedef api_hardfork_property_object get_hardfork_properties_return; + + + +/* get_current_price_feed */ +struct get_current_price_feed_args{ + asset_symbol_type symbol; +}; +typedef price get_current_price_feed_return; + + +/* get_current_feed_history */ +struct get_feed_history_args{ + asset_symbol_type symbol; +}; +typedef api_feed_history_object get_feed_history_return; + + +/* Witnesses */ + +struct list_witnesses_args +{ + fc::variant start; + uint32_t limit; + sort_order_type order; +}; + +struct list_witnesses_return +{ + vector< api_witness_object > witnesses; +}; + + +struct find_witnesses_args +{ + vector< account_name_type > owners; +}; + +typedef list_witnesses_return find_witnesses_return; + + +struct list_witness_votes_args +{ + fc::variant start; + uint32_t limit; + sort_order_type order; +}; + +struct list_witness_votes_return +{ + vector< api_witness_vote_object > votes; +}; + + +typedef void_type get_active_witnesses_args; + +struct get_active_witnesses_return +{ + vector< account_name_type > witnesses; +}; + + +/* Account */ + +struct list_accounts_args +{ + fc::variant start; + uint32_t limit; + sort_order_type order; +}; + +struct list_accounts_return +{ + vector< api_account_object > accounts; +}; + + +struct find_accounts_args +{ + vector< account_name_type > accounts; +}; + +typedef list_accounts_return find_accounts_return; + + +/* Owner Auth History */ + +struct list_owner_histories_args +{ + fc::variant start; + uint32_t limit; +}; + +struct list_owner_histories_return +{ + vector< api_owner_authority_history_object > owner_auths; +}; + + +struct find_owner_histories_args +{ + account_name_type owner; +}; + +typedef list_owner_histories_return find_owner_histories_return; + + +/* Account Recovery Requests */ + +struct list_account_recovery_requests_args +{ + fc::variant start; + uint32_t limit; + sort_order_type order; +}; + +struct list_account_recovery_requests_return +{ + vector< api_account_recovery_request_object > requests; +}; + + +struct find_account_recovery_requests_args +{ + vector< account_name_type > accounts; +}; + +typedef list_account_recovery_requests_return find_account_recovery_requests_return; + + +/* Change Recovery Account Requests */ + +struct list_change_recovery_account_requests_args +{ + fc::variant start; + uint32_t limit; + sort_order_type order; +}; + +struct list_change_recovery_account_requests_return +{ + vector< api_change_recovery_account_request_object > requests; +}; + + +struct find_change_recovery_account_requests_args +{ + vector< account_name_type > accounts; +}; + +typedef list_change_recovery_account_requests_return find_change_recovery_account_requests_return; + + +/* Escrow */ + +struct list_escrows_args +{ + fc::variant start; + uint32_t limit; + sort_order_type order; +}; + +struct list_escrows_return +{ + vector< api_escrow_object > escrows; +}; + + +struct find_escrows_args +{ + account_name_type from; +}; + +typedef list_escrows_return find_escrows_return; + + +struct get_transaction_hex_args +{ + signed_transaction trx; +}; + +struct get_transaction_hex_return +{ + std::string hex; +}; + + +struct get_required_signatures_args +{ + signed_transaction trx; + flat_set< public_key_type > available_keys; +}; + +struct get_required_signatures_return +{ + set< public_key_type > keys; +}; + + +struct get_potential_signatures_args +{ + signed_transaction trx; +}; + +typedef get_required_signatures_return get_potential_signatures_return; + + +struct verify_authority_args +{ + signed_transaction trx; +}; + +struct verify_authority_return +{ + bool valid; +}; + +struct verify_account_authority_args +{ + account_name_type account; + flat_set< public_key_type > signers; +}; + +typedef verify_authority_return verify_account_authority_return; + +struct verify_signatures_args +{ + fc::sha256 hash; + vector< signature_type > signatures; + vector< account_name_type > required_owner; + vector< account_name_type > required_active; + vector< authority > required_other; + + void get_required_owner_authorities( flat_set< account_name_type >& a )const + { + a.insert( required_owner.begin(), required_owner.end() ); + } + + void get_required_active_authorities( flat_set< account_name_type >& a )const + { + a.insert( required_active.begin(), required_active.end() ); + } + + void get_required_authorities( vector< authority >& a )const + { + a.insert( a.end(), required_other.begin(), required_other.end() ); + } +}; + +struct verify_signatures_return +{ + bool valid; +}; + +/* Applications */ + +struct list_applications_args +{ + fc::variant start; + uint32_t limit; + sort_order_type order; +}; + +struct list_applications_return +{ + vector< api_application_object > applications; +}; + +struct get_application_buyings_args +{ + fc::variant start; + uint32_t limit; + string search_type; +}; + +struct get_application_buyings_return +{ + vector< api_application_buying_object > application_buyings; +}; + +typedef void_type get_promotion_pool_balance_args; +typedef asset get_promotion_pool_balance_return; + +typedef void_type get_burned_balance_args; +typedef asset get_burned_balance_return; +#ifdef SOPHIATX_ENABLE_SMT +typedef void_type get_smt_next_identifier_args; + +struct get_smt_next_identifier_return +{ + vector< asset_symbol_type > nais; +}; +#endif + +} } } // sophiatx::database_api + +FC_REFLECT_ENUM( sophiatx::plugins::database_api::sort_order_type, + (by_name) + (by_proxy) + (by_next_vesting_withdrawal) + (by_account) + (by_expiration) + (by_effective_date) + (by_vote_name) + (by_schedule_time) + (by_account_witness) + (by_witness_account) + (by_from_id) + (by_ratification_deadline) + (by_withdraw_route) + (by_destination) + (by_complete_from_id) + (by_to_complete) + (by_account_expiration) + (by_price) + (by_author) + (by_buyer_app) + (by_app_id)) + + +FC_REFLECT( sophiatx::plugins::database_api::get_current_price_feed_args, + (symbol) ) + +FC_REFLECT( sophiatx::plugins::database_api::get_feed_history_args, + (symbol) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_witnesses_args, + (start)(limit)(order) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_witnesses_return, + (witnesses) ) + +FC_REFLECT( sophiatx::plugins::database_api::find_witnesses_args, + (owners) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_witness_votes_args, + (start)(limit)(order) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_witness_votes_return, + (votes) ) + +FC_REFLECT( sophiatx::plugins::database_api::get_active_witnesses_return, + (witnesses) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_accounts_args, + (start)(limit)(order) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_accounts_return, + (accounts) ) + +FC_REFLECT( sophiatx::plugins::database_api::find_accounts_args, + (accounts) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_owner_histories_args, + (start)(limit) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_owner_histories_return, + (owner_auths) ) + +FC_REFLECT( sophiatx::plugins::database_api::find_owner_histories_args, + (owner) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_account_recovery_requests_args, + (start)(limit)(order) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_account_recovery_requests_return, + (requests) ) + +FC_REFLECT( sophiatx::plugins::database_api::find_account_recovery_requests_args, + (accounts) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_change_recovery_account_requests_args, + (start)(limit)(order) ) + +FC_REFLECT( + sophiatx::plugins::database_api::list_change_recovery_account_requests_return, + (requests) ) + +FC_REFLECT( sophiatx::plugins::database_api::find_change_recovery_account_requests_args, + (accounts) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_escrows_args, + (start)(limit)(order) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_escrows_return, + (escrows) ) + +FC_REFLECT( sophiatx::plugins::database_api::find_escrows_args, + (from) ) + +FC_REFLECT( sophiatx::plugins::database_api::get_transaction_hex_args, + (trx) ) + +FC_REFLECT( sophiatx::plugins::database_api::get_transaction_hex_return, + (hex) ) + +FC_REFLECT( sophiatx::plugins::database_api::get_required_signatures_args, + (trx) + (available_keys) ) + +FC_REFLECT( sophiatx::plugins::database_api::get_required_signatures_return, + (keys) ) + +FC_REFLECT( sophiatx::plugins::database_api::get_potential_signatures_args, + (trx) ) + +FC_REFLECT( sophiatx::plugins::database_api::verify_authority_args, + (trx) ) + +FC_REFLECT( sophiatx::plugins::database_api::verify_authority_return, + (valid) ) + +FC_REFLECT( sophiatx::plugins::database_api::verify_account_authority_args, + (account) + (signers) ) + +FC_REFLECT( sophiatx::plugins::database_api::verify_signatures_args, + (hash) + (signatures) + (required_owner) + (required_active) + (required_other) ) + +FC_REFLECT( sophiatx::plugins::database_api::verify_signatures_return, + (valid) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_applications_args, + (start)(limit)(order) ) + +FC_REFLECT( sophiatx::plugins::database_api::list_applications_return, + (applications) ) + +FC_REFLECT( sophiatx::plugins::database_api::get_application_buyings_args, + (start)(limit)(search_type) ) + +FC_REFLECT( sophiatx::plugins::database_api::get_application_buyings_return, + (application_buyings) ) + +#ifdef SOPHIATX_ENABLE_SMT +FC_REFLECT( sophiatx::plugins::database_api::get_smt_next_identifier_return, + (nais) ) +#endif diff --git a/libraries/plugins/apis/database_api/include/sophiatx/plugins/database_api/database_api_objects.hpp b/libraries/plugins/apis/database_api/include/sophiatx/plugins/database_api/database_api_objects.hpp new file mode 100644 index 00000000..6909f0c6 --- /dev/null +++ b/libraries/plugins/apis/database_api/include/sophiatx/plugins/database_api/database_api_objects.hpp @@ -0,0 +1,431 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace sophiatx { namespace plugins { namespace database_api { + +using namespace sophiatx::chain; + +typedef change_recovery_account_request_object api_change_recovery_account_request_object; +typedef block_summary_object api_block_summary_object; +typedef dynamic_global_property_object api_dynamic_global_property_object; +typedef escrow_object api_escrow_object; +typedef witness_vote_object api_witness_vote_object; + +struct api_account_object +{ + api_account_object( const account_object& a, const database& db ) : + id( a.id ), + name( a.name ), + memo_key( a.memo_key ), + json_metadata( to_string( a.json_metadata ) ), + voting_proxy( a.proxy ), + //last_account_update( a.last_account_update ), + //created( a.created ), + //recovery_account( a.recovery_account ), + //reset_account( a.reset_account ), + //last_account_recovery( a.last_account_recovery ), + balance( a.balance ), + vesting_shares( a.vesting_shares ), + vesting_withdraw_rate( a.vesting_withdraw_rate ), + //next_vesting_withdrawal( a.next_vesting_withdrawal ), + //withdrawn( a.withdrawn ), + to_withdraw( a.to_withdraw ) + //witnesses_voted_for( a.witnesses_voted_for ) + { + /*size_t n = a.proxied_vsf_votes.size(); + proxied_vsf_votes.reserve( n ); + for( size_t i=0; i().indices().get(); + auto sponsor_itr = by_sponsor_idx.lower_bound(std::make_tuple(a.name, "")); + while( sponsor_itr->sponsor == a.name && sponsor_itr != by_sponsor_idx.end() ){ + sponsored_accounts.push_back(sponsor_itr->sponsored); + sponsor_itr++; + } + + const auto& by_sponsored_idx = db.get_index().indices().get(); + auto sponsored_itr = by_sponsored_idx.find(a.name); + if(sponsored_itr!=by_sponsored_idx.end()){ + sponsoring_account = sponsored_itr->sponsor; + }else{ + sponsoring_account = ""; + } + + const auto& auth = db.get< account_authority_object, by_account >( name ); + owner = authority( auth.owner ); + active = authority( auth.active ); + //last_owner_update = auth.last_owner_update; + + + +#ifdef SOPHIATX_ENABLE_SMT + const auto& by_control_account_index = db.get_index().indices().get(); + auto smt_obj_itr = by_control_account_index.find( name ); + is_smt = smt_obj_itr != by_control_account_index.end(); +#endif + } + + + api_account_object(){} + + account_id_type id; + + account_name_type name; + authority owner; + authority active; + public_key_type memo_key; + string json_metadata; + account_name_type voting_proxy; + +// time_point_sec last_owner_update; +// time_point_sec last_account_update; + +// time_point_sec created; +// account_name_type recovery_account; +// account_name_type reset_account; +// time_point_sec last_account_recovery; + std::vector sponsored_accounts; + account_name_type sponsoring_account; + vector witness_votes; + + asset balance; + + asset vesting_shares; + asset vesting_withdraw_rate; +// time_point_sec next_vesting_withdrawal; +// share_type withdrawn; + share_type to_withdraw; + +// vector< share_type > proxied_vsf_votes; + +// uint16_t witnesses_voted_for; + +}; + +struct api_owner_authority_history_object +{ + api_owner_authority_history_object( const owner_authority_history_object& o ) : + id( o.id ), + account( o.account ), + previous_owner_authority( authority( o.previous_owner_authority ) ), + last_valid_time( o.last_valid_time ) + {} + + api_owner_authority_history_object() {} + + owner_authority_history_id_type id; + + account_name_type account; + authority previous_owner_authority; + time_point_sec last_valid_time; +}; + +struct api_account_recovery_request_object +{ + api_account_recovery_request_object( const account_recovery_request_object& o ) : + id( o.id ), + account_to_recover( o.account_to_recover ), + new_owner_authority( authority( o.new_owner_authority ) ), + expires( o.expires ) + {} + + api_account_recovery_request_object() {} + + account_recovery_request_id_type id; + account_name_type account_to_recover; + authority new_owner_authority; + time_point_sec expires; +}; + +struct api_account_history_object +{ + +}; + +struct api_feed_history_object +{ + api_feed_history_object( const feed_history_object& f ) : + id( f.id ), + symbol( f.symbol ), + current_median_history( f.current_median_history ), + price_history( f.price_history.begin(), f.price_history.end() ) + {} + + api_feed_history_object() {} + + feed_history_id_type id; + asset_symbol_type symbol; + price current_median_history; + deque< price > price_history; +}; + +struct api_witness_object +{ + api_witness_object( const witness_object& w ) : + id( w.id ), + owner( w.owner ), + created( w.created ), + url( to_string( w.url ) ), + total_missed( w.total_missed ), + last_aslot( w.last_aslot ), + last_confirmed_block_num( w.last_confirmed_block_num ), + signing_key( w.signing_key ), + props( w.props ), + votes( w.votes ), + virtual_last_update( w.virtual_last_update ), + virtual_position( w.virtual_position ), + virtual_scheduled_time( w.virtual_scheduled_time ), + running_version( w.running_version ), + hardfork_version_vote( w.hardfork_version_vote ), + hardfork_time_vote( w.hardfork_time_vote ) + { + for(const auto&item : w.submitted_exchange_rates) + submitted_exchange_rates.insert(item); + } + + api_witness_object() {} + + witness_id_type id; + account_name_type owner; + time_point_sec created; + string url; + uint32_t total_missed = 0; + uint64_t last_aslot = 0; + uint64_t last_confirmed_block_num = 0; + public_key_type signing_key; + chain_properties props; + flat_map submitted_exchange_rates; + share_type votes; + fc::uint128 virtual_last_update; + fc::uint128 virtual_position; + fc::uint128 virtual_scheduled_time; + version running_version; + hardfork_version hardfork_version_vote; + time_point_sec hardfork_time_vote; +}; + +struct api_witness_schedule_object +{ + api_witness_schedule_object() {} + + api_witness_schedule_object( const witness_schedule_object& wso) : + id( wso.id ), + current_virtual_time( wso.current_virtual_time ), + next_shuffle_block_num( wso.next_shuffle_block_num ), + num_scheduled_witnesses( wso.num_scheduled_witnesses ), + top19_weight( wso.top19_weight ), + timeshare_weight( wso.timeshare_weight ), + witness_pay_normalization_factor( wso.witness_pay_normalization_factor ), + median_props( wso.median_props ), + majority_version( wso.majority_version ), + max_voted_witnesses( wso.max_voted_witnesses ), + max_runner_witnesses( wso.max_runner_witnesses ), + hardfork_required_witnesses( wso.hardfork_required_witnesses ) + { + size_t n = wso.current_shuffled_witnesses.size(); + current_shuffled_witnesses.reserve( n ); + std::transform(wso.current_shuffled_witnesses.begin(), wso.current_shuffled_witnesses.end(), + std::back_inserter(current_shuffled_witnesses), + [](const account_name_type& s) -> std::string { return s; } ); + // ^ fixed_string std::string operator used here. + } + + witness_schedule_id_type id; + + fc::uint128 current_virtual_time; + uint32_t next_shuffle_block_num; + vector current_shuffled_witnesses; // fc::array -> vector + uint8_t num_scheduled_witnesses; + uint8_t top19_weight; + uint8_t timeshare_weight; + uint32_t witness_pay_normalization_factor; + chain_properties median_props; + version majority_version; + + uint8_t max_voted_witnesses; + uint8_t max_runner_witnesses; + uint8_t hardfork_required_witnesses; +}; + +struct api_signed_block_object : public signed_block +{ + api_signed_block_object( const signed_block& block ) : signed_block( block ) + { + block_id = id(); + signing_key = signee(); + transaction_ids.reserve( transactions.size() ); + for( const signed_transaction& tx : transactions ) + transaction_ids.push_back( tx.id() ); + } + api_signed_block_object() {} + + block_id_type block_id; + public_key_type signing_key; + vector< transaction_id_type > transaction_ids; +}; + +struct api_hardfork_property_object +{ + api_hardfork_property_object( const hardfork_property_object& h ) : + id( h.id ), + last_hardfork( h.last_hardfork ), + current_hardfork_version( h.current_hardfork_version ), + next_hardfork( h.next_hardfork ), + next_hardfork_time( h.next_hardfork_time ) + { + size_t n = h.processed_hardforks.size(); + processed_hardforks.reserve( n ); + + for( size_t i = 0; i < n; i++ ) + processed_hardforks.push_back( h.processed_hardforks[i] ); + } + + api_hardfork_property_object() {} + + hardfork_property_id_type id; + vector< fc::time_point_sec > processed_hardforks; + uint32_t last_hardfork; + protocol::hardfork_version current_hardfork_version; + protocol::hardfork_version next_hardfork; + fc::time_point_sec next_hardfork_time; +}; + +struct api_application_object +{ + api_application_object( const application_object& a ) : + id( a.id ), + name( a.name ), + author( a.author ), + url( a.url ), + metadata( to_string( a.metadata ) ), + price_param( a.price_param ) + {} + + api_application_object() {} + + application_id_type id; + string name; + account_name_type author; + string url; + string metadata; + application_price_param price_param; +}; + +struct api_application_buying_object +{ + api_application_buying_object( const application_buying_object& a ) : + id( a.id ), + app_id( a.app_id._id ), + buyer( a.buyer ), + created( a.created ) + {} + + api_application_buying_object() {} + + application_buying_id_type id; + int64_t app_id; + account_name_type buyer; + time_point_sec created; +}; + + +} } } // sophiatx::plugins::database_api + + +FC_REFLECT( sophiatx::plugins::database_api::api_account_object, + (id)(name)(owner)(active)(memo_key)(json_metadata)(voting_proxy)//(last_owner_update)(last_account_update) + //(created) (recovery_account)(last_account_recovery)(reset_account) + (balance) + (vesting_shares)(vesting_withdraw_rate)(to_withdraw)//(next_vesting_withdrawal)(withdrawn) + //(proxied_vsf_votes)(witnesses_voted_for) + (witness_votes)(sponsored_accounts)(sponsoring_account) + ) + +FC_REFLECT( sophiatx::plugins::database_api::api_owner_authority_history_object, + (id) + (account) + (previous_owner_authority) + (last_valid_time) + ) + +FC_REFLECT( sophiatx::plugins::database_api::api_account_recovery_request_object, + (id) + (account_to_recover) + (new_owner_authority) + (expires) + ) + +FC_REFLECT( sophiatx::plugins::database_api::api_feed_history_object, + (id) + (symbol) + (current_median_history) + (price_history) + ) + +FC_REFLECT( sophiatx::plugins::database_api::api_witness_object, + (id) + (owner) + (created) + (url)(votes)(virtual_last_update)(virtual_position)(virtual_scheduled_time)(total_missed) + (last_aslot)(last_confirmed_block_num)(signing_key) + (props) + (submitted_exchange_rates) + (running_version) + (hardfork_version_vote)(hardfork_time_vote) + ) + +FC_REFLECT( sophiatx::plugins::database_api::api_witness_schedule_object, + (id) + (current_virtual_time) + (next_shuffle_block_num) + (current_shuffled_witnesses) + (num_scheduled_witnesses) + (top19_weight) + (timeshare_weight) + (witness_pay_normalization_factor) + (median_props) + (majority_version) + (max_voted_witnesses) + (max_runner_witnesses) + (hardfork_required_witnesses) + ) + +FC_REFLECT_DERIVED( sophiatx::plugins::database_api::api_signed_block_object, (sophiatx::protocol::signed_block), + (block_id) + (signing_key) + (transaction_ids) + ) + +FC_REFLECT( sophiatx::plugins::database_api::api_hardfork_property_object, + (id) + (processed_hardforks) + (last_hardfork) + (current_hardfork_version) + (next_hardfork) + (next_hardfork_time) + ) + +FC_REFLECT( sophiatx::plugins::database_api::api_application_object, + (id) + (name) + (author) + (url) + (metadata) + (price_param) + ) + +FC_REFLECT( sophiatx::plugins::database_api::api_application_buying_object, + (id) + (app_id) + (buyer) + (created) + ) diff --git a/libraries/plugins/apis/database_api/include/steem/plugins/database_api/database_api_plugin.hpp b/libraries/plugins/apis/database_api/include/sophiatx/plugins/database_api/database_api_plugin.hpp similarity index 61% rename from libraries/plugins/apis/database_api/include/steem/plugins/database_api/database_api_plugin.hpp rename to libraries/plugins/apis/database_api/include/sophiatx/plugins/database_api/database_api_plugin.hpp index 5e69204f..3b1e730f 100644 --- a/libraries/plugins/apis/database_api/include/steem/plugins/database_api/database_api_plugin.hpp +++ b/libraries/plugins/apis/database_api/include/sophiatx/plugins/database_api/database_api_plugin.hpp @@ -1,14 +1,14 @@ #pragma once -#include -#include +#include +#include #include -namespace steem { namespace plugins { namespace database_api { +namespace sophiatx { namespace plugins { namespace database_api { using namespace appbase; -#define STEEM_DATABASE_API_PLUGIN_NAME "database_api" +#define SOPHIATX_DATABASE_API_PLUGIN_NAME "database_api" class database_api_plugin : public plugin< database_api_plugin > { @@ -17,11 +17,11 @@ class database_api_plugin : public plugin< database_api_plugin > virtual ~database_api_plugin(); APPBASE_PLUGIN_REQUIRES( - (steem::plugins::json_rpc::json_rpc_plugin) - (steem::plugins::chain::chain_plugin) + (sophiatx::plugins::json_rpc::json_rpc_plugin) + (sophiatx::plugins::chain::chain_plugin) ) - static const std::string& name() { static std::string name = STEEM_DATABASE_API_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_DATABASE_API_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, @@ -33,4 +33,4 @@ class database_api_plugin : public plugin< database_api_plugin > std::shared_ptr< class database_api > api; }; -} } } // steem::plugins::database_api +} } } // sophiatx::plugins::database_api diff --git a/libraries/plugins/apis/database_api/include/steem/plugins/database_api/database_api_args.hpp b/libraries/plugins/apis/database_api/include/steem/plugins/database_api/database_api_args.hpp deleted file mode 100644 index 52c8b90d..00000000 --- a/libraries/plugins/apis/database_api/include/steem/plugins/database_api/database_api_args.hpp +++ /dev/null @@ -1,795 +0,0 @@ -#pragma once -#include - -#include -#include -#include - -#include - -namespace steem { namespace plugins { namespace database_api { - -using protocol::account_name_type; -using protocol::signed_transaction; -using protocol::transaction_id_type; -using protocol::public_key_type; -using plugins::json_rpc::void_type; - -enum sort_order_type -{ - by_name, - by_proxy, - by_next_vesting_withdrawal, - by_account, - by_expiration, - by_effective_date, - by_vote_name, - by_schedule_time, - by_account_witness, - by_witness_account, - by_from_id, - by_ratification_deadline, - by_withdraw_route, - by_destination, - by_complete_from_id, - by_to_complete, - by_delegation, - by_account_expiration, - by_conversion_date, - by_cashout_time, - by_permlink, - by_root, - by_parent, - by_last_update, - by_author_last_update, - by_comment_voter, - by_voter_comment, - by_voter_last_update, - by_comment_weight_voter, - by_price -}; - -/* get_config */ - -typedef void_type get_config_args; -typedef fc::variant_object get_config_return; - - -/* Singletons */ - -/* get_dynamic_global_properties */ - -typedef void_type get_dynamic_global_properties_args; -typedef api_dynamic_global_property_object get_dynamic_global_properties_return; - - -/* get_witness_schedule */ - -typedef void_type get_witness_schedule_args; -typedef api_witness_schedule_object get_witness_schedule_return; - - -/* get_hardfork_properties */ - -typedef void_type get_hardfork_properties_args; -typedef api_hardfork_property_object get_hardfork_properties_return; - - -/* get_reward_funds */ - -typedef void_type get_reward_funds_args; - -struct get_reward_funds_return -{ - vector< api_reward_fund_object > funds; -}; - - -/* get_current_price_feed */ - -typedef void_type get_current_price_feed_args; -typedef price get_current_price_feed_return; - - -/* get_current_feed_history */ - -typedef void_type get_feed_history_args; -typedef api_feed_history_object get_feed_history_return; - - -/* Witnesses */ - -struct list_witnesses_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_witnesses_return -{ - vector< api_witness_object > witnesses; -}; - - -struct find_witnesses_args -{ - vector< account_name_type > owners; -}; - -typedef list_witnesses_return find_witnesses_return; - - -struct list_witness_votes_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_witness_votes_return -{ - vector< api_witness_vote_object > votes; -}; - - -typedef void_type get_active_witnesses_args; - -struct get_active_witnesses_return -{ - vector< account_name_type > witnesses; -}; - - -/* Account */ - -struct list_accounts_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_accounts_return -{ - vector< api_account_object > accounts; -}; - - -struct find_accounts_args -{ - vector< account_name_type > accounts; -}; - -typedef list_accounts_return find_accounts_return; - - -/* Owner Auth History */ - -struct list_owner_histories_args -{ - fc::variant start; - uint32_t limit; -}; - -struct list_owner_histories_return -{ - vector< api_owner_authority_history_object > owner_auths; -}; - - -struct find_owner_histories_args -{ - account_name_type owner; -}; - -typedef list_owner_histories_return find_owner_histories_return; - - -/* Account Recovery Requests */ - -struct list_account_recovery_requests_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_account_recovery_requests_return -{ - vector< api_account_recovery_request_object > requests; -}; - - -struct find_account_recovery_requests_args -{ - vector< account_name_type > accounts; -}; - -typedef list_account_recovery_requests_return find_account_recovery_requests_return; - - -/* Change Recovery Account Requests */ - -struct list_change_recovery_account_requests_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_change_recovery_account_requests_return -{ - vector< api_change_recovery_account_request_object > requests; -}; - - -struct find_change_recovery_account_requests_args -{ - vector< account_name_type > accounts; -}; - -typedef list_change_recovery_account_requests_return find_change_recovery_account_requests_return; - - -/* Escrow */ - -struct list_escrows_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_escrows_return -{ - vector< api_escrow_object > escrows; -}; - - -struct find_escrows_args -{ - account_name_type from; -}; - -typedef list_escrows_return find_escrows_return; - - -/* Vesting Withdraw Routes */ - -struct list_withdraw_vesting_routes_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_withdraw_vesting_routes_return -{ - vector< api_withdraw_vesting_route_object > routes; -}; - - -struct find_withdraw_vesting_routes_args -{ - account_name_type account; - sort_order_type order; -}; - -typedef list_withdraw_vesting_routes_return find_withdraw_vesting_routes_return; - - -/* Savings Withdraw */ - -struct list_savings_withdrawals_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_savings_withdrawals_return -{ - vector< api_savings_withdraw_object > withdrawals; -}; - - -struct find_savings_withdrawals_args -{ - account_name_type account; -}; - -typedef list_savings_withdrawals_return find_savings_withdrawals_return; - - -/* Vesting Delegations */ - -struct list_vesting_delegations_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_vesting_delegations_return -{ - vector< api_vesting_delegation_object > delegations; -}; - - -struct find_vesting_delegations_args -{ - account_name_type account; -}; - -typedef list_vesting_delegations_return find_vesting_delegations_return; - - -/* Vesting Delegation Expirations */ - -struct list_vesting_delegation_expirations_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_vesting_delegation_expirations_return -{ - vector< api_vesting_delegation_expiration_object > delegations; -}; - - -struct find_vesting_delegation_expirations_args -{ - account_name_type account; -}; - -typedef list_vesting_delegation_expirations_return find_vesting_delegation_expirations_return; - - -/* SBD Converstions */ - -struct list_sbd_conversion_requests_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_sbd_conversion_requests_return -{ - vector< api_convert_request_object > requests; -}; - - -struct find_sbd_conversion_requests_args -{ - account_name_type account; -}; - -typedef list_sbd_conversion_requests_return find_sbd_conversion_requests_return; - - -/* Decline Voting Rights Requests */ - -struct list_decline_voting_rights_requests_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_decline_voting_rights_requests_return -{ - vector< api_decline_voting_rights_request_object > requests; -}; - - -struct find_decline_voting_rights_requests_args -{ - vector< account_name_type > accounts; -}; - -typedef list_decline_voting_rights_requests_return find_decline_voting_rights_requests_return; - - -/* Comments */ - -struct list_comments_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_comments_return -{ - vector< api_comment_object > comments; -}; - - -struct find_comments_args -{ - vector< std::pair< account_name_type, string > > comments; -}; - -typedef list_comments_return find_comments_return; - - -/* Votes */ - -struct list_votes_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_votes_return -{ - vector< api_comment_vote_object > votes; -}; - - -struct find_votes_args -{ - account_name_type author; - string permlink; -}; - -typedef list_votes_return find_votes_return; - - -/* Limit Orders */ - -struct list_limit_orders_args -{ - fc::variant start; - uint32_t limit; - sort_order_type order; -}; - -struct list_limit_orders_return -{ - vector< api_limit_order_object > orders; -}; - - -struct find_limit_orders_args -{ - account_name_type account; -}; - -typedef list_limit_orders_return find_limit_orders_return; - - -/* Order Book */ - -struct get_order_book_args -{ - uint32_t limit; -}; - -typedef order_book get_order_book_return; - - -struct get_transaction_hex_args -{ - signed_transaction trx; -}; - -struct get_transaction_hex_return -{ - std::string hex; -}; - - -struct get_required_signatures_args -{ - signed_transaction trx; - flat_set< public_key_type > available_keys; -}; - -struct get_required_signatures_return -{ - set< public_key_type > keys; -}; - - -struct get_potential_signatures_args -{ - signed_transaction trx; -}; - -typedef get_required_signatures_return get_potential_signatures_return; - - -struct verify_authority_args -{ - signed_transaction trx; -}; - -struct verify_authority_return -{ - bool valid; -}; - -struct verify_account_authority_args -{ - account_name_type account; - flat_set< public_key_type > signers; -}; - -typedef verify_authority_return verify_account_authority_return; - -struct verify_signatures_args -{ - fc::sha256 hash; - vector< signature_type > signatures; - vector< account_name_type > required_owner; - vector< account_name_type > required_active; - vector< account_name_type > required_posting; - vector< authority > required_other; - - void get_required_owner_authorities( flat_set< account_name_type >& a )const - { - a.insert( required_owner.begin(), required_owner.end() ); - } - - void get_required_active_authorities( flat_set< account_name_type >& a )const - { - a.insert( required_active.begin(), required_active.end() ); - } - - void get_required_posting_authorities( flat_set< account_name_type >& a )const - { - a.insert( required_posting.begin(), required_posting.end() ); - } - - void get_required_authorities( vector< authority >& a )const - { - a.insert( a.end(), required_other.begin(), required_other.end() ); - } -}; - -struct verify_signatures_return -{ - bool valid; -}; - -#ifdef STEEM_ENABLE_SMT -typedef void_type get_smt_next_identifier_args; - -struct get_smt_next_identifier_return -{ - vector< asset_symbol_type > nais; -}; -#endif - -} } } // steem::database_api - -FC_REFLECT_ENUM( steem::plugins::database_api::sort_order_type, - (by_name) - (by_proxy) - (by_next_vesting_withdrawal) - (by_account) - (by_expiration) - (by_effective_date) - (by_vote_name) - (by_schedule_time) - (by_account_witness) - (by_witness_account) - (by_from_id) - (by_ratification_deadline) - (by_withdraw_route) - (by_destination) - (by_complete_from_id) - (by_to_complete) - (by_delegation) - (by_account_expiration) - (by_conversion_date) - (by_cashout_time) - (by_permlink) - (by_root) - (by_parent) - (by_last_update) - (by_author_last_update) - (by_comment_voter) - (by_voter_comment) - (by_voter_last_update) - (by_comment_weight_voter) - (by_price) ) - -FC_REFLECT( steem::plugins::database_api::get_reward_funds_return, - (funds) ) - -FC_REFLECT( steem::plugins::database_api::list_witnesses_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_witnesses_return, - (witnesses) ) - -FC_REFLECT( steem::plugins::database_api::find_witnesses_args, - (owners) ) - -FC_REFLECT( steem::plugins::database_api::list_witness_votes_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_witness_votes_return, - (votes) ) - -FC_REFLECT( steem::plugins::database_api::get_active_witnesses_return, - (witnesses) ) - -FC_REFLECT( steem::plugins::database_api::list_accounts_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_accounts_return, - (accounts) ) - -FC_REFLECT( steem::plugins::database_api::find_accounts_args, - (accounts) ) - -FC_REFLECT( steem::plugins::database_api::list_owner_histories_args, - (start)(limit) ) - -FC_REFLECT( steem::plugins::database_api::list_owner_histories_return, - (owner_auths) ) - -FC_REFLECT( steem::plugins::database_api::find_owner_histories_args, - (owner) ) - -FC_REFLECT( steem::plugins::database_api::list_account_recovery_requests_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_account_recovery_requests_return, - (requests) ) - -FC_REFLECT( steem::plugins::database_api::find_account_recovery_requests_args, - (accounts) ) - -FC_REFLECT( steem::plugins::database_api::list_change_recovery_account_requests_args, - (start)(limit)(order) ) - -FC_REFLECT( - steem::plugins::database_api::list_change_recovery_account_requests_return, - (requests) ) - -FC_REFLECT( steem::plugins::database_api::find_change_recovery_account_requests_args, - (accounts) ) - -FC_REFLECT( steem::plugins::database_api::list_escrows_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_escrows_return, - (escrows) ) - -FC_REFLECT( steem::plugins::database_api::find_escrows_args, - (from) ) - -FC_REFLECT( steem::plugins::database_api::list_withdraw_vesting_routes_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_withdraw_vesting_routes_return, - (routes) ) - -FC_REFLECT( steem::plugins::database_api::find_withdraw_vesting_routes_args, - (account)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_savings_withdrawals_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_savings_withdrawals_return, - (withdrawals) ) - -FC_REFLECT( steem::plugins::database_api::find_savings_withdrawals_args, - (account) ) - -FC_REFLECT( steem::plugins::database_api::list_vesting_delegations_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_vesting_delegations_return, - (delegations) ) - -FC_REFLECT( steem::plugins::database_api::find_vesting_delegations_args, - (account) ) - -FC_REFLECT( steem::plugins::database_api::list_vesting_delegation_expirations_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_vesting_delegation_expirations_return, - (delegations) ) - -FC_REFLECT( steem::plugins::database_api::find_vesting_delegation_expirations_args, - (account) ) - -FC_REFLECT( steem::plugins::database_api::list_sbd_conversion_requests_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_sbd_conversion_requests_return, - (requests) ) - -FC_REFLECT( steem::plugins::database_api::find_sbd_conversion_requests_args, - (account) ) - -FC_REFLECT( steem::plugins::database_api::list_decline_voting_rights_requests_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_decline_voting_rights_requests_return, - (requests) ) - -FC_REFLECT( steem::plugins::database_api::find_decline_voting_rights_requests_args, - (accounts) ) - -FC_REFLECT( steem::plugins::database_api::list_comments_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_comments_return, - (comments) ) - -FC_REFLECT( steem::plugins::database_api::find_comments_args, - (comments) ) - -FC_REFLECT( steem::plugins::database_api::list_votes_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_votes_return, - (votes) ) - -FC_REFLECT( steem::plugins::database_api::find_votes_args, - (author)(permlink) ) - -FC_REFLECT( steem::plugins::database_api::list_limit_orders_args, - (start)(limit)(order) ) - -FC_REFLECT( steem::plugins::database_api::list_limit_orders_return, - (orders) ) - -FC_REFLECT( steem::plugins::database_api::find_limit_orders_args, - (account) ) - -FC_REFLECT( steem::plugins::database_api::get_order_book_args, - (limit) ) - -FC_REFLECT( steem::plugins::database_api::get_transaction_hex_args, - (trx) ) - -FC_REFLECT( steem::plugins::database_api::get_transaction_hex_return, - (hex) ) - -FC_REFLECT( steem::plugins::database_api::get_required_signatures_args, - (trx) - (available_keys) ) - -FC_REFLECT( steem::plugins::database_api::get_required_signatures_return, - (keys) ) - -FC_REFLECT( steem::plugins::database_api::get_potential_signatures_args, - (trx) ) - -FC_REFLECT( steem::plugins::database_api::verify_authority_args, - (trx) ) - -FC_REFLECT( steem::plugins::database_api::verify_authority_return, - (valid) ) - -FC_REFLECT( steem::plugins::database_api::verify_account_authority_args, - (account) - (signers) ) - -FC_REFLECT( steem::plugins::database_api::verify_signatures_args, - (hash) - (signatures) - (required_owner) - (required_active) - (required_posting) - (required_other) ) - -FC_REFLECT( steem::plugins::database_api::verify_signatures_return, - (valid) ) - -#ifdef STEEM_ENABLE_SMT -FC_REFLECT( steem::plugins::database_api::get_smt_next_identifier_return, - (nais) ) -#endif diff --git a/libraries/plugins/apis/database_api/include/steem/plugins/database_api/database_api_objects.hpp b/libraries/plugins/apis/database_api/include/steem/plugins/database_api/database_api_objects.hpp deleted file mode 100644 index c2646c01..00000000 --- a/libraries/plugins/apis/database_api/include/steem/plugins/database_api/database_api_objects.hpp +++ /dev/null @@ -1,647 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace steem { namespace plugins { namespace database_api { - -using namespace steem::chain; - -typedef change_recovery_account_request_object api_change_recovery_account_request_object; -typedef block_summary_object api_block_summary_object; -typedef dynamic_global_property_object api_dynamic_global_property_object; -typedef convert_request_object api_convert_request_object; -typedef escrow_object api_escrow_object; -typedef liquidity_reward_balance_object api_liquidity_reward_balance_object; -typedef limit_order_object api_limit_order_object; -typedef withdraw_vesting_route_object api_withdraw_vesting_route_object; -typedef decline_voting_rights_request_object api_decline_voting_rights_request_object; -typedef witness_vote_object api_witness_vote_object; -typedef vesting_delegation_object api_vesting_delegation_object; -typedef vesting_delegation_expiration_object api_vesting_delegation_expiration_object; -typedef reward_fund_object api_reward_fund_object; - -struct api_comment_object -{ - api_comment_object( const comment_object& o, const database& db ): - id( o.id ), - category( to_string( o.category ) ), - parent_author( o.parent_author ), - parent_permlink( to_string( o.parent_permlink ) ), - author( o.author ), - permlink( to_string( o.permlink ) ), - last_update( o.last_update ), - created( o.created ), - active( o.active ), - last_payout( o.last_payout ), - depth( o.depth ), - children( o.children ), - net_rshares( o.net_rshares ), - abs_rshares( o.abs_rshares ), - vote_rshares( o.vote_rshares ), - children_abs_rshares( o.children_abs_rshares ), - cashout_time( o.cashout_time ), - max_cashout_time( o.max_cashout_time ), - total_vote_weight( o.total_vote_weight ), - reward_weight( o.reward_weight ), - total_payout_value( o.total_payout_value ), - curator_payout_value( o.curator_payout_value ), - author_rewards( o.author_rewards ), - net_votes( o.net_votes ), - max_accepted_payout( o.max_accepted_payout ), - percent_steem_dollars( o.percent_steem_dollars ), - allow_replies( o.allow_replies ), - allow_votes( o.allow_votes ), - allow_curation_rewards( o.allow_curation_rewards ) - { - for( auto& route : o.beneficiaries ) - { - beneficiaries.push_back( route ); - } - - const auto root = db.find( o.root_comment ); - - if( root != nullptr ) - { - root_author = root->author; - root_permlink = to_string( root->permlink ); - } -#ifndef IS_LOW_MEM - const auto& con = db.get< chain::comment_content_object, chain::by_comment >( o.id ); - title = to_string( con.title ); - body = to_string( con.body ); - json_metadata = to_string( con.json_metadata ); -#endif - } - - api_comment_object(){} - - comment_id_type id; - string category; - string parent_author; - string parent_permlink; - string author; - string permlink; - - string title; - string body; - string json_metadata; - time_point_sec last_update; - time_point_sec created; - time_point_sec active; - time_point_sec last_payout; - - uint8_t depth = 0; - uint32_t children = 0; - - share_type net_rshares; - share_type abs_rshares; - share_type vote_rshares; - - share_type children_abs_rshares; - time_point_sec cashout_time; - time_point_sec max_cashout_time; - uint64_t total_vote_weight = 0; - - uint16_t reward_weight = 0; - - asset total_payout_value; - asset curator_payout_value; - - share_type author_rewards; - - int32_t net_votes = 0; - - account_name_type root_author; - string root_permlink; - - asset max_accepted_payout; - uint16_t percent_steem_dollars = 0; - bool allow_replies = false; - bool allow_votes = false; - bool allow_curation_rewards = false; - vector< beneficiary_route_type > beneficiaries; -}; - -struct api_comment_vote_object -{ - api_comment_vote_object( const comment_vote_object& cv, const database& db ) : - id( cv.id ), - weight( cv.weight ), - rshares( cv.rshares), - vote_percent( cv.vote_percent ), - last_update( cv.last_update ), - num_changes( cv.num_changes ) - { - voter = db.get( cv.voter ).name; - auto comment = db.get( cv.comment ); - author = comment.author; - permlink = to_string( comment.permlink ); - } - - comment_vote_id_type id; - - account_name_type voter; - account_name_type author; - string permlink; - uint64_t weight = 0; - int64_t rshares = 0; - int16_t vote_percent = 0; - time_point_sec last_update; - int8_t num_changes = 0; -}; - -struct api_account_object -{ - api_account_object( const account_object& a, const database& db ) : - id( a.id ), - name( a.name ), - memo_key( a.memo_key ), - json_metadata( to_string( a.json_metadata ) ), - proxy( a.proxy ), - last_account_update( a.last_account_update ), - created( a.created ), - mined( a.mined ), - recovery_account( a.recovery_account ), - reset_account( a.reset_account ), - last_account_recovery( a.last_account_recovery ), - comment_count( a.comment_count ), - lifetime_vote_count( a.lifetime_vote_count ), - post_count( a.post_count ), - can_vote( a.can_vote ), - voting_power( a.voting_power ), - last_vote_time( a.last_vote_time ), - balance( a.balance ), - savings_balance( a.savings_balance ), - sbd_balance( a.sbd_balance ), - sbd_seconds( a.sbd_seconds ), - sbd_seconds_last_update( a.sbd_seconds_last_update ), - sbd_last_interest_payment( a.sbd_last_interest_payment ), - savings_sbd_balance( a.savings_sbd_balance ), - savings_sbd_seconds( a.savings_sbd_seconds ), - savings_sbd_seconds_last_update( a.savings_sbd_seconds_last_update ), - savings_sbd_last_interest_payment( a.savings_sbd_last_interest_payment ), - savings_withdraw_requests( a.savings_withdraw_requests ), - reward_sbd_balance( a.reward_sbd_balance ), - reward_steem_balance( a.reward_steem_balance ), - reward_vesting_balance( a.reward_vesting_balance ), - reward_vesting_steem( a.reward_vesting_steem ), - curation_rewards( a.curation_rewards ), - posting_rewards( a.posting_rewards ), - vesting_shares( a.vesting_shares ), - delegated_vesting_shares( a.delegated_vesting_shares ), - received_vesting_shares( a.received_vesting_shares ), - vesting_withdraw_rate( a.vesting_withdraw_rate ), - next_vesting_withdrawal( a.next_vesting_withdrawal ), - withdrawn( a.withdrawn ), - to_withdraw( a.to_withdraw ), - withdraw_routes( a.withdraw_routes ), - witnesses_voted_for( a.witnesses_voted_for ), - last_post( a.last_post ), - last_root_post( a.last_root_post ) - { - size_t n = a.proxied_vsf_votes.size(); - proxied_vsf_votes.reserve( n ); - for( size_t i=0; i( name ); - owner = authority( auth.owner ); - active = authority( auth.active ); - posting = authority( auth.posting ); - last_owner_update = auth.last_owner_update; -#ifdef STEEM_ENABLE_SMT - const auto& by_control_account_index = db.get_index().indices().get(); - auto smt_obj_itr = by_control_account_index.find( name ); - is_smt = smt_obj_itr != by_control_account_index.end(); -#endif - } - - - api_account_object(){} - - account_id_type id; - - account_name_type name; - authority owner; - authority active; - authority posting; - public_key_type memo_key; - string json_metadata; - account_name_type proxy; - - time_point_sec last_owner_update; - time_point_sec last_account_update; - - time_point_sec created; - bool mined = false; - account_name_type recovery_account; - account_name_type reset_account; - time_point_sec last_account_recovery; - uint32_t comment_count = 0; - uint32_t lifetime_vote_count = 0; - uint32_t post_count = 0; - - bool can_vote = false; - uint16_t voting_power = 0; - time_point_sec last_vote_time; - - asset balance; - asset savings_balance; - - asset sbd_balance; - uint128_t sbd_seconds; - time_point_sec sbd_seconds_last_update; - time_point_sec sbd_last_interest_payment; - - asset savings_sbd_balance; - uint128_t savings_sbd_seconds; - time_point_sec savings_sbd_seconds_last_update; - time_point_sec savings_sbd_last_interest_payment; - - uint8_t savings_withdraw_requests = 0; - - asset reward_sbd_balance; - asset reward_steem_balance; - asset reward_vesting_balance; - asset reward_vesting_steem; - - share_type curation_rewards; - share_type posting_rewards; - - asset vesting_shares; - asset delegated_vesting_shares; - asset received_vesting_shares; - asset vesting_withdraw_rate; - time_point_sec next_vesting_withdrawal; - share_type withdrawn; - share_type to_withdraw; - uint16_t withdraw_routes = 0; - - vector< share_type > proxied_vsf_votes; - - uint16_t witnesses_voted_for; - - time_point_sec last_post; - time_point_sec last_root_post; - - bool is_smt = false; -}; - -struct api_owner_authority_history_object -{ - api_owner_authority_history_object( const owner_authority_history_object& o ) : - id( o.id ), - account( o.account ), - previous_owner_authority( authority( o.previous_owner_authority ) ), - last_valid_time( o.last_valid_time ) - {} - - api_owner_authority_history_object() {} - - owner_authority_history_id_type id; - - account_name_type account; - authority previous_owner_authority; - time_point_sec last_valid_time; -}; - -struct api_account_recovery_request_object -{ - api_account_recovery_request_object( const account_recovery_request_object& o ) : - id( o.id ), - account_to_recover( o.account_to_recover ), - new_owner_authority( authority( o.new_owner_authority ) ), - expires( o.expires ) - {} - - api_account_recovery_request_object() {} - - account_recovery_request_id_type id; - account_name_type account_to_recover; - authority new_owner_authority; - time_point_sec expires; -}; - -struct api_account_history_object -{ - -}; - -struct api_savings_withdraw_object -{ - api_savings_withdraw_object( const savings_withdraw_object& o ) : - id( o.id ), - from( o.from ), - to( o.to ), - memo( to_string( o.memo ) ), - request_id( o.request_id ), - amount( o.amount ), - complete( o.complete ) - {} - - api_savings_withdraw_object() {} - - savings_withdraw_id_type id; - account_name_type from; - account_name_type to; - string memo; - uint32_t request_id = 0; - asset amount; - time_point_sec complete; -}; - -struct api_feed_history_object -{ - api_feed_history_object( const feed_history_object& f ) : - id( f.id ), - current_median_history( f.current_median_history ), - price_history( f.price_history.begin(), f.price_history.end() ) - {} - - api_feed_history_object() {} - - feed_history_id_type id; - price current_median_history; - deque< price > price_history; -}; - -struct api_witness_object -{ - api_witness_object( const witness_object& w ) : - id( w.id ), - owner( w.owner ), - created( w.created ), - url( to_string( w.url ) ), - total_missed( w.total_missed ), - last_aslot( w.last_aslot ), - last_confirmed_block_num( w.last_confirmed_block_num ), - pow_worker( w.pow_worker ), - signing_key( w.signing_key ), - props( w.props ), - sbd_exchange_rate( w.sbd_exchange_rate ), - last_sbd_exchange_update( w.last_sbd_exchange_update ), - votes( w.votes ), - virtual_last_update( w.virtual_last_update ), - virtual_position( w.virtual_position ), - virtual_scheduled_time( w.virtual_scheduled_time ), - last_work( w.last_work ), - running_version( w.running_version ), - hardfork_version_vote( w.hardfork_version_vote ), - hardfork_time_vote( w.hardfork_time_vote ) - {} - - api_witness_object() {} - - witness_id_type id; - account_name_type owner; - time_point_sec created; - string url; - uint32_t total_missed = 0; - uint64_t last_aslot = 0; - uint64_t last_confirmed_block_num = 0; - uint64_t pow_worker = 0; - public_key_type signing_key; - chain_properties props; - price sbd_exchange_rate; - time_point_sec last_sbd_exchange_update; - share_type votes; - fc::uint128 virtual_last_update; - fc::uint128 virtual_position; - fc::uint128 virtual_scheduled_time; - digest_type last_work; - version running_version; - hardfork_version hardfork_version_vote; - time_point_sec hardfork_time_vote; -}; - -struct api_witness_schedule_object -{ - api_witness_schedule_object() {} - - api_witness_schedule_object( const witness_schedule_object& wso) : - id( wso.id ), - current_virtual_time( wso.current_virtual_time ), - next_shuffle_block_num( wso.next_shuffle_block_num ), - num_scheduled_witnesses( wso.num_scheduled_witnesses ), - top19_weight( wso.top19_weight ), - timeshare_weight( wso.timeshare_weight ), - miner_weight( wso.miner_weight ), - witness_pay_normalization_factor( wso.witness_pay_normalization_factor ), - median_props( wso.median_props ), - majority_version( wso.majority_version ), - max_voted_witnesses( wso.max_voted_witnesses ), - max_miner_witnesses( wso.max_miner_witnesses ), - max_runner_witnesses( wso.max_runner_witnesses ), - hardfork_required_witnesses( wso.hardfork_required_witnesses ) - { - size_t n = wso.current_shuffled_witnesses.size(); - current_shuffled_witnesses.reserve( n ); - std::transform(wso.current_shuffled_witnesses.begin(), wso.current_shuffled_witnesses.end(), - std::back_inserter(current_shuffled_witnesses), - [](const account_name_type& s) -> std::string { return s; } ); - // ^ fixed_string std::string operator used here. - } - - witness_schedule_id_type id; - - fc::uint128 current_virtual_time; - uint32_t next_shuffle_block_num; - vector current_shuffled_witnesses; // fc::array -> vector - uint8_t num_scheduled_witnesses; - uint8_t top19_weight; - uint8_t timeshare_weight; - uint8_t miner_weight; - uint32_t witness_pay_normalization_factor; - chain_properties median_props; - version majority_version; - - uint8_t max_voted_witnesses; - uint8_t max_miner_witnesses; - uint8_t max_runner_witnesses; - uint8_t hardfork_required_witnesses; -}; - -struct api_signed_block_object : public signed_block -{ - api_signed_block_object( const signed_block& block ) : signed_block( block ) - { - block_id = id(); - signing_key = signee(); - transaction_ids.reserve( transactions.size() ); - for( const signed_transaction& tx : transactions ) - transaction_ids.push_back( tx.id() ); - } - api_signed_block_object() {} - - block_id_type block_id; - public_key_type signing_key; - vector< transaction_id_type > transaction_ids; -}; - -struct api_hardfork_property_object -{ - api_hardfork_property_object( const hardfork_property_object& h ) : - id( h.id ), - last_hardfork( h.last_hardfork ), - current_hardfork_version( h.current_hardfork_version ), - next_hardfork( h.next_hardfork ), - next_hardfork_time( h.next_hardfork_time ) - { - size_t n = h.processed_hardforks.size(); - processed_hardforks.reserve( n ); - - for( size_t i = 0; i < n; i++ ) - processed_hardforks.push_back( h.processed_hardforks[i] ); - } - - api_hardfork_property_object() {} - - hardfork_property_id_type id; - vector< fc::time_point_sec > processed_hardforks; - uint32_t last_hardfork; - protocol::hardfork_version current_hardfork_version; - protocol::hardfork_version next_hardfork; - fc::time_point_sec next_hardfork_time; -}; - - - -struct order -{ - price order_price; - double real_price; // dollars per steem - share_type steem; - share_type sbd; - fc::time_point_sec created; -}; - -struct order_book -{ - vector< order > asks; - vector< order > bids; -}; - -} } } // steem::plugins::database_api - -FC_REFLECT( steem::plugins::database_api::api_comment_object, - (id)(author)(permlink) - (category)(parent_author)(parent_permlink) - (title)(body)(json_metadata)(last_update)(created)(active)(last_payout) - (depth)(children) - (net_rshares)(abs_rshares)(vote_rshares) - (children_abs_rshares)(cashout_time)(max_cashout_time) - (total_vote_weight)(reward_weight)(total_payout_value)(curator_payout_value)(author_rewards)(net_votes) - (root_author)(root_permlink) - (max_accepted_payout)(percent_steem_dollars)(allow_replies)(allow_votes)(allow_curation_rewards) - (beneficiaries) - ) - -FC_REFLECT( steem::plugins::database_api::api_comment_vote_object, - (id)(voter)(author)(permlink)(weight)(rshares)(vote_percent)(last_update)(num_changes) - ) - -FC_REFLECT( steem::plugins::database_api::api_account_object, - (id)(name)(owner)(active)(posting)(memo_key)(json_metadata)(proxy)(last_owner_update)(last_account_update) - (created)(mined) - (recovery_account)(last_account_recovery)(reset_account) - (comment_count)(lifetime_vote_count)(post_count)(can_vote)(voting_power)(last_vote_time) - (balance) - (savings_balance) - (sbd_balance)(sbd_seconds)(sbd_seconds_last_update)(sbd_last_interest_payment) - (savings_sbd_balance)(savings_sbd_seconds)(savings_sbd_seconds_last_update)(savings_sbd_last_interest_payment)(savings_withdraw_requests) - (reward_sbd_balance)(reward_steem_balance)(reward_vesting_balance)(reward_vesting_steem) - (vesting_shares)(delegated_vesting_shares)(received_vesting_shares)(vesting_withdraw_rate)(next_vesting_withdrawal)(withdrawn)(to_withdraw)(withdraw_routes) - (curation_rewards) - (posting_rewards) - (proxied_vsf_votes)(witnesses_voted_for) - (last_post)(last_root_post) - (is_smt) - ) - -FC_REFLECT( steem::plugins::database_api::api_owner_authority_history_object, - (id) - (account) - (previous_owner_authority) - (last_valid_time) - ) - -FC_REFLECT( steem::plugins::database_api::api_account_recovery_request_object, - (id) - (account_to_recover) - (new_owner_authority) - (expires) - ) - -FC_REFLECT( steem::plugins::database_api::api_savings_withdraw_object, - (id) - (from) - (to) - (memo) - (request_id) - (amount) - (complete) - ) - -FC_REFLECT( steem::plugins::database_api::api_feed_history_object, - (id) - (current_median_history) - (price_history) - ) - -FC_REFLECT( steem::plugins::database_api::api_witness_object, - (id) - (owner) - (created) - (url)(votes)(virtual_last_update)(virtual_position)(virtual_scheduled_time)(total_missed) - (last_aslot)(last_confirmed_block_num)(pow_worker)(signing_key) - (props) - (sbd_exchange_rate)(last_sbd_exchange_update) - (last_work) - (running_version) - (hardfork_version_vote)(hardfork_time_vote) - ) - -FC_REFLECT( steem::plugins::database_api::api_witness_schedule_object, - (id) - (current_virtual_time) - (next_shuffle_block_num) - (current_shuffled_witnesses) - (num_scheduled_witnesses) - (top19_weight) - (timeshare_weight) - (miner_weight) - (witness_pay_normalization_factor) - (median_props) - (majority_version) - (max_voted_witnesses) - (max_miner_witnesses) - (max_runner_witnesses) - (hardfork_required_witnesses) - ) - -FC_REFLECT_DERIVED( steem::plugins::database_api::api_signed_block_object, (steem::protocol::signed_block), - (block_id) - (signing_key) - (transaction_ids) - ) - -FC_REFLECT( steem::plugins::database_api::api_hardfork_property_object, - (id) - (processed_hardforks) - (last_hardfork) - (current_hardfork_version) - (next_hardfork) - (next_hardfork_time) - ) - -FC_REFLECT( steem::plugins::database_api::order, (order_price)(real_price)(steem)(sbd)(created) ); - -FC_REFLECT( steem::plugins::database_api::order_book, (asks)(bids) ); diff --git a/libraries/plugins/apis/debug_node_api/CMakeLists.txt b/libraries/plugins/apis/debug_node_api/CMakeLists.txt index 3036cbf2..d050d418 100644 --- a/libraries/plugins/apis/debug_node_api/CMakeLists.txt +++ b/libraries/plugins/apis/debug_node_api/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB HEADERS "include/steem/plugins/debug_node_api/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/debug_node_api/*.hpp") add_library( debug_node_api_plugin debug_node_api_plugin.cpp debug_node_api.cpp diff --git a/libraries/plugins/apis/debug_node_api/debug_node_api.cpp b/libraries/plugins/apis/debug_node_api/debug_node_api.cpp index 4862f4bb..7a78fdca 100644 --- a/libraries/plugins/apis/debug_node_api/debug_node_api.cpp +++ b/libraries/plugins/apis/debug_node_api/debug_node_api.cpp @@ -1,18 +1,18 @@ -#include -#include +#include +#include #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include -#include +#include -namespace steem { namespace plugins { namespace debug_node { +namespace sophiatx { namespace plugins { namespace debug_node { namespace detail { @@ -129,7 +129,7 @@ DEFINE_API_IMPL( debug_node_api_impl, debug_get_hardfork_property_object ) DEFINE_API_IMPL( debug_node_api_impl, debug_set_hardfork ) { - if( args.hardfork_id > STEEM_NUM_HARDFORKS ) + if( args.hardfork_id > SOPHIATX_NUM_HARDFORKS ) return {}; _debug_node.debug_update( [=]( chain::database& db ) @@ -154,7 +154,7 @@ DEFINE_API_IMPL( debug_node_api_impl, debug_get_json_schema ) debug_node_api::debug_node_api(): my( new detail::debug_node_api_impl() ) { - JSON_RPC_REGISTER_API( STEEM_DEBUG_NODE_API_PLUGIN_NAME ); + JSON_RPC_REGISTER_API( SOPHIATX_DEBUG_NODE_API_PLUGIN_NAME ); } debug_node_api::~debug_node_api() {} @@ -171,4 +171,4 @@ DEFINE_LOCKLESS_APIS( debug_node_api, (debug_get_json_schema) ) -} } } // steem::plugins::debug_node +} } } // sophiatx::plugins::debug_node diff --git a/libraries/plugins/apis/debug_node_api/debug_node_api_plugin.cpp b/libraries/plugins/apis/debug_node_api/debug_node_api_plugin.cpp index 9b9d41e3..53ddbf8b 100644 --- a/libraries/plugins/apis/debug_node_api/debug_node_api_plugin.cpp +++ b/libraries/plugins/apis/debug_node_api/debug_node_api_plugin.cpp @@ -1,8 +1,8 @@ -#include -#include +#include +#include -namespace steem { namespace plugins { namespace debug_node { +namespace sophiatx { namespace plugins { namespace debug_node { debug_node_api_plugin::debug_node_api_plugin() {} debug_node_api_plugin::~debug_node_api_plugin() {} @@ -17,4 +17,4 @@ void debug_node_api_plugin::plugin_initialize( const variables_map& options ) void debug_node_api_plugin::plugin_startup() {} void debug_node_api_plugin::plugin_shutdown() {} -} } } // steem::plugins::debug_node +} } } // sophiatx::plugins::debug_node diff --git a/libraries/plugins/apis/debug_node_api/include/steem/plugins/debug_node_api/debug_node_api.hpp b/libraries/plugins/apis/debug_node_api/include/sophiatx/plugins/debug_node_api/debug_node_api.hpp similarity index 76% rename from libraries/plugins/apis/debug_node_api/include/steem/plugins/debug_node_api/debug_node_api.hpp rename to libraries/plugins/apis/debug_node_api/include/sophiatx/plugins/debug_node_api/debug_node_api.hpp index 1879e150..b4306895 100644 --- a/libraries/plugins/apis/debug_node_api/include/steem/plugins/debug_node_api/debug_node_api.hpp +++ b/libraries/plugins/apis/debug_node_api/include/sophiatx/plugins/debug_node_api/debug_node_api.hpp @@ -1,15 +1,15 @@ #pragma once -#include -#include -#include +#include +#include +#include -#include +#include #include #include #include -namespace steem { namespace plugins { namespace debug_node { +namespace sophiatx { namespace plugins { namespace debug_node { using json_rpc::void_type; @@ -109,25 +109,25 @@ class debug_node_api std::unique_ptr< detail::debug_node_api_impl > my; }; -} } } // steem::plugins::debug_node +} } } // sophiatx::plugins::debug_node -FC_REFLECT( steem::plugins::debug_node::debug_push_blocks_args, +FC_REFLECT( sophiatx::plugins::debug_node::debug_push_blocks_args, (src_filename)(count)(skip_validate_invariants) ) -FC_REFLECT( steem::plugins::debug_node::debug_push_blocks_return, +FC_REFLECT( sophiatx::plugins::debug_node::debug_push_blocks_return, (blocks) ) -FC_REFLECT( steem::plugins::debug_node::debug_generate_blocks_until_args, +FC_REFLECT( sophiatx::plugins::debug_node::debug_generate_blocks_until_args, (debug_key)(head_block_time)(generate_sparsely) ) -FC_REFLECT( steem::plugins::debug_node::debug_pop_block_return, +FC_REFLECT( sophiatx::plugins::debug_node::debug_pop_block_return, (block) ) -FC_REFLECT( steem::plugins::debug_node::debug_set_hardfork_args, +FC_REFLECT( sophiatx::plugins::debug_node::debug_set_hardfork_args, (hardfork_id) ) -FC_REFLECT( steem::plugins::debug_node::debug_has_hardfork_return, +FC_REFLECT( sophiatx::plugins::debug_node::debug_has_hardfork_return, (has_hardfork) ) -FC_REFLECT( steem::plugins::debug_node::debug_get_json_schema_return, +FC_REFLECT( sophiatx::plugins::debug_node::debug_get_json_schema_return, (schema) ) diff --git a/libraries/plugins/apis/debug_node_api/include/steem/plugins/debug_node_api/debug_node_api_plugin.hpp b/libraries/plugins/apis/debug_node_api/include/sophiatx/plugins/debug_node_api/debug_node_api_plugin.hpp similarity index 59% rename from libraries/plugins/apis/debug_node_api/include/steem/plugins/debug_node_api/debug_node_api_plugin.hpp rename to libraries/plugins/apis/debug_node_api/include/sophiatx/plugins/debug_node_api/debug_node_api_plugin.hpp index 853932a2..8188825d 100644 --- a/libraries/plugins/apis/debug_node_api/include/steem/plugins/debug_node_api/debug_node_api_plugin.hpp +++ b/libraries/plugins/apis/debug_node_api/include/sophiatx/plugins/debug_node_api/debug_node_api_plugin.hpp @@ -1,13 +1,13 @@ #pragma once -#include -#include +#include +#include #include -#define STEEM_DEBUG_NODE_API_PLUGIN_NAME "debug_node_api" +#define SOPHIATX_DEBUG_NODE_API_PLUGIN_NAME "debug_node_api" -namespace steem { namespace plugins { namespace debug_node { +namespace sophiatx { namespace plugins { namespace debug_node { using namespace appbase; @@ -15,14 +15,14 @@ class debug_node_api_plugin : public appbase::plugin< debug_node_api_plugin > { public: APPBASE_PLUGIN_REQUIRES( - (steem::plugins::debug_node::debug_node_plugin) - (steem::plugins::json_rpc::json_rpc_plugin) + (sophiatx::plugins::debug_node::debug_node_plugin) + (sophiatx::plugins::json_rpc::json_rpc_plugin) ) debug_node_api_plugin(); virtual ~debug_node_api_plugin(); - static const std::string& name() { static std::string name = STEEM_DEBUG_NODE_API_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_DEBUG_NODE_API_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, options_description& cfg ) override; @@ -33,4 +33,4 @@ class debug_node_api_plugin : public appbase::plugin< debug_node_api_plugin > std::shared_ptr< class debug_node_api > api; }; -} } } // steem::plugins::debug_node +} } } // sophiatx::plugins::debug_node diff --git a/libraries/plugins/apis/follow_api/CMakeLists.txt b/libraries/plugins/apis/follow_api/CMakeLists.txt deleted file mode 100644 index 262357bd..00000000 --- a/libraries/plugins/apis/follow_api/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -file(GLOB HEADERS "include/steem/plugins/follow_api/*.hpp") -add_library( follow_api_plugin - follow_api_plugin.cpp - follow_api.cpp - ) - -target_link_libraries( follow_api_plugin follow_plugin database_api_plugin json_rpc_plugin ) -target_include_directories( follow_api_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) - -if( CLANG_TIDY_EXE ) - set_target_properties( - follow_api_plugin PROPERTIES - CXX_CLANG_TIDY "${DO_CLANG_TIDY}" - ) -endif( CLANG_TIDY_EXE ) - -install( TARGETS - follow_api_plugin - - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) diff --git a/libraries/plugins/apis/follow_api/follow_api.cpp b/libraries/plugins/apis/follow_api/follow_api.cpp deleted file mode 100644 index 3b409465..00000000 --- a/libraries/plugins/apis/follow_api/follow_api.cpp +++ /dev/null @@ -1,317 +0,0 @@ -#include -#include - -#include - -namespace steem { namespace plugins { namespace follow { - -namespace detail { - -inline void set_what( vector< follow::follow_type >& what, uint16_t bitmask ) -{ - if( bitmask & 1 << follow::blog ) - what.push_back( follow::blog ); - if( bitmask & 1 << follow::ignore ) - what.push_back( follow::ignore ); -} - -class follow_api_impl -{ - public: - follow_api_impl() : _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ) {} - - DECLARE_API_IMPL( - (get_followers) - (get_following) - (get_follow_count) - (get_feed_entries) - (get_feed) - (get_blog_entries) - (get_blog) - (get_account_reputations) - (get_reblogged_by) - (get_blog_authors) - ) - - chain::database& _db; -}; - -DEFINE_API_IMPL( follow_api_impl, get_followers ) -{ - FC_ASSERT( args.limit <= 1000 ); - - get_followers_return result; - result.followers.reserve( args.limit ); - - const auto& idx = _db.get_index< follow::follow_index >().indices().get< follow::by_following_follower >(); - auto itr = idx.lower_bound( std::make_tuple( args.account, args.start ) ); - while( itr != idx.end() && result.followers.size() < args.limit && itr->following == args.account ) - { - if( args.type == follow::undefined || itr->what & ( 1 << args.type ) ) - { - api_follow_object entry; - entry.follower = itr->follower; - entry.following = itr->following; - set_what( entry.what, itr->what ); - result.followers.push_back( entry ); - } - - ++itr; - } - - return result; -} - -DEFINE_API_IMPL( follow_api_impl, get_following ) -{ - FC_ASSERT( args.limit <= 1000 ); - - get_following_return result; - result.following.reserve( args.limit ); - - const auto& idx = _db.get_index< follow::follow_index >().indices().get< follow::by_follower_following >(); - auto itr = idx.lower_bound( std::make_tuple( args.account, args.start ) ); - while( itr != idx.end() && result.following.size() < args.limit && itr->follower == args.account ) - { - if( args.type == follow::undefined || itr->what & ( 1 << args.type ) ) - { - api_follow_object entry; - entry.follower = itr->follower; - entry.following = itr->following; - set_what( entry.what, itr->what ); - result.following.push_back( entry ); - } - - ++itr; - } - - return result; -} - -DEFINE_API_IMPL( follow_api_impl, get_follow_count ) -{ - get_follow_count_return result; - auto itr = _db.find< follow::follow_count_object, follow::by_account >( args.account ); - - if( itr != nullptr ) - result = get_follow_count_return{ itr->account, itr->follower_count, itr->following_count }; - else - result.account = args.account; - - return result; -} - -DEFINE_API_IMPL( follow_api_impl, get_feed_entries ) -{ - FC_ASSERT( args.limit <= 500, "Cannot retrieve more than 500 feed entries at a time." ); - - auto entry_id = args.start_entry_id == 0 ? ~0 : args.start_entry_id; - - get_feed_entries_return result; - result.feed.reserve( args.limit ); - - const auto& feed_idx = _db.get_index< follow::feed_index >().indices().get< follow::by_feed >(); - auto itr = feed_idx.lower_bound( boost::make_tuple( args.account, entry_id ) ); - - while( itr != feed_idx.end() && itr->account == args.account && result.feed.size() < args.limit ) - { - const auto& comment = _db.get( itr->comment ); - feed_entry entry; - entry.author = comment.author; - entry.permlink = chain::to_string( comment.permlink ); - entry.entry_id = itr->account_feed_id; - - if( itr->first_reblogged_by != account_name_type() ) - { - entry.reblog_by.reserve( itr->reblogged_by.size() ); - - for( const auto& a : itr->reblogged_by ) - entry.reblog_by.push_back(a); - - entry.reblog_on = itr->first_reblogged_on; - } - - result.feed.push_back( entry ); - ++itr; - } - - return result; -} - -DEFINE_API_IMPL( follow_api_impl, get_feed ) -{ - FC_ASSERT( args.limit <= 500, "Cannot retrieve more than 500 feed entries at a time." ); - - auto entry_id = args.start_entry_id == 0 ? ~0 : args.start_entry_id; - - get_feed_return result; - result.feed.reserve( args.limit ); - - const auto& feed_idx = _db.get_index< follow::feed_index >().indices().get< follow::by_feed >(); - auto itr = feed_idx.lower_bound( boost::make_tuple( args.account, entry_id ) ); - - while( itr != feed_idx.end() && itr->account == args.account && result.feed.size() < args.limit ) - { - const auto& comment = _db.get( itr->comment ); - comment_feed_entry entry; - entry.comment = database_api::api_comment_object( comment, _db ); - entry.entry_id = itr->account_feed_id; - - if( itr->first_reblogged_by != account_name_type() ) - { - entry.reblog_by.reserve( itr->reblogged_by.size() ); - - for( const auto& a : itr->reblogged_by ) - entry.reblog_by.push_back( a ); - - entry.reblog_on = itr->first_reblogged_on; - } - - result.feed.push_back( entry ); - ++itr; - } - - return result; -} - -DEFINE_API_IMPL( follow_api_impl, get_blog_entries ) -{ - FC_ASSERT( args.limit <= 500, "Cannot retrieve more than 500 blog entries at a time." ); - - auto entry_id = args.start_entry_id == 0 ? ~0 : args.start_entry_id; - - get_blog_entries_return result; - result.blog.reserve( args.limit ); - - const auto& blog_idx = _db.get_index< follow::blog_index >().indices().get< follow::by_blog >(); - auto itr = blog_idx.lower_bound( boost::make_tuple( args.account, entry_id ) ); - - while( itr != blog_idx.end() && itr->account == args.account && result.blog.size() < args.limit ) - { - const auto& comment = _db.get( itr->comment ); - blog_entry entry; - entry.author = comment.author; - entry.permlink = chain::to_string( comment.permlink ); - entry.blog = args.account; - entry.reblog_on = itr->reblogged_on; - entry.entry_id = itr->blog_feed_id; - - result.blog.push_back( entry ); - ++itr; - } - - return result; -} - -DEFINE_API_IMPL( follow_api_impl, get_blog ) -{ - FC_ASSERT( args.limit <= 500, "Cannot retrieve more than 500 blog entries at a time." ); - - auto entry_id = args.start_entry_id == 0 ? ~0 : args.start_entry_id; - - get_blog_return result; - result.blog.reserve( args.limit ); - - const auto& blog_idx = _db.get_index< follow::blog_index >().indices().get< follow::by_blog >(); - auto itr = blog_idx.lower_bound( boost::make_tuple( args.account, entry_id ) ); - - while( itr != blog_idx.end() && itr->account == args.account && result.blog.size() < args.limit ) - { - const auto& comment = _db.get( itr->comment ); - comment_blog_entry entry; - entry.comment = database_api::api_comment_object( comment, _db ); - entry.blog = args.account; - entry.reblog_on = itr->reblogged_on; - entry.entry_id = itr->blog_feed_id; - - result.blog.push_back( entry ); - ++itr; - } - - return result; -} - -DEFINE_API_IMPL( follow_api_impl, get_account_reputations ) -{ - FC_ASSERT( args.limit <= 1000, "Cannot retrieve more than 1000 account reputations at a time." ); - - const auto& acc_idx = _db.get_index< chain::account_index >().indices().get< chain::by_name >(); - const auto& rep_idx = _db.get_index< follow::reputation_index >().indices().get< follow::by_account >(); - - auto acc_itr = acc_idx.lower_bound( args.account_lower_bound ); - - get_account_reputations_return result; - result.reputations.reserve( args.limit ); - - while( acc_itr != acc_idx.end() && result.reputations.size() < args.limit ) - { - auto itr = rep_idx.find( acc_itr->name ); - account_reputation rep; - - rep.account = acc_itr->name; - rep.reputation = itr != rep_idx.end() ? itr->reputation : 0; - - result.reputations.push_back( rep ); - ++acc_itr; - } - - return result; -} - -DEFINE_API_IMPL( follow_api_impl, get_reblogged_by ) -{ - get_reblogged_by_return result; - - const auto& post = _db.get_comment( args.author, args.permlink ); - const auto& blog_idx = _db.get_index< follow::blog_index, follow::by_comment >(); - - auto itr = blog_idx.lower_bound( post.id ); - - while( itr != blog_idx.end() && itr->comment == post.id && result.accounts.size() < 2000 ) - { - result.accounts.push_back( itr->account ); - ++itr; - } - - return result; -} - -DEFINE_API_IMPL( follow_api_impl, get_blog_authors ) -{ - get_blog_authors_return result; - - const auto& stats_idx = _db.get_index< follow::blog_author_stats_index, follow::by_blogger_guest_count >(); - auto itr = stats_idx.lower_bound( args.blog_account ); - - while( itr != stats_idx.end() && itr->blogger == args.blog_account && result.blog_authors.size() < 2000 ) - { - result.blog_authors.push_back( reblog_count{ itr->guest, itr->count } ); - ++itr; - } - - return result; -} - -} // detail - -follow_api::follow_api(): my( new detail::follow_api_impl() ) -{ - JSON_RPC_REGISTER_API( STEEM_FOLLOW_API_PLUGIN_NAME ); -} - -follow_api::~follow_api() {} - -DEFINE_READ_APIS( follow_api, - (get_followers) - (get_following) - (get_follow_count) - (get_feed_entries) - (get_feed) - (get_blog_entries) - (get_blog) - (get_account_reputations) - (get_reblogged_by) - (get_blog_authors) -) - -} } } // steem::plugins::follow diff --git a/libraries/plugins/apis/follow_api/follow_api_plugin.cpp b/libraries/plugins/apis/follow_api/follow_api_plugin.cpp deleted file mode 100644 index 7f6bafe8..00000000 --- a/libraries/plugins/apis/follow_api/follow_api_plugin.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include - - -namespace steem { namespace plugins { namespace follow { - -follow_api_plugin::follow_api_plugin() {} -follow_api_plugin::~follow_api_plugin() {} - -void follow_api_plugin::set_program_options( options_description& cli, options_description& cfg ) {} - -void follow_api_plugin::plugin_initialize( const variables_map& options ) -{ - api = std::make_shared< follow_api >(); -} - -void follow_api_plugin::plugin_startup() {} -void follow_api_plugin::plugin_shutdown() {} - -} } } // steem::plugins::follow diff --git a/libraries/plugins/apis/follow_api/include/steem/plugins/follow_api/follow_api.hpp b/libraries/plugins/apis/follow_api/include/steem/plugins/follow_api/follow_api.hpp deleted file mode 100644 index be7897a1..00000000 --- a/libraries/plugins/apis/follow_api/include/steem/plugins/follow_api/follow_api.hpp +++ /dev/null @@ -1,271 +0,0 @@ -#pragma once -#include -#include -#include - -#include - -#include -#include -#include - -namespace steem { namespace plugins { namespace follow { - -using steem::protocol::account_name_type; - -namespace detail -{ - class follow_api_impl; -} - -struct feed_entry -{ - account_name_type author; - string permlink; - vector< account_name_type > reblog_by; - time_point_sec reblog_on; - uint32_t entry_id = 0; -}; - -struct comment_feed_entry -{ - database_api::api_comment_object comment; - vector< account_name_type > reblog_by; - time_point_sec reblog_on; - uint32_t entry_id = 0; -}; - -struct blog_entry -{ - account_name_type author; - string permlink; - account_name_type blog; - time_point_sec reblog_on; - uint32_t entry_id = 0; -}; - -struct comment_blog_entry -{ - database_api::api_comment_object comment; - string blog; - time_point_sec reblog_on; - uint32_t entry_id = 0; -}; - -struct account_reputation -{ - account_name_type account; - steem::protocol::share_type reputation; -}; - -struct api_follow_object -{ - account_name_type follower; - account_name_type following; - vector< follow::follow_type > what; -}; - -struct reblog_count -{ - account_name_type author; - uint32_t count; -}; - -struct get_followers_args -{ - account_name_type account; - account_name_type start; - follow::follow_type type; - uint32_t limit = 1000; -}; - -struct get_followers_return -{ - vector< api_follow_object > followers; -}; - -typedef get_followers_args get_following_args; - -struct get_following_return -{ - vector< api_follow_object > following; -}; - -struct get_follow_count_args -{ - account_name_type account; -}; - -struct get_follow_count_return -{ - account_name_type account; - uint32_t follower_count = 0; - uint32_t following_count = 0; -}; - -struct get_feed_entries_args -{ - account_name_type account; - uint32_t start_entry_id = 0; - uint32_t limit = 500; -}; - -struct get_feed_entries_return -{ - vector< feed_entry > feed; -}; - -typedef get_feed_entries_args get_feed_args; - -struct get_feed_return -{ - vector< comment_feed_entry > feed; -}; - -typedef get_feed_entries_args get_blog_entries_args; - -struct get_blog_entries_return -{ - vector< blog_entry > blog; -}; - -typedef get_feed_entries_args get_blog_args; - -struct get_blog_return -{ - vector< comment_blog_entry > blog; -}; - -struct get_account_reputations_args -{ - account_name_type account_lower_bound; - uint32_t limit = 1000; -}; - -struct get_account_reputations_return -{ - vector< account_reputation > reputations; -}; - -struct get_reblogged_by_args -{ - account_name_type author; - string permlink; -}; - -struct get_reblogged_by_return -{ - vector< account_name_type > accounts; -}; - -struct get_blog_authors_args -{ - account_name_type blog_account; -}; - -struct get_blog_authors_return -{ - vector< reblog_count > blog_authors; -}; - -class follow_api -{ - public: - follow_api(); - ~follow_api(); - - DECLARE_API( - (get_followers) - (get_following) - (get_follow_count) - (get_feed_entries) - (get_feed) - (get_blog_entries) - (get_blog) - (get_account_reputations) - - /** - * Gets list of accounts that have reblogged a particular post - */ - (get_reblogged_by) - - /** - * Gets a list of authors that have had their content reblogged on a given blog account - */ - (get_blog_authors) - ) - - private: - std::unique_ptr< detail::follow_api_impl > my; -}; - -} } } // steem::plugins::follow - -FC_REFLECT( steem::plugins::follow::feed_entry, - (author)(permlink)(reblog_by)(reblog_on)(entry_id) ); - -FC_REFLECT( steem::plugins::follow::comment_feed_entry, - (comment)(reblog_by)(reblog_on)(entry_id) ); - -FC_REFLECT( steem::plugins::follow::blog_entry, - (author)(permlink)(blog)(reblog_on)(entry_id) ); - -FC_REFLECT( steem::plugins::follow::comment_blog_entry, - (comment)(blog)(reblog_on)(entry_id) ); - -FC_REFLECT( steem::plugins::follow::account_reputation, - (account)(reputation) ); - -FC_REFLECT( steem::plugins::follow::api_follow_object, - (follower)(following)(what) ); - -FC_REFLECT( steem::plugins::follow::reblog_count, - (author)(count) ); - -FC_REFLECT( steem::plugins::follow::get_followers_args, - (account)(start)(type)(limit) ); - -FC_REFLECT( steem::plugins::follow::get_followers_return, - (followers) ); - -FC_REFLECT( steem::plugins::follow::get_following_return, - (following) ); - -FC_REFLECT( steem::plugins::follow::get_follow_count_args, - (account) ); - -FC_REFLECT( steem::plugins::follow::get_follow_count_return, - (account)(follower_count)(following_count) ); - -FC_REFLECT( steem::plugins::follow::get_feed_entries_args, - (account)(start_entry_id)(limit) ); - -FC_REFLECT( steem::plugins::follow::get_feed_entries_return, - (feed) ); - -FC_REFLECT( steem::plugins::follow::get_feed_return, - (feed) ); - -FC_REFLECT( steem::plugins::follow::get_blog_entries_return, - (blog) ); - -FC_REFLECT( steem::plugins::follow::get_blog_return, - (blog) ); - -FC_REFLECT( steem::plugins::follow::get_account_reputations_args, - (account_lower_bound)(limit) ); - -FC_REFLECT( steem::plugins::follow::get_account_reputations_return, - (reputations) ); - -FC_REFLECT( steem::plugins::follow::get_reblogged_by_args, - (author)(permlink) ); - -FC_REFLECT( steem::plugins::follow::get_reblogged_by_return, - (accounts) ); - -FC_REFLECT( steem::plugins::follow::get_blog_authors_args, - (blog_account) ); - -FC_REFLECT( steem::plugins::follow::get_blog_authors_return, - (blog_authors) ); diff --git a/libraries/plugins/apis/follow_api/include/steem/plugins/follow_api/follow_api_plugin.hpp b/libraries/plugins/apis/follow_api/include/steem/plugins/follow_api/follow_api_plugin.hpp deleted file mode 100644 index 2c50fe97..00000000 --- a/libraries/plugins/apis/follow_api/include/steem/plugins/follow_api/follow_api_plugin.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once -#include -#include - -#include - -#define STEEM_FOLLOW_API_PLUGIN_NAME "follow_api" - - -namespace steem { namespace plugins { namespace follow { - -using namespace appbase; - -class follow_api_plugin : public appbase::plugin< follow_api_plugin > -{ -public: - APPBASE_PLUGIN_REQUIRES( - (steem::plugins::follow::follow_plugin) - (steem::plugins::json_rpc::json_rpc_plugin) - ) - - follow_api_plugin(); - virtual ~follow_api_plugin(); - - static const std::string& name() { static std::string name = STEEM_FOLLOW_API_PLUGIN_NAME; return name; } - - virtual void set_program_options( options_description& cli, options_description& cfg ) override; - - virtual void plugin_initialize( const variables_map& options ) override; - virtual void plugin_startup() override; - virtual void plugin_shutdown() override; - - std::shared_ptr< class follow_api > api; -}; - -} } } // steem::plugins::follow diff --git a/libraries/plugins/apis/follow_api/plugin.json b/libraries/plugins/apis/follow_api/plugin.json deleted file mode 100644 index 8af5f414..00000000 --- a/libraries/plugins/apis/follow_api/plugin.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "plugin_name": "follow_api", - "plugin_namespace": "follow", - "plugin_project": "follow_api_plugin" -} diff --git a/libraries/plugins/apis/market_history_api/CMakeLists.txt b/libraries/plugins/apis/market_history_api/CMakeLists.txt deleted file mode 100644 index 7d041b9e..00000000 --- a/libraries/plugins/apis/market_history_api/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -file(GLOB HEADERS "include/steem/plugins/market_history_api/*.hpp") -add_library( market_history_api_plugin - market_history_api_plugin.cpp - market_history_api.cpp - ) - -target_link_libraries( market_history_api_plugin market_history_plugin json_rpc_plugin ) -target_include_directories( market_history_api_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) - -if( CLANG_TIDY_EXE ) - set_target_properties( - market_history_api_plugin PROPERTIES - CXX_CLANG_TIDY "${DO_CLANG_TIDY}" - ) -endif( CLANG_TIDY_EXE ) - -install( TARGETS - market_history_api_plugin - - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) diff --git a/libraries/plugins/apis/market_history_api/include/steem/plugins/market_history_api/market_history_api.hpp b/libraries/plugins/apis/market_history_api/include/steem/plugins/market_history_api/market_history_api.hpp deleted file mode 100644 index 97c6413f..00000000 --- a/libraries/plugins/apis/market_history_api/include/steem/plugins/market_history_api/market_history_api.hpp +++ /dev/null @@ -1,166 +0,0 @@ -#pragma once -#include -#include - -#include - -#include -#include -#include - - -namespace steem { namespace plugins { namespace market_history { - - -using steem::chain::share_type; -using steem::chain::asset; -using fc::time_point_sec; -using json_rpc::void_type; - - -typedef void_type get_ticker_args; - -struct get_ticker_return -{ - double latest = 0; - double lowest_ask = 0; - double highest_bid = 0; - double percent_change = 0; - asset steem_volume = asset( 0 , STEEM_SYMBOL ); - asset sbd_volume = asset( 0, SBD_SYMBOL ); -}; - -typedef void_type get_volume_args; - -struct get_volume_return -{ - asset steem_volume = asset( 0, STEEM_SYMBOL ); - asset sbd_volume = asset( 0, SBD_SYMBOL ); -}; - -struct order -{ - price order_price; - double real_price; - share_type steem; - share_type sbd; - time_point_sec created; -}; - -struct get_order_book_args -{ - uint32_t limit = 500; -}; - -struct get_order_book_return -{ - vector< order > bids; - vector< order > asks; -}; - -struct market_trade -{ - time_point_sec date; - asset current_pays; - asset open_pays; -}; - -struct get_trade_history_args -{ - time_point_sec start; - time_point_sec end; - uint32_t limit = 1000; -}; - -struct get_trade_history_return -{ - std::vector< market_trade > trades; -}; - -struct get_recent_trades_args -{ - uint32_t limit = 1000; -}; - -typedef get_trade_history_return get_recent_trades_return; - -struct get_market_history_args -{ - uint32_t bucket_seconds; - time_point_sec start; - time_point_sec end; -}; - -struct get_market_history_return -{ - std::vector< market_history::bucket_object > buckets; -}; - -typedef void_type get_market_history_buckets_args; - -struct get_market_history_buckets_return -{ - flat_set< uint32_t > bucket_sizes; -}; - - -namespace detail { class market_history_api_impl; } - - -class market_history_api -{ - public: - market_history_api(); - ~market_history_api(); - - DECLARE_API( - (get_ticker) - (get_volume) - (get_order_book) - (get_trade_history) - (get_recent_trades) - (get_market_history) - (get_market_history_buckets) - ) - - private: - std::unique_ptr< detail::market_history_api_impl > my; -}; - -} } } // steem::plugins::market_history - -FC_REFLECT( steem::plugins::market_history::get_ticker_return, - (latest)(lowest_ask)(highest_bid)(percent_change)(steem_volume)(sbd_volume) ) - -FC_REFLECT( steem::plugins::market_history::get_volume_return, - (steem_volume)(sbd_volume) ) - -FC_REFLECT( steem::plugins::market_history::order, - (order_price)(real_price)(steem)(sbd)(created) ) - -FC_REFLECT( steem::plugins::market_history::get_order_book_args, - (limit) ) - -FC_REFLECT( steem::plugins::market_history::get_order_book_return, - (bids)(asks) ) - -FC_REFLECT( steem::plugins::market_history::market_trade, - (date)(current_pays)(open_pays) ) - -FC_REFLECT( steem::plugins::market_history::get_trade_history_args, - (start)(end)(limit) ) - -FC_REFLECT( steem::plugins::market_history::get_trade_history_return, - (trades) ) - -FC_REFLECT( steem::plugins::market_history::get_recent_trades_args, - (limit) ) - -FC_REFLECT( steem::plugins::market_history::get_market_history_args, - (bucket_seconds)(start)(end) ) - -FC_REFLECT( steem::plugins::market_history::get_market_history_return, - (buckets) ) - -FC_REFLECT( steem::plugins::market_history::get_market_history_buckets_return, - (bucket_sizes) ) diff --git a/libraries/plugins/apis/market_history_api/include/steem/plugins/market_history_api/market_history_api_plugin.hpp b/libraries/plugins/apis/market_history_api/include/steem/plugins/market_history_api/market_history_api_plugin.hpp deleted file mode 100644 index 80e16e43..00000000 --- a/libraries/plugins/apis/market_history_api/include/steem/plugins/market_history_api/market_history_api_plugin.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once -#include -#include - -#include - -#define STEEM_MARKET_HISTORY_API_PLUGIN_NAME "market_history_api" - - -namespace steem { namespace plugins { namespace market_history { - -using namespace appbase; - -class market_history_api_plugin : public appbase::plugin< market_history_api_plugin > -{ -public: - APPBASE_PLUGIN_REQUIRES( - (steem::plugins::market_history::market_history_plugin) - (steem::plugins::json_rpc::json_rpc_plugin) - ) - - market_history_api_plugin(); - virtual ~market_history_api_plugin(); - - static const std::string& name() { static std::string name = STEEM_MARKET_HISTORY_API_PLUGIN_NAME; return name; } - - virtual void set_program_options( options_description& cli, options_description& cfg ) override; - - virtual void plugin_initialize( const variables_map& options ) override; - virtual void plugin_startup() override; - virtual void plugin_shutdown() override; - - std::shared_ptr< class market_history_api > api; -}; - -} } } // steem::plugins::market_history diff --git a/libraries/plugins/apis/market_history_api/market_history_api.cpp b/libraries/plugins/apis/market_history_api/market_history_api.cpp deleted file mode 100644 index 26a4e37d..00000000 --- a/libraries/plugins/apis/market_history_api/market_history_api.cpp +++ /dev/null @@ -1,205 +0,0 @@ -#include -#include - -#include - -#define ASSET_TO_REAL( asset ) (double)( asset.amount.value ) - -namespace steem { namespace plugins { namespace market_history { - -namespace detail { - -using namespace steem::plugins::market_history; - -class market_history_api_impl -{ - public: - market_history_api_impl() : _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ) {} - - DECLARE_API_IMPL( - (get_ticker) - (get_volume) - (get_order_book) - (get_trade_history) - (get_recent_trades) - (get_market_history) - (get_market_history_buckets) - ) - - chain::database& _db; -}; - -DEFINE_API_IMPL( market_history_api_impl, get_ticker ) -{ - get_ticker_return result; - - const auto& bucket_idx = _db.get_index< bucket_index, by_bucket >(); - auto itr = bucket_idx.lower_bound( boost::make_tuple( 0, _db.head_block_time() - 86400 ) ); - - if( itr != bucket_idx.end() ) - { - auto open = ASSET_TO_REAL( asset( itr->non_steem.open, SBD_SYMBOL ) ) / ASSET_TO_REAL( asset( itr->steem.open, STEEM_SYMBOL ) ); - itr = bucket_idx.lower_bound( boost::make_tuple( 0, _db.head_block_time() ) ); - result.latest = ASSET_TO_REAL( asset( itr->non_steem.close, SBD_SYMBOL ) ) / ASSET_TO_REAL( asset( itr->steem.close, STEEM_SYMBOL ) ); - result.percent_change = ( (result.latest - open ) / open ) * 100; - } - - auto orders = get_order_book( get_order_book_args{ 1 } ); - if( orders.bids.empty() == false) - result.highest_bid = orders.bids[0].real_price; - if( orders.asks.empty() == false) - result.lowest_ask = orders.asks[0].real_price; - - auto volume = get_volume( get_volume_args() ); - result.steem_volume = volume.steem_volume; - result.sbd_volume = volume.sbd_volume; - - return result; -} - -DEFINE_API_IMPL( market_history_api_impl, get_volume ) -{ - const auto& bucket_idx = _db.get_index< bucket_index, by_bucket >(); - auto itr = bucket_idx.lower_bound( boost::make_tuple( 0, _db.head_block_time() - 86400 ) ); - get_volume_return result; - - if( itr == bucket_idx.end() ) - return result; - - uint32_t bucket_size = itr->seconds; - do - { - result.steem_volume.amount += itr->steem.volume; - result.sbd_volume.amount += itr->non_steem.volume; - - ++itr; - } while( itr != bucket_idx.end() && itr->seconds == bucket_size ); - - return result; -} - -DEFINE_API_IMPL( market_history_api_impl, get_order_book ) -{ - FC_ASSERT( args.limit <= 500 ); - - const auto& order_idx = _db.get_index< chain::limit_order_index, chain::by_price >(); - auto itr = order_idx.lower_bound( price::max( SBD_SYMBOL, STEEM_SYMBOL ) ); - - get_order_book_return result; - - while( itr != order_idx.end() && itr->sell_price.base.symbol == SBD_SYMBOL && result.bids.size() < args.limit ) - { - order cur; - cur.order_price = itr->sell_price; - cur.real_price = ASSET_TO_REAL( itr->sell_price.base ) / ASSET_TO_REAL( itr->sell_price.quote ); - cur.steem = ( asset( itr->for_sale, SBD_SYMBOL ) * itr->sell_price ).amount; - cur.sbd = itr->for_sale; - cur.created = itr->created; - result.bids.push_back( cur ); - ++itr; - } - - itr = order_idx.lower_bound( price::max( STEEM_SYMBOL, SBD_SYMBOL ) ); - - while( itr != order_idx.end() && itr->sell_price.base.symbol == STEEM_SYMBOL && result.asks.size() < args.limit ) - { - order cur; - cur.order_price = itr->sell_price; - cur.real_price = ASSET_TO_REAL( itr->sell_price.quote ) / ASSET_TO_REAL( itr->sell_price.base ); - cur.steem = itr->for_sale; - cur.sbd = ( asset( itr->for_sale, STEEM_SYMBOL ) * itr->sell_price ).amount; - cur.created = itr->created; - result.asks.push_back( cur ); - ++itr; - } - - return result; -} - -DEFINE_API_IMPL( market_history_api_impl, get_trade_history ) -{ - FC_ASSERT( args.limit <= 1000 ); - const auto& bucket_idx = _db.get_index< order_history_index, by_time >(); - auto itr = bucket_idx.lower_bound( args.start ); - - get_trade_history_return result; - - while( itr != bucket_idx.end() && itr->time <= args.end && result.trades.size() < args.limit ) - { - market_trade trade; - trade.date = itr->time; - trade.current_pays = itr->op.current_pays; - trade.open_pays = itr->op.open_pays; - result.trades.push_back( trade ); - ++itr; - } - - return result; -} - -DEFINE_API_IMPL( market_history_api_impl, get_recent_trades ) -{ - FC_ASSERT( args.limit <= 1000 ); - const auto& order_idx = _db.get_index< order_history_index, by_time >(); - auto itr = order_idx.rbegin(); - - get_recent_trades_return result; - - while( itr != order_idx.rend() && result.trades.size() < args.limit ) - { - market_trade trade; - trade.date = itr->time; - trade.current_pays = itr->op.current_pays; - trade.open_pays = itr->op.open_pays; - result.trades.push_back( trade ); - ++itr; - } - - return result; -} - -DEFINE_API_IMPL( market_history_api_impl, get_market_history ) -{ - const auto& bucket_idx = _db.get_index< bucket_index, by_bucket >(); - auto itr = bucket_idx.lower_bound( boost::make_tuple( args.bucket_seconds, args.start ) ); - - get_market_history_return result; - - while( itr != bucket_idx.end() && itr->seconds == args.bucket_seconds && itr->open < args.end ) - { - result.buckets.push_back( *itr ); - - ++itr; - } - - return result; -} - -DEFINE_API_IMPL( market_history_api_impl, get_market_history_buckets ) -{ - get_market_history_buckets_return result; - result.bucket_sizes = appbase::app().get_plugin< steem::plugins::market_history::market_history_plugin >().get_tracked_buckets(); - return result; -} - - -} // detail - -market_history_api::market_history_api(): my( new detail::market_history_api_impl() ) -{ - JSON_RPC_REGISTER_API( STEEM_MARKET_HISTORY_API_PLUGIN_NAME ); -} - -market_history_api::~market_history_api() {} - -DEFINE_READ_APIS( market_history_api, - (get_ticker) - (get_volume) - (get_order_book) - (get_trade_history) - (get_recent_trades) - (get_market_history) - (get_market_history_buckets) -) - -} } } // steem::plugins::market_history diff --git a/libraries/plugins/apis/market_history_api/market_history_api_plugin.cpp b/libraries/plugins/apis/market_history_api/market_history_api_plugin.cpp deleted file mode 100644 index 1bb8485f..00000000 --- a/libraries/plugins/apis/market_history_api/market_history_api_plugin.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include - - -namespace steem { namespace plugins { namespace market_history { - -market_history_api_plugin::market_history_api_plugin() {} -market_history_api_plugin::~market_history_api_plugin() {} - -void market_history_api_plugin::set_program_options( options_description& cli, options_description& cfg ) {} - -void market_history_api_plugin::plugin_initialize( const variables_map& options ) -{ - api = std::make_shared< market_history_api >(); -} - -void market_history_api_plugin::plugin_startup() {} -void market_history_api_plugin::plugin_shutdown() {} - -} } } // steem::plugins::market_history diff --git a/libraries/plugins/apis/market_history_api/plugin.json b/libraries/plugins/apis/market_history_api/plugin.json deleted file mode 100644 index dd8712fc..00000000 --- a/libraries/plugins/apis/market_history_api/plugin.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "plugin_name": "market_history_api", - "plugin_namespace": "market_history", - "plugin_project": "market_history_api_plugin" -} diff --git a/libraries/plugins/apis/network_broadcast_api/CMakeLists.txt b/libraries/plugins/apis/network_broadcast_api/CMakeLists.txt index c1851e7e..66022580 100644 --- a/libraries/plugins/apis/network_broadcast_api/CMakeLists.txt +++ b/libraries/plugins/apis/network_broadcast_api/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB HEADERS "include/steem/plugins/network_broadcast_api_plugin/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/network_broadcast_api_plugin/*.hpp") add_library( network_broadcast_api_plugin network_broadcast_api.cpp network_broadcast_api_plugin.cpp @@ -21,4 +21,4 @@ install( TARGETS LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) -install( FILES ${HEADERS} DESTINATION "include/steem/network_broadcast_api_plugin" ) +install( FILES ${HEADERS} DESTINATION "include/sophiatx/network_broadcast_api_plugin" ) diff --git a/libraries/plugins/apis/network_broadcast_api/include/steem/plugins/network_broadcast_api/network_broadcast_api.hpp b/libraries/plugins/apis/network_broadcast_api/include/sophiatx/plugins/network_broadcast_api/network_broadcast_api.hpp similarity index 66% rename from libraries/plugins/apis/network_broadcast_api/include/steem/plugins/network_broadcast_api/network_broadcast_api.hpp rename to libraries/plugins/apis/network_broadcast_api/include/sophiatx/plugins/network_broadcast_api/network_broadcast_api.hpp index 6d8a7205..74c387dd 100644 --- a/libraries/plugins/apis/network_broadcast_api/include/steem/plugins/network_broadcast_api/network_broadcast_api.hpp +++ b/libraries/plugins/apis/network_broadcast_api/include/sophiatx/plugins/network_broadcast_api/network_broadcast_api.hpp @@ -1,9 +1,9 @@ #pragma once -#include +#include -#include -#include -#include +#include +#include +#include #include #include @@ -11,16 +11,16 @@ #include -namespace steem { namespace plugins { namespace network_broadcast_api { +namespace sophiatx { namespace plugins { namespace network_broadcast_api { using std::vector; using fc::variant; using fc::optional; -using steem::plugins::json_rpc::void_type; +using sophiatx::plugins::json_rpc::void_type; -using steem::protocol::signed_transaction; -using steem::protocol::transaction_id_type; -using steem::protocol::signed_block; +using sophiatx::protocol::signed_transaction; +using sophiatx::protocol::transaction_id_type; +using sophiatx::protocol::signed_block; struct broadcast_transaction_args { @@ -71,13 +71,13 @@ class network_broadcast_api std::unique_ptr< detail::network_broadcast_api_impl > my; }; -} } } // steem::plugins::network_broadcast_api +} } } // sophiatx::plugins::network_broadcast_api -FC_REFLECT( steem::plugins::network_broadcast_api::broadcast_transaction_args, +FC_REFLECT( sophiatx::plugins::network_broadcast_api::broadcast_transaction_args, (trx)(max_block_age) ) -FC_REFLECT( steem::plugins::network_broadcast_api::broadcast_block_args, +FC_REFLECT( sophiatx::plugins::network_broadcast_api::broadcast_block_args, (block) ) -FC_REFLECT( steem::plugins::network_broadcast_api::broadcast_transaction_synchronous_return, +FC_REFLECT( sophiatx::plugins::network_broadcast_api::broadcast_transaction_synchronous_return, (id)(block_num)(trx_num)(expired) ) diff --git a/libraries/plugins/apis/network_broadcast_api/include/steem/plugins/network_broadcast_api/network_broadcast_api_plugin.hpp b/libraries/plugins/apis/network_broadcast_api/include/sophiatx/plugins/network_broadcast_api/network_broadcast_api_plugin.hpp similarity index 55% rename from libraries/plugins/apis/network_broadcast_api/include/steem/plugins/network_broadcast_api/network_broadcast_api_plugin.hpp rename to libraries/plugins/apis/network_broadcast_api/include/sophiatx/plugins/network_broadcast_api/network_broadcast_api_plugin.hpp index 534f75ce..00f5830e 100644 --- a/libraries/plugins/apis/network_broadcast_api/include/steem/plugins/network_broadcast_api/network_broadcast_api_plugin.hpp +++ b/libraries/plugins/apis/network_broadcast_api/include/sophiatx/plugins/network_broadcast_api/network_broadcast_api_plugin.hpp @@ -1,13 +1,13 @@ #pragma once -#include -#include -#include +#include +#include +#include #include -#define STEEM_NETWORK_BROADCAST_API_PLUGIN_NAME "network_broadcast_api" +#define SOPHIATX_NETWORK_BROADCAST_API_PLUGIN_NAME "network_broadcast_api" -namespace steem { namespace plugins { namespace network_broadcast_api { +namespace sophiatx { namespace plugins { namespace network_broadcast_api { using namespace appbase; @@ -15,15 +15,15 @@ class network_broadcast_api_plugin : public appbase::plugin< network_broadcast_a { public: APPBASE_PLUGIN_REQUIRES( - (steem::plugins::json_rpc::json_rpc_plugin) - (steem::plugins::chain::chain_plugin) - (steem::plugins::p2p::p2p_plugin) + (sophiatx::plugins::json_rpc::json_rpc_plugin) + (sophiatx::plugins::chain::chain_plugin) + (sophiatx::plugins::p2p::p2p_plugin) ) network_broadcast_api_plugin(); virtual ~network_broadcast_api_plugin(); - static const std::string& name() { static std::string name = STEEM_NETWORK_BROADCAST_API_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_NETWORK_BROADCAST_API_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, options_description& cfg ) override; virtual void plugin_initialize( const variables_map& options ) override; @@ -33,4 +33,4 @@ class network_broadcast_api_plugin : public appbase::plugin< network_broadcast_a std::shared_ptr< class network_broadcast_api > api; }; -} } } // steem::plugins::network_broadcast_api +} } } // sophiatx::plugins::network_broadcast_api diff --git a/libraries/plugins/apis/network_broadcast_api/network_broadcast_api.cpp b/libraries/plugins/apis/network_broadcast_api/network_broadcast_api.cpp index bb2b9731..5f5718ac 100644 --- a/libraries/plugins/apis/network_broadcast_api/network_broadcast_api.cpp +++ b/libraries/plugins/apis/network_broadcast_api/network_broadcast_api.cpp @@ -1,12 +1,12 @@ -#include -#include +#include +#include #include #include #include -namespace steem { namespace plugins { namespace network_broadcast_api { +namespace sophiatx { namespace plugins { namespace network_broadcast_api { namespace detail { @@ -14,8 +14,8 @@ namespace detail { public: network_broadcast_api_impl() : - _p2p( appbase::app().get_plugin< steem::plugins::p2p::p2p_plugin >() ), - _chain( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >() ) + _p2p( appbase::app().get_plugin< sophiatx::plugins::p2p::p2p_plugin >() ), + _chain( appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >() ) { _on_applied_block_connection = _chain.db().applied_block.connect( 0, [&]( const signed_block& b ){ on_applied_block( b ); } ); @@ -31,8 +31,8 @@ namespace detail void on_applied_block( const signed_block& b ); - steem::plugins::p2p::p2p_plugin& _p2p; - steem::plugins::chain::chain_plugin& _chain; + sophiatx::plugins::p2p::p2p_plugin& _p2p; + sophiatx::plugins::chain::chain_plugin& _chain; map< transaction_id_type, confirmation_callback > _callbacks; map< time_point_sec, vector< transaction_id_type > > _callback_expirations; boost::signals2::connection _on_applied_block_connection; @@ -174,7 +174,7 @@ namespace detail network_broadcast_api::network_broadcast_api() : my( new detail::network_broadcast_api_impl() ) { - JSON_RPC_REGISTER_API( STEEM_NETWORK_BROADCAST_API_PLUGIN_NAME ); + JSON_RPC_REGISTER_API( SOPHIATX_NETWORK_BROADCAST_API_PLUGIN_NAME ); } network_broadcast_api::~network_broadcast_api() {} @@ -185,4 +185,4 @@ DEFINE_LOCKLESS_APIS( network_broadcast_api, (broadcast_block) ) -} } } // steem::plugins::network_broadcast_api +} } } // sophiatx::plugins::network_broadcast_api diff --git a/libraries/plugins/apis/network_broadcast_api/network_broadcast_api_plugin.cpp b/libraries/plugins/apis/network_broadcast_api/network_broadcast_api_plugin.cpp index 1b72114a..79cf916e 100644 --- a/libraries/plugins/apis/network_broadcast_api/network_broadcast_api_plugin.cpp +++ b/libraries/plugins/apis/network_broadcast_api/network_broadcast_api_plugin.cpp @@ -1,7 +1,7 @@ -#include -#include +#include +#include -namespace steem { namespace plugins { namespace network_broadcast_api { +namespace sophiatx { namespace plugins { namespace network_broadcast_api { network_broadcast_api_plugin::network_broadcast_api_plugin() {} network_broadcast_api_plugin::~network_broadcast_api_plugin() {} @@ -16,4 +16,4 @@ void network_broadcast_api_plugin::plugin_initialize( const variables_map& optio void network_broadcast_api_plugin::plugin_startup() {} void network_broadcast_api_plugin::plugin_shutdown() {} -} } } // steem::plugins::test_api +} } } // sophiatx::plugins::test_api diff --git a/libraries/plugins/apis/tags_api/CMakeLists.txt b/libraries/plugins/apis/tags_api/CMakeLists.txt deleted file mode 100644 index 707313db..00000000 --- a/libraries/plugins/apis/tags_api/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -file(GLOB HEADERS "include/steem/plugins/tags_api/*.hpp") -add_library( tags_api_plugin - tags_api_plugin.cpp - tags_api.cpp - ) - -target_link_libraries( tags_api_plugin tags_plugin follow_api_plugin json_rpc_plugin ) -target_include_directories( tags_api_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) - -if( CLANG_TIDY_EXE ) - set_target_properties( - tags_api_plugin PROPERTIES - CXX_CLANG_TIDY "${DO_CLANG_TIDY}" - ) -endif( CLANG_TIDY_EXE ) - -install( TARGETS - tags_api_plugin - - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) diff --git a/libraries/plugins/apis/tags_api/include/steem/plugins/tags_api/tags_api.hpp b/libraries/plugins/apis/tags_api/include/steem/plugins/tags_api/tags_api.hpp deleted file mode 100644 index 7a3adff5..00000000 --- a/libraries/plugins/apis/tags_api/include/steem/plugins/tags_api/tags_api.hpp +++ /dev/null @@ -1,281 +0,0 @@ -#pragma once -#include -#include -#include - -#include -#include - -#include -#include -#include - -namespace steem { namespace plugins { namespace tags { - -using steem::protocol::share_type; -using steem::protocol::asset; -using steem::protocol::account_name_type; -using fc::time_point_sec; - -namespace detail { class tags_api_impl; } - -struct api_tag_object -{ - api_tag_object( const tag_stats_object& o ) : - name( o.tag ), - total_payouts( o.total_payout ), - net_votes( o.net_votes ), - top_posts( o.top_posts ), - comments( o.comments ), - trending( o.total_trending ) {} - - api_tag_object() {} - - string name; - asset total_payouts; - int32_t net_votes = 0; - uint32_t top_posts = 0; - uint32_t comments = 0; - fc::uint128 trending = 0; -}; - -struct vote_state -{ - string voter; - uint64_t weight = 0; - int64_t rshares = 0; - int16_t percent = 0; - share_type reputation = 0; - time_point_sec time; -}; - -struct discussion : public database_api::api_comment_object -{ - discussion( const steem::chain::comment_object& o, const steem::chain::database& db ) : - database_api::api_comment_object( o, db ) {} - - discussion(){} - - string url; /// /category/@rootauthor/root_permlink#author/permlink - string root_title; - asset pending_payout_value; ///< sbd - asset total_pending_payout_value; ///< sbd including replies - vector< vote_state > active_votes; - vector< string > replies; ///< author/slug mapping - share_type author_reputation = 0; - asset promoted = asset(0, SBD_SYMBOL); - uint32_t body_length = 0; - vector< account_name_type > reblogged_by; - optional< account_name_type > first_reblogged_by; - optional< time_point_sec > first_reblogged_on; -}; - -struct get_trending_tags_args -{ - string start_tag; - uint32_t limit = 100; -}; - -struct get_trending_tags_return -{ - vector< api_tag_object > tags; -}; - -struct get_tags_used_by_author_args -{ - account_name_type author; -}; - -struct tag_count_object -{ - string tag; - uint32_t count; -}; - -struct get_tags_used_by_author_return -{ - vector< tag_count_object > tags; -}; - -struct get_discussion_args -{ - account_name_type author; - string permlink; -}; - -typedef discussion get_discussion_return; - -struct discussion_query -{ - void validate() const - { - FC_ASSERT( filter_tags.find(tag) == filter_tags.end() ); - FC_ASSERT( limit <= 100 ); - } - - string tag; - uint32_t limit = 0; - set< string > filter_tags; - set< string > select_authors; ///< list of authors to include, posts not by this author are filtered - set< string > select_tags; ///< list of tags to include, posts without these tags are filtered - uint32_t truncate_body = 0; ///< the number of bytes of the post body to return, 0 for all - optional< string > start_author; - optional< string > start_permlink; - optional< string > parent_author; - optional< string > parent_permlink; -}; - -struct discussion_query_result -{ - vector< discussion > discussions; -}; - -typedef get_discussion_args get_content_replies_args; -typedef discussion_query_result get_content_replies_return; - -typedef discussion_query get_post_discussions_by_payout_args; -typedef discussion_query_result get_post_discussions_by_payout_return; - -typedef discussion_query get_comment_discussions_by_payout_args; -typedef discussion_query_result get_comment_discussions_by_payout_return; - -typedef discussion_query get_discussions_by_trending_args; -typedef discussion_query_result get_discussions_by_trending_return; - -typedef discussion_query get_discussions_by_created_args; -typedef discussion_query_result get_discussions_by_created_return; - -typedef discussion_query get_discussions_by_active_args; -typedef discussion_query_result get_discussions_by_active_return; - -typedef discussion_query get_discussions_by_cashout_args; -typedef discussion_query_result get_discussions_by_cashout_return; - -typedef discussion_query get_discussions_by_votes_args; -typedef discussion_query_result get_discussions_by_votes_return; - -typedef discussion_query get_discussions_by_children_args; -typedef discussion_query_result get_discussions_by_children_return; - -typedef discussion_query get_discussions_by_hot_args; -typedef discussion_query_result get_discussions_by_hot_return; - -typedef discussion_query get_discussions_by_feed_args; -typedef discussion_query_result get_discussions_by_feed_return; - -typedef discussion_query get_discussions_by_blog_args; -typedef discussion_query_result get_discussions_by_blog_return; - -typedef discussion_query get_discussions_by_comments_args; -typedef discussion_query_result get_discussions_by_comments_return; - -typedef discussion_query get_discussions_by_promoted_args; -typedef discussion_query_result get_discussions_by_promoted_return; - -struct get_replies_by_last_update_args -{ - account_name_type start_parent_author; - string start_permlink; - uint32_t limit = 100; -}; - -typedef discussion_query_result get_replies_by_last_update_return; - -struct get_discussions_by_author_before_date_args -{ - account_name_type author; - string start_permlink; - time_point_sec before_date; - uint32_t limit = 100; -}; - -typedef discussion_query_result get_discussions_by_author_before_date_return; - -typedef get_discussion_args get_active_votes_args; - -struct get_active_votes_return -{ - vector< vote_state > votes; -}; - -class tags_api -{ - public: - tags_api(); - ~tags_api(); - - DECLARE_API( - (get_trending_tags) - (get_tags_used_by_author) - (get_discussion) - (get_content_replies) - (get_post_discussions_by_payout) - (get_comment_discussions_by_payout) - (get_discussions_by_trending) - (get_discussions_by_created) - (get_discussions_by_active) - (get_discussions_by_cashout) - (get_discussions_by_votes) - (get_discussions_by_children) - (get_discussions_by_hot) - (get_discussions_by_feed) - (get_discussions_by_blog) - (get_discussions_by_comments) - (get_discussions_by_promoted) - (get_replies_by_last_update) - (get_discussions_by_author_before_date) - (get_active_votes) - ) - - void set_pending_payout( discussion& d ); - - private: - friend class tags_api_plugin; - void api_startup(); - - std::unique_ptr< detail::tags_api_impl > my; -}; - -} } } // steem::plugins::tags - -FC_REFLECT( steem::plugins::tags::api_tag_object, - (name)(total_payouts)(net_votes)(top_posts)(comments)(trending) ) - -FC_REFLECT( steem::plugins::tags::vote_state, - (voter)(weight)(rshares)(percent)(reputation)(time) ) - -FC_REFLECT_DERIVED( steem::plugins::tags::discussion, (steem::plugins::database_api::api_comment_object), - (url)(root_title)(pending_payout_value)(total_pending_payout_value)(active_votes)(replies)(author_reputation)(promoted)(body_length)(reblogged_by)(first_reblogged_by)(first_reblogged_on) ) - -FC_REFLECT( steem::plugins::tags::get_trending_tags_args, - (start_tag)(limit) ) - -FC_REFLECT( steem::plugins::tags::get_trending_tags_return, - (tags) ) - -FC_REFLECT( steem::plugins::tags::get_tags_used_by_author_args, - (author) ) - -FC_REFLECT( steem::plugins::tags::tag_count_object, - (tag)(count) ) - -FC_REFLECT( steem::plugins::tags::get_tags_used_by_author_return, - (tags) ) - -FC_REFLECT( steem::plugins::tags::get_discussion_args, - (author)(permlink) ) - -FC_REFLECT( steem::plugins::tags::discussion_query, - (tag)(limit)(filter_tags)(select_authors)(select_tags)(truncate_body)(start_author)(start_permlink)(parent_author)(parent_permlink) ) - -FC_REFLECT( steem::plugins::tags::discussion_query_result, - (discussions) ) - -FC_REFLECT( steem::plugins::tags::get_replies_by_last_update_args, - (start_parent_author)(start_permlink)(limit) ) - -FC_REFLECT( steem::plugins::tags::get_discussions_by_author_before_date_args, - (author)(start_permlink)(before_date)(limit) ) - -FC_REFLECT( steem::plugins::tags::get_active_votes_return, - (votes) ) diff --git a/libraries/plugins/apis/tags_api/include/steem/plugins/tags_api/tags_api_plugin.hpp b/libraries/plugins/apis/tags_api/include/steem/plugins/tags_api/tags_api_plugin.hpp deleted file mode 100644 index 77f6f063..00000000 --- a/libraries/plugins/apis/tags_api/include/steem/plugins/tags_api/tags_api_plugin.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once -#include -#include - -#include - -#define STEEM_TAGS_API_PLUGIN_NAME "tags_api" - - -namespace steem { namespace plugins { namespace tags { - -using namespace appbase; - -class tags_api_plugin : public appbase::plugin< tags_api_plugin > -{ -public: - APPBASE_PLUGIN_REQUIRES( - (steem::plugins::tags::tags_plugin) - (steem::plugins::json_rpc::json_rpc_plugin) - ) - - tags_api_plugin(); - virtual ~tags_api_plugin(); - - static const std::string& name() { static std::string name = STEEM_TAGS_API_PLUGIN_NAME; return name; } - - virtual void set_program_options( options_description& cli, options_description& cfg ) override; - - virtual void plugin_initialize( const variables_map& options ) override; - virtual void plugin_startup() override; - virtual void plugin_shutdown() override; - - std::shared_ptr< class tags_api > api; -}; - -} } } // steem::plugins::tags diff --git a/libraries/plugins/apis/tags_api/plugin.json b/libraries/plugins/apis/tags_api/plugin.json deleted file mode 100644 index 485e3972..00000000 --- a/libraries/plugins/apis/tags_api/plugin.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "plugin_name": "tags_api", - "plugin_namespace": "tags", - "plugin_project": "tags_api_plugin" -} diff --git a/libraries/plugins/apis/tags_api/tags_api.cpp b/libraries/plugins/apis/tags_api/tags_api.cpp deleted file mode 100644 index c7f22184..00000000 --- a/libraries/plugins/apis/tags_api/tags_api.cpp +++ /dev/null @@ -1,753 +0,0 @@ -#include -#include -#include -#include -#include - -#include -#include -#include - -namespace steem { namespace plugins { namespace tags { - -namespace detail { - -class tags_api_impl -{ - public: - tags_api_impl() : _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ) {} - - DECLARE_API_IMPL( - (get_trending_tags) - (get_tags_used_by_author) - (get_discussion) - (get_content_replies) - (get_post_discussions_by_payout) - (get_comment_discussions_by_payout) - (get_discussions_by_trending) - (get_discussions_by_created) - (get_discussions_by_active) - (get_discussions_by_cashout) - (get_discussions_by_votes) - (get_discussions_by_children) - (get_discussions_by_hot) - (get_discussions_by_feed) - (get_discussions_by_blog) - (get_discussions_by_comments) - (get_discussions_by_promoted) - (get_replies_by_last_update) - (get_discussions_by_author_before_date) - (get_active_votes) - ) - - void set_pending_payout( discussion& d ); - void set_url( discussion& d ); - discussion lookup_discussion( chain::comment_id_type, uint32_t truncate_body = 0 ); - - static bool filter_default( const database_api::api_comment_object& c ) { return false; } - static bool exit_default( const database_api::api_comment_object& c ) { return false; } - static bool tag_exit_default( const tags::tag_object& c ) { return false; } - - template - discussion_query_result get_discussions( const discussion_query& q, - const string& tag, - chain::comment_id_type parent, - const Index& idx, StartItr itr, - uint32_t truncate_body = 0, - const std::function< bool( const database_api::api_comment_object& ) >& filter = &tags_api_impl::filter_default, - const std::function< bool( const database_api::api_comment_object& ) >& exit = &tags_api_impl::exit_default, - const std::function< bool( const tags::tag_object& ) >& tag_exit = &tags_api_impl::tag_exit_default, - bool ignore_parent = false - ); - - chain::comment_id_type get_parent( const discussion_query& q ); - - chain::database& _db; - std::shared_ptr< steem::plugins::follow::follow_api > _follow_api; -}; - -DEFINE_API_IMPL( tags_api_impl, get_trending_tags ) -{ - FC_ASSERT( args.limit <= 1000, "Cannot retrieve more than 1000 tags at a time." ); - get_trending_tags_return result; - result.tags.reserve( args.limit ); - - const auto& nidx = _db.get_index< tags::tag_stats_index, tags::by_tag >(); - - const auto& ridx = _db.get_index< tags::tag_stats_index, tags::by_trending >(); - auto itr = ridx.begin(); - if( args.start_tag != "" && nidx.size() ) - { - auto nitr = nidx.lower_bound( args.start_tag ); - if( nitr == nidx.end() ) - itr = ridx.end(); - else - itr = ridx.iterator_to( *nitr ); - } - - while( itr != ridx.end() && result.tags.size() < args.limit ) - { - result.tags.push_back( api_tag_object( *itr ) ); - ++itr; - } - return result; -} - -DEFINE_API_IMPL( tags_api_impl, get_tags_used_by_author ) -{ - const auto* acnt = _db.find_account( args.author ); - FC_ASSERT( acnt != nullptr, "Author not found" ); - - const auto& tidx = _db.get_index< tags::author_tag_stats_index, tags::by_author_posts_tag >(); - auto itr = tidx.lower_bound( boost::make_tuple( acnt->id, 0 ) ); - - get_tags_used_by_author_return result; - - while( itr != tidx.end() && itr->author == acnt->id && result.tags.size() < 1000 ) - { - result.tags.push_back( tag_count_object( { itr->tag, itr->total_posts } ) ); - ++itr; - } - - return result; -} - -DEFINE_API_IMPL( tags_api_impl, get_discussion ) -{ - const auto& by_permlink_idx = _db.get_index< chain::comment_index, chain::by_permlink >(); - auto itr = by_permlink_idx.find( boost::make_tuple( args.author, args.permlink ) ); - - if( itr != by_permlink_idx.end() ) - { - get_discussion_return result( *itr, _db ); - set_pending_payout( result ); - result.active_votes = get_active_votes( get_active_votes_args( { args.author, args.permlink } ) ).votes; - return result; - } - - return get_discussion_return(); -} - -DEFINE_API_IMPL( tags_api_impl, get_content_replies ) -{ - const auto& by_permlink_idx = _db.get_index< chain::comment_index, chain::by_parent >(); - auto itr = by_permlink_idx.find( boost::make_tuple( args.author, args.permlink ) ); - - get_content_replies_return result; - - while( itr != by_permlink_idx.end() && itr->parent_author == args.author && chain::to_string( itr->parent_permlink ) == args.permlink ) - { - result.discussions.push_back( discussion( *itr, _db ) ); - set_pending_payout( result.discussions.back() ); - ++itr; - } - return result; -} - -DEFINE_API_IMPL( tags_api_impl, get_post_discussions_by_payout ) -{ - args.validate(); - auto tag = fc::to_lower( args.tag ); - auto parent = chain::comment_id_type(); - - const auto& tidx = _db.get_index< tags::tag_index, tags::by_reward_fund_net_rshares >(); - auto tidx_itr = tidx.lower_bound( boost::make_tuple( tag, true ) ); - - return get_discussions( args, tag, parent, tidx, tidx_itr, args.truncate_body, []( const database_api::api_comment_object& c ){ return c.net_rshares <= 0; }, exit_default, tag_exit_default, true ); -} - -DEFINE_API_IMPL( tags_api_impl, get_comment_discussions_by_payout ) -{ - args.validate(); - auto tag = fc::to_lower( args.tag ); - auto parent = chain::comment_id_type( 1 ); - - const auto& tidx = _db.get_index< tags::tag_index, tags::by_reward_fund_net_rshares >(); - auto tidx_itr = tidx.lower_bound( boost::make_tuple( tag, false ) ); - - return get_discussions( args, tag, parent, tidx, tidx_itr, args.truncate_body, []( const database_api::api_comment_object& c ){ return c.net_rshares <= 0; }, exit_default, tag_exit_default, true ); -} - -DEFINE_API_IMPL( tags_api_impl, get_discussions_by_trending ) -{ - args.validate(); - auto tag = fc::to_lower( args.tag ); - auto parent = get_parent( args ); - - const auto& tidx = _db.get_index< tags::tag_index, tags::by_parent_trending >(); - auto tidx_itr = tidx.lower_bound( boost::make_tuple( tag, parent, std::numeric_limits< double >::max() ) ); - - return get_discussions( args, tag, parent, tidx, tidx_itr, args.truncate_body, []( const database_api::api_comment_object& c ) { return c.net_rshares <= 0; } ); -} - -DEFINE_API_IMPL( tags_api_impl, get_discussions_by_created ) -{ - args.validate(); - auto tag = fc::to_lower( args.tag ); - auto parent = get_parent( args ); - - const auto& tidx = _db.get_index< tags::tag_index, tags::by_parent_created >(); - auto tidx_itr = tidx.lower_bound( boost::make_tuple( tag, parent, fc::time_point_sec::maximum() ) ); - - return get_discussions( args, tag, parent, tidx, tidx_itr, args.truncate_body ); -} - -DEFINE_API_IMPL( tags_api_impl, get_discussions_by_active ) -{ - args.validate(); - auto tag = fc::to_lower( args.tag ); - auto parent = get_parent( args ); - - const auto& tidx = _db.get_index< tags::tag_index, tags::by_parent_active >(); - auto tidx_itr = tidx.lower_bound( boost::make_tuple( tag, parent, fc::time_point_sec::maximum() ) ); - - return get_discussions( args, tag, parent, tidx, tidx_itr, args.truncate_body ); -} - -DEFINE_API_IMPL( tags_api_impl, get_discussions_by_cashout ) -{ - args.validate(); - vector result; - - auto tag = fc::to_lower( args.tag ); - auto parent = get_parent( args ); - - const auto& tidx = _db.get_index< tags::tag_index, tags::by_cashout >(); - auto tidx_itr = tidx.lower_bound( boost::make_tuple( tag, fc::time_point::now() - fc::minutes( 60 ) ) ); - - return get_discussions( args, tag, parent, tidx, tidx_itr, args.truncate_body, []( const database_api::api_comment_object& c ){ return c.net_rshares < 0; }); -} - -DEFINE_API_IMPL( tags_api_impl, get_discussions_by_votes ) -{ - args.validate(); - auto tag = fc::to_lower( args.tag ); - auto parent = get_parent( args ); - - const auto& tidx = _db.get_index< tags::tag_index, tags::by_parent_net_votes >(); - auto tidx_itr = tidx.lower_bound( boost::make_tuple( tag, parent, std::numeric_limits< int32_t >::max() ) ); - - return get_discussions( args, tag, parent, tidx, tidx_itr, args.truncate_body ); -} - -DEFINE_API_IMPL( tags_api_impl, get_discussions_by_children ) -{ - args.validate(); - auto tag = fc::to_lower( args.tag ); - auto parent = get_parent( args ); - - const auto& tidx = _db.get_index< tags::tag_index, tags::by_parent_children >(); - auto tidx_itr = tidx.lower_bound( boost::make_tuple( tag, parent, std::numeric_limits< int32_t >::max() ) ); - - return get_discussions( args, tag, parent, tidx, tidx_itr, args.truncate_body ); -} - -DEFINE_API_IMPL( tags_api_impl, get_discussions_by_hot ) -{ - args.validate(); - auto tag = fc::to_lower( args.tag ); - auto parent = get_parent( args ); - - const auto& tidx = _db.get_index< tags::tag_index, tags::by_parent_hot >(); - auto tidx_itr = tidx.lower_bound( boost::make_tuple( tag, parent, std::numeric_limits< double >::max() ) ); - - return get_discussions( args, tag, parent, tidx, tidx_itr, args.truncate_body, []( const database_api::api_comment_object& c ) { return c.net_rshares <= 0; } ); -} - -DEFINE_API_IMPL( tags_api_impl, get_discussions_by_feed ) -{ - args.validate(); - FC_ASSERT( _db.has_index< follow::feed_index >(), "Node is not running the follow plugin" ); - auto start_author = args.start_author ? *( args.start_author ) : ""; - auto start_permlink = args.start_permlink ? *( args.start_permlink ) : ""; - - const auto& account = _db.get_account( args.tag ); - - const auto& c_idx = _db.get_index< follow::feed_index, follow::by_comment >(); - const auto& f_idx = _db.get_index< follow::feed_index, follow::by_feed >(); - auto feed_itr = f_idx.lower_bound( account.name ); - - if( start_author.size() || start_permlink.size() ) - { - auto start_c = c_idx.find( boost::make_tuple( _db.get_comment( start_author, start_permlink ).id, account.name ) ); - FC_ASSERT( start_c != c_idx.end(), "Comment is not in account's feed" ); - feed_itr = f_idx.iterator_to( *start_c ); - } - - get_discussions_by_feed_return result; - result.discussions.reserve( args.limit ); - - while( result.discussions.size() < args.limit && feed_itr != f_idx.end() ) - { - if( feed_itr->account != account.name ) - break; - try - { - result.discussions.push_back( lookup_discussion( feed_itr->comment ) ); - if( feed_itr->first_reblogged_by != account_name_type() ) - { - result.discussions.back().reblogged_by = vector( feed_itr->reblogged_by.begin(), feed_itr->reblogged_by.end() ); - result.discussions.back().first_reblogged_by = feed_itr->first_reblogged_by; - result.discussions.back().first_reblogged_on = feed_itr->first_reblogged_on; - } - } - catch ( const fc::exception& e ) - { - edump((e.to_detail_string())); - } - - ++feed_itr; - } - return result; -} - -DEFINE_API_IMPL( tags_api_impl, get_discussions_by_blog ) -{ - args.validate(); - FC_ASSERT( _db.has_index< follow::blog_index >(), "Node is not running the follow plugin" ); - auto start_author = args.start_author ? *( args.start_author ) : ""; - auto start_permlink = args.start_permlink ? *( args.start_permlink ) : ""; - - const auto& account = _db.get_account( args.tag ); - - const auto& tag_idx = _db.get_index().indices().get(); - - const auto& c_idx = _db.get_index< follow::blog_index, follow::by_comment >(); - const auto& b_idx = _db.get_index< follow::blog_index, follow::by_blog >(); - auto blog_itr = b_idx.lower_bound( account.name ); - - if( start_author.size() || start_permlink.size() ) - { - auto start_c = c_idx.find( boost::make_tuple( _db.get_comment( start_author, start_permlink ).id, account.name ) ); - FC_ASSERT( start_c != c_idx.end(), "Comment is not in account's blog" ); - blog_itr = b_idx.iterator_to( *start_c ); - } - - get_discussions_by_blog_return result; - result.discussions.reserve( args.limit ); - - while( result.discussions.size() < args.limit && blog_itr != b_idx.end() ) - { - if( blog_itr->account != account.name ) - break; - try - { - if( args.select_authors.size() && - args.select_authors.find( blog_itr->account ) == args.select_authors.end() ) { - ++blog_itr; - continue; - } - - if( args.select_tags.size() ) { - auto tag_itr = tag_idx.lower_bound( blog_itr->comment ); - - bool found = false; - while( tag_itr != tag_idx.end() && tag_itr->comment == blog_itr->comment ) { - if( args.select_tags.find( tag_itr->tag ) != args.select_tags.end() ) { - found = true; break; - } - ++tag_itr; - } - if( !found ) { - ++blog_itr; - continue; - } - } - - result.discussions.push_back( lookup_discussion( blog_itr->comment, args.truncate_body ) ); - if( blog_itr->reblogged_on > time_point_sec() ) - { - result.discussions.back().first_reblogged_on = blog_itr->reblogged_on; - } - } - catch ( const fc::exception& e ) - { - edump((e.to_detail_string())); - } - - ++blog_itr; - } - return result; -} - -DEFINE_API_IMPL( tags_api_impl, get_discussions_by_comments ) -{ - get_discussions_by_comments_return result; -#ifndef IS_LOW_MEM - args.validate(); - FC_ASSERT( args.start_author, "Must get comments for a specific author" ); - auto start_author = *( args.start_author ); - auto start_permlink = args.start_permlink ? *( args.start_permlink ) : ""; - - const auto& c_idx = _db.get_index< comment_index, by_permlink >(); - const auto& t_idx = _db.get_index< comment_index, by_author_last_update >(); - auto comment_itr = t_idx.lower_bound( start_author ); - - if( start_permlink.size() ) - { - auto start_c = c_idx.find( boost::make_tuple( start_author, start_permlink ) ); - FC_ASSERT( start_c != c_idx.end(), "Comment is not in account's comments" ); - comment_itr = t_idx.iterator_to( *start_c ); - } - - result.discussions.reserve( args.limit ); - - while( result.discussions.size() < args.limit && comment_itr != t_idx.end() ) - { - if( comment_itr->author != start_author ) - break; - if( comment_itr->parent_author.size() > 0 ) - { - try - { - result.discussions.push_back( lookup_discussion( comment_itr->id ) ); - } - catch( const fc::exception& e ) - { - edump( (e.to_detail_string() ) ); - } - } - - ++comment_itr; - } -#endif - return result; -} - -DEFINE_API_IMPL( tags_api_impl, get_discussions_by_promoted ) -{ - args.validate(); - auto tag = fc::to_lower( args.tag ); - auto parent = get_parent( args ); - - const auto& tidx = _db.get_index< tags::tag_index, tags::by_parent_promoted >(); - auto tidx_itr = tidx.lower_bound( boost::make_tuple( tag, parent, share_type( STEEM_MAX_SHARE_SUPPLY ) ) ); - - return get_discussions( args, tag, parent, tidx, tidx_itr, args.truncate_body, filter_default, exit_default, []( const tags::tag_object& t ){ return t.promoted_balance == 0; } ); -} - -DEFINE_API_IMPL( tags_api_impl, get_replies_by_last_update ) -{ - get_replies_by_last_update_return result; - -#ifndef IS_LOW_MEM - FC_ASSERT( args.limit <= 100 ); - const auto& last_update_idx = _db.get_index< comment_index, by_last_update >(); - auto itr = last_update_idx.begin(); - account_name_type parent_author = args.start_parent_author; - - if( args.start_permlink.size() ) - { - const auto& comment = _db.get_comment( args.start_parent_author, args.start_permlink ); - itr = last_update_idx.iterator_to( comment ); - parent_author = comment.parent_author; - } - else if( args.start_parent_author.size() ) - { - itr = last_update_idx.lower_bound( args.start_parent_author ); - } - - result.discussions.reserve( args.limit ); - - while( itr != last_update_idx.end() && result.discussions.size() < args.limit && itr->parent_author == parent_author ) - { - result.discussions.push_back( discussion( *itr, _db ) ); - set_pending_payout( result.discussions.back() ); - result.discussions.back().active_votes = get_active_votes( get_active_votes_args( { itr->author, chain::to_string( itr->permlink ) } ) ).votes; - ++itr; - } - -#endif - return result; -} - -DEFINE_API_IMPL( tags_api_impl, get_discussions_by_author_before_date ) -{ - try - { - get_discussions_by_author_before_date_return result; -#ifndef IS_LOW_MEM - FC_ASSERT( args.limit <= 100 ); - result.discussions.reserve( args.limit ); - uint32_t count = 0; - const auto& didx = _db.get_index< comment_index, by_author_last_update >(); - - auto before_date = args.before_date; - - if( before_date == time_point_sec() ) - before_date = time_point_sec::maximum(); - - auto itr = didx.lower_bound( boost::make_tuple( args.author, time_point_sec::maximum() ) ); - if( args.start_permlink.size() ) - { - const auto& comment = _db.get_comment( args.author, args.start_permlink ); - if( comment.created < before_date ) - itr = didx.iterator_to( comment ); - } - - - while( itr != didx.end() && itr->author == args.author && count < args.limit ) - { - if( itr->parent_author.size() == 0 ) - { - result.discussions.push_back( discussion( *itr, _db ) ); - set_pending_payout( result.discussions.back() ); - result.discussions.back().active_votes = get_active_votes( get_active_votes_args( { itr->author, chain::to_string( itr->permlink ) } ) ).votes; - ++count; - } - ++itr; - } - -#endif - return result; - } - FC_CAPTURE_AND_RETHROW( (args) ) -} - -DEFINE_API_IMPL( tags_api_impl, get_active_votes ) -{ - get_active_votes_return result; - const auto& comment = _db.get_comment( args.author, args.permlink ); - const auto& idx = _db.get_index< chain::comment_vote_index, chain::by_comment_voter >(); - chain::comment_id_type cid(comment.id); - auto itr = idx.lower_bound( cid ); - while( itr != idx.end() && itr->comment == cid ) - { - const auto& vo = _db.get( itr->voter ); - vote_state vstate; - vstate.voter = vo.name; - vstate.weight = itr->weight; - vstate.rshares = itr->rshares; - vstate.percent = itr->vote_percent; - vstate.time = itr->last_update; - - if( _follow_api ) - { - auto reps = _follow_api->get_account_reputations( follow::get_account_reputations_args( { vo.name, 1 } ) ).reputations; - if( reps.size() ) - vstate.reputation = reps[0].reputation; - } - - result.votes.push_back( vstate ); - ++itr; - } - return result; -} - -void tags_api_impl::set_pending_payout( discussion& d ) -{ - const auto& cidx = _db.get_index< tags::tag_index, tags::by_comment>(); - auto itr = cidx.lower_bound( d.id ); - if( itr != cidx.end() && itr->comment == d.id ) { - d.promoted = asset( itr->promoted_balance, SBD_SYMBOL ); - } - - const auto& props = _db.get_dynamic_global_properties(); - const auto& hist = _db.get_feed_history(); - - asset pot; - if( _db.has_hardfork( STEEM_HARDFORK_0_17__774 ) ) - pot = _db.get_reward_fund( _db.get_comment( d.author, d.permlink ) ).reward_balance; - else - pot = props.total_reward_fund_steem; - - if( !hist.current_median_history.is_null() ) pot = pot * hist.current_median_history; - - u256 total_r2 = 0; - if( _db.has_hardfork( STEEM_HARDFORK_0_17__774 ) ) - total_r2 = chain::util::to256( _db.get_reward_fund( _db.get_comment( d.author, d.permlink ) ).recent_claims ); - else - total_r2 = chain::util::to256( props.total_reward_shares2 ); - - if( total_r2 > 0 ) - { - uint128_t vshares; - if( _db.has_hardfork( STEEM_HARDFORK_0_17__774 ) ) - { - const auto& rf = _db.get_reward_fund( _db.get_comment( d.author, d.permlink ) ); - vshares = d.net_rshares.value > 0 ? chain::util::evaluate_reward_curve( d.net_rshares.value, rf.author_reward_curve, rf.content_constant ) : 0; - } - else - vshares = d.net_rshares.value > 0 ? chain::util::evaluate_reward_curve( d.net_rshares.value ) : 0; - - u256 r2 = chain::util::to256( vshares ); //to256(abs_net_rshares); - r2 *= pot.amount.value; - r2 /= total_r2; - - d.pending_payout_value = asset( static_cast(r2), pot.symbol ); - - if( _follow_api ) - { - d.author_reputation = _follow_api->get_account_reputations( follow::get_account_reputations_args( { d.author, 1} ) ).reputations[0].reputation; - } - } - - if( d.parent_author != STEEM_ROOT_POST_PARENT ) - d.cashout_time = _db.calculate_discussion_payout_time( _db.get< chain::comment_object >( d.id ) ); - - if( d.body.size() > 1024*128 ) - d.body = "body pruned due to size"; - if( d.parent_author.size() > 0 && d.body.size() > 1024*16 ) - d.body = "comment pruned due to size"; - - set_url( d ); -} - -void tags_api_impl::set_url( discussion& d ) -{ - const database_api::api_comment_object root( _db.get_comment( d.root_author, d.root_permlink ), _db ); - d.url = "/" + root.category + "/@" + root.author + "/" + root.permlink; - d.root_title = root.title; - if( root.id != d.id ) - d.url += "#@" + d.author + "/" + d.permlink; -} - -discussion tags_api_impl::lookup_discussion( chain::comment_id_type id, uint32_t truncate_body ) -{ - discussion d( _db.get( id ), _db ); - set_url( d ); - set_pending_payout( d ); - d.active_votes = get_active_votes( get_active_votes_args( { d.author, d.permlink } ) ).votes; - d.body_length = d.body.size(); - if( truncate_body ) - { - d.body = d.body.substr( 0, truncate_body ); - - if( !fc::is_utf8( d.body ) ) - d.body = fc::prune_invalid_utf8( d.body ); - } - return d; -} - -template -discussion_query_result tags_api_impl::get_discussions( const discussion_query& query, - const string& tag, - chain::comment_id_type parent, - const Index& tidx, StartItr tidx_itr, - uint32_t truncate_body, - const std::function< bool( const database_api::api_comment_object& ) >& filter, - const std::function< bool( const database_api::api_comment_object& ) >& exit, - const std::function< bool( const tags::tag_object& ) >& tag_exit, - bool ignore_parent - ) -{ - discussion_query_result result; - - const auto& cidx = _db.get_index< tags::tag_index, tags::by_comment >(); - chain::comment_id_type start; - - if( query.start_author && query.start_permlink ) - { - start = _db.get_comment( *query.start_author, *query.start_permlink ).id; - auto itr = cidx.find( start ); - while( itr != cidx.end() && itr->comment == start ) - { - if( itr->tag == tag ) - { - tidx_itr = tidx.iterator_to( *itr ); - break; - } - ++itr; - } - } - - uint32_t count = query.limit; - uint64_t itr_count = 0; - uint64_t filter_count = 0; - uint64_t exc_count = 0; - uint64_t max_itr_count = 10 * query.limit; - while( count > 0 && tidx_itr != tidx.end() ) - { - ++itr_count; - if( itr_count > max_itr_count ) - { - wlog( "Maximum iteration count exceeded serving query: ${q}", ("q", query) ); - wlog( "count=${count} itr_count=${itr_count} filter_count=${filter_count} exc_count=${exc_count}", - ("count", count)("itr_count", itr_count)("filter_count", filter_count)("exc_count", exc_count) ); - break; - } - if( tidx_itr->tag != tag || ( !ignore_parent && tidx_itr->parent != parent ) ) - break; - try - { - result.discussions.push_back( lookup_discussion( tidx_itr->comment, truncate_body ) ); - result.discussions.back().promoted = asset(tidx_itr->promoted_balance, SBD_SYMBOL ); - - if( filter( result.discussions.back() ) ) - { - result.discussions.pop_back(); - ++filter_count; - } - else if( exit( result.discussions.back() ) || tag_exit( *tidx_itr ) ) - { - result.discussions.pop_back(); - break; - } - else - --count; - } - catch ( const fc::exception& e ) - { - ++exc_count; - edump((e.to_detail_string())); - } - ++tidx_itr; - } - return result; -} - -chain::comment_id_type tags_api_impl::get_parent( const discussion_query& query ) -{ - chain::comment_id_type parent; - if( query.parent_author && query.parent_permlink ) { - parent = _db.get_comment( *query.parent_author, *query.parent_permlink ).id; - } - return parent; -} - -} // detail - -tags_api::tags_api(): my( new detail::tags_api_impl() ) -{ - JSON_RPC_REGISTER_API( STEEM_TAGS_API_PLUGIN_NAME ); -} - -tags_api::~tags_api() {} - -DEFINE_READ_APIS( tags_api, - (get_trending_tags) - (get_tags_used_by_author) - (get_discussion) - (get_content_replies) - (get_post_discussions_by_payout) - (get_comment_discussions_by_payout) - (get_discussions_by_trending) - (get_discussions_by_created) - (get_discussions_by_active) - (get_discussions_by_cashout) - (get_discussions_by_votes) - (get_discussions_by_children) - (get_discussions_by_hot) - (get_discussions_by_feed) - (get_discussions_by_blog) - (get_discussions_by_comments) - (get_discussions_by_promoted) - (get_replies_by_last_update) - (get_discussions_by_author_before_date) - (get_active_votes) -) - -void tags_api::set_pending_payout( discussion& d ) -{ - my->set_pending_payout( d ); -} - -void tags_api::api_startup() -{ - auto follow_api_plugin = appbase::app().find_plugin< steem::plugins::follow::follow_api_plugin >(); - - if( follow_api_plugin != nullptr ) - my->_follow_api = follow_api_plugin->api; -} - -} } } // steem::plugins::tags diff --git a/libraries/plugins/apis/tags_api/tags_api_plugin.cpp b/libraries/plugins/apis/tags_api/tags_api_plugin.cpp deleted file mode 100644 index a9552b45..00000000 --- a/libraries/plugins/apis/tags_api/tags_api_plugin.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include - - -namespace steem { namespace plugins { namespace tags { - -tags_api_plugin::tags_api_plugin() {} -tags_api_plugin::~tags_api_plugin() {} - -void tags_api_plugin::set_program_options( options_description& cli, options_description& cfg ) {} - -void tags_api_plugin::plugin_initialize( const variables_map& options ) -{ - api = std::make_shared< tags_api >(); -} - -void tags_api_plugin::plugin_startup() { api->api_startup(); } -void tags_api_plugin::plugin_shutdown() {} - -} } } // steem::plugins::tags diff --git a/libraries/plugins/apis/test_api/CMakeLists.txt b/libraries/plugins/apis/test_api/CMakeLists.txt index 7dca7dc4..997860ca 100644 --- a/libraries/plugins/apis/test_api/CMakeLists.txt +++ b/libraries/plugins/apis/test_api/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB HEADERS "include/steem/test_api_plugin/*.hpp") +file(GLOB HEADERS "include/sophiatx/test_api_plugin/*.hpp") add_library( test_api_plugin test_api_plugin.cpp ${HEADERS} ) @@ -13,4 +13,4 @@ install( TARGETS LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) -install( FILES ${HEADERS} DESTINATION "include/steem/test_api_plugin" ) +install( FILES ${HEADERS} DESTINATION "include/sophiatx/test_api_plugin" ) diff --git a/libraries/plugins/apis/test_api/include/steem/plugins/test_api/test_api_plugin.hpp b/libraries/plugins/apis/test_api/include/sophiatx/plugins/test_api/test_api_plugin.hpp similarity index 61% rename from libraries/plugins/apis/test_api/include/steem/plugins/test_api/test_api_plugin.hpp rename to libraries/plugins/apis/test_api/include/sophiatx/plugins/test_api/test_api_plugin.hpp index a2bbbbf8..9315d7c0 100644 --- a/libraries/plugins/apis/test_api/include/steem/plugins/test_api/test_api_plugin.hpp +++ b/libraries/plugins/apis/test_api/include/sophiatx/plugins/test_api/test_api_plugin.hpp @@ -1,12 +1,12 @@ #pragma once #include -#include -#include +#include +#include -#define STEEM_TEST_API_PLUGIN_NAME "test_api" +#define SOPHIATX_TEST_API_PLUGIN_NAME "test_api" -namespace steem { namespace plugins { namespace test_api { +namespace sophiatx { namespace plugins { namespace test_api { using namespace appbase; @@ -25,7 +25,7 @@ class test_api_plugin : public appbase::plugin< test_api_plugin > //APPBASE_PLUGIN_REQUIRES() APPBASE_PLUGIN_REQUIRES( (plugins::json_rpc::json_rpc_plugin) ); - static const std::string& name() { static std::string name = STEEM_TEST_API_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_TEST_API_PLUGIN_NAME; return name; } virtual void set_program_options( options_description&, options_description& ) override {} @@ -39,9 +39,9 @@ class test_api_plugin : public appbase::plugin< test_api_plugin > ) }; -} } } // steem::plugins::test_api +} } } // sophiatx::plugins::test_api -FC_REFLECT( steem::plugins::test_api::test_api_a_args, ) -FC_REFLECT( steem::plugins::test_api::test_api_b_args, ) -FC_REFLECT( steem::plugins::test_api::test_api_a_return, (value) ) -FC_REFLECT( steem::plugins::test_api::test_api_b_return, (value) ) +FC_REFLECT( sophiatx::plugins::test_api::test_api_a_args, ) +FC_REFLECT( sophiatx::plugins::test_api::test_api_b_args, ) +FC_REFLECT( sophiatx::plugins::test_api::test_api_a_return, (value) ) +FC_REFLECT( sophiatx::plugins::test_api::test_api_b_return, (value) ) diff --git a/libraries/plugins/apis/test_api/test_api_plugin.cpp b/libraries/plugins/apis/test_api/test_api_plugin.cpp index e288d8e7..51b66839 100644 --- a/libraries/plugins/apis/test_api/test_api_plugin.cpp +++ b/libraries/plugins/apis/test_api/test_api_plugin.cpp @@ -1,8 +1,8 @@ -#include +#include #include -namespace steem { namespace plugins { namespace test_api { +namespace sophiatx { namespace plugins { namespace test_api { test_api_plugin::test_api_plugin() {} test_api_plugin::~test_api_plugin() {} @@ -31,4 +31,4 @@ test_api_b_return test_api_plugin::test_api_b( const test_api_b_args& args, bool return result; } -} } } // steem::plugins::test_api +} } } // sophiatx::plugins::test_api diff --git a/libraries/plugins/apis/witness_api/CMakeLists.txt b/libraries/plugins/apis/witness_api/CMakeLists.txt index 97d3b06f..c9351787 100644 --- a/libraries/plugins/apis/witness_api/CMakeLists.txt +++ b/libraries/plugins/apis/witness_api/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB HEADERS "include/steem/plugins/witness_api/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/witness_api/*.hpp") add_library( witness_api_plugin witness_api_plugin.cpp witness_api.cpp diff --git a/libraries/plugins/apis/witness_api/include/steem/plugins/witness_api/witness_api.hpp b/libraries/plugins/apis/witness_api/include/sophiatx/plugins/witness_api/witness_api.hpp similarity index 68% rename from libraries/plugins/apis/witness_api/include/steem/plugins/witness_api/witness_api.hpp rename to libraries/plugins/apis/witness_api/include/sophiatx/plugins/witness_api/witness_api.hpp index b77efe29..0256a47e 100644 --- a/libraries/plugins/apis/witness_api/include/steem/plugins/witness_api/witness_api.hpp +++ b/libraries/plugins/apis/witness_api/include/sophiatx/plugins/witness_api/witness_api.hpp @@ -1,14 +1,14 @@ #pragma once -#include -#include +#include +#include -#include +#include #include #include #include -namespace steem { namespace plugins { namespace witness { +namespace sophiatx { namespace plugins { namespace witness { namespace detail { @@ -46,10 +46,10 @@ class witness_api std::unique_ptr< detail::witness_api_impl > my; }; -} } } // steem::plugins::witness +} } } // sophiatx::plugins::witness -FC_REFLECT( steem::plugins::witness::get_account_bandwidth_args, +FC_REFLECT( sophiatx::plugins::witness::get_account_bandwidth_args, (account)(type) ) -FC_REFLECT( steem::plugins::witness::get_account_bandwidth_return, +FC_REFLECT( sophiatx::plugins::witness::get_account_bandwidth_return, (bandwidth) ) diff --git a/libraries/plugins/apis/witness_api/include/steem/plugins/witness_api/witness_api_plugin.hpp b/libraries/plugins/apis/witness_api/include/sophiatx/plugins/witness_api/witness_api_plugin.hpp similarity index 60% rename from libraries/plugins/apis/witness_api/include/steem/plugins/witness_api/witness_api_plugin.hpp rename to libraries/plugins/apis/witness_api/include/sophiatx/plugins/witness_api/witness_api_plugin.hpp index c7c3fdf6..8449bcef 100644 --- a/libraries/plugins/apis/witness_api/include/steem/plugins/witness_api/witness_api_plugin.hpp +++ b/libraries/plugins/apis/witness_api/include/sophiatx/plugins/witness_api/witness_api_plugin.hpp @@ -1,13 +1,13 @@ #pragma once -#include -#include +#include +#include #include -#define STEEM_WITNESS_API_PLUGIN_NAME "witness_api" +#define SOPHIATX_WITNESS_API_PLUGIN_NAME "witness_api" -namespace steem { namespace plugins { namespace witness { +namespace sophiatx { namespace plugins { namespace witness { using namespace appbase; @@ -15,14 +15,14 @@ class witness_api_plugin : public appbase::plugin< witness_api_plugin > { public: APPBASE_PLUGIN_REQUIRES( - (steem::plugins::witness::witness_plugin) - (steem::plugins::json_rpc::json_rpc_plugin) + (sophiatx::plugins::witness::witness_plugin) + (sophiatx::plugins::json_rpc::json_rpc_plugin) ) witness_api_plugin(); virtual ~witness_api_plugin(); - static const std::string& name() { static std::string name = STEEM_WITNESS_API_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_WITNESS_API_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, options_description& cfg ) override; @@ -33,4 +33,4 @@ class witness_api_plugin : public appbase::plugin< witness_api_plugin > std::shared_ptr< class witness_api > api; }; -} } } // steem::plugins::witness +} } } // sophiatx::plugins::witness diff --git a/libraries/plugins/apis/witness_api/witness_api.cpp b/libraries/plugins/apis/witness_api/witness_api.cpp index 382af94e..6a9a1a55 100644 --- a/libraries/plugins/apis/witness_api/witness_api.cpp +++ b/libraries/plugins/apis/witness_api/witness_api.cpp @@ -1,14 +1,14 @@ -#include -#include +#include +#include -namespace steem { namespace plugins { namespace witness { +namespace sophiatx { namespace plugins { namespace witness { namespace detail { class witness_api_impl { public: - witness_api_impl() : _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ) {} + witness_api_impl() : _db( appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db() ) {} DECLARE_API_IMPL( (get_account_bandwidth) @@ -38,7 +38,7 @@ DEFINE_API_IMPL( witness_api_impl, get_reserve_ratio ) witness_api::witness_api(): my( new detail::witness_api_impl() ) { - JSON_RPC_REGISTER_API( STEEM_WITNESS_API_PLUGIN_NAME ); + JSON_RPC_REGISTER_API( SOPHIATX_WITNESS_API_PLUGIN_NAME ); } witness_api::~witness_api() {} @@ -48,4 +48,4 @@ DEFINE_READ_APIS( witness_api, (get_reserve_ratio) ) -} } } // steem::plugins::witness +} } } // sophiatx::plugins::witness diff --git a/libraries/plugins/apis/witness_api/witness_api_plugin.cpp b/libraries/plugins/apis/witness_api/witness_api_plugin.cpp index bf20752f..e25b69df 100644 --- a/libraries/plugins/apis/witness_api/witness_api_plugin.cpp +++ b/libraries/plugins/apis/witness_api/witness_api_plugin.cpp @@ -1,8 +1,8 @@ -#include -#include +#include +#include -namespace steem { namespace plugins { namespace witness { +namespace sophiatx { namespace plugins { namespace witness { witness_api_plugin::witness_api_plugin() {} witness_api_plugin::~witness_api_plugin() {} @@ -17,4 +17,4 @@ void witness_api_plugin::plugin_initialize( const variables_map& options ) void witness_api_plugin::plugin_startup() {} void witness_api_plugin::plugin_shutdown() {} -} } } // steem::plugins::witness +} } } // sophiatx::plugins::witness diff --git a/libraries/plugins/block_log_info/CMakeLists.txt b/libraries/plugins/block_log_info/CMakeLists.txt index 6482c974..f476c642 100644 --- a/libraries/plugins/block_log_info/CMakeLists.txt +++ b/libraries/plugins/block_log_info/CMakeLists.txt @@ -1,10 +1,10 @@ -file(GLOB HEADERS "include/steem/plugins/block_log_info/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/block_log_info/*.hpp") add_library( block_log_info_plugin block_log_info_plugin.cpp ) -target_link_libraries( block_log_info_plugin chain_plugin steem_chain steem_protocol ) +target_link_libraries( block_log_info_plugin chain_plugin sophiatx_chain sophiatx_protocol ) target_include_directories( block_log_info_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) diff --git a/libraries/plugins/block_log_info/block_log_info_plugin.cpp b/libraries/plugins/block_log_info/block_log_info_plugin.cpp index 3f824809..20d0f325 100644 --- a/libraries/plugins/block_log_info/block_log_info_plugin.cpp +++ b/libraries/plugins/block_log_info/block_log_info_plugin.cpp @@ -1,17 +1,17 @@ -#include -#include +#include +#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include #include -namespace steem { namespace plugins { namespace block_log_info { +namespace sophiatx { namespace plugins { namespace block_log_info { namespace detail { @@ -19,7 +19,7 @@ class block_log_info_plugin_impl { public: block_log_info_plugin_impl( block_log_info_plugin& _plugin ) : - _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ), + _db( appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db() ), _self( _plugin ) {} void on_applied_block( const signed_block& b ); @@ -147,7 +147,7 @@ void block_log_info_plugin::plugin_initialize( const boost::program_options::var try { ilog( "Initializing block_log_info plugin" ); - chain::database& db = appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db(); + chain::database& db = appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db(); my->on_applied_block_connection = db.applied_block.connect( [&]( const signed_block& b ){ my->on_applied_block( b ); } ); @@ -173,4 +173,4 @@ void block_log_info_plugin::plugin_shutdown() chain::util::disconnect_signal( my->on_applied_block_connection ); } -} } } // steem::plugins::block_log_info +} } } // sophiatx::plugins::block_log_info diff --git a/libraries/plugins/block_log_info/include/steem/plugins/block_log_info/block_log_info_objects.hpp b/libraries/plugins/block_log_info/include/sophiatx/plugins/block_log_info/block_log_info_objects.hpp similarity index 64% rename from libraries/plugins/block_log_info/include/steem/plugins/block_log_info/block_log_info_objects.hpp rename to libraries/plugins/block_log_info/include/sophiatx/plugins/block_log_info/block_log_info_objects.hpp index 459c7cab..f9e14ed5 100644 --- a/libraries/plugins/block_log_info/include/steem/plugins/block_log_info/block_log_info_objects.hpp +++ b/libraries/plugins/block_log_info/include/sophiatx/plugins/block_log_info/block_log_info_objects.hpp @@ -1,23 +1,23 @@ #pragma once -#include +#include #include #include -namespace steem { namespace plugins { namespace block_log_info { +namespace sophiatx { namespace plugins { namespace block_log_info { using namespace std; -using namespace steem::chain; +using namespace sophiatx::chain; -#ifndef STEEM_BLOCK_LOG_INFO_SPACE_ID -#define STEEM_BLOCK_LOG_INFO_SPACE_ID 14 +#ifndef SOPHIATX_BLOCK_LOG_INFO_SPACE_ID +#define SOPHIATX_BLOCK_LOG_INFO_SPACE_ID 14 #endif enum block_log_info_object_types { - block_log_hash_state_object_type = ( STEEM_BLOCK_LOG_INFO_SPACE_ID << 8 ) , - block_log_pending_message_object_type = ( STEEM_BLOCK_LOG_INFO_SPACE_ID << 8 ) + 1, + block_log_hash_state_object_type = ( SOPHIATX_BLOCK_LOG_INFO_SPACE_ID << 8 ) , + block_log_pending_message_object_type = ( SOPHIATX_BLOCK_LOG_INFO_SPACE_ID << 8 ) + 1, }; class block_log_hash_state_object : public object< block_log_hash_state_object_type, block_log_hash_state_object > @@ -79,13 +79,13 @@ typedef multi_index_container< allocator< block_log_pending_message_object > > block_log_pending_message_index; -} } } // steem::plugins::block_log_info +} } } // sophiatx::plugins::block_log_info -FC_REFLECT( steem::plugins::block_log_info::block_log_hash_state_object, (id)(total_size)(rsha256)(last_interval) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::block_log_info::block_log_hash_state_object, steem::plugins::block_log_info::block_log_hash_state_index ) +FC_REFLECT( sophiatx::plugins::block_log_info::block_log_hash_state_object, (id)(total_size)(rsha256)(last_interval) ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::plugins::block_log_info::block_log_hash_state_object, sophiatx::plugins::block_log_info::block_log_hash_state_index ) -FC_REFLECT( steem::plugins::block_log_info::block_log_message_data, (block_num)(total_size)(current_interval)(rsha256) ) +FC_REFLECT( sophiatx::plugins::block_log_info::block_log_message_data, (block_num)(total_size)(current_interval)(rsha256) ) -FC_REFLECT( steem::plugins::block_log_info::block_log_pending_message_object, (id)(data) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::block_log_info::block_log_pending_message_object, steem::plugins::block_log_info::block_log_pending_message_index ) +FC_REFLECT( sophiatx::plugins::block_log_info::block_log_pending_message_object, (id)(data) ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::plugins::block_log_info::block_log_pending_message_object, sophiatx::plugins::block_log_info::block_log_pending_message_index ) diff --git a/libraries/plugins/block_log_info/include/steem/plugins/block_log_info/block_log_info_plugin.hpp b/libraries/plugins/block_log_info/include/sophiatx/plugins/block_log_info/block_log_info_plugin.hpp similarity index 67% rename from libraries/plugins/block_log_info/include/steem/plugins/block_log_info/block_log_info_plugin.hpp rename to libraries/plugins/block_log_info/include/sophiatx/plugins/block_log_info/block_log_info_plugin.hpp index 4b35c20b..08f47945 100644 --- a/libraries/plugins/block_log_info/include/steem/plugins/block_log_info/block_log_info_plugin.hpp +++ b/libraries/plugins/block_log_info/include/sophiatx/plugins/block_log_info/block_log_info_plugin.hpp @@ -1,15 +1,15 @@ #pragma once #include -#include +#include -namespace steem { namespace plugins { namespace block_log_info { +namespace sophiatx { namespace plugins { namespace block_log_info { namespace detail { class block_log_info_plugin_impl; } using namespace appbase; -#define STEEM_BLOCK_LOG_INFO_PLUGIN_NAME "block_log_info" +#define SOPHIATX_BLOCK_LOG_INFO_PLUGIN_NAME "block_log_info" class block_log_info_plugin : public appbase::plugin< block_log_info_plugin > { @@ -17,9 +17,9 @@ class block_log_info_plugin : public appbase::plugin< block_log_info_plugin > block_log_info_plugin(); virtual ~block_log_info_plugin(); - APPBASE_PLUGIN_REQUIRES( (steem::plugins::chain::chain_plugin) ) + APPBASE_PLUGIN_REQUIRES( (sophiatx::plugins::chain::chain_plugin) ) - static const std::string& name() { static std::string name = STEEM_BLOCK_LOG_INFO_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_BLOCK_LOG_INFO_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, options_description& cfg ) override; virtual void plugin_initialize( const variables_map& options ) override; @@ -30,4 +30,4 @@ class block_log_info_plugin : public appbase::plugin< block_log_info_plugin > std::unique_ptr< detail::block_log_info_plugin_impl > my; }; -} } } // steem::plugins::block_log_info +} } } // sophiatx::plugins::block_log_info diff --git a/libraries/plugins/chain/CMakeLists.txt b/libraries/plugins/chain/CMakeLists.txt index dac294fb..8e0422c0 100644 --- a/libraries/plugins/chain/CMakeLists.txt +++ b/libraries/plugins/chain/CMakeLists.txt @@ -1,10 +1,14 @@ -file(GLOB HEADERS "include/steem/chain_plugin/*.hpp") +file(GLOB HEADERS "include/sophiatx/chain_plugin/*.hpp") +file(GLOB EGENESIS_HEADERS "../../egenesis/include/sophiatx/egenesis/*.hpp") + add_library( chain_plugin chain_plugin.cpp - ${HEADERS} ) + ${HEADERS} + ${EGENESIS_HEADERS} + ) -target_link_libraries( chain_plugin steem_chain appbase steem_utilities ) -target_include_directories( chain_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) +target_link_libraries( chain_plugin sophiatx_chain sophiatx_egenesis_full appbase sophiatx_utilities ) +target_include_directories( chain_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" "${CMAKE_CURRENT_SOURCE_DIR}/../../egenesis/include" ) if( CLANG_TIDY_EXE ) set_target_properties( @@ -20,4 +24,4 @@ install( TARGETS LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) -install( FILES ${HEADERS} DESTINATION "include/steem/chain_plugin" ) +install( FILES ${HEADERS} DESTINATION "include/sophiatx/chain_plugin" ) diff --git a/libraries/plugins/chain/chain_plugin.cpp b/libraries/plugins/chain/chain_plugin.cpp index e7096605..d25191c0 100644 --- a/libraries/plugins/chain/chain_plugin.cpp +++ b/libraries/plugins/chain/chain_plugin.cpp @@ -1,10 +1,14 @@ -#include +#include +#include -#include +#include -#include +#include + +#include #include +#include #include #include @@ -17,16 +21,30 @@ #include #include -namespace steem { namespace plugins { namespace chain { +namespace sophiatx { namespace plugins { namespace chain { -using namespace steem; +using namespace sophiatx; using fc::flat_map; -using steem::chain::block_id_type; +using sophiatx::chain::block_id_type; namespace asio = boost::asio; #define NUM_THREADS 1 +struct generate_block_request +{ + generate_block_request( const fc::time_point_sec w, const account_name_type& wo, const fc::ecc::private_key& priv_key, uint32_t s ) : + when( w ), + witness_owner( wo ), + block_signing_private_key( priv_key ), + skip( s ) {} + + const fc::time_point_sec when; + const account_name_type& witness_owner; + const fc::ecc::private_key& block_signing_private_key; + uint32_t skip; + signed_block block; +}; -typedef fc::static_variant< const signed_block*, const signed_transaction* > write_request_ptr; +typedef fc::static_variant< const signed_block*, const signed_transaction*, generate_block_request* > write_request_ptr; typedef fc::static_variant< boost::promise< void >*, fc::future< void >* > promise_ptr; struct write_context @@ -36,6 +54,7 @@ struct write_context bool success = true; fc::optional< fc::exception > except; promise_ptr prom_ptr; + }; namespace detail { @@ -62,8 +81,11 @@ class chain_plugin_impl uint32_t stop_replay_at = 0; uint32_t benchmark_interval = 0; uint32_t flush_interval = 0; + genesis_state_type genesis; flat_map loaded_checkpoints; + int16_t write_lock_hold_time; + uint32_t allow_future_time = 5; bool running = true; @@ -125,8 +147,33 @@ struct write_request_visitor return result; } + + + bool operator()( generate_block_request* req ) + { + bool result = false; + try{ + req->block = db->generate_block( + req->when, + req->witness_owner, + req->block_signing_private_key, + req->skip + ); + result = true; + }catch( fc::exception& e ){ + *except = e; + } + catch( ... ) + { + *except = fc::unhandled_exception( FC_LOG_MESSAGE( warn, "Unexpected exception while pushing block." ), + std::current_exception() ); + } + + return result; + } }; + struct request_promise_visitor { request_promise_visitor(){} @@ -187,8 +234,10 @@ void chain_plugin_impl::start_write_processing() cxt->success = cxt->req_ptr.visit( req_visitor ); cxt->prom_ptr.visit( prom_visitor ); - if( is_syncing && start - db.head_block_time() < fc::minutes(1) ) + //elog("head_block_time is: ${h}, start is:${s}, diff: ${d}, minute: ${m}, syncing ${sync}, holding ${hold}", ("h", db.head_block_time())("s", start)("d", start - db.head_block_time())("m",fc::minutes(1))("sync", is_syncing)("hold", write_lock_hold_time)); + if( !is_syncing && write_lock_hold_time >= 0 && fc::time_point::now() - start > fc::milliseconds( write_lock_hold_time ) ) { + start = fc::time_point::now(); is_syncing = false; } @@ -206,8 +255,10 @@ void chain_plugin_impl::start_write_processing() }); } - if( !is_syncing ) - boost::this_thread::sleep_for( boost::chrono::milliseconds( 10 ) ); + if( !is_syncing ) { + boost::this_thread::sleep_for(boost::chrono::milliseconds(10)); + } else + boost::this_thread::sleep_for(boost::chrono::milliseconds(1)); } }); } @@ -229,13 +280,14 @@ chain_plugin::chain_plugin() : my( new detail::chain_plugin_impl() ) {} chain_plugin::~chain_plugin(){} database& chain_plugin::db() { return my->db; } -const steem::chain::database& chain_plugin::db() const { return my->db; } +const sophiatx::chain::database& chain_plugin::db() const { return my->db; } void chain_plugin::set_program_options(options_description& cli, options_description& cfg) { cfg.add_options() ("shared-file-dir", bpo::value()->default_value("blockchain"), "the location of the chain shared memory files (absolute path or relative to application data dir)") + ("genesis-json", bpo::value(), "genesis file in JSON format") ("shared-file-size", bpo::value()->default_value("24G"), "Size of the shared memory file. Default: 24G. If running a full node, increase this value to 200G.") ("shared-file-full-threshold", bpo::value()->default_value(0), "A 2 precision percentage (0-10000) that defines the threshold for when to autoscale the shared memory file. Setting this to 0 disables autoscaling. Recommended value for consensus node is 9500 (95%). Full node is 9900 (99%)" ) @@ -253,9 +305,6 @@ void chain_plugin::set_program_options(options_description& cli, options_descrip ("dump-memory-details", bpo::bool_switch()->default_value(false), "Dump database objects memory usage info. Use set-benchmark-interval to set dump interval.") ("check-locks", bpo::bool_switch()->default_value(false), "Check correctness of chainbase locking" ) ("validate-database-invariants", bpo::bool_switch()->default_value(false), "Validate all supply invariants check out" ) -#ifdef IS_TEST_NET - ("chain-id", bpo::value< std::string >()->default_value( STEEM_CHAIN_ID_NAME ), "chain ID to connect to") -#endif ; } @@ -279,6 +328,30 @@ void chain_plugin::plugin_initialize(const variables_map& options) { if( options.count( "shared-file-scale-rate" ) ) my->shared_file_scale_rate = options.at( "shared-file-scale-rate" ).as< uint16_t >(); + auto initial_state = [&] { + if( options.count("genesis-json") ) + { + std::string genesis_str; + fc::read_file_contents( options.at("genesis-json").as(), genesis_str ); + genesis_state_type genesis = fc::json::from_string( genesis_str ).as(); + genesis.initial_chain_id = fc::sha256::hash( genesis_str); + + return genesis; + } + else + { + std::string egenesis_json; + sophiatx::egenesis::compute_egenesis_json( egenesis_json ); + FC_ASSERT( egenesis_json != "" ); + FC_ASSERT( sophiatx::egenesis::get_egenesis_json_hash() == fc::sha256::hash( egenesis_json ) ); + auto genesis = fc::json::from_string( egenesis_json ).as(); + genesis.initial_chain_id = fc::sha256::hash( egenesis_json ); + + return genesis; + } + }; + + my->replay = options.at( "replay-blockchain").as(); my->resync = options.at( "resync-blockchain").as(); my->stop_replay_at = @@ -288,6 +361,7 @@ void chain_plugin::plugin_initialize(const variables_map& options) { my->check_locks = options.at( "check-locks" ).as< bool >(); my->validate_invariants = options.at( "validate-database-invariants" ).as(); my->dump_memory_details = options.at( "dump-memory-details" ).as(); + my->genesis = initial_state(); if( options.count( "flush-state-interval" ) ) my->flush_interval = options.at( "flush-state-interval" ).as(); else @@ -303,11 +377,6 @@ void chain_plugin::plugin_initialize(const variables_map& options) { my->loaded_checkpoints[item.first] = item.second; } } - -#ifdef IS_TEST_NET - if( options.count( "chain-id" ) ) - my->db.set_chain_id( options.at("chain-id").as< std::string >() ); -#endif } #define BENCHMARK_FILE_NAME "replay_benchmark.json" @@ -329,11 +398,11 @@ void chain_plugin::plugin_startup() my->db.set_require_locking( my->check_locks ); bool dump_memory_details = my->dump_memory_details; - steem::utilities::benchmark_dumper dumper; + sophiatx::utilities::benchmark_dumper dumper; const auto& abstract_index_cntr = my->db.get_abstract_index_cntr(); - typedef steem::utilities::benchmark_dumper::index_memory_details_cntr_t index_memory_details_cntr_t; + typedef sophiatx::utilities::benchmark_dumper::index_memory_details_cntr_t index_memory_details_cntr_t; auto get_indexes_memory_details = [dump_memory_details, &abstract_index_cntr] (index_memory_details_cntr_t& index_memory_details_cntr, bool onlyStaticInfo) { @@ -351,7 +420,6 @@ void chain_plugin::plugin_startup() database::open_args db_open_args; db_open_args.data_dir = app().data_dir() / "blockchain"; db_open_args.shared_mem_dir = my->shared_memory_dir; - db_open_args.initial_supply = STEEM_INIT_SUPPLY; db_open_args.shared_file_size = my->shared_memory_size; db_open_args.shared_file_full_threshold = my->shared_file_full_threshold; db_open_args.shared_file_scale_rate = my->shared_file_scale_rate; @@ -363,7 +431,7 @@ void chain_plugin::plugin_startup() { if( current_block_number == 0 ) // initial call { - typedef steem::utilities::benchmark_dumper::database_object_sizeof_cntr_t database_object_sizeof_cntr_t; + typedef sophiatx::utilities::benchmark_dumper::database_object_sizeof_cntr_t database_object_sizeof_cntr_t; auto get_database_objects_sizeofs = [dump_memory_details, &abstract_index_cntr] (database_object_sizeof_cntr_t& database_object_sizeof_cntr) { @@ -381,7 +449,7 @@ void chain_plugin::plugin_startup() return; } - const steem::utilities::benchmark_dumper::measurement& measure = + const sophiatx::utilities::benchmark_dumper::measurement& measure = dumper.measure(current_block_number, get_indexes_memory_details); ilog( "Performance report at block ${n}. Elapsed time: ${rt} ms (real), ${ct} ms (cpu). Memory usage: ${cm} (current), ${pm} (peak) kilobytes.", ("n", current_block_number) @@ -395,12 +463,12 @@ void chain_plugin::plugin_startup() { ilog("Replaying blockchain on user request."); uint32_t last_block_number = 0; - db_open_args.benchmark = steem::chain::database::TBenchmark(my->benchmark_interval, benchmark_lambda); - last_block_number = my->db.reindex( db_open_args ); + db_open_args.benchmark = sophiatx::chain::database::TBenchmark(my->benchmark_interval, benchmark_lambda); + last_block_number = my->db.reindex( db_open_args, my->genesis ); if( my->benchmark_interval > 0 ) { - const steem::utilities::benchmark_dumper::measurement& total_data = dumper.dump(true, get_indexes_memory_details); + const sophiatx::utilities::benchmark_dumper::measurement& total_data = dumper.dump(true, get_indexes_memory_details); ilog( "Performance report (total). Blocks: ${b}. Elapsed time: ${rt} ms (real), ${ct} ms (cpu). Memory usage: ${cm} (current), ${pm} (peak) kilobytes.", ("b", total_data.block_number) ("rt", total_data.real_ms) @@ -418,13 +486,13 @@ void chain_plugin::plugin_startup() } else { - db_open_args.benchmark = steem::chain::database::TBenchmark(dump_memory_details, benchmark_lambda); + db_open_args.benchmark = sophiatx::chain::database::TBenchmark(dump_memory_details, benchmark_lambda); try { ilog("Opening shared memory from ${path}", ("path",my->shared_memory_dir.generic_string())); - my->db.open( db_open_args ); + my->db.open( db_open_args, my->genesis ); if( dump_memory_details ) dumper.dump( true, get_indexes_memory_details ); @@ -435,12 +503,12 @@ void chain_plugin::plugin_startup() try { - my->db.reindex( db_open_args ); + my->db.reindex( db_open_args, my->genesis ); } - catch( steem::chain::block_log_exception& ) + catch( sophiatx::chain::block_log_exception& ) { wlog( "Error opening block log. Having to resync from network..." ); - my->db.open( db_open_args ); + my->db.open( db_open_args, my->genesis ); } } } @@ -457,7 +525,7 @@ void chain_plugin::plugin_shutdown() ilog("database closed successfully"); } -bool chain_plugin::accept_block( const steem::chain::signed_block& block, bool currently_syncing, uint32_t skip ) +bool chain_plugin::accept_block( const sophiatx::chain::signed_block& block, bool currently_syncing, uint32_t skip ) { if (currently_syncing && block.block_num() % 10000 == 0) { ilog("Syncing Blockchain --- Got block: #${n} time: ${t} producer: ${p}", @@ -483,7 +551,7 @@ bool chain_plugin::accept_block( const steem::chain::signed_block& block, bool c return cxt.success; } -void chain_plugin::accept_transaction( const steem::chain::signed_transaction& trx ) +void chain_plugin::accept_transaction( const sophiatx::chain::signed_transaction& trx ) { boost::promise< void > prom; write_context cxt; @@ -499,17 +567,17 @@ void chain_plugin::accept_transaction( const steem::chain::signed_transaction& t return; } -bool chain_plugin::block_is_on_preferred_chain(const steem::chain::block_id_type& block_id ) +bool chain_plugin::block_is_on_preferred_chain(const sophiatx::chain::block_id_type& block_id ) { // If it's not known, it's not preferred. if( !db().is_known_block(block_id) ) return false; // Extract the block number from block_id, and fetch that block number's ID from the database. // If the database's block ID matches block_id, then block_id is on the preferred chain. Otherwise, it's on a fork. - return db().get_block_id_for_num( steem::chain::block_header::num_from_id( block_id ) ) == block_id; + return db().get_block_id_for_num( sophiatx::chain::block_header::num_from_id( block_id ) ) == block_id; } -void chain_plugin::check_time_in_block( const steem::chain::signed_block& block ) +void chain_plugin::check_time_in_block( const sophiatx::chain::signed_block& block ) { time_point_sec now = fc::time_point::now(); @@ -518,4 +586,34 @@ void chain_plugin::check_time_in_block( const steem::chain::signed_block& block FC_ASSERT( block.timestamp.sec_since_epoch() <= max_accept_time ); } -} } } // namespace steem::plugis::chain::chain_apis +sophiatx::chain::signed_block chain_plugin::generate_block( const fc::time_point_sec when, const account_name_type& witness_owner, + const fc::ecc::private_key& block_signing_private_key, uint32_t skip ) +{ + generate_block_request req( when, witness_owner, block_signing_private_key, skip ); + boost::promise< void > prom; + write_context cxt; + cxt.req_ptr = &req; + cxt.prom_ptr = &prom; + + my->write_queue.push( &cxt ); + + prom.get_future().get(); + + if( cxt.except ) throw *(cxt.except); + + FC_ASSERT( cxt.success, "Block could not be generated" ); + + return req.block; +} + +int16_t chain_plugin::set_write_lock_hold_time( int16_t new_time ) +{ + FC_ASSERT( get_state() == appbase::abstract_plugin::state::initialized, + "Can only change write_lock_hold_time while chain_plugin is initialized." ); + + int16_t old_time = my->write_lock_hold_time; + my->write_lock_hold_time = new_time; + return old_time; +} + +} } } // namespace sophiatx::plugis::chain::chain_apis diff --git a/libraries/plugins/chain/include/steem/plugins/chain/chain_plugin.hpp b/libraries/plugins/chain/include/sophiatx/plugins/chain/chain_plugin.hpp similarity index 68% rename from libraries/plugins/chain/include/steem/plugins/chain/chain_plugin.hpp rename to libraries/plugins/chain/include/sophiatx/plugins/chain/chain_plugin.hpp index 64e7220f..64ca50cc 100644 --- a/libraries/plugins/chain/include/steem/plugins/chain/chain_plugin.hpp +++ b/libraries/plugins/chain/include/sophiatx/plugins/chain/chain_plugin.hpp @@ -1,18 +1,23 @@ #pragma once + +#if defined(_MSC_VER) && _MSC_FULL_VER >= 190023918 +#define _ENABLE_ATOMIC_ALIGNMENT_FIX +#endif + #include -#include +#include #include -#define STEEM_CHAIN_PLUGIN_NAME "chain" +#define SOPHIATX_CHAIN_PLUGIN_NAME "chain" -namespace steem { namespace plugins { namespace chain { +namespace sophiatx { namespace plugins { namespace chain { namespace detail { class chain_plugin_impl; } using std::unique_ptr; using namespace appbase; -using namespace steem::chain; +using namespace sophiatx::chain; class chain_plugin : public plugin< chain_plugin > { @@ -22,19 +27,19 @@ class chain_plugin : public plugin< chain_plugin > chain_plugin(); virtual ~chain_plugin(); - static const std::string& name() { static std::string name = STEEM_CHAIN_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_CHAIN_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, options_description& cfg ) override; virtual void plugin_initialize( const variables_map& options ) override; virtual void plugin_startup() override; virtual void plugin_shutdown() override; - bool accept_block( const steem::chain::signed_block& block, bool currently_syncing, uint32_t skip ); - void accept_transaction( const steem::chain::signed_transaction& trx ); + bool accept_block( const sophiatx::chain::signed_block& block, bool currently_syncing, uint32_t skip ); + void accept_transaction( const sophiatx::chain::signed_transaction& trx ); - bool block_is_on_preferred_chain( const steem::chain::block_id_type& block_id ); + bool block_is_on_preferred_chain( const sophiatx::chain::block_id_type& block_id ); - void check_time_in_block( const steem::chain::signed_block& block ); + void check_time_in_block( const sophiatx::chain::signed_block& block ); template< typename MultiIndexType > bool has_index() const @@ -80,8 +85,12 @@ class chain_plugin : public plugin< chain_plugin > // This is to synchronize plugins that have the chain plugin as an optional dependency. boost::signals2::signal on_sync; + sophiatx::chain::signed_block generate_block( const fc::time_point_sec when, const account_name_type& witness_owner, + const fc::ecc::private_key& block_signing_private_key, uint32_t skip ); + int16_t set_write_lock_hold_time( int16_t new_time ); + private: std::unique_ptr< detail::chain_plugin_impl > my; }; -} } } // steem::plugins::chain +} } } // sophiatx::plugins::chain diff --git a/libraries/plugins/debug_node/CMakeLists.txt b/libraries/plugins/debug_node/CMakeLists.txt index e9d00985..cde3ed9d 100644 --- a/libraries/plugins/debug_node/CMakeLists.txt +++ b/libraries/plugins/debug_node/CMakeLists.txt @@ -1,11 +1,11 @@ -file(GLOB HEADERS "include/steem/plugins/debug_node/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/debug_node/*.hpp") add_library( debug_node_plugin ${HEADERS} debug_node_plugin.cpp ) -target_link_libraries( debug_node_plugin chain_plugin steem_utilities ) +target_link_libraries( debug_node_plugin chain_plugin sophiatx_utilities ) target_include_directories( debug_node_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) diff --git a/libraries/plugins/debug_node/debug_node_plugin.cpp b/libraries/plugins/debug_node/debug_node_plugin.cpp index 5be83ee5..1c5f2c9e 100644 --- a/libraries/plugins/debug_node/debug_node_plugin.cpp +++ b/libraries/plugins/debug_node/debug_node_plugin.cpp @@ -1,6 +1,6 @@ -#include +#include -#include +#include #include #include @@ -10,12 +10,12 @@ #include #include -#include +#include #include #include -namespace steem { namespace plugins { namespace debug_node { +namespace sophiatx { namespace plugins { namespace debug_node { namespace detail { class debug_node_plugin_impl @@ -204,7 +204,7 @@ void debug_node_plugin::debug_generate_blocks( chain::public_key_type debug_public_key; if( args.debug_key != "" ) { - debug_private_key = steem::utilities::wif_to_key( args.debug_key ); + debug_private_key = sophiatx::utilities::wif_to_key( args.debug_key ); FC_ASSERT( debug_private_key.valid() ); debug_public_key = debug_private_key->get_public_key(); } @@ -359,4 +359,4 @@ void debug_node_plugin::plugin_shutdown() return; } -} } } // steem::plugins::debug_node +} } } // sophiatx::plugins::debug_node diff --git a/libraries/plugins/debug_node/include/steem/plugins/debug_node/debug_node_plugin.hpp b/libraries/plugins/debug_node/include/sophiatx/plugins/debug_node/debug_node_plugin.hpp similarity index 83% rename from libraries/plugins/debug_node/include/steem/plugins/debug_node/debug_node_plugin.hpp rename to libraries/plugins/debug_node/include/sophiatx/plugins/debug_node/debug_node_plugin.hpp index 7f7943db..6dd7d7f2 100644 --- a/libraries/plugins/debug_node/include/steem/plugins/debug_node/debug_node_plugin.hpp +++ b/libraries/plugins/debug_node/include/sophiatx/plugins/debug_node/debug_node_plugin.hpp @@ -1,20 +1,20 @@ #pragma once -#include +#include #include #include #include -#define STEEM_DEBUG_NODE_PLUGIN_NAME "debug_node" +#define SOPHIATX_DEBUG_NODE_PLUGIN_NAME "debug_node" -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { struct pow2; struct signed_block; } } -namespace steem { namespace plugins { namespace debug_node { +namespace sophiatx { namespace plugins { namespace debug_node { using namespace appbase; @@ -24,7 +24,7 @@ struct debug_generate_blocks_args { std::string debug_key; uint32_t count = 0; - uint32_t skip = steem::chain::database::skip_nothing; + uint32_t skip = sophiatx::chain::database::skip_nothing; uint32_t miss_blocks = 0; bool edit_if_needed = true; }; @@ -42,7 +42,7 @@ class debug_node_plugin : public plugin< debug_node_plugin > APPBASE_PLUGIN_REQUIRES( (chain::chain_plugin) ) - static const std::string& name() { static std::string name = STEEM_DEBUG_NODE_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_DEBUG_NODE_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, @@ -54,7 +54,7 @@ class debug_node_plugin : public plugin< debug_node_plugin > chain::database& database(); template< typename Lambda > - void debug_update( Lambda&& callback, uint32_t skip = steem::chain::database::skip_nothing ) + void debug_update( Lambda&& callback, uint32_t skip = sophiatx::chain::database::skip_nothing ) { // this was a method on database in Graphene chain::database& db = database(); @@ -79,14 +79,14 @@ class debug_node_plugin : public plugin< debug_node_plugin > uint32_t debug_generate_blocks( const std::string& debug_key, uint32_t count, - uint32_t skip = steem::chain::database::skip_nothing, + uint32_t skip = sophiatx::chain::database::skip_nothing, uint32_t miss_blocks = 0 ); uint32_t debug_generate_blocks_until( const std::string& debug_key, const fc::time_point_sec& head_block_time, bool generate_sparsely, - uint32_t skip = steem::chain::database::skip_nothing + uint32_t skip = sophiatx::chain::database::skip_nothing ); void set_json_object_stream( const std::string& filename ); @@ -118,13 +118,13 @@ class debug_node_plugin : public plugin< debug_node_plugin > } } } -FC_REFLECT( steem::plugins::debug_node::debug_generate_blocks_args, +FC_REFLECT( sophiatx::plugins::debug_node::debug_generate_blocks_args, (debug_key) (count) (skip) (miss_blocks) (edit_if_needed) ) -FC_REFLECT( steem::plugins::debug_node::debug_generate_blocks_return, +FC_REFLECT( sophiatx::plugins::debug_node::debug_generate_blocks_return, (blocks) ) diff --git a/libraries/plugins/follow/CMakeLists.txt b/libraries/plugins/follow/CMakeLists.txt deleted file mode 100644 index 020a5bf0..00000000 --- a/libraries/plugins/follow/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -file(GLOB HEADERS "include/steem/plugins/follow/*.hpp") - -add_library( follow_plugin - follow_plugin.cpp - follow_operations.cpp - follow_evaluators.cpp - ) - -target_link_libraries( follow_plugin chain_plugin ) -target_include_directories( follow_plugin - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) - -if( CLANG_TIDY_EXE ) - set_target_properties( - follow_plugin PROPERTIES - CXX_CLANG_TIDY "${DO_CLANG_TIDY}" - ) -endif( CLANG_TIDY_EXE ) - -install( TARGETS - follow_plugin - - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) diff --git a/libraries/plugins/follow/follow_evaluators.cpp b/libraries/plugins/follow/follow_evaluators.cpp deleted file mode 100644 index 6bbf0a94..00000000 --- a/libraries/plugins/follow/follow_evaluators.cpp +++ /dev/null @@ -1,224 +0,0 @@ -#include -#include -#include - -#include -#include - -namespace steem { namespace plugins { namespace follow { - -void follow_evaluator::do_apply( const follow_operation& o ) -{ - try - { - static map< string, follow_type > follow_type_map = []() - { - map< string, follow_type > follow_map; - follow_map[ "undefined" ] = follow_type::undefined; - follow_map[ "blog" ] = follow_type::blog; - follow_map[ "ignore" ] = follow_type::ignore; - - return follow_map; - }(); - - const auto& idx = _db.get_index().indices().get< by_follower_following >(); - auto itr = idx.find( boost::make_tuple( o.follower, o.following ) ); - - uint16_t what = 0; - bool is_following = false; - - for( const auto& target : o.what ) - { - switch( follow_type_map[ target ] ) - { - case blog: - what |= 1 << blog; - is_following = true; - break; - case ignore: - what |= 1 << ignore; - break; - default: - //ilog( "Encountered unknown option ${o}", ("o", target) ); - break; - } - } - - if( what & ( 1 << ignore ) ) - FC_ASSERT( !( what & ( 1 << blog ) ), "Cannot follow blog and ignore author at the same time" ); - - bool was_followed = false; - - if( itr == idx.end() ) - { - _db.create< follow_object >( [&]( follow_object& obj ) - { - obj.follower = o.follower; - obj.following = o.following; - obj.what = what; - }); - } - else - { - was_followed = itr->what & 1 << blog; - - _db.modify( *itr, [&]( follow_object& obj ) - { - obj.what = what; - }); - } - - const auto& follower = _db.find< follow_count_object, by_account >( o.follower ); - - if( follower == nullptr ) - { - _db.create< follow_count_object >( [&]( follow_count_object& obj ) - { - obj.account = o.follower; - - if( is_following ) - obj.following_count = 1; - }); - } - else - { - _db.modify( *follower, [&]( follow_count_object& obj ) - { - if( was_followed ) - obj.following_count--; - if( is_following ) - obj.following_count++; - }); - } - - const auto& following = _db.find< follow_count_object, by_account >( o.following ); - - if( following == nullptr ) - { - _db.create< follow_count_object >( [&]( follow_count_object& obj ) - { - obj.account = o.following; - - if( is_following ) - obj.follower_count = 1; - }); - } - else - { - _db.modify( *following, [&]( follow_count_object& obj ) - { - if( was_followed ) - obj.follower_count--; - if( is_following ) - obj.follower_count++; - }); - } - } - FC_CAPTURE_AND_RETHROW( (o) ) -} - -void reblog_evaluator::do_apply( const reblog_operation& o ) -{ - try - { - const auto& c = _db.get_comment( o.author, o.permlink ); - FC_ASSERT( c.parent_author.size() == 0, "Only top level posts can be reblogged" ); - - const auto& blog_idx = _db.get_index< blog_index >().indices().get< by_blog >(); - const auto& blog_comment_idx = _db.get_index< blog_index >().indices().get< by_comment >(); - - auto next_blog_id = 0; - auto last_blog = blog_idx.lower_bound( o.account ); - - if( last_blog != blog_idx.end() && last_blog->account == o.account ) - { - next_blog_id = last_blog->blog_feed_id + 1; - } - - auto blog_itr = blog_comment_idx.find( boost::make_tuple( c.id, o.account ) ); - - FC_ASSERT( blog_itr == blog_comment_idx.end(), "Account has already reblogged this post" ); - _db.create< blog_object >( [&]( blog_object& b ) - { - b.account = o.account; - b.comment = c.id; - b.reblogged_on = _db.head_block_time(); - b.blog_feed_id = next_blog_id; - }); - - const auto& stats_idx = _db.get_index< blog_author_stats_index,by_blogger_guest_count>(); - auto stats_itr = stats_idx.lower_bound( boost::make_tuple( o.account, c.author ) ); - if( stats_itr != stats_idx.end() && stats_itr->blogger == o.account && stats_itr->guest == c.author ) { - _db.modify( *stats_itr, [&]( blog_author_stats_object& s ) { - ++s.count; - }); - } else { - _db.create( [&]( blog_author_stats_object& s ) { - s.count = 1; - s.blogger = o.account; - s.guest = c.author; - }); - } - - const auto& feed_idx = _db.get_index< feed_index >().indices().get< by_feed >(); - const auto& comment_idx = _db.get_index< feed_index >().indices().get< by_comment >(); - const auto& idx = _db.get_index< follow_index >().indices().get< by_following_follower >(); - auto itr = idx.find( o.account ); - - if( _db.head_block_time() >= _plugin->start_feeds ) - { - while( itr != idx.end() && itr->following == o.account ) - { - - if( itr->what & ( 1 << blog ) ) - { - uint32_t next_id = 0; - auto last_feed = feed_idx.lower_bound( itr->follower ); - - if( last_feed != feed_idx.end() && last_feed->account == itr->follower ) - { - next_id = last_feed->account_feed_id + 1; - } - - auto feed_itr = comment_idx.find( boost::make_tuple( c.id, itr->follower ) ); - - if( feed_itr == comment_idx.end() ) - { - _db.create< feed_object >( [&]( feed_object& f ) - { - f.account = itr->follower; - f.reblogged_by.push_back( o.account ); - f.first_reblogged_by = o.account; - f.first_reblogged_on = _db.head_block_time(); - f.comment = c.id; - f.reblogs = 1; - f.account_feed_id = next_id; - }); - } - else - { - _db.modify( *feed_itr, [&]( feed_object& f ) - { - f.reblogged_by.push_back( o.account ); - f.reblogs++; - }); - } - - const auto& old_feed_idx = _db.get_index< feed_index >().indices().get< by_old_feed >(); - auto old_feed = old_feed_idx.lower_bound( itr->follower ); - - while( old_feed->account == itr->follower && next_id - old_feed->account_feed_id > _plugin->max_feed_size ) - { - _db.remove( *old_feed ); - old_feed = old_feed_idx.lower_bound( itr->follower ); - }; - } - - ++itr; - } - } - } - FC_CAPTURE_AND_RETHROW( (o) ) -} - -} } } // steem::follow diff --git a/libraries/plugins/follow/follow_operations.cpp b/libraries/plugins/follow/follow_operations.cpp deleted file mode 100644 index de4df92b..00000000 --- a/libraries/plugins/follow/follow_operations.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include - -#include - -namespace steem { namespace plugins{ namespace follow { - -void follow_operation::validate()const -{ - FC_ASSERT( follower != following, "You cannot follow yourself" ); -} - -void reblog_operation::validate()const -{ - FC_ASSERT( account != author, "You cannot reblog your own content" ); -} - -} } } //steem::plugins::follow - -STEEM_DEFINE_OPERATION_TYPE( steem::plugins::follow::follow_plugin_operation ) diff --git a/libraries/plugins/follow/follow_plugin.cpp b/libraries/plugins/follow/follow_plugin.cpp deleted file mode 100644 index 04ff94cf..00000000 --- a/libraries/plugins/follow/follow_plugin.cpp +++ /dev/null @@ -1,402 +0,0 @@ -#include -#include -#include - -#include - -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include - -namespace steem { namespace plugins { namespace follow { - -using namespace steem::protocol; - -namespace detail { - -class follow_plugin_impl -{ - public: - follow_plugin_impl( follow_plugin& _plugin ) : - _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ), - _self( _plugin ) {} - ~follow_plugin_impl() {} - - void pre_operation( const operation_notification& op_obj ); - void post_operation( const operation_notification& op_obj ); - - chain::database& _db; - follow_plugin& _self; - boost::signals2::connection pre_apply_connection; - boost::signals2::connection post_apply_connection; -}; - -struct pre_operation_visitor -{ - follow_plugin_impl& _plugin; - - pre_operation_visitor( follow_plugin_impl& plugin ) - : _plugin( plugin ) {} - - typedef void result_type; - - template< typename T > - void operator()( const T& )const {} - - void operator()( const vote_operation& op )const - { - try - { - auto& db = _plugin._db; - const auto& c = db.get_comment( op.author, op.permlink ); - - if( db.calculate_discussion_payout_time( c ) == fc::time_point_sec::maximum() ) return; - - const auto& cv_idx = db.get_index< comment_vote_index >().indices().get< by_comment_voter >(); - auto cv = cv_idx.find( std::make_tuple( c.id, db.get_account( op.voter ).id ) ); - - if( cv != cv_idx.end() ) - { - auto rep_delta = ( cv->rshares >> 6 ); - - const auto& rep_idx = db.get_index< reputation_index >().indices().get< by_account >(); - auto voter_rep = rep_idx.find( op.voter ); - auto author_rep = rep_idx.find( op.author ); - - if( author_rep != rep_idx.end() ) - { - // Rule #1: Must have non-negative reputation to effect another user's reputation - if( voter_rep != rep_idx.end() && voter_rep->reputation < 0 ) return; - - // Rule #2: If you are down voting another user, you must have more reputation than them to impact their reputation - if( cv->rshares < 0 && !( voter_rep != rep_idx.end() && voter_rep->reputation > author_rep->reputation - rep_delta ) ) return; - - if( rep_delta == author_rep->reputation ) - { - db.remove( *author_rep ); - } - else - { - db.modify( *author_rep, [&]( reputation_object& r ) - { - r.reputation -= ( cv->rshares >> 6 ); // Shift away precision from vests. It is noise - }); - } - } - } - } - catch( const fc::exception& e ) {} - } - - void operator()( const delete_comment_operation& op )const - { - try - { - auto& db = _plugin._db; - const auto* comment = db.find_comment( op.author, op.permlink ); - - if( comment == nullptr ) return; - if( comment->parent_author.size() ) return; - - const auto& feed_idx = db.get_index< feed_index >().indices().get< by_comment >(); - auto itr = feed_idx.lower_bound( comment->id ); - - while( itr != feed_idx.end() && itr->comment == comment->id ) - { - const auto& old_feed = *itr; - ++itr; - db.remove( old_feed ); - } - - const auto& blog_idx = db.get_index< blog_index >().indices().get< by_comment >(); - auto blog_itr = blog_idx.lower_bound( comment->id ); - - while( blog_itr != blog_idx.end() && blog_itr->comment == comment->id ) - { - const auto& old_blog = *blog_itr; - ++blog_itr; - db.remove( old_blog ); - } - } - FC_CAPTURE_AND_RETHROW() - } -}; - -struct post_operation_visitor -{ - follow_plugin_impl& _plugin; - - post_operation_visitor( follow_plugin_impl& plugin ) - : _plugin( plugin ) {} - - typedef void result_type; - - template< typename T > - void operator()( const T& )const {} - - void operator()( const custom_json_operation& op )const - { - try - { - if( op.id == STEEM_FOLLOW_PLUGIN_NAME ) - { - custom_json_operation new_cop; - - new_cop.required_auths = op.required_auths; - new_cop.required_posting_auths = op.required_posting_auths; - new_cop.id = _plugin._self.name(); - follow_operation fop; - - try - { - fop = fc::json::from_string( op.json ).as< follow_operation >(); - } - catch( const fc::exception& ) - { - return; - } - - auto new_fop = follow_plugin_operation( fop ); - new_cop.json = fc::json::to_string( new_fop ); - std::shared_ptr< custom_operation_interpreter > eval = _plugin._db.get_custom_json_evaluator( op.id ); - eval->apply( new_cop ); - } - } - FC_CAPTURE_AND_RETHROW() - } - - void operator()( const comment_operation& op )const - { - try - { - if( op.parent_author.size() > 0 ) return; - auto& db = _plugin._db; - const auto& c = db.get_comment( op.author, op.permlink ); - - if( c.created != db.head_block_time() ) return; - - const auto& idx = db.get_index< follow_index >().indices().get< by_following_follower >(); - const auto& comment_idx = db.get_index< feed_index >().indices().get< by_comment >(); - auto itr = idx.find( op.author ); - - const auto& feed_idx = db.get_index< feed_index >().indices().get< by_feed >(); - - if( db.head_block_time() >= _plugin._self.start_feeds ) - { - while( itr != idx.end() && itr->following == op.author ) - { - if( itr->what & ( 1 << blog ) ) - { - uint32_t next_id = 0; - auto last_feed = feed_idx.lower_bound( itr->follower ); - - if( last_feed != feed_idx.end() && last_feed->account == itr->follower ) - { - next_id = last_feed->account_feed_id + 1; - } - - if( comment_idx.find( boost::make_tuple( c.id, itr->follower ) ) == comment_idx.end() ) - { - db.create< feed_object >( [&]( feed_object& f ) - { - f.account = itr->follower; - f.comment = c.id; - f.account_feed_id = next_id; - }); - - const auto& old_feed_idx = db.get_index< feed_index >().indices().get< by_old_feed >(); - auto old_feed = old_feed_idx.lower_bound( itr->follower ); - - while( old_feed->account == itr->follower && next_id - old_feed->account_feed_id > _plugin._self.max_feed_size ) - { - db.remove( *old_feed ); - old_feed = old_feed_idx.lower_bound( itr->follower ); - } - } - } - - ++itr; - } - } - - const auto& blog_idx = db.get_index< blog_index >().indices().get< by_blog >(); - const auto& comment_blog_idx = db.get_index< blog_index >().indices().get< by_comment >(); - auto last_blog = blog_idx.lower_bound( op.author ); - uint32_t next_id = 0; - - if( last_blog != blog_idx.end() && last_blog->account == op.author ) - { - next_id = last_blog->blog_feed_id + 1; - } - - if( comment_blog_idx.find( boost::make_tuple( c.id, op.author ) ) == comment_blog_idx.end() ) - { - db.create< blog_object >( [&]( blog_object& b) - { - b.account = op.author; - b.comment = c.id; - b.blog_feed_id = next_id; - }); - - const auto& old_blog_idx = db.get_index< blog_index >().indices().get< by_old_blog >(); - auto old_blog = old_blog_idx.lower_bound( op.author ); - - while( old_blog->account == op.author && next_id - old_blog->blog_feed_id > _plugin._self.max_feed_size ) - { - db.remove( *old_blog ); - old_blog = old_blog_idx.lower_bound( op.author ); - } - } - } - FC_LOG_AND_RETHROW() - } - - void operator()( const vote_operation& op )const - { - try - { - auto& db = _plugin._db; - const auto& comment = db.get_comment( op.author, op.permlink ); - - if( db.calculate_discussion_payout_time( comment ) == fc::time_point_sec::maximum() ) - return; - - const auto& cv_idx = db.get_index< comment_vote_index >().indices().get< by_comment_voter >(); - auto cv = cv_idx.find( boost::make_tuple( comment.id, db.get_account( op.voter ).id ) ); - - const auto& rep_idx = db.get_index< reputation_index >().indices().get< by_account >(); - auto voter_rep = rep_idx.find( op.voter ); - auto author_rep = rep_idx.find( op.author ); - - // Rules are a plugin, do not effect consensus, and are subject to change. - // Rule #1: Must have non-negative reputation to effect another user's reputation - if( voter_rep != rep_idx.end() && voter_rep->reputation < 0 ) return; - - if( author_rep == rep_idx.end() ) - { - // Rule #2: If you are down voting another user, you must have more reputation than them to impact their reputation - // User rep is 0, so requires voter having positive rep - if( cv->rshares < 0 && !( voter_rep != rep_idx.end() && voter_rep->reputation > 0 )) return; - - db.create< reputation_object >( [&]( reputation_object& r ) - { - r.account = op.author; - r.reputation = ( cv->rshares >> 6 ); // Shift away precision from vests. It is noise - }); - } - else - { - // Rule #2: If you are down voting another user, you must have more reputation than them to impact their reputation - if( cv->rshares < 0 && !( voter_rep != rep_idx.end() && voter_rep->reputation > author_rep->reputation ) ) return; - - db.modify( *author_rep, [&]( reputation_object& r ) - { - r.reputation += ( cv->rshares >> 6 ); // Shift away precision from vests. It is noise - }); - } - } - FC_CAPTURE_AND_RETHROW() - } -}; - -void follow_plugin_impl::pre_operation( const operation_notification& note ) -{ - try - { - note.op.visit( pre_operation_visitor( *this ) ); - } - catch( const fc::assert_exception& ) - { - if( _db.is_producing() ) throw; - } -} - -void follow_plugin_impl::post_operation( const operation_notification& note ) -{ - try - { - note.op.visit( post_operation_visitor( *this ) ); - } - catch( fc::assert_exception ) - { - if( _db.is_producing() ) throw; - } -} - -} // detail - -follow_plugin::follow_plugin() {} - -follow_plugin::~follow_plugin() {} - -void follow_plugin::set_program_options( - boost::program_options::options_description& cli, - boost::program_options::options_description& cfg - ) -{ - cfg.add_options() - ("follow-max-feed-size", boost::program_options::value< uint32_t >()->default_value( 500 ), "Set the maximum size of cached feed for an account" ) - ("follow-start-feeds", boost::program_options::value< uint32_t >()->default_value( 0 ), "Block time (in epoch seconds) when to start calculating feeds" ) - ; -} - -void follow_plugin::plugin_initialize( const boost::program_options::variables_map& options ) -{ - try - { - ilog("Intializing follow plugin" ); - - my = std::make_unique< detail::follow_plugin_impl >( *this ); - - // Each plugin needs its own evaluator registry. - _custom_operation_interpreter = std::make_shared< generic_custom_operation_interpreter< steem::plugins::follow::follow_plugin_operation > >( my->_db ); - - // Add each operation evaluator to the registry - _custom_operation_interpreter->register_evaluator< follow_evaluator >( this ); - _custom_operation_interpreter->register_evaluator< reblog_evaluator >( this ); - - // Add the registry to the database so the database can delegate custom ops to the plugin - my->_db.set_custom_operation_interpreter( name(), _custom_operation_interpreter ); - - my->pre_apply_connection = my->_db.pre_apply_operation.connect( 0, [&]( const operation_notification& o ){ my->pre_operation( o ); } ); - my->post_apply_connection = my->_db.post_apply_operation.connect( 0, [&]( const operation_notification& o ){ my->post_operation( o ); } ); - add_plugin_index< follow_index >( my->_db ); - add_plugin_index< feed_index >( my->_db ); - add_plugin_index< blog_index >( my->_db ); - add_plugin_index< reputation_index >( my->_db ); - add_plugin_index< follow_count_index >( my->_db ); - add_plugin_index< blog_author_stats_index >( my->_db ); - - - if( options.count( "follow-max-feed-size" ) ) - { - uint32_t feed_size = options[ "follow-max-feed-size" ].as< uint32_t >(); - max_feed_size = feed_size; - } - - if( options.count( "follow-start-feeds" ) ) - { - start_feeds = fc::time_point_sec( options[ "follow-start-feeds" ].as< uint32_t >() ); - } - } - FC_CAPTURE_AND_RETHROW() -} - -void follow_plugin::plugin_startup() {} - -void follow_plugin::plugin_shutdown() -{ - chain::util::disconnect_signal( my->pre_apply_connection ); - chain::util::disconnect_signal( my->post_apply_connection ); -} - -} } } // steem::plugins::follow diff --git a/libraries/plugins/follow/include/steem/plugins/follow/follow_objects.hpp b/libraries/plugins/follow/include/steem/plugins/follow/follow_objects.hpp deleted file mode 100644 index 87e6e459..00000000 --- a/libraries/plugins/follow/include/steem/plugins/follow/follow_objects.hpp +++ /dev/null @@ -1,379 +0,0 @@ -#pragma once -#include - -#include - -namespace steem { namespace plugins { namespace follow { - -using namespace std; -using namespace steem::chain; -using chainbase::shared_vector; - -#ifndef STEEM_FOLLOW_SPACE_ID -#define STEEM_FOLLOW_SPACE_ID 8 -#endif - -enum follow_plugin_object_type -{ - follow_object_type = ( STEEM_FOLLOW_SPACE_ID << 8 ), - feed_object_type = ( STEEM_FOLLOW_SPACE_ID << 8 ) + 1, - reputation_object_type = ( STEEM_FOLLOW_SPACE_ID << 8 ) + 2, - blog_object_type = ( STEEM_FOLLOW_SPACE_ID << 8 ) + 3, - follow_count_object_type = ( STEEM_FOLLOW_SPACE_ID << 8 ) + 4, - blog_author_stats_object_type = ( STEEM_FOLLOW_SPACE_ID << 8 ) + 5 -}; - -enum follow_type -{ - undefined, - blog, - ignore -}; - -class follow_object : public object< follow_object_type, follow_object > -{ - public: - template< typename Constructor, typename Allocator > - follow_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - follow_object() {} - - id_type id; - - account_name_type follower; - account_name_type following; - uint16_t what = 0; -}; - -typedef oid< follow_object > follow_id_type; - - -class feed_object : public object< feed_object_type, feed_object > -{ - public: - feed_object() = delete; - - template< typename Constructor, typename Allocator > - feed_object( Constructor&& c, allocator< Allocator > a ) - :reblogged_by( a.get_segment_manager() ) - { - c( *this ); - } - - typedef shared_vector t_reblogged_by_container; - - id_type id; - - account_name_type account; - t_reblogged_by_container reblogged_by; - account_name_type first_reblogged_by; - time_point_sec first_reblogged_on; - comment_id_type comment; - uint32_t reblogs; - uint32_t account_feed_id = 0; -}; - -typedef oid< feed_object > feed_id_type; - - -class blog_object : public object< blog_object_type, blog_object > -{ - public: - template< typename Constructor, typename Allocator > - blog_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - blog_object() {} - - id_type id; - - account_name_type account; - comment_id_type comment; - time_point_sec reblogged_on; - uint32_t blog_feed_id = 0; -}; -typedef oid< blog_object > blog_id_type; - -/** - * This index is maintained to get an idea of which authors are resteemed by a particular blogger and - * how frequnetly. It is designed to give an overview of the type of people a blogger sponsors as well - * as to enable generation of filter set for a blog list. - * - * Give me the top authors promoted by this blog - * Give me all blog posts by [authors] that were resteemed by this blog - */ -class blog_author_stats_object : public object< blog_author_stats_object_type, blog_author_stats_object > -{ - public: - template< typename Constructor, typename Allocator > - blog_author_stats_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - id_type id; - account_name_type blogger; - account_name_type guest; - uint32_t count = 0; -}; - -typedef oid< blog_author_stats_object > blog_author_stats_id_type; - - - -class reputation_object : public object< reputation_object_type, reputation_object > -{ - public: - template< typename Constructor, typename Allocator > - reputation_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - reputation_object() {} - - id_type id; - - account_name_type account; - share_type reputation; -}; - -typedef oid< reputation_object > reputation_id_type; - - -class follow_count_object : public object< follow_count_object_type, follow_count_object > -{ - public: - template< typename Constructor, typename Allocator > - follow_count_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - follow_count_object() {} - - id_type id; - - account_name_type account; - uint32_t follower_count = 0; - uint32_t following_count = 0; -}; - -typedef oid< follow_count_object > follow_count_id_type; - - -struct by_following_follower; -struct by_follower_following; - -using namespace boost::multi_index; - -typedef multi_index_container< - follow_object, - indexed_by< - ordered_unique< tag< by_id >, member< follow_object, follow_id_type, &follow_object::id > >, - ordered_unique< tag< by_following_follower >, - composite_key< follow_object, - member< follow_object, account_name_type, &follow_object::following >, - member< follow_object, account_name_type, &follow_object::follower > - >, - composite_key_compare< std::less< account_name_type >, std::less< account_name_type > > - >, - ordered_unique< tag< by_follower_following >, - composite_key< follow_object, - member< follow_object, account_name_type, &follow_object::follower >, - member< follow_object, account_name_type, &follow_object::following > - >, - composite_key_compare< std::less< account_name_type >, std::less< account_name_type > > - > - >, - allocator< follow_object > -> follow_index; - -struct by_blogger_guest_count; -typedef chainbase::shared_multi_index_container< - blog_author_stats_object, - indexed_by< - ordered_unique< tag< by_id >, member< blog_author_stats_object, blog_author_stats_id_type, &blog_author_stats_object::id > >, - ordered_unique< tag< by_blogger_guest_count >, - composite_key< blog_author_stats_object, - member< blog_author_stats_object, account_name_type, &blog_author_stats_object::blogger >, - member< blog_author_stats_object, account_name_type, &blog_author_stats_object::guest >, - member< blog_author_stats_object, uint32_t, &blog_author_stats_object::count > - >, - composite_key_compare< std::less< account_name_type >, std::less< account_name_type >, greater > - > - > -> blog_author_stats_index; - -struct by_feed; -struct by_old_feed; -struct by_account; -struct by_comment; - -typedef multi_index_container< - feed_object, - indexed_by< - ordered_unique< tag< by_id >, member< feed_object, feed_id_type, &feed_object::id > >, - ordered_unique< tag< by_feed >, - composite_key< feed_object, - member< feed_object, account_name_type, &feed_object::account >, - member< feed_object, uint32_t, &feed_object::account_feed_id > - >, - composite_key_compare< std::less< account_name_type >, std::greater< uint32_t > > - >, - ordered_unique< tag< by_old_feed >, - composite_key< feed_object, - member< feed_object, account_name_type, &feed_object::account >, - member< feed_object, uint32_t, &feed_object::account_feed_id > - >, - composite_key_compare< std::less< account_name_type >, std::less< uint32_t > > - >, - ordered_unique< tag< by_account >, - composite_key< feed_object, - member< feed_object, account_name_type, &feed_object::account >, - member< feed_object, feed_id_type, &feed_object::id > - >, - composite_key_compare< std::less< account_name_type >, std::less< feed_id_type > > - >, - ordered_unique< tag< by_comment >, - composite_key< feed_object, - member< feed_object, comment_id_type, &feed_object::comment >, - member< feed_object, account_name_type, &feed_object::account > - >, - composite_key_compare< std::less< comment_id_type >, std::less< account_name_type > > - > - >, - allocator< feed_object > -> feed_index; - -struct by_blog; -struct by_old_blog; - -typedef multi_index_container< - blog_object, - indexed_by< - ordered_unique< tag< by_id >, member< blog_object, blog_id_type, &blog_object::id > >, - ordered_unique< tag< by_blog >, - composite_key< blog_object, - member< blog_object, account_name_type, &blog_object::account >, - member< blog_object, uint32_t, &blog_object::blog_feed_id > - >, - composite_key_compare< std::less< account_name_type >, std::greater< uint32_t > > - >, - ordered_unique< tag< by_old_blog >, - composite_key< blog_object, - member< blog_object, account_name_type, &blog_object::account >, - member< blog_object, uint32_t, &blog_object::blog_feed_id > - >, - composite_key_compare< std::less< account_name_type >, std::less< uint32_t > > - >, - ordered_unique< tag< by_comment >, - composite_key< blog_object, - member< blog_object, comment_id_type, &blog_object::comment >, - member< blog_object, account_name_type, &blog_object::account > - >, - composite_key_compare< std::less< comment_id_type >, std::less< account_name_type > > - > - >, - allocator< blog_object > -> blog_index; - -struct by_reputation; - -typedef multi_index_container< - reputation_object, - indexed_by< - ordered_unique< tag< by_id >, member< reputation_object, reputation_id_type, &reputation_object::id > >, - ordered_unique< tag< by_reputation >, - composite_key< reputation_object, - member< reputation_object, share_type, &reputation_object::reputation >, - member< reputation_object, account_name_type, &reputation_object::account > - >, - composite_key_compare< std::greater< share_type >, std::less< account_name_type > > - >, - ordered_unique< tag< by_account >, member< reputation_object, account_name_type, &reputation_object::account > > - >, - allocator< reputation_object > -> reputation_index; - - -struct by_followers; -struct by_following; - -typedef multi_index_container< - follow_count_object, - indexed_by< - ordered_unique< tag< by_id >, member< follow_count_object, follow_count_id_type, &follow_count_object::id > >, - ordered_unique< tag< by_account >, member< follow_count_object, account_name_type, &follow_count_object::account > >, - ordered_unique< tag< by_followers >, - composite_key< follow_count_object, - member< follow_count_object, uint32_t, &follow_count_object::follower_count >, - member< follow_count_object, follow_count_id_type, &follow_count_object::id > - >, - composite_key_compare< std::greater< uint32_t >, std::less< follow_count_id_type > > - >, - ordered_unique< tag< by_following >, - composite_key< follow_count_object, - member< follow_count_object, uint32_t, &follow_count_object::following_count >, - member< follow_count_object, follow_count_id_type, &follow_count_object::id > - >, - composite_key_compare< std::greater< uint32_t >, std::less< follow_count_id_type > > - > - >, - allocator< follow_count_object > -> follow_count_index; - -} } } // steem::plugins::follow - -FC_REFLECT_ENUM( steem::plugins::follow::follow_type, (undefined)(blog)(ignore) ) - -FC_REFLECT( steem::plugins::follow::follow_object, (id)(follower)(following)(what) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::follow::follow_object, steem::plugins::follow::follow_index ) - -FC_REFLECT( steem::plugins::follow::feed_object, (id)(account)(first_reblogged_by)(first_reblogged_on)(reblogged_by)(comment)(reblogs)(account_feed_id) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::follow::feed_object, steem::plugins::follow::feed_index ) - -FC_REFLECT( steem::plugins::follow::blog_object, (id)(account)(comment)(reblogged_on)(blog_feed_id) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::follow::blog_object, steem::plugins::follow::blog_index ) - -FC_REFLECT( steem::plugins::follow::reputation_object, (id)(account)(reputation) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::follow::reputation_object, steem::plugins::follow::reputation_index ) - -FC_REFLECT( steem::plugins::follow::follow_count_object, (id)(account)(follower_count)(following_count) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::follow::follow_count_object, steem::plugins::follow::follow_count_index ) - -FC_REFLECT( steem::plugins::follow::blog_author_stats_object, (id)(blogger)(guest)(count) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::follow::blog_author_stats_object, steem::plugins::follow::blog_author_stats_index ); - -namespace helpers -{ - template <> - class index_statistic_provider - { - public: - typedef steem::plugins::follow::feed_index IndexType; - typedef typename steem::plugins::follow::feed_object::t_reblogged_by_container t_reblogged_by_container; - - index_statistic_info gather_statistics(const IndexType& index, bool onlyStaticInfo) const - { - index_statistic_info info; - gather_index_static_data(index, &info); - - if(onlyStaticInfo == false) - { - for(const auto& o : index) - { - info._item_additional_allocation += o.reblogged_by.capacity()*sizeof(t_reblogged_by_container::value_type); - } - } - - return info; - } - }; - -} /// namespace helpers diff --git a/libraries/plugins/follow/include/steem/plugins/follow/follow_operations.hpp b/libraries/plugins/follow/include/steem/plugins/follow/follow_operations.hpp deleted file mode 100644 index a838725d..00000000 --- a/libraries/plugins/follow/include/steem/plugins/follow/follow_operations.hpp +++ /dev/null @@ -1,52 +0,0 @@ -#pragma once -#include - -#include - - -namespace steem { namespace plugins { namespace follow { - -using namespace std; -using steem::protocol::account_name_type; -using steem::protocol::base_operation; - -class follow_plugin; - -struct follow_operation : base_operation -{ - account_name_type follower; - account_name_type following; - set< string > what; /// blog, mute - - void validate()const; - - void get_required_posting_authorities( flat_set& a )const { a.insert( follower ); } -}; - -struct reblog_operation : base_operation -{ - account_name_type account; - account_name_type author; - string permlink; - - void validate()const; - - void get_required_posting_authorities( flat_set& a )const { a.insert( account ); } -}; - -typedef fc::static_variant< - follow_operation, - reblog_operation - > follow_plugin_operation; - -STEEM_DEFINE_PLUGIN_EVALUATOR( follow_plugin, follow_plugin_operation, follow ); -STEEM_DEFINE_PLUGIN_EVALUATOR( follow_plugin, follow_plugin_operation, reblog ); - -} } } // steem::plugins::follow - -FC_REFLECT( steem::plugins::follow::follow_operation, (follower)(following)(what) ) -FC_REFLECT( steem::plugins::follow::reblog_operation, (account)(author)(permlink) ) - -STEEM_DECLARE_OPERATION_TYPE( steem::plugins::follow::follow_plugin_operation ) - -FC_REFLECT_TYPENAME( steem::plugins::follow::follow_plugin_operation ) diff --git a/libraries/plugins/follow/include/steem/plugins/follow/follow_plugin.hpp b/libraries/plugins/follow/include/steem/plugins/follow/follow_plugin.hpp deleted file mode 100644 index 5076daaf..00000000 --- a/libraries/plugins/follow/include/steem/plugins/follow/follow_plugin.hpp +++ /dev/null @@ -1,45 +0,0 @@ -#pragma once -#include - -#include - -#include - - -#define STEEM_FOLLOW_PLUGIN_NAME "follow" - - -namespace steem { namespace plugins{ namespace follow { - -namespace detail { class follow_plugin_impl; } - -using namespace appbase; -using steem::chain::generic_custom_operation_interpreter; - -class follow_plugin : public appbase::plugin< follow_plugin > -{ - public: - follow_plugin(); - virtual ~follow_plugin(); - - APPBASE_PLUGIN_REQUIRES( (steem::plugins::chain::chain_plugin) ) - - static const std::string& name() { static std::string name = STEEM_FOLLOW_PLUGIN_NAME; return name; } - - virtual void set_program_options( - options_description& cli, - options_description& cfg ) override; - virtual void plugin_initialize( const variables_map& options ) override; - virtual void plugin_startup() override; - virtual void plugin_shutdown() override; - - uint32_t max_feed_size = 500; - fc::time_point_sec start_feeds; - - std::shared_ptr< generic_custom_operation_interpreter< follow_plugin_operation > > _custom_operation_interpreter; - - private: - std::unique_ptr< detail::follow_plugin_impl > my; -}; - -} } } //steem::follow diff --git a/libraries/plugins/follow/plugin.json b/libraries/plugins/follow/plugin.json deleted file mode 100644 index 6489b3f5..00000000 --- a/libraries/plugins/follow/plugin.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "plugin_name": "follow", - "plugin_namespace": "follow", - "plugin_project": "follow_plugin" -} diff --git a/libraries/plugins/json_rpc/CMakeLists.txt b/libraries/plugins/json_rpc/CMakeLists.txt index 90efc88f..cecae43a 100644 --- a/libraries/plugins/json_rpc/CMakeLists.txt +++ b/libraries/plugins/json_rpc/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB HEADERS "include/steem/plugins/json_rpc/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/json_rpc/*.hpp") add_library( json_rpc_plugin json_rpc_plugin.cpp diff --git a/libraries/plugins/json_rpc/include/steem/plugins/json_rpc/json_rpc_plugin.hpp b/libraries/plugins/json_rpc/include/sophiatx/plugins/json_rpc/json_rpc_plugin.hpp similarity index 87% rename from libraries/plugins/json_rpc/include/steem/plugins/json_rpc/json_rpc_plugin.hpp rename to libraries/plugins/json_rpc/include/sophiatx/plugins/json_rpc/json_rpc_plugin.hpp index 9743288b..8335547a 100644 --- a/libraries/plugins/json_rpc/include/steem/plugins/json_rpc/json_rpc_plugin.hpp +++ b/libraries/plugins/json_rpc/include/sophiatx/plugins/json_rpc/json_rpc_plugin.hpp @@ -35,11 +35,11 @@ * as the argument type. */ -#define STEEM_JSON_RPC_PLUGIN_NAME "json_rpc" +#define SOPHIATX_JSON_RPC_PLUGIN_NAME "json_rpc" #define JSON_RPC_REGISTER_API( API_NAME ) \ { \ - steem::plugins::json_rpc::detail::register_api_method_visitor vtor( API_NAME ); \ + sophiatx::plugins::json_rpc::detail::register_api_method_visitor vtor( API_NAME ); \ for_each_api( vtor ); \ } @@ -53,7 +53,7 @@ #define JSON_RPC_PARSE_PARAMS_ERROR (-32002) #define JSON_RPC_ERROR_DURING_CALL (-32003) -namespace steem { namespace plugins { namespace json_rpc { +namespace sophiatx { namespace plugins { namespace json_rpc { using namespace appbase; @@ -94,7 +94,7 @@ class json_rpc_plugin : public appbase::plugin< json_rpc_plugin > APPBASE_PLUGIN_REQUIRES(); virtual void set_program_options( options_description&, options_description& ) override; - static const std::string& name() { static std::string name = STEEM_JSON_RPC_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_JSON_RPC_PLUGIN_NAME; return name; } virtual void plugin_initialize( const variables_map& options ) override; virtual void plugin_startup() override; @@ -114,7 +114,7 @@ namespace detail { public: register_api_method_visitor( const std::string& api_name ) : _api_name( api_name ), - _json_rpc_plugin( appbase::app().get_plugin< steem::plugins::json_rpc::json_rpc_plugin >() ) + _json_rpc_plugin( appbase::app().get_plugin< sophiatx::plugins::json_rpc::json_rpc_plugin >() ) {} template< typename Plugin, typename Method, typename Args, typename Ret > @@ -135,11 +135,11 @@ namespace detail { private: std::string _api_name; - steem::plugins::json_rpc::json_rpc_plugin& _json_rpc_plugin; + sophiatx::plugins::json_rpc::json_rpc_plugin& _json_rpc_plugin; }; } -} } } // steem::plugins::json_rpc +} } } // sophiatx::plugins::json_rpc -FC_REFLECT( steem::plugins::json_rpc::api_method_signature, (args)(ret) ) +FC_REFLECT( sophiatx::plugins::json_rpc::api_method_signature, (args)(ret) ) diff --git a/libraries/plugins/json_rpc/include/steem/plugins/json_rpc/utility.hpp b/libraries/plugins/json_rpc/include/sophiatx/plugins/json_rpc/utility.hpp similarity index 96% rename from libraries/plugins/json_rpc/include/steem/plugins/json_rpc/utility.hpp rename to libraries/plugins/json_rpc/include/sophiatx/plugins/json_rpc/utility.hpp index 3b24b2ce..a5681220 100644 --- a/libraries/plugins/json_rpc/include/steem/plugins/json_rpc/utility.hpp +++ b/libraries/plugins/json_rpc/include/sophiatx/plugins/json_rpc/utility.hpp @@ -84,10 +84,10 @@ BOOST_PP_CAT( method, _return ) class :: method ( const BOOST_PP_CAT( method, _a #define DEFINE_LOCKLESS_APIS( class, METHODS ) \ BOOST_PP_SEQ_FOR_EACH( DEFINE_LOCKLESS_API_HELPER, class, METHODS ) -namespace steem { namespace plugins { namespace json_rpc { +namespace sophiatx { namespace plugins { namespace json_rpc { struct void_type {}; -} } } // steem::plugins::json_rpc +} } } // sophiatx::plugins::json_rpc -FC_REFLECT( steem::plugins::json_rpc::void_type, ) +FC_REFLECT( sophiatx::plugins::json_rpc::void_type, ) diff --git a/libraries/plugins/json_rpc/json_rpc_plugin.cpp b/libraries/plugins/json_rpc/json_rpc_plugin.cpp index dbc4a9ad..8d31ce55 100644 --- a/libraries/plugins/json_rpc/json_rpc_plugin.cpp +++ b/libraries/plugins/json_rpc/json_rpc_plugin.cpp @@ -1,5 +1,5 @@ -#include -#include +#include +#include #include @@ -12,7 +12,7 @@ #define ENABLE_JSON_RPC_LOG -namespace steem { namespace plugins { namespace json_rpc { +namespace sophiatx { namespace plugins { namespace json_rpc { namespace detail { @@ -472,9 +472,9 @@ string json_rpc_plugin::call( const string& message ) } -} } } // steem::plugins::json_rpc +} } } // sophiatx::plugins::json_rpc -FC_REFLECT( steem::plugins::json_rpc::detail::json_rpc_error, (code)(message)(data) ) -FC_REFLECT( steem::plugins::json_rpc::detail::json_rpc_response, (jsonrpc)(result)(error)(id) ) +FC_REFLECT( sophiatx::plugins::json_rpc::detail::json_rpc_error, (code)(message)(data) ) +FC_REFLECT( sophiatx::plugins::json_rpc::detail::json_rpc_response, (jsonrpc)(result)(error)(id) ) -FC_REFLECT( steem::plugins::json_rpc::detail::get_signature_args, (method) ) +FC_REFLECT( sophiatx::plugins::json_rpc::detail::get_signature_args, (method) ) diff --git a/libraries/plugins/market_history/CMakeLists.txt b/libraries/plugins/market_history/CMakeLists.txt deleted file mode 100644 index 130661a1..00000000 --- a/libraries/plugins/market_history/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -file(GLOB HEADERS "include/steem/plugins/market_history/*.hpp") - -add_library( market_history_plugin - market_history_plugin.cpp - ) - -target_link_libraries( market_history_plugin chain_plugin ) -target_include_directories( market_history_plugin - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) - -if( CLANG_TIDY_EXE ) - set_target_properties( - market_history_plugin PROPERTIES - CXX_CLANG_TIDY "${DO_CLANG_TIDY}" - ) -endif( CLANG_TIDY_EXE ) - -install( TARGETS - market_history_plugin - - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) \ No newline at end of file diff --git a/libraries/plugins/market_history/include/steem/plugins/market_history/market_history_plugin.hpp b/libraries/plugins/market_history/include/steem/plugins/market_history/market_history_plugin.hpp deleted file mode 100644 index f7bc612d..00000000 --- a/libraries/plugins/market_history/include/steem/plugins/market_history/market_history_plugin.hpp +++ /dev/null @@ -1,189 +0,0 @@ -#pragma once -#include - -#include - -#include - -// -// Plugins should #define their SPACE_ID's so plugins with -// conflicting SPACE_ID assignments can be compiled into the -// same binary (by simply re-assigning some of the conflicting #defined -// SPACE_ID's in a build script). -// -// Assignment of SPACE_ID's cannot be done at run-time because -// various template automagic depends on them being known at compile -// time. -// -#ifndef STEEM_MARKET_HISTORY_SPACE_ID -#define STEEM_MARKET_HISTORY_SPACE_ID 7 -#endif - -#ifndef STEEM_MARKET_HISTORY_PLUGIN_NAME -#define STEEM_MARKET_HISTORY_PLUGIN_NAME "market_history" -#endif - - -namespace steem { namespace plugins { namespace market_history { - -using namespace steem::chain; -using namespace appbase; - -enum market_history_object_types -{ - bucket_object_type = ( STEEM_MARKET_HISTORY_SPACE_ID << 8 ), - order_history_object_type = ( STEEM_MARKET_HISTORY_SPACE_ID << 8 ) + 1 -}; - -namespace detail { class market_history_plugin_impl; } - -class market_history_plugin : public plugin< market_history_plugin > -{ - public: - market_history_plugin(); - virtual ~market_history_plugin(); - - APPBASE_PLUGIN_REQUIRES( (steem::plugins::chain::chain_plugin) ) - - static const std::string& name() { static std::string name = STEEM_MARKET_HISTORY_PLUGIN_NAME; return name; } - - flat_set< uint32_t > get_tracked_buckets() const; - uint32_t get_max_history_per_bucket() const; - - virtual void set_program_options( - options_description& cli, - options_description& cfg ) override; - - protected: - virtual void plugin_initialize( const variables_map& options ) override; - virtual void plugin_startup() override; - virtual void plugin_shutdown() override; - - private: - friend class detail::market_history_plugin_impl; - std::unique_ptr< detail::market_history_plugin_impl > my; -}; - -struct bucket_object_details -{ - share_type high; - share_type low; - share_type open; - share_type close; - share_type volume; - - void fill( const share_type& val ) - { - high = val; - low = val; - open = val; - close = val; - volume = val; - } -}; - -struct bucket_object : public object< bucket_object_type, bucket_object > -{ - template< typename Constructor, typename Allocator > - bucket_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - bucket_object() {} - - id_type id; - - fc::time_point_sec open; - uint32_t seconds = 0; - - bucket_object_details steem; - bucket_object_details non_steem; - -#ifdef STEEM_ENABLE_SMT - asset_symbol_type symbol = SBD_SYMBOL; - - price high()const { return asset( non_steem.high, symbol ) / asset( steem.high, STEEM_SYMBOL ); } - price low()const { return asset( non_steem.low, symbol ) / asset( steem.low, STEEM_SYMBOL ); } -#else - price high()const { return asset( non_steem.high, SBD_SYMBOL ) / asset( steem.high, STEEM_SYMBOL ); } - price low()const { return asset( non_steem.low, SBD_SYMBOL ) / asset( steem.low, STEEM_SYMBOL ); } -#endif -}; - -typedef oid< bucket_object > bucket_id_type; - - -struct order_history_object : public object< order_history_object_type, order_history_object > -{ - template< typename Constructor, typename Allocator > - order_history_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - id_type id; - - fc::time_point_sec time; - protocol::fill_order_operation op; -}; - -typedef oid< order_history_object > order_history_id_type; - - -struct by_bucket; -typedef multi_index_container< - bucket_object, - indexed_by< - ordered_unique< tag< by_id >, member< bucket_object, bucket_id_type, &bucket_object::id > >, - ordered_unique< tag< by_bucket >, - composite_key< bucket_object, - member< bucket_object, uint32_t, &bucket_object::seconds >, - member< bucket_object, fc::time_point_sec, &bucket_object::open > - >, - composite_key_compare< std::less< uint32_t >, std::less< fc::time_point_sec > > - > - >, - allocator< bucket_object > -> bucket_index; - -struct by_time; -typedef multi_index_container< - order_history_object, - indexed_by< - ordered_unique< tag< by_id >, member< order_history_object, order_history_id_type, &order_history_object::id > >, - ordered_non_unique< tag< by_time >, member< order_history_object, time_point_sec, &order_history_object::time > > - >, - allocator< order_history_object > -> order_history_index; - -} } } // steem::plugins::market_history - -FC_REFLECT( steem::plugins::market_history::bucket_object_details, - (high) - (low) - (open) - (close) - (volume) ) - -#if defined STEEM_ENABLE_SMT -FC_REFLECT( steem::plugins::market_history::bucket_object, - (id) - (open)(seconds) - (steem)(symbol)(non_steem) - ) -#else -FC_REFLECT( steem::plugins::market_history::bucket_object, - (id) - (open)(seconds) - (steem)(non_steem) - ) -#endif - -CHAINBASE_SET_INDEX_TYPE( steem::plugins::market_history::bucket_object, steem::plugins::market_history::bucket_index ) - -FC_REFLECT( steem::plugins::market_history::order_history_object, - (id) - (time) - (op) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::market_history::order_history_object, steem::plugins::market_history::order_history_index ) diff --git a/libraries/plugins/market_history/market_history_plugin.cpp b/libraries/plugins/market_history/market_history_plugin.cpp deleted file mode 100644 index 5a923ed6..00000000 --- a/libraries/plugins/market_history/market_history_plugin.cpp +++ /dev/null @@ -1,204 +0,0 @@ -#include - -#include -#include -#include - -#include - -namespace steem { namespace plugins { namespace market_history { - -namespace detail { - -using steem::protocol::fill_order_operation; - -class market_history_plugin_impl -{ - public: - market_history_plugin_impl() : - _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ) {} - virtual ~market_history_plugin_impl() {} - - /** - * This method is called as a callback after a block is applied - * and will process/index all operations that were applied in the block. - */ - void update_market_histories( const operation_notification& o ); - - chain::database& _db; - flat_set _tracked_buckets = flat_set { 15, 60, 300, 3600, 86400 }; - int32_t _maximum_history_per_bucket_size = 1000; - boost::signals2::connection post_apply_connection; -}; - -void market_history_plugin_impl::update_market_histories( const operation_notification& o ) -{ - if( o.op.which() == operation::tag< fill_order_operation >::value ) - { - fill_order_operation op = o.op.get< fill_order_operation >(); - - const auto& bucket_idx = _db.get_index< bucket_index >().indices().get< by_bucket >(); - - _db.create< order_history_object >( [&]( order_history_object& ho ) - { - ho.time = _db.head_block_time(); - ho.op = op; - }); - - if( !_maximum_history_per_bucket_size ) return; - if( !_tracked_buckets.size() ) return; - - for( const auto& bucket : _tracked_buckets ) - { - auto cutoff = _db.head_block_time() - fc::seconds( bucket * _maximum_history_per_bucket_size ); - - auto open = fc::time_point_sec( ( _db.head_block_time().sec_since_epoch() / bucket ) * bucket ); - auto seconds = bucket; - - auto itr = bucket_idx.find( boost::make_tuple( seconds, open ) ); - if( itr == bucket_idx.end() ) - { - _db.create< bucket_object >( [&]( bucket_object& b ) - { - b.open = open; - b.seconds = bucket; - - b.steem.fill( ( op.open_pays.symbol == STEEM_SYMBOL ) ? op.open_pays.amount : op.current_pays.amount ); -#ifdef STEEM_ENABLE_SMT - b.symbol = ( op.open_pays.symbol == STEEM_SYMBOL ) ? op.current_pays.symbol : op.open_pays.symbol; -#endif - b.non_steem.fill( ( op.open_pays.symbol == STEEM_SYMBOL ) ? op.current_pays.amount : op.open_pays.amount ); - }); - } - else - { - _db.modify( *itr, [&]( bucket_object& b ) - { -#ifdef STEEM_ENABLE_SMT - b.symbol = ( op.open_pays.symbol == STEEM_SYMBOL ) ? op.current_pays.symbol : op.open_pays.symbol; -#endif - if( op.open_pays.symbol == STEEM_SYMBOL ) - { - b.steem.volume += op.open_pays.amount; - b.steem.close = op.open_pays.amount; - - b.non_steem.volume += op.current_pays.amount; - b.non_steem.close = op.current_pays.amount; - - if( b.high() < price( op.current_pays, op.open_pays ) ) - { - b.steem.high = op.open_pays.amount; - - b.non_steem.high = op.current_pays.amount; - } - - if( b.low() > price( op.current_pays, op.open_pays ) ) - { - b.steem.low = op.open_pays.amount; - - b.non_steem.low = op.current_pays.amount; - } - } - else - { - b.steem.volume += op.current_pays.amount; - b.steem.close = op.current_pays.amount; - - b.non_steem.volume += op.open_pays.amount; - b.non_steem.close = op.open_pays.amount; - - if( b.high() < price( op.open_pays, op.current_pays ) ) - { - b.steem.high = op.current_pays.amount; - - b.non_steem.high = op.open_pays.amount; - } - - if( b.low() > price( op.open_pays, op.current_pays ) ) - { - b.steem.low = op.current_pays.amount; - - b.non_steem.low = op.open_pays.amount; - } - } - }); - - if( _maximum_history_per_bucket_size > 0 ) - { - open = fc::time_point_sec(); - itr = bucket_idx.lower_bound( boost::make_tuple( seconds, open ) ); - - while( itr->seconds == seconds && itr->open < cutoff ) - { - auto old_itr = itr; - ++itr; - _db.remove( *old_itr ); - } - } - } - } - } -} - -} // detail - -market_history_plugin::market_history_plugin() {} -market_history_plugin::~market_history_plugin() {} - -void market_history_plugin::set_program_options( - boost::program_options::options_description& cli, - boost::program_options::options_description& cfg -) -{ - cfg.add_options() - ("market-history-bucket-size", boost::program_options::value()->default_value("[15,60,300,3600,86400]"), - "Track market history by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers") - ("market-history-buckets-per-size", boost::program_options::value()->default_value(5760), - "How far back in time to track history for each bucket size, measured in the number of buckets (default: 5760)") - ; -} - -void market_history_plugin::plugin_initialize( const boost::program_options::variables_map& options ) -{ - try - { - ilog( "market_history: plugin_initialize() begin" ); - my = std::make_unique< detail::market_history_plugin_impl >(); - - my->post_apply_connection = my->_db.post_apply_operation.connect( 0, [&]( const operation_notification& o ){ my->update_market_histories( o ); } ); - add_plugin_index< bucket_index >( my->_db ); - add_plugin_index< order_history_index >( my->_db ); - - if( options.count("bucket-size" ) ) - { - std::string buckets = options["bucket-size"].as< string >(); - my->_tracked_buckets = fc::json::from_string( buckets ).as< flat_set< uint32_t > >(); - } - if( options.count("history-per-size" ) ) - my->_maximum_history_per_bucket_size = options["history-per-size"].as< uint32_t >(); - - wlog( "bucket-size ${b}", ("b", my->_tracked_buckets) ); - wlog( "history-per-size ${h}", ("h", my->_maximum_history_per_bucket_size) ); - - ilog( "market_history: plugin_initialize() end" ); - } FC_CAPTURE_AND_RETHROW() -} - -void market_history_plugin::plugin_startup() {} - -void market_history_plugin::plugin_shutdown() -{ - chain::util::disconnect_signal( my->post_apply_connection ); -} - -flat_set< uint32_t > market_history_plugin::get_tracked_buckets() const -{ - return my->_tracked_buckets; -} - -uint32_t market_history_plugin::get_max_history_per_bucket() const -{ - return my->_maximum_history_per_bucket_size; -} - -} } } // steem::plugins::market_history diff --git a/libraries/plugins/market_history/plugin.json b/libraries/plugins/market_history/plugin.json deleted file mode 100644 index 67a3da35..00000000 --- a/libraries/plugins/market_history/plugin.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "plugin_name": "market_history", - "plugin_namespace": "market_history", - "plugin_project": "market_history_plugin" -} diff --git a/libraries/plugins/p2p/CMakeLists.txt b/libraries/plugins/p2p/CMakeLists.txt index 77cc34f3..f7f460fb 100644 --- a/libraries/plugins/p2p/CMakeLists.txt +++ b/libraries/plugins/p2p/CMakeLists.txt @@ -1,11 +1,11 @@ -file(GLOB HEADERS "include/steem/plugins/p2p/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/p2p/*.hpp") add_library( p2p_plugin p2p_plugin.cpp ${HEADERS} ) -target_link_libraries( p2p_plugin chain_plugin appbase steem_chain graphene_net ) +target_link_libraries( p2p_plugin chain_plugin appbase sophiatx_chain graphene_net ) target_include_directories( p2p_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) diff --git a/libraries/plugins/p2p/include/steem/plugins/p2p/p2p_plugin.hpp b/libraries/plugins/p2p/include/sophiatx/plugins/p2p/p2p_plugin.hpp similarity index 68% rename from libraries/plugins/p2p/include/steem/plugins/p2p/p2p_plugin.hpp rename to libraries/plugins/p2p/include/sophiatx/plugins/p2p/p2p_plugin.hpp index 3d93b777..8105b2ac 100644 --- a/libraries/plugins/p2p/include/steem/plugins/p2p/p2p_plugin.hpp +++ b/libraries/plugins/p2p/include/sophiatx/plugins/p2p/p2p_plugin.hpp @@ -1,12 +1,12 @@ #pragma once -#include +#include #include -#define STEEM_P2P_PLUGIN_NAME "p2p" +#define SOPHIATX_P2P_PLUGIN_NAME "p2p" -namespace steem { namespace plugins { namespace p2p { +namespace sophiatx { namespace plugins { namespace p2p { namespace bpo = boost::program_options; namespace detail { class p2p_plugin_impl; } @@ -21,18 +21,18 @@ class p2p_plugin : public appbase::plugin { virtual void set_program_options(bpo::options_description &, bpo::options_description &config_file_options) override; - static const std::string& name() { static std::string name = STEEM_P2P_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_P2P_PLUGIN_NAME; return name; } virtual void plugin_initialize(const bpo::variables_map& options) override; virtual void plugin_startup() override; virtual void plugin_shutdown() override; - void broadcast_block( const steem::protocol::signed_block& block ); - void broadcast_transaction( const steem::protocol::signed_transaction& tx ); + void broadcast_block( const sophiatx::protocol::signed_block& block ); + void broadcast_transaction( const sophiatx::protocol::signed_transaction& tx ); void set_block_production( bool producing_blocks ); private: std::unique_ptr< detail::p2p_plugin_impl > my; }; -} } } // steem::plugins::p2p +} } } // sophiatx::plugins::p2p diff --git a/libraries/plugins/p2p/p2p_plugin.cpp b/libraries/plugins/p2p/p2p_plugin.cpp index bc132bdc..3fd239a6 100644 --- a/libraries/plugins/p2p/p2p_plugin.cpp +++ b/libraries/plugins/p2p/p2p_plugin.cpp @@ -1,9 +1,9 @@ -#include +#include #include #include -#include +#include #include #include @@ -18,7 +18,7 @@ using std::string; using std::vector; -namespace steem { namespace plugins { namespace p2p { +namespace sophiatx { namespace plugins { namespace p2p { using appbase::app; @@ -28,10 +28,10 @@ using graphene::net::message; using graphene::net::block_message; using graphene::net::trx_message; -using steem::protocol::block_header; -using steem::protocol::signed_block_header; -using steem::protocol::signed_block; -using steem::protocol::block_id_type; +using sophiatx::protocol::block_header; +using sophiatx::protocol::signed_block_header; +using sophiatx::protocol::signed_block; +using sophiatx::protocol::block_id_type; namespace detail { @@ -63,7 +63,12 @@ std::vector resolve_string_to_ip_endpoints( const std::string& FC_THROW("Bad port: ${port}", ("port", port_string) ); } } - FC_CAPTURE_AND_RETHROW( (endpoint_string) ) + catch(...) + { + std::vector< fc::ip::endpoint > endpoints; + return endpoints; + } + //FC_CAPTURE_AND_RETHROW( (endpoint_string) ) } class p2p_plugin_impl : public graphene::net::node_delegate @@ -75,7 +80,7 @@ class p2p_plugin_impl : public graphene::net::node_delegate virtual ~p2p_plugin_impl() {} bool is_included_block(const block_id_type& block_id); - virtual steem::protocol::chain_id_type get_chain_id() const override; + virtual sophiatx::protocol::chain_id_type get_chain_id() const override; // node_delegate interface virtual bool has_item( const graphene::net::item_id& ) override; @@ -275,7 +280,7 @@ graphene::net::message p2p_plugin_impl::get_item( const graphene::net::item_id& }); } FC_CAPTURE_AND_RETHROW( (id) ) } -steem::protocol::chain_id_type p2p_plugin_impl::get_chain_id() const +sophiatx::protocol::chain_id_type p2p_plugin_impl::get_chain_id() const { return chain.db().get_chain_id(); } @@ -497,14 +502,15 @@ void p2p_plugin::plugin_initialize(const boost::program_options::variables_map& if( options.count( "p2p-endpoint" ) ) my->endpoint = fc::ip::endpoint::from_string( options.at( "p2p-endpoint" ).as< string >() ); - my->user_agent = "Steem Reference Implementation"; + my->user_agent = "SophiaTX Reference Implementation"; if( options.count( "p2p-max-connections" ) ) my->max_connections = options.at( "p2p-max-connections" ).as< uint32_t >(); + vector< string > seeds; if( options.count( "seed-node" ) || options.count( "p2p-seed-node" ) ) { - vector< string > seeds; + if( options.count( "seed-node" ) ) { wlog( "Option seed-node is deprecated in favor of p2p-seed-node" ); @@ -518,18 +524,26 @@ void p2p_plugin::plugin_initialize(const boost::program_options::variables_map& seeds.insert( seeds.end(), s.begin(), s.end() ); } - for( const string& endpoint_string : seeds ) + }else{ + for(int i=1; i<=6; i++){ + string seednode = string("seednode")+std::to_string(i)+string(".sophiatx.com:60000"); + seeds.push_back(seednode); + } + } + + wlog("Starting with following list of seed nodes"); + for( const string& endpoint_string : seeds ) + { + wlog(" ${s}",("s",endpoint_string)); + try { - try - { - std::vector endpoints = detail::resolve_string_to_ip_endpoints(endpoint_string); - my->seeds.insert( my->seeds.end(), endpoints.begin(), endpoints.end() ); - } - catch( const fc::exception& e ) - { - wlog( "caught exception ${e} while adding seed node ${endpoint}", + std::vector endpoints = detail::resolve_string_to_ip_endpoints(endpoint_string); + my->seeds.insert( my->seeds.end(), endpoints.begin(), endpoints.end() ); + } + catch( const fc::exception& e ) + { + wlog( "caught exception ${e} while adding seed node ${endpoint}", ("e", e.to_detail_string())("endpoint", endpoint_string) ); - } } } @@ -603,13 +617,13 @@ void p2p_plugin::plugin_shutdown() { my->node.reset(); } -void p2p_plugin::broadcast_block( const steem::protocol::signed_block& block ) +void p2p_plugin::broadcast_block( const sophiatx::protocol::signed_block& block ) { ulog("Broadcasting block #${n}", ("n", block.block_num())); my->node->broadcast( graphene::net::block_message( block ) ); } -void p2p_plugin::broadcast_transaction( const steem::protocol::signed_transaction& tx ) +void p2p_plugin::broadcast_transaction( const sophiatx::protocol::signed_transaction& tx ) { ulog("Broadcasting tx #${n}", ("id", tx.id())); my->node->broadcast( graphene::net::trx_message( tx ) ); @@ -620,4 +634,4 @@ void p2p_plugin::set_block_production( bool producing_blocks ) my->block_producer = producing_blocks; } -} } } // namespace steem::plugins::p2p +} } } // namespace sophiatx::plugins::p2p diff --git a/libraries/plugins/smt_test/CMakeLists.txt b/libraries/plugins/smt_test/CMakeLists.txt index 8f0f4bc8..c6f219f7 100644 --- a/libraries/plugins/smt_test/CMakeLists.txt +++ b/libraries/plugins/smt_test/CMakeLists.txt @@ -1,10 +1,10 @@ -file(GLOB HEADERS "include/steem/plugins/smt_test/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/smt_test/*.hpp") add_library( smt_test_plugin smt_test_plugin.cpp ) -target_link_libraries( smt_test_plugin chain_plugin steem_chain steem_protocol ) +target_link_libraries( smt_test_plugin chain_plugin sophiatx_chain sophiatx_protocol ) target_include_directories( smt_test_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) diff --git a/libraries/plugins/smt_test/include/steem/plugins/smt_test/smt_test_objects.hpp b/libraries/plugins/smt_test/include/sophiatx/plugins/smt_test/smt_test_objects.hpp similarity index 72% rename from libraries/plugins/smt_test/include/steem/plugins/smt_test/smt_test_objects.hpp rename to libraries/plugins/smt_test/include/sophiatx/plugins/smt_test/smt_test_objects.hpp index 43ad1319..afb98c37 100644 --- a/libraries/plugins/smt_test/include/steem/plugins/smt_test/smt_test_objects.hpp +++ b/libraries/plugins/smt_test/include/sophiatx/plugins/smt_test/smt_test_objects.hpp @@ -1,20 +1,20 @@ #pragma once -#include +#include #include -namespace steem { namespace plugins { namespace smt_test { +namespace sophiatx { namespace plugins { namespace smt_test { using namespace std; -using namespace steem::chain; +using namespace sophiatx::chain; -#ifndef STEEM_SMT_TEST_SPACE_ID -#define STEEM_SMT_TEST_SPACE_ID 13 +#ifndef SOPHIATX_SMT_TEST_SPACE_ID +#define SOPHIATX_SMT_TEST_SPACE_ID 13 #endif enum smt_test_object_types { - smt_token_object_type = ( STEEM_SMT_TEST_SPACE_ID << 8 ) + smt_token_object_type = ( SOPHIATX_SMT_TEST_SPACE_ID << 8 ) }; class smt_token_object : public object< smt_token_object_type, smt_token_object > @@ -30,7 +30,7 @@ class smt_token_object : public object< smt_token_object_type, smt_token_object account_name_type control_account; uint8_t decimal_places = 0; - int64_t max_supply = STEEM_MAX_SHARE_SUPPLY; + int64_t max_supply = SOPHIATX_MAX_SHARE_SUPPLY; time_point_sec generation_begin_time; time_point_sec generation_end_time; @@ -57,9 +57,9 @@ typedef multi_index_container< allocator< smt_token_object > > smt_token_index; -} } } // steem::plugins::smt_test +} } } // sophiatx::plugins::smt_test -FC_REFLECT( steem::plugins::smt_test::smt_token_object, +FC_REFLECT( sophiatx::plugins::smt_test::smt_token_object, (id) (control_account) (decimal_places) @@ -69,4 +69,4 @@ FC_REFLECT( steem::plugins::smt_test::smt_token_object, (announced_launch_time) (launch_expiration_time) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::smt_test::smt_token_object, steem::plugins::smt_test::smt_token_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::plugins::smt_test::smt_token_object, sophiatx::plugins::smt_test::smt_token_index ) diff --git a/libraries/plugins/smt_test/include/steem/plugins/smt_test/smt_test_plugin.hpp b/libraries/plugins/smt_test/include/sophiatx/plugins/smt_test/smt_test_plugin.hpp similarity index 65% rename from libraries/plugins/smt_test/include/steem/plugins/smt_test/smt_test_plugin.hpp rename to libraries/plugins/smt_test/include/sophiatx/plugins/smt_test/smt_test_plugin.hpp index c11ad688..d3524abf 100644 --- a/libraries/plugins/smt_test/include/steem/plugins/smt_test/smt_test_plugin.hpp +++ b/libraries/plugins/smt_test/include/sophiatx/plugins/smt_test/smt_test_plugin.hpp @@ -1,13 +1,13 @@ #pragma once #include -#include +#include -namespace steem { namespace plugins { namespace smt_test { +namespace sophiatx { namespace plugins { namespace smt_test { using namespace appbase; -#define STEEM_SMT_TEST_PLUGIN_NAME "smt_test" +#define SOPHIATX_SMT_TEST_PLUGIN_NAME "smt_test" class smt_test_plugin : public appbase::plugin< smt_test_plugin > { @@ -15,9 +15,9 @@ class smt_test_plugin : public appbase::plugin< smt_test_plugin > smt_test_plugin(); virtual ~smt_test_plugin(); - APPBASE_PLUGIN_REQUIRES( (steem::plugins::chain::chain_plugin) ) + APPBASE_PLUGIN_REQUIRES( (sophiatx::plugins::chain::chain_plugin) ) - static const std::string& name() { static std::string name = STEEM_SMT_TEST_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_SMT_TEST_PLUGIN_NAME; return name; } virtual void set_program_options( options_description& cli, options_description& cfg ) override; void plugin_initialize( const variables_map& options ) override; @@ -28,4 +28,4 @@ class smt_test_plugin : public appbase::plugin< smt_test_plugin > std::unique_ptr< class smt_test_plugin_impl > my; }; -} } } // steem::plugins::smt_test +} } } // sophiatx::plugins::smt_test diff --git a/libraries/plugins/smt_test/smt_test_output.py b/libraries/plugins/smt_test/smt_test_output.py index c7839796..e7e85d20 100755 --- a/libraries/plugins/smt_test/smt_test_output.py +++ b/libraries/plugins/smt_test/smt_test_output.py @@ -7,20 +7,20 @@ argv = list(sys.argv) -steemd = None -i_steemd = -1 +sophiatxd = None +i_sophiatxd = -1 for i, a in enumerate(argv): - if a.startswith("--steemd="): - _, steemd = a.split("=", 1) - i_steemd = i + if a.startswith("--sophiatxd="): + _, sophiatxd = a.split("=", 1) + i_sophiatxd = i -if steemd is None: - sys.stderr.write("missing --steemd argument\n") +if sophiatxd is None: + sys.stderr.write("missing --sophiatxd argument\n") sys.exit(1) -del argv[i_steemd] +del argv[i_sophiatxd] -with subprocess.Popen( [steemd] + argv[1:], stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) as outproc: +with subprocess.Popen( [sophiatxd] + argv[1:], stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) as outproc: while True: line = outproc.stdout.readline() line = line.decode("utf-8") diff --git a/libraries/plugins/smt_test/smt_test_plugin.cpp b/libraries/plugins/smt_test/smt_test_plugin.cpp index a78e520c..37c6bab2 100644 --- a/libraries/plugins/smt_test/smt_test_plugin.cpp +++ b/libraries/plugins/smt_test/smt_test_plugin.cpp @@ -1,22 +1,22 @@ -#include -#include +#include +#include -#include -#include -#include -#include +#include +#include +#include +#include -#include +#include -namespace steem { namespace plugins { namespace smt_test { +namespace sophiatx { namespace plugins { namespace smt_test { -using namespace steem::protocol; +using namespace sophiatx::protocol; class smt_test_plugin_impl { public: smt_test_plugin_impl( smt_test_plugin& _plugin ) : - _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ), + _db( appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db() ), _self( _plugin ) {} void pre_operation( const operation_notification& op_obj ); @@ -64,34 +64,34 @@ void smt_test_plugin_impl::post_operation( const operation_notification& note ) note.op.visit( post_operation_visitor( *this ) ); } -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT void test_alpha() { vector operations; smt_capped_generation_policy gpolicy; - uint64_t max_supply = STEEM_MAX_SHARE_SUPPLY / 6000; + uint64_t max_supply = SOPHIATX_MAX_SHARE_SUPPLY / 6000; - // set steem unit, total is 100 STEEM-satoshis = 0.1 STEEM - gpolicy.pre_soft_cap_unit.steem_unit.emplace( "founder_a", 7 ); - gpolicy.pre_soft_cap_unit.steem_unit.emplace( "founder_b", 23 ); - gpolicy.pre_soft_cap_unit.steem_unit.emplace( "founder_c", 70 ); + // set sophiatx unit, total is 100 SOPHIATX-satoshis = 0.1 SOPHIATX + gpolicy.pre_soft_cap_unit.sophiatx_unit.emplace( "founder_a", 7 ); + gpolicy.pre_soft_cap_unit.sophiatx_unit.emplace( "founder_b", 23 ); + gpolicy.pre_soft_cap_unit.sophiatx_unit.emplace( "founder_c", 70 ); // set token unit, total is 6 token-satoshis = 0.0006 ALPHA gpolicy.pre_soft_cap_unit.token_unit.emplace( "$from", 5 ); gpolicy.pre_soft_cap_unit.token_unit.emplace( "founder_d", 1 ); // no soft cap -> no soft cap unit - gpolicy.post_soft_cap_unit.steem_unit.clear(); + gpolicy.post_soft_cap_unit.sophiatx_unit.clear(); gpolicy.post_soft_cap_unit.token_unit.clear(); - gpolicy.min_steem_units_commitment.fillin_nonhidden_value( 1 ); - gpolicy.hard_cap_steem_units_commitment.fillin_nonhidden_value( max_supply ); + gpolicy.min_sophiatx_units_commitment.fillin_nonhidden_value( 1 ); + gpolicy.hard_cap_sophiatx_units_commitment.fillin_nonhidden_value( max_supply ); - gpolicy.soft_cap_percent = STEEM_100_PERCENT; + gpolicy.soft_cap_percent = SOPHIATX_100_PERCENT; - // .0006 ALPHA / 0.1 STEEM -> 1000 token-units / steem-unit + // .0006 ALPHA / 0.1 SOPHIATX -> 1000 token-units / sophiatx-unit gpolicy.min_unit_ratio = 1000; gpolicy.max_unit_ratio = 1000; @@ -130,9 +130,9 @@ void test_beta() smt_capped_generation_policy gpolicy; - // set steem unit, total is 100 STEEM-satoshis = 0.1 STEEM - gpolicy.pre_soft_cap_unit.steem_unit.emplace( "fred" , 3 ); - gpolicy.pre_soft_cap_unit.steem_unit.emplace( "george", 2 ); + // set sophiatx unit, total is 100 SOPHIATX-satoshis = 0.1 SOPHIATX + gpolicy.pre_soft_cap_unit.sophiatx_unit.emplace( "fred" , 3 ); + gpolicy.pre_soft_cap_unit.sophiatx_unit.emplace( "george", 2 ); // set token unit, total is 6 token-satoshis = 0.0006 ALPHA gpolicy.pre_soft_cap_unit.token_unit.emplace( "$from" , 7 ); @@ -140,15 +140,15 @@ void test_beta() gpolicy.pre_soft_cap_unit.token_unit.emplace( "henry" , 2 ); // no soft cap -> no soft cap unit - gpolicy.post_soft_cap_unit.steem_unit.clear(); + gpolicy.post_soft_cap_unit.sophiatx_unit.clear(); gpolicy.post_soft_cap_unit.token_unit.clear(); - gpolicy.min_steem_units_commitment.fillin_nonhidden_value( 5000000 ); - gpolicy.hard_cap_steem_units_commitment.fillin_nonhidden_value( 30000000 ); + gpolicy.min_sophiatx_units_commitment.fillin_nonhidden_value( 5000000 ); + gpolicy.hard_cap_sophiatx_units_commitment.fillin_nonhidden_value( 30000000 ); - gpolicy.soft_cap_percent = STEEM_100_PERCENT; + gpolicy.soft_cap_percent = SOPHIATX_100_PERCENT; - // .0006 ALPHA / 0.1 STEEM -> 1000 token-units / steem-unit + // .0006 ALPHA / 0.1 SOPHIATX -> 1000 token-units / sophiatx-unit gpolicy.min_unit_ratio = 50; gpolicy.max_unit_ratio = 100; @@ -186,22 +186,22 @@ void test_delta() smt_capped_generation_policy gpolicy; - // set steem unit, total is 1 STEEM-satoshi = 0.001 STEEM - gpolicy.pre_soft_cap_unit.steem_unit.emplace( "founder", 1 ); + // set sophiatx unit, total is 1 SOPHIATX-satoshi = 0.001 SOPHIATX + gpolicy.pre_soft_cap_unit.sophiatx_unit.emplace( "founder", 1 ); // set token unit, total is 10,000 token-satoshis = 0.10000 DELTA gpolicy.pre_soft_cap_unit.token_unit.emplace( "founder" , 10000 ); // no soft cap -> no soft cap unit - gpolicy.post_soft_cap_unit.steem_unit.clear(); + gpolicy.post_soft_cap_unit.sophiatx_unit.clear(); gpolicy.post_soft_cap_unit.token_unit.clear(); - gpolicy.min_steem_units_commitment.fillin_nonhidden_value( 10000000 ); - gpolicy.hard_cap_steem_units_commitment.fillin_nonhidden_value( 10000000 ); + gpolicy.min_sophiatx_units_commitment.fillin_nonhidden_value( 10000000 ); + gpolicy.hard_cap_sophiatx_units_commitment.fillin_nonhidden_value( 10000000 ); - gpolicy.soft_cap_percent = STEEM_100_PERCENT; + gpolicy.soft_cap_percent = SOPHIATX_100_PERCENT; - // .001 STEEM / .100000 DELTA -> 100 DELTA / STEEM + // .001 SOPHIATX / .100000 DELTA -> 100 DELTA / SOPHIATX gpolicy.min_unit_ratio = 1000; gpolicy.max_unit_ratio = 1000; @@ -267,7 +267,7 @@ void smt_test_plugin::plugin_initialize( const boost::program_options::variables try { ilog( "Initializing smt_test plugin" ); - chain::database& db = appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db(); + chain::database& db = appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db(); db.pre_apply_operation.connect( 0, [&]( const operation_notification& o ){ my->pre_operation( o ); } ); db.post_apply_operation.connect( 0, [&]( const operation_notification& o ){ my->post_operation( o ); } ); @@ -281,4 +281,4 @@ void smt_test_plugin::plugin_startup() {} void smt_test_plugin::plugin_shutdown() {} -} } } // steem::plugins::smt_test +} } } // sophiatx::plugins::smt_test diff --git a/libraries/plugins/tags/CMakeLists.txt b/libraries/plugins/tags/CMakeLists.txt deleted file mode 100644 index f6cda13e..00000000 --- a/libraries/plugins/tags/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -file(GLOB HEADERS "include/steem/plugins/tags/*.hpp") - -add_library( tags_plugin - tags_plugin.cpp ) - -target_link_libraries( tags_plugin chain_plugin steem_protocol appbase ) -target_include_directories( tags_plugin - PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) - -if( CLANG_TIDY_EXE ) - set_target_properties( - tags_plugin PROPERTIES - CXX_CLANG_TIDY "${DO_CLANG_TIDY}" - ) -endif( CLANG_TIDY_EXE ) - -install( TARGETS - tags_plugin - - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) diff --git a/libraries/plugins/tags/include/steem/plugins/tags/tags_plugin.hpp b/libraries/plugins/tags/include/steem/plugins/tags/tags_plugin.hpp deleted file mode 100644 index 0d366b50..00000000 --- a/libraries/plugins/tags/include/steem/plugins/tags/tags_plugin.hpp +++ /dev/null @@ -1,398 +0,0 @@ -#pragma once - -#include - -#include - -#include - - -namespace steem { namespace plugins { namespace tags { - -using namespace steem::chain; -using namespace boost::multi_index; - -using namespace appbase; - -using chainbase::object; -using chainbase::oid; -using chainbase::allocator; - -// -// Plugins should #define their SPACE_ID's so plugins with -// conflicting SPACE_ID assignments can be compiled into the -// same binary (by simply re-assigning some of the conflicting #defined -// SPACE_ID's in a build script). -// -// Assignment of SPACE_ID's cannot be done at run-time because -// various template automagic depends on them being known at compile -// time. -// -#ifndef STEEM_TAG_SPACE_ID -#define STEEM_TAG_SPACE_ID 5 -#endif - -#define STEEM_TAGS_PLUGIN_NAME "tags" - -typedef protocol::fixed_string< 32 > tag_name_type; - -// Plugins need to define object type IDs such that they do not conflict -// globally. If each plugin uses the upper 8 bits as a space identifier, -// with 0 being for chain, then the lower 8 bits are free for each plugin -// to define as they see fit. -enum -{ - tag_object_type = ( STEEM_TAG_SPACE_ID << 8 ), - tag_stats_object_type = ( STEEM_TAG_SPACE_ID << 8 ) + 1, - peer_stats_object_type = ( STEEM_TAG_SPACE_ID << 8 ) + 2, - author_tag_stats_object_type = ( STEEM_TAG_SPACE_ID << 8 ) + 3 -}; - -namespace detail { class tags_plugin_impl; } - - -/** - * The purpose of the tag object is to allow the generation and listing of - * all top level posts by a string tag. The desired sort orders include: - * - * 1. created - time of creation - * 2. maturing - about to receive a payout - * 3. active - last reply the post or any child of the post - * 4. netvotes - individual accounts voting for post minus accounts voting against it - * - * When ever a comment is modified, all tag_objects for that comment are updated to match. - */ -class tag_object : public object< tag_object_type, tag_object > -{ - public: - template< typename Constructor, typename Allocator > - tag_object( Constructor&& c, allocator< Allocator > a ) - { - c( *this ); - } - - tag_object() {} - - id_type id; - - tag_name_type tag; - time_point_sec created; - time_point_sec active; - time_point_sec cashout; - int64_t net_rshares = 0; - int32_t net_votes = 0; - int32_t children = 0; - double hot = 0; - double trending = 0; - share_type promoted_balance = 0; - - account_id_type author; - comment_id_type parent; - comment_id_type comment; - - bool is_post()const { return parent == comment_id_type(); } -}; - -typedef oid< tag_object > tag_id_type; - - -struct by_cashout; /// all posts regardless of depth -struct by_parent_created; -struct by_parent_active; -struct by_parent_promoted; -struct by_parent_net_votes; /// all top level posts by direct votes -struct by_parent_trending; -struct by_parent_children; /// all top level posts with the most discussion (replies at all levels) -struct by_parent_hot; -struct by_author_comment; -struct by_reward_fund_net_rshares; -struct by_comment; -struct by_tag; - - -typedef multi_index_container< - tag_object, - indexed_by< - ordered_unique< tag< by_id >, member< tag_object, tag_id_type, &tag_object::id > >, - ordered_unique< tag< by_comment >, - composite_key< tag_object, - member< tag_object, comment_id_type, &tag_object::comment >, - member< tag_object, tag_id_type, &tag_object::id > - >, - composite_key_compare< std::less< comment_id_type >, std::less< tag_id_type > > - >, - ordered_unique< tag< by_author_comment >, - composite_key< tag_object, - member< tag_object, account_id_type, &tag_object::author >, - member< tag_object, comment_id_type, &tag_object::comment >, - member< tag_object, tag_id_type, &tag_object::id > - >, - composite_key_compare< std::less< account_id_type >, std::less< comment_id_type >, std::less< tag_id_type > > - >, - ordered_unique< tag< by_parent_created >, - composite_key< tag_object, - member< tag_object, tag_name_type, &tag_object::tag >, - member< tag_object, comment_id_type, &tag_object::parent >, - member< tag_object, time_point_sec, &tag_object::created >, - member - >, - composite_key_compare< std::less< tag_name_type >, std::less, std::greater< time_point_sec >, std::less< tag_id_type > > - >, - ordered_unique< tag< by_parent_active >, - composite_key< tag_object, - member< tag_object, tag_name_type, &tag_object::tag >, - member< tag_object, comment_id_type, &tag_object::parent >, - member< tag_object, time_point_sec, &tag_object::active >, - member< tag_object, tag_id_type, &tag_object::id > - >, - composite_key_compare< std::less, std::less, std::greater< time_point_sec >, std::less< tag_id_type > > - >, - ordered_unique< tag< by_parent_promoted >, - composite_key< tag_object, - member< tag_object, tag_name_type, &tag_object::tag >, - member< tag_object, comment_id_type, &tag_object::parent >, - member< tag_object, share_type, &tag_object::promoted_balance >, - member< tag_object, tag_id_type, &tag_object::id > - >, - composite_key_compare< std::less, std::less, std::greater< share_type >, std::less< tag_id_type > > - >, - ordered_unique< tag< by_parent_net_votes >, - composite_key< tag_object, - member< tag_object, tag_name_type, &tag_object::tag >, - member< tag_object, comment_id_type, &tag_object::parent >, - member< tag_object, int32_t, &tag_object::net_votes >, - member< tag_object, tag_id_type, &tag_object::id > - >, - composite_key_compare< std::less, std::less, std::greater< int32_t >, std::less< tag_id_type > > - >, - ordered_unique< tag< by_parent_children >, - composite_key< tag_object, - member< tag_object, tag_name_type, &tag_object::tag >, - member< tag_object, comment_id_type, &tag_object::parent >, - member< tag_object, int32_t, &tag_object::children >, - member< tag_object, tag_id_type, &tag_object::id > - >, - composite_key_compare< std::less, std::less, std::greater< int32_t >, std::less< tag_id_type > > - >, - ordered_unique< tag< by_parent_hot >, - composite_key< tag_object, - member< tag_object, tag_name_type, &tag_object::tag >, - member< tag_object, comment_id_type, &tag_object::parent >, - member< tag_object, double, &tag_object::hot >, - member< tag_object, tag_id_type, &tag_object::id > - >, - composite_key_compare< std::less, std::less, std::greater< double >, std::less< tag_id_type > > - >, - ordered_unique< tag< by_parent_trending >, - composite_key< tag_object, - member< tag_object, tag_name_type, &tag_object::tag >, - member< tag_object, comment_id_type, &tag_object::parent >, - member< tag_object, double, &tag_object::trending >, - member< tag_object, tag_id_type, &tag_object::id > - >, - composite_key_compare< std::less, std::less, std::greater< double >, std::less< tag_id_type > > - >, - ordered_unique< tag< by_cashout >, - composite_key< tag_object, - member< tag_object, tag_name_type, &tag_object::tag >, - member< tag_object, time_point_sec, &tag_object::cashout >, - member< tag_object, tag_id_type, &tag_object::id > - >, - composite_key_compare< std::less, std::less< time_point_sec >, std::less< tag_id_type > > - >, - ordered_unique< tag< by_reward_fund_net_rshares >, - composite_key< tag_object, - member< tag_object, tag_name_type, &tag_object::tag >, - const_mem_fun< tag_object, bool, &tag_object::is_post >, - member< tag_object, int64_t, &tag_object::net_rshares >, - member< tag_object, tag_id_type, &tag_object::id > - >, - composite_key_compare< std::less, std::less< bool >,std::greater< int64_t >, std::less< tag_id_type > > - > - >, - allocator< tag_object > -> tag_index; - -/** - * The purpose of this index is to quickly identify how popular various tags by maintaining variou sums over - * all posts under a particular tag - */ -class tag_stats_object : public object< tag_stats_object_type, tag_stats_object > -{ - public: - template< typename Constructor, typename Allocator > - tag_stats_object( Constructor&& c, allocator< Allocator > ) - { - c( *this ); - } - - tag_stats_object() {} - - id_type id; - - tag_name_type tag; - asset total_payout = asset( 0, SBD_SYMBOL ); - int32_t net_votes = 0; - uint32_t top_posts = 0; - uint32_t comments = 0; - fc::uint128 total_trending = 0; -}; - -typedef oid< tag_stats_object > tag_stats_id_type; - -struct by_comments; -struct by_top_posts; -struct by_trending; - -typedef multi_index_container< - tag_stats_object, - indexed_by< - ordered_unique< tag< by_id >, member< tag_stats_object, tag_stats_id_type, &tag_stats_object::id > >, - ordered_unique< tag< by_tag >, member< tag_stats_object, tag_name_type, &tag_stats_object::tag > >, - /* - ordered_non_unique< tag< by_comments >, - composite_key< tag_stats_object, - member< tag_stats_object, uint32_t, &tag_stats_object::comments >, - member< tag_stats_object, tag_name_type, &tag_stats_object::tag > - >, - composite_key_compare< std::less< tag_name_type >, std::greater< uint32_t > > - >, - ordered_non_unique< tag< by_top_posts >, - composite_key< tag_stats_object, - member< tag_stats_object, uint32_t, &tag_stats_object::top_posts >, - member< tag_stats_object, tag_name_type, &tag_stats_object::tag > - >, - composite_key_compare< std::less< tag_name_type >, std::greater< uint32_t > > - >, - */ - ordered_non_unique< tag< by_trending >, - composite_key< tag_stats_object, - member< tag_stats_object, fc::uint128 , &tag_stats_object::total_trending >, - member< tag_stats_object, tag_name_type, &tag_stats_object::tag > - >, - composite_key_compare< std::greater< fc::uint128 >, std::less< tag_name_type > > - > - >, - allocator< tag_stats_object > -> tag_stats_index; - - -/** - * This purpose of this object is to maintain stats about which tags an author uses, how frequnetly, and - * how many total earnings of all posts by author in tag. It also allows us to answer the question of which - * authors earn the most in each tag category. This helps users to discover the best bloggers to follow for - * particular tags. - */ -class author_tag_stats_object : public object< author_tag_stats_object_type, author_tag_stats_object > -{ - public: - template< typename Constructor, typename Allocator > - author_tag_stats_object( Constructor&& c, allocator< Allocator > ) - { - c( *this ); - } - - id_type id; - account_id_type author; - tag_name_type tag; - asset total_rewards = asset( 0, SBD_SYMBOL ); - uint32_t total_posts = 0; -}; -typedef oid< author_tag_stats_object > author_tag_stats_id_type; - -struct by_author_tag_posts; -struct by_author_posts_tag; -using std::less; -using std::greater; - -typedef chainbase::shared_multi_index_container< - author_tag_stats_object, - indexed_by< - ordered_unique< tag< by_id >, - member< author_tag_stats_object, author_tag_stats_id_type, &author_tag_stats_object::id > - >, - ordered_unique< tag< by_author_posts_tag >, - composite_key< author_tag_stats_object, - member< author_tag_stats_object, account_id_type, &author_tag_stats_object::author >, - member< author_tag_stats_object, uint32_t, &author_tag_stats_object::total_posts >, - member< author_tag_stats_object, tag_name_type, &author_tag_stats_object::tag > - >, - composite_key_compare< less< account_id_type >, greater< uint32_t >, less< tag_name_type > > - >, - ordered_unique< tag< by_author_tag_posts >, - composite_key< author_tag_stats_object, - member< author_tag_stats_object, account_id_type, &author_tag_stats_object::author >, - member< author_tag_stats_object, tag_name_type, &author_tag_stats_object::tag >, - member< author_tag_stats_object, uint32_t, &author_tag_stats_object::total_posts > - >, - composite_key_compare< less< account_id_type >, less< tag_name_type >, greater< uint32_t > > - > - > -> author_tag_stats_index; - -/** - * Used to parse the metadata from the comment json_meta field. - */ -struct comment_metadata { set tags; }; - -/** - * This plugin will scan all changes to posts and/or their meta data and - * - */ -class tags_plugin : public plugin< tags_plugin > -{ - public: - tags_plugin(); - virtual ~tags_plugin(); - - APPBASE_PLUGIN_REQUIRES( (steem::plugins::chain::chain_plugin) ) - - static const std::string& name() { static std::string name = STEEM_TAGS_PLUGIN_NAME; return name; } - - virtual void set_program_options( - options_description& cli, - options_description& cfg) override; - virtual void plugin_initialize( const variables_map& options ) override; - virtual void plugin_startup() override; - virtual void plugin_shutdown() override; - - friend class detail::tags_plugin_impl; - - private: - std::unique_ptr< detail::tags_plugin_impl > my; -}; - -/** - * This API is used to query data maintained by the tags_plugin - */ -/* -class tag_api : public std::enable_shared_from_this { - public: - tag_api(){}; - tag_api(const app::api_context& ctx){}//:_app(&ctx.app){} - - void on_api_startup(){ - } - - vector get_tags()const { return vector(); } - - private: - //app::application* _app = nullptr; -}; -*/ - - -} } } //steem::plugins::tags - -FC_REFLECT( steem::plugins::tags::tag_object, - (id)(tag)(created)(active)(cashout)(net_rshares)(net_votes)(hot)(trending)(promoted_balance)(children)(author)(parent)(comment) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::tags::tag_object, steem::plugins::tags::tag_index ) - -FC_REFLECT( steem::plugins::tags::tag_stats_object, - (id)(tag)(total_payout)(net_votes)(top_posts)(comments)(total_trending) ); -CHAINBASE_SET_INDEX_TYPE( steem::plugins::tags::tag_stats_object, steem::plugins::tags::tag_stats_index ) - -FC_REFLECT( steem::plugins::tags::comment_metadata, (tags) ); - -FC_REFLECT( steem::plugins::tags::author_tag_stats_object, (id)(author)(tag)(total_posts)(total_rewards) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::tags::author_tag_stats_object, steem::plugins::tags::author_tag_stats_index ) diff --git a/libraries/plugins/tags/plugin.json b/libraries/plugins/tags/plugin.json deleted file mode 100644 index a7c37644..00000000 --- a/libraries/plugins/tags/plugin.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "plugin_name": "tags", - "plugin_namespace": "tags", - "plugin_project": "tags_plugin" -} diff --git a/libraries/plugins/tags/tags_plugin.cpp b/libraries/plugins/tags/tags_plugin.cpp deleted file mode 100644 index f3a4b9c0..00000000 --- a/libraries/plugins/tags/tags_plugin.cpp +++ /dev/null @@ -1,552 +0,0 @@ -#include - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -namespace steem { namespace plugins { namespace tags { - -/** - * https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9#.lcbj6auuw - */ -template< int64_t S, int32_t T > -double calculate_score( const share_type& score, const time_point_sec& created ) -{ - /// new algorithm - auto mod_score = score.value / S; - - /// reddit algorithm - double order = log10( std::max( std::abs( mod_score ), 1) ); - int sign = 0; - if( mod_score > 0 ) sign = 1; - else if( mod_score < 0 ) sign = -1; - - return sign * order + double( created.sec_since_epoch() ) / double( T ); -} - -inline double calculate_hot( const share_type& score, const time_point_sec& created ) -{ - return calculate_score< 10000000, 10000 >( score, created ); -} - -inline double calculate_trending( const share_type& score, const time_point_sec& created ) -{ - return calculate_score< 10000000, 480000 >( score, created ); -} - -namespace detail { - -using namespace steem::protocol; - -class tags_plugin_impl -{ - public: - tags_plugin_impl(); - virtual ~tags_plugin_impl(); - - void pre_operation( const operation_notification& note ); - void on_operation( const operation_notification& note ); - - chain::database& _db; - fc::time_point_sec _promoted_start_time; - bool _started = false; - boost::signals2::connection pre_apply_connection; - boost::signals2::connection post_apply_connection; - boost::signals2::connection on_sync_connection; - - void remove_stats( const tag_object& tag, const tag_stats_object& stats )const; - void add_stats( const tag_object& tag, const tag_stats_object& stats )const; - void remove_tag( const tag_object& tag )const; - const tag_stats_object& get_stats( const string& tag )const; - comment_metadata filter_tags( const comment_object& c, const comment_content_object& con )const; - void update_tag( const tag_object& current, const comment_object& comment, double hot, double trending )const; - void create_tag( const string& tag, const comment_object& comment, double hot, double trending )const; - void update_tags( const comment_object& c, bool parse_tags = false )const; -}; - -tags_plugin_impl::tags_plugin_impl() : - _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ) {} - -tags_plugin_impl::~tags_plugin_impl() {} - -void tags_plugin_impl::remove_stats( const tag_object& tag, const tag_stats_object& stats )const -{ - _db.modify( stats, [&]( tag_stats_object& s ) - { - if( tag.parent == comment_id_type() ) - { - s.top_posts--; - } - else - { - s.comments--; - } - s.total_trending -= static_cast(tag.trending); - s.net_votes -= tag.net_votes; - }); -} - -void tags_plugin_impl::add_stats( const tag_object& tag, const tag_stats_object& stats )const -{ - _db.modify( stats, [&]( tag_stats_object& s ) - { - if( tag.parent == comment_id_type() ) - { - s.top_posts++; - } - else - { - s.comments++; - } - s.total_trending += static_cast(tag.trending); - s.net_votes += tag.net_votes; - }); -} - -void tags_plugin_impl::remove_tag( const tag_object& tag )const -{ - /// TODO: update tag stats object - _db.remove(tag); - - const auto& idx = _db.get_index().indices().get(); - auto itr = idx.lower_bound( boost::make_tuple(tag.author,tag.tag) ); - if( itr != idx.end() && itr->author == tag.author && itr->tag == tag.tag ) - { - _db.modify( *itr, [&]( author_tag_stats_object& stats ) - { - stats.total_posts--; - }); - } -} - -const tag_stats_object& tags_plugin_impl::get_stats( const string& tag )const -{ - const auto& stats_idx = _db.get_index().indices().get(); - auto itr = stats_idx.find( tag ); - if( itr != stats_idx.end() ) - return *itr; - - return _db.create( [&]( tag_stats_object& stats ) - { - stats.tag = tag; - }); -} - -comment_metadata tags_plugin_impl::filter_tags( const comment_object& c, const comment_content_object& con ) const -{ - comment_metadata meta; - - if( con.json_metadata.size() ) - { - try - { - meta = fc::json::from_string( to_string( con.json_metadata ) ).as< comment_metadata >(); - } - catch( const fc::exception& e ) - { - // Do nothing on malformed json_metadata - } - } - - // We need to write the transformed tags into a temporary - // local container because we can't modify meta.tags concurrently - // as we iterate over it. - set< string > lower_tags; - - uint8_t tag_limit = 5; - uint8_t count = 0; - for( const string& tag : meta.tags ) - { - ++count; - if( count > tag_limit || lower_tags.size() > tag_limit ) - break; - if( tag == "" ) - continue; - lower_tags.insert( fc::to_lower( tag ) ); - } - - /// the universal tag applies to everything safe for work or nsfw with a non-negative payout - if( c.net_rshares >= 0 ) - { - lower_tags.insert( string() ); /// add it to the universal tag - } - - meta.tags = lower_tags; /// TODO: std::move??? - - return meta; -} - -void tags_plugin_impl::update_tag( const tag_object& current, const comment_object& comment, double hot, double trending )const -{ - const auto& stats = get_stats( current.tag ); - remove_stats( current, stats ); - - if( comment.cashout_time != fc::time_point_sec::maximum() ) { - _db.modify( current, [&]( tag_object& obj ) { - obj.active = comment.active; - obj.cashout = _db.calculate_discussion_payout_time( comment ); - obj.children = comment.children; - obj.net_rshares = comment.net_rshares.value; - obj.net_votes = comment.net_votes; - obj.hot = hot; - obj.trending = trending; - if( obj.cashout == fc::time_point_sec() ) - obj.promoted_balance = 0; - }); - add_stats( current, stats ); - } else { - _db.remove( current ); - } -} - -void tags_plugin_impl::create_tag( const string& tag, const comment_object& comment, double hot, double trending )const -{ - comment_id_type parent; - account_id_type author = _db.get_account( comment.author ).id; - - if( comment.parent_author.size() ) - parent = _db.get_comment( comment.parent_author, comment.parent_permlink ).id; - - const auto& tag_obj = _db.create( [&]( tag_object& obj ) - { - obj.tag = tag; - obj.comment = comment.id; - obj.parent = parent; - obj.created = comment.created; - obj.active = comment.active; - obj.cashout = comment.cashout_time; - obj.net_votes = comment.net_votes; - obj.children = comment.children; - obj.net_rshares = comment.net_rshares.value; - obj.author = author; - obj.hot = hot; - obj.trending = trending; - }); - add_stats( tag_obj, get_stats( tag ) ); - - - const auto& idx = _db.get_index().indices().get(); - auto itr = idx.lower_bound( boost::make_tuple(author,tag) ); - if( itr != idx.end() && itr->author == author && itr->tag == tag ) - { - _db.modify( *itr, [&]( author_tag_stats_object& stats ) - { - stats.total_posts++; - }); - } - else - { - _db.create( [&]( author_tag_stats_object& stats ) - { - stats.author = author; - stats.tag = tag; - stats.total_posts = 1; - }); - } -} - -/** finds tags that have been added or removed or updated */ -void tags_plugin_impl::update_tags( const comment_object& c, bool parse_tags )const -{ - try { - - auto hot = calculate_hot( c.net_rshares, c.created ); - auto trending = calculate_trending( c.net_rshares, c.created ); - - const auto& comment_idx = _db.get_index< tag_index >().indices().get< by_comment >(); - -#ifndef IS_LOW_MEM - if( parse_tags ) - { - auto meta = filter_tags( c, _db.get< comment_content_object, chain::by_comment >( c.id ) ); - auto citr = comment_idx.lower_bound( c.id ); - - map< string, const tag_object* > existing_tags; - vector< const tag_object* > remove_queue; - - while( citr != comment_idx.end() && citr->comment == c.id ) - { - const tag_object* tag = &*citr; - ++citr; - - if( meta.tags.find( tag->tag ) == meta.tags.end() ) - { - remove_queue.push_back(tag); - } - else - { - existing_tags[tag->tag] = tag; - } - } - - for( const auto& tag : meta.tags ) - { - auto existing = existing_tags.find(tag); - - if( existing == existing_tags.end() ) - { - create_tag( tag, c, hot, trending ); - } - else - { - update_tag( *existing->second, c, hot, trending ); - } - } - - for( const auto& item : remove_queue ) - remove_tag(*item); - } - else -#endif - { - auto citr = comment_idx.lower_bound( c.id ); - - while( citr != comment_idx.end() && citr->comment == c.id ) - { - update_tag( *citr, c, hot, trending ); - ++citr; - } - } - - if( c.parent_author.size() ) - { - update_tags( _db.get_comment( c.parent_author, c.parent_permlink ) ); - } - } FC_CAPTURE_LOG_AND_RETHROW( (c) ) -} - -struct pre_apply_operation_visitor -{ - pre_apply_operation_visitor( database& db ) : _db( db ) {}; - typedef void result_type; - - database& _db; - - void operator()( const delete_comment_operation& op )const - { - const auto& comment = _db.find< comment_object, chain::by_permlink >( boost::make_tuple( op.author, op.permlink ) ); - - if( comment == nullptr ) - return; - - const auto& idx = _db.get_index< tag_index, by_author_comment >(); - const auto& auth = _db.get_account( op.author ); - - auto tag_itr = idx.lower_bound( boost::make_tuple( auth.id, comment->id ) ); - vector< const tag_object* > to_remove; - - while( tag_itr != idx.end() && tag_itr->author == auth.id && tag_itr->comment == comment->id ) - { - to_remove.push_back( &(*tag_itr) ); - ++tag_itr; - } - - for( const auto* tag_ptr : to_remove ) - { - _db.remove( *tag_ptr ); - } - } - - template - void operator()( Op&& )const{} /// ignore all other ops -}; - -struct operation_visitor -{ - operation_visitor( tags_plugin_impl& my ) - : _my( my ) {}; - - typedef void result_type; - - tags_plugin_impl& _my; - - void operator()( const comment_operation& op )const - { - if( _my._started ) - { - _my.update_tags( _my._db.get_comment( op.author, op.permlink ), op.json_metadata.size() ); - } - } - - void operator()( const transfer_operation& op )const - { - if( _my._db.head_block_time() >= _my._promoted_start_time && op.to == STEEM_NULL_ACCOUNT && op.amount.symbol == SBD_SYMBOL ) - { - vector part; part.reserve(4); - auto path = op.memo; - boost::split( part, path, boost::is_any_of("/") ); - if( part.size() > 1 && part[0].size() && part[0][0] == '@' ) - { - auto acnt = part[0].substr(1); - auto perm = part[1]; - - auto c = _my._db.find_comment( acnt, perm ); - if( c && c->parent_author.size() == 0 ) - { - const auto& comment_idx = _my._db.get_index().indices().get(); - auto citr = comment_idx.lower_bound( c->id ); - while( citr != comment_idx.end() && citr->comment == c->id ) - { - _my._db.modify( *citr, [&]( tag_object& t ) - { - if( t.cashout != fc::time_point_sec::maximum() ) - t.promoted_balance += op.amount.amount; - }); - ++citr; - } - } - else - { - ilog( "unable to find body" ); - } - } - } - } - - void operator()( const vote_operation& op )const - { - if( _my._started ) - { - _my.update_tags( _my._db.get_comment( op.author, op.permlink ) ); - } - } - - void operator()( const comment_reward_operation& op )const - { - const auto& c = _my._db.get_comment( op.author, op.permlink ); - _my.update_tags( c ); - -#ifndef IS_LOW_MEM - comment_metadata meta = _my.filter_tags( c, _my._db.get< comment_content_object, chain::by_comment >( c.id ) ); - - for( const string& tag : meta.tags ) - { - _my._db.modify( _my.get_stats( tag ), [&]( tag_stats_object& ts ) - { - ts.total_payout += op.payout; - }); - } -#endif - } - - void operator()( const comment_payout_update_operation& op )const - { - const auto& c = _my._db.get_comment( op.author, op.permlink ); - _my.update_tags( c, !_my._started ); - } - - template - void operator()( Op&& )const{} /// ignore all other ops -}; - -void tags_plugin_impl::pre_operation( const operation_notification& note ) -{ - try - { - /// plugins shouldn't ever throw - note.op.visit( pre_apply_operation_visitor( _db ) ); - } - catch ( const fc::exception& e ) - { - edump( (e.to_detail_string()) ); - } - catch ( ... ) - { - elog( "unhandled exception" ); - } -} - -void tags_plugin_impl::on_operation( const operation_notification& note ) -{ - try - { - /// plugins shouldn't ever throw - note.op.visit( operation_visitor( *this ) ); - } - catch ( const fc::exception& e ) - { - edump( (e.to_detail_string()) ); - } - catch ( ... ) - { - elog( "unhandled exception" ); - } -} - -} /// end detail namespace - -tags_plugin::tags_plugin() {} -tags_plugin::~tags_plugin() {} - -void tags_plugin::set_program_options( - boost::program_options::options_description& cli, - boost::program_options::options_description& cfg - ) -{ - cfg.add_options() - ("tags-start-promoted", boost::program_options::value< uint32_t >()->default_value( 0 ), "Block time (in epoch seconds) when to start calculating promoted content. Should be 1 week prior to current time." ) - ("tags-skip-startup-update", bpo::bool_switch()->default_value(false), "Skip updating tags on startup. Can safely be skipped when starting a previously running node. Should not be skipped when reindexing.") - ; -} - -void tags_plugin::plugin_initialize(const boost::program_options::variables_map& options) -{ - ilog("Intializing tags plugin" ); - my = std::make_unique< detail::tags_plugin_impl >(); - - my->pre_apply_connection = my->_db.pre_apply_operation.connect( 0, [&]( const operation_notification& note ){ my->pre_operation( note ); } ); - my->post_apply_connection = my->_db.post_apply_operation.connect( 0, [&]( const operation_notification& note ){ my->on_operation( note ); } ); - - if( !options.at( "tags-skip-startup-update" ).as< bool >() ) - { - my->on_sync_connection = appbase::app().get_plugin< chain::chain_plugin >().on_sync.connect( 0, [this]() - { - ilog( "Updating all tag stats on startup" ); - my->_db.with_write_lock( [this]() - { - // for each comment that has not been paid, update tags - const auto& comment_idx = my->_db.get_index< comment_index, by_cashout_time >(); - for( auto itr = comment_idx.begin(); itr != comment_idx.end() && itr->cashout_time != fc::time_point_sec::maximum(); ++itr ) - { - my->update_tags( *itr, true ); - } - }); - }); - } - - add_plugin_index< tag_index >( my->_db ); - add_plugin_index< tag_stats_index >( my->_db ); - add_plugin_index< author_tag_stats_index >( my->_db ); - - if( options.count( "tags-start-promoted" ) ) - { - my->_promoted_start_time = fc::time_point_sec( options[ "tags-start-promoted" ].as< uint32_t >() ); - idump( (my->_promoted_start_time) ); - } -} - - -void tags_plugin::plugin_startup() -{ - my->_started = true; -} - - void tags_plugin::plugin_shutdown() -{ - chain::util::disconnect_signal( my->pre_apply_connection ); - chain::util::disconnect_signal( my->post_apply_connection ); -} - -} } } /// steem::plugins::tags diff --git a/libraries/plugins/webserver/CMakeLists.txt b/libraries/plugins/webserver/CMakeLists.txt index efcd4962..9aac113a 100644 --- a/libraries/plugins/webserver/CMakeLists.txt +++ b/libraries/plugins/webserver/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB HEADERS "include/steem/plugins/webserver/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/webserver/*.hpp") add_library( webserver_plugin webserver_plugin.cpp diff --git a/libraries/plugins/webserver/include/steem/plugins/webserver/webserver_plugin.hpp b/libraries/plugins/webserver/include/sophiatx/plugins/webserver/webserver_plugin.hpp similarity index 84% rename from libraries/plugins/webserver/include/steem/plugins/webserver/webserver_plugin.hpp rename to libraries/plugins/webserver/include/sophiatx/plugins/webserver/webserver_plugin.hpp index 52763fb7..7230f8ef 100644 --- a/libraries/plugins/webserver/include/steem/plugins/webserver/webserver_plugin.hpp +++ b/libraries/plugins/webserver/include/sophiatx/plugins/webserver/webserver_plugin.hpp @@ -1,14 +1,14 @@ #pragma once #include -#include +#include #include #include -#define STEEM_WEBSERVER_PLUGIN_NAME "webserver" +#define SOPHIATX_WEBSERVER_PLUGIN_NAME "webserver" -namespace steem { namespace plugins { namespace webserver { +namespace sophiatx { namespace plugins { namespace webserver { namespace detail { class webserver_plugin_impl; } @@ -35,7 +35,7 @@ class webserver_plugin : public appbase::plugin< webserver_plugin > APPBASE_PLUGIN_REQUIRES( (plugins::json_rpc::json_rpc_plugin) ); - static const std::string& name() { static std::string name = STEEM_WEBSERVER_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_WEBSERVER_PLUGIN_NAME; return name; } virtual void set_program_options(options_description&, options_description& cfg) override; @@ -48,4 +48,4 @@ class webserver_plugin : public appbase::plugin< webserver_plugin > std::unique_ptr< detail::webserver_plugin_impl > my; }; -} } } // steem::plugins::webserver +} } } // sophiatx::plugins::webserver diff --git a/libraries/plugins/webserver/webserver_plugin.cpp b/libraries/plugins/webserver/webserver_plugin.cpp index 34d6c3c2..a8d17816 100644 --- a/libraries/plugins/webserver/webserver_plugin.cpp +++ b/libraries/plugins/webserver/webserver_plugin.cpp @@ -1,6 +1,6 @@ -#include +#include -#include +#include #include #include @@ -18,13 +18,12 @@ #include #include #include -#include #include #include #include -namespace steem { namespace plugins { namespace webserver { +namespace sophiatx { namespace plugins { namespace webserver { namespace asio = boost::asio; @@ -328,8 +327,8 @@ void webserver_plugin::set_program_options( options_description&, options_descri ("webserver-http-endpoint", bpo::value< string >(), "Local http endpoint for webserver requests.") ("webserver-ws-endpoint", bpo::value< string >(), "Local websocket endpoint for webserver requests.") ("rpc-endpoint", bpo::value< string >(), "Local http and websocket endpoint for webserver requests. Deprecated in favor of webserver-http-endpoint and webserver-ws-endpoint" ) - ("webserver-thread-pool-size", bpo::value()->default_value(32), - "Number of threads used to handle queries. Default: 32.") + ("webserver-thread-pool-size", bpo::value()->default_value(16), + "Number of threads used to handle queries. Default: 16.") ; } @@ -358,6 +357,8 @@ void webserver_plugin::plugin_initialize( const variables_map& options ) ilog( "configured ws to listen on ${ep}", ("ep", endpoints[0]) ); } + ilog("still parsing stuff... "); + if( options.count( "rpc-endpoint" ) ) { auto endpoint = options.at( "rpc-endpoint" ).as< string >(); @@ -405,4 +406,4 @@ void webserver_plugin::plugin_shutdown() my->stop_webserver(); } -} } } // steem::plugins::webserver +} } } // sophiatx::plugins::webserver diff --git a/libraries/plugins/witness/CMakeLists.txt b/libraries/plugins/witness/CMakeLists.txt index 0093afe2..06464ec6 100644 --- a/libraries/plugins/witness/CMakeLists.txt +++ b/libraries/plugins/witness/CMakeLists.txt @@ -1,11 +1,11 @@ -file(GLOB HEADERS "include/steem/plugins/witness/*.hpp") +file(GLOB HEADERS "include/sophiatx/plugins/witness/*.hpp") add_library( witness_plugin witness_plugin.cpp ${HEADERS} ) -target_link_libraries( witness_plugin p2p_plugin chain_plugin appbase steem_chain steem_utilities steem_utilities ) +target_link_libraries( witness_plugin p2p_plugin chain_plugin appbase sophiatx_chain sophiatx_utilities sophiatx_utilities ) target_include_directories( witness_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) diff --git a/libraries/plugins/witness/include/steem/plugins/witness/witness_objects.hpp b/libraries/plugins/witness/include/sophiatx/plugins/witness/witness_objects.hpp similarity index 74% rename from libraries/plugins/witness/include/steem/plugins/witness/witness_objects.hpp rename to libraries/plugins/witness/include/sophiatx/plugins/witness/witness_objects.hpp index 0d5b5c6c..f13b59a4 100644 --- a/libraries/plugins/witness/include/steem/plugins/witness/witness_objects.hpp +++ b/libraries/plugins/witness/include/sophiatx/plugins/witness/witness_objects.hpp @@ -1,23 +1,23 @@ #pragma once -#include +#include #include -namespace steem { namespace plugins{ namespace witness { +namespace sophiatx { namespace plugins{ namespace witness { using namespace std; -using namespace steem::chain; +using namespace sophiatx::chain; -#ifndef STEEM_WITNESS_SPACE_ID -#define STEEM_WITNESS_SPACE_ID 12 +#ifndef SOPHIATX_WITNESS_SPACE_ID +#define SOPHIATX_WITNESS_SPACE_ID 12 #endif enum witness_plugin_object_type { - account_bandwidth_object_type = ( STEEM_WITNESS_SPACE_ID << 8 ), - content_edit_lock_object_type = ( STEEM_WITNESS_SPACE_ID << 8 ) + 1, - reserve_ratio_object_type = ( STEEM_WITNESS_SPACE_ID << 8 ) + 2, + account_bandwidth_object_type = ( SOPHIATX_WITNESS_SPACE_ID << 8 ), + content_edit_lock_object_type = ( SOPHIATX_WITNESS_SPACE_ID << 8 ) + 1, + reserve_ratio_object_type = ( SOPHIATX_WITNESS_SPACE_ID << 8 ) + 2, }; enum bandwidth_type @@ -74,7 +74,7 @@ class reserve_ratio_object : public object< reserve_ratio_object_type, reserve_r /** * Any time average_block_size <= 50% maximum_block_size this value grows by 1 until it - * reaches STEEM_MAX_RESERVE_RATIO. Any time average_block_size is greater than + * reaches SOPHIATX_MAX_RESERVE_RATIO. Any time average_block_size is greater than * 50% it falls by 1%. Upward adjustments happen once per round, downward adjustments * happen every block. */ @@ -83,7 +83,7 @@ class reserve_ratio_object : public object< reserve_ratio_object_type, reserve_r /** * The maximum bandwidth the blockchain can support is: * - * max_bandwidth = maximum_block_size * STEEM_BANDWIDTH_AVERAGE_WINDOW_SECONDS / STEEM_BLOCK_INTERVAL + * max_bandwidth = maximum_block_size * SOPHIATX_BANDWIDTH_AVERAGE_WINDOW_SECONDS / SOPHIATX_BLOCK_INTERVAL * * The maximum virtual bandwidth is: * @@ -123,14 +123,14 @@ typedef multi_index_container < allocator< reserve_ratio_object > > reserve_ratio_index; -} } } // steem::plugins::witness +} } } // sophiatx::plugins::witness -FC_REFLECT_ENUM( steem::plugins::witness::bandwidth_type, (post)(forum)(market) ) +FC_REFLECT_ENUM( sophiatx::plugins::witness::bandwidth_type, (post)(forum)(market) ) -FC_REFLECT( steem::plugins::witness::account_bandwidth_object, +FC_REFLECT( sophiatx::plugins::witness::account_bandwidth_object, (id)(account)(type)(average_bandwidth)(lifetime_bandwidth)(last_bandwidth_update) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::witness::account_bandwidth_object, steem::plugins::witness::account_bandwidth_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::plugins::witness::account_bandwidth_object, sophiatx::plugins::witness::account_bandwidth_index ) -FC_REFLECT( steem::plugins::witness::reserve_ratio_object, +FC_REFLECT( sophiatx::plugins::witness::reserve_ratio_object, (id)(average_block_size)(current_reserve_ratio)(max_virtual_bandwidth) ) -CHAINBASE_SET_INDEX_TYPE( steem::plugins::witness::reserve_ratio_object, steem::plugins::witness::reserve_ratio_index ) +CHAINBASE_SET_INDEX_TYPE( sophiatx::plugins::witness::reserve_ratio_object, sophiatx::plugins::witness::reserve_ratio_index ) diff --git a/libraries/plugins/witness/include/steem/plugins/witness/witness_plugin.hpp b/libraries/plugins/witness/include/sophiatx/plugins/witness/witness_plugin.hpp similarity index 75% rename from libraries/plugins/witness/include/steem/plugins/witness/witness_plugin.hpp rename to libraries/plugins/witness/include/sophiatx/plugins/witness/witness_plugin.hpp index 14d4fed5..9c17fb1a 100644 --- a/libraries/plugins/witness/include/steem/plugins/witness/witness_plugin.hpp +++ b/libraries/plugins/witness/include/sophiatx/plugins/witness/witness_plugin.hpp @@ -1,16 +1,16 @@ #pragma once -#include -#include +#include +#include #include -#define STEEM_WITNESS_PLUGIN_NAME "witness" +#define SOPHIATX_WITNESS_PLUGIN_NAME "witness" #define RESERVE_RATIO_PRECISION ((int64_t)10000) #define RESERVE_RATIO_MIN_INCREMENT ((int64_t)5000) -namespace steem { namespace plugins { namespace witness { +namespace sophiatx { namespace plugins { namespace witness { namespace detail { class witness_plugin_impl; } @@ -34,12 +34,12 @@ namespace block_production_condition class witness_plugin : public appbase::plugin< witness_plugin > { public: - APPBASE_PLUGIN_REQUIRES((steem::plugins::chain::chain_plugin)(steem::plugins::p2p::p2p_plugin)) + APPBASE_PLUGIN_REQUIRES((sophiatx::plugins::chain::chain_plugin)(sophiatx::plugins::p2p::p2p_plugin)) witness_plugin(); virtual ~witness_plugin(); - static const std::string& name() { static std::string name = STEEM_WITNESS_PLUGIN_NAME; return name; } + static const std::string& name() { static std::string name = SOPHIATX_WITNESS_PLUGIN_NAME; return name; } virtual void set_program_options( boost::program_options::options_description &command_line_options, @@ -54,4 +54,4 @@ class witness_plugin : public appbase::plugin< witness_plugin > std::unique_ptr< detail::witness_plugin_impl > my; }; -} } } // steem::plugins::witness +} } } // sophiatx::plugins::witness diff --git a/libraries/plugins/witness/witness_plugin.cpp b/libraries/plugins/witness/witness_plugin.cpp index 1b819ddd..e0556c02 100644 --- a/libraries/plugins/witness/witness_plugin.cpp +++ b/libraries/plugins/witness/witness_plugin.cpp @@ -1,14 +1,13 @@ -#include -#include +#include +#include -#include -#include -#include -#include -#include +#include +#include +#include +#include -#include -#include +#include +#include #include #include @@ -23,7 +22,7 @@ #define DISTANCE_CALC_PRECISION (10000) -namespace steem { namespace plugins { namespace witness { +namespace sophiatx { namespace plugins { namespace witness { using chain::plugin_exception; using std::string; @@ -38,7 +37,7 @@ void new_chain_banner( const chain::database& db ) "********************************\n" "* *\n" "* ------- NEW CHAIN ------ *\n" - "* - Welcome to Steem! - *\n" + "* - Welcome to SophiaTX! - *\n" "* ------------------------ *\n" "* *\n" "********************************\n" @@ -52,55 +51,32 @@ namespace detail { public: witness_plugin_impl( boost::asio::io_service& io ) : _timer(io), - _db( appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db() ) {} + _chain_plugin( appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >() ), + _db( appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db() ) {} - void pre_transaction( const steem::protocol::signed_transaction& trx ); + void pre_transaction( const sophiatx::protocol::signed_transaction& trx ); void pre_operation( const chain::operation_notification& note ); void on_block( const signed_block& b ); - void update_account_bandwidth( const chain::account_object& a, uint32_t trx_size, const bandwidth_type type ); - void schedule_production_loop(); block_production_condition::block_production_condition_enum block_production_loop(); block_production_condition::block_production_condition_enum maybe_produce_block(fc::mutable_variant_object& capture); bool _production_enabled = false; - uint32_t _required_witness_participation = 33 * STEEM_1_PERCENT; + uint32_t _required_witness_participation = 33 * SOPHIATX_1_PERCENT; uint32_t _production_skip_flags = chain::database::skip_nothing; - std::map< steem::protocol::public_key_type, fc::ecc::private_key > _private_keys; - std::set< steem::protocol::account_name_type > _witnesses; + std::map< sophiatx::protocol::public_key_type, fc::ecc::private_key > _private_keys; + std::set< sophiatx::protocol::account_name_type > _witnesses; boost::asio::deadline_timer _timer; chain::database& _db; + plugins::chain::chain_plugin& _chain_plugin; boost::signals2::connection pre_apply_connection; boost::signals2::connection applied_block_connection; boost::signals2::connection on_pre_apply_transaction_connection; }; - struct comment_options_extension_visitor - { - comment_options_extension_visitor( const comment_object& c, const database& db ) : _c( c ), _db( db ) {} - - typedef void result_type; - - const comment_object& _c; - const database& _db; - -#ifdef STEEM_ENABLE_SMT - void operator()( const allowed_vote_assets& va) const - { - FC_TODO("To be implemented suppport for allowed_vote_assets"); - } -#endif - - void operator()( const comment_payout_beneficiaries& cpb )const - { - STEEM_ASSERT( cpb.beneficiaries.size() <= 8, - plugin_exception, - "Cannot specify more than 8 beneficiaries." ); - } - }; void check_memo( const string& memo, const chain::account_object& account, const account_authority_object& auth ) { @@ -131,27 +107,20 @@ namespace detail { for( auto& key_weight_pair : auth.owner.key_auths ) { for( auto& key : keys ) - STEEM_ASSERT( key_weight_pair.first != key, plugin_exception, + SOPHIATX_ASSERT( key_weight_pair.first != key, plugin_exception, "Detected private owner key in memo field. You should change your owner keys." ); } for( auto& key_weight_pair : auth.active.key_auths ) { for( auto& key : keys ) - STEEM_ASSERT( key_weight_pair.first != key, plugin_exception, + SOPHIATX_ASSERT( key_weight_pair.first != key, plugin_exception, "Detected private active key in memo field. You should change your active keys." ); } - for( auto& key_weight_pair : auth.posting.key_auths ) - { - for( auto& key : keys ) - STEEM_ASSERT( key_weight_pair.first != key, plugin_exception, - "Detected private posting key in memo field. You should change your posting keys." ); - } - const auto& memo_key = account.memo_key; for( auto& key : keys ) - STEEM_ASSERT( memo_key != key, plugin_exception, + SOPHIATX_ASSERT( memo_key != key, plugin_exception, "Detected private memo key in memo field. You should change your memo key." ); } @@ -166,31 +135,6 @@ namespace detail { template< typename T > void operator()( const T& )const {} - void operator()( const comment_options_operation& o )const - { - const auto& comment = _db.get_comment( o.author, o.permlink ); - - comment_options_extension_visitor v( comment, _db ); - - for( auto& e : o.extensions ) - { - e.visit( v ); - } - } - - void operator()( const comment_operation& o )const - { - if( o.parent_author != STEEM_ROOT_POST_PARENT ) - { - const auto& parent = _db.find_comment( o.parent_author, o.parent_permlink ); - - if( parent != nullptr ) - STEEM_ASSERT( parent->depth < STEEM_SOFT_MAX_COMMENT_DEPTH, - plugin_exception, - "Comment is nested ${x} posts deep, maximum depth is ${y}.", ("x",parent->depth)("y",STEEM_SOFT_MAX_COMMENT_DEPTH) ); - } - } - void operator()( const transfer_operation& o )const { if( o.memo.length() > 0 ) @@ -199,45 +143,16 @@ namespace detail { _db.get< account_authority_object, chain::by_account >( o.from ) ); } - void operator()( const transfer_to_savings_operation& o )const - { - if( o.memo.length() > 0 ) - check_memo( o.memo, - _db.get< chain::account_object, chain::by_name >( o.from ), - _db.get< account_authority_object, chain::by_account >( o.from ) ); - } - - void operator()( const transfer_from_savings_operation& o )const - { - if( o.memo.length() > 0 ) - check_memo( o.memo, - _db.get< chain::account_object, chain::by_name >( o.from ), - _db.get< account_authority_object, chain::by_account >( o.from ) ); - } }; - void witness_plugin_impl::pre_transaction( const steem::protocol::signed_transaction& trx ) + void witness_plugin_impl::pre_transaction( const sophiatx::protocol::signed_transaction& trx ) { flat_set< account_name_type > required; vector other; - trx.get_required_authorities( required, required, required, other ); + trx.get_required_authorities( required, required, other ); auto trx_size = fc::raw::pack_size(trx); - for( const auto& auth : required ) - { - const auto& acnt = _db.get_account( auth ); - - update_account_bandwidth( acnt, trx_size, bandwidth_type::forum ); - - for( const auto& op : trx.operations ) - { - if( is_market_operation( op ) ) - { - update_account_bandwidth( acnt, trx_size * 10, bandwidth_type::market ); - break; - } - } - } + //TODO_SOPHIA - rework to evaluate if the fee is corresponding to the requirements. } void witness_plugin_impl::pre_operation( const chain::operation_notification& note ) @@ -259,10 +174,10 @@ namespace detail { _db.create< reserve_ratio_object >( [&]( reserve_ratio_object& r ) { r.average_block_size = 0; - r.current_reserve_ratio = STEEM_MAX_RESERVE_RATIO * RESERVE_RATIO_PRECISION; - r.max_virtual_bandwidth = ( static_cast( STEEM_MAX_BLOCK_SIZE) * STEEM_MAX_RESERVE_RATIO - * STEEM_BANDWIDTH_PRECISION * STEEM_BANDWIDTH_AVERAGE_WINDOW_SECONDS ) - / STEEM_BLOCK_INTERVAL; + r.current_reserve_ratio = SOPHIATX_MAX_RESERVE_RATIO * RESERVE_RATIO_PRECISION; + r.max_virtual_bandwidth = ( static_cast( SOPHIATX_MAX_BLOCK_SIZE) * SOPHIATX_MAX_RESERVE_RATIO + * SOPHIATX_BANDWIDTH_PRECISION * SOPHIATX_BANDWIDTH_AVERAGE_WINDOW_SECONDS ) + / SOPHIATX_BLOCK_INTERVAL; }); } else @@ -303,8 +218,8 @@ namespace detail { // By default, we should always slowly increase the reserve ratio. r.current_reserve_ratio += std::max( RESERVE_RATIO_MIN_INCREMENT, ( r.current_reserve_ratio * distance ) / ( distance - DISTANCE_CALC_PRECISION ) ); - if( r.current_reserve_ratio > STEEM_MAX_RESERVE_RATIO * RESERVE_RATIO_PRECISION ) - r.current_reserve_ratio = STEEM_MAX_RESERVE_RATIO * RESERVE_RATIO_PRECISION; + if( r.current_reserve_ratio > SOPHIATX_MAX_RESERVE_RATIO * RESERVE_RATIO_PRECISION ) + r.current_reserve_ratio = SOPHIATX_MAX_RESERVE_RATIO * RESERVE_RATIO_PRECISION; } if( old_reserve_ratio != r.current_reserve_ratio ) @@ -316,68 +231,14 @@ namespace detail { } r.max_virtual_bandwidth = ( uint128_t( max_block_size ) * uint128_t( r.current_reserve_ratio ) - * uint128_t( STEEM_BANDWIDTH_PRECISION * STEEM_BANDWIDTH_AVERAGE_WINDOW_SECONDS ) ) - / ( STEEM_BLOCK_INTERVAL * RESERVE_RATIO_PRECISION ); + * uint128_t( SOPHIATX_BANDWIDTH_PRECISION * SOPHIATX_BANDWIDTH_AVERAGE_WINDOW_SECONDS ) ) + / ( SOPHIATX_BLOCK_INTERVAL * RESERVE_RATIO_PRECISION ); } }); } } FC_LOG_AND_RETHROW() } #pragma message( "Remove FC_LOG_AND_RETHROW here before appbase release. It exists to help debug a rare lock exception" ) - void witness_plugin_impl::update_account_bandwidth( const chain::account_object& a, uint32_t trx_size, const bandwidth_type type ) - { - const auto& props = _db.get_dynamic_global_properties(); - bool has_bandwidth = true; - - if( props.total_vesting_shares.amount > 0 ) - { - auto band = _db.find< account_bandwidth_object, by_account_bandwidth_type >( boost::make_tuple( a.name, type ) ); - - if( band == nullptr ) - { - band = &_db.create< account_bandwidth_object >( [&]( account_bandwidth_object& b ) - { - b.account = a.name; - b.type = type; - }); - } - - share_type new_bandwidth; - share_type trx_bandwidth = trx_size * STEEM_BANDWIDTH_PRECISION; - auto delta_time = ( _db.head_block_time() - band->last_bandwidth_update ).to_seconds(); - - if( delta_time > STEEM_BANDWIDTH_AVERAGE_WINDOW_SECONDS ) - new_bandwidth = 0; - else - new_bandwidth = ( ( ( STEEM_BANDWIDTH_AVERAGE_WINDOW_SECONDS - delta_time ) * fc::uint128( band->average_bandwidth.value ) ) - / STEEM_BANDWIDTH_AVERAGE_WINDOW_SECONDS ).to_uint64(); - - new_bandwidth += trx_bandwidth; - - _db.modify( *band, [&]( account_bandwidth_object& b ) - { - b.average_bandwidth = new_bandwidth; - b.lifetime_bandwidth += trx_bandwidth; - b.last_bandwidth_update = _db.head_block_time(); - }); - - fc::uint128 account_vshares( a.effective_vesting_shares().amount.value ); - fc::uint128 total_vshares( props.total_vesting_shares.amount.value ); - fc::uint128 account_average_bandwidth( band->average_bandwidth.value ); - fc::uint128 max_virtual_bandwidth( _db.get( reserve_ratio_id_type() ).max_virtual_bandwidth ); - - has_bandwidth = ( account_vshares * max_virtual_bandwidth ) > ( account_average_bandwidth * total_vshares ); - - if( _db.is_producing() ) - STEEM_ASSERT( has_bandwidth, plugin_exception, - "Account: ${account} bandwidth limit exceeded. Please wait to transact or power up STEEM.", - ("account", a.name) - ("account_vshares", account_vshares) - ("account_average_bandwidth", account_average_bandwidth) - ("max_virtual_bandwidth", max_virtual_bandwidth) - ("total_vesting_shares", total_vshares) ); - } - } void witness_plugin_impl::schedule_production_loop() { //Schedule for the next second's tick regardless of chain state @@ -393,9 +254,10 @@ namespace detail { block_production_condition::block_production_condition_enum witness_plugin_impl::block_production_loop() { - if( fc::time_point::now() < fc::time_point(STEEM_GENESIS_TIME) ) + chain::database& db = appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db(); + if( fc::time_point::now() < fc::time_point(db.get_genesis_time()) ) { - wlog( "waiting until genesis time to produce block: ${t}", ("t",STEEM_GENESIS_TIME) ); + wlog( "waiting until genesis time to produce block: ${t}, now is: ${n}", ("t", db.get_genesis_time())("n", fc::time_point::now()) ); schedule_production_loop(); return block_production_condition::wait_for_genesis; } @@ -426,10 +288,10 @@ namespace detail { switch(result) { case block_production_condition::produced: - ilog("Generated block #${n} with timestamp ${t} at time ${c}", (capture)); + elog("Generated block #${n} with timestamp ${t} at time ${c}", (capture)); break; case block_production_condition::not_synced: - // ilog("Not producing block because production is disabled until we receive a recent block (see: --enable-stale-production)"); + elog("Not producing block because production is disabled until we receive a recent block (see: --enable-stale-production)"); break; case block_production_condition::not_my_turn: // ilog("Not producing block because it isn't my turn"); @@ -462,7 +324,7 @@ namespace detail { block_production_condition::block_production_condition_enum witness_plugin_impl::maybe_produce_block(fc::mutable_variant_object& capture) { - chain::database& db = appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db(); + chain::database& db = appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db(); fc::time_point now_fine = fc::time_point::now(); fc::time_point_sec now = now_fine + fc::microseconds( 500000 ); @@ -515,7 +377,7 @@ namespace detail { uint32_t prate = db.witness_participation_rate(); if( prate < _required_witness_participation ) { - capture("pct", uint32_t(100*uint64_t(prate) / STEEM_1_PERCENT)); + capture("pct", uint32_t(100*uint64_t(prate) / SOPHIATX_1_PERCENT)); return block_production_condition::low_participation; } @@ -525,7 +387,7 @@ namespace detail { return block_production_condition::lag; } - auto block = db.generate_block( + auto block = _chain_plugin.generate_block( scheduled_time, scheduled_witness, private_key_itr->second, @@ -533,7 +395,7 @@ namespace detail { ); capture("n", block.block_num())("t", block.timestamp)("c", now); - appbase::app().get_plugin< steem::plugins::p2p::p2p_plugin >().broadcast_block( block ); + appbase::app().get_plugin< sophiatx::plugins::p2p::p2p_plugin >().broadcast_block( block ); return block_production_condition::produced; } @@ -550,7 +412,7 @@ void witness_plugin::set_program_options( string witness_id_example = "initwitness"; cfg.add_options() ("enable-stale-production", bpo::bool_switch()->default_value(false), "Enable block production, even if the chain is stale.") - ("required-participation", bpo::value< uint32_t >()->default_value( 33 ), "Percent of witnesses (0-99) that must be participating in order to produce blocks") + ("required-participation", bpo::value< uint32_t >()->default_value( 67 ), "Percent of witnesses (0-99) that must be participating in order to produce blocks") ("witness,w", bpo::value>()->composing()->multitoken(), ("name of witness controlled by this node (e.g. " + witness_id_example + " )" ).c_str() ) ("private-key", bpo::value>()->composing()->multitoken(), "WIF PRIVATE KEY to be used by one or more witnesses or miners" ) @@ -561,14 +423,14 @@ void witness_plugin::plugin_initialize(const boost::program_options::variables_m { try { my = std::make_unique< detail::witness_plugin_impl >( appbase::app().get_io_service() ); - STEEM_LOAD_VALUE_SET( options, "witness", my->_witnesses, steem::protocol::account_name_type ) + SOPHIATX_LOAD_VALUE_SET( options, "witness", my->_witnesses, sophiatx::protocol::account_name_type ) if( options.count("private-key") ) { const std::vector keys = options["private-key"].as>(); for (const std::string& wif_key : keys ) { - fc::optional private_key = steem::utilities::wif_to_key(wif_key); + fc::optional private_key = sophiatx::utilities::wif_to_key(wif_key); FC_ASSERT( private_key.valid(), "unable to parse private key" ); my->_private_keys[private_key->get_public_key()] = *private_key; } @@ -578,7 +440,7 @@ void witness_plugin::plugin_initialize(const boost::program_options::variables_m if( options.count( "required-participation" ) ) { - my->_required_witness_participation = STEEM_1_PERCENT * options.at( "required-participation" ).as< uint32_t >(); + my->_required_witness_participation = SOPHIATX_1_PERCENT * options.at( "required-participation" ).as< uint32_t >(); } my->on_pre_apply_transaction_connection = my->_db.on_pre_apply_transaction.connect( 0, [&]( const signed_transaction& tx ){ my->pre_transaction( tx ); } ); @@ -588,13 +450,16 @@ void witness_plugin::plugin_initialize(const boost::program_options::variables_m add_plugin_index< account_bandwidth_index >( my->_db ); add_plugin_index< reserve_ratio_index >( my->_db ); - appbase::app().get_plugin< steem::plugins::p2p::p2p_plugin >().set_block_production( true ); + appbase::app().get_plugin< sophiatx::plugins::p2p::p2p_plugin >().set_block_production( true ); + + if( my->_witnesses.size() && my->_private_keys.size() ) + my->_chain_plugin.set_write_lock_hold_time( -1 ); } FC_LOG_AND_RETHROW() } void witness_plugin::plugin_startup() { try { ilog("witness plugin: plugin_startup() begin"); - chain::database& d = appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db(); + chain::database& d = appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db(); if( !my->_witnesses.empty() ) { @@ -627,4 +492,4 @@ void witness_plugin::plugin_shutdown() } } -} } } // steem::plugins::witness +} } } // sophiatx::plugins::witness diff --git a/libraries/protocol/CMakeLists.txt b/libraries/protocol/CMakeLists.txt index 219ea5da..674b746b 100644 --- a/libraries/protocol/CMakeLists.txt +++ b/libraries/protocol/CMakeLists.txt @@ -1,23 +1,15 @@ -file(GLOB HEADERS "include/steem/protocol/*.hpp") +file(GLOB HEADERS "include/sophiatx/protocol/*.hpp") -if( MSVC ) - set( hardfork_hpp_file "${CMAKE_CURRENT_SOURCE_DIR}/include/steem/protocol/hardfork.hpp" ) - add_custom_target( build_hardfork_hpp - COMMAND cat-parts "${CMAKE_CURRENT_SOURCE_DIR}/hardfork.d" ${hardfork_hpp_file} ) - add_dependencies( build_hardfork_hpp cat-parts ) -else( MSVC ) - set( hardfork_hpp_file "${CMAKE_CURRENT_BINARY_DIR}/include/steem/protocol/hardfork.hpp" ) - add_custom_target( build_hardfork_hpp - COMMAND "${CMAKE_SOURCE_DIR}/programs/build_helpers/cat_parts.py" "${CMAKE_CURRENT_SOURCE_DIR}/hardfork.d" ${hardfork_hpp_file} ) -endif( MSVC ) +set( hardfork_hpp_file "${CMAKE_CURRENT_BINARY_DIR}/include/sophiatx/protocol/hardfork.hpp" ) +add_custom_target( build_hardfork_hpp + COMMAND "${CMAKE_SOURCE_DIR}/programs/build_helpers/cat_parts.py" "${CMAKE_CURRENT_SOURCE_DIR}/hardfork.d" ${hardfork_hpp_file} ) -set_source_files_properties( "${CMAKE_CURRENT_BINARY_DIR}/include/steem/protocol/hardfork.hpp" PROPERTIES GENERATED TRUE ) +set_source_files_properties( "${CMAKE_CURRENT_BINARY_DIR}/include/sophiatx/protocol/hardfork.hpp" PROPERTIES GENERATED TRUE ) ## SORT .cpp by most likely to change / break compile -add_library( steem_protocol +add_library( sophiatx_protocol - smt_operations.cpp - steem_operations.cpp + sophiatx_operations.cpp types.cpp authority.cpp operations.cpp @@ -26,32 +18,33 @@ add_library( steem_protocol transaction.cpp block.cpp asset.cpp + asset_symbol.cpp version.cpp get_config.cpp ${HEADERS} ${hardfork_hpp_file} - "${CMAKE_CURRENT_BINARY_DIR}/include/steem/protocol/hardfork.hpp" + "${CMAKE_CURRENT_BINARY_DIR}/include/sophiatx/protocol/hardfork.hpp" ) -add_dependencies( steem_protocol build_hardfork_hpp ) -target_link_libraries( steem_protocol fc ) -target_include_directories( steem_protocol +add_dependencies( sophiatx_protocol build_hardfork_hpp ) +target_link_libraries( sophiatx_protocol fc ) +target_include_directories( sophiatx_protocol PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" "${CMAKE_CURRENT_BINARY_DIR}/include" ) if( CLANG_TIDY_EXE ) set_target_properties( - steem_protocol PROPERTIES + sophiatx_protocol PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" ) endif( CLANG_TIDY_EXE ) INSTALL( TARGETS - steem_protocol + sophiatx_protocol RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) -INSTALL( FILES ${HEADERS} DESTINATION "include/steem/protocol" ) +INSTALL( FILES ${HEADERS} DESTINATION "include/sophiatx/protocol" ) diff --git a/libraries/protocol/asset.cpp b/libraries/protocol/asset.cpp index 220c2b02..c62b810c 100644 --- a/libraries/protocol/asset.cpp +++ b/libraries/protocol/asset.cpp @@ -1,334 +1,29 @@ -#include +#include #include #include #include -/* -The bounds on asset serialization are as follows: -index : field -0 : decimals -1..6 : symbol - 7 : \0 -*/ - -namespace steem { namespace protocol { - -std::string asset_symbol_type::to_string()const -{ - return fc::json::to_string( fc::variant( *this ) ); -} - -asset_symbol_type asset_symbol_type::from_string( const std::string& str ) -{ - return fc::json::from_string( str ).as< asset_symbol_type >(); -} - -void asset_symbol_type::to_nai_string( char* buf )const -{ - static_assert( STEEM_ASSET_SYMBOL_NAI_STRING_LENGTH >= 12, "This code will overflow a short buffer" ); - uint32_t x = to_nai(); - buf[11] = '\0'; - buf[10] = ((x%10)+'0'); x /= 10; - buf[ 9] = ((x%10)+'0'); x /= 10; - buf[ 8] = ((x%10)+'0'); x /= 10; - buf[ 7] = ((x%10)+'0'); x /= 10; - buf[ 6] = ((x%10)+'0'); x /= 10; - buf[ 5] = ((x%10)+'0'); x /= 10; - buf[ 4] = ((x%10)+'0'); x /= 10; - buf[ 3] = ((x%10)+'0'); x /= 10; - buf[ 2] = ((x )+'0'); - buf[ 1] = '@'; - buf[ 0] = '@'; -} - -asset_symbol_type asset_symbol_type::from_nai_string( const char* p, uint8_t decimal_places ) -{ - // \s* - while( true ) - { - switch( *p ) - { - case ' ': case '\t': case '\n': case '\r': - ++p; - continue; - default: - break; - } - break; - } - - // [A-Z]{1,6} - uint32_t asset_num = 0; - switch( *p ) - { - case '@': - { - ++p; - FC_ASSERT( (*p) == '@', "Cannot parse asset symbol" ); - ++p; - - uint64_t nai = 0; - int digit_count = 0; - while( true ) - { - switch( *p ) - { - case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': - { - uint64_t new_nai = nai*10 + ((*p) - '0'); - FC_ASSERT( new_nai >= nai, "Cannot parse asset amount" ); // This is failing for system assets - FC_ASSERT( new_nai <= SMT_MAX_NAI, "Cannot parse asset amount" ); - nai = new_nai; - ++p; - ++digit_count; - continue; - } - default: - break; - } - break; - } - FC_ASSERT( digit_count == 9 ); - asset_num = asset_num_from_nai( nai, uint8_t( decimal_places ) ); - break; - } - default: - FC_ASSERT( false, "Cannot parse asset symbol" ); - } - - // \s*\0 - while( true ) - { - switch( *p ) - { - case ' ': case '\t': case '\n': case '\r': - ++p; - continue; - case '\0': - break; - default: - FC_ASSERT( false, "Cannot parse asset symbol" ); - } - break; - } - - asset_symbol_type sym; - sym.asset_num = asset_num; - return sym; -} - -// Highly optimized implementation of Damm algorithm -// https://en.wikipedia.org/wiki/Damm_algorithm -uint8_t damm_checksum_8digit(uint32_t value) -{ - FC_ASSERT( value < 100000000 ); - - const uint8_t t[] = { - 0, 30, 10, 70, 50, 90, 80, 60, 40, 20, - 70, 0, 90, 20, 10, 50, 40, 80, 60, 30, - 40, 20, 0, 60, 80, 70, 10, 30, 50, 90, - 10, 70, 50, 0, 90, 80, 30, 40, 20, 60, - 60, 10, 20, 30, 0, 40, 50, 90, 70, 80, - 30, 60, 70, 40, 20, 0, 90, 50, 80, 10, - 50, 80, 60, 90, 70, 20, 0, 10, 30, 40, - 80, 90, 40, 50, 30, 60, 20, 0, 10, 70, - 90, 40, 30, 80, 60, 10, 70, 20, 0, 50, - 20, 50, 80, 10, 40, 30, 60, 70, 90, 0 - }; - - uint32_t q0 = value/10; - uint32_t d0 = value%10; - uint32_t q1 = q0/10; - uint32_t d1 = q0%10; - uint32_t q2 = q1/10; - uint32_t d2 = q1%10; - uint32_t q3 = q2/10; - uint32_t d3 = q2%10; - uint32_t q4 = q3/10; - uint32_t d4 = q3%10; - uint32_t q5 = q4/10; - uint32_t d5 = q4%10; - uint32_t d6 = q5%10; - uint32_t d7 = q5/10; - - uint8_t x = t[d7]; - x = t[x+d6]; - x = t[x+d5]; - x = t[x+d4]; - x = t[x+d3]; - x = t[x+d2]; - x = t[x+d1]; - x = t[x+d0]; - return x/10; -} - -uint32_t asset_symbol_type::asset_num_from_nai( uint32_t nai, uint8_t decimal_places ) -{ - // Can be replaced with some clever bitshifting - uint32_t nai_check_digit = nai % 10; - uint32_t nai_data_digits = nai / 10; - - FC_ASSERT( (nai_data_digits >= SMT_MIN_NAI) & (nai_data_digits <= SMT_MAX_NAI), "NAI out of range" ); - FC_ASSERT( nai_check_digit == damm_checksum_8digit(nai_data_digits), "Invalid check digit" ); - - switch( nai_data_digits ) - { - case STEEM_NAI_STEEM: - FC_ASSERT( decimal_places == STEEM_PRECISION_STEEM ); - return STEEM_ASSET_NUM_STEEM; - case STEEM_NAI_SBD: - FC_ASSERT( decimal_places == STEEM_PRECISION_SBD ); - return STEEM_ASSET_NUM_SBD; - case STEEM_NAI_VESTS: - FC_ASSERT( decimal_places == STEEM_PRECISION_VESTS ); - return STEEM_ASSET_NUM_VESTS; - default: - FC_ASSERT( decimal_places <= STEEM_ASSET_MAX_DECIMALS, "Invalid decimal_places" ); - return (nai_data_digits << 5) | 0x10 | decimal_places; - } -} - -uint32_t asset_symbol_type::to_nai()const -{ - uint32_t nai_data_digits = 0; - - // Can be replaced with some clever bitshifting - switch( asset_num ) - { - case STEEM_ASSET_NUM_STEEM: - nai_data_digits = STEEM_NAI_STEEM; - break; - case STEEM_ASSET_NUM_SBD: - nai_data_digits = STEEM_NAI_SBD; - break; - case STEEM_ASSET_NUM_VESTS: - nai_data_digits = STEEM_NAI_VESTS; - break; - default: - FC_ASSERT( space() == smt_nai_space ); - nai_data_digits = (asset_num >> 5); - } - - uint32_t nai_check_digit = damm_checksum_8digit(nai_data_digits); - return nai_data_digits * 10 + nai_check_digit; -} - -bool asset_symbol_type::is_vesting() const -{ - switch( space() ) - { - case legacy_space: - { - switch( asset_num ) - { - case STEEM_ASSET_NUM_STEEM: - return false; - case STEEM_ASSET_NUM_SBD: - // SBD is certainly liquid. - return false; - case STEEM_ASSET_NUM_VESTS: - return true; - default: - FC_ASSERT( false, "Unknown asset symbol" ); - } - } - case smt_nai_space: - // 6th bit of asset_num is used as vesting/liquid variant indicator. - return asset_num & 0x00000020; - default: - FC_ASSERT( false, "Unknown asset symbol" ); - } -} - -asset_symbol_type asset_symbol_type::get_paired_symbol() const -{ - switch( space() ) - { - case legacy_space: - { - switch( asset_num ) - { - case STEEM_ASSET_NUM_STEEM: - return from_asset_num( STEEM_ASSET_NUM_VESTS ); - case STEEM_ASSET_NUM_SBD: - return *this; - case STEEM_ASSET_NUM_VESTS: - return from_asset_num( STEEM_ASSET_NUM_STEEM ); - default: - FC_ASSERT( false, "Unknown asset symbol" ); - } - } - case smt_nai_space: - { - // Toggle 6th bit of this asset_num. - auto paired_asset_num = asset_num ^ ( 0x1 << 5 ); - return from_asset_num( paired_asset_num ); - } - default: - FC_ASSERT( false, "Unknown asset symbol" ); - } -} - -asset_symbol_type::asset_symbol_space asset_symbol_type::space()const -{ - asset_symbol_type::asset_symbol_space s = legacy_space; - switch( asset_num ) - { - case STEEM_ASSET_NUM_STEEM: - case STEEM_ASSET_NUM_SBD: - case STEEM_ASSET_NUM_VESTS: - s = legacy_space; - break; - default: - s = smt_nai_space; - } - return s; -} - -void asset_symbol_type::validate()const -{ - switch( asset_num ) - { - case STEEM_ASSET_NUM_STEEM: - case STEEM_ASSET_NUM_SBD: - case STEEM_ASSET_NUM_VESTS: - break; - default: - { - uint32_t nai_data_digits = (asset_num >> 5); - uint32_t nai_1bit = (asset_num & 0x10); - uint32_t nai_decimal_places = (asset_num & 0x0F); - FC_ASSERT( (nai_data_digits >= SMT_MIN_NAI) & - (nai_data_digits <= SMT_MAX_NAI) & - (nai_1bit == 0x10) & - (nai_decimal_places <= STEEM_ASSET_MAX_DECIMALS), - "Cannot determine space for asset ${n}", ("n", asset_num) ); - } - } - // this assert is duplicated by above code in all cases - // FC_ASSERT( decimals() <= STEEM_ASSET_MAX_DECIMALS ); -} - -void asset::validate()const -{ - symbol.validate(); - FC_ASSERT( amount.value >= 0 ); - FC_ASSERT( amount.value <= STEEM_MAX_SATOSHIS ); -} +namespace sophiatx { namespace protocol { +//1USD/5SPHTX 10SPHTX/2USD #define BQ(a) \ std::tie( a.base.symbol, a.quote.symbol ) #define DEFINE_PRICE_COMPARISON_OPERATOR( op ) \ bool operator op ( const price& a, const price& b ) \ { \ - if( BQ(a) != BQ(b) ) \ - return BQ(a) op BQ(b); \ - \ + price a_(a.quote, a.base) ;\ + if( BQ(a) != BQ(b) ){ \ + if( BQ(a_) != BQ(b) ){ \ + return false; \ + }else{ \ + return a_ op b;\ + } \ + } \ const uint128_t amult = uint128_t( b.quote.amount.value ) * a.base.amount.value; \ const uint128_t bmult = uint128_t( a.quote.amount.value ) * b.base.amount.value; \ \ @@ -367,8 +62,8 @@ DEFINE_PRICE_COMPARISON_OPERATOR( >= ) return price{ base, quote }; } FC_CAPTURE_AND_RETHROW( (base)(quote) ) } - price price::max( asset_symbol_type base, asset_symbol_type quote ) { return asset( share_type(STEEM_MAX_SATOSHIS), base ) / asset( share_type(1), quote); } - price price::min( asset_symbol_type base, asset_symbol_type quote ) { return asset( 1, base ) / asset( STEEM_MAX_SATOSHIS, quote); } + price price::max( asset_symbol_type base, asset_symbol_type quote ) { return asset( share_type(SOPHIATX_MAX_SATOSHIS), base ) / asset( share_type(1), quote); } + price price::min( asset_symbol_type base, asset_symbol_type quote ) { return asset( 1, base ) / asset( SOPHIATX_MAX_SATOSHIS, quote); } bool price::is_null() const { return *this == price(); } @@ -380,32 +75,78 @@ DEFINE_PRICE_COMPARISON_OPERATOR( >= ) } FC_CAPTURE_AND_RETHROW( (base)(quote) ) } -} } // steem::protocol +string asset::to_string()const +{ + string result = fc::to_string(amount.value / SOPHIATX_SATOSHIS); + auto fract = amount.value % SOPHIATX_SATOSHIS; + // prec is a power of ten, so for example when working with + // 7.005 we have fract = 5, prec = 1000. So prec+fract=1005 + // has the correct number of zeros and we can simply trim the + // leading 1. + result += "." + fc::to_string(SOPHIATX_SATOSHIS + fract).erase(0,1); + + return result + " " + symbol.to_string(); +} + +asset asset::from_string( const std::string& from ) +{ + try + { + std::string s = fc::trim( from ); + auto space_pos = s.find( " " ); + auto dot_pos = s.find( "." ); + + FC_ASSERT( space_pos != std::string::npos, "Missing asset symbol" ); + + if(dot_pos != std::string::npos) + { + FC_ASSERT( SOPHIATX_DECIMALS >= (space_pos - dot_pos - 1)); + } + + asset result; + std::string str_symbol = s.substr( space_pos + 1 ); + + auto numpart = s.substr( 0, space_pos ); + auto dvalue = fc::to_double(numpart); + auto ivalue = static_cast(round(dvalue * SOPHIATX_SATOSHIS)); + + FC_ASSERT( ivalue >= 0); + FC_ASSERT( SOPHIATX_MAX_SHARE_SUPPLY >= ivalue); + + result.amount = ivalue; + result.symbol = asset_symbol_type::from_string( str_symbol.c_str() ); + return result; + } + FC_CAPTURE_AND_RETHROW( (from) ) +} + +} } // sophiatx::protocol namespace fc { - void to_variant( const steem::protocol::asset& var, fc::variant& vo ) + void to_variant( const sophiatx::protocol::asset& var, fc::variant& vo ) { - try + vo = var.to_string(); + /*try { - std::vector< variant > v( 3 ); + std::vector< variant > v( 2 ); v[0] = boost::lexical_cast< std::string >( var.amount.value ); - v[1] = uint64_t( var.symbol.decimals() ); - v[2] = var.symbol.to_nai_string(); + v[1] = var.symbol.to_string(); vo = v; - } FC_CAPTURE_AND_RETHROW() + } FC_CAPTURE_AND_RETHROW()*/ } - void from_variant( const fc::variant& var, steem::protocol::asset& vo ) + void from_variant( const fc::variant& var, sophiatx::protocol::asset& vo ) { - try + vo = sophiatx::protocol::asset::from_string(var.as< std::string >()); + /*try { auto v = var.as< std::vector< variant > >(); - FC_ASSERT( v.size() == 3, "Expected tuple of length 3." ); + FC_ASSERT( v.size() == 2, "Expected tuple of length 2." ); // share_type is safe< int64_t > vo.amount = boost::lexical_cast< int64_t >( v[0].as< std::string >() ); FC_ASSERT( vo.amount >= 0, "Asset amount cannot be negative" ); - vo.symbol = steem::protocol::asset_symbol_type::from_nai_string( v[2].as< std::string >().c_str(), v[1].as< uint8_t >() ); - } FC_CAPTURE_AND_RETHROW() + vo.symbol = sophiatx::protocol::asset_symbol_type::from_string( v[1].as< std::string >() ); + } FC_CAPTURE_AND_RETHROW((var))*/ } } diff --git a/libraries/protocol/asset_symbol.cpp b/libraries/protocol/asset_symbol.cpp new file mode 100644 index 00000000..1214f96b --- /dev/null +++ b/libraries/protocol/asset_symbol.cpp @@ -0,0 +1,54 @@ +// +// Created by Josef Sevcik on 18/07/2018. +// + +#include + + +namespace sophiatx { namespace protocol { +asset_symbol_type asset_symbol_type::from_string( const std::string& str ){ + FC_ASSERT((str.size() >= 3 && str.size() <= 6), "invalid symbol length"); + const char* c_str = str.c_str(); + uint64_t ret = 0; + int i = str.size(); + while( i-- ){ + ret = (ret << 8) | uint64_t(c_str[i]); + } + asset_symbol_type rv (ret) ; + return rv; +} + +std::string asset_symbol_type::to_string()const{ + std::string ret; + uint64_t symbol = value; + while ( symbol ) { + ret.push_back(symbol & (uint64_t(255))); + symbol = symbol >> 8; + } + //FC_ASSERT((ret.size() >= 3), "invalid symbol (${s}) length: ${l}", ("s",ret)("l",ret.size())); + return ret; +} + +}}//namespace sophiatx::protocol + + +namespace fc{ + +void to_variant( const sophiatx::protocol::asset_symbol_type& sym, fc::variant& var ) +{ + try + { + var = sym.to_string(); + } FC_CAPTURE_AND_RETHROW() +} + +void from_variant( const fc::variant& var, sophiatx::protocol::asset_symbol_type& vo ) +{ + try + { + vo = sophiatx::protocol::asset_symbol_type::from_string(var.as< std::string >()); + + } FC_CAPTURE_AND_RETHROW() +} + +} // fc \ No newline at end of file diff --git a/libraries/protocol/authority.cpp b/libraries/protocol/authority.cpp index b16c96b9..c3f7e052 100644 --- a/libraries/protocol/authority.cpp +++ b/libraries/protocol/authority.cpp @@ -1,6 +1,6 @@ -#include +#include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { // authority methods void authority::add_authority( const public_key_type& k, weight_type w ) @@ -45,15 +45,15 @@ void authority::validate()const bool is_valid_account_name( const string& name ) { -#if STEEM_MIN_ACCOUNT_NAME_LENGTH < 3 +#if SOPHIATX_MIN_ACCOUNT_NAME_LENGTH < 3 #error This is_valid_account_name implementation implicitly enforces minimum name length of 3. #endif const size_t len = name.size(); - if( len < STEEM_MIN_ACCOUNT_NAME_LENGTH ) + if( len < SOPHIATX_MIN_ACCOUNT_NAME_LENGTH ) return false; - if( len > STEEM_MAX_ACCOUNT_NAME_LENGTH ) + if( len > SOPHIATX_MAX_ACCOUNT_NAME_LENGTH ) return false; size_t begin = 0; @@ -116,4 +116,4 @@ bool operator == ( const authority& a, const authority& b ) ( a.key_auths == b.key_auths ); } -} } // steem::protocol +} } // sophiatx::protocol diff --git a/libraries/protocol/block.cpp b/libraries/protocol/block.cpp index f11f9206..7e6b6d04 100644 --- a/libraries/protocol/block.cpp +++ b/libraries/protocol/block.cpp @@ -1,9 +1,9 @@ -#include +#include #include #include #include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { digest_type block_header::digest()const { return digest_type::hash(*this); @@ -66,4 +66,4 @@ namespace steem { namespace protocol { return checksum_type::hash( ids[0] ); } -} } // steem::protocol +} } // sophiatx::protocol diff --git a/libraries/protocol/get_config.cpp b/libraries/protocol/get_config.cpp index 179c5b4e..59f7fa07 100644 --- a/libraries/protocol/get_config.cpp +++ b/libraries/protocol/get_config.cpp @@ -1,10 +1,10 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { fc::variant_object get_config() { @@ -16,178 +16,123 @@ fc::variant_object get_config() #else result[ "IS_TEST_NET" ] = false; #endif -#ifdef STEEM_ENABLE_SMT - result[ "STEEM_ENABLE_SMT" ] = true; +#ifdef SOPHIATX_ENABLE_SMT + result[ "SOPHIATX_ENABLE_SMT" ] = true; result["SMT_VESTING_WITHDRAW_INTERVAL_SECONDS"] = SMT_VESTING_WITHDRAW_INTERVAL_SECONDS; result["SMT_UPVOTE_LOCKOUT"] = SMT_UPVOTE_LOCKOUT; result["SMT_MAX_VOTABLE_ASSETS"] = SMT_MAX_VOTABLE_ASSETS; #else - result[ "STEEM_ENABLE_SMT" ] = false; + result[ "SOPHIATX_ENABLE_SMT" ] = false; #endif - result["SBD_SYMBOL"] = SBD_SYMBOL; - result["STEEM_INITIAL_VOTE_POWER_RATE"] = STEEM_INITIAL_VOTE_POWER_RATE; - result["STEEM_REDUCED_VOTE_POWER_RATE"] = STEEM_REDUCED_VOTE_POWER_RATE; - result["STEEM_100_PERCENT"] = STEEM_100_PERCENT; - result["STEEM_1_PERCENT"] = STEEM_1_PERCENT; - result["STEEM_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD"] = STEEM_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD; - result["STEEM_ACTIVE_CHALLENGE_COOLDOWN"] = STEEM_ACTIVE_CHALLENGE_COOLDOWN; - result["STEEM_ACTIVE_CHALLENGE_FEE"] = STEEM_ACTIVE_CHALLENGE_FEE; - result["STEEM_ADDRESS_PREFIX"] = STEEM_ADDRESS_PREFIX; - result["STEEM_APR_PERCENT_MULTIPLY_PER_BLOCK"] = STEEM_APR_PERCENT_MULTIPLY_PER_BLOCK; - result["STEEM_APR_PERCENT_MULTIPLY_PER_HOUR"] = STEEM_APR_PERCENT_MULTIPLY_PER_HOUR; - result["STEEM_APR_PERCENT_MULTIPLY_PER_ROUND"] = STEEM_APR_PERCENT_MULTIPLY_PER_ROUND; - result["STEEM_APR_PERCENT_SHIFT_PER_BLOCK"] = STEEM_APR_PERCENT_SHIFT_PER_BLOCK; - result["STEEM_APR_PERCENT_SHIFT_PER_HOUR"] = STEEM_APR_PERCENT_SHIFT_PER_HOUR; - result["STEEM_APR_PERCENT_SHIFT_PER_ROUND"] = STEEM_APR_PERCENT_SHIFT_PER_ROUND; - result["STEEM_BANDWIDTH_AVERAGE_WINDOW_SECONDS"] = STEEM_BANDWIDTH_AVERAGE_WINDOW_SECONDS; - result["STEEM_BANDWIDTH_PRECISION"] = STEEM_BANDWIDTH_PRECISION; - result["STEEM_BLOCKCHAIN_PRECISION"] = STEEM_BLOCKCHAIN_PRECISION; - result["STEEM_BLOCKCHAIN_PRECISION_DIGITS"] = STEEM_BLOCKCHAIN_PRECISION_DIGITS; - result["STEEM_BLOCKCHAIN_HARDFORK_VERSION"] = STEEM_BLOCKCHAIN_HARDFORK_VERSION; - result["STEEM_BLOCKCHAIN_VERSION"] = STEEM_BLOCKCHAIN_VERSION; - result["STEEM_BLOCK_INTERVAL"] = STEEM_BLOCK_INTERVAL; - result["STEEM_BLOCKS_PER_DAY"] = STEEM_BLOCKS_PER_DAY; - result["STEEM_BLOCKS_PER_HOUR"] = STEEM_BLOCKS_PER_HOUR; - result["STEEM_BLOCKS_PER_YEAR"] = STEEM_BLOCKS_PER_YEAR; - result["STEEM_CASHOUT_WINDOW_SECONDS"] = STEEM_CASHOUT_WINDOW_SECONDS; - result["STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF12"] = STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF12; - result["STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF17"] = STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF17; - result["STEEM_CHAIN_ID"] = STEEM_CHAIN_ID; - result["STEEM_CHAIN_ID_NAME"] = STEEM_CHAIN_ID_NAME; - result["STEEM_COMMENT_REWARD_FUND_NAME"] = STEEM_COMMENT_REWARD_FUND_NAME; - result["STEEM_CONTENT_APR_PERCENT"] = STEEM_CONTENT_APR_PERCENT; - result["STEEM_CONTENT_CONSTANT_HF0"] = STEEM_CONTENT_CONSTANT_HF0; - result["STEEM_CONTENT_REWARD_PERCENT"] = STEEM_CONTENT_REWARD_PERCENT; - result["STEEM_CONVERSION_DELAY"] = STEEM_CONVERSION_DELAY; - result["STEEM_CONVERSION_DELAY_PRE_HF_16"] = STEEM_CONVERSION_DELAY_PRE_HF_16; - result["STEEM_CREATE_ACCOUNT_DELEGATION_RATIO"] = STEEM_CREATE_ACCOUNT_DELEGATION_RATIO; - result["STEEM_CREATE_ACCOUNT_DELEGATION_TIME"] = STEEM_CREATE_ACCOUNT_DELEGATION_TIME; - result["STEEM_CREATE_ACCOUNT_WITH_STEEM_MODIFIER"] = STEEM_CREATE_ACCOUNT_WITH_STEEM_MODIFIER; - result["STEEM_CURATE_APR_PERCENT"] = STEEM_CURATE_APR_PERCENT; - result["STEEM_DEFAULT_SBD_INTEREST_RATE"] = STEEM_DEFAULT_SBD_INTEREST_RATE; - result["STEEM_EQUIHASH_K"] = STEEM_EQUIHASH_K; - result["STEEM_EQUIHASH_N"] = STEEM_EQUIHASH_N; - result["STEEM_FEED_HISTORY_WINDOW"] = STEEM_FEED_HISTORY_WINDOW; - result["STEEM_FEED_HISTORY_WINDOW_PRE_HF_16"] = STEEM_FEED_HISTORY_WINDOW_PRE_HF_16; - result["STEEM_FEED_INTERVAL_BLOCKS"] = STEEM_FEED_INTERVAL_BLOCKS; - result["STEEM_GENESIS_TIME"] = STEEM_GENESIS_TIME; - result["STEEM_HARDFORK_REQUIRED_WITNESSES"] = STEEM_HARDFORK_REQUIRED_WITNESSES; - result["STEEM_INFLATION_NARROWING_PERIOD"] = STEEM_INFLATION_NARROWING_PERIOD; - result["STEEM_INFLATION_RATE_START_PERCENT"] = STEEM_INFLATION_RATE_START_PERCENT; - result["STEEM_INFLATION_RATE_STOP_PERCENT"] = STEEM_INFLATION_RATE_STOP_PERCENT; - result["STEEM_INIT_MINER_NAME"] = STEEM_INIT_MINER_NAME; - result["STEEM_INIT_PUBLIC_KEY_STR"] = STEEM_INIT_PUBLIC_KEY_STR; + result["SBD1_SYMBOL"] = SBD1_SYMBOL; + result["SBD2_SYMBOL"] = SBD2_SYMBOL; + result["SBD3_SYMBOL"] = SBD3_SYMBOL; + result["SBD4_SYMBOL"] = SBD4_SYMBOL; + result["SBD5_SYMBOL"] = SBD5_SYMBOL; + result["SOPHIATX_100_PERCENT"] = SOPHIATX_100_PERCENT; + result["SOPHIATX_1_PERCENT"] = SOPHIATX_1_PERCENT; + result["SOPHIATX_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD"] = SOPHIATX_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD; + result["SOPHIATX_ACTIVE_CHALLENGE_COOLDOWN"] = SOPHIATX_ACTIVE_CHALLENGE_COOLDOWN; + result["SOPHIATX_ACTIVE_CHALLENGE_FEE"] = SOPHIATX_ACTIVE_CHALLENGE_FEE; + result["SOPHIATX_ADDRESS_PREFIX"] = SOPHIATX_ADDRESS_PREFIX; + result["SOPHIATX_APR_PERCENT_MULTIPLY_PER_BLOCK"] = SOPHIATX_APR_PERCENT_MULTIPLY_PER_BLOCK; + result["SOPHIATX_APR_PERCENT_MULTIPLY_PER_HOUR"] = SOPHIATX_APR_PERCENT_MULTIPLY_PER_HOUR; + result["SOPHIATX_APR_PERCENT_MULTIPLY_PER_ROUND"] = SOPHIATX_APR_PERCENT_MULTIPLY_PER_ROUND; + result["SOPHIATX_APR_PERCENT_SHIFT_PER_BLOCK"] = SOPHIATX_APR_PERCENT_SHIFT_PER_BLOCK; + result["SOPHIATX_APR_PERCENT_SHIFT_PER_HOUR"] = SOPHIATX_APR_PERCENT_SHIFT_PER_HOUR; + result["SOPHIATX_APR_PERCENT_SHIFT_PER_ROUND"] = SOPHIATX_APR_PERCENT_SHIFT_PER_ROUND; + result["SOPHIATX_BANDWIDTH_AVERAGE_WINDOW_SECONDS"] = SOPHIATX_BANDWIDTH_AVERAGE_WINDOW_SECONDS; + result["SOPHIATX_BANDWIDTH_PRECISION"] = SOPHIATX_BANDWIDTH_PRECISION; + result["SOPHIATX_BLOCKCHAIN_PRECISION"] = SOPHIATX_BLOCKCHAIN_PRECISION; + result["SOPHIATX_BLOCKCHAIN_PRECISION_DIGITS"] = SOPHIATX_BLOCKCHAIN_PRECISION_DIGITS; + result["SOPHIATX_BLOCKCHAIN_HARDFORK_VERSION"] = SOPHIATX_BLOCKCHAIN_HARDFORK_VERSION; + result["SOPHIATX_BLOCKCHAIN_VERSION"] = SOPHIATX_BLOCKCHAIN_VERSION; + result["SOPHIATX_BLOCK_INTERVAL"] = SOPHIATX_BLOCK_INTERVAL; + result["SOPHIATX_BLOCKS_PER_DAY"] = SOPHIATX_BLOCKS_PER_DAY; + result["SOPHIATX_BLOCKS_PER_HOUR"] = SOPHIATX_BLOCKS_PER_HOUR; + result["SOPHIATX_BLOCKS_PER_YEAR"] = SOPHIATX_BLOCKS_PER_YEAR; + result["SOPHIATX_CASHOUT_WINDOW_SECONDS"] = SOPHIATX_CASHOUT_WINDOW_SECONDS; + result["SOPHIATX_CREATE_ACCOUNT_DELEGATION_RATIO"] = SOPHIATX_CREATE_ACCOUNT_DELEGATION_RATIO; + result["SOPHIATX_CREATE_ACCOUNT_DELEGATION_TIME"] = SOPHIATX_CREATE_ACCOUNT_DELEGATION_TIME; + result["SOPHIATX_FEED_HISTORY_WINDOW"] = SOPHIATX_FEED_HISTORY_WINDOW; + result["SOPHIATX_FEED_INTERVAL_BLOCKS"] = SOPHIATX_FEED_INTERVAL_BLOCKS; + result["SOPHIATX_HARDFORK_REQUIRED_WITNESSES"] = SOPHIATX_HARDFORK_REQUIRED_WITNESSES; + result["SOPHIATX_INIT_MINER_NAME"] = SOPHIATX_INIT_MINER_NAME; + result["SOPHIATX_INIT_PUBLIC_KEY_STR"] = SOPHIATX_INIT_PUBLIC_KEY_STR; #if 0 // do not expose private key, period. // we need this line present but inactivated so CI check for all constants in config.hpp doesn't complain. - result["STEEM_INIT_PRIVATE_KEY"] = STEEM_INIT_PRIVATE_KEY; + result["SOPHIATX_INIT_PRIVATE_KEY"] = SOPHIATX_INIT_PRIVATE_KEY; #endif - result["STEEM_INIT_SUPPLY"] = STEEM_INIT_SUPPLY; - result["STEEM_INIT_TIME"] = STEEM_INIT_TIME; - result["STEEM_IRREVERSIBLE_THRESHOLD"] = STEEM_IRREVERSIBLE_THRESHOLD; - result["STEEM_LIQUIDITY_APR_PERCENT"] = STEEM_LIQUIDITY_APR_PERCENT; - result["STEEM_LIQUIDITY_REWARD_BLOCKS"] = STEEM_LIQUIDITY_REWARD_BLOCKS; - result["STEEM_LIQUIDITY_REWARD_PERIOD_SEC"] = STEEM_LIQUIDITY_REWARD_PERIOD_SEC; - result["STEEM_LIQUIDITY_TIMEOUT_SEC"] = STEEM_LIQUIDITY_TIMEOUT_SEC; - result["STEEM_MAX_ACCOUNT_NAME_LENGTH"] = STEEM_MAX_ACCOUNT_NAME_LENGTH; - result["STEEM_MAX_ACCOUNT_WITNESS_VOTES"] = STEEM_MAX_ACCOUNT_WITNESS_VOTES; - result["STEEM_MAX_ASSET_WHITELIST_AUTHORITIES"] = STEEM_MAX_ASSET_WHITELIST_AUTHORITIES; - result["STEEM_MAX_AUTHORITY_MEMBERSHIP"] = STEEM_MAX_AUTHORITY_MEMBERSHIP; - result["STEEM_MAX_BLOCK_SIZE"] = STEEM_MAX_BLOCK_SIZE; - result["STEEM_SOFT_MAX_BLOCK_SIZE"] = STEEM_SOFT_MAX_BLOCK_SIZE; - result["STEEM_MAX_CASHOUT_WINDOW_SECONDS"] = STEEM_MAX_CASHOUT_WINDOW_SECONDS; - result["STEEM_MAX_COMMENT_DEPTH"] = STEEM_MAX_COMMENT_DEPTH; - result["STEEM_MAX_COMMENT_DEPTH_PRE_HF17"] = STEEM_MAX_COMMENT_DEPTH_PRE_HF17; - result["STEEM_MAX_FEED_AGE_SECONDS"] = STEEM_MAX_FEED_AGE_SECONDS; - result["STEEM_MAX_INSTANCE_ID"] = STEEM_MAX_INSTANCE_ID; - result["STEEM_MAX_MEMO_SIZE"] = STEEM_MAX_MEMO_SIZE; - result["STEEM_MAX_WITNESSES"] = STEEM_MAX_WITNESSES; - result["STEEM_MAX_MINER_WITNESSES_HF0"] = STEEM_MAX_MINER_WITNESSES_HF0; - result["STEEM_MAX_MINER_WITNESSES_HF17"] = STEEM_MAX_MINER_WITNESSES_HF17; - result["STEEM_MAX_PERMLINK_LENGTH"] = STEEM_MAX_PERMLINK_LENGTH; - result["STEEM_MAX_PROXY_RECURSION_DEPTH"] = STEEM_MAX_PROXY_RECURSION_DEPTH; - result["STEEM_MAX_RATION_DECAY_RATE"] = STEEM_MAX_RATION_DECAY_RATE; - result["STEEM_MAX_RESERVE_RATIO"] = STEEM_MAX_RESERVE_RATIO; - result["STEEM_MAX_RUNNER_WITNESSES_HF0"] = STEEM_MAX_RUNNER_WITNESSES_HF0; - result["STEEM_MAX_RUNNER_WITNESSES_HF17"] = STEEM_MAX_RUNNER_WITNESSES_HF17; - result["STEEM_MAX_SATOSHIS"] = STEEM_MAX_SATOSHIS; - result["STEEM_MAX_SHARE_SUPPLY"] = STEEM_MAX_SHARE_SUPPLY; - result["STEEM_MAX_SIG_CHECK_DEPTH"] = STEEM_MAX_SIG_CHECK_DEPTH; - result["STEEM_MAX_TIME_UNTIL_EXPIRATION"] = STEEM_MAX_TIME_UNTIL_EXPIRATION; - result["STEEM_MAX_TRANSACTION_SIZE"] = STEEM_MAX_TRANSACTION_SIZE; - result["STEEM_MAX_UNDO_HISTORY"] = STEEM_MAX_UNDO_HISTORY; - result["STEEM_MAX_URL_LENGTH"] = STEEM_MAX_URL_LENGTH; - result["STEEM_MAX_VOTE_CHANGES"] = STEEM_MAX_VOTE_CHANGES; - result["STEEM_MAX_VOTED_WITNESSES_HF0"] = STEEM_MAX_VOTED_WITNESSES_HF0; - result["STEEM_MAX_VOTED_WITNESSES_HF17"] = STEEM_MAX_VOTED_WITNESSES_HF17; - result["STEEM_MAX_WITHDRAW_ROUTES"] = STEEM_MAX_WITHDRAW_ROUTES; - result["STEEM_MAX_WITNESS_URL_LENGTH"] = STEEM_MAX_WITNESS_URL_LENGTH; - result["STEEM_MIN_ACCOUNT_CREATION_FEE"] = STEEM_MIN_ACCOUNT_CREATION_FEE; - result["STEEM_MIN_ACCOUNT_NAME_LENGTH"] = STEEM_MIN_ACCOUNT_NAME_LENGTH; - result["STEEM_MIN_BLOCK_SIZE_LIMIT"] = STEEM_MIN_BLOCK_SIZE_LIMIT; - result["STEEM_MIN_BLOCK_SIZE"] = STEEM_MIN_BLOCK_SIZE; - result["STEEM_MIN_CONTENT_REWARD"] = STEEM_MIN_CONTENT_REWARD; - result["STEEM_MIN_CURATE_REWARD"] = STEEM_MIN_CURATE_REWARD; - result["STEEM_MIN_PERMLINK_LENGTH"] = STEEM_MIN_PERMLINK_LENGTH; - result["STEEM_MIN_REPLY_INTERVAL"] = STEEM_MIN_REPLY_INTERVAL; - result["STEEM_MIN_ROOT_COMMENT_INTERVAL"] = STEEM_MIN_ROOT_COMMENT_INTERVAL; - result["STEEM_MIN_VOTE_INTERVAL_SEC"] = STEEM_MIN_VOTE_INTERVAL_SEC; - result["STEEM_MINER_ACCOUNT"] = STEEM_MINER_ACCOUNT; - result["STEEM_MINER_PAY_PERCENT"] = STEEM_MINER_PAY_PERCENT; - result["STEEM_MIN_FEEDS"] = STEEM_MIN_FEEDS; - result["STEEM_MINING_REWARD"] = STEEM_MINING_REWARD; - result["STEEM_MINING_TIME"] = STEEM_MINING_TIME; - result["STEEM_MIN_LIQUIDITY_REWARD"] = STEEM_MIN_LIQUIDITY_REWARD; - result["STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC"] = STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC; - result["STEEM_MIN_PAYOUT_SBD"] = STEEM_MIN_PAYOUT_SBD; - result["STEEM_MIN_POW_REWARD"] = STEEM_MIN_POW_REWARD; - result["STEEM_MIN_PRODUCER_REWARD"] = STEEM_MIN_PRODUCER_REWARD; - result["STEEM_MIN_TRANSACTION_EXPIRATION_LIMIT"] = STEEM_MIN_TRANSACTION_EXPIRATION_LIMIT; - result["STEEM_MIN_TRANSACTION_SIZE_LIMIT"] = STEEM_MIN_TRANSACTION_SIZE_LIMIT; - result["STEEM_MIN_UNDO_HISTORY"] = STEEM_MIN_UNDO_HISTORY; - result["STEEM_NULL_ACCOUNT"] = STEEM_NULL_ACCOUNT; - result["STEEM_NUM_INIT_MINERS"] = STEEM_NUM_INIT_MINERS; - result["STEEM_OWNER_AUTH_HISTORY_TRACKING_START_BLOCK_NUM"] = STEEM_OWNER_AUTH_HISTORY_TRACKING_START_BLOCK_NUM; - result["STEEM_OWNER_AUTH_RECOVERY_PERIOD"] = STEEM_OWNER_AUTH_RECOVERY_PERIOD; - result["STEEM_OWNER_CHALLENGE_COOLDOWN"] = STEEM_OWNER_CHALLENGE_COOLDOWN; - result["STEEM_OWNER_CHALLENGE_FEE"] = STEEM_OWNER_CHALLENGE_FEE; - result["STEEM_OWNER_UPDATE_LIMIT"] = STEEM_OWNER_UPDATE_LIMIT; - result["STEEM_POST_AVERAGE_WINDOW"] = STEEM_POST_AVERAGE_WINDOW; - result["STEEM_POST_REWARD_FUND_NAME"] = STEEM_POST_REWARD_FUND_NAME; - result["STEEM_POST_WEIGHT_CONSTANT"] = STEEM_POST_WEIGHT_CONSTANT; - result["STEEM_POW_APR_PERCENT"] = STEEM_POW_APR_PERCENT; - result["STEEM_PRODUCER_APR_PERCENT"] = STEEM_PRODUCER_APR_PERCENT; - result["STEEM_PROXY_TO_SELF_ACCOUNT"] = STEEM_PROXY_TO_SELF_ACCOUNT; - result["STEEM_SBD_INTEREST_COMPOUND_INTERVAL_SEC"] = STEEM_SBD_INTEREST_COMPOUND_INTERVAL_SEC; - result["STEEM_SECONDS_PER_YEAR"] = STEEM_SECONDS_PER_YEAR; - result["STEEM_RECENT_RSHARES_DECAY_TIME_HF19"] = STEEM_RECENT_RSHARES_DECAY_TIME_HF19; - result["STEEM_RECENT_RSHARES_DECAY_TIME_HF17"] = STEEM_RECENT_RSHARES_DECAY_TIME_HF17; - result["STEEM_REVERSE_AUCTION_WINDOW_SECONDS"] = STEEM_REVERSE_AUCTION_WINDOW_SECONDS; - result["STEEM_ROOT_POST_PARENT"] = STEEM_ROOT_POST_PARENT; - result["STEEM_SAVINGS_WITHDRAW_REQUEST_LIMIT"] = STEEM_SAVINGS_WITHDRAW_REQUEST_LIMIT; - result["STEEM_SAVINGS_WITHDRAW_TIME"] = STEEM_SAVINGS_WITHDRAW_TIME; - result["STEEM_SBD_START_PERCENT"] = STEEM_SBD_START_PERCENT; - result["STEEM_SBD_STOP_PERCENT"] = STEEM_SBD_STOP_PERCENT; - result["STEEM_SECOND_CASHOUT_WINDOW"] = STEEM_SECOND_CASHOUT_WINDOW; - result["STEEM_SOFT_MAX_COMMENT_DEPTH"] = STEEM_SOFT_MAX_COMMENT_DEPTH; - result["STEEM_START_MINER_VOTING_BLOCK"] = STEEM_START_MINER_VOTING_BLOCK; - result["STEEM_START_VESTING_BLOCK"] = STEEM_START_VESTING_BLOCK; - result["STEEM_TEMP_ACCOUNT"] = STEEM_TEMP_ACCOUNT; - result["STEEM_UPVOTE_LOCKOUT_HF7"] = STEEM_UPVOTE_LOCKOUT_HF7; - result["STEEM_UPVOTE_LOCKOUT_HF17"] = STEEM_UPVOTE_LOCKOUT_HF17; - result["STEEM_VESTING_FUND_PERCENT"] = STEEM_VESTING_FUND_PERCENT; - result["STEEM_VESTING_WITHDRAW_INTERVALS"] = STEEM_VESTING_WITHDRAW_INTERVALS; - result["STEEM_VESTING_WITHDRAW_INTERVALS_PRE_HF_16"] = STEEM_VESTING_WITHDRAW_INTERVALS_PRE_HF_16; - result["STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS"] = STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS; - result["STEEM_VOTE_DUST_THRESHOLD"] = STEEM_VOTE_DUST_THRESHOLD; - result["STEEM_VOTE_REGENERATION_SECONDS"] = STEEM_VOTE_REGENERATION_SECONDS; - result["STEEM_SYMBOL"] = STEEM_SYMBOL; + result["SOPHIATX_INIT_SUPPLY"] = SOPHIATX_INIT_SUPPLY; + result["SOPHIATX_INIT_TIME"] = SOPHIATX_INIT_TIME; + result["SOPHIATX_IRREVERSIBLE_THRESHOLD"] = SOPHIATX_IRREVERSIBLE_THRESHOLD; + result["SOPHIATX_MAX_ACCOUNT_NAME_LENGTH"] = SOPHIATX_MAX_ACCOUNT_NAME_LENGTH; + result["SOPHIATX_MAX_ACCOUNT_WITNESS_VOTES"] = SOPHIATX_MAX_ACCOUNT_WITNESS_VOTES; + result["SOPHIATX_MAX_ASSET_WHITELIST_AUTHORITIES"] = SOPHIATX_MAX_ASSET_WHITELIST_AUTHORITIES; + result["SOPHIATX_MAX_AUTHORITY_MEMBERSHIP"] = SOPHIATX_MAX_AUTHORITY_MEMBERSHIP; + result["SOPHIATX_MAX_BLOCK_SIZE"] = SOPHIATX_MAX_BLOCK_SIZE; + result["SOPHIATX_SOFT_MAX_BLOCK_SIZE"] = SOPHIATX_SOFT_MAX_BLOCK_SIZE; + result["SOPHIATX_MAX_CASHOUT_WINDOW_SECONDS"] = SOPHIATX_MAX_CASHOUT_WINDOW_SECONDS; + result["SOPHIATX_MAX_FEED_AGE_SECONDS"] = SOPHIATX_MAX_FEED_AGE_SECONDS; + result["SOPHIATX_MAX_INSTANCE_ID"] = SOPHIATX_MAX_INSTANCE_ID; + result["SOPHIATX_MAX_MEMO_SIZE"] = SOPHIATX_MAX_MEMO_SIZE; + result["SOPHIATX_MAX_WITNESSES"] = SOPHIATX_MAX_WITNESSES; + result["SOPHIATX_MAX_MINER_WITNESSES_HF0"] = SOPHIATX_MAX_MINER_WITNESSES_HF0; + result["SOPHIATX_MAX_PERMLINK_LENGTH"] = SOPHIATX_MAX_PERMLINK_LENGTH; + result["SOPHIATX_MAX_PROXY_RECURSION_DEPTH"] = SOPHIATX_MAX_PROXY_RECURSION_DEPTH; + result["SOPHIATX_MAX_RATION_DECAY_RATE"] = SOPHIATX_MAX_RATION_DECAY_RATE; + result["SOPHIATX_MAX_RESERVE_RATIO"] = SOPHIATX_MAX_RESERVE_RATIO; + result["SOPHIATX_MAX_RUNNER_WITNESSES_HF0"] = SOPHIATX_MAX_RUNNER_WITNESSES_HF0; + result["SOPHIATX_MAX_SATOSHIS"] = SOPHIATX_MAX_SATOSHIS; + result["SOPHIATX_MAX_SHARE_SUPPLY"] = SOPHIATX_MAX_SHARE_SUPPLY; + result["SOPHIATX_MAX_SIG_CHECK_DEPTH"] = SOPHIATX_MAX_SIG_CHECK_DEPTH; + result["SOPHIATX_MAX_TIME_UNTIL_EXPIRATION"] = SOPHIATX_MAX_TIME_UNTIL_EXPIRATION; + result["SOPHIATX_MAX_TRANSACTION_SIZE"] = SOPHIATX_MAX_TRANSACTION_SIZE; + result["SOPHIATX_MAX_UNDO_HISTORY"] = SOPHIATX_MAX_UNDO_HISTORY; + result["SOPHIATX_MAX_URL_LENGTH"] = SOPHIATX_MAX_URL_LENGTH; + result["SOPHIATX_MAX_VOTE_CHANGES"] = SOPHIATX_MAX_VOTE_CHANGES; + result["SOPHIATX_MAX_VOTED_WITNESSES_HF0"] = SOPHIATX_MAX_VOTED_WITNESSES_HF0; + result["SOPHIATX_MAX_WITNESS_URL_LENGTH"] = SOPHIATX_MAX_WITNESS_URL_LENGTH; + result["SOPHIATX_MIN_ACCOUNT_CREATION_FEE"] = SOPHIATX_MIN_ACCOUNT_CREATION_FEE; + result["SOPHIATX_MIN_ACCOUNT_NAME_LENGTH"] = SOPHIATX_MIN_ACCOUNT_NAME_LENGTH; + result["SOPHIATX_MIN_BLOCK_SIZE_LIMIT"] = SOPHIATX_MIN_BLOCK_SIZE_LIMIT; + result["SOPHIATX_MIN_BLOCK_SIZE"] = SOPHIATX_MIN_BLOCK_SIZE; + result["SOPHIATX_MIN_PERMLINK_LENGTH"] = SOPHIATX_MIN_PERMLINK_LENGTH; + result["SOPHIATX_MIN_REPLY_INTERVAL"] = SOPHIATX_MIN_REPLY_INTERVAL; + result["SOPHIATX_MIN_VOTE_INTERVAL_SEC"] = SOPHIATX_MIN_VOTE_INTERVAL_SEC; + result["SOPHIATX_MINER_ACCOUNT"] = SOPHIATX_MINER_ACCOUNT; + result["SOPHIATX_MINER_PAY_PERCENT"] = SOPHIATX_MINER_PAY_PERCENT; + result["SOPHIATX_MIN_FEEDS"] = SOPHIATX_MIN_FEEDS; + result["SOPHIATX_MINING_REWARD"] = SOPHIATX_MINING_REWARD; + result["SOPHIATX_MIN_TRANSACTION_EXPIRATION_LIMIT"] = SOPHIATX_MIN_TRANSACTION_EXPIRATION_LIMIT; + result["SOPHIATX_MIN_TRANSACTION_SIZE_LIMIT"] = SOPHIATX_MIN_TRANSACTION_SIZE_LIMIT; + result["SOPHIATX_MIN_UNDO_HISTORY"] = SOPHIATX_MIN_UNDO_HISTORY; + result["SOPHIATX_NULL_ACCOUNT"] = SOPHIATX_NULL_ACCOUNT; + result["SOPHIATX_NUM_INIT_MINERS"] = SOPHIATX_NUM_INIT_MINERS; + result["SOPHIATX_OWNER_AUTH_RECOVERY_PERIOD"] = SOPHIATX_OWNER_AUTH_RECOVERY_PERIOD; + result["SOPHIATX_OWNER_CHALLENGE_COOLDOWN"] = SOPHIATX_OWNER_CHALLENGE_COOLDOWN; + result["SOPHIATX_OWNER_CHALLENGE_FEE"] = SOPHIATX_OWNER_CHALLENGE_FEE; + result["SOPHIATX_OWNER_UPDATE_LIMIT"] = SOPHIATX_OWNER_UPDATE_LIMIT; + result["SOPHIATX_PROXY_TO_SELF_ACCOUNT"] = SOPHIATX_PROXY_TO_SELF_ACCOUNT; + result["SOPHIATX_SECONDS_PER_YEAR"] = SOPHIATX_SECONDS_PER_YEAR; + result["SOPHIATX_REVERSE_AUCTION_WINDOW_SECONDS"] = SOPHIATX_REVERSE_AUCTION_WINDOW_SECONDS; + result["SOPHIATX_ROOT_POST_PARENT"] = SOPHIATX_ROOT_POST_PARENT; + result["SOPHIATX_SECOND_CASHOUT_WINDOW"] = SOPHIATX_SECOND_CASHOUT_WINDOW; + result["SOPHIATX_START_MINER_VOTING_BLOCK"] = SOPHIATX_START_MINER_VOTING_BLOCK; + result["SOPHIATX_START_VESTING_BLOCK"] = SOPHIATX_START_VESTING_BLOCK; + result["SOPHIATX_TEMP_ACCOUNT"] = SOPHIATX_TEMP_ACCOUNT; + result["SOPHIATX_VESTING_WITHDRAW_INTERVALS"] = SOPHIATX_VESTING_WITHDRAW_INTERVALS; + result["SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS"] = SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS; + result["SOPHIATX_VOTE_DUST_THRESHOLD"] = SOPHIATX_VOTE_DUST_THRESHOLD; + result["SOPHIATX_VOTE_REGENERATION_SECONDS"] = SOPHIATX_VOTE_REGENERATION_SECONDS; + result["SOPHIATX_SYMBOL"] = SOPHIATX_SYMBOL; result["VESTS_SYMBOL"] = VESTS_SYMBOL; - result["STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH"] = STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH; - result["STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH2"] = STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH2; + result["SOPHIATX_VIRTUAL_SCHEDULE_LAP_LENGTH"] = SOPHIATX_VIRTUAL_SCHEDULE_LAP_LENGTH; + result["SOPHIATX_VIRTUAL_SCHEDULE_LAP_LENGTH2"] = SOPHIATX_VIRTUAL_SCHEDULE_LAP_LENGTH2; return result; } -} } // steem::protocol +} } // sophiatx::protocol diff --git a/libraries/protocol/hardfork.d/0-preamble.hf b/libraries/protocol/hardfork.d/0-preamble.hf index 7a4028d3..788dfca6 100644 --- a/libraries/protocol/hardfork.d/0-preamble.hf +++ b/libraries/protocol/hardfork.d/0-preamble.hf @@ -9,11 +9,11 @@ #pragma once -#include +#include #include #ifdef IS_TEST_NET -#define STEEM_NUM_HARDFORKS 21 +#define SOPHIATX_NUM_HARDFORKS 0 #else -#define STEEM_NUM_HARDFORKS 19 +#define SOPHIATX_NUM_HARDFORKS 0 #endif diff --git a/libraries/protocol/hardfork.d/0_1.hf b/libraries/protocol/hardfork.d/0_1.hf deleted file mode 100644 index 82e04b50..00000000 --- a/libraries/protocol/hardfork.d/0_1.hf +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef STEEM_HARDFORK_0_1 -#define STEEM_HARDFORK_0_1 1 -// 4/25/2016 17:30:00 GMT -#define STEEM_HARDFORK_0_1_TIME 1461605400 -#define STEEM_HARDFORK_0_1_VERSION hardfork_version( 0, 1 ) -#endif diff --git a/libraries/protocol/hardfork.d/0_10.hf b/libraries/protocol/hardfork.d/0_10.hf deleted file mode 100644 index 6980b277..00000000 --- a/libraries/protocol/hardfork.d/0_10.hf +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef STEEM_HARDFORK_0_10 -#define STEEM_HARDFORK_0_10 10 -#define STEEM_HARDFORK_0_10__141 STEEM_HARDFORK_0_10 -#define STEEM_HARDFORK_0_10__149 STEEM_HARDFORK_0_10 - -#define STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10 fc::seconds(60*30) /// 30 min -#define STEEM_HARDFORK_0_10_TIME 1468584000 //2016-07-15T12:00:00 UTC -#define STEEM_HARDFORK_0_10_VERSION hardfork_version( 0, 10 ) -#endif diff --git a/libraries/protocol/hardfork.d/0_11.hf b/libraries/protocol/hardfork.d/0_11.hf deleted file mode 100644 index 1b2c22f5..00000000 --- a/libraries/protocol/hardfork.d/0_11.hf +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef STEEM_HARDFORK_0_11 -#define STEEM_HARDFORK_0_11 11 -#define STEEM_HARDFORK_0_11__169 STEEM_HARDFORK_0_11 - -#define STEEM_HARDFORK_0_11_TIME 1468767600 // 2016-07-17T15:00:00 UTC (11:00:00 EDT) -#define STEEM_HARDFORK_0_11_VERSION hardfork_version( 0, 11 ) - -#endif diff --git a/libraries/protocol/hardfork.d/0_12.hf b/libraries/protocol/hardfork.d/0_12.hf deleted file mode 100644 index 14eed671..00000000 --- a/libraries/protocol/hardfork.d/0_12.hf +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef STEEM_HARDFORK_0_12 -#define STEEM_HARDFORK_0_12 12 -#define STEEM_HARDFORK_0_12__176 (STEEM_HARDFORK_0_12) -#define STEEM_HARDFORK_0_12__177 (STEEM_HARDFORK_0_12) -#define STEEM_HARDFORK_0_12__178 (STEEM_HARDFORK_0_12) -#define STEEM_HARDFORK_0_12__179 (STEEM_HARDFORK_0_12) - -#define STEEM_HARDFORK_0_12_TIME 1469545200 // 2016-07-26T15:00:00 UTC (11:00:00 EDT) -#define STEEM_HARDFORK_0_12_VERSION hardfork_version( 0, 12 ) - -#endif diff --git a/libraries/protocol/hardfork.d/0_13.hf b/libraries/protocol/hardfork.d/0_13.hf deleted file mode 100644 index efbbf923..00000000 --- a/libraries/protocol/hardfork.d/0_13.hf +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef STEEM_HARDFORK_0_13 -#define STEEM_HARDFORK_0_13 13 -#define STEEM_HARDFORK_0_13__248 (STEEM_HARDFORK_0_13) -#define STEEM_HARDFORK_0_13__256 (STEEM_HARDFORK_0_13) -#define STEEM_HARDFORK_0_13__257 (STEEM_HARDFORK_0_13) - -#define STEEM_HARDFORK_0_13_TIME 1471269600 // Mon, 15 Aug 2016 14:00:00 GMT -#define STEEM_HARDFORK_0_13_VERSION hardfork_version( 0, 13 ) - -#endif diff --git a/libraries/protocol/hardfork.d/0_14.hf b/libraries/protocol/hardfork.d/0_14.hf deleted file mode 100644 index 89bb1c6b..00000000 --- a/libraries/protocol/hardfork.d/0_14.hf +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef STEEM_HARDFORK_0_14 -#define STEEM_HARDFORK_0_14 14 -#define STEEM_HARDFORK_0_14__324 (STEEM_HARDFORK_0_14) - -#define STEEM_HARDFORK_0_14__143 (STEEM_HARDFORK_0_14) -#define STEEM_HARDFORK_0_14__230 (STEEM_HARDFORK_0_14) -#define STEEM_HARDFORK_0_14__239 (STEEM_HARDFORK_0_14) -#define STEEM_HARDFORK_0_14__259 (STEEM_HARDFORK_0_14) -#define STEEM_HARDFORK_0_14__278 (STEEM_HARDFORK_0_14) -#define STEEM_HARDFORK_0_14__306 (STEEM_HARDFORK_0_14) -#define STEEM_HARDFORK_0_14__307 (STEEM_HARDFORK_0_14) -#define STEEM_HARDFORK_0_14__317 (STEEM_HARDFORK_0_14) -#define STEEM_HARDFORK_0_14__327 (STEEM_HARDFORK_0_14) -#define STEEM_HARDFORK_0_14__240 (STEEM_HARDFORK_0_14) -#define STEEM_HARDFORK_0_14__410 (STEEM_HARDFORK_0_14) - - -#define STEEM_HARDFORK_0_14_TIME 1474383600 // Tue, 20 Sep 2016 15:00:00 GMT - -#define STEEM_HARDFORK_0_14_VERSION hardfork_version( 0, 14 ) - -#endif diff --git a/libraries/protocol/hardfork.d/0_15.hf b/libraries/protocol/hardfork.d/0_15.hf deleted file mode 100644 index 376f06e9..00000000 --- a/libraries/protocol/hardfork.d/0_15.hf +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef STEEM_HARDFORK_0_15 -#define STEEM_HARDFORK_0_15 15 -#define STEEM_HARDFORK_0_15__465 (STEEM_HARDFORK_0_15) - -#define STEEM_HARDFORK_0_15_TIME 1478620800 // Tue, 8 Nov 2016 16:00:00 UTC (11:00:00 EST) - -#define STEEM_HARDFORK_0_15_VERSION hardfork_version( 0, 15 ) - -#endif diff --git a/libraries/protocol/hardfork.d/0_16.hf b/libraries/protocol/hardfork.d/0_16.hf deleted file mode 100644 index 89ff618c..00000000 --- a/libraries/protocol/hardfork.d/0_16.hf +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef STEEM_HARDFORK_0_16 -#define STEEM_HARDFORK_0_16 16 -#define STEEM_HARDFORK_0_16__551 (STEEM_HARDFORK_0_16) -#define STEEM_HARDFORK_0_16__562 (STEEM_HARDFORK_0_16) - -#define STEEM_HARDFORK_0_16_TIME 1481040000 // Tue, 6 Dec 2016 16:00:00 UTC (11:00:00 EST) - -#define STEEM_HARDFORK_0_16_VERSION hardfork_version( 0, 16 ) - -#endif diff --git a/libraries/protocol/hardfork.d/0_17.hf b/libraries/protocol/hardfork.d/0_17.hf deleted file mode 100644 index d9f182cd..00000000 --- a/libraries/protocol/hardfork.d/0_17.hf +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef STEEM_HARDFORK_0_17 -#define STEEM_HARDFORK_0_17 17 -#define STEEM_HARDFORK_0_17__659 (STEEM_HARDFORK_0_17) -#define STEEM_HARDFORK_0_17__733 (STEEM_HARDFORK_0_17) -#define STEEM_HARDFORK_0_17__766 (STEEM_HARDFORK_0_17) -#define STEEM_HARDFORK_0_17__767 (STEEM_HARDFORK_0_17) -#define STEEM_HARDFORK_0_17__769 (STEEM_HARDFORK_0_17) -#define STEEM_HARDFORK_0_17__770 (STEEM_HARDFORK_0_17) -#define STEEM_HARDFORK_0_17__771 (STEEM_HARDFORK_0_17) -#define STEEM_HARDFORK_0_17__772 (STEEM_HARDFORK_0_17) -#define STEEM_HARDFORK_0_17__773 (STEEM_HARDFORK_0_17) -#define STEEM_HARDFORK_0_17__774 (STEEM_HARDFORK_0_17) -#define STEEM_HARDFORK_0_17__818 (STEEM_HARDFORK_0_17) -#define STEEM_HARDFORK_0_17__869 (STEEM_HARDFORK_0_17) -#define STEEM_HARDFORK_0_17__926 (STEEM_HARDFORK_0_17) -#define STEEM_HARDFORK_0_17__900 (STEEM_HARDFORK_0_17) - -#define STEEM_HARDFORK_0_17_TIME 1490886000 // Thu, 30 March 2017 15:00:00 UTC (11:00:00 EDT) - -#define STEEM_HARDFORK_0_17_VERSION hardfork_version( 0, 17 ) - -#define STEEM_HF_17_NUM_POSTS (49357) -#define STEEM_HF_17_NUM_REPLIES (242051) -#define STEEM_HF_17_RECENT_CLAIMS (fc::uint128_t(808638359297ull,13744269167557038121ull)) // 14916744862149894120447332012073 - -#endif diff --git a/libraries/protocol/hardfork.d/0_18.hf b/libraries/protocol/hardfork.d/0_18.hf deleted file mode 100644 index 2c66b074..00000000 --- a/libraries/protocol/hardfork.d/0_18.hf +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef STEEM_HARDFORK_0_18 -#define STEEM_HARDFORK_0_18 18 - -#define STEEM_HARDFORK_0_18_TIME 1490886000 // Thu, 30 March 2017 15:00:00 UTC (11:00:00 EDT) - -#define STEEM_HARDFORK_0_18_VERSION hardfork_version( 0, 18 ) - -#endif diff --git a/libraries/protocol/hardfork.d/0_19.hf b/libraries/protocol/hardfork.d/0_19.hf deleted file mode 100644 index 71d9d655..00000000 --- a/libraries/protocol/hardfork.d/0_19.hf +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef STEEM_HARDFORK_0_19 -#define STEEM_HARDFORK_0_19 19 - -#define STEEM_HARDFORK_0_19_TIME 1497970800 // Tue, 20 Jun 2017 15:00:00 UTC (11:00:00 EDT) - -#define STEEM_HARDFORK_0_19__822 (STEEM_HARDFORK_0_19) -#define STEEM_HARDFORK_0_19__876 (STEEM_HARDFORK_0_19) -#define STEEM_HARDFORK_0_19__971 (STEEM_HARDFORK_0_19) -#define STEEM_HARDFORK_0_19__977 (STEEM_HARDFORK_0_19) -#define STEEM_HARDFORK_0_19__987 (STEEM_HARDFORK_0_19) -#define STEEM_HARDFORK_0_19__997 (STEEM_HARDFORK_0_19) -#define STEEM_HARDFORK_0_19__1051 (STEEM_HARDFORK_0_19) -#define STEEM_HARDFORK_0_19__1052 (STEEM_HARDFORK_0_19) -#define STEEM_HARDFORK_0_19__1053 (STEEM_HARDFORK_0_19) - -#define STEEM_HARDFORK_0_19_VERSION hardfork_version( 0, 19 ) - -#define STEEM_HF_19_RECENT_CLAIMS (fc::uint128_t(uint64_t(140797515942543623ull))) -#define STEEM_HARDFORK_0_19_ACTUAL_TIME (fc::time_point_sec(1497970809)) // Tue, 20 Jun 2017 15:00:09 UTC -#define STEEM_HF_19_SQRT_PRE_CALC (fc::time_point_sec( STEEM_HARDFORK_0_19_ACTUAL_TIME - STEEM_CASHOUT_WINDOW_SECONDS )) - -#endif diff --git a/libraries/protocol/hardfork.d/0_2.hf b/libraries/protocol/hardfork.d/0_2.hf deleted file mode 100644 index 86e3f12a..00000000 --- a/libraries/protocol/hardfork.d/0_2.hf +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef STEEM_HARDFORK_0_2 -#define STEEM_HARDFORK_0_2 2 -// Tue, 26 Apr 2016 18:00:00 GMT -#define STEEM_HARDFORK_0_2_TIME 1461693600 -#define STEEM_HARDFORK_0_2_VERSION hardfork_version( 0, 2 ) -#endif diff --git a/libraries/protocol/hardfork.d/0_20.hf b/libraries/protocol/hardfork.d/0_20.hf deleted file mode 100644 index d82c2eb2..00000000 --- a/libraries/protocol/hardfork.d/0_20.hf +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef STEEM_HARDFORK_0_20 -#define STEEM_HARDFORK_0_20 20 - -#define STEEM_HARDFORK_0_20_TIME 1597970800 // Future 2020... - -#define STEEM_HARDFORK_0_20__409 (STEEM_HARDFORK_0_20) -#define STEEM_HARDFORK_0_20__1620 (STEEM_HARDFORK_0_20) -#define STEEM_HARDFORK_0_20__1760 (STEEM_HARDFORK_0_20) -#define STEEM_HARDFORK_0_20__1764 (STEEM_HARDFORK_0_20) -#define STEEM_HARDFORK_0_20__1765 (STEEM_HARDFORK_0_20) -#define STEEM_HARDFORK_0_20__1811 (STEEM_HARDFORK_0_20) -#define STEEM_HARDFORK_0_20__1815 (STEEM_HARDFORK_0_20) - -#define STEEM_HARDFORK_0_20_VERSION hardfork_version( 0, 20 ) - -#endif diff --git a/libraries/protocol/hardfork.d/0_21.hf b/libraries/protocol/hardfork.d/0_21.hf deleted file mode 100644 index 0948f918..00000000 --- a/libraries/protocol/hardfork.d/0_21.hf +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef STEEM_HARDFORK_0_21 -#define STEEM_HARDFORK_0_21 21 -#define STEEM_SMT_HARDFORK STEEM_HARDFORK_0_21 - -#define STEEM_HARDFORK_0_21_TIME 1597970800 // Future 2020... - -#define STEEM_HARDFORK_0_21_VERSION hardfork_version( 0, 21 ) - -#endif diff --git a/libraries/protocol/hardfork.d/0_3.hf b/libraries/protocol/hardfork.d/0_3.hf deleted file mode 100644 index 7e06a90f..00000000 --- a/libraries/protocol/hardfork.d/0_3.hf +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef STEEM_HARDFORK_0_3 -#define STEEM_HARDFORK_0_3 3 -// 4/27/2016 13:00:00 GMT -#define STEEM_HARDFORK_0_3_TIME 1461762000 -#define STEEM_HARDFORK_0_3_VERSION hardfork_version( 0, 3 ) -#endif diff --git a/libraries/protocol/hardfork.d/0_4.hf b/libraries/protocol/hardfork.d/0_4.hf deleted file mode 100644 index 8e21c024..00000000 --- a/libraries/protocol/hardfork.d/0_4.hf +++ /dev/null @@ -1,5 +0,0 @@ -#ifndef STEEM_HARDFORK_0_4 -#define STEEM_HARDFORK_0_4 4 -#define STEEM_HARDFORK_0_4_TIME 1462028400 -#define STEEM_HARDFORK_0_4_VERSION hardfork_version( 0, 4 ) -#endif diff --git a/libraries/protocol/hardfork.d/0_5.hf b/libraries/protocol/hardfork.d/0_5.hf deleted file mode 100644 index eab41533..00000000 --- a/libraries/protocol/hardfork.d/0_5.hf +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef STEEM_HARDFORK_0_5 -#define STEEM_HARDFORK_0_5 5 -#define STEEM_HARDFORK_0_5__22 ( STEEM_HARDFORK_0_5 ) -#define STEEM_HARDFORK_0_5__54 ( STEEM_HARDFORK_0_5 ) -#define STEEM_HARDFORK_0_5__55 ( STEEM_HARDFORK_0_5 ) -#define STEEM_HARDFORK_0_5__56 ( STEEM_HARDFORK_0_5 ) -#define STEEM_HARDFORK_0_5__57 ( STEEM_HARDFORK_0_5 ) -#define STEEM_HARDFORK_0_5__59 ( STEEM_HARDFORK_0_5 ) -#define STEEM_HARDFORK_0_5__62 ( STEEM_HARDFORK_0_5 ) - -// May 31 2016 17:00:00 UTC (1:00 PM EDT) -#define STEEM_HARDFORK_0_5_TIME 1464714000 -#define STEEM_HARDFORK_0_5_VERSION hardfork_version( 0, 5 ) -#endif diff --git a/libraries/protocol/hardfork.d/0_6.hf b/libraries/protocol/hardfork.d/0_6.hf deleted file mode 100644 index 07982ea4..00000000 --- a/libraries/protocol/hardfork.d/0_6.hf +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef STEEM_HARDFORK_0_6 -#define STEEM_HARDFORK_0_6 6 -#define STEEM_HARDFORK_0_6__74 STEEM_HARDFORK_0_6 -#define STEEM_HARDFORK_0_6__78 STEEM_HARDFORK_0_6 -#define STEEM_HARDFORK_0_6__80 STEEM_HARDFORK_0_6 -#define STEEM_HARDFORK_0_6__101 STEEM_HARDFORK_0_6 -#define STEEM_HARDFORK_0_6__104 STEEM_HARDFORK_0_6 -#define STEEM_HARDFORK_0_6__112 STEEM_HARDFORK_0_6 -#define STEEM_HARDFORK_0_6__113 STEEM_HARDFORK_0_6 -#define STEEM_HARDFORK_0_6__114 STEEM_HARDFORK_0_6 -#define STEEM_HARDFORK_0_6__127 STEEM_HARDFORK_0_6 - -// Thu Jun 30 14:00:00 UTC 2016 -// Thu Jun 30 10:00:00 EDT 2016 -#define STEEM_HARDFORK_0_6_TIME 1467295200 - -// Fri Jun 24 14:00:00 UTC 2016 -// Fri Jun 24 10:00:00 EDT 2016 -#ifdef IS_TEST_NET -#define STEEM_HARDFORK_0_6_REVERSE_AUCTION_TIME (0) -#else -#define STEEM_HARDFORK_0_6_REVERSE_AUCTION_TIME (1467295200-(60*60*24*6)) -#endif -#define STEEM_HARDFORK_0_6_VERSION hardfork_version( 0, 6 ) -#endif diff --git a/libraries/protocol/hardfork.d/0_7.hf b/libraries/protocol/hardfork.d/0_7.hf deleted file mode 100644 index f0da66e4..00000000 --- a/libraries/protocol/hardfork.d/0_7.hf +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef STEEM_HARDFORK_0_7 -#define STEEM_HARDFORK_0_7 7 -#define STEEM_HARDFORK_0_7__117 STEEM_HARDFORK_0_7 -#define STEEM_FIRST_CASHOUT_TIME STEEM_HARDFORK_0_7 - -// Mon Jul 4 00:00:00 UTC 2016 -// Sun Jul 3 20:00:00 EDT 2016 -#define STEEM_HARDFORK_0_7_TIME 1467590400 //July 4th -#define STEEM_HARDFORK_0_7_VERSION hardfork_version( 0, 7 ) -#endif diff --git a/libraries/protocol/hardfork.d/0_8.hf b/libraries/protocol/hardfork.d/0_8.hf deleted file mode 100644 index 5bb171e2..00000000 --- a/libraries/protocol/hardfork.d/0_8.hf +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef STEEM_HARDFORK_0_8 -#define STEEM_HARDFORK_0_8 8 -#define STEEM_HARDFORK_0_8__116 STEEM_HARDFORK_0_8 - -// Mon Jul 4 01:00:00 UTC 2016 -// Sun Jul 3 21:00:00 EDT 2016 -#define STEEM_HARDFORK_0_8_TIME 1467594000 -#define STEEM_HARDFORK_0_8_VERSION hardfork_version( 0, 8 ) -#endif diff --git a/libraries/protocol/hardfork.d/0_9.hf b/libraries/protocol/hardfork.d/0_9.hf deleted file mode 100644 index 2a75b0db..00000000 --- a/libraries/protocol/hardfork.d/0_9.hf +++ /dev/null @@ -1,189 +0,0 @@ -#ifndef STEEM_HARDFORK_0_9 -#define STEEM_HARDFORK_0_9 9 -#define STEEM_HARDFORK_0_9__141 STEEM_HARDFORK_0_9 - -#define STEEM_HARDFORK_0_9_TIME 1468454400 // 2016-07-14T00:00:00 UTC -#define STEEM_HARDFORK_0_9_VERSION hardfork_version( 0, 9 ) - -namespace hardfork9 -{ - -inline static const std::set< std::string >& get_compromised_accounts() -{ - static const std::set< std::string > compromised_accounts - { - "aeico", - "aenor", - "aizensou", - "albertogm", - "alibaba", - "alyssas", - "amartinezque", - "amazon", - "animalrobot", - "arsahk", - "arwani-wawan", - "auxon", - "b0y2k", - "binwah-de-rese", - "bitcube", - "blackjincrypto", - "boatymcboatface", - "boy", - "bravenewcoin", - "bryner", - "btcturbo", - "bu328281", - "bue", - "bue-witness", - "bunny", - "cheftony", - "chhayll", - "chitty", - "chryspano", - "citibank", - "cmtzco", - "coinbitgold", - "coinfund", - "complexring", - "cyrano.witness3", - "dahaz159", - "dan", - "dantheman", - "daycrypter", - "dragonslayer109", - "dulila", - "ebay", - "elyaque", - "estin", - "expanse", - "fanie-vanhoten", - "felipemachado", - "fex", - "fishayley", - "fminerten1", - "gabbans", - "gatoso", - "gazm", - "gottahaveit", - "graavor", - "gregm", - "grumpymutt", - "gtg", - "hcf27", - "hello", - "hipster", - "hsbc", - "ibnu", - "ihashfury", - "ikigai", - "jacor", - "james1337", - "jamie", - "john-kimmel", - "jpmorgan", - "justiciar", - "kaptainkrayola", - "karen13", - "kevinwong", - "kingofchaos", - "lighthil", - "linouxis9", - "loewan", - "luiz-marchi", - "lux", - "marcelhattingh", - "mathiasbaer", - "mauricemikkers", - "mexbit", - "mikemiziner", - "mldorton", - "mynameisbrian", - "ned", - "ned-scott", - "news", - "nicolaswsk", - "norbu", - "nuno-nutcrusherz", - "omarb", - "omarbitcoin", - "opengas", - "ossama-benjohn", - "owdy", - "ozmaster", - "ozzy-vega", - "pal", - "penambang", - "pierregi", - "pwlaslo", - "qamarpinkpanda", - "recursive", - "reddit2steem", - "rimantas", - "rok-sivante", - "rseixas", - "samuel-stone", - "samupaha", - "schro", - "sebastien", - "signalandnoise", - "simoneighties", - "slocum", - "softbank", - "sonzweil", - "spartako", - "stan", - "steem-id", - "steemit1", - "steemitblog", - "steempower", - "steemychicken1", - "str11ngfello", - "streemian", - "streetstyle", - "summon", - "teatree", - "techemist", - "the-alien", - "thecryptodrive", - "thegoodguy", - "tonykent", - "top10", - "trevonjb", - "troller", - "trung81", - "ukon", - "val", - "vippero", - "walmart", - "windsok", - "wingz", - "world", - "worldfamous", - "yan-kovalenko", - "zebbra2014", - "zer0sum" - }; - - return compromised_accounts; -} - -inline static const std::set< std::string >& get_bad_memos() -{ - static const std::set< std::string > bad_memos - { - "5cd80b47e6764534b0f", - "c5149362bb7842cea10", - "b056089187754e71b32", - "e01abe56614548d48cc", - "294354b63c0c4d4dadb", - "96978449f7ca4ea48d1", - "28cbdfb353414d548fe", - "2f5b42d7408c43fc986" - }; - - return bad_memos; -} - -} -#endif diff --git a/libraries/protocol/include/steem/protocol/README.md b/libraries/protocol/include/sophiatx/protocol/README.md similarity index 100% rename from libraries/protocol/include/steem/protocol/README.md rename to libraries/protocol/include/sophiatx/protocol/README.md diff --git a/libraries/protocol/include/steem/protocol/asset.hpp b/libraries/protocol/include/sophiatx/protocol/asset.hpp similarity index 86% rename from libraries/protocol/include/steem/protocol/asset.hpp rename to libraries/protocol/include/sophiatx/protocol/asset.hpp index 15fc4441..6dcd54cc 100644 --- a/libraries/protocol/include/steem/protocol/asset.hpp +++ b/libraries/protocol/include/sophiatx/protocol/asset.hpp @@ -1,16 +1,20 @@ #pragma once -#include -#include -#include +#include +#include +#include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { struct asset { asset( share_type a, asset_symbol_type id ) :amount(a),symbol(id){} asset() - :amount(0),symbol(STEEM_SYMBOL){} + :amount(0),symbol(SOPHIATX_SYMBOL){} + + + string to_string()const; + static asset from_string( const string& from ); share_type amount; asset_symbol_type symbol; @@ -82,6 +86,11 @@ namespace steem { namespace protocol { FC_ASSERT( a.symbol == b.symbol ); return asset( a.amount * b.amount, a.symbol ); } + + friend asset operator * (const asset& a, const share_type& b) + { + return asset(a.amount * b, a.symbol); + } }; /** Represents quotation of the relative value of asset against another asset. @@ -144,12 +153,12 @@ namespace steem { namespace protocol { bool operator != ( const price& a, const price& b ); asset operator * ( const asset& a, const price& b ); -} } // steem::protocol +} } // sophiatx::protocol namespace fc { - void to_variant( const steem::protocol::asset& var, fc::variant& vo ); - void from_variant( const fc::variant& var, steem::protocol::asset& vo ); + void to_variant( const sophiatx::protocol::asset& var, fc::variant& vo ); + void from_variant( const fc::variant& var, sophiatx::protocol::asset& vo ); } -FC_REFLECT( steem::protocol::asset, (amount)(symbol) ) -FC_REFLECT( steem::protocol::price, (base)(quote) ) +FC_REFLECT( sophiatx::protocol::asset, (amount)(symbol) ) +FC_REFLECT( sophiatx::protocol::price, (base)(quote) ) diff --git a/libraries/protocol/include/sophiatx/protocol/asset_symbol.hpp b/libraries/protocol/include/sophiatx/protocol/asset_symbol.hpp new file mode 100644 index 00000000..28fe6e9c --- /dev/null +++ b/libraries/protocol/include/sophiatx/protocol/asset_symbol.hpp @@ -0,0 +1,99 @@ +#pragma once + +#include +#include +#include + +#define VESTS_SYMBOL_U64 (uint64_t('V') | (uint64_t('E') << 8) | (uint64_t('S') << 16) | (uint64_t('T') << 24) | (uint64_t('S') << 32)) +#define SOPHIATX_SYMBOL_U64 (uint64_t('S') | (uint64_t('P') << 8) | (uint64_t('H') << 16) | (uint64_t('T') << 24) | (uint64_t('X') << 32)) +#define SBD1_SYMBOL_U64 (uint64_t('U') | (uint64_t('S') << 8) | (uint64_t('D') << 16) ) +#define SBD2_SYMBOL_U64 (uint64_t('E') | (uint64_t('U') << 8) | (uint64_t('R') << 16) ) +#define SBD3_SYMBOL_U64 (uint64_t('C') | (uint64_t('H') << 8) | (uint64_t('F') << 16) ) +#define SBD4_SYMBOL_U64 (uint64_t('C') | (uint64_t('N') << 8) | (uint64_t('Y') << 16) ) +#define SBD5_SYMBOL_U64 (uint64_t('G') | (uint64_t('B') << 8) | (uint64_t('P') << 16) ) + + +#define VESTS_SYMBOL_SER (VESTS_SYMBOL_U64) ///< VESTS|VESTS with 6 digits of precision +#define SOPHIATX_SYMBOL_SER (SOPHIATX_SYMBOL_U64) ///< SPHTX|TESTS with 6 digits of precision +#define SBD1_SYMBOL_SER (SBD1_SYMBOL_U64) +#define SBD2_SYMBOL_SER (SBD2_SYMBOL_U64) +#define SBD3_SYMBOL_SER (SBD3_SYMBOL_U64) +#define SBD4_SYMBOL_SER (SBD4_SYMBOL_U64) +#define SBD5_SYMBOL_SER (SBD5_SYMBOL_U64) + +#define SOPHIATX_ASSET_MAX_DECIMALS 6 + +namespace sophiatx { namespace protocol { + + class asset_symbol_type + { + public: + uint64_t value = SOPHIATX_SYMBOL_SER; + public: + asset_symbol_type() {}; + asset_symbol_type(uint64_t v): value(v) {} + asset_symbol_type(const asset_symbol_type& as){value = as.value;} + + uint8_t decimals()const{ return SOPHIATX_DECIMALS; }; + + + static asset_symbol_type from_string( const std::string& str ); + + std::string to_string()const; + + + friend bool operator == ( const asset_symbol_type& a, const asset_symbol_type& b ) + { return (a.value == b.value); } + friend bool operator != ( const asset_symbol_type& a, const asset_symbol_type& b ) + { return (a.value != b.value); } + friend bool operator < ( const asset_symbol_type& a, const asset_symbol_type& b ) + { return (a.value < b.value); } + }; +/* +class asset_symbol_type +{ + public: + + asset_symbol_type() {} + + // buf must have space for SOPHIATX_ASSET_SYMBOL_MAX_LENGTH+1 + static asset_symbol_type from_string( const std::string& str ); + static asset_symbol_type from_asset_num( uint32_t asset_num ) + { asset_symbol_type result; result.asset_num = asset_num; return result; } + + std::string to_string()const; + + //Returns true when symbol represents vesting variant of the token, false for liquid one. + bool is_vesting() const; + //Returns vesting symbol when called from liquid one and liquid symbol when called from vesting one. Returns back the SBD symbol if represents SBD. + + asset_symbol_type get_paired_symbol() const; + + uint8_t decimals()const + { return uint8_t( asset_num & 0x0F ); } + void validate()const; + + friend bool operator == ( const asset_symbol_type& a, const asset_symbol_type& b ) + { return (a.asset_num == b.asset_num); } + friend bool operator != ( const asset_symbol_type& a, const asset_symbol_type& b ) + { return (a.asset_num != b.asset_num); } + friend bool operator < ( const asset_symbol_type& a, const asset_symbol_type& b ) + { return (a.asset_num < b.asset_num); } + friend bool operator > ( const asset_symbol_type& a, const asset_symbol_type& b ) + { return (a.asset_num > b.asset_num); } + friend bool operator <= ( const asset_symbol_type& a, const asset_symbol_type& b ) + { return (a.asset_num <= b.asset_num); } + friend bool operator >= ( const asset_symbol_type& a, const asset_symbol_type& b ) + { return (a.asset_num >= b.asset_num); } + + uint32_t asset_num = 0; +}; +*/ +} } // sophiatx::protocol + +namespace fc { +void to_variant( const sophiatx::protocol::asset_symbol_type& var, fc::variant& vo ); +void from_variant( const fc::variant& var, sophiatx::protocol::asset_symbol_type& vo ); +} + +FC_REFLECT( sophiatx::protocol::asset_symbol_type, (value) ) diff --git a/libraries/protocol/include/steem/protocol/authority.hpp b/libraries/protocol/include/sophiatx/protocol/authority.hpp similarity index 83% rename from libraries/protocol/include/steem/protocol/authority.hpp rename to libraries/protocol/include/sophiatx/protocol/authority.hpp index 7dc64b5e..509654ee 100644 --- a/libraries/protocol/include/steem/protocol/authority.hpp +++ b/libraries/protocol/include/sophiatx/protocol/authority.hpp @@ -1,8 +1,8 @@ #pragma once -#include +#include #include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { struct authority { @@ -92,16 +92,16 @@ void add_authority_accounts( * In addition we require the following: * * - All letters are lowercase - * - Length is between (inclusive) STEEM_MIN_ACCOUNT_NAME_LENGTH and STEEM_MAX_ACCOUNT_NAME_LENGTH + * - Length is between (inclusive) SOPHIATX_MIN_ACCOUNT_NAME_LENGTH and SOPHIATX_MAX_ACCOUNT_NAME_LENGTH */ bool is_valid_account_name( const string& name ); bool operator == ( const authority& a, const authority& b ); -} } // namespace steem::protocol +} } // namespace sophiatx::protocol -FC_REFLECT_TYPENAME( steem::protocol::authority::account_authority_map) -FC_REFLECT_TYPENAME( steem::protocol::authority::key_authority_map) -FC_REFLECT( steem::protocol::authority, (weight_threshold)(account_auths)(key_auths) ) -FC_REFLECT_ENUM( steem::protocol::authority::classification, (owner)(active)(key)(posting) ) +FC_REFLECT_TYPENAME( sophiatx::protocol::authority::account_authority_map) +FC_REFLECT_TYPENAME( sophiatx::protocol::authority::key_authority_map) +FC_REFLECT( sophiatx::protocol::authority, (weight_threshold)(account_auths)(key_auths) ) +FC_REFLECT_ENUM( sophiatx::protocol::authority::classification, (owner)(active)(key)(posting) ) diff --git a/libraries/protocol/include/sophiatx/protocol/base.hpp b/libraries/protocol/include/sophiatx/protocol/base.hpp new file mode 100644 index 00000000..dd77be73 --- /dev/null +++ b/libraries/protocol/include/sophiatx/protocol/base.hpp @@ -0,0 +1,65 @@ +#pragma once +#include +#include +#include +#include +#include + +#include + +namespace sophiatx { namespace protocol { + + struct base_operation + { + void get_required_authorities( vector& )const {} + void get_required_active_authorities( flat_set& )const {} + void get_required_posting_authorities( flat_set& )const {} + void get_required_owner_authorities( flat_set& )const {} + + virtual bool has_special_fee()const{return false;}; + virtual asset get_required_fee(asset_symbol_type in_symbol)const{ + if(in_symbol == SBD1_SYMBOL )//USD + return BASE_FEE_SBD1; + if(in_symbol == SBD2_SYMBOL )//EUR + return BASE_FEE_SBD2; + if(in_symbol == SBD3_SYMBOL ) //CHF + return BASE_FEE_SBD3; + if(in_symbol == SBD4_SYMBOL ) //CNY + return BASE_FEE_SBD4; + if(in_symbol == SBD5_SYMBOL ) //GBP + return BASE_FEE_SBD5; + return BASE_FEE; + }; + + virtual bool is_virtual()const { return false; } + void validate()const {} + asset fee; + virtual account_name_type get_fee_payer()const { return SOPHIATX_INIT_MINER_NAME; }; + virtual ~base_operation(){} + }; + + struct virtual_operation : public base_operation + { + bool is_virtual()const { return true; } + void validate()const { FC_ASSERT( false, "This is a virtual operation" ); } + }; + + typedef static_variant< + void_t, + version, // Normal witness version reporting, for diagnostics and voting + hardfork_version_vote // Voting for the next hardfork to trigger + > block_header_extensions; + + typedef static_variant< + void_t + > future_extensions; + + typedef flat_set block_header_extensions_type; + typedef flat_set extensions_type; + + +} } // sophiatx::protocol + +FC_REFLECT( sophiatx::protocol::base_operation, (fee)) +FC_REFLECT_TYPENAME( sophiatx::protocol::block_header_extensions ) +FC_REFLECT_TYPENAME( sophiatx::protocol::future_extensions ) diff --git a/libraries/protocol/include/sophiatx/protocol/block.hpp b/libraries/protocol/include/sophiatx/protocol/block.hpp new file mode 100644 index 00000000..7e5e415d --- /dev/null +++ b/libraries/protocol/include/sophiatx/protocol/block.hpp @@ -0,0 +1,15 @@ +#pragma once +#include +#include + +namespace sophiatx { namespace protocol { + + struct signed_block : public signed_block_header + { + checksum_type calculate_merkle_root()const; + vector transactions; + }; + +} } // sophiatx::protocol + +FC_REFLECT_DERIVED( sophiatx::protocol::signed_block, (sophiatx::protocol::signed_block_header), (transactions) ) diff --git a/libraries/protocol/include/steem/protocol/block_header.hpp b/libraries/protocol/include/sophiatx/protocol/block_header.hpp similarity index 72% rename from libraries/protocol/include/steem/protocol/block_header.hpp rename to libraries/protocol/include/sophiatx/protocol/block_header.hpp index aa1aa456..b8340082 100644 --- a/libraries/protocol/include/steem/protocol/block_header.hpp +++ b/libraries/protocol/include/sophiatx/protocol/block_header.hpp @@ -1,7 +1,7 @@ #pragma once -#include +#include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { struct block_header { @@ -27,7 +27,7 @@ namespace steem { namespace protocol { }; -} } // steem::protocol +} } // sophiatx::protocol -FC_REFLECT( steem::protocol::block_header, (previous)(timestamp)(witness)(transaction_merkle_root)(extensions) ) -FC_REFLECT_DERIVED( steem::protocol::signed_block_header, (steem::protocol::block_header), (witness_signature) ) +FC_REFLECT( sophiatx::protocol::block_header, (previous)(timestamp)(witness)(transaction_merkle_root)(extensions) ) +FC_REFLECT_DERIVED( sophiatx::protocol::signed_block_header, (sophiatx::protocol::block_header), (witness_signature) ) diff --git a/libraries/protocol/include/sophiatx/protocol/config.hpp b/libraries/protocol/include/sophiatx/protocol/config.hpp new file mode 100644 index 00000000..c49b3d76 --- /dev/null +++ b/libraries/protocol/include/sophiatx/protocol/config.hpp @@ -0,0 +1,255 @@ +/* + * Copyright (c) 2016 Steemit, Inc., Equidato Technologies and contributors. + */ +#pragma once +#include + +// WARNING! +// Every symbol defined here needs to be handled appropriately in get_config.cpp +// This is checked by get_config_check.sh called from Dockerfile + +#ifdef IS_TEST_NET +#define SOPHIATX_BLOCKCHAIN_VERSION ( version(1, 0, 0) ) + +#define SOPHIATX_INIT_PRIVATE_KEY (fc::ecc::private_key::regenerate(fc::sha256::hash(std::string("init_key")))) +#define SOPHIATX_INIT_PUBLIC_KEY_STR (std::string( sophiatx::protocol::public_key_type(SOPHIATX_INIT_PRIVATE_KEY.get_public_key()) )) +#define SOPHIATX_CASHOUT_WINDOW_SECONDS (60*60) /// 1 hr +#define SOPHIATX_SECOND_CASHOUT_WINDOW (60*60*24*3) /// 3 days +#define SOPHIATX_MAX_CASHOUT_WINDOW_SECONDS (60*60*24) /// 1 day + +#define SOPHIATX_MIN_ACCOUNT_CREATION_FEE 0 + +#define SOPHIATX_OWNER_AUTH_RECOVERY_PERIOD fc::seconds(60) +#define SOPHIATX_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD fc::seconds(12) +#define SOPHIATX_OWNER_UPDATE_LIMIT fc::seconds(0) +#define SOPHIATX_OWNER_AUTH_HISTORY_TRACKING_START_BLOCK_NUM 1 + +#define SOPHIATX_INIT_SUPPLY (int64_t( 350 ) * int64_t( 1000000 ) * int64_t( 1000000 )) +#define SOPHIATX_TOTAL_SUPPLY (int64_t( 500 ) * int64_t( 1000000 ) * int64_t( 1000000 )) + +#define SOPHIATX_MIN_FEEDS 1 //(SOPHIATX_MAX_WITNESSES/10) /// protects the network from conversions before price has been established + +/// Allows to limit number of total produced blocks. +#define TESTNET_BLOCK_LIMIT (3000000) + +#else // IS LIVE SOPHIATX NETWORK + +#define SOPHIATX_BLOCKCHAIN_VERSION ( version(1, 0, 0) ) + +#define SOPHIATX_INIT_PUBLIC_KEY_STR "SPH78w3H1TUaKCysbF8p2ZQ12Mutrq3NJzr41zMPVQLETyP94cVbX" //used for mining + +#define SOPHIATX_CASHOUT_WINDOW_SECONDS (60*60*24*7) /// 7 days +#define SOPHIATX_SECOND_CASHOUT_WINDOW (60*60*24*30) /// 30 days +#define SOPHIATX_MAX_CASHOUT_WINDOW_SECONDS (60*60*24*14) /// 2 weeks + +#define SOPHIATX_MIN_ACCOUNT_CREATION_FEE 50000 + +#define SOPHIATX_OWNER_AUTH_RECOVERY_PERIOD fc::days(30) +#define SOPHIATX_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD fc::days(1) +#define SOPHIATX_OWNER_UPDATE_LIMIT fc::minutes(60) + +#define SOPHIATX_INIT_SUPPLY int64_t(350000000000000) +#define SOPHIATX_TOTAL_SUPPLY int64_t(500000000000000) +#define SOPHIATX_MIN_FEEDS (SOPHIATX_MAX_WITNESSES/10) /// protects the network from conversions before price has been established + +#endif + +#define SOPHIATX_ADDRESS_PREFIX "SPH" + +//#define SOPHIATX_GENESIS_TIME (fc::time_point_sec(1532512800)) +#define SOPHIATX_GENESIS_TIME (fc::time_point_sec(1531512800)) +#define SOPHIATX_BLOCK_INTERVAL 3 +#define SOPHIATX_BLOCKS_PER_YEAR (365*24*60*60/SOPHIATX_BLOCK_INTERVAL) +#define SOPHIATX_BLOCKS_PER_DAY (24*60*60/SOPHIATX_BLOCK_INTERVAL) +#define SOPHIATX_START_VESTING_BLOCK ( 0 ) +#define SOPHIATX_START_MINER_VOTING_BLOCK (SOPHIATX_BLOCKS_PER_DAY * 7) + +#define SOPHIATX_DECIMALS (6) +#define SOPHIATX_SATOSHIS uint64_t(1000000) +#define SOPHIATX_PROMOTION_POOL_PERCENTAGE (1000) +#define SOPHIATX_MINING_POOL_PERCENTAGE (2500) +#define SOPHIATX_INTEREST_POOL_PERCENTAGE (6500) +#define SOPHIATX_BURN_FEE_PERCENTAGE (1000) +#define SOPHIATX_INTEREST_BLOCKS (2400) +#define SOPHIATX_INTEREST_FEES_TIME ( SOPHIATX_BLOCKS_PER_DAY ) +#define SOPHIATX_INTEREST_DELAY (SOPHIATX_BLOCKS_PER_DAY) +#define SOPHIATX_COINBASE_YEARS (25) +#define SOPHIATX_COINBASE_BLOCKS ( SOPHIATX_BLOCKS_PER_YEAR * SOPHIATX_COINBASE_YEARS ) +#ifdef PRIVATE_NET +#define SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE uint64_t( 0 ) +#else +#define SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE uint64_t( SOPHIATX_SATOSHIS * 250000 ) +#define SOPHIATX_FINAL_WITNESS_REQUIRED_VESTING_BALANCE uint64_t( SOPHIATX_SATOSHIS * 300000 ) +#define SOPHIATX_WITNESS_VESTING_INCREASE_DAYS 96 //January 1 +#endif //PRIVATE_NET + +#define VESTS_SYMBOL ( sophiatx::protocol::asset_symbol_type( VESTS_SYMBOL_SER ) ) +#define SOPHIATX_SYMBOL ( sophiatx::protocol::asset_symbol_type( SOPHIATX_SYMBOL_SER ) ) +#define SBD1_SYMBOL ( sophiatx::protocol::asset_symbol_type( SBD1_SYMBOL_SER ) ) //USD +#define SBD2_SYMBOL ( sophiatx::protocol::asset_symbol_type( SBD2_SYMBOL_SER ) ) //EUR +#define SBD3_SYMBOL ( sophiatx::protocol::asset_symbol_type( SBD3_SYMBOL_SER ) ) //CHF +#define SBD4_SYMBOL ( sophiatx::protocol::asset_symbol_type( SBD4_SYMBOL_SER ) ) //CNY +#define SBD5_SYMBOL ( sophiatx::protocol::asset_symbol_type( SBD5_SYMBOL_SER ) ) //GBP + +#define BASE_FEE (asset(10000, SOPHIATX_SYMBOL)) +#define BASE_FEE_SBD1 (asset(10000, SBD1_SYMBOL)) //USD +#define BASE_FEE_SBD2 (asset(8000, SBD2_SYMBOL)) //EUR +#define BASE_FEE_SBD3 (asset(10000, SBD3_SYMBOL)) //CHF +#define BASE_FEE_SBD4 (asset(64000, SBD4_SYMBOL)) //CNY +#define BASE_FEE_SBD5 (asset(7500, SBD5_SYMBOL)) //GBP + +#define SIZE_COVERED_IN_BASE_FEE 4096 +#define SIZE_INCREASE_PER_FEE 4096 + +#define SOPHIATX_BLOCKCHAIN_HARDFORK_VERSION ( hardfork_version( SOPHIATX_BLOCKCHAIN_VERSION ) ) + + + +#define SOPHIATX_INIT_MINER_NAME "initminer" +#define SOPHIATX_NUM_INIT_MINERS 1 +#define SOPHIATX_INIT_TIME (fc::time_point_sec()); + +#define SOPHIATX_MAX_WITNESSES 51 + +#define SOPHIATX_MAX_VOTED_WITNESSES_HF0 47 +#define SOPHIATX_MAX_MINER_WITNESSES_HF0 0 +#define SOPHIATX_MAX_RUNNER_WITNESSES_HF0 4 + + + +#define SOPHIATX_HARDFORK_REQUIRED_WITNESSES 31 // 31 of the 51 dpos witnesses required for hardfork. This guarantees 75% participation on all subsequent rounds. +#define SOPHIATX_MAX_TIME_UNTIL_EXPIRATION (60*60) // seconds, aka: 1 hour +#define SOPHIATX_MAX_MEMO_SIZE 2048 +#define SOPHIATX_MAX_PROXY_RECURSION_DEPTH 4 +#define SOPHIATX_VESTING_WITHDRAW_INTERVALS 27 +#define SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS (60*60*24) /// 1 day per interval + +#define SOPHIATX_VOTE_REGENERATION_SECONDS (5*60*60*24) // 5 day +#define SOPHIATX_MAX_VOTE_CHANGES 5 +#define SOPHIATX_REVERSE_AUCTION_WINDOW_SECONDS (60*30) /// 30 minutes +#define SOPHIATX_MIN_VOTE_INTERVAL_SEC 3 +#define SOPHIATX_VOTE_DUST_THRESHOLD (50000000) + +#define SOPHIATX_MIN_REPLY_INTERVAL (fc::seconds(20)) // 20 seconds +#define SOPHIATX_POST_AVERAGE_WINDOW (60*60*24u) // 1 day +#define SOPHIATX_POST_WEIGHT_CONSTANT (uint64_t(4*SOPHIATX_100_PERCENT) * (4*SOPHIATX_100_PERCENT))// (4*SOPHIATX_100_PERCENT) -> 2 posts per 1 days, average 1 every 12 hours + +#define SOPHIATX_MAX_ACCOUNT_WITNESS_VOTES 60 + +#define SOPHIATX_100_PERCENT 10000 +#define SOPHIATX_1_PERCENT (SOPHIATX_100_PERCENT/100) + +#define SOPHIATX_MINER_PAY_PERCENT (SOPHIATX_1_PERCENT) // 1% +#define SOPHIATX_MAX_RATION_DECAY_RATE (1000000) + +#define SOPHIATX_BANDWIDTH_AVERAGE_WINDOW_SECONDS (60*60*24*7) ///< 1 week +#define SOPHIATX_BANDWIDTH_PRECISION (uint64_t(1000000)) ///< 1 million + +#define SOPHIATX_MAX_RESERVE_RATIO (20000) + +#define SOPHIATX_CREATE_ACCOUNT_DELEGATION_RATIO 5 +#define SOPHIATX_CREATE_ACCOUNT_DELEGATION_TIME fc::days(30) + +#define SOPHIATX_MINING_REWARD asset( 1000, SOPHIATX_SYMBOL ) + + +#define SOPHIATX_ACTIVE_CHALLENGE_FEE asset( 2000, SOPHIATX_SYMBOL ) +#define SOPHIATX_OWNER_CHALLENGE_FEE asset( 30000, SOPHIATX_SYMBOL ) +#define SOPHIATX_ACTIVE_CHALLENGE_COOLDOWN fc::days(1) +#define SOPHIATX_OWNER_CHALLENGE_COOLDOWN fc::days(1) + +// note, if redefining these constants make sure calculate_claims doesn't overflow + +// 5ccc e802 de5f +// int(expm1( log1p( 1 ) / BLOCKS_PER_YEAR ) * 2**SOPHIATX_APR_PERCENT_SHIFT_PER_BLOCK / 100000 + 0.5) +// we use 100000 here instead of 10000 because we end up creating an additional 9x for vesting +#define SOPHIATX_APR_PERCENT_MULTIPLY_PER_BLOCK ( (uint64_t( 0x5ccc ) << 0x20) \ + | (uint64_t( 0xe802 ) << 0x10) \ + | (uint64_t( 0xde5f ) ) \ + ) +// chosen to be the maximal value such that SOPHIATX_APR_PERCENT_MULTIPLY_PER_BLOCK * 2**64 * 100000 < 2**128 +#define SOPHIATX_APR_PERCENT_SHIFT_PER_BLOCK 87 + +#define SOPHIATX_APR_PERCENT_MULTIPLY_PER_ROUND ( (uint64_t( 0x79cc ) << 0x20 ) \ + | (uint64_t( 0xf5c7 ) << 0x10 ) \ + | (uint64_t( 0x3480 ) ) \ + ) + +#define SOPHIATX_APR_PERCENT_SHIFT_PER_ROUND 83 + +// We have different constants for hourly rewards +// i.e. hex(int(math.expm1( math.log1p( 1 ) / HOURS_PER_YEAR ) * 2**SOPHIATX_APR_PERCENT_SHIFT_PER_HOUR / 100000 + 0.5)) +#define SOPHIATX_APR_PERCENT_MULTIPLY_PER_HOUR ( (uint64_t( 0x6cc1 ) << 0x20) \ + | (uint64_t( 0x39a1 ) << 0x10) \ + | (uint64_t( 0x5cbd ) ) \ + ) + +// chosen to be the maximal value such that SOPHIATX_APR_PERCENT_MULTIPLY_PER_HOUR * 2**64 * 100000 < 2**128 +#define SOPHIATX_APR_PERCENT_SHIFT_PER_HOUR 77 + +#define SOPHIATX_MIN_ACCOUNT_NAME_LENGTH 3 +#define SOPHIATX_MAX_ACCOUNT_NAME_LENGTH 16 + +#define SOPHIATX_MIN_PERMLINK_LENGTH 0 +#define SOPHIATX_MAX_PERMLINK_LENGTH 256 +#define SOPHIATX_MAX_WITNESS_URL_LENGTH 2048 + +#define SOPHIATX_MAX_SHARE_SUPPLY int64_t(1000000000000000ll) +#define SOPHIATX_MAX_SATOSHIS int64_t(4611686018427387903ll) +#define SOPHIATX_MAX_SIG_CHECK_DEPTH 2 + +#define SOPHIATX_MIN_TRANSACTION_SIZE_LIMIT 1024 +#define SOPHIATX_SECONDS_PER_YEAR (uint64_t(60*60*24*365ll)) + +#define SOPHIATX_MAX_TRANSACTION_SIZE (1024*8) +#define SOPHIATX_MIN_BLOCK_SIZE_LIMIT (SOPHIATX_MAX_TRANSACTION_SIZE*16) +#define SOPHIATX_MAX_BLOCK_SIZE (SOPHIATX_MAX_TRANSACTION_SIZE * SOPHIATX_BLOCK_INTERVAL*2048) +#define SOPHIATX_SOFT_MAX_BLOCK_SIZE (20*1024*1024) +#define SOPHIATX_MIN_BLOCK_SIZE 115 +#define SOPHIATX_BLOCKS_PER_HOUR (60*60/SOPHIATX_BLOCK_INTERVAL) +#define SOPHIATX_FEED_INTERVAL_BLOCKS (SOPHIATX_BLOCKS_PER_HOUR) +#define SOPHIATX_FEED_HISTORY_WINDOW (12*7) // 3.5 days +#define SOPHIATX_MAX_FEED_AGE_SECONDS (60*60*24*7) // 7 days + +#define SOPHIATX_MIN_UNDO_HISTORY 10 +#define SOPHIATX_MAX_UNDO_HISTORY 10000 + +#define SOPHIATX_MIN_TRANSACTION_EXPIRATION_LIMIT (SOPHIATX_BLOCK_INTERVAL * 5) // 5 transactions per block +#define SOPHIATX_BLOCKCHAIN_PRECISION uint64_t( 1000 ) + +#define SOPHIATX_BLOCKCHAIN_PRECISION_DIGITS 3 +#define SOPHIATX_MAX_INSTANCE_ID (uint64_t(-1)>>16) +/** NOTE: making this a power of 2 (say 2^15) would greatly accelerate fee calcs */ +#define SOPHIATX_MAX_AUTHORITY_MEMBERSHIP 10 +#define SOPHIATX_MAX_ASSET_WHITELIST_AUTHORITIES 10 +#define SOPHIATX_MAX_URL_LENGTH 127 + +#define SOPHIATX_IRREVERSIBLE_THRESHOLD (75 * SOPHIATX_1_PERCENT) + +#define SOPHIATX_VIRTUAL_SCHEDULE_LAP_LENGTH ( fc::uint128(uint64_t(-1)) ) +#define SOPHIATX_VIRTUAL_SCHEDULE_LAP_LENGTH2 ( fc::uint128::max_value() ) + +/** + * Reserved Account IDs with special meaning + */ +///@{ +/// Represents the current witnesses +#define SOPHIATX_MINER_ACCOUNT "miners" +/// Represents the canonical account with NO authority (nobody can access funds in null account) +#define SOPHIATX_NULL_ACCOUNT "none" +/// Represents the canonical account with WILDCARD authority (anybody can access funds in temp account) +#define SOPHIATX_TEMP_ACCOUNT "temp" +/// Represents the canonical account for specifying you will vote for directly (as opposed to a proxy) +#define SOPHIATX_PROXY_TO_SELF_ACCOUNT "" +/// Represents the canonical root post parent account +#define SOPHIATX_ROOT_POST_PARENT (account_name_type()) +///@} + +#ifdef SOPHIATX_ENABLE_SMT + +#define SMT_MAX_VOTABLE_ASSETS 2 +#define SMT_VESTING_WITHDRAW_INTERVAL_SECONDS (60*60*24*7) /// 1 week per interval +#define SMT_UPVOTE_LOCKOUT (60*60*12) /// 12 hours + +#endif /// SOPHIATX_ENABLE_SMT + diff --git a/libraries/protocol/include/steem/protocol/exceptions.hpp b/libraries/protocol/include/sophiatx/protocol/exceptions.hpp similarity index 51% rename from libraries/protocol/include/steem/protocol/exceptions.hpp rename to libraries/protocol/include/sophiatx/protocol/exceptions.hpp index a8eed9d4..da9f0dc2 100644 --- a/libraries/protocol/include/steem/protocol/exceptions.hpp +++ b/libraries/protocol/include/sophiatx/protocol/exceptions.hpp @@ -1,26 +1,26 @@ #pragma once #include -#include +#include -#define STEEM_ASSERT( expr, exc_type, FORMAT, ... ) \ +#define SOPHIATX_ASSERT( expr, exc_type, FORMAT, ... ) \ FC_MULTILINE_MACRO_BEGIN \ if( !(expr) ) \ FC_THROW_EXCEPTION( exc_type, FORMAT, __VA_ARGS__ ); \ FC_MULTILINE_MACRO_END -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { FC_DECLARE_EXCEPTION( transaction_exception, 3000000, "transaction exception" ) - FC_DECLARE_DERIVED_EXCEPTION( tx_missing_active_auth, steem::protocol::transaction_exception, 3010000, "missing required active authority" ) - FC_DECLARE_DERIVED_EXCEPTION( tx_missing_owner_auth, steem::protocol::transaction_exception, 3020000, "missing required owner authority" ) - FC_DECLARE_DERIVED_EXCEPTION( tx_missing_posting_auth, steem::protocol::transaction_exception, 3030000, "missing required posting authority" ) - FC_DECLARE_DERIVED_EXCEPTION( tx_missing_other_auth, steem::protocol::transaction_exception, 3040000, "missing required other authority" ) - FC_DECLARE_DERIVED_EXCEPTION( tx_irrelevant_sig, steem::protocol::transaction_exception, 3050000, "irrelevant signature included" ) - FC_DECLARE_DERIVED_EXCEPTION( tx_duplicate_sig, steem::protocol::transaction_exception, 3060000, "duplicate signature included" ) + FC_DECLARE_DERIVED_EXCEPTION( tx_missing_active_auth, sophiatx::protocol::transaction_exception, 3010000, "missing required active authority" ) + FC_DECLARE_DERIVED_EXCEPTION( tx_missing_owner_auth, sophiatx::protocol::transaction_exception, 3020000, "missing required owner authority" ) + FC_DECLARE_DERIVED_EXCEPTION( tx_missing_posting_auth, sophiatx::protocol::transaction_exception, 3030000, "missing required posting authority" ) + FC_DECLARE_DERIVED_EXCEPTION( tx_missing_other_auth, sophiatx::protocol::transaction_exception, 3040000, "missing required other authority" ) + FC_DECLARE_DERIVED_EXCEPTION( tx_irrelevant_sig, sophiatx::protocol::transaction_exception, 3050000, "irrelevant signature included" ) + FC_DECLARE_DERIVED_EXCEPTION( tx_duplicate_sig, sophiatx::protocol::transaction_exception, 3060000, "duplicate signature included" ) - #define STEEM_RECODE_EXC( cause_type, effect_type ) \ + #define SOPHIATX_RECODE_EXC( cause_type, effect_type ) \ catch( const cause_type& e ) \ { throw( effect_type( e.what(), e.get_log() ) ); } -} } // steem::protocol +} } // sophiatx::protocol diff --git a/libraries/protocol/include/steem/protocol/fixed_string.hpp b/libraries/protocol/include/sophiatx/protocol/fixed_string.hpp similarity index 72% rename from libraries/protocol/include/steem/protocol/fixed_string.hpp rename to libraries/protocol/include/sophiatx/protocol/fixed_string.hpp index d382baf0..7fe5bfc4 100644 --- a/libraries/protocol/include/steem/protocol/fixed_string.hpp +++ b/libraries/protocol/include/sophiatx/protocol/fixed_string.hpp @@ -1,11 +1,15 @@ #pragma once +#include #include #include +#include + +#include #include -#include +#include // These overloads need to be defined before the implementation in fixed_string namespace fc @@ -56,7 +60,8 @@ namespace fc } } -namespace steem { namespace protocol { + +namespace sophiatx { namespace protocol { /** * This class is an in-place memory allocation of a fixed length character string. @@ -68,42 +73,65 @@ class fixed_string_impl { public: fixed_string_impl(){} - fixed_string_impl( const fixed_string_impl& c ) : data( c.data ){} + fixed_string_impl( const fixed_string_impl& c ) : data( c.data ), _size (c._size){} fixed_string_impl( const char* str ) : fixed_string_impl( std::string( str ) ) {} fixed_string_impl( const std::string& str ) { + //prepare the string to have length divisible by 4 + std::string tmp_str = str; + while(tmp_str.size() % 4) + tmp_str +='A'; + Storage d; - if( str.size() <= sizeof(d) ) - memcpy( (char*)&d, str.c_str(), str.size() ); - else - memcpy( (char*)&d, str.c_str(), sizeof(d) ); + std::string s = fc::base64m_decode(tmp_str); + int count = s.size(); + if( count <= sizeof(d) ) + _size = count; + else + _size = sizeof(d); + memcpy( (char*)&d, s.c_str(), _size ); data = boost::endian::big_to_native( d ); + } operator std::string()const { Storage d = boost::endian::native_to_big( data ); - size_t s = strnlen( (const char*)&d, sizeof(d) ); - const char* self = (const char*)&d; - return std::string( self, self + s ); + unsigned char data[sizeof(Storage)+3]; + memcpy(data, (char*)&d, _size); + //do the padding to avoid '=' at the end of the result string + std::string s; + if(_size % 3 == 1) { + data[ _size ] = data[ _size + 1 ] = 0; + s = fc::base64m_encode((char*)&d, _size+2); + }else if(_size % 3 == 2) { + data[ _size ] = 0; + s = fc::base64m_encode((char*)&d, _size+1); + }else + s = fc::base64m_encode((char*)&d, _size); + + if(s.size()) + while( s.at(s.size()-1) == 'A') + s.erase(s.size()-1); + + return s; } uint32_t size()const { - Storage d = boost::endian::native_to_big( data ); + return _size; - return strnlen( (const char*)&d, sizeof(d) ); } uint32_t length()const { return size(); } - fixed_string_impl& operator = ( const fixed_string_impl& str ) + /*fixed_string_impl& operator = ( const fixed_string_impl& str ) { - data = str.data; + *this = fixed_string_impl( str ); return *this; - } + }*/ fixed_string_impl& operator = ( const char* str ) { @@ -127,6 +155,8 @@ class fixed_string_impl friend bool operator != ( const fixed_string_impl& a, const fixed_string_impl& b ) { return a.data != b.data; } Storage data; + uint32_t _size=0; + }; // These storage types work with memory layout and should be used instead of a custom template. @@ -154,18 +184,18 @@ struct fixed_string_impl_for_size< 32 > template< size_t N > using fixed_string = typename fixed_string_impl_for_size::t; -} } // steem::protocol +} } // sophiatx::protocol namespace fc { namespace raw { template< typename Stream, typename Storage > - inline void pack( Stream& s, const steem::protocol::fixed_string_impl< Storage >& u ) + inline void pack( Stream& s, const sophiatx::protocol::fixed_string_impl< Storage >& u ) { pack( s, std::string( u ) ); } template< typename Stream, typename Storage > - inline void unpack( Stream& s, steem::protocol::fixed_string_impl< Storage >& u ) + inline void unpack( Stream& s, sophiatx::protocol::fixed_string_impl< Storage >& u ) { std::string str; unpack( s, str ); @@ -174,8 +204,8 @@ namespace fc { namespace raw { } // raw template< typename Storage > - void to_variant( const steem::protocol::fixed_string_impl< Storage >& s, variant& v ) { v = std::string( s ); } + void to_variant( const sophiatx::protocol::fixed_string_impl< Storage >& s, variant& v ) { v = std::string( s ); } template< typename Storage > - void from_variant( const variant& v, steem::protocol::fixed_string_impl< Storage >& s ) { s = v.as_string(); } + void from_variant( const variant& v, sophiatx::protocol::fixed_string_impl< Storage >& s ) { s = v.as_string(); } } // fc diff --git a/libraries/protocol/include/steem/protocol/get_config.hpp b/libraries/protocol/include/sophiatx/protocol/get_config.hpp similarity index 54% rename from libraries/protocol/include/steem/protocol/get_config.hpp rename to libraries/protocol/include/sophiatx/protocol/get_config.hpp index 621e0640..32ae9600 100644 --- a/libraries/protocol/include/steem/protocol/get_config.hpp +++ b/libraries/protocol/include/sophiatx/protocol/get_config.hpp @@ -2,8 +2,8 @@ #include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { fc::variant_object get_config(); -} } // steem::protocol +} } // sophiatx::protocol diff --git a/libraries/protocol/include/steem/protocol/misc_utilities.hpp b/libraries/protocol/include/sophiatx/protocol/misc_utilities.hpp similarity index 70% rename from libraries/protocol/include/steem/protocol/misc_utilities.hpp rename to libraries/protocol/include/sophiatx/protocol/misc_utilities.hpp index b5cbe32a..865e9ce4 100644 --- a/libraries/protocol/include/steem/protocol/misc_utilities.hpp +++ b/libraries/protocol/include/sophiatx/protocol/misc_utilities.hpp @@ -1,6 +1,6 @@ #pragma once -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { // TODO: Rename these curves to match naming in manual.md enum curve_id @@ -11,11 +11,11 @@ enum curve_id square_root }; -} } // steem::utilities +} } // sophiatx::utilities FC_REFLECT_ENUM( - steem::protocol::curve_id, + sophiatx::protocol::curve_id, (quadratic) (quadratic_curation) (linear) diff --git a/libraries/protocol/include/steem/protocol/operation_util.hpp b/libraries/protocol/include/sophiatx/protocol/operation_util.hpp similarity index 75% rename from libraries/protocol/include/steem/protocol/operation_util.hpp rename to libraries/protocol/include/sophiatx/protocol/operation_util.hpp index aa733371..d07a14c0 100644 --- a/libraries/protocol/include/steem/protocol/operation_util.hpp +++ b/libraries/protocol/include/sophiatx/protocol/operation_util.hpp @@ -1,7 +1,7 @@ #pragma once -#include +#include #include @@ -10,7 +10,7 @@ #include #include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { struct get_required_auth_visitor { @@ -18,15 +18,13 @@ struct get_required_auth_visitor flat_set< account_name_type >& active; flat_set< account_name_type >& owner; - flat_set< account_name_type >& posting; std::vector< authority >& other; get_required_auth_visitor( flat_set< account_name_type >& a, flat_set< account_name_type >& own, - flat_set< account_name_type >& post, std::vector< authority >& oth ) - : active( a ), owner( own ), posting( post ), other( oth ) {} + : active( a ), owner( own ), other( oth ) {} template< typename ...Ts > void operator()( const fc::static_variant< Ts... >& v ) @@ -39,18 +37,17 @@ struct get_required_auth_visitor { v.get_required_active_authorities( active ); v.get_required_owner_authorities( owner ); - v.get_required_posting_authorities( posting ); v.get_required_authorities( other ); } }; -} } // steem::protocol +} } // sophiatx::protocol // -// Place STEEM_DECLARE_OPERATION_TYPE in a .hpp file to declare +// Place SOPHIATX_DECLARE_OPERATION_TYPE in a .hpp file to declare // functions related to your operation type // -#define STEEM_DECLARE_OPERATION_TYPE( OperationType ) \ +#define SOPHIATX_DECLARE_OPERATION_TYPE( OperationType ) \ namespace fc { \ \ void to_variant( const OperationType&, fc::variant& ); \ @@ -58,13 +55,12 @@ void from_variant( const fc::variant&, OperationType& ); \ } /* fc */ \ \ -namespace steem { namespace protocol { \ +namespace sophiatx { namespace protocol { \ \ void operation_validate( const OperationType& o ); \ void operation_get_required_authorities( const OperationType& op, \ flat_set< account_name_type >& active, \ flat_set< account_name_type >& owner, \ - flat_set< account_name_type >& posting, \ vector< authority >& other ); \ \ -} } /* steem::protocol */ +} } /* sophiatx::protocol */ diff --git a/libraries/protocol/include/steem/protocol/operation_util_impl.hpp b/libraries/protocol/include/sophiatx/protocol/operation_util_impl.hpp similarity index 88% rename from libraries/protocol/include/steem/protocol/operation_util_impl.hpp rename to libraries/protocol/include/sophiatx/protocol/operation_util_impl.hpp index a22eaf03..ff551b2d 100644 --- a/libraries/protocol/include/steem/protocol/operation_util_impl.hpp +++ b/libraries/protocol/include/sophiatx/protocol/operation_util_impl.hpp @@ -1,7 +1,7 @@ #pragma once -#include +#include #include @@ -37,7 +37,7 @@ namespace fc }; } -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { struct operation_validate_visitor { @@ -46,13 +46,13 @@ struct operation_validate_visitor void operator()( const T& v )const { v.validate(); } }; -} } // steem::protocol +} } // sophiatx::protocol // -// Place STEEM_DEFINE_OPERATION_TYPE in a .cpp file to define +// Place SOPHIATX_DEFINE_OPERATION_TYPE in a .cpp file to define // functions related to your operation type // -#define STEEM_DEFINE_OPERATION_TYPE( OperationType ) \ +#define SOPHIATX_DEFINE_OPERATION_TYPE( OperationType ) \ namespace fc { \ \ void to_variant( const OperationType& var, fc::variant& vo ) \ @@ -90,20 +90,19 @@ void from_variant( const fc::variant& var, OperationType& vo ) \ } \ } \ \ -namespace steem { namespace protocol { \ +namespace sophiatx { namespace protocol { \ \ void operation_validate( const OperationType& op ) \ { \ - op.visit( steem::protocol::operation_validate_visitor() ); \ + op.visit( sophiatx::protocol::operation_validate_visitor() ); \ } \ \ void operation_get_required_authorities( const OperationType& op, \ flat_set< account_name_type >& active, \ flat_set< account_name_type >& owner, \ - flat_set< account_name_type >& posting, \ std::vector< authority >& other ) \ { \ - op.visit( steem::protocol::get_required_auth_visitor( active, owner, posting, other ) ); \ + op.visit( sophiatx::protocol::get_required_auth_visitor( active, owner, other ) ); \ } \ \ -} } /* steem::protocol */ +} } /* sophiatx::protocol */ diff --git a/libraries/protocol/include/sophiatx/protocol/operations.hpp b/libraries/protocol/include/sophiatx/protocol/operations.hpp new file mode 100644 index 00000000..06bd22f2 --- /dev/null +++ b/libraries/protocol/include/sophiatx/protocol/operations.hpp @@ -0,0 +1,86 @@ +#pragma once + +#include + +#include +#include +#include +#include + +namespace sophiatx { namespace protocol { + + /** NOTE: do not change the order of any operations prior to the virtual operations + * or it will trigger a hardfork. + */ + typedef fc::static_variant< + + transfer_operation, + transfer_to_vesting_operation, + withdraw_vesting_operation, + feed_publish_operation, + + account_create_operation, + account_update_operation, + account_delete_operation, + + witness_update_operation, + witness_stop_operation, + account_witness_vote_operation, + account_witness_proxy_operation, + witness_set_properties_operation, + + + custom_operation, + custom_json_operation, + custom_binary_operation, + + request_account_recovery_operation, + recover_account_operation, + change_recovery_account_operation, + escrow_transfer_operation, + escrow_dispute_operation, + escrow_release_operation, + escrow_approve_operation, + + reset_account_operation, + set_reset_account_operation, + + application_create_operation, + application_update_operation, + application_delete_operation, + buy_application_operation, + cancel_application_buying_operation, + transfer_from_promotion_pool_operation, + sponsor_fees_operation, + /// virtual operations below this point + + interest_operation, + fill_vesting_withdraw_operation, + shutdown_witness_operation, + hardfork_operation, + producer_reward_operation, + promotion_pool_withdraw_operation + + > operation; + + /*void operation_get_required_authorities( const operation& op, + flat_set& active, + flat_set& owner, + flat_set& posting, + vector& other ); + + void operation_validate( const operation& op );*/ + + bool is_market_operation( const operation& op ); + + bool is_virtual_operation( const operation& op ); + +} } // sophiatx::protocol + +/*namespace fc { + void to_variant( const sophiatx::protocol::operation& var, fc::variant& vo ); + void from_variant( const fc::variant& var, sophiatx::protocol::operation& vo ); +}*/ + +SOPHIATX_DECLARE_OPERATION_TYPE( sophiatx::protocol::operation ) +FC_REFLECT_TYPENAME( sophiatx::protocol::operation ) diff --git a/libraries/protocol/include/sophiatx/protocol/protocol.hpp b/libraries/protocol/include/sophiatx/protocol/protocol.hpp new file mode 100644 index 00000000..e6464efd --- /dev/null +++ b/libraries/protocol/include/sophiatx/protocol/protocol.hpp @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/libraries/protocol/include/steem/protocol/sign_state.hpp b/libraries/protocol/include/sophiatx/protocol/sign_state.hpp similarity index 80% rename from libraries/protocol/include/steem/protocol/sign_state.hpp rename to libraries/protocol/include/sophiatx/protocol/sign_state.hpp index 632c38c8..ef75a4c3 100644 --- a/libraries/protocol/include/steem/protocol/sign_state.hpp +++ b/libraries/protocol/include/sophiatx/protocol/sign_state.hpp @@ -1,9 +1,9 @@ #pragma once -#include -#include +#include +#include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { typedef std::function authority_getter; @@ -32,7 +32,7 @@ struct sign_state flat_map provided_signatures; flat_set approved_by; - uint32_t max_recursion = STEEM_MAX_SIG_CHECK_DEPTH; + uint32_t max_recursion = SOPHIATX_MAX_SIG_CHECK_DEPTH; }; -} } // steem::protocol +} } // sophiatx::protocol diff --git a/libraries/protocol/include/steem/protocol/smt_operations.hpp b/libraries/protocol/include/sophiatx/protocol/smt_operations.hpp similarity index 83% rename from libraries/protocol/include/steem/protocol/smt_operations.hpp rename to libraries/protocol/include/sophiatx/protocol/smt_operations.hpp index 3b5e2a40..35fd782e 100644 --- a/libraries/protocol/include/steem/protocol/smt_operations.hpp +++ b/libraries/protocol/include/sophiatx/protocol/smt_operations.hpp @@ -1,11 +1,11 @@ #pragma once -#include -#include -#include +#include +#include +#include -#ifdef STEEM_ENABLE_SMT -namespace steem { namespace protocol { +#ifdef SOPHIATX_ENABLE_SMT +namespace sophiatx { namespace protocol { /** * This operation introduces new SMT into blockchain as identified by @@ -33,10 +33,10 @@ struct smt_create_operation : public base_operation struct smt_generation_unit { - flat_map< account_name_type, uint16_t > steem_unit; + flat_map< account_name_type, uint16_t > sophiatx_unit; flat_map< account_name_type, uint16_t > token_unit; - uint32_t steem_unit_sum()const; + uint32_t sophiatx_unit_sum()const; uint32_t token_unit_sum()const; void validate()const; @@ -76,8 +76,8 @@ struct smt_capped_generation_policy smt_generation_unit pre_soft_cap_unit; smt_generation_unit post_soft_cap_unit; - smt_cap_commitment min_steem_units_commitment; - smt_cap_commitment hard_cap_steem_units_commitment; + smt_cap_commitment min_sophiatx_units_commitment; + smt_cap_commitment hard_cap_sophiatx_units_commitment; uint16_t soft_cap_percent = 0; @@ -97,7 +97,7 @@ struct smt_setup_operation : public base_operation { account_name_type control_account; uint8_t decimal_places = 0; - int64_t max_supply = STEEM_MAX_SHARE_SUPPLY; + int64_t max_supply = SOPHIATX_MAX_SHARE_SUPPLY; smt_generation_policy initial_generation_policy; @@ -216,13 +216,13 @@ typedef static_variant< struct smt_param_windows_v1 { - uint32_t cashout_window_seconds = 0; // STEEM_CASHOUT_WINDOW_SECONDS - uint32_t reverse_auction_window_seconds = 0; // STEEM_REVERSE_AUCTION_WINDOW_SECONDS + uint32_t cashout_window_seconds = 0; // SOPHIATX_CASHOUT_WINDOW_SECONDS + uint32_t reverse_auction_window_seconds = 0; // SOPHIATX_REVERSE_AUCTION_WINDOW_SECONDS }; struct smt_param_vote_regeneration_period_seconds_v1 { - uint32_t vote_regeneration_period_seconds = 0; // STEEM_VOTE_REGENERATION_SECONDS + uint32_t vote_regeneration_period_seconds = 0; // SOPHIATX_VOTE_REGENERATION_SECONDS uint32_t votes_per_regeneration_period = 0; }; @@ -272,7 +272,7 @@ struct smt_set_runtime_parameters_operation : public base_operation } } FC_REFLECT( - steem::protocol::smt_create_operation, + sophiatx::protocol::smt_create_operation, (control_account) (smt_creation_fee) (symbol) @@ -280,7 +280,7 @@ FC_REFLECT( ) FC_REFLECT( - steem::protocol::smt_setup_operation, + sophiatx::protocol::smt_setup_operation, (control_account) (decimal_places) (max_supply) @@ -294,37 +294,37 @@ FC_REFLECT( ) FC_REFLECT( - steem::protocol::smt_generation_unit, - (steem_unit) + sophiatx::protocol::smt_generation_unit, + (sophiatx_unit) (token_unit) ) FC_REFLECT( - steem::protocol::smt_cap_commitment, + sophiatx::protocol::smt_cap_commitment, (lower_bound) (upper_bound) (hash) ) FC_REFLECT( - steem::protocol::smt_revealed_cap, + sophiatx::protocol::smt_revealed_cap, (amount) (nonce) ) FC_REFLECT( - steem::protocol::smt_cap_reveal_operation, + sophiatx::protocol::smt_cap_reveal_operation, (control_account) (cap) (extensions) ) FC_REFLECT( - steem::protocol::smt_capped_generation_policy, + sophiatx::protocol::smt_capped_generation_policy, (pre_soft_cap_unit) (post_soft_cap_unit) - (min_steem_units_commitment) - (hard_cap_steem_units_commitment) + (min_sophiatx_units_commitment) + (hard_cap_sophiatx_units_commitment) (soft_cap_percent) (min_unit_ratio) (max_unit_ratio) @@ -332,7 +332,7 @@ FC_REFLECT( ) FC_REFLECT( - steem::protocol::smt_refund_operation, + sophiatx::protocol::smt_refund_operation, (executor) (contributor) (contribution_id) @@ -342,12 +342,12 @@ FC_REFLECT( ) FC_REFLECT( - steem::protocol::smt_emissions_unit, + sophiatx::protocol::smt_emissions_unit, (token_unit) ) FC_REFLECT( - steem::protocol::smt_setup_emissions_operation, + sophiatx::protocol::smt_setup_emissions_operation, (symbol) (control_account) (schedule_time) @@ -365,31 +365,31 @@ FC_REFLECT( ) FC_REFLECT( - steem::protocol::smt_param_allow_vesting, + sophiatx::protocol::smt_param_allow_vesting, (value) ) FC_REFLECT( - steem::protocol::smt_param_allow_voting, + sophiatx::protocol::smt_param_allow_voting, (value) ) -FC_REFLECT_TYPENAME( steem::protocol::smt_setup_parameter ) +FC_REFLECT_TYPENAME( sophiatx::protocol::smt_setup_parameter ) FC_REFLECT( - steem::protocol::smt_param_windows_v1, + sophiatx::protocol::smt_param_windows_v1, (cashout_window_seconds) (reverse_auction_window_seconds) ) FC_REFLECT( - steem::protocol::smt_param_vote_regeneration_period_seconds_v1, + sophiatx::protocol::smt_param_vote_regeneration_period_seconds_v1, (vote_regeneration_period_seconds) (votes_per_regeneration_period) ) FC_REFLECT( - steem::protocol::smt_param_rewards_v1, + sophiatx::protocol::smt_param_rewards_v1, (content_constant) (percent_curation_rewards) (percent_content_rewards) @@ -398,11 +398,11 @@ FC_REFLECT( ) FC_REFLECT_TYPENAME( - steem::protocol::smt_runtime_parameter + sophiatx::protocol::smt_runtime_parameter ) FC_REFLECT( - steem::protocol::smt_set_setup_parameters_operation, + sophiatx::protocol::smt_set_setup_parameters_operation, (symbol) (control_account) (setup_parameters) @@ -410,11 +410,11 @@ FC_REFLECT( ) FC_REFLECT( - steem::protocol::smt_set_runtime_parameters_operation, + sophiatx::protocol::smt_set_runtime_parameters_operation, (symbol) (control_account) (runtime_parameters) (extensions) ) -#endif \ No newline at end of file +#endif diff --git a/libraries/protocol/include/sophiatx/protocol/sophiatx_operations.hpp b/libraries/protocol/include/sophiatx/protocol/sophiatx_operations.hpp new file mode 100644 index 00000000..b485590c --- /dev/null +++ b/libraries/protocol/include/sophiatx/protocol/sophiatx_operations.hpp @@ -0,0 +1,848 @@ +#pragma once +#include +#include +#include +#include + +#include + + +namespace sophiatx { namespace protocol { + + std::string make_random_fixed_string(std::string seed); + + + struct account_create_operation : public base_operation + { + account_name_type creator; + std::string name_seed; + authority owner; + authority active; + public_key_type memo_key; + std::string json_metadata; + + account_name_type get_fee_payer()const { return creator;} ; + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);} ; //& a )const{ a.insert(creator); } + }; + + + struct account_update_operation : public base_operation + { + account_name_type account; + optional< authority > owner; + optional< authority > active; + public_key_type memo_key; + string json_metadata; + + void validate()const; + account_name_type get_fee_payer()const { return account;}; + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);} ; + + void get_required_owner_authorities( flat_set& a )const + { if( owner || active ) a.insert( account ); } + + void get_required_active_authorities( flat_set& a )const + { if( !owner && !active ) a.insert( account ); } + }; + + + struct account_delete_operation : public base_operation + { + account_name_type account; + + void validate()const; + account_name_type get_fee_payer()const { return account;}; + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);} ; + + void get_required_owner_authorities( flat_set& a )const + { a.insert( account ); } + + }; + + + struct placeholder_a_operation : public base_operation + { + void validate()const; + }; + + struct placeholder_b_operation : public base_operation + { + void validate()const; + }; + + + /** + * @ingroup operations + * + * @brief Transfers SOPHIATX from one account to another. + */ + struct transfer_operation : public base_operation + { + account_name_type from; + /// Account to transfer asset to + account_name_type to; + /// The amount of asset to transfer from @ref from to @ref to + asset amount; + + /// The memo is plain-text, any encryption on the memo is up to + /// a higher level protocol. + string memo; + + account_name_type get_fee_payer()const { return from;}; + + void validate()const; + void get_required_active_authorities( flat_set& a )const{ if(amount.symbol != VESTS_SYMBOL) a.insert(from); } + void get_required_owner_authorities( flat_set& a )const { if(amount.symbol == VESTS_SYMBOL) a.insert(from); } + }; + + + /** + * The purpose of this operation is to enable someone to send money contingently to + * another individual. The funds leave the *from* account and go into a temporary balance + * where they are held until *from* releases it to *to* or *to* refunds it to *from*. + * + * In the event of a dispute the *agent* can divide the funds between the to/from account. + * Disputes can be raised any time before or on the dispute deadline time, after the escrow + * has been approved by all parties. + * + * This operation only creates a proposed escrow transfer. Both the *agent* and *to* must + * agree to the terms of the arrangement by approving the escrow. + * + * The escrow agent is paid the fee on approval of all parties. It is up to the escrow agent + * to determine the fee. + * + * Escrow transactions are uniquely identified by 'from' and 'escrow_id', the 'escrow_id' is defined + * by the sender. + */ + struct escrow_transfer_operation : public base_operation + { + account_name_type from; + account_name_type to; + account_name_type agent; + uint32_t escrow_id = 30; + + asset sophiatx_amount = asset( 0, SOPHIATX_SYMBOL ); + asset escrow_fee; + + time_point_sec ratification_deadline; + time_point_sec escrow_expiration; + + string json_meta; + + account_name_type get_fee_payer()const { return from;}; + + void validate()const; + void get_required_active_authorities( flat_set& a )const{ a.insert(from); } + }; + + + /** + * The agent and to accounts must approve an escrow transaction for it to be valid on + * the blockchain. Once a part approves the escrow, the cannot revoke their approval. + * Subsequent escrow approve operations, regardless of the approval, will be rejected. + */ + struct escrow_approve_operation : public base_operation + { + account_name_type from; + account_name_type to; + account_name_type agent; + account_name_type who; // Either to or agent + uint32_t escrow_id = 30; + bool approve = true; + + account_name_type get_fee_payer()const { return who;}; + + void validate()const; + void get_required_active_authorities( flat_set& a )const{ a.insert(who); } + }; + + + /** + * If either the sender or receiver of an escrow payment has an issue, they can + * raise it for dispute. Once a payment is in dispute, the agent has authority over + * who gets what. + */ + struct escrow_dispute_operation : public base_operation + { + + account_name_type from; + account_name_type to; + account_name_type agent; + account_name_type who; + + uint32_t escrow_id = 30; + + account_name_type get_fee_payer()const { return who;}; + + void validate()const; + void get_required_active_authorities( flat_set& a )const{ a.insert(who); } + }; + + + /** + * This operation can be used by anyone associated with the escrow transfer to + * release funds if they have permission. + * + * The permission scheme is as follows: + * If there is no dispute and escrow has not expired, either party can release funds to the other. + * If escrow expires and there is no dispute, either party can release funds to either party. + * If there is a dispute regardless of expiration, the agent can release funds to either party + * following whichever agreement was in place between the parties. + */ + struct escrow_release_operation : public base_operation + { + account_name_type from; + account_name_type to; ///< the original 'to' + account_name_type agent; + account_name_type who; ///< the account that is attempting to release the funds, determines valid 'receiver' + account_name_type receiver; ///< the account that should receive funds (might be from, might be to) + + uint32_t escrow_id = 30; + asset sophiatx_amount = asset( 0, SOPHIATX_SYMBOL ); ///< the amount of sophiatx to release + + account_name_type get_fee_payer()const { return who;}; + + void validate()const; + void get_required_active_authorities( flat_set& a )const{ a.insert(who); } + }; + + + /** + * This operation converts SOPHIATX into VFS (Vesting Fund Shares) at + * the current exchange rate. With this operation it is possible to + * give another account vesting shares so that faucets can + * pre-fund new accounts with vesting shares. + */ + struct transfer_to_vesting_operation : public base_operation + { + account_name_type from; + account_name_type to; ///< if null, then same as from + asset amount; ///< must be SOPHIATX + + account_name_type get_fee_payer()const { return from;}; + + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + + void validate()const; + void get_required_active_authorities( flat_set& a )const{ a.insert(from); } + }; + + + /** + * At any given point in time an account can be withdrawing from their + * vesting shares. A user may change the number of shares they wish to + * cash out at any time between 0 and their total vesting stake. + * + * After applying this operation, vesting_shares will be withdrawn + * at a rate of vesting_shares/104 per week for two years starting + * one week after this operation is included in the blockchain. + * + * This operation is not valid if the user has no vesting shares. + */ + struct withdraw_vesting_operation : public base_operation + { + account_name_type account; + asset vesting_shares; + + account_name_type get_fee_payer()const { return account;}; + + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + + void validate()const; + void get_required_active_authorities( flat_set& a )const{ a.insert(account); } + }; + + + /** + * Witnesses must vote on how to set certain chain properties to ensure a smooth + * and well functioning network. Any time @owner is in the active set of witnesses these + * properties will be used to control the blockchain configuration. + */ + struct chain_properties + { + /** + * This fee, paid in SOPHIATX, is converted into VESTING SHARES for the new account. Accounts + * without vesting shares cannot earn usage rations and therefore are powerless. This minimum + * fee requires all accounts to have some kind of commitment to the network that includes the + * ability to vote and make transactions. + */ + asset account_creation_fee = asset( SOPHIATX_MIN_ACCOUNT_CREATION_FEE, SOPHIATX_SYMBOL ); + + /** + * This witnesses vote for the maximum_block_size which is used by the network + * to tune rate limiting and capacity + */ + uint32_t maximum_block_size = SOPHIATX_MIN_BLOCK_SIZE_LIMIT * 2; + + flat_map price_feeds; + + + void validate()const + { + FC_ASSERT( account_creation_fee.amount >= SOPHIATX_MIN_ACCOUNT_CREATION_FEE); + FC_ASSERT( maximum_block_size >= SOPHIATX_MIN_BLOCK_SIZE_LIMIT); + for (const auto&i : price_feeds){ + FC_ASSERT(i.first == SBD1_SYMBOL_SER || i.first == SBD2_SYMBOL_SER || + i.first == SBD3_SYMBOL_SER || i.first == SBD4_SYMBOL_SER || i.first == SBD5_SYMBOL_SER ); + if(i.second.base.symbol == SOPHIATX_SYMBOL){ + FC_ASSERT(i.second.quote.symbol == i.first); + }else{ + FC_ASSERT(i.second.base.symbol == i.first && i.second.quote.symbol == SOPHIATX_SYMBOL); + } + FC_ASSERT(i.second.quote.amount > 0 && i.second.base.amount > 0); + } + + } + }; + + + /** + * + * If the owner isn't a witness they will become a witness. Witnesses + * are charged a fee equal to 1 weeks worth of witness pay which in + * turn is derived from the current share supply. The fee is + * only applied if the owner is not already a witness. + * + * If the block_signing_key is null then the witness is removed from + * contention (effectively an witness_stop_operaton). The network will pick + * the top 21 witnesses for producing blocks. + */ + struct witness_update_operation : public base_operation + { + account_name_type owner; + string url; + public_key_type block_signing_key; + chain_properties props; + + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + account_name_type get_fee_payer()const { return owner;}; + + void validate()const; + void get_required_active_authorities( flat_set& a )const{ a.insert(owner); } + }; + + struct witness_set_properties_operation : public base_operation + { + account_name_type owner; + flat_map< string, vector< char > > props; + extensions_type extensions; + + account_name_type get_fee_payer()const { return owner;}; + + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + + + void validate()const; + void get_required_authorities( vector< authority >& a )const + { + auto key_itr = props.find( "key" ); + + if( key_itr != props.end() ) + { + public_key_type signing_key; + fc::raw::unpack_from_vector( key_itr->second, signing_key ); + a.push_back( authority( 1, signing_key, 1 ) ); + } + else + a.push_back( authority( 1, SOPHIATX_NULL_ACCOUNT, 1 ) ); // The null account auth is impossible to satisfy + } + }; + + struct witness_stop_operation : public base_operation + { + account_name_type owner; + account_name_type get_fee_payer()const { return owner;}; + + void validate()const {}; + void get_required_active_authorities( flat_set& a )const{ a.insert(owner); } + }; + + /** + * All accounts with a VFS can vote for or against any witness. + * + * If a proxy is specified then all existing votes are removed. + */ + struct account_witness_vote_operation : public base_operation + { + account_name_type account; + account_name_type witness; + bool approve = true; + + account_name_type get_fee_payer()const { return account;}; + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + + void validate() const; + void get_required_active_authorities( flat_set& a )const{ a.insert(account); } + }; + + + struct account_witness_proxy_operation : public base_operation + { + account_name_type account; + account_name_type proxy; + + account_name_type get_fee_payer()const { return account;}; + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + + void validate()const; + void get_required_active_authorities( flat_set& a )const{ a.insert(account); } + }; + +namespace{ +asset get_custom_fee(uint32_t payload_size, asset_symbol_type in_symbol){ + asset base = BASE_FEE; + if(in_symbol == SBD1_SYMBOL )//USD + base = BASE_FEE_SBD1; + if(in_symbol == SBD2_SYMBOL )//EUR + base = BASE_FEE_SBD2; + if(in_symbol == SBD3_SYMBOL ) //CHF + base = BASE_FEE_SBD3; + if(in_symbol == SBD4_SYMBOL ) //CNY + base = BASE_FEE_SBD4; + if(in_symbol == SBD5_SYMBOL ) //GBP + base = BASE_FEE_SBD5; + + //pay base fee + for every 1kB exceeding first 512 bytes + uint32_t size_multi = (payload_size + (SIZE_INCREASE_PER_FEE-SIZE_COVERED_IN_BASE_FEE-1))/SIZE_INCREASE_PER_FEE; + return base * (1 + size_multi); +}; +} + /** + * @brief provides a generic way to add higher level protocols on top of witness consensus + * @ingroup operations + * + * There is no validation for this operation other than that required auths are valid + */ + struct custom_operation : public base_operation + { + account_name_type sender; + flat_set recipients; + uint64_t app_id = 0; + vector< char > data; + + account_name_type get_fee_payer()const { return sender;}; + asset get_required_fee(asset_symbol_type in_symbol) const{ return get_custom_fee(data.size(), in_symbol);} + + void validate()const; + void get_required_active_authorities( flat_set& a )const{ a.insert(sender); } + }; + + + /** serves the same purpose as custom_operation but also supports required posting authorities. Unlike custom_operation, + * this operation is designed to be human readable/developer friendly. + **/ + struct custom_json_operation : public base_operation + { + account_name_type sender; + flat_set recipients; + uint64_t app_id; ///< must be less than 32 characters long + string json; ///< must be proper utf8 / JSON string. + + account_name_type get_fee_payer()const { return sender;}; + asset get_required_fee(asset_symbol_type in_symbol) const{ return get_custom_fee(json.size(), in_symbol);} + + + void validate()const; + void get_required_active_authorities( flat_set& a )const{ a.insert(sender); } + }; + + + struct custom_binary_operation : public base_operation + { + account_name_type sender; + flat_set recipients; + uint64_t app_id; ///< must be less than 32 characters long + vector< char > data; + + account_name_type get_fee_payer()const { return sender;}; + asset get_required_fee(asset_symbol_type in_symbol)const { return get_custom_fee(data.size(), in_symbol);} + + + void validate()const; + void get_required_active_authorities( flat_set& a )const{ a.insert(sender); } + }; + + + /** + * Feeds can only be published by the top N witnesses which are included in every round and are + * used to define the exchange rate between sophiatx and the dollar. + */ + struct feed_publish_operation : public base_operation + { + account_name_type publisher; + price exchange_rate; + + account_name_type get_fee_payer()const { return publisher;}; + + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + + void validate()const; + void get_required_active_authorities( flat_set& a )const{ a.insert(publisher); } + }; + + + + + + /** + * All account recovery requests come from a listed recovery account. This + * is secure based on the assumption that only a trusted account should be + * a recovery account. It is the responsibility of the recovery account to + * verify the identity of the account holder of the account to recover by + * whichever means they have agreed upon. The blockchain assumes identity + * has been verified when this operation is broadcast. + * + * This operation creates an account recovery request which the account to + * recover has 24 hours to respond to before the request expires and is + * invalidated. + * + * There can only be one active recovery request per account at any one time. + * Pushing this operation for an account to recover when it already has + * an active request will either update the request to a new new owner authority + * and extend the request expiration to 24 hours from the current head block + * time or it will delete the request. To cancel a request, simply set the + * weight threshold of the new owner authority to 0, making it an open authority. + * + * Additionally, the new owner authority must be satisfiable. In other words, + * the sum of the key weights must be greater than or equal to the weight + * threshold. + * + * This operation only needs to be signed by the the recovery account. + * The account to recover confirms its identity to the blockchain in + * the recover account operation. + */ + struct request_account_recovery_operation : public base_operation + { + account_name_type recovery_account; ///< The recovery account is listed as the recovery account on the account to recover. + + account_name_type account_to_recover; ///< The account to recover. This is likely due to a compromised owner authority. + + authority new_owner_authority; ///< The new owner authority the account to recover wishes to have. This is secret + ///< known by the account to recover and will be confirmed in a recover_account_operation + + extensions_type extensions; ///< Extensions. Not currently used. + + account_name_type get_fee_payer()const { return recovery_account;}; + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + + + void get_required_active_authorities( flat_set& a )const{ a.insert( recovery_account ); } + + + void validate() const; + }; + + + /** + * Recover an account to a new authority using a previous authority and verification + * of the recovery account as proof of identity. This operation can only succeed + * if there was a recovery request sent by the account's recover account. + * + * In order to recover the account, the account holder must provide proof + * of past ownership and proof of identity to the recovery account. Being able + * to satisfy an owner authority that was used in the past 30 days is sufficient + * to prove past ownership. The get_owner_history function in the database API + * returns past owner authorities that are valid for account recovery. + * + * Proving identity is an off chain contract between the account holder and + * the recovery account. The recovery request contains a new authority which + * must be satisfied by the account holder to regain control. The actual process + * of verifying authority may become complicated, but that is an application + * level concern, not a blockchain concern. + * + * This operation requires both the past and future owner authorities in the + * operation because neither of them can be derived from the current chain state. + * The operation must be signed by keys that satisfy both the new owner authority + * and the recent owner authority. Failing either fails the operation entirely. + * + * If a recovery request was made inadvertantly, the account holder should + * contact the recovery account to have the request deleted. + * + * The two setp combination of the account recovery request and recover is + * safe because the recovery account never has access to secrets of the account + * to recover. They simply act as an on chain endorsement of off chain identity. + * In other systems, a fork would be required to enforce such off chain state. + * Additionally, an account cannot be permanently recovered to the wrong account. + * While any owner authority from the past 30 days can be used, including a compromised + * authority, the account can be continually recovered until the recovery account + * is confident a combination of uncompromised authorities were used to + * recover the account. The actual process of verifying authority may become + * complicated, but that is an application level concern, not the blockchain's + * concern. + */ + struct recover_account_operation : public base_operation + { + account_name_type account_to_recover; ///< The account to be recovered + + authority new_owner_authority; ///< The new owner authority as specified in the request account recovery operation. + + authority recent_owner_authority; ///< A previous owner authority that the account holder will use to prove past ownership of the account to be recovered. + + extensions_type extensions; ///< Extensions. Not currently used. + + void get_required_authorities( vector< authority >& a )const + { + a.push_back( new_owner_authority ); + a.push_back( recent_owner_authority ); + } + + account_name_type get_fee_payer()const { return account_to_recover;}; + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + + void validate() const; + }; + + + /** + * This operation allows recovery_accoutn to change account_to_reset's owner authority to + * new_owner_authority after 60 days of inactivity. + */ + struct reset_account_operation : public base_operation { + account_name_type reset_account; + account_name_type account_to_reset; + authority new_owner_authority; + + account_name_type get_fee_payer()const { return reset_account;}; + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + + void get_required_active_authorities( flat_set& a )const { a.insert( reset_account ); } + void validate()const; + }; + + /** + * This operation allows 'account' owner to control which account has the power + * to execute the 'reset_account_operation' after 60 days. + */ + struct set_reset_account_operation : public base_operation { + + account_name_type account; + account_name_type current_reset_account; + account_name_type reset_account; + + + account_name_type get_fee_payer()const { return account;}; + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + + void validate()const; + void get_required_owner_authorities( flat_set& a )const + { + if( current_reset_account.size() ) + a.insert( account ); + } + + }; + + enum application_price_param + { + permanent, + time_based, + none + }; + + struct application_create_operation : public base_operation { + + account_name_type author; + string name; + string url; + string metadata; + uint8_t price_param; + + account_name_type get_fee_payer()const { return author;}; + + void get_required_active_authorities( flat_set& a )const { a.insert( author ); } + void validate()const; + }; + + struct application_update_operation : public base_operation { + + account_name_type author; + optional new_author; + string name; + string url; + string metadata; + optional price_param; + + account_name_type get_fee_payer()const { return author;}; + + void get_required_active_authorities( flat_set& a )const { a.insert( author ); } + void validate()const; + }; + + struct application_delete_operation : public base_operation { + + account_name_type author; + string name; + + account_name_type get_fee_payer()const { return author;}; + + void get_required_active_authorities( flat_set& a )const { a.insert( author ); } + void validate()const; + }; + + struct buy_application_operation : public base_operation { + + account_name_type buyer; + int64_t app_id; + + account_name_type get_fee_payer()const { return buyer;}; + + void get_required_active_authorities( flat_set& a )const { a.insert( buyer ); } + void validate()const; + }; + + struct cancel_application_buying_operation : public base_operation { + + account_name_type app_owner; + account_name_type buyer; + int64_t app_id; + + account_name_type get_fee_payer()const { return app_owner;}; + + void get_required_active_authorities( flat_set& a )const { a.insert( app_owner ); } + void validate()const; + }; + + + /** + * Each account lists another account as their recovery account. + * The recovery account has the ability to create account_recovery_requests + * for the account to recover. An account can change their recovery account + * at any time with a 30 day delay. This delay is to prevent + * an attacker from changing the recovery account to a malicious account + * during an attack. These 30 days match the 30 days that an + * owner authority is valid for recovery purposes. + * + * On account creation the recovery account is set either to the creator of + * the account (The account that pays the creation fee and is a signer on the transaction) + * or to the empty string if the account was mined. An account with no recovery + * has the top voted witness as a recovery account, at the time the recover + * request is created. Note: This does mean the effective recovery account + * of an account with no listed recovery account can change at any time as + * witness vote weights. The top voted witness is explicitly the most trusted + * witness according to stake. + */ + struct change_recovery_account_operation : public base_operation + { + asset fee; + + account_name_type account_to_recover; ///< The account that would be recovered in case of compromise + account_name_type new_recovery_account; ///< The account that creates the recover request + extensions_type extensions; ///< Extensions. Not currently used. + + + account_name_type get_fee_payer()const { return account_to_recover;}; + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + + void get_required_owner_authorities( flat_set& a )const{ a.insert( account_to_recover ); } + void validate() const; + }; + + + /** + * Recover funds from the promotion pool. Only initminer can do that. + */ + struct transfer_from_promotion_pool_operation : public base_operation + { + + account_name_type transfer_to; + asset amount; + extensions_type extensions; ///< Extensions. Not currently used. + + + account_name_type get_fee_payer()const { return transfer_to;}; + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + + void get_required_active_authorities( flat_set& a )const{ a.insert( SOPHIATX_INIT_MINER_NAME ); } + + void validate() const; + }; + + /** + * Allow sponsoring someone elses fees. In order to remove sponsor, just send with your account in "sponsored" and keep the "sponsor" empty. On other side, to + * stop sponsoring, set "is_sponsoring" to false. + */ + struct sponsor_fees_operation : public base_operation + { + account_name_type sponsor; + account_name_type sponsored; + bool is_sponsoring; + extensions_type extensions; ///< Extensions. Not currently used. + + + account_name_type get_fee_payer()const { if(sponsor == "") return sponsored; return sponsor;}; + asset get_required_fee(asset_symbol_type in_symbol)const{ return asset(0, in_symbol);}; + + void get_required_active_authorities( flat_set& a )const{ a.insert(get_fee_payer()); } + + void validate() const; + }; + + +} } // sophiatx::protocol + + +FC_REFLECT_DERIVED( sophiatx::protocol::reset_account_operation, (sophiatx::protocol::base_operation), (reset_account)(account_to_reset)(new_owner_authority) ) +FC_REFLECT_DERIVED( sophiatx::protocol::set_reset_account_operation, (sophiatx::protocol::base_operation), (account)(current_reset_account)(reset_account) ) + + +FC_REFLECT_DERIVED( sophiatx::protocol::feed_publish_operation, (sophiatx::protocol::base_operation), (publisher)(exchange_rate) ) + +FC_REFLECT( sophiatx::protocol::chain_properties, + (account_creation_fee) + (maximum_block_size) + (price_feeds) + ) + +FC_REFLECT_DERIVED( sophiatx::protocol::account_create_operation, (sophiatx::protocol::base_operation), + (creator) + (name_seed) + (owner) + (active) + (memo_key) + (json_metadata) ) + +FC_REFLECT_DERIVED( sophiatx::protocol::account_update_operation, (sophiatx::protocol::base_operation), + (account) + (owner) + (active) + (memo_key) + (json_metadata) ) + +FC_REFLECT_DERIVED( sophiatx::protocol::account_delete_operation, (sophiatx::protocol::base_operation), (account) ) +FC_REFLECT_DERIVED( sophiatx::protocol::transfer_operation, (sophiatx::protocol::base_operation), (from)(to)(amount)(memo) ) +FC_REFLECT_DERIVED( sophiatx::protocol::transfer_to_vesting_operation, (sophiatx::protocol::base_operation), (from)(to)(amount) ) +FC_REFLECT_DERIVED( sophiatx::protocol::withdraw_vesting_operation, (sophiatx::protocol::base_operation), (account)(vesting_shares) ) +FC_REFLECT_DERIVED( sophiatx::protocol::witness_update_operation, (sophiatx::protocol::base_operation), (owner)(url)(block_signing_key)(props) ) +FC_REFLECT_DERIVED( sophiatx::protocol::witness_stop_operation, (sophiatx::protocol::base_operation), (owner) ) +FC_REFLECT_DERIVED( sophiatx::protocol::witness_set_properties_operation, (sophiatx::protocol::base_operation), (owner)(props)(extensions) ) +FC_REFLECT_DERIVED( sophiatx::protocol::account_witness_vote_operation, (sophiatx::protocol::base_operation), (account)(witness)(approve) ) +FC_REFLECT_DERIVED( sophiatx::protocol::account_witness_proxy_operation, (sophiatx::protocol::base_operation), (account)(proxy) ) +FC_REFLECT_DERIVED( sophiatx::protocol::custom_operation, (sophiatx::protocol::base_operation), (sender)(recipients)(app_id)(data) ) +FC_REFLECT_DERIVED( sophiatx::protocol::custom_json_operation, (sophiatx::protocol::base_operation), (sender)(recipients)(app_id)(json) ) +FC_REFLECT_DERIVED( sophiatx::protocol::custom_binary_operation, (sophiatx::protocol::base_operation), (sender)(recipients)(app_id)(data) ) +#ifdef SOPHIATX_ENABLE_SMT +FC_REFLECT( sophiatx::protocol::votable_asset_info_v1, (max_accepted_payout)(allow_curation_rewards) ) +FC_REFLECT( sophiatx::protocol::allowed_vote_assets, (votable_assets) ) +#endif + +FC_REFLECT_DERIVED( sophiatx::protocol::escrow_transfer_operation, (sophiatx::protocol::base_operation), (from)(to)(sophiatx_amount)(escrow_id)(agent)(escrow_fee)(json_meta)(ratification_deadline)(escrow_expiration) ); +FC_REFLECT_DERIVED( sophiatx::protocol::escrow_approve_operation, (sophiatx::protocol::base_operation), (from)(to)(agent)(who)(escrow_id)(approve) ); +FC_REFLECT_DERIVED( sophiatx::protocol::escrow_dispute_operation, (sophiatx::protocol::base_operation), (from)(to)(agent)(who)(escrow_id) ); +FC_REFLECT_DERIVED( sophiatx::protocol::escrow_release_operation, (sophiatx::protocol::base_operation), (from)(to)(agent)(who)(receiver)(escrow_id)(sophiatx_amount) ); +FC_REFLECT_DERIVED( sophiatx::protocol::placeholder_a_operation, (sophiatx::protocol::base_operation), ); +FC_REFLECT_DERIVED( sophiatx::protocol::placeholder_b_operation, (sophiatx::protocol::base_operation), ); +FC_REFLECT_DERIVED( sophiatx::protocol::request_account_recovery_operation, (sophiatx::protocol::base_operation), (recovery_account)(account_to_recover)(new_owner_authority)(extensions) ); +FC_REFLECT_DERIVED( sophiatx::protocol::recover_account_operation, (sophiatx::protocol::base_operation), (account_to_recover)(new_owner_authority)(recent_owner_authority)(extensions) ); +FC_REFLECT_DERIVED( sophiatx::protocol::application_create_operation, (sophiatx::protocol::base_operation), (author)(name)(url)(metadata)(price_param) ) +FC_REFLECT_DERIVED( sophiatx::protocol::application_update_operation, (sophiatx::protocol::base_operation), (author)(new_author)(name)(url)(metadata)(price_param) ) +FC_REFLECT_DERIVED( sophiatx::protocol::application_delete_operation, (sophiatx::protocol::base_operation), (author)(name) ) +FC_REFLECT_ENUM( sophiatx::protocol::application_price_param, (permanent)(time_based)(none) ) +FC_REFLECT_DERIVED( sophiatx::protocol::buy_application_operation, (sophiatx::protocol::base_operation), (buyer)(app_id) ) +FC_REFLECT_DERIVED( sophiatx::protocol::cancel_application_buying_operation, (sophiatx::protocol::base_operation), (app_owner)(buyer)(app_id) ) +FC_REFLECT_DERIVED( sophiatx::protocol::change_recovery_account_operation, (sophiatx::protocol::base_operation), (account_to_recover)(new_recovery_account)(extensions) ); +FC_REFLECT_DERIVED( sophiatx::protocol::transfer_from_promotion_pool_operation, (sophiatx::protocol::base_operation), (transfer_to)(amount)(extensions)) +FC_REFLECT_DERIVED( sophiatx::protocol::sponsor_fees_operation, (sophiatx::protocol::base_operation), (sponsor)(sponsored)(is_sponsoring) ) diff --git a/libraries/protocol/include/sophiatx/protocol/sophiatx_virtual_operations.hpp b/libraries/protocol/include/sophiatx/protocol/sophiatx_virtual_operations.hpp new file mode 100644 index 00000000..c4be58b5 --- /dev/null +++ b/libraries/protocol/include/sophiatx/protocol/sophiatx_virtual_operations.hpp @@ -0,0 +1,74 @@ +#pragma once +#include +#include +#include + +#include + +namespace sophiatx { namespace protocol { + + struct interest_operation : public virtual_operation + { + interest_operation( const string& o = "", const asset& i = asset(0,SOPHIATX_SYMBOL) ) + :owner(o),interest(i){} + + account_name_type owner; + asset interest; + }; + + struct shutdown_witness_operation : public virtual_operation + { + shutdown_witness_operation(){} + shutdown_witness_operation( const string& o ):owner(o) {} + + account_name_type owner; + }; + + struct hardfork_operation : public virtual_operation + { + hardfork_operation() {} + hardfork_operation( uint32_t hf_id ) : hardfork_id( hf_id ) {} + + uint32_t hardfork_id = 0; + }; + + struct producer_reward_operation : public virtual_operation + { + producer_reward_operation(){} + producer_reward_operation( const string& p, const asset& v ) : producer( p ), vesting_shares( v ) {} + + account_name_type producer; + asset vesting_shares; + + }; + + struct fill_vesting_withdraw_operation : public virtual_operation + { + fill_vesting_withdraw_operation(){} + fill_vesting_withdraw_operation( const string& f, const string& t, const asset& w, const asset& d ) + :from_account(f), to_account(t), withdrawn(w), deposited(d) {} + + account_name_type from_account; + account_name_type to_account; + asset withdrawn; + asset deposited; + }; + + struct promotion_pool_withdraw_operation : public virtual_operation + { + promotion_pool_withdraw_operation(){} + promotion_pool_withdraw_operation( const string& t, const asset& w ) + :to_account(t), withdrawn(w) {} + + account_name_type to_account; + asset withdrawn; + }; + +} } //sophiatx::protocol + +FC_REFLECT( sophiatx::protocol::interest_operation, (owner)(interest) ) +FC_REFLECT( sophiatx::protocol::shutdown_witness_operation, (owner) ) +FC_REFLECT( sophiatx::protocol::hardfork_operation, (hardfork_id) ) +FC_REFLECT( sophiatx::protocol::producer_reward_operation, (producer)(vesting_shares) ) +FC_REFLECT( sophiatx::protocol::fill_vesting_withdraw_operation, (from_account)(to_account)(withdrawn)(deposited) ) +FC_REFLECT( sophiatx::protocol::promotion_pool_withdraw_operation, (to_account)(withdrawn) ) diff --git a/libraries/protocol/include/steem/protocol/transaction.hpp b/libraries/protocol/include/sophiatx/protocol/transaction.hpp similarity index 76% rename from libraries/protocol/include/steem/protocol/transaction.hpp rename to libraries/protocol/include/sophiatx/protocol/transaction.hpp index 41166aa3..aaf7dfdf 100644 --- a/libraries/protocol/include/steem/protocol/transaction.hpp +++ b/libraries/protocol/include/sophiatx/protocol/transaction.hpp @@ -1,11 +1,11 @@ #pragma once -#include -#include -#include +#include +#include +#include #include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { struct transaction { @@ -44,7 +44,6 @@ namespace steem { namespace protocol { void get_required_authorities( flat_set< account_name_type >& active, flat_set< account_name_type >& owner, - flat_set< account_name_type >& posting, vector< authority >& other )const; }; @@ -62,24 +61,21 @@ namespace steem { namespace protocol { const flat_set& available_keys, const authority_getter& get_active, const authority_getter& get_owner, - const authority_getter& get_posting, - uint32_t max_recursion = STEEM_MAX_SIG_CHECK_DEPTH + uint32_t max_recursion = SOPHIATX_MAX_SIG_CHECK_DEPTH )const; void verify_authority( const chain_id_type& chain_id, const authority_getter& get_active, const authority_getter& get_owner, - const authority_getter& get_posting, - uint32_t max_recursion = STEEM_MAX_SIG_CHECK_DEPTH )const; + uint32_t max_recursion = SOPHIATX_MAX_SIG_CHECK_DEPTH )const; set minimize_required_signatures( const chain_id_type& chain_id, const flat_set& available_keys, const authority_getter& get_active, const authority_getter& get_owner, - const authority_getter& get_posting, - uint32_t max_recursion = STEEM_MAX_SIG_CHECK_DEPTH + uint32_t max_recursion = SOPHIATX_MAX_SIG_CHECK_DEPTH ) const; flat_set get_signature_keys( const chain_id_type& chain_id )const; @@ -104,8 +100,8 @@ namespace steem { namespace protocol { /// @} transactions group -} } // steem::protocol +} } // sophiatx::protocol -FC_REFLECT( steem::protocol::transaction, (ref_block_num)(ref_block_prefix)(expiration)(operations)(extensions) ) -FC_REFLECT_DERIVED( steem::protocol::signed_transaction, (steem::protocol::transaction), (signatures) ) -FC_REFLECT_DERIVED( steem::protocol::annotated_signed_transaction, (steem::protocol::signed_transaction), (transaction_id)(block_num)(transaction_num) ); +FC_REFLECT( sophiatx::protocol::transaction, (ref_block_num)(ref_block_prefix)(expiration)(operations)(extensions) ) +FC_REFLECT_DERIVED( sophiatx::protocol::signed_transaction, (sophiatx::protocol::transaction), (signatures) ) +FC_REFLECT_DERIVED( sophiatx::protocol::annotated_signed_transaction, (sophiatx::protocol::signed_transaction), (transaction_id)(block_num)(transaction_num) ); diff --git a/libraries/protocol/include/sophiatx/protocol/transaction_util.hpp b/libraries/protocol/include/sophiatx/protocol/transaction_util.hpp new file mode 100644 index 00000000..79f57814 --- /dev/null +++ b/libraries/protocol/include/sophiatx/protocol/transaction_util.hpp @@ -0,0 +1,62 @@ +#pragma once +#include +#include + +namespace sophiatx { namespace protocol { + +template< typename AuthContainerType > +void verify_authority( const vector& auth_containers, const flat_set& sigs, + const authority_getter& get_active, + const authority_getter& get_owner, + uint32_t max_recursion_depth = SOPHIATX_MAX_SIG_CHECK_DEPTH, + bool allow_committe = false, + const flat_set< account_name_type >& active_approvals = flat_set< account_name_type >(), + const flat_set< account_name_type >& owner_approvals = flat_set< account_name_type >() + ) +{ try { + flat_set< account_name_type > required_active; + flat_set< account_name_type > required_owner; + vector< authority > other; + + get_required_auth_visitor auth_visitor( required_active, required_owner, other ); + + for( const auto& a : auth_containers ) + auth_visitor( a ); + + + flat_set< public_key_type > avail; + sign_state s(sigs,get_active,avail); + s.max_recursion = max_recursion_depth; + for( auto& id : active_approvals ) + s.approved_by.insert( id ); + for( auto& id : owner_approvals ) + s.approved_by.insert( id ); + + for( const auto& auth : other ) + { + SOPHIATX_ASSERT( s.check_authority(auth), tx_missing_other_auth, "Missing Authority", ("auth",auth)("sigs",sigs) ); + } + + // fetch all of the top level authorities + for( const auto& id : required_active ) + { + SOPHIATX_ASSERT( s.check_authority(id) || + s.check_authority(get_owner(id)), + tx_missing_active_auth, "Missing Active Authority ${id}", ("id",id)("auth",get_active(id))("owner",get_owner(id)) ); + } + + for( const auto& id : required_owner ) + { + SOPHIATX_ASSERT( owner_approvals.find(id) != owner_approvals.end() || + s.check_authority(get_owner(id)), + tx_missing_owner_auth, "Missing Owner Authority ${id}", ("id",id)("auth",get_owner(id)) ); + } + + SOPHIATX_ASSERT( + !s.remove_unused_signatures(), + tx_irrelevant_sig, + "Unnecessary signature(s) detected" + ); +} FC_CAPTURE_AND_RETHROW( (auth_containers)(sigs) ) } + +} } // sophiatx::protocol diff --git a/libraries/protocol/include/steem/protocol/types.hpp b/libraries/protocol/include/sophiatx/protocol/types.hpp similarity index 80% rename from libraries/protocol/include/steem/protocol/types.hpp rename to libraries/protocol/include/sophiatx/protocol/types.hpp index 3a60b15e..9a6def0c 100644 --- a/libraries/protocol/include/steem/protocol/types.hpp +++ b/libraries/protocol/include/sophiatx/protocol/types.hpp @@ -1,9 +1,9 @@ #pragma once -#include -#include +#include +#include -#include -#include +#include +#include #include #include @@ -29,7 +29,7 @@ #include #include -namespace steem { +namespace sophiatx { using fc::uint128_t; typedef boost::multiprecision::uint256_t u256; @@ -71,7 +71,7 @@ namespace steem { typedef fc::ecc::private_key private_key_type; typedef fc::sha256 chain_id_type; - typedef fixed_string<16> account_name_type; + typedef fixed_string<24> account_name_type; typedef fc::ripemd160 block_id_type; typedef fc::ripemd160 checksum_type; typedef fc::ripemd160 transaction_id_type; @@ -104,7 +104,7 @@ namespace steem { friend bool operator != ( const public_key_type& p1, const public_key_type& p2); }; - #define STEEM_INIT_PUBLIC_KEY (steem::protocol::public_key_type(STEEM_INIT_PUBLIC_KEY_STR)) + #define SOPHIATX_INIT_PUBLIC_KEY (sophiatx::protocol::public_key_type(SOPHIATX_INIT_PUBLIC_KEY_STR)) struct extended_public_key_type { @@ -152,25 +152,25 @@ namespace steem { chain_id_type generate_chain_id( const std::string& chain_id_name ); -} } // steem::protocol +} } // sophiatx::protocol namespace fc { - void to_variant( const steem::protocol::public_key_type& var, fc::variant& vo ); - void from_variant( const fc::variant& var, steem::protocol::public_key_type& vo ); - void to_variant( const steem::protocol::extended_public_key_type& var, fc::variant& vo ); - void from_variant( const fc::variant& var, steem::protocol::extended_public_key_type& vo ); - void to_variant( const steem::protocol::extended_private_key_type& var, fc::variant& vo ); - void from_variant( const fc::variant& var, steem::protocol::extended_private_key_type& vo ); + void to_variant( const sophiatx::protocol::public_key_type& var, fc::variant& vo ); + void from_variant( const fc::variant& var, sophiatx::protocol::public_key_type& vo ); + void to_variant( const sophiatx::protocol::extended_public_key_type& var, fc::variant& vo ); + void from_variant( const fc::variant& var, sophiatx::protocol::extended_public_key_type& vo ); + void to_variant( const sophiatx::protocol::extended_private_key_type& var, fc::variant& vo ); + void from_variant( const fc::variant& var, sophiatx::protocol::extended_private_key_type& vo ); } -FC_REFLECT( steem::protocol::public_key_type, (key_data) ) -FC_REFLECT( steem::protocol::public_key_type::binary_key, (data)(check) ) -FC_REFLECT( steem::protocol::extended_public_key_type, (key_data) ) -FC_REFLECT( steem::protocol::extended_public_key_type::binary_key, (check)(data) ) -FC_REFLECT( steem::protocol::extended_private_key_type, (key_data) ) -FC_REFLECT( steem::protocol::extended_private_key_type::binary_key, (check)(data) ) +FC_REFLECT( sophiatx::protocol::public_key_type, (key_data) ) +FC_REFLECT( sophiatx::protocol::public_key_type::binary_key, (data)(check) ) +FC_REFLECT( sophiatx::protocol::extended_public_key_type, (key_data) ) +FC_REFLECT( sophiatx::protocol::extended_public_key_type::binary_key, (check)(data) ) +FC_REFLECT( sophiatx::protocol::extended_private_key_type, (key_data) ) +FC_REFLECT( sophiatx::protocol::extended_private_key_type::binary_key, (check)(data) ) -FC_REFLECT_TYPENAME( steem::protocol::share_type ) +FC_REFLECT_TYPENAME( sophiatx::protocol::share_type ) -FC_REFLECT( steem::void_t, ) +FC_REFLECT( sophiatx::void_t, ) diff --git a/libraries/protocol/include/sophiatx/protocol/types_fwd.hpp b/libraries/protocol/include/sophiatx/protocol/types_fwd.hpp new file mode 100644 index 00000000..86b46469 --- /dev/null +++ b/libraries/protocol/include/sophiatx/protocol/types_fwd.hpp @@ -0,0 +1,52 @@ +#pragma once + +namespace fc { +class uint128; +class variant; +} // fc + +namespace sophiatx { namespace protocol { +template< typename Storage = fc::uint128 > +class fixed_string_impl; + +class asset_symbol_type; +class legacy_sophiatx_asset_symbol_type; +struct legacy_sophiatx_asset; +} } // sophiatx::protocol + +namespace fc { namespace raw { + +template +inline void pack( Stream& s, const uint128& u ); +template +inline void unpack( Stream& s, uint128& u ); + +template< typename Stream, typename Storage > +inline void pack( Stream& s, const sophiatx::protocol::fixed_string_impl< Storage >& u ); +template< typename Stream, typename Storage > +inline void unpack( Stream& s, sophiatx::protocol::fixed_string_impl< Storage >& u ); + +/*template< typename Stream > +inline void pack( Stream& s, const sophiatx::protocol::asset_symbol_type& sym ); +template< typename Stream > +inline void unpack( Stream& s, sophiatx::protocol::asset_symbol_type& sym ); +*/ + +template< typename Stream > +inline void pack( Stream& s, const sophiatx::protocol::legacy_sophiatx_asset_symbol_type& sym ); +template< typename Stream > +inline void unpack( Stream& s, sophiatx::protocol::legacy_sophiatx_asset_symbol_type& sym ); + +} // raw + +template< typename Storage > +inline void to_variant( const sophiatx::protocol::fixed_string_impl< Storage >& s, fc::variant& v ); +template< typename Storage > +inline void from_variant( const variant& v, sophiatx::protocol::fixed_string_impl< Storage >& s ); + +//inline void to_variant( const sophiatx::protocol::asset_symbol_type& sym, fc::variant& v ); + +inline void from_variant( const fc::variant& v, sophiatx::protocol::legacy_sophiatx_asset& leg ); +inline void to_variant( const sophiatx::protocol::legacy_sophiatx_asset& leg, fc::variant& v ); + +} // fc diff --git a/libraries/protocol/include/sophiatx/protocol/validation.hpp b/libraries/protocol/include/sophiatx/protocol/validation.hpp new file mode 100644 index 00000000..60a6ca4d --- /dev/null +++ b/libraries/protocol/include/sophiatx/protocol/validation.hpp @@ -0,0 +1,30 @@ + +#pragma once + +#include +#include +#include + +#include + +namespace sophiatx { namespace protocol { + +inline bool is_asset_type( asset asset, asset_symbol_type symbol ) +{ + return asset.symbol == symbol; +} + +inline void validate_account_name( const string& name ) +{ + auto hash = fc::base64_decode(name); + FC_ASSERT( hash.size() <= sizeof(account_name_type::data) ); + +} + +inline void validate_permlink( const string& permlink ) +{ + FC_ASSERT( permlink.size() < SOPHIATX_MAX_PERMLINK_LENGTH, "permlink is too long" ); + FC_ASSERT( fc::is_utf8( permlink ), "permlink not formatted in UTF8" ); +} + +} } diff --git a/libraries/protocol/include/steem/protocol/version.hpp b/libraries/protocol/include/sophiatx/protocol/version.hpp similarity index 80% rename from libraries/protocol/include/steem/protocol/version.hpp rename to libraries/protocol/include/sophiatx/protocol/version.hpp index 98be2b6f..59cdf27e 100644 --- a/libraries/protocol/include/steem/protocol/version.hpp +++ b/libraries/protocol/include/sophiatx/protocol/version.hpp @@ -3,10 +3,10 @@ #include #include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { /* - * This class represents the basic versioning scheme of the Steem blockchain. + * This class represents the basic versioning scheme of the SophiaTX blockchain. * All versions are a triple consisting of a major version, hardfork version, and release version. * It allows easy comparison between versions. A version is a read only object. */ @@ -66,20 +66,20 @@ struct hardfork_version_vote fc::time_point_sec hf_time; }; -} } // steem::protocol +} } // sophiatx::protocol namespace fc { class variant; - void to_variant( const steem::protocol::version& v, variant& var ); - void from_variant( const variant& var, steem::protocol::version& v ); + void to_variant( const sophiatx::protocol::version& v, variant& var ); + void from_variant( const variant& var, sophiatx::protocol::version& v ); - void to_variant( const steem::protocol::hardfork_version& hv, variant& var ); - void from_variant( const variant& var, steem::protocol::hardfork_version& hv ); + void to_variant( const sophiatx::protocol::hardfork_version& hv, variant& var ); + void from_variant( const variant& var, sophiatx::protocol::hardfork_version& hv ); } // fc #include -FC_REFLECT( steem::protocol::version, (v_num) ) -FC_REFLECT_DERIVED( steem::protocol::hardfork_version, (steem::protocol::version), ) +FC_REFLECT( sophiatx::protocol::version, (v_num) ) +FC_REFLECT_DERIVED( sophiatx::protocol::hardfork_version, (sophiatx::protocol::version), ) -FC_REFLECT( steem::protocol::hardfork_version_vote, (hf_version)(hf_time) ) +FC_REFLECT( sophiatx::protocol::hardfork_version_vote, (hf_version)(hf_time) ) diff --git a/libraries/protocol/include/steem/protocol/asset_symbol.hpp b/libraries/protocol/include/steem/protocol/asset_symbol.hpp deleted file mode 100644 index 792b13f9..00000000 --- a/libraries/protocol/include/steem/protocol/asset_symbol.hpp +++ /dev/null @@ -1,216 +0,0 @@ -#pragma once - -#include -#include - -#define STEEM_ASSET_SYMBOL_PRECISION_BITS 4 -#define SMT_MAX_NAI 99999999 -#define SMT_MIN_NAI 1 -#define SMT_MIN_NON_RESERVED_NAI 10000000 -#define STEEM_ASSET_SYMBOL_NAI_LENGTH 10 -#define STEEM_ASSET_SYMBOL_NAI_STRING_LENGTH ( STEEM_ASSET_SYMBOL_NAI_LENGTH + 2 ) - -#define STEEM_PRECISION_SBD (3) -#define STEEM_PRECISION_STEEM (3) -#define STEEM_PRECISION_VESTS (6) - -// One's place is used for check digit, which means NAI 0-9 all have NAI data of 0 which is invalid -// This space is safe to use because it would alwasys result in failure to convert from NAI -#define STEEM_NAI_SBD (1) -#define STEEM_NAI_STEEM (2) -#define STEEM_NAI_VESTS (3) - -#define STEEM_ASSET_NUM_SBD \ - (((SMT_MAX_NAI + STEEM_NAI_SBD) << STEEM_ASSET_SYMBOL_PRECISION_BITS) | STEEM_PRECISION_SBD) -#define STEEM_ASSET_NUM_STEEM \ - (((SMT_MAX_NAI + STEEM_NAI_STEEM) << STEEM_ASSET_SYMBOL_PRECISION_BITS) | STEEM_PRECISION_STEEM) -#define STEEM_ASSET_NUM_VESTS \ - (((SMT_MAX_NAI + STEEM_NAI_VESTS) << STEEM_ASSET_SYMBOL_PRECISION_BITS) | STEEM_PRECISION_VESTS) - -#ifdef IS_TEST_NET - -#define VESTS_SYMBOL_U64 (uint64_t('V') | (uint64_t('E') << 8) | (uint64_t('S') << 16) | (uint64_t('T') << 24) | (uint64_t('S') << 32)) -#define STEEM_SYMBOL_U64 (uint64_t('T') | (uint64_t('E') << 8) | (uint64_t('S') << 16) | (uint64_t('T') << 24) | (uint64_t('S') << 32)) -#define SBD_SYMBOL_U64 (uint64_t('T') | (uint64_t('B') << 8) | (uint64_t('D') << 16)) - -#else - -#define VESTS_SYMBOL_U64 (uint64_t('V') | (uint64_t('E') << 8) | (uint64_t('S') << 16) | (uint64_t('T') << 24) | (uint64_t('S') << 32)) -#define STEEM_SYMBOL_U64 (uint64_t('S') | (uint64_t('T') << 8) | (uint64_t('E') << 16) | (uint64_t('E') << 24) | (uint64_t('M') << 32)) -#define SBD_SYMBOL_U64 (uint64_t('S') | (uint64_t('B') << 8) | (uint64_t('D') << 16)) - -#endif - -#define VESTS_SYMBOL_SER (uint64_t(6) | (VESTS_SYMBOL_U64 << 8)) ///< VESTS|VESTS with 6 digits of precision -#define STEEM_SYMBOL_SER (uint64_t(3) | (STEEM_SYMBOL_U64 << 8)) ///< STEEM|TESTS with 3 digits of precision -#define SBD_SYMBOL_SER (uint64_t(3) | (SBD_SYMBOL_U64 << 8)) ///< SBD|TBD with 3 digits of precision - -#define STEEM_ASSET_MAX_DECIMALS 12 - -namespace steem { namespace protocol { - -class asset_symbol_type -{ - public: - enum asset_symbol_space - { - legacy_space = 1, - smt_nai_space = 2 - }; - - asset_symbol_type() {} - - // buf must have space for STEEM_ASSET_SYMBOL_MAX_LENGTH+1 - static asset_symbol_type from_string( const std::string& str ); - static asset_symbol_type from_nai_string( const char* buf, uint8_t decimal_places ); - static asset_symbol_type from_asset_num( uint32_t asset_num ) - { asset_symbol_type result; result.asset_num = asset_num; return result; } - static uint32_t asset_num_from_nai( uint32_t nai, uint8_t decimal_places ); - static asset_symbol_type from_nai( uint32_t nai, uint8_t decimal_places ) - { return from_asset_num( asset_num_from_nai( nai, decimal_places ) ); } - - std::string to_string()const; - - void to_nai_string( char* buf )const; - std::string to_nai_string()const - { - char buf[ STEEM_ASSET_SYMBOL_NAI_STRING_LENGTH ]; - to_nai_string( buf ); - return std::string( buf ); - } - - uint32_t to_nai()const; - - /**Returns true when symbol represents vesting variant of the token, - * false for liquid one. - */ - bool is_vesting() const; - /**Returns vesting symbol when called from liquid one - * and liquid symbol when called from vesting one. - * Returns back the SBD symbol if represents SBD. - */ - asset_symbol_type get_paired_symbol() const; - - asset_symbol_space space()const; - uint8_t decimals()const - { return uint8_t( asset_num & 0x0F ); } - void validate()const; - - friend bool operator == ( const asset_symbol_type& a, const asset_symbol_type& b ) - { return (a.asset_num == b.asset_num); } - friend bool operator != ( const asset_symbol_type& a, const asset_symbol_type& b ) - { return (a.asset_num != b.asset_num); } - friend bool operator < ( const asset_symbol_type& a, const asset_symbol_type& b ) - { return (a.asset_num < b.asset_num); } - friend bool operator > ( const asset_symbol_type& a, const asset_symbol_type& b ) - { return (a.asset_num > b.asset_num); } - friend bool operator <= ( const asset_symbol_type& a, const asset_symbol_type& b ) - { return (a.asset_num <= b.asset_num); } - friend bool operator >= ( const asset_symbol_type& a, const asset_symbol_type& b ) - { return (a.asset_num >= b.asset_num); } - - uint32_t asset_num = 0; -}; - -} } // steem::protocol - -FC_REFLECT(steem::protocol::asset_symbol_type, (asset_num)) - -namespace fc { namespace raw { - -// Legacy serialization of assets -// 0000pppp aaaaaaaa bbbbbbbb cccccccc dddddddd eeeeeeee ffffffff 00000000 -// Symbol = abcdef -// -// NAI serialization of assets -// aaa1pppp bbbbbbbb cccccccc dddddddd -// NAI = (MSB to LSB) dddddddd cccccccc bbbbbbbb aaa -// -// NAI internal storage of legacy assets - -template< typename Stream > -inline void pack( Stream& s, const steem::protocol::asset_symbol_type& sym ) -{ - switch( sym.space() ) - { - case steem::protocol::asset_symbol_type::legacy_space: - { - uint64_t ser = 0; - switch( sym.asset_num ) - { - case STEEM_ASSET_NUM_STEEM: - ser = STEEM_SYMBOL_SER; - break; - case STEEM_ASSET_NUM_SBD: - ser = SBD_SYMBOL_SER; - break; - case STEEM_ASSET_NUM_VESTS: - ser = VESTS_SYMBOL_SER; - break; - default: - FC_ASSERT( false, "Cannot serialize unknown asset symbol" ); - } - pack( s, ser ); - break; - } - case steem::protocol::asset_symbol_type::smt_nai_space: - pack( s, sym.asset_num ); - break; - default: - FC_ASSERT( false, "Cannot serialize unknown asset symbol" ); - } -} - -template< typename Stream > -inline void unpack( Stream& s, steem::protocol::asset_symbol_type& sym ) -{ - uint64_t ser = 0; - s.read( (char*) &ser, 4 ); - - switch( ser ) - { - case STEEM_SYMBOL_SER & 0xFFFFFFFF: - s.read( ((char*) &ser)+4, 4 ); - FC_ASSERT( ser == STEEM_SYMBOL_SER, "invalid asset bits" ); - sym.asset_num = STEEM_ASSET_NUM_STEEM; - break; - case SBD_SYMBOL_SER & 0xFFFFFFFF: - s.read( ((char*) &ser)+4, 4 ); - FC_ASSERT( ser == SBD_SYMBOL_SER, "invalid asset bits" ); - sym.asset_num = STEEM_ASSET_NUM_SBD; - break; - case VESTS_SYMBOL_SER & 0xFFFFFFFF: - s.read( ((char*) &ser)+4, 4 ); - FC_ASSERT( ser == VESTS_SYMBOL_SER, "invalid asset bits" ); - sym.asset_num = STEEM_ASSET_NUM_VESTS; - break; - default: - sym.asset_num = uint32_t( ser ); - } - sym.validate(); -} - -} // fc::raw - -inline void to_variant( const steem::protocol::asset_symbol_type& sym, fc::variant& var ) -{ - try - { - std::vector< variant > v( 2 ); - v[0] = sym.decimals(); - v[1] = sym.to_nai_string(); - } FC_CAPTURE_AND_RETHROW() -} - -inline void from_variant( const fc::variant& var, steem::protocol::asset_symbol_type& sym ) -{ - try - { - auto v = var.as< std::vector< variant > >(); - FC_ASSERT( v.size() == 2, "Expected tuple of length 2." ); - - sym = steem::protocol::asset_symbol_type::from_nai_string( v[1].as< std::string >().c_str(), v[0].as< uint8_t >() ); - } FC_CAPTURE_AND_RETHROW() -} - -} // fc diff --git a/libraries/protocol/include/steem/protocol/base.hpp b/libraries/protocol/include/steem/protocol/base.hpp deleted file mode 100644 index c83131ac..00000000 --- a/libraries/protocol/include/steem/protocol/base.hpp +++ /dev/null @@ -1,45 +0,0 @@ -#pragma once - -#include -#include -#include - -#include - -namespace steem { namespace protocol { - - struct base_operation - { - void get_required_authorities( vector& )const {} - void get_required_active_authorities( flat_set& )const {} - void get_required_posting_authorities( flat_set& )const {} - void get_required_owner_authorities( flat_set& )const {} - - bool is_virtual()const { return false; } - void validate()const {} - }; - - struct virtual_operation : public base_operation - { - bool is_virtual()const { return true; } - void validate()const { FC_ASSERT( false, "This is a virtual operation" ); } - }; - - typedef static_variant< - void_t, - version, // Normal witness version reporting, for diagnostics and voting - hardfork_version_vote // Voting for the next hardfork to trigger - > block_header_extensions; - - typedef static_variant< - void_t - > future_extensions; - - typedef flat_set block_header_extensions_type; - typedef flat_set extensions_type; - - -} } // steem::protocol - -FC_REFLECT_TYPENAME( steem::protocol::block_header_extensions ) -FC_REFLECT_TYPENAME( steem::protocol::future_extensions ) diff --git a/libraries/protocol/include/steem/protocol/block.hpp b/libraries/protocol/include/steem/protocol/block.hpp deleted file mode 100644 index a7a4ee5c..00000000 --- a/libraries/protocol/include/steem/protocol/block.hpp +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once -#include -#include - -namespace steem { namespace protocol { - - struct signed_block : public signed_block_header - { - checksum_type calculate_merkle_root()const; - vector transactions; - }; - -} } // steem::protocol - -FC_REFLECT_DERIVED( steem::protocol::signed_block, (steem::protocol::signed_block_header), (transactions) ) diff --git a/libraries/protocol/include/steem/protocol/config.hpp b/libraries/protocol/include/steem/protocol/config.hpp deleted file mode 100644 index 3c48d9d3..00000000 --- a/libraries/protocol/include/steem/protocol/config.hpp +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Copyright (c) 2016 Steemit, Inc., and contributors. - */ -#pragma once -#include - -// WARNING! -// Every symbol defined here needs to be handled appropriately in get_config.cpp -// This is checked by get_config_check.sh called from Dockerfile - -#ifdef IS_TEST_NET -#define STEEM_BLOCKCHAIN_VERSION ( version(0, 21, 0) ) - -#define STEEM_INIT_PRIVATE_KEY (fc::ecc::private_key::regenerate(fc::sha256::hash(std::string("init_key")))) -#define STEEM_INIT_PUBLIC_KEY_STR (std::string( steem::protocol::public_key_type(STEEM_INIT_PRIVATE_KEY.get_public_key()) )) -#define STEEM_CHAIN_ID_NAME "testnet" -#define STEEM_CHAIN_ID (fc::sha256::hash(STEEM_CHAIN_ID_NAME)) -#define STEEM_ADDRESS_PREFIX "TST" - -#define STEEM_GENESIS_TIME (fc::time_point_sec(1451606400)) -#define STEEM_MINING_TIME (fc::time_point_sec(1451606400)) -#define STEEM_CASHOUT_WINDOW_SECONDS (60*60) /// 1 hr -#define STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF12 (STEEM_CASHOUT_WINDOW_SECONDS) -#define STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF17 (STEEM_CASHOUT_WINDOW_SECONDS) -#define STEEM_SECOND_CASHOUT_WINDOW (60*60*24*3) /// 3 days -#define STEEM_MAX_CASHOUT_WINDOW_SECONDS (60*60*24) /// 1 day -#define STEEM_UPVOTE_LOCKOUT_HF7 (fc::minutes(1)) -#define STEEM_UPVOTE_LOCKOUT_HF17 (fc::minutes(5)) - - -#define STEEM_MIN_ACCOUNT_CREATION_FEE 0 - -#define STEEM_OWNER_AUTH_RECOVERY_PERIOD fc::seconds(60) -#define STEEM_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD fc::seconds(12) -#define STEEM_OWNER_UPDATE_LIMIT fc::seconds(0) -#define STEEM_OWNER_AUTH_HISTORY_TRACKING_START_BLOCK_NUM 1 - -#define STEEM_INIT_SUPPLY (int64_t( 250 ) * int64_t( 1000000 ) * int64_t( 1000 )) - -/// Allows to limit number of total produced blocks. -#define TESTNET_BLOCK_LIMIT (3000000) - -#else // IS LIVE STEEM NETWORK - -#define STEEM_BLOCKCHAIN_VERSION ( version(0, 19, 4) ) - -#define STEEM_INIT_PUBLIC_KEY_STR "STM8GC13uCZbP44HzMLV6zPZGwVQ8Nt4Kji8PapsPiNq1BK153XTX" -#define STEEM_CHAIN_ID_NAME "" -#define STEEM_CHAIN_ID fc::sha256() -#define STEEM_ADDRESS_PREFIX "STM" - -#define STEEM_GENESIS_TIME (fc::time_point_sec(1458835200)) -#define STEEM_MINING_TIME (fc::time_point_sec(1458838800)) -#define STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF12 (60*60*24) /// 1 day -#define STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF17 (60*60*12) /// 12 hours -#define STEEM_CASHOUT_WINDOW_SECONDS (60*60*24*7) /// 7 days -#define STEEM_SECOND_CASHOUT_WINDOW (60*60*24*30) /// 30 days -#define STEEM_MAX_CASHOUT_WINDOW_SECONDS (60*60*24*14) /// 2 weeks -#define STEEM_UPVOTE_LOCKOUT_HF7 (fc::minutes(1)) -#define STEEM_UPVOTE_LOCKOUT_HF17 (fc::hours(12)) - -#define STEEM_MIN_ACCOUNT_CREATION_FEE 1 - -#define STEEM_OWNER_AUTH_RECOVERY_PERIOD fc::days(30) -#define STEEM_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD fc::days(1) -#define STEEM_OWNER_UPDATE_LIMIT fc::minutes(60) -#define STEEM_OWNER_AUTH_HISTORY_TRACKING_START_BLOCK_NUM 3186477 - -#define STEEM_INIT_SUPPLY int64_t(0) - -#endif - -#define VESTS_SYMBOL (steem::protocol::asset_symbol_type::from_asset_num( STEEM_ASSET_NUM_VESTS ) ) -#define STEEM_SYMBOL (steem::protocol::asset_symbol_type::from_asset_num( STEEM_ASSET_NUM_STEEM ) ) -#define SBD_SYMBOL (steem::protocol::asset_symbol_type::from_asset_num( STEEM_ASSET_NUM_SBD ) ) - -#define STEEM_BLOCKCHAIN_HARDFORK_VERSION ( hardfork_version( STEEM_BLOCKCHAIN_VERSION ) ) - -#define STEEM_BLOCK_INTERVAL 3 -#define STEEM_BLOCKS_PER_YEAR (365*24*60*60/STEEM_BLOCK_INTERVAL) -#define STEEM_BLOCKS_PER_DAY (24*60*60/STEEM_BLOCK_INTERVAL) -#define STEEM_START_VESTING_BLOCK (STEEM_BLOCKS_PER_DAY * 7) -#define STEEM_START_MINER_VOTING_BLOCK (STEEM_BLOCKS_PER_DAY * 30) - -#define STEEM_INIT_MINER_NAME "initminer" -#define STEEM_NUM_INIT_MINERS 1 -#define STEEM_INIT_TIME (fc::time_point_sec()); - -#define STEEM_MAX_WITNESSES 21 - -#define STEEM_MAX_VOTED_WITNESSES_HF0 19 -#define STEEM_MAX_MINER_WITNESSES_HF0 1 -#define STEEM_MAX_RUNNER_WITNESSES_HF0 1 - -#define STEEM_MAX_VOTED_WITNESSES_HF17 20 -#define STEEM_MAX_MINER_WITNESSES_HF17 0 -#define STEEM_MAX_RUNNER_WITNESSES_HF17 1 - -#define STEEM_HARDFORK_REQUIRED_WITNESSES 17 // 17 of the 21 dpos witnesses (20 elected and 1 virtual time) required for hardfork. This guarantees 75% participation on all subsequent rounds. -#define STEEM_MAX_TIME_UNTIL_EXPIRATION (60*60) // seconds, aka: 1 hour -#define STEEM_MAX_MEMO_SIZE 2048 -#define STEEM_MAX_PROXY_RECURSION_DEPTH 4 -#define STEEM_VESTING_WITHDRAW_INTERVALS_PRE_HF_16 104 -#define STEEM_VESTING_WITHDRAW_INTERVALS 13 -#define STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS (60*60*24*7) /// 1 week per interval -#define STEEM_MAX_WITHDRAW_ROUTES 10 -#define STEEM_SAVINGS_WITHDRAW_TIME (fc::days(3)) -#define STEEM_SAVINGS_WITHDRAW_REQUEST_LIMIT 100 -#define STEEM_VOTE_REGENERATION_SECONDS (5*60*60*24) // 5 day -#define STEEM_MAX_VOTE_CHANGES 5 -#define STEEM_REVERSE_AUCTION_WINDOW_SECONDS (60*30) /// 30 minutes -#define STEEM_MIN_VOTE_INTERVAL_SEC 3 -#define STEEM_VOTE_DUST_THRESHOLD (50000000) - -#define STEEM_MIN_ROOT_COMMENT_INTERVAL (fc::seconds(60*5)) // 5 minutes -#define STEEM_MIN_REPLY_INTERVAL (fc::seconds(20)) // 20 seconds -#define STEEM_POST_AVERAGE_WINDOW (60*60*24u) // 1 day -#define STEEM_POST_WEIGHT_CONSTANT (uint64_t(4*STEEM_100_PERCENT) * (4*STEEM_100_PERCENT))// (4*STEEM_100_PERCENT) -> 2 posts per 1 days, average 1 every 12 hours - -#define STEEM_MAX_ACCOUNT_WITNESS_VOTES 30 - -#define STEEM_100_PERCENT 10000 -#define STEEM_1_PERCENT (STEEM_100_PERCENT/100) -#define STEEM_DEFAULT_SBD_INTEREST_RATE (10*STEEM_1_PERCENT) ///< 10% APR - -#define STEEM_INFLATION_RATE_START_PERCENT (978) // Fixes block 7,000,000 to 9.5% -#define STEEM_INFLATION_RATE_STOP_PERCENT (95) // 0.95% -#define STEEM_INFLATION_NARROWING_PERIOD (250000) // Narrow 0.01% every 250k blocks -#define STEEM_CONTENT_REWARD_PERCENT (75*STEEM_1_PERCENT) //75% of inflation, 7.125% inflation -#define STEEM_VESTING_FUND_PERCENT (15*STEEM_1_PERCENT) //15% of inflation, 1.425% inflation - -#define STEEM_MINER_PAY_PERCENT (STEEM_1_PERCENT) // 1% -#define STEEM_MAX_RATION_DECAY_RATE (1000000) - -#define STEEM_BANDWIDTH_AVERAGE_WINDOW_SECONDS (60*60*24*7) ///< 1 week -#define STEEM_BANDWIDTH_PRECISION (uint64_t(1000000)) ///< 1 million -#define STEEM_MAX_COMMENT_DEPTH_PRE_HF17 6 -#define STEEM_MAX_COMMENT_DEPTH 0xffff // 64k -#define STEEM_SOFT_MAX_COMMENT_DEPTH 0xff // 255 - -#define STEEM_MAX_RESERVE_RATIO (20000) - -#define STEEM_CREATE_ACCOUNT_WITH_STEEM_MODIFIER 30 -#define STEEM_CREATE_ACCOUNT_DELEGATION_RATIO 5 -#define STEEM_CREATE_ACCOUNT_DELEGATION_TIME fc::days(30) - -#define STEEM_MINING_REWARD asset( 1000, STEEM_SYMBOL ) -#define STEEM_EQUIHASH_N 140 -#define STEEM_EQUIHASH_K 6 - -#define STEEM_LIQUIDITY_TIMEOUT_SEC (fc::seconds(60*60*24*7)) // After one week volume is set to 0 -#define STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC (fc::seconds(60)) // 1 minute required on books to receive volume -#define STEEM_LIQUIDITY_REWARD_PERIOD_SEC (60*60) -#define STEEM_LIQUIDITY_REWARD_BLOCKS (STEEM_LIQUIDITY_REWARD_PERIOD_SEC/STEEM_BLOCK_INTERVAL) -#define STEEM_MIN_LIQUIDITY_REWARD (asset( 1000*STEEM_LIQUIDITY_REWARD_BLOCKS, STEEM_SYMBOL )) // Minumum reward to be paid out to liquidity providers -#define STEEM_MIN_CONTENT_REWARD STEEM_MINING_REWARD -#define STEEM_MIN_CURATE_REWARD STEEM_MINING_REWARD -#define STEEM_MIN_PRODUCER_REWARD STEEM_MINING_REWARD -#define STEEM_MIN_POW_REWARD STEEM_MINING_REWARD - -#define STEEM_ACTIVE_CHALLENGE_FEE asset( 2000, STEEM_SYMBOL ) -#define STEEM_OWNER_CHALLENGE_FEE asset( 30000, STEEM_SYMBOL ) -#define STEEM_ACTIVE_CHALLENGE_COOLDOWN fc::days(1) -#define STEEM_OWNER_CHALLENGE_COOLDOWN fc::days(1) - -#define STEEM_POST_REWARD_FUND_NAME ("post") -#define STEEM_COMMENT_REWARD_FUND_NAME ("comment") -#define STEEM_RECENT_RSHARES_DECAY_TIME_HF17 (fc::days(30)) -#define STEEM_RECENT_RSHARES_DECAY_TIME_HF19 (fc::days(15)) -#define STEEM_CONTENT_CONSTANT_HF0 (uint128_t(uint64_t(2000000000000ll))) -// note, if redefining these constants make sure calculate_claims doesn't overflow - -// 5ccc e802 de5f -// int(expm1( log1p( 1 ) / BLOCKS_PER_YEAR ) * 2**STEEM_APR_PERCENT_SHIFT_PER_BLOCK / 100000 + 0.5) -// we use 100000 here instead of 10000 because we end up creating an additional 9x for vesting -#define STEEM_APR_PERCENT_MULTIPLY_PER_BLOCK ( (uint64_t( 0x5ccc ) << 0x20) \ - | (uint64_t( 0xe802 ) << 0x10) \ - | (uint64_t( 0xde5f ) ) \ - ) -// chosen to be the maximal value such that STEEM_APR_PERCENT_MULTIPLY_PER_BLOCK * 2**64 * 100000 < 2**128 -#define STEEM_APR_PERCENT_SHIFT_PER_BLOCK 87 - -#define STEEM_APR_PERCENT_MULTIPLY_PER_ROUND ( (uint64_t( 0x79cc ) << 0x20 ) \ - | (uint64_t( 0xf5c7 ) << 0x10 ) \ - | (uint64_t( 0x3480 ) ) \ - ) - -#define STEEM_APR_PERCENT_SHIFT_PER_ROUND 83 - -// We have different constants for hourly rewards -// i.e. hex(int(math.expm1( math.log1p( 1 ) / HOURS_PER_YEAR ) * 2**STEEM_APR_PERCENT_SHIFT_PER_HOUR / 100000 + 0.5)) -#define STEEM_APR_PERCENT_MULTIPLY_PER_HOUR ( (uint64_t( 0x6cc1 ) << 0x20) \ - | (uint64_t( 0x39a1 ) << 0x10) \ - | (uint64_t( 0x5cbd ) ) \ - ) - -// chosen to be the maximal value such that STEEM_APR_PERCENT_MULTIPLY_PER_HOUR * 2**64 * 100000 < 2**128 -#define STEEM_APR_PERCENT_SHIFT_PER_HOUR 77 - -// These constants add up to GRAPHENE_100_PERCENT. Each GRAPHENE_1_PERCENT is equivalent to 1% per year APY -// *including the corresponding 9x vesting rewards* -#define STEEM_CURATE_APR_PERCENT 3875 -#define STEEM_CONTENT_APR_PERCENT 3875 -#define STEEM_LIQUIDITY_APR_PERCENT 750 -#define STEEM_PRODUCER_APR_PERCENT 750 -#define STEEM_POW_APR_PERCENT 750 - -#define STEEM_MIN_PAYOUT_SBD (asset(20,SBD_SYMBOL)) - -#define STEEM_SBD_STOP_PERCENT (5*STEEM_1_PERCENT ) // Stop printing SBD at 5% Market Cap -#define STEEM_SBD_START_PERCENT (2*STEEM_1_PERCENT) // Start reducing printing of SBD at 2% Market Cap - -#define STEEM_MIN_ACCOUNT_NAME_LENGTH 3 -#define STEEM_MAX_ACCOUNT_NAME_LENGTH 16 - -#define STEEM_MIN_PERMLINK_LENGTH 0 -#define STEEM_MAX_PERMLINK_LENGTH 256 -#define STEEM_MAX_WITNESS_URL_LENGTH 2048 - -#define STEEM_MAX_SHARE_SUPPLY int64_t(1000000000000000ll) -#define STEEM_MAX_SATOSHIS int64_t(4611686018427387903ll) -#define STEEM_MAX_SIG_CHECK_DEPTH 2 - -#define STEEM_MIN_TRANSACTION_SIZE_LIMIT 1024 -#define STEEM_SECONDS_PER_YEAR (uint64_t(60*60*24*365ll)) - -#define STEEM_SBD_INTEREST_COMPOUND_INTERVAL_SEC (60*60*24*30) -#define STEEM_MAX_TRANSACTION_SIZE (1024*64) -#define STEEM_MIN_BLOCK_SIZE_LIMIT (STEEM_MAX_TRANSACTION_SIZE) -#define STEEM_MAX_BLOCK_SIZE (STEEM_MAX_TRANSACTION_SIZE*STEEM_BLOCK_INTERVAL*2000) -#define STEEM_SOFT_MAX_BLOCK_SIZE (2*1024*1024) -#define STEEM_MIN_BLOCK_SIZE 115 -#define STEEM_BLOCKS_PER_HOUR (60*60/STEEM_BLOCK_INTERVAL) -#define STEEM_FEED_INTERVAL_BLOCKS (STEEM_BLOCKS_PER_HOUR) -#define STEEM_FEED_HISTORY_WINDOW_PRE_HF_16 (24*7) /// 7 days * 24 hours per day -#define STEEM_FEED_HISTORY_WINDOW (12*7) // 3.5 days -#define STEEM_MAX_FEED_AGE_SECONDS (60*60*24*7) // 7 days -#define STEEM_MIN_FEEDS (STEEM_MAX_WITNESSES/3) /// protects the network from conversions before price has been established -#define STEEM_CONVERSION_DELAY_PRE_HF_16 (fc::days(7)) -#define STEEM_CONVERSION_DELAY (fc::hours(STEEM_FEED_HISTORY_WINDOW)) //3.5 day conversion - -#define STEEM_MIN_UNDO_HISTORY 10 -#define STEEM_MAX_UNDO_HISTORY 10000 - -#define STEEM_MIN_TRANSACTION_EXPIRATION_LIMIT (STEEM_BLOCK_INTERVAL * 5) // 5 transactions per block -#define STEEM_BLOCKCHAIN_PRECISION uint64_t( 1000 ) - -#define STEEM_BLOCKCHAIN_PRECISION_DIGITS 3 -#define STEEM_MAX_INSTANCE_ID (uint64_t(-1)>>16) -/** NOTE: making this a power of 2 (say 2^15) would greatly accelerate fee calcs */ -#define STEEM_MAX_AUTHORITY_MEMBERSHIP 10 -#define STEEM_MAX_ASSET_WHITELIST_AUTHORITIES 10 -#define STEEM_MAX_URL_LENGTH 127 - -#define STEEM_IRREVERSIBLE_THRESHOLD (75 * STEEM_1_PERCENT) - -#define STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH ( fc::uint128(uint64_t(-1)) ) -#define STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH2 ( fc::uint128::max_value() ) - -#define STEEM_INITIAL_VOTE_POWER_RATE (40) -#define STEEM_REDUCED_VOTE_POWER_RATE (10) - -/** - * Reserved Account IDs with special meaning - */ -///@{ -/// Represents the current witnesses -#define STEEM_MINER_ACCOUNT "miners" -/// Represents the canonical account with NO authority (nobody can access funds in null account) -#define STEEM_NULL_ACCOUNT "null" -/// Represents the canonical account with WILDCARD authority (anybody can access funds in temp account) -#define STEEM_TEMP_ACCOUNT "temp" -/// Represents the canonical account for specifying you will vote for directly (as opposed to a proxy) -#define STEEM_PROXY_TO_SELF_ACCOUNT "" -/// Represents the canonical root post parent account -#define STEEM_ROOT_POST_PARENT (account_name_type()) -///@} - -#ifdef STEEM_ENABLE_SMT - -#define SMT_MAX_VOTABLE_ASSETS 2 -#define SMT_VESTING_WITHDRAW_INTERVAL_SECONDS (60*60*24*7) /// 1 week per interval -#define SMT_UPVOTE_LOCKOUT (60*60*12) /// 12 hours - -#endif /// STEEM_ENABLE_SMT - diff --git a/libraries/protocol/include/steem/protocol/legacy_asset.hpp b/libraries/protocol/include/steem/protocol/legacy_asset.hpp deleted file mode 100644 index d0351f67..00000000 --- a/libraries/protocol/include/steem/protocol/legacy_asset.hpp +++ /dev/null @@ -1,129 +0,0 @@ -#pragma once - -#include - -#define STEEM_SYMBOL_LEGACY_SER_1 (uint64_t(1) | (STEEM_SYMBOL_U64 << 8)) -#define STEEM_SYMBOL_LEGACY_SER_2 (uint64_t(2) | (STEEM_SYMBOL_U64 << 8)) -#define STEEM_SYMBOL_LEGACY_SER_3 (uint64_t(5) | (STEEM_SYMBOL_U64 << 8)) -#define STEEM_SYMBOL_LEGACY_SER_4 (uint64_t(3) | (uint64_t('0') << 8) | (uint64_t('.') << 16) | (uint64_t('0') << 24) | (uint64_t('0') << 32) | (uint64_t('1') << 40)) -#define STEEM_SYMBOL_LEGACY_SER_5 (uint64_t(3) | (uint64_t('6') << 8) | (uint64_t('.') << 16) | (uint64_t('0') << 24) | (uint64_t('0') << 32) | (uint64_t('0') << 40)) - -namespace steem { namespace protocol { - -class legacy_steem_asset_symbol_type -{ - public: - legacy_steem_asset_symbol_type() {} - - bool is_canon()const - { return ( ser == STEEM_SYMBOL_SER ); } - - uint64_t ser = STEEM_SYMBOL_SER; -}; - -struct legacy_steem_asset -{ - public: - legacy_steem_asset() {} - - template< bool force_canon > - asset to_asset()const - { - if( force_canon ) - { - FC_ASSERT( symbol.is_canon(), "Must use canonical STEEM symbol serialization" ); - } - return asset( amount, STEEM_SYMBOL ); - } - - static legacy_steem_asset from_amount( share_type amount ) - { - legacy_steem_asset leg; - leg.amount = amount; - return leg; - } - - static legacy_steem_asset from_asset( const asset& a ) - { - FC_ASSERT( a.symbol == STEEM_SYMBOL ); - return from_amount( a.amount ); - } - - share_type amount; - legacy_steem_asset_symbol_type symbol; -}; - -} } - -namespace fc { namespace raw { - -template< typename Stream > -inline void pack( Stream& s, const steem::protocol::legacy_steem_asset_symbol_type& sym ) -{ - switch( sym.ser ) - { - case STEEM_SYMBOL_LEGACY_SER_1: - case STEEM_SYMBOL_LEGACY_SER_2: - case STEEM_SYMBOL_LEGACY_SER_3: - case STEEM_SYMBOL_LEGACY_SER_4: - case STEEM_SYMBOL_LEGACY_SER_5: - wlog( "pack legacy serialization ${s}", ("s", sym.ser) ); - case STEEM_SYMBOL_SER: - pack( s, sym.ser ); - break; - default: - FC_ASSERT( false, "Cannot serialize legacy symbol ${s}", ("s", sym.ser) ); - } -} - -template< typename Stream > -inline void unpack( Stream& s, steem::protocol::legacy_steem_asset_symbol_type& sym ) -{ - // 994240: "account_creation_fee": "0.1 STEEM" - // 1021529: "account_creation_fee": "10.0 STEEM" - // 3143833: "account_creation_fee": "3.00000 STEEM" - // 3208405: "account_creation_fee": "2.00000 STEEM" - // 3695672: "account_creation_fee": "3.00 STEEM" - // 4338089: "account_creation_fee": "0.001 0.001" - // 4626205: "account_creation_fee": "6.000 6.000" - // 4632595: "account_creation_fee": "6.000 6.000" - - uint64_t ser = 0; - - fc::raw::unpack( s, ser ); - switch( ser ) - { - case STEEM_SYMBOL_LEGACY_SER_1: - case STEEM_SYMBOL_LEGACY_SER_2: - case STEEM_SYMBOL_LEGACY_SER_3: - case STEEM_SYMBOL_LEGACY_SER_4: - case STEEM_SYMBOL_LEGACY_SER_5: - wlog( "unpack legacy serialization ${s}", ("s", ser) ); - case STEEM_SYMBOL_SER: - sym.ser = ser; - break; - default: - FC_ASSERT( false, "Cannot deserialize legacy symbol ${s}", ("s", ser) ); - } -} - -} // fc::raw - -inline void to_variant( const steem::protocol::legacy_steem_asset& leg, fc::variant& v ) -{ - to_variant( leg.to_asset(), v ); -} - -inline void from_variant( const fc::variant& v, steem::protocol::legacy_steem_asset& leg ) -{ - steem::protocol::asset a; - from_variant( v, a ); - leg = steem::protocol::legacy_steem_asset::from_asset( a ); -} - -} // fc - -FC_REFLECT( steem::protocol::legacy_steem_asset, - (amount) - (symbol) - ) diff --git a/libraries/protocol/include/steem/protocol/operations.hpp b/libraries/protocol/include/steem/protocol/operations.hpp deleted file mode 100644 index 08364e5f..00000000 --- a/libraries/protocol/include/steem/protocol/operations.hpp +++ /dev/null @@ -1,120 +0,0 @@ -#pragma once - -#include - -#include -#include -#include -#include - -namespace steem { namespace protocol { - - /** NOTE: do not change the order of any operations prior to the virtual operations - * or it will trigger a hardfork. - */ - typedef fc::static_variant< - vote_operation, - comment_operation, - - transfer_operation, - transfer_to_vesting_operation, - withdraw_vesting_operation, - - limit_order_create_operation, - limit_order_cancel_operation, - - feed_publish_operation, - convert_operation, - - account_create_operation, - account_update_operation, - - witness_update_operation, - account_witness_vote_operation, - account_witness_proxy_operation, - - pow_operation, - - custom_operation, - - report_over_production_operation, - - delete_comment_operation, - custom_json_operation, - comment_options_operation, - set_withdraw_vesting_route_operation, - limit_order_create2_operation, - placeholder_a_operation, // A new op can go here - placeholder_b_operation, // A new op can go here - request_account_recovery_operation, - recover_account_operation, - change_recovery_account_operation, - escrow_transfer_operation, - escrow_dispute_operation, - escrow_release_operation, - pow2_operation, - escrow_approve_operation, - transfer_to_savings_operation, - transfer_from_savings_operation, - cancel_transfer_from_savings_operation, - custom_binary_operation, - decline_voting_rights_operation, - reset_account_operation, - set_reset_account_operation, - claim_reward_balance_operation, -#ifdef STEEM_ENABLE_SMT - claim_reward_balance2_operation, -#endif - delegate_vesting_shares_operation, - account_create_with_delegation_operation, - witness_set_properties_operation, - -#ifdef STEEM_ENABLE_SMT - /// SMT operations - smt_setup_operation, - smt_cap_reveal_operation, - smt_refund_operation, - smt_setup_emissions_operation, - smt_set_setup_parameters_operation, - smt_set_runtime_parameters_operation, - smt_create_operation, -#endif - /// virtual operations below this point - fill_convert_request_operation, - author_reward_operation, - curation_reward_operation, - comment_reward_operation, - liquidity_reward_operation, - interest_operation, - fill_vesting_withdraw_operation, - fill_order_operation, - shutdown_witness_operation, - fill_transfer_from_savings_operation, - hardfork_operation, - comment_payout_update_operation, - return_vesting_delegation_operation, - comment_benefactor_reward_operation, - producer_reward_operation - > operation; - - /*void operation_get_required_authorities( const operation& op, - flat_set& active, - flat_set& owner, - flat_set& posting, - vector& other ); - - void operation_validate( const operation& op );*/ - - bool is_market_operation( const operation& op ); - - bool is_virtual_operation( const operation& op ); - -} } // steem::protocol - -/*namespace fc { - void to_variant( const steem::protocol::operation& var, fc::variant& vo ); - void from_variant( const fc::variant& var, steem::protocol::operation& vo ); -}*/ - -STEEM_DECLARE_OPERATION_TYPE( steem::protocol::operation ) -FC_REFLECT_TYPENAME( steem::protocol::operation ) diff --git a/libraries/protocol/include/steem/protocol/protocol.hpp b/libraries/protocol/include/steem/protocol/protocol.hpp deleted file mode 100644 index 29ef4228..00000000 --- a/libraries/protocol/include/steem/protocol/protocol.hpp +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -#include diff --git a/libraries/protocol/include/steem/protocol/steem_operations.hpp b/libraries/protocol/include/steem/protocol/steem_operations.hpp deleted file mode 100644 index 81c7adbe..00000000 --- a/libraries/protocol/include/steem/protocol/steem_operations.hpp +++ /dev/null @@ -1,1140 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include - -#include - -namespace steem { namespace protocol { - - struct account_create_operation : public base_operation - { - asset fee; - account_name_type creator; - account_name_type new_account_name; - authority owner; - authority active; - authority posting; - public_key_type memo_key; - string json_metadata; - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(creator); } - }; - - - struct account_create_with_delegation_operation : public base_operation - { - asset fee; - asset delegation; - account_name_type creator; - account_name_type new_account_name; - authority owner; - authority active; - authority posting; - public_key_type memo_key; - string json_metadata; - - extensions_type extensions; - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(creator); } - }; - - - struct account_update_operation : public base_operation - { - account_name_type account; - optional< authority > owner; - optional< authority > active; - optional< authority > posting; - public_key_type memo_key; - string json_metadata; - - void validate()const; - - void get_required_owner_authorities( flat_set& a )const - { if( owner ) a.insert( account ); } - - void get_required_active_authorities( flat_set& a )const - { if( !owner ) a.insert( account ); } - }; - - - struct comment_operation : public base_operation - { - account_name_type parent_author; - string parent_permlink; - - account_name_type author; - string permlink; - - string title; - string body; - string json_metadata; - - void validate()const; - void get_required_posting_authorities( flat_set& a )const{ a.insert(author); } - }; - - struct beneficiary_route_type - { - beneficiary_route_type() {} - beneficiary_route_type( const account_name_type& a, const uint16_t& w ) : account( a ), weight( w ){} - - account_name_type account; - uint16_t weight; - - // For use by std::sort such that the route is sorted first by name (ascending) - bool operator < ( const beneficiary_route_type& o )const { return account < o.account; } - }; - - struct comment_payout_beneficiaries - { - vector< beneficiary_route_type > beneficiaries; - - void validate()const; - }; - -#ifdef STEEM_ENABLE_SMT - struct votable_asset_info_v1 - { - votable_asset_info_v1() = default; - votable_asset_info_v1(const share_type& max_payout, bool allow_rewards) : - max_accepted_payout(max_payout), allow_curation_rewards(allow_rewards) {} - - share_type max_accepted_payout = 0; - bool allow_curation_rewards = false; - }; - - typedef static_variant< votable_asset_info_v1 > votable_asset_info; - - /** Allows to store all SMT tokens being allowed to use during voting process. - * Maps asset symbol (SMT) to the vote info. - * @see SMT spec for details: https://github.com/steemit/smt-whitepaper/blob/master/smt-manual/manual.md - */ - struct allowed_vote_assets - { - /// Helper method to simplify construction of votable_asset_info. - void add_votable_asset(const asset_symbol_type& symbol, const share_type& max_accepted_payout, - bool allow_curation_rewards) - { - votable_asset_info info(votable_asset_info_v1(max_accepted_payout, allow_curation_rewards)); - votable_assets[symbol] = std::move(info); - } - - /** Allows to check if given symbol is allowed votable asset. - * @param symbol - asset symbol to be check against votable feature - * @param max_accepted_payout - optional output parameter which allows to take `max_accepted_payout` - * configured for given asset - * @param allow_curation_rewards - optional output parameter which allows to take `allow_curation_rewards` - * specified for given votable asset. - * @returns true if given asset is allowed votable asset for given comment. - */ - bool is_allowed(const asset_symbol_type& symbol, share_type* max_accepted_payout = nullptr, - bool* allow_curation_rewards = nullptr) const - { - auto foundI = votable_assets.find(symbol); - if(foundI == votable_assets.end()) - { - if(max_accepted_payout != nullptr) - *max_accepted_payout = 0; - if(allow_curation_rewards != nullptr) - *allow_curation_rewards = false; - return false; - } - - if(max_accepted_payout != nullptr) - *max_accepted_payout = foundI->second.get().max_accepted_payout; - if(allow_curation_rewards != nullptr) - *allow_curation_rewards = foundI->second.get().allow_curation_rewards; - - return true; - } - - /** Part of `comment_option_operation` validation process, to be called when allowed_vote_assets object - * has been added as comment option extension. - * @throws fc::assert_exception on failure. - */ - void validate() const - { - FC_ASSERT(votable_assets.size() <= SMT_MAX_VOTABLE_ASSETS, "Too much votable assets specified"); - FC_ASSERT(is_allowed(STEEM_SYMBOL) == false, - "STEEM can not be explicitly specified as one of allowed_vote_assets"); - } - - flat_map< asset_symbol_type, votable_asset_info > votable_assets; - }; -#endif /// STEEM_ENABLE_SMT - - typedef static_variant< - comment_payout_beneficiaries -#ifdef STEEM_ENABLE_SMT - ,allowed_vote_assets -#endif /// STEEM_ENABLE_SMT - > comment_options_extension; - - typedef flat_set< comment_options_extension > comment_options_extensions_type; - - /** - * Authors of posts may not want all of the benefits that come from creating a post. This - * operation allows authors to update properties associated with their post. - * - * The max_accepted_payout may be decreased, but never increased. - * The percent_steem_dollars may be decreased, but never increased - * - */ - struct comment_options_operation : public base_operation - { - account_name_type author; - string permlink; - - asset max_accepted_payout = asset( 1000000000, SBD_SYMBOL ); /// SBD value of the maximum payout this post will receive - uint16_t percent_steem_dollars = STEEM_100_PERCENT; /// the percent of Steem Dollars to key, unkept amounts will be received as Steem Power - bool allow_votes = true; /// allows a post to receive votes; - bool allow_curation_rewards = true; /// allows voters to recieve curation rewards. Rewards return to reward fund. - comment_options_extensions_type extensions; - - void validate()const; - void get_required_posting_authorities( flat_set& a )const{ a.insert(author); } - }; - - - struct placeholder_a_operation : public base_operation - { - void validate()const; - }; - - struct placeholder_b_operation : public base_operation - { - void validate()const; - }; - - - struct delete_comment_operation : public base_operation - { - account_name_type author; - string permlink; - - void validate()const; - void get_required_posting_authorities( flat_set& a )const{ a.insert(author); } - }; - - - struct vote_operation : public base_operation - { - account_name_type voter; - account_name_type author; - string permlink; - int16_t weight = 0; - - void validate()const; - void get_required_posting_authorities( flat_set& a )const{ a.insert(voter); } - }; - - - /** - * @ingroup operations - * - * @brief Transfers STEEM from one account to another. - */ - struct transfer_operation : public base_operation - { - account_name_type from; - /// Account to transfer asset to - account_name_type to; - /// The amount of asset to transfer from @ref from to @ref to - asset amount; - - /// The memo is plain-text, any encryption on the memo is up to - /// a higher level protocol. - string memo; - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ if(amount.symbol != VESTS_SYMBOL) a.insert(from); } - void get_required_owner_authorities( flat_set& a )const { if(amount.symbol == VESTS_SYMBOL) a.insert(from); } - }; - - - /** - * The purpose of this operation is to enable someone to send money contingently to - * another individual. The funds leave the *from* account and go into a temporary balance - * where they are held until *from* releases it to *to* or *to* refunds it to *from*. - * - * In the event of a dispute the *agent* can divide the funds between the to/from account. - * Disputes can be raised any time before or on the dispute deadline time, after the escrow - * has been approved by all parties. - * - * This operation only creates a proposed escrow transfer. Both the *agent* and *to* must - * agree to the terms of the arrangement by approving the escrow. - * - * The escrow agent is paid the fee on approval of all parties. It is up to the escrow agent - * to determine the fee. - * - * Escrow transactions are uniquely identified by 'from' and 'escrow_id', the 'escrow_id' is defined - * by the sender. - */ - struct escrow_transfer_operation : public base_operation - { - account_name_type from; - account_name_type to; - account_name_type agent; - uint32_t escrow_id = 30; - - asset sbd_amount = asset( 0, SBD_SYMBOL ); - asset steem_amount = asset( 0, STEEM_SYMBOL ); - asset fee; - - time_point_sec ratification_deadline; - time_point_sec escrow_expiration; - - string json_meta; - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(from); } - }; - - - /** - * The agent and to accounts must approve an escrow transaction for it to be valid on - * the blockchain. Once a part approves the escrow, the cannot revoke their approval. - * Subsequent escrow approve operations, regardless of the approval, will be rejected. - */ - struct escrow_approve_operation : public base_operation - { - account_name_type from; - account_name_type to; - account_name_type agent; - account_name_type who; // Either to or agent - - uint32_t escrow_id = 30; - bool approve = true; - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(who); } - }; - - - /** - * If either the sender or receiver of an escrow payment has an issue, they can - * raise it for dispute. Once a payment is in dispute, the agent has authority over - * who gets what. - */ - struct escrow_dispute_operation : public base_operation - { - account_name_type from; - account_name_type to; - account_name_type agent; - account_name_type who; - - uint32_t escrow_id = 30; - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(who); } - }; - - - /** - * This operation can be used by anyone associated with the escrow transfer to - * release funds if they have permission. - * - * The permission scheme is as follows: - * If there is no dispute and escrow has not expired, either party can release funds to the other. - * If escrow expires and there is no dispute, either party can release funds to either party. - * If there is a dispute regardless of expiration, the agent can release funds to either party - * following whichever agreement was in place between the parties. - */ - struct escrow_release_operation : public base_operation - { - account_name_type from; - account_name_type to; ///< the original 'to' - account_name_type agent; - account_name_type who; ///< the account that is attempting to release the funds, determines valid 'receiver' - account_name_type receiver; ///< the account that should receive funds (might be from, might be to) - - uint32_t escrow_id = 30; - asset sbd_amount = asset( 0, SBD_SYMBOL ); ///< the amount of sbd to release - asset steem_amount = asset( 0, STEEM_SYMBOL ); ///< the amount of steem to release - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(who); } - }; - - - /** - * This operation converts STEEM into VFS (Vesting Fund Shares) at - * the current exchange rate. With this operation it is possible to - * give another account vesting shares so that faucets can - * pre-fund new accounts with vesting shares. - */ - struct transfer_to_vesting_operation : public base_operation - { - account_name_type from; - account_name_type to; ///< if null, then same as from - asset amount; ///< must be STEEM - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(from); } - }; - - - /** - * At any given point in time an account can be withdrawing from their - * vesting shares. A user may change the number of shares they wish to - * cash out at any time between 0 and their total vesting stake. - * - * After applying this operation, vesting_shares will be withdrawn - * at a rate of vesting_shares/104 per week for two years starting - * one week after this operation is included in the blockchain. - * - * This operation is not valid if the user has no vesting shares. - */ - struct withdraw_vesting_operation : public base_operation - { - account_name_type account; - asset vesting_shares; - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(account); } - }; - - - /** - * Allows an account to setup a vesting withdraw but with the additional - * request for the funds to be transferred directly to another account's - * balance rather than the withdrawing account. In addition, those funds - * can be immediately vested again, circumventing the conversion from - * vests to steem and back, guaranteeing they maintain their value. - */ - struct set_withdraw_vesting_route_operation : public base_operation - { - account_name_type from_account; - account_name_type to_account; - uint16_t percent = 0; - bool auto_vest = false; - - void validate()const; - void get_required_active_authorities( flat_set& a )const { a.insert( from_account ); } - }; - - - /** - * Witnesses must vote on how to set certain chain properties to ensure a smooth - * and well functioning network. Any time @owner is in the active set of witnesses these - * properties will be used to control the blockchain configuration. - */ - struct legacy_chain_properties - { - /** - * This fee, paid in STEEM, is converted into VESTING SHARES for the new account. Accounts - * without vesting shares cannot earn usage rations and therefore are powerless. This minimum - * fee requires all accounts to have some kind of commitment to the network that includes the - * ability to vote and make transactions. - */ - legacy_steem_asset account_creation_fee = legacy_steem_asset::from_amount( STEEM_MIN_ACCOUNT_CREATION_FEE ); - - /** - * This witnesses vote for the maximum_block_size which is used by the network - * to tune rate limiting and capacity - */ - uint32_t maximum_block_size = STEEM_MIN_BLOCK_SIZE_LIMIT * 2; - uint16_t sbd_interest_rate = STEEM_DEFAULT_SBD_INTEREST_RATE; - - template< bool force_canon > - void validate()const - { - if( force_canon ) - { - FC_ASSERT( account_creation_fee.symbol.is_canon() ); - } - FC_ASSERT( account_creation_fee.amount >= STEEM_MIN_ACCOUNT_CREATION_FEE); - FC_ASSERT( maximum_block_size >= STEEM_MIN_BLOCK_SIZE_LIMIT); - FC_ASSERT( sbd_interest_rate >= 0 ); - FC_ASSERT( sbd_interest_rate <= STEEM_100_PERCENT ); - } - }; - - - /** - * Users who wish to become a witness must pay a fee acceptable to - * the current witnesses to apply for the position and allow voting - * to begin. - * - * If the owner isn't a witness they will become a witness. Witnesses - * are charged a fee equal to 1 weeks worth of witness pay which in - * turn is derived from the current share supply. The fee is - * only applied if the owner is not already a witness. - * - * If the block_signing_key is null then the witness is removed from - * contention. The network will pick the top 21 witnesses for - * producing blocks. - */ - struct witness_update_operation : public base_operation - { - account_name_type owner; - string url; - public_key_type block_signing_key; - legacy_chain_properties props; - asset fee; ///< the fee paid to register a new witness, should be 10x current block production pay - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(owner); } - }; - - struct witness_set_properties_operation : public base_operation - { - account_name_type owner; - flat_map< string, vector< char > > props; - extensions_type extensions; - - void validate()const; - void get_required_authorities( vector< authority >& a )const - { - auto key_itr = props.find( "key" ); - - if( key_itr != props.end() ) - { - public_key_type signing_key; - fc::raw::unpack_from_vector( key_itr->second, signing_key ); - a.push_back( authority( 1, signing_key, 1 ) ); - } - else - a.push_back( authority( 1, STEEM_NULL_ACCOUNT, 1 ) ); // The null account auth is impossible to satisfy - } - }; - - /** - * All accounts with a VFS can vote for or against any witness. - * - * If a proxy is specified then all existing votes are removed. - */ - struct account_witness_vote_operation : public base_operation - { - account_name_type account; - account_name_type witness; - bool approve = true; - - void validate() const; - void get_required_active_authorities( flat_set& a )const{ a.insert(account); } - }; - - - struct account_witness_proxy_operation : public base_operation - { - account_name_type account; - account_name_type proxy; - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(account); } - }; - - - /** - * @brief provides a generic way to add higher level protocols on top of witness consensus - * @ingroup operations - * - * There is no validation for this operation other than that required auths are valid - */ - struct custom_operation : public base_operation - { - flat_set< account_name_type > required_auths; - uint16_t id = 0; - vector< char > data; - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ for( const auto& i : required_auths ) a.insert(i); } - }; - - - /** serves the same purpose as custom_operation but also supports required posting authorities. Unlike custom_operation, - * this operation is designed to be human readable/developer friendly. - **/ - struct custom_json_operation : public base_operation - { - flat_set< account_name_type > required_auths; - flat_set< account_name_type > required_posting_auths; - string id; ///< must be less than 32 characters long - string json; ///< must be proper utf8 / JSON string. - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ for( const auto& i : required_auths ) a.insert(i); } - void get_required_posting_authorities( flat_set& a )const{ for( const auto& i : required_posting_auths ) a.insert(i); } - }; - - - struct custom_binary_operation : public base_operation - { - flat_set< account_name_type > required_owner_auths; - flat_set< account_name_type > required_active_auths; - flat_set< account_name_type > required_posting_auths; - vector< authority > required_auths; - - string id; ///< must be less than 32 characters long - vector< char > data; - - void validate()const; - void get_required_owner_authorities( flat_set& a )const{ for( const auto& i : required_owner_auths ) a.insert(i); } - void get_required_active_authorities( flat_set& a )const{ for( const auto& i : required_active_auths ) a.insert(i); } - void get_required_posting_authorities( flat_set& a )const{ for( const auto& i : required_posting_auths ) a.insert(i); } - void get_required_authorities( vector< authority >& a )const{ for( const auto& i : required_auths ) a.push_back( i ); } - }; - - - /** - * Feeds can only be published by the top N witnesses which are included in every round and are - * used to define the exchange rate between steem and the dollar. - */ - struct feed_publish_operation : public base_operation - { - account_name_type publisher; - price exchange_rate; - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(publisher); } - }; - - - /** - * This operation instructs the blockchain to start a conversion between STEEM and SBD, - * The funds are deposited after STEEM_CONVERSION_DELAY - */ - struct convert_operation : public base_operation - { - account_name_type owner; - uint32_t requestid = 0; - asset amount; - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(owner); } - }; - - - /** - * This operation creates a limit order and matches it against existing open orders. - */ - struct limit_order_create_operation : public base_operation - { - account_name_type owner; - uint32_t orderid = 0; /// an ID assigned by owner, must be unique - asset amount_to_sell; - asset min_to_receive; - bool fill_or_kill = false; - time_point_sec expiration = time_point_sec::maximum(); - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(owner); } - - price get_price()const { return amount_to_sell / min_to_receive; } - - pair< asset_symbol_type, asset_symbol_type > get_market()const - { - return amount_to_sell.symbol < min_to_receive.symbol ? - std::make_pair(amount_to_sell.symbol, min_to_receive.symbol) : - std::make_pair(min_to_receive.symbol, amount_to_sell.symbol); - } - }; - - - /** - * This operation is identical to limit_order_create except it serializes the price rather - * than calculating it from other fields. - */ - struct limit_order_create2_operation : public base_operation - { - account_name_type owner; - uint32_t orderid = 0; /// an ID assigned by owner, must be unique - asset amount_to_sell; - bool fill_or_kill = false; - price exchange_rate; - time_point_sec expiration = time_point_sec::maximum(); - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(owner); } - - price get_price()const { return exchange_rate; } - - pair< asset_symbol_type, asset_symbol_type > get_market()const - { - return exchange_rate.base.symbol < exchange_rate.quote.symbol ? - std::make_pair(exchange_rate.base.symbol, exchange_rate.quote.symbol) : - std::make_pair(exchange_rate.quote.symbol, exchange_rate.base.symbol); - } - }; - - - /** - * Cancels an order and returns the balance to owner. - */ - struct limit_order_cancel_operation : public base_operation - { - account_name_type owner; - uint32_t orderid = 0; - - void validate()const; - void get_required_active_authorities( flat_set& a )const{ a.insert(owner); } - }; - - - struct pow - { - public_key_type worker; - digest_type input; - signature_type signature; - digest_type work; - - void create( const fc::ecc::private_key& w, const digest_type& i ); - void validate()const; - }; - - - struct pow_operation : public base_operation - { - account_name_type worker_account; - block_id_type block_id; - uint64_t nonce = 0; - pow work; - legacy_chain_properties props; - - void validate()const; - fc::sha256 work_input()const; - - const account_name_type& get_worker_account()const { return worker_account; } - - /** there is no need to verify authority, the proof of work is sufficient */ - void get_required_active_authorities( flat_set& a )const{ } - }; - - - struct pow2_input - { - account_name_type worker_account; - block_id_type prev_block; - uint64_t nonce = 0; - }; - - - struct pow2 - { - pow2_input input; - uint32_t pow_summary = 0; - - void create( const block_id_type& prev_block, const account_name_type& account_name, uint64_t nonce ); - void validate()const; - }; - - struct equihash_pow - { - pow2_input input; - fc::equihash::proof proof; - block_id_type prev_block; - uint32_t pow_summary = 0; - - void create( const block_id_type& recent_block, const account_name_type& account_name, uint32_t nonce ); - void validate() const; - }; - - typedef fc::static_variant< pow2, equihash_pow > pow2_work; - - struct pow2_operation : public base_operation - { - pow2_work work; - optional< public_key_type > new_owner_key; - legacy_chain_properties props; - - void validate()const; - - void get_required_active_authorities( flat_set& a )const; - - void get_required_authorities( vector< authority >& a )const - { - if( new_owner_key ) - { - a.push_back( authority( 1, *new_owner_key, 1 ) ); - } - } - }; - - - /** - * This operation is used to report a miner who signs two blocks - * at the same time. To be valid, the violation must be reported within - * STEEM_MAX_WITNESSES blocks of the head block (1 round) and the - * producer must be in the ACTIVE witness set. - * - * Users not in the ACTIVE witness set should not have to worry about their - * key getting compromised and being used to produced multiple blocks so - * the attacker can report it and steel their vesting steem. - * - * The result of the operation is to transfer the full VESTING STEEM balance - * of the block producer to the reporter. - */ - struct report_over_production_operation : public base_operation - { - account_name_type reporter; - signed_block_header first_block; - signed_block_header second_block; - - void validate()const; - }; - - - /** - * All account recovery requests come from a listed recovery account. This - * is secure based on the assumption that only a trusted account should be - * a recovery account. It is the responsibility of the recovery account to - * verify the identity of the account holder of the account to recover by - * whichever means they have agreed upon. The blockchain assumes identity - * has been verified when this operation is broadcast. - * - * This operation creates an account recovery request which the account to - * recover has 24 hours to respond to before the request expires and is - * invalidated. - * - * There can only be one active recovery request per account at any one time. - * Pushing this operation for an account to recover when it already has - * an active request will either update the request to a new new owner authority - * and extend the request expiration to 24 hours from the current head block - * time or it will delete the request. To cancel a request, simply set the - * weight threshold of the new owner authority to 0, making it an open authority. - * - * Additionally, the new owner authority must be satisfiable. In other words, - * the sum of the key weights must be greater than or equal to the weight - * threshold. - * - * This operation only needs to be signed by the the recovery account. - * The account to recover confirms its identity to the blockchain in - * the recover account operation. - */ - struct request_account_recovery_operation : public base_operation - { - account_name_type recovery_account; ///< The recovery account is listed as the recovery account on the account to recover. - - account_name_type account_to_recover; ///< The account to recover. This is likely due to a compromised owner authority. - - authority new_owner_authority; ///< The new owner authority the account to recover wishes to have. This is secret - ///< known by the account to recover and will be confirmed in a recover_account_operation - - extensions_type extensions; ///< Extensions. Not currently used. - - void get_required_active_authorities( flat_set& a )const{ a.insert( recovery_account ); } - - void validate() const; - }; - - - /** - * Recover an account to a new authority using a previous authority and verification - * of the recovery account as proof of identity. This operation can only succeed - * if there was a recovery request sent by the account's recover account. - * - * In order to recover the account, the account holder must provide proof - * of past ownership and proof of identity to the recovery account. Being able - * to satisfy an owner authority that was used in the past 30 days is sufficient - * to prove past ownership. The get_owner_history function in the database API - * returns past owner authorities that are valid for account recovery. - * - * Proving identity is an off chain contract between the account holder and - * the recovery account. The recovery request contains a new authority which - * must be satisfied by the account holder to regain control. The actual process - * of verifying authority may become complicated, but that is an application - * level concern, not a blockchain concern. - * - * This operation requires both the past and future owner authorities in the - * operation because neither of them can be derived from the current chain state. - * The operation must be signed by keys that satisfy both the new owner authority - * and the recent owner authority. Failing either fails the operation entirely. - * - * If a recovery request was made inadvertantly, the account holder should - * contact the recovery account to have the request deleted. - * - * The two setp combination of the account recovery request and recover is - * safe because the recovery account never has access to secrets of the account - * to recover. They simply act as an on chain endorsement of off chain identity. - * In other systems, a fork would be required to enforce such off chain state. - * Additionally, an account cannot be permanently recovered to the wrong account. - * While any owner authority from the past 30 days can be used, including a compromised - * authority, the account can be continually recovered until the recovery account - * is confident a combination of uncompromised authorities were used to - * recover the account. The actual process of verifying authority may become - * complicated, but that is an application level concern, not the blockchain's - * concern. - */ - struct recover_account_operation : public base_operation - { - account_name_type account_to_recover; ///< The account to be recovered - - authority new_owner_authority; ///< The new owner authority as specified in the request account recovery operation. - - authority recent_owner_authority; ///< A previous owner authority that the account holder will use to prove past ownership of the account to be recovered. - - extensions_type extensions; ///< Extensions. Not currently used. - - void get_required_authorities( vector< authority >& a )const - { - a.push_back( new_owner_authority ); - a.push_back( recent_owner_authority ); - } - - void validate() const; - }; - - - /** - * This operation allows recovery_accoutn to change account_to_reset's owner authority to - * new_owner_authority after 60 days of inactivity. - */ - struct reset_account_operation : public base_operation { - account_name_type reset_account; - account_name_type account_to_reset; - authority new_owner_authority; - - void get_required_active_authorities( flat_set& a )const { a.insert( reset_account ); } - void validate()const; - }; - - /** - * This operation allows 'account' owner to control which account has the power - * to execute the 'reset_account_operation' after 60 days. - */ - struct set_reset_account_operation : public base_operation { - account_name_type account; - account_name_type current_reset_account; - account_name_type reset_account; - void validate()const; - void get_required_owner_authorities( flat_set& a )const - { - if( current_reset_account.size() ) - a.insert( account ); - } - - void get_required_posting_authorities( flat_set& a )const - { - if( !current_reset_account.size() ) - a.insert( account ); - } - }; - - - /** - * Each account lists another account as their recovery account. - * The recovery account has the ability to create account_recovery_requests - * for the account to recover. An account can change their recovery account - * at any time with a 30 day delay. This delay is to prevent - * an attacker from changing the recovery account to a malicious account - * during an attack. These 30 days match the 30 days that an - * owner authority is valid for recovery purposes. - * - * On account creation the recovery account is set either to the creator of - * the account (The account that pays the creation fee and is a signer on the transaction) - * or to the empty string if the account was mined. An account with no recovery - * has the top voted witness as a recovery account, at the time the recover - * request is created. Note: This does mean the effective recovery account - * of an account with no listed recovery account can change at any time as - * witness vote weights. The top voted witness is explicitly the most trusted - * witness according to stake. - */ - struct change_recovery_account_operation : public base_operation - { - account_name_type account_to_recover; ///< The account that would be recovered in case of compromise - account_name_type new_recovery_account; ///< The account that creates the recover request - extensions_type extensions; ///< Extensions. Not currently used. - - void get_required_owner_authorities( flat_set& a )const{ a.insert( account_to_recover ); } - void validate() const; - }; - - - struct transfer_to_savings_operation : public base_operation { - account_name_type from; - account_name_type to; - asset amount; - string memo; - - void get_required_active_authorities( flat_set& a )const{ a.insert( from ); } - void validate() const; - }; - - - struct transfer_from_savings_operation : public base_operation { - account_name_type from; - uint32_t request_id = 0; - account_name_type to; - asset amount; - string memo; - - void get_required_active_authorities( flat_set& a )const{ a.insert( from ); } - void validate() const; - }; - - - struct cancel_transfer_from_savings_operation : public base_operation { - account_name_type from; - uint32_t request_id = 0; - - void get_required_active_authorities( flat_set& a )const{ a.insert( from ); } - void validate() const; - }; - - - struct decline_voting_rights_operation : public base_operation - { - account_name_type account; - bool decline = true; - - void get_required_owner_authorities( flat_set& a )const{ a.insert( account ); } - void validate() const; - }; - - struct claim_reward_balance_operation : public base_operation - { - account_name_type account; - asset reward_steem; - asset reward_sbd; - asset reward_vests; - - void get_required_posting_authorities( flat_set< account_name_type >& a )const{ a.insert( account ); } - void validate() const; - }; - -#ifdef STEEM_ENABLE_SMT - /** Differs with original operation with extensions field and a container of tokens that will - * be rewarded to an account. See discussion in issue #1859 - */ - struct claim_reward_balance2_operation : public base_operation - { - account_name_type account; - extensions_type extensions; - - /** \warning The contents of this container is required to be unique and sorted - * (both by asset symbol) in ascending order. Otherwise operation validation will fail. - */ - vector< asset > reward_tokens; - - void get_required_posting_authorities( flat_set< account_name_type >& a )const{ a.insert( account ); } - void validate() const; - }; -#endif - - /** - * Delegate vesting shares from one account to the other. The vesting shares are still owned - * by the original account, but content voting rights and bandwidth allocation are transferred - * to the receiving account. This sets the delegation to `vesting_shares`, increasing it or - * decreasing it as needed. (i.e. a delegation of 0 removes the delegation) - * - * When a delegation is removed the shares are placed in limbo for a week to prevent a satoshi - * of VESTS from voting on the same content twice. - */ - struct delegate_vesting_shares_operation : public base_operation - { - account_name_type delegator; ///< The account delegating vesting shares - account_name_type delegatee; ///< The account receiving vesting shares - asset vesting_shares; ///< The amount of vesting shares delegated - - void get_required_active_authorities( flat_set< account_name_type >& a ) const { a.insert( delegator ); } - void validate() const; - }; -} } // steem::protocol - - -FC_REFLECT( steem::protocol::transfer_to_savings_operation, (from)(to)(amount)(memo) ) -FC_REFLECT( steem::protocol::transfer_from_savings_operation, (from)(request_id)(to)(amount)(memo) ) -FC_REFLECT( steem::protocol::cancel_transfer_from_savings_operation, (from)(request_id) ) - -FC_REFLECT( steem::protocol::reset_account_operation, (reset_account)(account_to_reset)(new_owner_authority) ) -FC_REFLECT( steem::protocol::set_reset_account_operation, (account)(current_reset_account)(reset_account) ) - - -FC_REFLECT( steem::protocol::report_over_production_operation, (reporter)(first_block)(second_block) ) -FC_REFLECT( steem::protocol::convert_operation, (owner)(requestid)(amount) ) -FC_REFLECT( steem::protocol::feed_publish_operation, (publisher)(exchange_rate) ) -FC_REFLECT( steem::protocol::pow, (worker)(input)(signature)(work) ) -FC_REFLECT( steem::protocol::pow2, (input)(pow_summary) ) -FC_REFLECT( steem::protocol::pow2_input, (worker_account)(prev_block)(nonce) ) -FC_REFLECT( steem::protocol::equihash_pow, (input)(proof)(prev_block)(pow_summary) ) -FC_REFLECT( steem::protocol::legacy_chain_properties, - (account_creation_fee) - (maximum_block_size) - (sbd_interest_rate) - ) - -FC_REFLECT_TYPENAME( steem::protocol::pow2_work ) -FC_REFLECT( steem::protocol::pow_operation, (worker_account)(block_id)(nonce)(work)(props) ) -FC_REFLECT( steem::protocol::pow2_operation, (work)(new_owner_key)(props) ) - -FC_REFLECT( steem::protocol::account_create_operation, - (fee) - (creator) - (new_account_name) - (owner) - (active) - (posting) - (memo_key) - (json_metadata) ) - -FC_REFLECT( steem::protocol::account_create_with_delegation_operation, - (fee) - (delegation) - (creator) - (new_account_name) - (owner) - (active) - (posting) - (memo_key) - (json_metadata) - (extensions) ) - -FC_REFLECT( steem::protocol::account_update_operation, - (account) - (owner) - (active) - (posting) - (memo_key) - (json_metadata) ) - -FC_REFLECT( steem::protocol::transfer_operation, (from)(to)(amount)(memo) ) -FC_REFLECT( steem::protocol::transfer_to_vesting_operation, (from)(to)(amount) ) -FC_REFLECT( steem::protocol::withdraw_vesting_operation, (account)(vesting_shares) ) -FC_REFLECT( steem::protocol::set_withdraw_vesting_route_operation, (from_account)(to_account)(percent)(auto_vest) ) -FC_REFLECT( steem::protocol::witness_update_operation, (owner)(url)(block_signing_key)(props)(fee) ) -FC_REFLECT( steem::protocol::witness_set_properties_operation, (owner)(props)(extensions) ) -FC_REFLECT( steem::protocol::account_witness_vote_operation, (account)(witness)(approve) ) -FC_REFLECT( steem::protocol::account_witness_proxy_operation, (account)(proxy) ) -FC_REFLECT( steem::protocol::comment_operation, (parent_author)(parent_permlink)(author)(permlink)(title)(body)(json_metadata) ) -FC_REFLECT( steem::protocol::vote_operation, (voter)(author)(permlink)(weight) ) -FC_REFLECT( steem::protocol::custom_operation, (required_auths)(id)(data) ) -FC_REFLECT( steem::protocol::custom_json_operation, (required_auths)(required_posting_auths)(id)(json) ) -FC_REFLECT( steem::protocol::custom_binary_operation, (required_owner_auths)(required_active_auths)(required_posting_auths)(required_auths)(id)(data) ) -FC_REFLECT( steem::protocol::limit_order_create_operation, (owner)(orderid)(amount_to_sell)(min_to_receive)(fill_or_kill)(expiration) ) -FC_REFLECT( steem::protocol::limit_order_create2_operation, (owner)(orderid)(amount_to_sell)(exchange_rate)(fill_or_kill)(expiration) ) -FC_REFLECT( steem::protocol::limit_order_cancel_operation, (owner)(orderid) ) - -FC_REFLECT( steem::protocol::delete_comment_operation, (author)(permlink) ); - -FC_REFLECT( steem::protocol::beneficiary_route_type, (account)(weight) ) -FC_REFLECT( steem::protocol::comment_payout_beneficiaries, (beneficiaries) ) - -#ifdef STEEM_ENABLE_SMT -FC_REFLECT( steem::protocol::votable_asset_info_v1, (max_accepted_payout)(allow_curation_rewards) ) -FC_REFLECT( steem::protocol::allowed_vote_assets, (votable_assets) ) -#endif - -FC_REFLECT_TYPENAME( steem::protocol::comment_options_extension ) -FC_REFLECT( steem::protocol::comment_options_operation, (author)(permlink)(max_accepted_payout)(percent_steem_dollars)(allow_votes)(allow_curation_rewards)(extensions) ) - -FC_REFLECT( steem::protocol::escrow_transfer_operation, (from)(to)(sbd_amount)(steem_amount)(escrow_id)(agent)(fee)(json_meta)(ratification_deadline)(escrow_expiration) ); -FC_REFLECT( steem::protocol::escrow_approve_operation, (from)(to)(agent)(who)(escrow_id)(approve) ); -FC_REFLECT( steem::protocol::escrow_dispute_operation, (from)(to)(agent)(who)(escrow_id) ); -FC_REFLECT( steem::protocol::escrow_release_operation, (from)(to)(agent)(who)(receiver)(escrow_id)(sbd_amount)(steem_amount) ); -FC_REFLECT( steem::protocol::placeholder_a_operation, ); -FC_REFLECT( steem::protocol::placeholder_b_operation, ); -FC_REFLECT( steem::protocol::request_account_recovery_operation, (recovery_account)(account_to_recover)(new_owner_authority)(extensions) ); -FC_REFLECT( steem::protocol::recover_account_operation, (account_to_recover)(new_owner_authority)(recent_owner_authority)(extensions) ); -FC_REFLECT( steem::protocol::change_recovery_account_operation, (account_to_recover)(new_recovery_account)(extensions) ); -FC_REFLECT( steem::protocol::decline_voting_rights_operation, (account)(decline) ); -FC_REFLECT( steem::protocol::claim_reward_balance_operation, (account)(reward_steem)(reward_sbd)(reward_vests) ) -#ifdef STEEM_ENABLE_SMT -FC_REFLECT( steem::protocol::claim_reward_balance2_operation, (account)(extensions)(reward_tokens) ) -#endif -FC_REFLECT( steem::protocol::delegate_vesting_shares_operation, (delegator)(delegatee)(vesting_shares) ); diff --git a/libraries/protocol/include/steem/protocol/steem_virtual_operations.hpp b/libraries/protocol/include/steem/protocol/steem_virtual_operations.hpp deleted file mode 100644 index 536c0f29..00000000 --- a/libraries/protocol/include/steem/protocol/steem_virtual_operations.hpp +++ /dev/null @@ -1,195 +0,0 @@ -#pragma once -#include -#include -#include - -#include - -namespace steem { namespace protocol { - - struct author_reward_operation : public virtual_operation { - author_reward_operation(){} - author_reward_operation( const account_name_type& a, const string& p, const asset& s, const asset& st, const asset& v ) - :author(a), permlink(p), sbd_payout(s), steem_payout(st), vesting_payout(v){} - - account_name_type author; - string permlink; - asset sbd_payout; - asset steem_payout; - asset vesting_payout; - }; - - - struct curation_reward_operation : public virtual_operation - { - curation_reward_operation(){} - curation_reward_operation( const string& c, const asset& r, const string& a, const string& p ) - :curator(c), reward(r), comment_author(a), comment_permlink(p) {} - - account_name_type curator; - asset reward; - account_name_type comment_author; - string comment_permlink; - }; - - - struct comment_reward_operation : public virtual_operation - { - comment_reward_operation(){} - comment_reward_operation( const account_name_type& a, const string& pl, const asset& p ) - :author(a), permlink(pl), payout(p){} - - account_name_type author; - string permlink; - asset payout; - }; - - - struct liquidity_reward_operation : public virtual_operation - { - liquidity_reward_operation( string o = string(), asset p = asset() ) - :owner(o), payout(p) {} - - account_name_type owner; - asset payout; - }; - - - struct interest_operation : public virtual_operation - { - interest_operation( const string& o = "", const asset& i = asset(0,SBD_SYMBOL) ) - :owner(o),interest(i){} - - account_name_type owner; - asset interest; - }; - - - struct fill_convert_request_operation : public virtual_operation - { - fill_convert_request_operation(){} - fill_convert_request_operation( const string& o, const uint32_t id, const asset& in, const asset& out ) - :owner(o), requestid(id), amount_in(in), amount_out(out) {} - - account_name_type owner; - uint32_t requestid = 0; - asset amount_in; - asset amount_out; - }; - - - struct fill_vesting_withdraw_operation : public virtual_operation - { - fill_vesting_withdraw_operation(){} - fill_vesting_withdraw_operation( const string& f, const string& t, const asset& w, const asset& d ) - :from_account(f), to_account(t), withdrawn(w), deposited(d) {} - - account_name_type from_account; - account_name_type to_account; - asset withdrawn; - asset deposited; - }; - - - struct shutdown_witness_operation : public virtual_operation - { - shutdown_witness_operation(){} - shutdown_witness_operation( const string& o ):owner(o) {} - - account_name_type owner; - }; - - - struct fill_order_operation : public virtual_operation - { - fill_order_operation(){} - fill_order_operation( const string& c_o, uint32_t c_id, const asset& c_p, const string& o_o, uint32_t o_id, const asset& o_p ) - :current_owner(c_o), current_orderid(c_id), current_pays(c_p), open_owner(o_o), open_orderid(o_id), open_pays(o_p) {} - - account_name_type current_owner; - uint32_t current_orderid = 0; - asset current_pays; - account_name_type open_owner; - uint32_t open_orderid = 0; - asset open_pays; - }; - - - struct fill_transfer_from_savings_operation : public virtual_operation - { - fill_transfer_from_savings_operation() {} - fill_transfer_from_savings_operation( const account_name_type& f, const account_name_type& t, const asset& a, const uint32_t r, const string& m ) - :from(f), to(t), amount(a), request_id(r), memo(m) {} - - account_name_type from; - account_name_type to; - asset amount; - uint32_t request_id = 0; - string memo; - }; - - struct hardfork_operation : public virtual_operation - { - hardfork_operation() {} - hardfork_operation( uint32_t hf_id ) : hardfork_id( hf_id ) {} - - uint32_t hardfork_id = 0; - }; - - struct comment_payout_update_operation : public virtual_operation - { - comment_payout_update_operation() {} - comment_payout_update_operation( const account_name_type& a, const string& p ) : author( a ), permlink( p ) {} - - account_name_type author; - string permlink; - }; - - struct return_vesting_delegation_operation : public virtual_operation - { - return_vesting_delegation_operation() {} - return_vesting_delegation_operation( const account_name_type& a, const asset& v ) : account( a ), vesting_shares( v ) {} - - account_name_type account; - asset vesting_shares; - }; - - struct comment_benefactor_reward_operation : public virtual_operation - { - comment_benefactor_reward_operation() {} - comment_benefactor_reward_operation( const account_name_type& b, const account_name_type& a, const string& p, const asset& r ) - : benefactor( b ), author( a ), permlink( p ), reward( r ) {} - - account_name_type benefactor; - account_name_type author; - string permlink; - asset reward; - }; - - struct producer_reward_operation : public virtual_operation - { - producer_reward_operation(){} - producer_reward_operation( const string& p, const asset& v ) : producer( p ), vesting_shares( v ) {} - - account_name_type producer; - asset vesting_shares; - - }; - -} } //steem::protocol - -FC_REFLECT( steem::protocol::author_reward_operation, (author)(permlink)(sbd_payout)(steem_payout)(vesting_payout) ) -FC_REFLECT( steem::protocol::curation_reward_operation, (curator)(reward)(comment_author)(comment_permlink) ) -FC_REFLECT( steem::protocol::comment_reward_operation, (author)(permlink)(payout) ) -FC_REFLECT( steem::protocol::fill_convert_request_operation, (owner)(requestid)(amount_in)(amount_out) ) -FC_REFLECT( steem::protocol::liquidity_reward_operation, (owner)(payout) ) -FC_REFLECT( steem::protocol::interest_operation, (owner)(interest) ) -FC_REFLECT( steem::protocol::fill_vesting_withdraw_operation, (from_account)(to_account)(withdrawn)(deposited) ) -FC_REFLECT( steem::protocol::shutdown_witness_operation, (owner) ) -FC_REFLECT( steem::protocol::fill_order_operation, (current_owner)(current_orderid)(current_pays)(open_owner)(open_orderid)(open_pays) ) -FC_REFLECT( steem::protocol::fill_transfer_from_savings_operation, (from)(to)(amount)(request_id)(memo) ) -FC_REFLECT( steem::protocol::hardfork_operation, (hardfork_id) ) -FC_REFLECT( steem::protocol::comment_payout_update_operation, (author)(permlink) ) -FC_REFLECT( steem::protocol::return_vesting_delegation_operation, (account)(vesting_shares) ) -FC_REFLECT( steem::protocol::comment_benefactor_reward_operation, (benefactor)(author)(permlink)(reward) ) -FC_REFLECT( steem::protocol::producer_reward_operation, (producer)(vesting_shares) ) diff --git a/libraries/protocol/include/steem/protocol/transaction_util.hpp b/libraries/protocol/include/steem/protocol/transaction_util.hpp deleted file mode 100644 index 36b7707d..00000000 --- a/libraries/protocol/include/steem/protocol/transaction_util.hpp +++ /dev/null @@ -1,99 +0,0 @@ -#pragma once -#include -#include - -namespace steem { namespace protocol { - -template< typename AuthContainerType > -void verify_authority( const vector& auth_containers, const flat_set& sigs, - const authority_getter& get_active, - const authority_getter& get_owner, - const authority_getter& get_posting, - uint32_t max_recursion_depth = STEEM_MAX_SIG_CHECK_DEPTH, - bool allow_committe = false, - const flat_set< account_name_type >& active_approvals = flat_set< account_name_type >(), - const flat_set< account_name_type >& owner_approvals = flat_set< account_name_type >(), - const flat_set< account_name_type >& posting_approvals = flat_set< account_name_type >() - ) -{ try { - flat_set< account_name_type > required_active; - flat_set< account_name_type > required_owner; - flat_set< account_name_type > required_posting; - vector< authority > other; - - get_required_auth_visitor auth_visitor( required_active, required_owner, required_posting, other ); - - for( const auto& a : auth_containers ) - auth_visitor( a ); - - /** - * Transactions with operations required posting authority cannot be combined - * with transactions requiring active or owner authority. This is for ease of - * implementation. Future versions of authority verification may be able to - * check for the merged authority of active and posting. - */ - if( required_posting.size() ) { - FC_ASSERT( required_active.size() == 0 ); - FC_ASSERT( required_owner.size() == 0 ); - FC_ASSERT( other.size() == 0 ); - - flat_set< public_key_type > avail; - sign_state s(sigs,get_posting,avail); - s.max_recursion = max_recursion_depth; - for( auto& id : posting_approvals ) - s.approved_by.insert( id ); - for( const auto& id : required_posting ) - { - STEEM_ASSERT( s.check_authority(id) || - s.check_authority(get_active(id)) || - s.check_authority(get_owner(id)), - tx_missing_posting_auth, "Missing Posting Authority ${id}", - ("id",id) - ("posting",get_posting(id)) - ("active",get_active(id)) - ("owner",get_owner(id)) ); - } - STEEM_ASSERT( - !s.remove_unused_signatures(), - tx_irrelevant_sig, - "Unnecessary signature(s) detected" - ); - return; - } - - flat_set< public_key_type > avail; - sign_state s(sigs,get_active,avail); - s.max_recursion = max_recursion_depth; - for( auto& id : active_approvals ) - s.approved_by.insert( id ); - for( auto& id : owner_approvals ) - s.approved_by.insert( id ); - - for( const auto& auth : other ) - { - STEEM_ASSERT( s.check_authority(auth), tx_missing_other_auth, "Missing Authority", ("auth",auth)("sigs",sigs) ); - } - - // fetch all of the top level authorities - for( const auto& id : required_active ) - { - STEEM_ASSERT( s.check_authority(id) || - s.check_authority(get_owner(id)), - tx_missing_active_auth, "Missing Active Authority ${id}", ("id",id)("auth",get_active(id))("owner",get_owner(id)) ); - } - - for( const auto& id : required_owner ) - { - STEEM_ASSERT( owner_approvals.find(id) != owner_approvals.end() || - s.check_authority(get_owner(id)), - tx_missing_owner_auth, "Missing Owner Authority ${id}", ("id",id)("auth",get_owner(id)) ); - } - - STEEM_ASSERT( - !s.remove_unused_signatures(), - tx_irrelevant_sig, - "Unnecessary signature(s) detected" - ); -} FC_CAPTURE_AND_RETHROW( (auth_containers)(sigs) ) } - -} } // steem::protocol diff --git a/libraries/protocol/include/steem/protocol/types_fwd.hpp b/libraries/protocol/include/steem/protocol/types_fwd.hpp deleted file mode 100644 index 0c23036b..00000000 --- a/libraries/protocol/include/steem/protocol/types_fwd.hpp +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -namespace fc { -class uint128; -class variant; -} // fc - -namespace steem { namespace protocol { -template< typename Storage = fc::uint128 > -class fixed_string_impl; - -class asset_symbol_type; -class legacy_steem_asset_symbol_type; -struct legacy_steem_asset; -} } // steem::protocol - -namespace fc { namespace raw { - -template -inline void pack( Stream& s, const uint128& u ); -template -inline void unpack( Stream& s, uint128& u ); - -template< typename Stream, typename Storage > -inline void pack( Stream& s, const steem::protocol::fixed_string_impl< Storage >& u ); -template< typename Stream, typename Storage > -inline void unpack( Stream& s, steem::protocol::fixed_string_impl< Storage >& u ); - -template< typename Stream > -inline void pack( Stream& s, const steem::protocol::asset_symbol_type& sym ); -template< typename Stream > -inline void unpack( Stream& s, steem::protocol::asset_symbol_type& sym ); - -template< typename Stream > -inline void pack( Stream& s, const steem::protocol::legacy_steem_asset_symbol_type& sym ); -template< typename Stream > -inline void unpack( Stream& s, steem::protocol::legacy_steem_asset_symbol_type& sym ); - -} // raw - -template< typename Storage > -inline void to_variant( const steem::protocol::fixed_string_impl< Storage >& s, fc::variant& v ); -template< typename Storage > -inline void from_variant( const variant& v, steem::protocol::fixed_string_impl< Storage >& s ); - -inline void to_variant( const steem::protocol::asset_symbol_type& sym, fc::variant& v ); - -inline void from_variant( const fc::variant& v, steem::protocol::legacy_steem_asset& leg ); -inline void to_variant( const steem::protocol::legacy_steem_asset& leg, fc::variant& v ); - -} // fc diff --git a/libraries/protocol/include/steem/protocol/validation.hpp b/libraries/protocol/include/steem/protocol/validation.hpp deleted file mode 100644 index e1044d75..00000000 --- a/libraries/protocol/include/steem/protocol/validation.hpp +++ /dev/null @@ -1,28 +0,0 @@ - -#pragma once - -#include -#include -#include - -#include - -namespace steem { namespace protocol { - -inline bool is_asset_type( asset asset, asset_symbol_type symbol ) -{ - return asset.symbol == symbol; -} - -inline void validate_account_name( const string& name ) -{ - FC_ASSERT( is_valid_account_name( name ), "Account name ${n} is invalid", ("n", name) ); -} - -inline void validate_permlink( const string& permlink ) -{ - FC_ASSERT( permlink.size() < STEEM_MAX_PERMLINK_LENGTH, "permlink is too long" ); - FC_ASSERT( fc::is_utf8( permlink ), "permlink not formatted in UTF8" ); -} - -} } diff --git a/libraries/protocol/include/steemit/protocol/config.hpp b/libraries/protocol/include/steemit/protocol/config.hpp deleted file mode 100644 index 755c87fb..00000000 --- a/libraries/protocol/include/steemit/protocol/config.hpp +++ /dev/null @@ -1,272 +0,0 @@ -/* - * Copyright (c) 2016 Steemit, Inc., and contributors. - */ -#pragma once - -#define STEEMIT_BLOCKCHAIN_VERSION ( version(0, 19, 3) ) -#define STEEMIT_BLOCKCHAIN_HARDFORK_VERSION ( hardfork_version( STEEMIT_BLOCKCHAIN_VERSION ) ) - -#ifdef IS_TEST_NET -#define STEEMIT_INIT_PRIVATE_KEY (fc::ecc::private_key::regenerate(fc::sha256::hash(std::string("init_key")))) -#define STEEMIT_INIT_PUBLIC_KEY_STR (std::string( steemit::protocol::public_key_type(STEEMIT_INIT_PRIVATE_KEY.get_public_key()) )) -#define STEEMIT_CHAIN_ID (fc::sha256::hash("testnet")) - -#define VESTS_SYMBOL (uint64_t(6) | (uint64_t('V') << 8) | (uint64_t('E') << 16) | (uint64_t('S') << 24) | (uint64_t('T') << 32) | (uint64_t('S') << 40)) ///< VESTS with 6 digits of precision -#define STEEM_SYMBOL (uint64_t(3) | (uint64_t('T') << 8) | (uint64_t('E') << 16) | (uint64_t('S') << 24) | (uint64_t('T') << 32) | (uint64_t('S') << 40)) ///< STEEM with 3 digits of precision -#define SBD_SYMBOL (uint64_t(3) | (uint64_t('T') << 8) | (uint64_t('B') << 16) | (uint64_t('D') << 24) ) ///< Test Backed Dollars with 3 digits of precision -#define STMD_SYMBOL (uint64_t(3) | (uint64_t('T') << 8) | (uint64_t('S') << 16) | (uint64_t('T') << 24) | (uint64_t('D') << 32) ) ///< Test Dollars with 3 digits of precision - -#define STEEMIT_SYMBOL "TEST" -#define STEEMIT_ADDRESS_PREFIX "TST" - -#define STEEMIT_GENESIS_TIME (fc::time_point_sec(1451606400)) -#define STEEMIT_MINING_TIME (fc::time_point_sec(1451606400)) -#define STEEMIT_CASHOUT_WINDOW_SECONDS (60*60) /// 1 hr -#define STEEMIT_CASHOUT_WINDOW_SECONDS_PRE_HF12 (STEEMIT_CASHOUT_WINDOW_SECONDS) -#define STEEMIT_CASHOUT_WINDOW_SECONDS_PRE_HF17 (STEEMIT_CASHOUT_WINDOW_SECONDS) -#define STEEMIT_SECOND_CASHOUT_WINDOW (60*60*24*3) /// 3 days -#define STEEMIT_MAX_CASHOUT_WINDOW_SECONDS (60*60*24) /// 1 day -#define STEEMIT_VOTE_CHANGE_LOCKOUT_PERIOD (60*10) /// 10 minutes -#define STEEMIT_UPVOTE_LOCKOUT_HF7 (fc::minutes(1)) -#define STEEMIT_UPVOTE_LOCKOUT_HF17 (fc::minutes(5)) - - -#define STEEMIT_ORIGINAL_MIN_ACCOUNT_CREATION_FEE 0 -#define STEEMIT_MIN_ACCOUNT_CREATION_FEE 0 - -#define STEEMIT_OWNER_AUTH_RECOVERY_PERIOD fc::seconds(60) -#define STEEMIT_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD fc::seconds(12) -#define STEEMIT_OWNER_UPDATE_LIMIT fc::seconds(0) -#define STEEMIT_OWNER_AUTH_HISTORY_TRACKING_START_BLOCK_NUM 1 -#else // IS LIVE STEEM NETWORK - -#define STEEMIT_INIT_PUBLIC_KEY_STR "STM8GC13uCZbP44HzMLV6zPZGwVQ8Nt4Kji8PapsPiNq1BK153XTX" -#define STEEMIT_CHAIN_ID (steemit::protocol::chain_id_type()) -#define VESTS_SYMBOL (uint64_t(6) | (uint64_t('V') << 8) | (uint64_t('E') << 16) | (uint64_t('S') << 24) | (uint64_t('T') << 32) | (uint64_t('S') << 40)) ///< VESTS with 6 digits of precision -#define STEEM_SYMBOL (uint64_t(3) | (uint64_t('S') << 8) | (uint64_t('T') << 16) | (uint64_t('E') << 24) | (uint64_t('E') << 32) | (uint64_t('M') << 40)) ///< STEEM with 3 digits of precision -#define SBD_SYMBOL (uint64_t(3) | (uint64_t('S') << 8) | (uint64_t('B') << 16) | (uint64_t('D') << 24) ) ///< STEEM Backed Dollars with 3 digits of precision -#define STMD_SYMBOL (uint64_t(3) | (uint64_t('S') << 8) | (uint64_t('T') << 16) | (uint64_t('M') << 24) | (uint64_t('D') << 32) ) ///< STEEM Dollars with 3 digits of precision -#define STEEMIT_SYMBOL "STEEM" -#define STEEMIT_ADDRESS_PREFIX "STM" - -#define STEEMIT_GENESIS_TIME (fc::time_point_sec(1458835200)) -#define STEEMIT_MINING_TIME (fc::time_point_sec(1458838800)) -#define STEEMIT_CASHOUT_WINDOW_SECONDS_PRE_HF12 (60*60*24) /// 1 day -#define STEEMIT_CASHOUT_WINDOW_SECONDS_PRE_HF17 (60*60*12) /// 12 hours -#define STEEMIT_CASHOUT_WINDOW_SECONDS (60*60*24*7) /// 7 days -#define STEEMIT_SECOND_CASHOUT_WINDOW (60*60*24*30) /// 30 days -#define STEEMIT_MAX_CASHOUT_WINDOW_SECONDS (60*60*24*14) /// 2 weeks -#define STEEMIT_VOTE_CHANGE_LOCKOUT_PERIOD (60*60*2) /// 2 hours -#define STEEMIT_UPVOTE_LOCKOUT_HF7 (fc::minutes(1)) -#define STEEMIT_UPVOTE_LOCKOUT_HF17 (fc::hours(12)) - -#define STEEMIT_ORIGINAL_MIN_ACCOUNT_CREATION_FEE 100000 -#define STEEMIT_MIN_ACCOUNT_CREATION_FEE 1 - -#define STEEMIT_OWNER_AUTH_RECOVERY_PERIOD fc::days(30) -#define STEEMIT_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD fc::days(1) -#define STEEMIT_OWNER_UPDATE_LIMIT fc::minutes(60) -#define STEEMIT_OWNER_AUTH_HISTORY_TRACKING_START_BLOCK_NUM 3186477 - -#endif - -#define STEEMIT_BLOCK_INTERVAL 3 -#define STEEMIT_BLOCKS_PER_YEAR (365*24*60*60/STEEMIT_BLOCK_INTERVAL) -#define STEEMIT_BLOCKS_PER_DAY (24*60*60/STEEMIT_BLOCK_INTERVAL) -#define STEEMIT_START_VESTING_BLOCK (STEEMIT_BLOCKS_PER_DAY * 7) -#define STEEMIT_START_MINER_VOTING_BLOCK (STEEMIT_BLOCKS_PER_DAY * 30) - -#define STEEMIT_INIT_MINER_NAME "initminer" -#define STEEMIT_NUM_INIT_MINERS 1 -#define STEEMIT_INIT_TIME (fc::time_point_sec()); - -#define STEEMIT_MAX_WITNESSES 21 - -#define STEEMIT_MAX_VOTED_WITNESSES_HF0 19 -#define STEEMIT_MAX_MINER_WITNESSES_HF0 1 -#define STEEMIT_MAX_RUNNER_WITNESSES_HF0 1 - -#define STEEMIT_MAX_VOTED_WITNESSES_HF17 20 -#define STEEMIT_MAX_MINER_WITNESSES_HF17 0 -#define STEEMIT_MAX_RUNNER_WITNESSES_HF17 1 - -#define STEEMIT_HARDFORK_REQUIRED_WITNESSES 17 // 17 of the 21 dpos witnesses (20 elected and 1 virtual time) required for hardfork. This guarantees 75% participation on all subsequent rounds. -#define STEEMIT_MAX_TIME_UNTIL_EXPIRATION (60*60) // seconds, aka: 1 hour -#define STEEMIT_MAX_MEMO_SIZE 2048 -#define STEEMIT_MAX_PROXY_RECURSION_DEPTH 4 -#define STEEMIT_VESTING_WITHDRAW_INTERVALS_PRE_HF_16 104 -#define STEEMIT_VESTING_WITHDRAW_INTERVALS 13 -#define STEEMIT_VESTING_WITHDRAW_INTERVAL_SECONDS (60*60*24*7) /// 1 week per interval -#define STEEMIT_MAX_WITHDRAW_ROUTES 10 -#define STEEMIT_SAVINGS_WITHDRAW_TIME (fc::days(3)) -#define STEEMIT_SAVINGS_WITHDRAW_REQUEST_LIMIT 100 -#define STEEMIT_VOTE_REGENERATION_SECONDS (5*60*60*24) // 5 day -#define STEEMIT_MAX_VOTE_CHANGES 5 -#define STEEMIT_REVERSE_AUCTION_WINDOW_SECONDS (60*30) /// 30 minutes -#define STEEMIT_MIN_VOTE_INTERVAL_SEC 3 -#define STEEMIT_VOTE_DUST_THRESHOLD (50000000) - -#define STEEMIT_MIN_ROOT_COMMENT_INTERVAL (fc::seconds(60*5)) // 5 minutes -#define STEEMIT_MIN_REPLY_INTERVAL (fc::seconds(20)) // 20 seconds -#define STEEMIT_POST_AVERAGE_WINDOW (60*60*24u) // 1 day -#define STEEMIT_POST_MAX_BANDWIDTH (4*STEEMIT_100_PERCENT) // 2 posts per 1 days, average 1 every 12 hours -#define STEEMIT_POST_WEIGHT_CONSTANT (uint64_t(STEEMIT_POST_MAX_BANDWIDTH) * STEEMIT_POST_MAX_BANDWIDTH) - -#define STEEMIT_MAX_ACCOUNT_WITNESS_VOTES 30 - -#define STEEMIT_100_PERCENT 10000 -#define STEEMIT_1_PERCENT (STEEMIT_100_PERCENT/100) -#define STEEMIT_1_TENTH_PERCENT (STEEMIT_100_PERCENT/1000) -#define STEEMIT_DEFAULT_SBD_INTEREST_RATE (10*STEEMIT_1_PERCENT) ///< 10% APR - -#define STEEMIT_INFLATION_RATE_START_PERCENT (978) // Fixes block 7,000,000 to 9.5% -#define STEEMIT_INFLATION_RATE_STOP_PERCENT (95) // 0.95% -#define STEEMIT_INFLATION_NARROWING_PERIOD (250000) // Narrow 0.01% every 250k blocks -#define STEEMIT_CONTENT_REWARD_PERCENT (75*STEEMIT_1_PERCENT) //75% of inflation, 7.125% inflation -#define STEEMIT_VESTING_FUND_PERCENT (15*STEEMIT_1_PERCENT) //15% of inflation, 1.425% inflation - -#define STEEMIT_MINER_PAY_PERCENT (STEEMIT_1_PERCENT) // 1% -#define STEEMIT_MIN_RATION 100000 -#define STEEMIT_MAX_RATION_DECAY_RATE (1000000) -#define STEEMIT_FREE_TRANSACTIONS_WITH_NEW_ACCOUNT 100 - -#define STEEMIT_BANDWIDTH_AVERAGE_WINDOW_SECONDS (60*60*24*7) ///< 1 week -#define STEEMIT_BANDWIDTH_PRECISION (uint64_t(1000000)) ///< 1 million -#define STEEMIT_MAX_COMMENT_DEPTH_PRE_HF17 6 -#define STEEMIT_MAX_COMMENT_DEPTH 0xffff // 64k -#define STEEMIT_SOFT_MAX_COMMENT_DEPTH 0xff // 255 - -#define STEEMIT_MAX_RESERVE_RATIO (20000) - -#define STEEMIT_CREATE_ACCOUNT_WITH_STEEM_MODIFIER 30 -#define STEEMIT_CREATE_ACCOUNT_DELEGATION_RATIO 5 -#define STEEMIT_CREATE_ACCOUNT_DELEGATION_TIME fc::days(30) - -#define STEEMIT_MINING_REWARD asset( 1000, STEEM_SYMBOL ) -#define STEEMIT_EQUIHASH_N 140 -#define STEEMIT_EQUIHASH_K 6 - -#define STEEMIT_LIQUIDITY_TIMEOUT_SEC (fc::seconds(60*60*24*7)) // After one week volume is set to 0 -#define STEEMIT_MIN_LIQUIDITY_REWARD_PERIOD_SEC (fc::seconds(60)) // 1 minute required on books to receive volume -#define STEEMIT_LIQUIDITY_REWARD_PERIOD_SEC (60*60) -#define STEEMIT_LIQUIDITY_REWARD_BLOCKS (STEEMIT_LIQUIDITY_REWARD_PERIOD_SEC/STEEMIT_BLOCK_INTERVAL) -#define STEEMIT_MIN_LIQUIDITY_REWARD (asset( 1000*STEEMIT_LIQUIDITY_REWARD_BLOCKS, STEEM_SYMBOL )) // Minumum reward to be paid out to liquidity providers -#define STEEMIT_MIN_CONTENT_REWARD STEEMIT_MINING_REWARD -#define STEEMIT_MIN_CURATE_REWARD STEEMIT_MINING_REWARD -#define STEEMIT_MIN_PRODUCER_REWARD STEEMIT_MINING_REWARD -#define STEEMIT_MIN_POW_REWARD STEEMIT_MINING_REWARD - -#define STEEMIT_ACTIVE_CHALLENGE_FEE asset( 2000, STEEM_SYMBOL ) -#define STEEMIT_OWNER_CHALLENGE_FEE asset( 30000, STEEM_SYMBOL ) -#define STEEMIT_ACTIVE_CHALLENGE_COOLDOWN fc::days(1) -#define STEEMIT_OWNER_CHALLENGE_COOLDOWN fc::days(1) - -#define STEEMIT_POST_REWARD_FUND_NAME ("post") -#define STEEMIT_COMMENT_REWARD_FUND_NAME ("comment") -#define STEEMIT_RECENT_RSHARES_DECAY_RATE_HF17 (fc::days(30)) -#define STEEMIT_RECENT_RSHARES_DECAY_RATE_HF19 (fc::days(15)) -#define STEEMIT_CONTENT_CONSTANT_HF0 (uint128_t(uint64_t(2000000000000ll))) -// note, if redefining these constants make sure calculate_claims doesn't overflow - -// 5ccc e802 de5f -// int(expm1( log1p( 1 ) / BLOCKS_PER_YEAR ) * 2**STEEMIT_APR_PERCENT_SHIFT_PER_BLOCK / 100000 + 0.5) -// we use 100000 here instead of 10000 because we end up creating an additional 9x for vesting -#define STEEMIT_APR_PERCENT_MULTIPLY_PER_BLOCK ( (uint64_t( 0x5ccc ) << 0x20) \ - | (uint64_t( 0xe802 ) << 0x10) \ - | (uint64_t( 0xde5f ) ) \ - ) -// chosen to be the maximal value such that STEEMIT_APR_PERCENT_MULTIPLY_PER_BLOCK * 2**64 * 100000 < 2**128 -#define STEEMIT_APR_PERCENT_SHIFT_PER_BLOCK 87 - -#define STEEMIT_APR_PERCENT_MULTIPLY_PER_ROUND ( (uint64_t( 0x79cc ) << 0x20 ) \ - | (uint64_t( 0xf5c7 ) << 0x10 ) \ - | (uint64_t( 0x3480 ) ) \ - ) - -#define STEEMIT_APR_PERCENT_SHIFT_PER_ROUND 83 - -// We have different constants for hourly rewards -// i.e. hex(int(math.expm1( math.log1p( 1 ) / HOURS_PER_YEAR ) * 2**STEEMIT_APR_PERCENT_SHIFT_PER_HOUR / 100000 + 0.5)) -#define STEEMIT_APR_PERCENT_MULTIPLY_PER_HOUR ( (uint64_t( 0x6cc1 ) << 0x20) \ - | (uint64_t( 0x39a1 ) << 0x10) \ - | (uint64_t( 0x5cbd ) ) \ - ) - -// chosen to be the maximal value such that STEEMIT_APR_PERCENT_MULTIPLY_PER_HOUR * 2**64 * 100000 < 2**128 -#define STEEMIT_APR_PERCENT_SHIFT_PER_HOUR 77 - -// These constants add up to GRAPHENE_100_PERCENT. Each GRAPHENE_1_PERCENT is equivalent to 1% per year APY -// *including the corresponding 9x vesting rewards* -#define STEEMIT_CURATE_APR_PERCENT 3875 -#define STEEMIT_CONTENT_APR_PERCENT 3875 -#define STEEMIT_LIQUIDITY_APR_PERCENT 750 -#define STEEMIT_PRODUCER_APR_PERCENT 750 -#define STEEMIT_POW_APR_PERCENT 750 - -#define STEEMIT_MIN_PAYOUT_SBD (asset(20,SBD_SYMBOL)) - -#define STEEMIT_SBD_STOP_PERCENT (5*STEEMIT_1_PERCENT ) // Stop printing SBD at 5% Market Cap -#define STEEMIT_SBD_START_PERCENT (2*STEEMIT_1_PERCENT) // Start reducing printing of SBD at 2% Market Cap - -#define STEEMIT_MIN_ACCOUNT_NAME_LENGTH 3 -#define STEEMIT_MAX_ACCOUNT_NAME_LENGTH 16 - -#define STEEMIT_MIN_PERMLINK_LENGTH 0 -#define STEEMIT_MAX_PERMLINK_LENGTH 256 -#define STEEMIT_MAX_WITNESS_URL_LENGTH 2048 - -#define STEEMIT_INIT_SUPPLY int64_t(0) -#define STEEMIT_MAX_SHARE_SUPPLY int64_t(1000000000000000ll) -#define STEEMIT_MAX_SIG_CHECK_DEPTH 2 - -#define STEEMIT_MIN_TRANSACTION_SIZE_LIMIT 1024 -#define STEEMIT_SECONDS_PER_YEAR (uint64_t(60*60*24*365ll)) - -#define STEEMIT_SBD_INTEREST_COMPOUND_INTERVAL_SEC (60*60*24*30) -#define STEEMIT_MAX_TRANSACTION_SIZE (1024*64) -#define STEEMIT_MIN_BLOCK_SIZE_LIMIT (STEEMIT_MAX_TRANSACTION_SIZE) -#define STEEMIT_MAX_BLOCK_SIZE (STEEMIT_MAX_TRANSACTION_SIZE*STEEMIT_BLOCK_INTERVAL*2000) -#define STEEMIT_SOFT_MAX_BLOCK_SIZE (2*1024*1024) -#define STEEMIT_MIN_BLOCK_SIZE 115 -#define STEEMIT_BLOCKS_PER_HOUR (60*60/STEEMIT_BLOCK_INTERVAL) -#define STEEMIT_FEED_INTERVAL_BLOCKS (STEEMIT_BLOCKS_PER_HOUR) -#define STEEMIT_FEED_HISTORY_WINDOW_PRE_HF_16 (24*7) /// 7 days * 24 hours per day -#define STEEMIT_FEED_HISTORY_WINDOW (12*7) // 3.5 days -#define STEEMIT_MAX_FEED_AGE_SECONDS (60*60*24*7) // 7 days -#define STEEMIT_MIN_FEEDS (STEEMIT_MAX_WITNESSES/3) /// protects the network from conversions before price has been established -#define STEEMIT_CONVERSION_DELAY_PRE_HF_16 (fc::days(7)) -#define STEEMIT_CONVERSION_DELAY (fc::hours(STEEMIT_FEED_HISTORY_WINDOW)) //3.5 day conversion - -#define STEEMIT_MIN_UNDO_HISTORY 10 -#define STEEMIT_MAX_UNDO_HISTORY 10000 - -#define STEEMIT_MIN_TRANSACTION_EXPIRATION_LIMIT (STEEMIT_BLOCK_INTERVAL * 5) // 5 transactions per block -#define STEEMIT_BLOCKCHAIN_PRECISION uint64_t( 1000 ) - -#define STEEMIT_BLOCKCHAIN_PRECISION_DIGITS 3 -#define STEEMIT_MAX_INSTANCE_ID (uint64_t(-1)>>16) -/** NOTE: making this a power of 2 (say 2^15) would greatly accelerate fee calcs */ -#define STEEMIT_MAX_AUTHORITY_MEMBERSHIP 10 -#define STEEMIT_MAX_ASSET_WHITELIST_AUTHORITIES 10 -#define STEEMIT_MAX_URL_LENGTH 127 - -#define STEEMIT_IRREVERSIBLE_THRESHOLD (75 * STEEMIT_1_PERCENT) - -#define VIRTUAL_SCHEDULE_LAP_LENGTH ( fc::uint128(uint64_t(-1)) ) -#define VIRTUAL_SCHEDULE_LAP_LENGTH2 ( fc::uint128::max_value() ) - -/** - * Reserved Account IDs with special meaning - */ -///@{ -/// Represents the current witnesses -#define STEEMIT_MINER_ACCOUNT "miners" -/// Represents the canonical account with NO authority (nobody can access funds in null account) -#define STEEMIT_NULL_ACCOUNT "null" -/// Represents the canonical account with WILDCARD authority (anybody can access funds in temp account) -#define STEEMIT_TEMP_ACCOUNT "temp" -/// Represents the canonical account for specifying you will vote for directly (as opposed to a proxy) -#define STEEMIT_PROXY_TO_SELF_ACCOUNT "" -/// Represents the canonical root post parent account -#define STEEMIT_ROOT_POST_PARENT (account_name_type()) -///@} diff --git a/libraries/protocol/include/steemit/protocol/transaction_util.hpp b/libraries/protocol/include/steemit/protocol/transaction_util.hpp deleted file mode 100644 index c46f127f..00000000 --- a/libraries/protocol/include/steemit/protocol/transaction_util.hpp +++ /dev/null @@ -1,99 +0,0 @@ -#pragma once -#include -#include - -namespace steemit { namespace protocol { - -template< typename AuthContainerType > -void verify_authority( const vector& auth_containers, const flat_set& sigs, - const authority_getter& get_active, - const authority_getter& get_owner, - const authority_getter& get_posting, - uint32_t max_recursion_depth = STEEMIT_MAX_SIG_CHECK_DEPTH, - bool allow_committe = false, - const flat_set< account_name_type >& active_approvals = flat_set< account_name_type >(), - const flat_set< account_name_type >& owner_approvals = flat_set< account_name_type >(), - const flat_set< account_name_type >& posting_approvals = flat_set< account_name_type >() - ) -{ try { - flat_set< account_name_type > required_active; - flat_set< account_name_type > required_owner; - flat_set< account_name_type > required_posting; - vector< authority > other; - - get_required_auth_visitor auth_visitor( required_active, required_owner, required_posting, other ); - - for( const auto& a : auth_containers ) - auth_visitor( a ); - - /** - * Transactions with operations required posting authority cannot be combined - * with transactions requiring active or owner authority. This is for ease of - * implementation. Future versions of authority verification may be able to - * check for the merged authority of active and posting. - */ - if( required_posting.size() ) { - FC_ASSERT( required_active.size() == 0 ); - FC_ASSERT( required_owner.size() == 0 ); - FC_ASSERT( other.size() == 0 ); - - flat_set< public_key_type > avail; - sign_state s(sigs,get_posting,avail); - s.max_recursion = max_recursion_depth; - for( auto& id : posting_approvals ) - s.approved_by.insert( id ); - for( const auto& id : required_posting ) - { - STEEMIT_ASSERT( s.check_authority(id) || - s.check_authority(get_active(id)) || - s.check_authority(get_owner(id)), - tx_missing_posting_auth, "Missing Posting Authority ${id}", - ("id",id) - ("posting",get_posting(id)) - ("active",get_active(id)) - ("owner",get_owner(id)) ); - } - STEEMIT_ASSERT( - !s.remove_unused_signatures(), - tx_irrelevant_sig, - "Unnecessary signature(s) detected" - ); - return; - } - - flat_set< public_key_type > avail; - sign_state s(sigs,get_active,avail); - s.max_recursion = max_recursion_depth; - for( auto& id : active_approvals ) - s.approved_by.insert( id ); - for( auto& id : owner_approvals ) - s.approved_by.insert( id ); - - for( const auto& auth : other ) - { - STEEMIT_ASSERT( s.check_authority(auth), tx_missing_other_auth, "Missing Authority", ("auth",auth)("sigs",sigs) ); - } - - // fetch all of the top level authorities - for( const auto& id : required_active ) - { - STEEMIT_ASSERT( s.check_authority(id) || - s.check_authority(get_owner(id)), - tx_missing_active_auth, "Missing Active Authority ${id}", ("id",id)("auth",get_active(id))("owner",get_owner(id)) ); - } - - for( const auto& id : required_owner ) - { - STEEMIT_ASSERT( owner_approvals.find(id) != owner_approvals.end() || - s.check_authority(get_owner(id)), - tx_missing_owner_auth, "Missing Owner Authority ${id}", ("id",id)("auth",get_owner(id)) ); - } - - STEEMIT_ASSERT( - !s.remove_unused_signatures(), - tx_irrelevant_sig, - "Unnecessary signature(s) detected" - ); -} FC_CAPTURE_AND_RETHROW( (auth_containers)(sigs) ) } - -} } // steemit::protocol diff --git a/libraries/protocol/operations.cpp b/libraries/protocol/operations.cpp index d8eaa19c..21443444 100644 --- a/libraries/protocol/operations.cpp +++ b/libraries/protocol/operations.cpp @@ -1,16 +1,14 @@ -#include +#include -#include +#include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { struct is_market_op_visitor { typedef bool result_type; template bool operator()( T&& v )const { return false; } - bool operator()( const limit_order_create_operation& )const { return true; } - bool operator()( const limit_order_cancel_operation& )const { return true; } bool operator()( const transfer_operation& )const { return true; } bool operator()( const transfer_to_vesting_operation& )const { return true; } }; @@ -32,6 +30,6 @@ bool is_virtual_operation( const operation& op ) return op.visit( is_vop_visitor() ); } -} } // steem::protocol +} } // sophiatx::protocol -STEEM_DEFINE_OPERATION_TYPE( steem::protocol::operation ) +SOPHIATX_DEFINE_OPERATION_TYPE( sophiatx::protocol::operation ) diff --git a/libraries/protocol/sign_state.cpp b/libraries/protocol/sign_state.cpp index b7af19b6..567e055a 100644 --- a/libraries/protocol/sign_state.cpp +++ b/libraries/protocol/sign_state.cpp @@ -1,7 +1,7 @@ -#include +#include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { bool sign_state::signed_by( const public_key_type& k ) { @@ -19,7 +19,8 @@ bool sign_state::signed_by( const public_key_type& k ) bool sign_state::check_authority( string id ) { if( approved_by.find(id) != approved_by.end() ) return true; - return check_authority( get_active(id) ); + const auto& a = get_active(id); + return check_authority( a ); } bool sign_state::check_authority( const authority& auth, uint32_t depth ) @@ -82,4 +83,4 @@ sign_state::sign_state( approved_by.insert( "temp" ); } -} } // steem::protocol +} } // sophiatx::protocol diff --git a/libraries/protocol/smt_operations.cpp b/libraries/protocol/smt_operations.cpp index 76bd14b5..b7930688 100644 --- a/libraries/protocol/smt_operations.cpp +++ b/libraries/protocol/smt_operations.cpp @@ -1,17 +1,17 @@ -#include -#include -#ifdef STEEM_ENABLE_SMT +#include +#include +#ifdef SOPHIATX_ENABLE_SMT #define SMT_MAX_UNIT_ROUTES 10 -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { void smt_create_operation::validate()const { validate_account_name( control_account ); FC_ASSERT( smt_creation_fee.amount >= 0, "fee cannot be negative" ); - FC_ASSERT( smt_creation_fee.amount <= STEEM_MAX_SHARE_SUPPLY, "Fee must be smaller than STEEM_MAX_SHARE_SUPPLY" ); - FC_ASSERT( is_asset_type( smt_creation_fee, STEEM_SYMBOL ) || is_asset_type( smt_creation_fee, SBD_SYMBOL ), "Fee must be STEEM or SBD" ); + FC_ASSERT( smt_creation_fee.amount <= SOPHIATX_MAX_SHARE_SUPPLY, "Fee must be smaller than SOPHIATX_MAX_SHARE_SUPPLY" ); + FC_ASSERT( is_asset_type( smt_creation_fee, SOPHIATX_SYMBOL ) || is_asset_type( smt_creation_fee, SBD_SYMBOL ), "Fee must be SOPHIATX or SBD" ); symbol.validate(); FC_ASSERT( symbol.space() == asset_symbol_type::smt_nai_space, "legacy symbol used instead of NAI" ); FC_ASSERT( symbol.is_vesting() == false, "liquid variant of NAI expected"); @@ -30,10 +30,10 @@ bool is_valid_unit_target( const account_name_type& name ) return false; } -uint32_t smt_generation_unit::steem_unit_sum()const +uint32_t smt_generation_unit::sophiatx_unit_sum()const { uint32_t result = 0; - for(const std::pair< account_name_type, uint16_t >& e : steem_unit ) + for(const std::pair< account_name_type, uint16_t >& e : sophiatx_unit ) result += e.second; return result; } @@ -48,8 +48,8 @@ uint32_t smt_generation_unit::token_unit_sum()const void smt_generation_unit::validate()const { - FC_ASSERT( steem_unit.size() <= SMT_MAX_UNIT_ROUTES ); - for(const std::pair< account_name_type, uint16_t >& e : steem_unit ) + FC_ASSERT( sophiatx_unit.size() <= SMT_MAX_UNIT_ROUTES ); + for(const std::pair< account_name_type, uint16_t >& e : sophiatx_unit ) { FC_ASSERT( is_valid_unit_target( e.first ) ); FC_ASSERT( e.second > 0 ); @@ -79,7 +79,7 @@ void smt_cap_commitment::fillin_nonhidden_value( share_type value ) void smt_cap_commitment::validate()const { FC_ASSERT( lower_bound > 0 ); - FC_ASSERT( upper_bound <= STEEM_MAX_SHARE_SUPPLY ); + FC_ASSERT( upper_bound <= SOPHIATX_MAX_SHARE_SUPPLY ); FC_ASSERT( lower_bound <= upper_bound ); if( lower_bound == upper_bound ) { @@ -91,9 +91,9 @@ void smt_cap_commitment::validate()const #define SMT_MAX_UNIT_COUNT 20 #define SMT_MAX_DECIMAL_PLACES 8 -#define SMT_MIN_HARD_CAP_STEEM_UNITS 10000 -#define SMT_MIN_SATURATION_STEEM_UNITS 1000 -#define SMT_MIN_SOFT_CAP_STEEM_UNITS 1000 +#define SMT_MIN_HARD_CAP_SOPHIATX_UNITS 10000 +#define SMT_MIN_SATURATION_SOPHIATX_UNITS 1000 +#define SMT_MIN_SOFT_CAP_SOPHIATX_UNITS 1000 void smt_capped_generation_policy::validate()const { @@ -101,67 +101,67 @@ void smt_capped_generation_policy::validate()const post_soft_cap_unit.validate(); FC_ASSERT( soft_cap_percent > 0 ); - FC_ASSERT( soft_cap_percent <= STEEM_100_PERCENT ); + FC_ASSERT( soft_cap_percent <= SOPHIATX_100_PERCENT ); - FC_ASSERT( pre_soft_cap_unit.steem_unit.size() > 0 ); + FC_ASSERT( pre_soft_cap_unit.sophiatx_unit.size() > 0 ); FC_ASSERT( pre_soft_cap_unit.token_unit.size() > 0 ); - FC_ASSERT( pre_soft_cap_unit.steem_unit.size() <= SMT_MAX_UNIT_COUNT ); + FC_ASSERT( pre_soft_cap_unit.sophiatx_unit.size() <= SMT_MAX_UNIT_COUNT ); FC_ASSERT( pre_soft_cap_unit.token_unit.size() <= SMT_MAX_UNIT_COUNT ); - FC_ASSERT( post_soft_cap_unit.steem_unit.size() <= SMT_MAX_UNIT_COUNT ); + FC_ASSERT( post_soft_cap_unit.sophiatx_unit.size() <= SMT_MAX_UNIT_COUNT ); FC_ASSERT( post_soft_cap_unit.token_unit.size() <= SMT_MAX_UNIT_COUNT ); // TODO : Check account name - if( soft_cap_percent == STEEM_100_PERCENT ) + if( soft_cap_percent == SOPHIATX_100_PERCENT ) { - FC_ASSERT( post_soft_cap_unit.steem_unit.size() == 0 ); + FC_ASSERT( post_soft_cap_unit.sophiatx_unit.size() == 0 ); FC_ASSERT( post_soft_cap_unit.token_unit.size() == 0 ); } else { - FC_ASSERT( post_soft_cap_unit.steem_unit.size() > 0 ); + FC_ASSERT( post_soft_cap_unit.sophiatx_unit.size() > 0 ); } - min_steem_units_commitment.validate(); - hard_cap_steem_units_commitment.validate(); + min_sophiatx_units_commitment.validate(); + hard_cap_sophiatx_units_commitment.validate(); - FC_ASSERT( min_steem_units_commitment.lower_bound <= hard_cap_steem_units_commitment.lower_bound ); - FC_ASSERT( min_steem_units_commitment.upper_bound <= hard_cap_steem_units_commitment.upper_bound ); + FC_ASSERT( min_sophiatx_units_commitment.lower_bound <= hard_cap_sophiatx_units_commitment.lower_bound ); + FC_ASSERT( min_sophiatx_units_commitment.upper_bound <= hard_cap_sophiatx_units_commitment.upper_bound ); // Following are non-trivial numerical bounds // TODO: Discuss these restrictions in the whitepaper // we want hard cap to be large enough we don't see quantization effects - FC_ASSERT( hard_cap_steem_units_commitment.lower_bound >= SMT_MIN_HARD_CAP_STEEM_UNITS ); + FC_ASSERT( hard_cap_sophiatx_units_commitment.lower_bound >= SMT_MIN_HARD_CAP_SOPHIATX_UNITS ); // we want saturation point to be large enough we don't see quantization effects - FC_ASSERT( hard_cap_steem_units_commitment.lower_bound >= SMT_MIN_SATURATION_STEEM_UNITS * uint64_t( max_unit_ratio ) ); + FC_ASSERT( hard_cap_sophiatx_units_commitment.lower_bound >= SMT_MIN_SATURATION_SOPHIATX_UNITS * uint64_t( max_unit_ratio ) ); // this static_assert checks to be sure min_soft_cap / max_soft_cap computation can't overflow uint64_t - static_assert( uint64_t( STEEM_MAX_SHARE_SUPPLY ) < (std::numeric_limits< uint64_t >::max() / STEEM_100_PERCENT), "Overflow check failed" ); - uint64_t min_soft_cap = (uint64_t( hard_cap_steem_units_commitment.lower_bound.value ) * soft_cap_percent) / STEEM_100_PERCENT; - uint64_t max_soft_cap = (uint64_t( hard_cap_steem_units_commitment.upper_bound.value ) * soft_cap_percent) / STEEM_100_PERCENT; + static_assert( uint64_t( SOPHIATX_MAX_SHARE_SUPPLY ) < (std::numeric_limits< uint64_t >::max() / SOPHIATX_100_PERCENT), "Overflow check failed" ); + uint64_t min_soft_cap = (uint64_t( hard_cap_sophiatx_units_commitment.lower_bound.value ) * soft_cap_percent) / SOPHIATX_100_PERCENT; + uint64_t max_soft_cap = (uint64_t( hard_cap_sophiatx_units_commitment.upper_bound.value ) * soft_cap_percent) / SOPHIATX_100_PERCENT; // we want soft cap to be large enough we don't see quantization effects - FC_ASSERT( min_soft_cap >= SMT_MIN_SOFT_CAP_STEEM_UNITS ); + FC_ASSERT( min_soft_cap >= SMT_MIN_SOFT_CAP_SOPHIATX_UNITS ); - // We want to prevent the following from overflowing STEEM_MAX_SHARE_SUPPLY: + // We want to prevent the following from overflowing SOPHIATX_MAX_SHARE_SUPPLY: // max_tokens_created = (u1.tt * sc + u2.tt * (hc-sc)) * min_unit_ratio - // max_steem_accepted = u1.st * sc + u2.st * (hc-sc) + // max_sophiatx_accepted = u1.st * sc + u2.st * (hc-sc) // hc / max_unit_ratio is the saturation point uint128_t sc = max_soft_cap; - uint128_t hc_sc = hard_cap_steem_units_commitment.upper_bound.value - max_soft_cap; + uint128_t hc_sc = hard_cap_sophiatx_units_commitment.upper_bound.value - max_soft_cap; uint128_t max_tokens_created = (pre_soft_cap_unit.token_unit_sum() * sc + post_soft_cap_unit.token_unit_sum() * hc_sc) * min_unit_ratio; - uint128_t max_share_supply_u128 = uint128_t( STEEM_MAX_SHARE_SUPPLY ); + uint128_t max_share_supply_u128 = uint128_t( SOPHIATX_MAX_SHARE_SUPPLY ); FC_ASSERT( max_tokens_created <= max_share_supply_u128 ); - uint128_t max_steem_accepted = (pre_soft_cap_unit.steem_unit_sum() * sc + post_soft_cap_unit.steem_unit_sum() * hc_sc); - FC_ASSERT( max_steem_accepted <= max_share_supply_u128 ); + uint128_t max_sophiatx_accepted = (pre_soft_cap_unit.sophiatx_unit_sum() * sc + post_soft_cap_unit.sophiatx_unit_sum() * hc_sc); + FC_ASSERT( max_sophiatx_accepted <= max_share_supply_u128 ); } struct validate_visitor @@ -179,7 +179,7 @@ void smt_setup_emissions_operation::validate()const { FC_ASSERT( is_valid_account_name( control_account ) ); - FC_ASSERT( schedule_time > STEEM_GENESIS_TIME ); + FC_ASSERT( schedule_time > SOPHIATX_GENESIS_TIME ); FC_ASSERT( emissions_unit.token_unit.empty() == false ); //interval_seconds <- any value of unsigned int is OK @@ -207,15 +207,15 @@ void smt_setup_operation::validate()const FC_ASSERT( is_valid_account_name( control_account ) ); FC_ASSERT( decimal_places <= SMT_MAX_DECIMAL_PLACES ); FC_ASSERT( max_supply > 0 ); - FC_ASSERT( max_supply <= STEEM_MAX_SHARE_SUPPLY ); + FC_ASSERT( max_supply <= SOPHIATX_MAX_SHARE_SUPPLY ); validate_visitor vtor; initial_generation_policy.visit( vtor ); - FC_ASSERT( generation_begin_time > STEEM_GENESIS_TIME ); + FC_ASSERT( generation_begin_time > SOPHIATX_GENESIS_TIME ); FC_ASSERT( generation_end_time > generation_begin_time ); FC_ASSERT( announced_launch_time >= generation_end_time ); FC_ASSERT( launch_expiration_time >= announced_launch_time ); - // TODO: Support using STEEM as well + // TODO: Support using SOPHIATX as well // TODO: Move amount check to evaluator, symbol check should remain here FC_ASSERT( smt_creation_fee == asset( 1000000, SBD_SYMBOL ) ); } @@ -268,7 +268,7 @@ void smt_refund_operation::validate()const FC_ASSERT( is_valid_account_name( executor ) ); FC_ASSERT( is_valid_account_name( contributor ) ); FC_ASSERT( smt.space() == asset_symbol_type::smt_nai_space ); - FC_ASSERT( amount.symbol == STEEM_SYMBOL ); + FC_ASSERT( amount.symbol == SOPHIATX_SYMBOL ); } // TODO: These validators @@ -279,4 +279,4 @@ void smt_set_setup_parameters_operation::validate() const } } } -#endif \ No newline at end of file +#endif diff --git a/libraries/protocol/sophiatx_operations.cpp b/libraries/protocol/sophiatx_operations.cpp new file mode 100644 index 00000000..751d2ef6 --- /dev/null +++ b/libraries/protocol/sophiatx_operations.cpp @@ -0,0 +1,412 @@ +#include + +#include +#include +#include +#include + +namespace sophiatx { namespace protocol { + + std::string make_random_fixed_string(std::string seed) + { + auto hash = fc::ripemd160::hash(seed); + unsigned char data[21]; + memcpy(data, hash.data(), 20); + data[20] = 0; //do the padding to avoid '=' at the end of the result string + + std::string s = fc::base64m_encode(data, 21); + return s; + } + + void account_create_operation::validate() const + { + //validate_account_name( name_seed ); + owner.validate(); + active.validate(); + + if ( json_metadata.size() > 0 ) + { + FC_ASSERT( fc::is_utf8(json_metadata), "JSON Metadata not formatted in UTF8" ); + FC_ASSERT( fc::json::is_valid(json_metadata), "JSON Metadata not valid JSON" ); + } + } + + + void account_update_operation::validate() const + { + validate_account_name( account ); + /*if( owner ) + owner->validate(); + if( active ) + active->validate(); + if( posting ) + posting->validate();*/ + + if ( json_metadata.size() > 0 ) + { + FC_ASSERT( fc::is_utf8(json_metadata), "JSON Metadata not formatted in UTF8" ); + FC_ASSERT( fc::json::is_valid(json_metadata), "JSON Metadata not valid JSON" ); + } + } + + void account_delete_operation::validate() const + { + validate_account_name( account ); + } + + void placeholder_a_operation::validate()const + { + FC_ASSERT( false, "This is not a valid op" ); + } + + void placeholder_b_operation::validate()const + { + FC_ASSERT( false, "This is not a valid op" ); + } + + void transfer_operation::validate() const + { try { + validate_account_name( from ); + validate_account_name( to ); + FC_ASSERT( amount.symbol != VESTS_SYMBOL, "transferring of SophiaTX Power (STMP) is not allowed." ); + FC_ASSERT( amount.amount > 0, "Cannot transfer a negative amount (aka: stealing)" ); + FC_ASSERT( memo.size() < SOPHIATX_MAX_MEMO_SIZE, "Memo is too large" ); + FC_ASSERT( fc::is_utf8( memo ), "Memo is not UTF8" ); + } FC_CAPTURE_AND_RETHROW( (*this) ) } + + void transfer_to_vesting_operation::validate() const + { + validate_account_name( from ); + FC_ASSERT( is_asset_type( amount, SOPHIATX_SYMBOL ), "Amount must be SOPHIATX" ); + if ( to != account_name_type() ) validate_account_name( to ); + FC_ASSERT( amount > asset( 0, SOPHIATX_SYMBOL ), "Must transfer a nonzero amount" ); + } + + void withdraw_vesting_operation::validate() const + { + validate_account_name( account ); + FC_ASSERT( is_asset_type( vesting_shares, VESTS_SYMBOL), "Amount must be VESTS" ); + } + + void witness_update_operation::validate() const + { +#ifdef PRIVATE_NET + FC_ASSERT( owner == SOPHIATX_INIT_MINER_NAME ); +#endif //PRIVATE_NET + + validate_account_name( owner ); + + FC_ASSERT( url.size() <= SOPHIATX_MAX_WITNESS_URL_LENGTH, "URL is too long" ); + + FC_ASSERT( url.size() > 0, "URL size must be greater than 0" ); + FC_ASSERT( fc::is_utf8( url ), "URL is not valid UTF8" ); + props.validate(); + } + + void witness_set_properties_operation::validate() const + { + validate_account_name( owner ); + + // current signing key must be present + FC_ASSERT( props.find( "key" ) != props.end(), "No signing key provided" ); + + auto itr = props.find( "account_creation_fee" ); + if( itr != props.end() ) + { + asset account_creation_fee; + fc::raw::unpack_from_vector( itr->second, account_creation_fee ); + FC_ASSERT( account_creation_fee.symbol == SOPHIATX_SYMBOL, "account_creation_fee must be in SOPHIATX" ); + FC_ASSERT( account_creation_fee.amount >= SOPHIATX_MIN_ACCOUNT_CREATION_FEE , "account_creation_fee smaller than minimum account creation fee" ); + } + + itr = props.find( "maximum_block_size" ); + if( itr != props.end() ) + { + uint32_t maximum_block_size; + fc::raw::unpack_from_vector( itr->second, maximum_block_size ); + FC_ASSERT( maximum_block_size >= SOPHIATX_MIN_BLOCK_SIZE_LIMIT, "maximum_block_size smaller than minimum max block size" ); + } + + itr = props.find( "new_signing_key" ); + if( itr != props.end() ) + { + public_key_type signing_key; + fc::raw::unpack_from_vector( itr->second, signing_key ); + FC_UNUSED( signing_key ); // This tests the deserialization of the key + } + + itr = props.find( "exchange_rates" ); + if( itr != props.end() ) + { + std::vector exchange_rates; + fc::raw::unpack_from_vector( itr->second, exchange_rates ); + for(const auto &rate: exchange_rates){ + if(rate.base.symbol == SOPHIATX_SYMBOL){ + FC_ASSERT(rate.quote.symbol == SBD1_SYMBOL || rate.quote.symbol == SBD2_SYMBOL || + rate.quote.symbol == SBD3_SYMBOL || rate.quote.symbol == SBD4_SYMBOL || + rate.quote.symbol == SBD5_SYMBOL ); + + }else{ + FC_ASSERT(rate.quote.symbol == SOPHIATX_SYMBOL); + FC_ASSERT(rate.base.symbol == SBD1_SYMBOL || rate.base.symbol == SBD2_SYMBOL || + rate.base.symbol == SBD3_SYMBOL || rate.base.symbol == SBD4_SYMBOL || + rate.base.symbol == SBD5_SYMBOL ); + } + FC_ASSERT(rate.quote.amount > 0 && rate.base.amount > 0); + + } + //check if all symbols are unique + } + + itr = props.find( "url" ); + if( itr != props.end() ) + { + std::string url; + fc::raw::unpack_from_vector< std::string >( itr->second, url ); + + FC_ASSERT( url.size() <= SOPHIATX_MAX_WITNESS_URL_LENGTH, "URL is too long" ); + FC_ASSERT( url.size() > 0, "URL size must be greater than 0" ); + FC_ASSERT( fc::is_utf8( url ), "URL is not valid UTF8" ); + } + + } + + void account_witness_vote_operation::validate() const + { + validate_account_name( account ); + validate_account_name( witness ); + } + + void account_witness_proxy_operation::validate() const + { + validate_account_name( account ); + if( proxy.size() ) + validate_account_name( proxy ); + FC_ASSERT( proxy != account, "Cannot proxy to self" ); + } + + void custom_operation::validate() const { + /// required auth accounts are the ones whose bandwidth is consumed + validate_account_name(sender); + for(const auto r: recipients) + validate_account_name(r); + } + + void custom_json_operation::validate() const { + /// required auth accounts are the ones whose bandwidth is consumed + FC_ASSERT( fc::is_utf8(json), "JSON Metadata not formatted in UTF8" ); + FC_ASSERT( fc::json::is_valid(json), "JSON Metadata not valid JSON" ); + validate_account_name(sender); + for(const auto r: recipients) + validate_account_name(r); + } + + void custom_binary_operation::validate() const { + validate_account_name(sender); + for(const auto r: recipients) + validate_account_name(r); + } + + void feed_publish_operation::validate()const + { + validate_account_name( publisher ); + if(exchange_rate.base.symbol == SOPHIATX_SYMBOL){ + FC_ASSERT(exchange_rate.quote.symbol == SBD1_SYMBOL || exchange_rate.quote.symbol == SBD2_SYMBOL || + exchange_rate.quote.symbol == SBD3_SYMBOL || exchange_rate.quote.symbol == SBD4_SYMBOL || + exchange_rate.quote.symbol == SBD5_SYMBOL ); + + }else{ + FC_ASSERT(exchange_rate.quote.symbol == SOPHIATX_SYMBOL); + FC_ASSERT(exchange_rate.base.symbol == SBD1_SYMBOL || exchange_rate.base.symbol == SBD2_SYMBOL || + exchange_rate.base.symbol == SBD3_SYMBOL || exchange_rate.base.symbol == SBD4_SYMBOL || + exchange_rate.base.symbol == SBD5_SYMBOL ); + } + FC_ASSERT(exchange_rate.quote.amount > 0 && exchange_rate.base.amount > 0); + exchange_rate.validate(); + } + + + void escrow_transfer_operation::validate()const + { + validate_account_name( from ); + validate_account_name( to ); + validate_account_name( agent ); + FC_ASSERT( escrow_fee.amount >= 0, "fee cannot be negative" ); + FC_ASSERT( sophiatx_amount.amount > 0, "sophiatx amount cannot be negative" ); + FC_ASSERT( from != agent && to != agent, "agent must be a third party" ); + FC_ASSERT( (escrow_fee.symbol == SOPHIATX_SYMBOL) , "fee must be SOPHIATX" ); + FC_ASSERT( sophiatx_amount.symbol == SOPHIATX_SYMBOL, "sophiatx amount must contain SOPHIATX" ); + FC_ASSERT( ratification_deadline < escrow_expiration, "ratification deadline must be before escrow expiration" ); + if ( json_meta.size() > 0 ) + { + FC_ASSERT( fc::is_utf8(json_meta), "JSON Metadata not formatted in UTF8" ); + FC_ASSERT( fc::json::is_valid(json_meta), "JSON Metadata not valid JSON" ); + } + } + + void escrow_approve_operation::validate()const + { + validate_account_name( from ); + validate_account_name( to ); + validate_account_name( agent ); + validate_account_name( who ); + FC_ASSERT( who == to || who == agent, "to or agent must approve escrow" ); + } + + void escrow_dispute_operation::validate()const + { + validate_account_name( from ); + validate_account_name( to ); + validate_account_name( agent ); + validate_account_name( who ); + FC_ASSERT( who == from || who == to, "who must be from or to" ); + } + + void escrow_release_operation::validate()const + { + validate_account_name( from ); + validate_account_name( to ); + validate_account_name( agent ); + validate_account_name( who ); + validate_account_name( receiver ); + FC_ASSERT( who == from || who == to || who == agent, "who must be from or to or agent" ); + FC_ASSERT( receiver == from || receiver == to, "receiver must be from or to" ); + FC_ASSERT( sophiatx_amount.amount > 0, "sophiatx amount must be positive" ); + FC_ASSERT( sophiatx_amount.symbol == SOPHIATX_SYMBOL, "sophiatx amount must contain SOPHIATX" ); + } + + void request_account_recovery_operation::validate()const + { + validate_account_name( recovery_account ); + validate_account_name( account_to_recover ); + new_owner_authority.validate(); + } + + void recover_account_operation::validate()const + { + validate_account_name( account_to_recover ); + FC_ASSERT( !( new_owner_authority == recent_owner_authority ), "Cannot set new owner authority to the recent owner authority" ); + FC_ASSERT( !new_owner_authority.is_impossible(), "new owner authority cannot be impossible" ); + FC_ASSERT( !recent_owner_authority.is_impossible(), "recent owner authority cannot be impossible" ); + FC_ASSERT( new_owner_authority.weight_threshold, "new owner authority cannot be trivial" ); + new_owner_authority.validate(); + recent_owner_authority.validate(); + } + + void change_recovery_account_operation::validate()const + { + validate_account_name( account_to_recover ); + validate_account_name( new_recovery_account ); + } + + void reset_account_operation::validate()const + { + validate_account_name( reset_account ); + validate_account_name( account_to_reset ); + FC_ASSERT( !new_owner_authority.is_impossible(), "new owner authority cannot be impossible" ); + FC_ASSERT( new_owner_authority.weight_threshold, "new owner authority cannot be trivial" ); + new_owner_authority.validate(); + } + + void set_reset_account_operation::validate()const + { + validate_account_name( account ); + if( current_reset_account.size() ) + validate_account_name( current_reset_account ); + validate_account_name( reset_account ); + FC_ASSERT( current_reset_account != reset_account, "new reset account cannot be current reset account" ); + } + + void application_create_operation::validate() const + { + validate_account_name( author ); + + FC_ASSERT( name.size() <= SOPHIATX_MAX_PERMLINK_LENGTH, "Name is too long" ); + FC_ASSERT( name.size() > 0, "Name size must be greater than 0" ); + FC_ASSERT( fc::is_utf8( name ), "Name is not valid UTF8" ); + + FC_ASSERT( url.size() <= SOPHIATX_MAX_WITNESS_URL_LENGTH, "URL is too long" ); + FC_ASSERT( url.size() > 0, "URL size must be greater than 0" ); + FC_ASSERT( fc::is_utf8( url ), "URL is not valid UTF8" ); + + if ( metadata.size() > 0 ) + { + FC_ASSERT( fc::is_utf8(metadata), "JSON Metadata not formatted in UTF8" ); + } + FC_ASSERT( price_param < static_cast(none), "Undefined price param" ); + } + + void application_update_operation::validate() const + { + validate_account_name( author ); + if(new_author) + validate_account_name( *new_author ); + + FC_ASSERT( name.size() <= SOPHIATX_MAX_PERMLINK_LENGTH, "Name is too long" ); + FC_ASSERT( name.size() > 0, "Name size must be greater than 0" ); + FC_ASSERT( fc::is_utf8( name ), "Name is not valid UTF8" ); + + FC_ASSERT( url.size() <= SOPHIATX_MAX_WITNESS_URL_LENGTH, "URL is too long" ); + FC_ASSERT( url.size() > 0, "URL size must be greater than 0" ); + FC_ASSERT( fc::is_utf8( url ), "URL is not valid UTF8" ); + + if ( metadata.size() > 0 ) + { + FC_ASSERT( fc::is_utf8(metadata), "JSON Metadata not formatted in UTF8" ); + } + FC_ASSERT( *price_param < static_cast(none), "Undefined price param" ); + } + + void application_delete_operation::validate() const + { + validate_account_name( author ); + + FC_ASSERT( name.size() <= SOPHIATX_MAX_PERMLINK_LENGTH, "Name is too long" ); + FC_ASSERT( name.size() > 0, "Name size must be greater than 0" ); + FC_ASSERT( fc::is_utf8( name ), "Name is not valid UTF8" ); + } + +#ifdef SOPHIATX_ENABLE_SMT + void claim_reward_balance2_operation::validate()const + { + validate_account_name( account ); + FC_ASSERT( reward_tokens.empty() == false, "Must claim something." ); + FC_ASSERT( reward_tokens.begin()->amount >= 0, "Cannot claim a negative amount" ); + bool is_substantial_reward = reward_tokens.begin()->amount > 0; + for( auto itl = reward_tokens.begin(), itr = itl+1; itr != reward_tokens.end(); ++itl, ++itr ) + { + FC_ASSERT( itl->symbol.to_nai() <= itr->symbol.to_nai(), + "Reward tokens have not been inserted in ascending order." ); + FC_ASSERT( itl->symbol.to_nai() != itr->symbol.to_nai(), + "Duplicate symbol ${s} inserted into claim reward operation container.", ("s", itl->symbol) ); + FC_ASSERT( itr->amount >= 0, "Cannot claim a negative amount" ); + is_substantial_reward |= itr->amount > 0; + } + FC_ASSERT( is_substantial_reward, "Must claim something." ); + } +#endif + + void transfer_from_promotion_pool_operation::validate()const + { + validate_account_name(transfer_to); + FC_ASSERT(amount.amount > 0); + } + + void sponsor_fees_operation::validate() const + { + if(sponsor != "") validate_account_name(sponsor); + validate_account_name(sponsored); + } + + void buy_application_operation::validate() const + { + validate_account_name( buyer ); + } + + void cancel_application_buying_operation::validate() const + { + validate_account_name( app_owner ); + validate_account_name( buyer ); + } + +} } // sophiatx::protocol diff --git a/libraries/protocol/steem_operations.cpp b/libraries/protocol/steem_operations.cpp deleted file mode 100644 index cf9d920a..00000000 --- a/libraries/protocol/steem_operations.cpp +++ /dev/null @@ -1,663 +0,0 @@ -#include - -#include -#include -#include - -#include - -namespace steem { namespace protocol { - - void account_create_operation::validate() const - { - validate_account_name( new_account_name ); - FC_ASSERT( is_asset_type( fee, STEEM_SYMBOL ), "Account creation fee must be STEEM" ); - owner.validate(); - active.validate(); - - if ( json_metadata.size() > 0 ) - { - FC_ASSERT( fc::is_utf8(json_metadata), "JSON Metadata not formatted in UTF8" ); - FC_ASSERT( fc::json::is_valid(json_metadata), "JSON Metadata not valid JSON" ); - } - FC_ASSERT( fee >= asset( 0, STEEM_SYMBOL ), "Account creation fee cannot be negative" ); - } - - void account_create_with_delegation_operation::validate() const - { - validate_account_name( new_account_name ); - validate_account_name( creator ); - FC_ASSERT( is_asset_type( fee, STEEM_SYMBOL ), "Account creation fee must be STEEM" ); - FC_ASSERT( is_asset_type( delegation, VESTS_SYMBOL ), "Delegation must be VESTS" ); - - owner.validate(); - active.validate(); - posting.validate(); - - if( json_metadata.size() > 0 ) - { - FC_ASSERT( fc::is_utf8(json_metadata), "JSON Metadata not formatted in UTF8" ); - FC_ASSERT( fc::json::is_valid(json_metadata), "JSON Metadata not valid JSON" ); - } - - FC_ASSERT( fee >= asset( 0, STEEM_SYMBOL ), "Account creation fee cannot be negative" ); - FC_ASSERT( delegation >= asset( 0, VESTS_SYMBOL ), "Delegation cannot be negative" ); - } - - void account_update_operation::validate() const - { - validate_account_name( account ); - /*if( owner ) - owner->validate(); - if( active ) - active->validate(); - if( posting ) - posting->validate();*/ - - if ( json_metadata.size() > 0 ) - { - FC_ASSERT( fc::is_utf8(json_metadata), "JSON Metadata not formatted in UTF8" ); - FC_ASSERT( fc::json::is_valid(json_metadata), "JSON Metadata not valid JSON" ); - } - } - - void comment_operation::validate() const - { - FC_ASSERT( title.size() < 256, "Title larger than size limit" ); - FC_ASSERT( fc::is_utf8( title ), "Title not formatted in UTF8" ); - FC_ASSERT( body.size() > 0, "Body is empty" ); - FC_ASSERT( fc::is_utf8( body ), "Body not formatted in UTF8" ); - - - if( parent_author.size() ) - validate_account_name( parent_author ); - validate_account_name( author ); - validate_permlink( parent_permlink ); - validate_permlink( permlink ); - - if( json_metadata.size() > 0 ) - { - FC_ASSERT( fc::json::is_valid(json_metadata), "JSON Metadata not valid JSON" ); - } - } - - struct comment_options_extension_validate_visitor - { - typedef void result_type; - -#ifdef STEEM_ENABLE_SMT - void operator()( const allowed_vote_assets& va) const - { - va.validate(); - } -#endif - void operator()( const comment_payout_beneficiaries& cpb ) const - { - cpb.validate(); - } - }; - - void comment_payout_beneficiaries::validate()const - { - uint32_t sum = 0; - - FC_ASSERT( beneficiaries.size(), "Must specify at least one beneficiary" ); - FC_ASSERT( beneficiaries.size() < 128, "Cannot specify more than 127 beneficiaries." ); // Require size serializtion fits in one byte. - - validate_account_name( beneficiaries[0].account ); - FC_ASSERT( beneficiaries[0].weight <= STEEM_100_PERCENT, "Cannot allocate more than 100% of rewards to one account" ); - sum += beneficiaries[0].weight; - FC_ASSERT( sum <= STEEM_100_PERCENT, "Cannot allocate more than 100% of rewards to a comment" ); // Have to check incrementally to avoid overflow - - for( size_t i = 1; i < beneficiaries.size(); i++ ) - { - validate_account_name( beneficiaries[i].account ); - FC_ASSERT( beneficiaries[i].weight <= STEEM_100_PERCENT, "Cannot allocate more than 100% of rewards to one account" ); - sum += beneficiaries[i].weight; - FC_ASSERT( sum <= STEEM_100_PERCENT, "Cannot allocate more than 100% of rewards to a comment" ); // Have to check incrementally to avoid overflow - FC_ASSERT( beneficiaries[i - 1] < beneficiaries[i], "Benficiaries must be specified in sorted order (account ascending)" ); - } - } - - void comment_options_operation::validate()const - { - validate_account_name( author ); - FC_ASSERT( percent_steem_dollars <= STEEM_100_PERCENT, "Percent cannot exceed 100%" ); - FC_ASSERT( max_accepted_payout.symbol == SBD_SYMBOL, "Max accepted payout must be in SBD" ); - FC_ASSERT( max_accepted_payout.amount.value >= 0, "Cannot accept less than 0 payout" ); - validate_permlink( permlink ); - for( auto& e : extensions ) - e.visit( comment_options_extension_validate_visitor() ); - } - - void delete_comment_operation::validate()const - { - validate_permlink( permlink ); - validate_account_name( author ); - } - - void placeholder_a_operation::validate()const - { - FC_ASSERT( false, "This is not a valid op" ); - } - - void placeholder_b_operation::validate()const - { - FC_ASSERT( false, "This is not a valid op" ); - } - - void vote_operation::validate() const - { - validate_account_name( voter ); - validate_account_name( author );\ - FC_ASSERT( abs(weight) <= STEEM_100_PERCENT, "Weight is not a STEEMIT percentage" ); - validate_permlink( permlink ); - } - - void transfer_operation::validate() const - { try { - validate_account_name( from ); - validate_account_name( to ); - FC_ASSERT( amount.symbol != VESTS_SYMBOL, "transferring of Steem Power (STMP) is not allowed." ); - FC_ASSERT( amount.amount > 0, "Cannot transfer a negative amount (aka: stealing)" ); - FC_ASSERT( memo.size() < STEEM_MAX_MEMO_SIZE, "Memo is too large" ); - FC_ASSERT( fc::is_utf8( memo ), "Memo is not UTF8" ); - } FC_CAPTURE_AND_RETHROW( (*this) ) } - - void transfer_to_vesting_operation::validate() const - { - validate_account_name( from ); - FC_ASSERT( is_asset_type( amount, STEEM_SYMBOL ), "Amount must be STEEM" ); - if ( to != account_name_type() ) validate_account_name( to ); - FC_ASSERT( amount > asset( 0, STEEM_SYMBOL ), "Must transfer a nonzero amount" ); - } - - void withdraw_vesting_operation::validate() const - { - validate_account_name( account ); - FC_ASSERT( is_asset_type( vesting_shares, VESTS_SYMBOL), "Amount must be VESTS" ); - } - - void set_withdraw_vesting_route_operation::validate() const - { - validate_account_name( from_account ); - validate_account_name( to_account ); - FC_ASSERT( 0 <= percent && percent <= STEEM_100_PERCENT, "Percent must be valid steem percent" ); - } - - void witness_update_operation::validate() const - { - validate_account_name( owner ); - - FC_ASSERT( url.size() <= STEEM_MAX_WITNESS_URL_LENGTH, "URL is too long" ); - - FC_ASSERT( url.size() > 0, "URL size must be greater than 0" ); - FC_ASSERT( fc::is_utf8( url ), "URL is not valid UTF8" ); - FC_ASSERT( fee >= asset( 0, STEEM_SYMBOL ), "Fee cannot be negative" ); - props.validate< false >(); - } - - void witness_set_properties_operation::validate() const - { - validate_account_name( owner ); - - // current signing key must be present - FC_ASSERT( props.find( "key" ) != props.end(), "No signing key provided" ); - - auto itr = props.find( "account_creation_fee" ); - if( itr != props.end() ) - { - asset account_creation_fee; - fc::raw::unpack_from_vector( itr->second, account_creation_fee ); - FC_ASSERT( account_creation_fee.symbol == STEEM_SYMBOL, "account_creation_fee must be in STEEM" ); - FC_ASSERT( account_creation_fee.amount >= STEEM_MIN_ACCOUNT_CREATION_FEE , "account_creation_fee smaller than minimum account creation fee" ); - } - - itr = props.find( "maximum_block_size" ); - if( itr != props.end() ) - { - uint32_t maximum_block_size; - fc::raw::unpack_from_vector( itr->second, maximum_block_size ); - FC_ASSERT( maximum_block_size >= STEEM_MIN_BLOCK_SIZE_LIMIT, "maximum_block_size smaller than minimum max block size" ); - } - - itr = props.find( "sbd_interest_rate" ); - if( itr != props.end() ) - { - uint16_t sbd_interest_rate; - fc::raw::unpack_from_vector( itr->second, sbd_interest_rate ); - FC_ASSERT( sbd_interest_rate >= 0, "sbd_interest_rate must be positive" ); - FC_ASSERT( sbd_interest_rate <= STEEM_100_PERCENT, "sbd_interest_rate must not exceed 100%" ); - } - - itr = props.find( "new_signing_key" ); - if( itr != props.end() ) - { - public_key_type signing_key; - fc::raw::unpack_from_vector( itr->second, signing_key ); - FC_UNUSED( signing_key ); // This tests the deserialization of the key - } - - itr = props.find( "sbd_exchange_rate" ); - if( itr != props.end() ) - { - price sbd_exchange_rate; - fc::raw::unpack_from_vector( itr->second, sbd_exchange_rate ); - FC_ASSERT( ( is_asset_type( sbd_exchange_rate.base, SBD_SYMBOL ) && is_asset_type( sbd_exchange_rate.quote, STEEM_SYMBOL ) ), - "Price feed must be a STEEM/SBD price" ); - sbd_exchange_rate.validate(); - } - - itr = props.find( "url" ); - if( itr != props.end() ) - { - std::string url; - fc::raw::unpack_from_vector< std::string >( itr->second, url ); - - FC_ASSERT( url.size() <= STEEM_MAX_WITNESS_URL_LENGTH, "URL is too long" ); - FC_ASSERT( url.size() > 0, "URL size must be greater than 0" ); - FC_ASSERT( fc::is_utf8( url ), "URL is not valid UTF8" ); - } - - itr = props.find( "account_subsidy_limit" ); - if( itr != props.end() ) - { - uint32_t account_subsidy_limit; - fc::raw::unpack_from_vector( itr->second, account_subsidy_limit ); // Checks that the value can be deserialized - FC_UNUSED( account_subsidy_limit ); - } - } - - void account_witness_vote_operation::validate() const - { - validate_account_name( account ); - validate_account_name( witness ); - } - - void account_witness_proxy_operation::validate() const - { - validate_account_name( account ); - if( proxy.size() ) - validate_account_name( proxy ); - FC_ASSERT( proxy != account, "Cannot proxy to self" ); - } - - void custom_operation::validate() const { - /// required auth accounts are the ones whose bandwidth is consumed - FC_ASSERT( required_auths.size() > 0, "at least on account must be specified" ); - } - void custom_json_operation::validate() const { - /// required auth accounts are the ones whose bandwidth is consumed - FC_ASSERT( (required_auths.size() + required_posting_auths.size()) > 0, "at least on account must be specified" ); - FC_ASSERT( id.size() <= 32, "id is too long" ); - FC_ASSERT( fc::is_utf8(json), "JSON Metadata not formatted in UTF8" ); - FC_ASSERT( fc::json::is_valid(json), "JSON Metadata not valid JSON" ); - } - void custom_binary_operation::validate() const { - /// required auth accounts are the ones whose bandwidth is consumed - FC_ASSERT( (required_owner_auths.size() + required_active_auths.size() + required_posting_auths.size()) > 0, "at least on account must be specified" ); - FC_ASSERT( id.size() <= 32, "id is too long" ); - for( const auto& a : required_auths ) a.validate(); - } - - - fc::sha256 pow_operation::work_input()const - { - auto hash = fc::sha256::hash( block_id ); - hash._hash[0] = nonce; - return fc::sha256::hash( hash ); - } - - void pow_operation::validate()const - { - props.validate< true >(); - validate_account_name( worker_account ); - FC_ASSERT( work_input() == work.input, "Determninistic input does not match recorded input" ); - work.validate(); - } - - struct pow2_operation_validate_visitor - { - typedef void result_type; - - template< typename PowType > - void operator()( const PowType& pow )const - { - pow.validate(); - } - }; - - void pow2_operation::validate()const - { - props.validate< true >(); - work.visit( pow2_operation_validate_visitor() ); - } - - struct pow2_operation_get_required_active_visitor - { - typedef void result_type; - - pow2_operation_get_required_active_visitor( flat_set< account_name_type >& required_active ) - : _required_active( required_active ) {} - - template< typename PowType > - void operator()( const PowType& work )const - { - _required_active.insert( work.input.worker_account ); - } - - flat_set& _required_active; - }; - - void pow2_operation::get_required_active_authorities( flat_set& a )const - { - if( !new_owner_key ) - { - pow2_operation_get_required_active_visitor vtor( a ); - work.visit( vtor ); - } - } - - void pow::create( const fc::ecc::private_key& w, const digest_type& i ) - { - input = i; - signature = w.sign_compact(input,false); - - auto sig_hash = fc::sha256::hash( signature ); - public_key_type recover = fc::ecc::public_key( signature, sig_hash, false ); - - work = fc::sha256::hash(recover); - } - void pow2::create( const block_id_type& prev, const account_name_type& account_name, uint64_t n ) - { - input.worker_account = account_name; - input.prev_block = prev; - input.nonce = n; - - auto prv_key = fc::sha256::hash( input ); - auto input = fc::sha256::hash( prv_key ); - auto signature = fc::ecc::private_key::regenerate( prv_key ).sign_compact(input); - - auto sig_hash = fc::sha256::hash( signature ); - public_key_type recover = fc::ecc::public_key( signature, sig_hash ); - - fc::sha256 work = fc::sha256::hash(std::make_pair(input,recover)); - pow_summary = work.approx_log_32(); - } - - void equihash_pow::create( const block_id_type& recent_block, const account_name_type& account_name, uint32_t nonce ) - { - input.worker_account = account_name; - input.prev_block = recent_block; - input.nonce = nonce; - - auto seed = fc::sha256::hash( input ); - proof = fc::equihash::proof::hash( STEEM_EQUIHASH_N, STEEM_EQUIHASH_K, seed ); - pow_summary = fc::sha256::hash( proof.inputs ).approx_log_32(); - } - - void pow::validate()const - { - FC_ASSERT( work != fc::sha256() ); - FC_ASSERT( public_key_type(fc::ecc::public_key( signature, input, false )) == worker ); - auto sig_hash = fc::sha256::hash( signature ); - public_key_type recover = fc::ecc::public_key( signature, sig_hash, false ); - FC_ASSERT( work == fc::sha256::hash(recover) ); - } - - void pow2::validate()const - { - validate_account_name( input.worker_account ); - pow2 tmp; tmp.create( input.prev_block, input.worker_account, input.nonce ); - FC_ASSERT( pow_summary == tmp.pow_summary, "reported work does not match calculated work" ); - } - - void equihash_pow::validate() const - { - validate_account_name( input.worker_account ); - auto seed = fc::sha256::hash( input ); - FC_ASSERT( proof.n == STEEM_EQUIHASH_N, "proof of work 'n' value is incorrect" ); - FC_ASSERT( proof.k == STEEM_EQUIHASH_K, "proof of work 'k' value is incorrect" ); - FC_ASSERT( proof.seed == seed, "proof of work seed does not match expected seed" ); - FC_ASSERT( proof.is_valid(), "proof of work is not a solution", ("block_id", input.prev_block)("worker_account", input.worker_account)("nonce", input.nonce) ); - FC_ASSERT( pow_summary == fc::sha256::hash( proof.inputs ).approx_log_32() ); - } - - void feed_publish_operation::validate()const - { - validate_account_name( publisher ); - FC_ASSERT( ( is_asset_type( exchange_rate.base, STEEM_SYMBOL ) && is_asset_type( exchange_rate.quote, SBD_SYMBOL ) ) - || ( is_asset_type( exchange_rate.base, SBD_SYMBOL ) && is_asset_type( exchange_rate.quote, STEEM_SYMBOL ) ), - "Price feed must be a STEEM/SBD price" ); - exchange_rate.validate(); - } - - void limit_order_create_operation::validate()const - { - validate_account_name( owner ); - - FC_ASSERT( ( is_asset_type( amount_to_sell, STEEM_SYMBOL ) && is_asset_type( min_to_receive, SBD_SYMBOL ) ) - || ( is_asset_type( amount_to_sell, SBD_SYMBOL ) && is_asset_type( min_to_receive, STEEM_SYMBOL ) ) - || ( - amount_to_sell.symbol.space() == asset_symbol_type::smt_nai_space - && is_asset_type( min_to_receive, STEEM_SYMBOL ) - ) - || ( - is_asset_type( amount_to_sell, STEEM_SYMBOL ) - && min_to_receive.symbol.space() == asset_symbol_type::smt_nai_space - ), - "Limit order must be for the STEEM:SBD or SMT:(STEEM/SBD) market" ); - - (amount_to_sell / min_to_receive).validate(); - } - - void limit_order_create2_operation::validate()const - { - validate_account_name( owner ); - - FC_ASSERT( amount_to_sell.symbol == exchange_rate.base.symbol, "Sell asset must be the base of the price" ); - exchange_rate.validate(); - - FC_ASSERT( ( is_asset_type( amount_to_sell, STEEM_SYMBOL ) && is_asset_type( exchange_rate.quote, SBD_SYMBOL ) ) - || ( is_asset_type( amount_to_sell, SBD_SYMBOL ) && is_asset_type( exchange_rate.quote, STEEM_SYMBOL ) ) - || ( - amount_to_sell.symbol.space() == asset_symbol_type::smt_nai_space - && is_asset_type( exchange_rate.quote, STEEM_SYMBOL ) - ) - || ( - is_asset_type( amount_to_sell, STEEM_SYMBOL ) - && exchange_rate.quote.symbol.space() == asset_symbol_type::smt_nai_space - ), - "Limit order must be for the STEEM:SBD or SMT:(STEEM/SBD) market" ); - - FC_ASSERT( (amount_to_sell * exchange_rate).amount > 0, "Amount to sell cannot round to 0 when traded" ); - } - - void limit_order_cancel_operation::validate()const - { - validate_account_name( owner ); - } - - void convert_operation::validate()const - { - validate_account_name( owner ); - /// only allow conversion from SBD to STEEM, allowing the opposite can enable traders to abuse - /// market fluxuations through converting large quantities without moving the price. - FC_ASSERT( is_asset_type( amount, SBD_SYMBOL ), "Can only convert SBD to STEEM" ); - FC_ASSERT( amount.amount > 0, "Must convert some SBD" ); - } - - void report_over_production_operation::validate()const - { - validate_account_name( reporter ); - validate_account_name( first_block.witness ); - FC_ASSERT( first_block.witness == second_block.witness ); - FC_ASSERT( first_block.timestamp == second_block.timestamp ); - FC_ASSERT( first_block.signee() == second_block.signee() ); - FC_ASSERT( first_block.id() != second_block.id() ); - } - - void escrow_transfer_operation::validate()const - { - validate_account_name( from ); - validate_account_name( to ); - validate_account_name( agent ); - FC_ASSERT( fee.amount >= 0, "fee cannot be negative" ); - FC_ASSERT( sbd_amount.amount >= 0, "sbd amount cannot be negative" ); - FC_ASSERT( steem_amount.amount >= 0, "steem amount cannot be negative" ); - FC_ASSERT( sbd_amount.amount > 0 || steem_amount.amount > 0, "escrow must transfer a non-zero amount" ); - FC_ASSERT( from != agent && to != agent, "agent must be a third party" ); - FC_ASSERT( (fee.symbol == STEEM_SYMBOL) || (fee.symbol == SBD_SYMBOL), "fee must be STEEM or SBD" ); - FC_ASSERT( sbd_amount.symbol == SBD_SYMBOL, "sbd amount must contain SBD" ); - FC_ASSERT( steem_amount.symbol == STEEM_SYMBOL, "steem amount must contain STEEM" ); - FC_ASSERT( ratification_deadline < escrow_expiration, "ratification deadline must be before escrow expiration" ); - if ( json_meta.size() > 0 ) - { - FC_ASSERT( fc::is_utf8(json_meta), "JSON Metadata not formatted in UTF8" ); - FC_ASSERT( fc::json::is_valid(json_meta), "JSON Metadata not valid JSON" ); - } - } - - void escrow_approve_operation::validate()const - { - validate_account_name( from ); - validate_account_name( to ); - validate_account_name( agent ); - validate_account_name( who ); - FC_ASSERT( who == to || who == agent, "to or agent must approve escrow" ); - } - - void escrow_dispute_operation::validate()const - { - validate_account_name( from ); - validate_account_name( to ); - validate_account_name( agent ); - validate_account_name( who ); - FC_ASSERT( who == from || who == to, "who must be from or to" ); - } - - void escrow_release_operation::validate()const - { - validate_account_name( from ); - validate_account_name( to ); - validate_account_name( agent ); - validate_account_name( who ); - validate_account_name( receiver ); - FC_ASSERT( who == from || who == to || who == agent, "who must be from or to or agent" ); - FC_ASSERT( receiver == from || receiver == to, "receiver must be from or to" ); - FC_ASSERT( sbd_amount.amount >= 0, "sbd amount cannot be negative" ); - FC_ASSERT( steem_amount.amount >= 0, "steem amount cannot be negative" ); - FC_ASSERT( sbd_amount.amount > 0 || steem_amount.amount > 0, "escrow must release a non-zero amount" ); - FC_ASSERT( sbd_amount.symbol == SBD_SYMBOL, "sbd amount must contain SBD" ); - FC_ASSERT( steem_amount.symbol == STEEM_SYMBOL, "steem amount must contain STEEM" ); - } - - void request_account_recovery_operation::validate()const - { - validate_account_name( recovery_account ); - validate_account_name( account_to_recover ); - new_owner_authority.validate(); - } - - void recover_account_operation::validate()const - { - validate_account_name( account_to_recover ); - FC_ASSERT( !( new_owner_authority == recent_owner_authority ), "Cannot set new owner authority to the recent owner authority" ); - FC_ASSERT( !new_owner_authority.is_impossible(), "new owner authority cannot be impossible" ); - FC_ASSERT( !recent_owner_authority.is_impossible(), "recent owner authority cannot be impossible" ); - FC_ASSERT( new_owner_authority.weight_threshold, "new owner authority cannot be trivial" ); - new_owner_authority.validate(); - recent_owner_authority.validate(); - } - - void change_recovery_account_operation::validate()const - { - validate_account_name( account_to_recover ); - validate_account_name( new_recovery_account ); - } - - void transfer_to_savings_operation::validate()const { - validate_account_name( from ); - validate_account_name( to ); - FC_ASSERT( amount.amount > 0 ); - FC_ASSERT( amount.symbol == STEEM_SYMBOL || amount.symbol == SBD_SYMBOL ); - FC_ASSERT( memo.size() < STEEM_MAX_MEMO_SIZE, "Memo is too large" ); - FC_ASSERT( fc::is_utf8( memo ), "Memo is not UTF8" ); - } - void transfer_from_savings_operation::validate()const { - validate_account_name( from ); - validate_account_name( to ); - FC_ASSERT( amount.amount > 0 ); - FC_ASSERT( amount.symbol == STEEM_SYMBOL || amount.symbol == SBD_SYMBOL ); - FC_ASSERT( memo.size() < STEEM_MAX_MEMO_SIZE, "Memo is too large" ); - FC_ASSERT( fc::is_utf8( memo ), "Memo is not UTF8" ); - } - void cancel_transfer_from_savings_operation::validate()const { - validate_account_name( from ); - } - - void decline_voting_rights_operation::validate()const - { - validate_account_name( account ); - } - - void reset_account_operation::validate()const - { - validate_account_name( reset_account ); - validate_account_name( account_to_reset ); - FC_ASSERT( !new_owner_authority.is_impossible(), "new owner authority cannot be impossible" ); - FC_ASSERT( new_owner_authority.weight_threshold, "new owner authority cannot be trivial" ); - new_owner_authority.validate(); - } - - void set_reset_account_operation::validate()const - { - validate_account_name( account ); - if( current_reset_account.size() ) - validate_account_name( current_reset_account ); - validate_account_name( reset_account ); - FC_ASSERT( current_reset_account != reset_account, "new reset account cannot be current reset account" ); - } - - void claim_reward_balance_operation::validate()const - { - validate_account_name( account ); - FC_ASSERT( is_asset_type( reward_steem, STEEM_SYMBOL ), "Reward Steem must be STEEM" ); - FC_ASSERT( is_asset_type( reward_sbd, SBD_SYMBOL ), "Reward Steem must be SBD" ); - FC_ASSERT( is_asset_type( reward_vests, VESTS_SYMBOL ), "Reward Steem must be VESTS" ); - FC_ASSERT( reward_steem.amount >= 0, "Cannot claim a negative amount" ); - FC_ASSERT( reward_sbd.amount >= 0, "Cannot claim a negative amount" ); - FC_ASSERT( reward_vests.amount >= 0, "Cannot claim a negative amount" ); - FC_ASSERT( reward_steem.amount > 0 || reward_sbd.amount > 0 || reward_vests.amount > 0, "Must claim something." ); - } - -#ifdef STEEM_ENABLE_SMT - void claim_reward_balance2_operation::validate()const - { - validate_account_name( account ); - FC_ASSERT( reward_tokens.empty() == false, "Must claim something." ); - FC_ASSERT( reward_tokens.begin()->amount >= 0, "Cannot claim a negative amount" ); - bool is_substantial_reward = reward_tokens.begin()->amount > 0; - for( auto itl = reward_tokens.begin(), itr = itl+1; itr != reward_tokens.end(); ++itl, ++itr ) - { - FC_ASSERT( itl->symbol.to_nai() <= itr->symbol.to_nai(), - "Reward tokens have not been inserted in ascending order." ); - FC_ASSERT( itl->symbol.to_nai() != itr->symbol.to_nai(), - "Duplicate symbol ${s} inserted into claim reward operation container.", ("s", itl->symbol) ); - FC_ASSERT( itr->amount >= 0, "Cannot claim a negative amount" ); - is_substantial_reward |= itr->amount > 0; - } - FC_ASSERT( is_substantial_reward, "Must claim something." ); - } -#endif - - void delegate_vesting_shares_operation::validate()const - { - validate_account_name( delegator ); - validate_account_name( delegatee ); - FC_ASSERT( delegator != delegatee, "You cannot delegate VESTS to yourself" ); - FC_ASSERT( is_asset_type( vesting_shares, VESTS_SYMBOL ), "Delegation must be VESTS" ); - FC_ASSERT( vesting_shares >= asset( 0, VESTS_SYMBOL ), "Delegation cannot be negative" ); - } - -} } // steem::protocol diff --git a/libraries/protocol/transaction.cpp b/libraries/protocol/transaction.cpp index d1476530..d8604992 100644 --- a/libraries/protocol/transaction.cpp +++ b/libraries/protocol/transaction.cpp @@ -1,6 +1,6 @@ -#include -#include +#include +#include #include #include @@ -8,7 +8,7 @@ #include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { digest_type signed_transaction::merkle_digest()const { @@ -24,13 +24,6 @@ digest_type transaction::digest()const return enc.result(); } -digest_type transaction::sig_digest( const chain_id_type& chain_id )const -{ - digest_type::encoder enc; - fc::raw::pack( enc, chain_id ); - fc::raw::pack( enc, *this ); - return enc.result(); -} void transaction::validate() const { @@ -39,7 +32,7 @@ void transaction::validate() const operation_validate(op); } -steem::protocol::transaction_id_type steem::protocol::transaction::id() const +sophiatx::protocol::transaction_id_type sophiatx::protocol::transaction::id() const { auto h = digest(); transaction_id_type result; @@ -47,14 +40,22 @@ steem::protocol::transaction_id_type steem::protocol::transaction::id() const return result; } -const signature_type& steem::protocol::signed_transaction::sign(const private_key_type& key, const chain_id_type& chain_id) +digest_type transaction::sig_digest( const chain_id_type& chain_id )const +{ + digest_type::encoder enc; + fc::raw::pack( enc, chain_id ); + fc::raw::pack( enc, *this ); + return enc.result(); +} + +const signature_type& sophiatx::protocol::signed_transaction::sign(const private_key_type& key, const chain_id_type& chain_id) { digest_type h = sig_digest( chain_id ); signatures.push_back(key.sign_compact(h)); return signatures.back(); } -signature_type steem::protocol::signed_transaction::sign(const private_key_type& key, const chain_id_type& chain_id)const +signature_type sophiatx::protocol::signed_transaction::sign(const private_key_type& key, const chain_id_type& chain_id)const { digest_type::encoder enc; fc::raw::pack( enc, chain_id ); @@ -75,11 +76,10 @@ void transaction::set_reference_block( const block_id_type& reference_block ) void transaction::get_required_authorities( flat_set< account_name_type >& active, flat_set< account_name_type >& owner, - flat_set< account_name_type >& posting, vector< authority >& other )const { for( const auto& op : operations ) - operation_get_required_authorities( op, active, owner, posting, other ); + operation_get_required_authorities( op, active, owner, other ); } flat_set signed_transaction::get_signature_keys( const chain_id_type& chain_id )const @@ -88,7 +88,7 @@ flat_set signed_transaction::get_signature_keys( const chain_id flat_set result; for( const auto& sig : signatures ) { - STEEM_ASSERT( + SOPHIATX_ASSERT( result.insert( fc::ecc::public_key(sig,d) ).second, tx_duplicate_sig, "Duplicate Signature detected" ); @@ -103,35 +103,13 @@ set signed_transaction::get_required_signatures( const flat_set& available_keys, const authority_getter& get_active, const authority_getter& get_owner, - const authority_getter& get_posting, uint32_t max_recursion_depth )const { flat_set< account_name_type > required_active; flat_set< account_name_type > required_owner; - flat_set< account_name_type > required_posting; vector< authority > other; - get_required_authorities( required_active, required_owner, required_posting, other ); - - /** posting authority cannot be mixed with active authority in same transaction */ - if( required_posting.size() ) { - sign_state s(get_signature_keys( chain_id ),get_posting,available_keys); - s.max_recursion = max_recursion_depth; - - FC_ASSERT( !required_owner.size() ); - FC_ASSERT( !required_active.size() ); - for( auto& posting : required_posting ) - s.check_authority( posting ); + get_required_authorities( required_active, required_owner, other ); - s.remove_unused_signatures(); - - set result; - - for( auto& provided_sig : s.provided_signatures ) - if( available_keys.find( provided_sig.first ) != available_keys.end() ) - result.insert( provided_sig.first ); - - return result; - } sign_state s(get_signature_keys( chain_id ),get_active,available_keys); @@ -141,8 +119,9 @@ set signed_transaction::get_required_signatures( s.check_authority( auth ); for( auto& owner : required_owner ) s.check_authority( get_owner( owner ) ); - for( auto& active : required_active ) - s.check_authority( active ); + for( auto& active : required_active ) { + s.check_authority(active); + } s.remove_unused_signatures(); @@ -160,11 +139,10 @@ set signed_transaction::minimize_required_signatures( const flat_set< public_key_type >& available_keys, const authority_getter& get_active, const authority_getter& get_owner, - const authority_getter& get_posting, uint32_t max_recursion ) const { - set< public_key_type > s = get_required_signatures( chain_id, available_keys, get_active, get_owner, get_posting, max_recursion ); + set< public_key_type > s = get_required_signatures( chain_id, available_keys, get_active, get_owner, max_recursion ); flat_set< public_key_type > result( s.begin(), s.end() ); for( const public_key_type& k : s ) @@ -172,12 +150,11 @@ set signed_transaction::minimize_required_signatures( result.erase( k ); try { - steem::protocol::verify_authority( operations, result, get_active, get_owner, get_posting, max_recursion ); + sophiatx::protocol::verify_authority( operations, result, get_active, get_owner, max_recursion ); continue; // element stays erased if verify_authority is ok } catch( const tx_missing_owner_auth& e ) {} catch( const tx_missing_active_auth& e ) {} - catch( const tx_missing_posting_auth& e ) {} catch( const tx_missing_other_auth& e ) {} result.insert( k ); } @@ -188,10 +165,9 @@ void signed_transaction::verify_authority( const chain_id_type& chain_id, const authority_getter& get_active, const authority_getter& get_owner, - const authority_getter& get_posting, uint32_t max_recursion )const { try { - steem::protocol::verify_authority( operations, get_signature_keys( chain_id ), get_active, get_owner, get_posting, max_recursion ); + sophiatx::protocol::verify_authority( operations, get_signature_keys( chain_id ), get_active, get_owner, max_recursion ); } FC_CAPTURE_AND_RETHROW( (*this) ) } -} } // steem::protocol +} } // sophiatx::protocol diff --git a/libraries/protocol/types.cpp b/libraries/protocol/types.cpp index 201564b5..5d6ccca6 100644 --- a/libraries/protocol/types.cpp +++ b/libraries/protocol/types.cpp @@ -1,12 +1,12 @@ -#include -#include +#include +#include #include #include #include #include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { public_key_type::public_key_type():key_data(){}; @@ -20,7 +20,7 @@ namespace steem { namespace protocol { { // TODO: Refactor syntactic checks into static is_valid() // to make public_key_type API more similar to address API - std::string prefix( STEEM_ADDRESS_PREFIX ); + std::string prefix( SOPHIATX_ADDRESS_PREFIX ); const size_t prefix_len = prefix.size(); FC_ASSERT( base58str.size() > prefix_len ); @@ -48,7 +48,7 @@ namespace steem { namespace protocol { k.data = key_data; k.check = fc::ripemd160::hash( k.data.data, k.data.size() )._hash[0]; auto data = fc::raw::pack_to_vector( k ); - return STEEM_ADDRESS_PREFIX + fc::to_base58( data.data(), data.size() ); + return SOPHIATX_ADDRESS_PREFIX + fc::to_base58( data.data(), data.size() ); } bool operator == ( const public_key_type& p1, const fc::ecc::public_key& p2) @@ -80,7 +80,7 @@ namespace steem { namespace protocol { extended_public_key_type::extended_public_key_type( const std::string& base58str ) { - std::string prefix( STEEM_ADDRESS_PREFIX ); + std::string prefix( SOPHIATX_ADDRESS_PREFIX ); const size_t prefix_len = prefix.size(); FC_ASSERT( base58str.size() > prefix_len ); @@ -102,7 +102,7 @@ namespace steem { namespace protocol { k.data = key_data; k.check = fc::ripemd160::hash( k.data.data, k.data.size() )._hash[0]; auto data = fc::raw::pack_to_vector( k ); - return STEEM_ADDRESS_PREFIX + fc::to_base58( data.data(), data.size() ); + return SOPHIATX_ADDRESS_PREFIX + fc::to_base58( data.data(), data.size() ); } bool operator == ( const extended_public_key_type& p1, const fc::ecc::extended_public_key& p2) @@ -134,7 +134,7 @@ namespace steem { namespace protocol { extended_private_key_type::extended_private_key_type( const std::string& base58str ) { - std::string prefix( STEEM_ADDRESS_PREFIX ); + std::string prefix( SOPHIATX_ADDRESS_PREFIX ); const size_t prefix_len = prefix.size(); FC_ASSERT( base58str.size() > prefix_len ); @@ -156,7 +156,7 @@ namespace steem { namespace protocol { k.data = key_data; k.check = fc::ripemd160::hash( k.data.data, k.data.size() )._hash[0]; auto data = fc::raw::pack_to_vector( k ); - return STEEM_ADDRESS_PREFIX + fc::to_base58( data.data(), data.size() ); + return SOPHIATX_ADDRESS_PREFIX + fc::to_base58( data.data(), data.size() ); } bool operator == ( const extended_private_key_type& p1, const fc::ecc::extended_public_key& p2) @@ -182,38 +182,39 @@ namespace steem { namespace protocol { return fc::sha256(); } -} } // steem::protocol + +} } // sophiatx::protocol namespace fc { using namespace std; - void to_variant( const steem::protocol::public_key_type& var, fc::variant& vo ) + void to_variant( const sophiatx::protocol::public_key_type& var, fc::variant& vo ) { vo = std::string( var ); } - void from_variant( const fc::variant& var, steem::protocol::public_key_type& vo ) + void from_variant( const fc::variant& var, sophiatx::protocol::public_key_type& vo ) { - vo = steem::protocol::public_key_type( var.as_string() ); + vo = sophiatx::protocol::public_key_type( var.as_string() ); } - void to_variant( const steem::protocol::extended_public_key_type& var, fc::variant& vo ) + void to_variant( const sophiatx::protocol::extended_public_key_type& var, fc::variant& vo ) { vo = std::string( var ); } - void from_variant( const fc::variant& var, steem::protocol::extended_public_key_type& vo ) + void from_variant( const fc::variant& var, sophiatx::protocol::extended_public_key_type& vo ) { - vo = steem::protocol::extended_public_key_type( var.as_string() ); + vo = sophiatx::protocol::extended_public_key_type( var.as_string() ); } - void to_variant( const steem::protocol::extended_private_key_type& var, fc::variant& vo ) + void to_variant( const sophiatx::protocol::extended_private_key_type& var, fc::variant& vo ) { vo = std::string( var ); } - void from_variant( const fc::variant& var, steem::protocol::extended_private_key_type& vo ) + void from_variant( const fc::variant& var, sophiatx::protocol::extended_private_key_type& vo ) { - vo = steem::protocol::extended_private_key_type( var.as_string() ); + vo = sophiatx::protocol::extended_private_key_type( var.as_string() ); } } // fc diff --git a/libraries/protocol/version.cpp b/libraries/protocol/version.cpp index 047c57da..f5c522dc 100644 --- a/libraries/protocol/version.cpp +++ b/libraries/protocol/version.cpp @@ -1,11 +1,11 @@ -#include +#include #include #include #include -namespace steem { namespace protocol { +namespace sophiatx { namespace protocol { /* Quick conversion utilities from http://joelverhagen.com/blog/2010/11/convert-an-int-to-a-string-and-vice-versa-in-c/ */ inline int string_to_int( fc::string input ) @@ -42,16 +42,16 @@ version::operator fc::string()const return s.str(); } -} } // steem::protocol +} } // sophiatx::protocol namespace fc { - void to_variant( const steem::protocol::version& v, variant& var ) + void to_variant( const sophiatx::protocol::version& v, variant& var ) { var = fc::string( v ); } - void from_variant( const variant& var, steem::protocol::version& v ) + void from_variant( const variant& var, sophiatx::protocol::version& v ) { uint32_t major = 0, hardfork = 0, revision = 0; char dot_a = 0, dot_b = 0; @@ -69,14 +69,14 @@ namespace fc v.v_num = 0 | ( major << 24 ) | ( hardfork << 16 ) | revision; } - void to_variant( const steem::protocol::hardfork_version& hv, variant& var ) + void to_variant( const sophiatx::protocol::hardfork_version& hv, variant& var ) { - to_variant( (const steem::protocol::version&) hv, var ); + to_variant( (const sophiatx::protocol::version&) hv, var ); } - void from_variant( const variant& var, steem::protocol::hardfork_version& hv ) + void from_variant( const variant& var, sophiatx::protocol::hardfork_version& hv ) { - steem::protocol::version ver; + sophiatx::protocol::version ver; from_variant( var, ver ); hv.v_num = ver.v_num & 0xffff0000; } diff --git a/libraries/schema/CMakeLists.txt b/libraries/schema/CMakeLists.txt index 4a9040db..b08e88f0 100644 --- a/libraries/schema/CMakeLists.txt +++ b/libraries/schema/CMakeLists.txt @@ -1,13 +1,13 @@ -file(GLOB HEADERS "include/steem/schema/*.hpp") -add_library( steem_schema schema.cpp ${HEADERS} ) -target_link_libraries( steem_schema fc ) -target_include_directories( steem_schema PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) +file(GLOB HEADERS "include/sophiatx/schema/*.hpp") +add_library( sophiatx_schema schema.cpp ${HEADERS} ) +target_link_libraries( sophiatx_schema fc ) +target_include_directories( sophiatx_schema PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) install( TARGETS - steem_schema + sophiatx_schema RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) -install( FILES ${HEADERS} DESTINATION "include/steem/schema" ) +install( FILES ${HEADERS} DESTINATION "include/sophiatx/schema" ) diff --git a/libraries/schema/include/steem/schema/abstract_schema.hpp b/libraries/schema/include/sophiatx/schema/abstract_schema.hpp similarity index 95% rename from libraries/schema/include/steem/schema/abstract_schema.hpp rename to libraries/schema/include/sophiatx/schema/abstract_schema.hpp index df8504da..d5f59344 100644 --- a/libraries/schema/include/steem/schema/abstract_schema.hpp +++ b/libraries/schema/include/sophiatx/schema/abstract_schema.hpp @@ -6,7 +6,7 @@ #include -namespace steem { namespace schema { +namespace sophiatx { namespace schema { struct abstract_schema { @@ -52,4 +52,4 @@ std::shared_ptr< abstract_schema > get_schema_for_type() void add_dependent_schemas( std::vector< std::shared_ptr< abstract_schema > >& schema_list ); -} } // steem::schema +} } // sophiatx::schema diff --git a/libraries/schema/include/sophiatx/schema/schema.hpp b/libraries/schema/include/sophiatx/schema/schema.hpp new file mode 100644 index 00000000..5253e765 --- /dev/null +++ b/libraries/schema/include/sophiatx/schema/schema.hpp @@ -0,0 +1,5 @@ +#pragma once + +#include +#include +#include diff --git a/libraries/schema/include/steem/schema/schema_impl.hpp b/libraries/schema/include/sophiatx/schema/schema_impl.hpp similarity index 98% rename from libraries/schema/include/steem/schema/schema_impl.hpp rename to libraries/schema/include/sophiatx/schema/schema_impl.hpp index 5e847b83..759335dc 100644 --- a/libraries/schema/include/steem/schema/schema_impl.hpp +++ b/libraries/schema/include/sophiatx/schema/schema_impl.hpp @@ -11,7 +11,7 @@ #include #include -namespace steem { namespace schema { namespace detail { +namespace sophiatx { namespace schema { namespace detail { struct get_deps_member_visitor { diff --git a/libraries/schema/include/sophiatx/schema/schema_types.hpp b/libraries/schema/include/sophiatx/schema/schema_types.hpp new file mode 100644 index 00000000..879023df --- /dev/null +++ b/libraries/schema/include/sophiatx/schema/schema_types.hpp @@ -0,0 +1,10 @@ + +#pragma once + +#include +#include +#include +#include +#include +#include + diff --git a/libraries/schema/include/steem/schema/schema_types/fixed_string.hpp b/libraries/schema/include/sophiatx/schema/schema_types/fixed_string.hpp similarity index 87% rename from libraries/schema/include/steem/schema/schema_types/fixed_string.hpp rename to libraries/schema/include/sophiatx/schema/schema_types/fixed_string.hpp index 26e4bd45..a141f90d 100644 --- a/libraries/schema/include/steem/schema/schema_types/fixed_string.hpp +++ b/libraries/schema/include/sophiatx/schema/schema_types/fixed_string.hpp @@ -1,12 +1,12 @@ #pragma once -#include -#include +#include +#include #include -namespace steem { namespace schema { namespace detail { +namespace sophiatx { namespace schema { namespace detail { ////////////////////////////////////////////// // fixed_string // diff --git a/libraries/schema/include/steem/schema/schema_types/flat_map.hpp b/libraries/schema/include/sophiatx/schema/schema_types/flat_map.hpp similarity index 90% rename from libraries/schema/include/steem/schema/schema_types/flat_map.hpp rename to libraries/schema/include/sophiatx/schema/schema_types/flat_map.hpp index c2e04632..dad54748 100644 --- a/libraries/schema/include/steem/schema/schema_types/flat_map.hpp +++ b/libraries/schema/include/sophiatx/schema/schema_types/flat_map.hpp @@ -1,12 +1,12 @@ #pragma once -#include -#include +#include +#include #include -namespace steem { namespace schema { namespace detail { +namespace sophiatx { namespace schema { namespace detail { ////////////////////////////////////////////// // flat_map // diff --git a/libraries/schema/include/steem/schema/schema_types/flat_set.hpp b/libraries/schema/include/sophiatx/schema/schema_types/flat_set.hpp similarity index 89% rename from libraries/schema/include/steem/schema/schema_types/flat_set.hpp rename to libraries/schema/include/sophiatx/schema/schema_types/flat_set.hpp index f4e353e1..880da23b 100644 --- a/libraries/schema/include/steem/schema/schema_types/flat_set.hpp +++ b/libraries/schema/include/sophiatx/schema/schema_types/flat_set.hpp @@ -1,12 +1,12 @@ #pragma once -#include -#include +#include +#include #include -namespace steem { namespace schema { namespace detail { +namespace sophiatx { namespace schema { namespace detail { ////////////////////////////////////////////// // flat_set // diff --git a/libraries/schema/include/steem/schema/schema_types/pair.hpp b/libraries/schema/include/sophiatx/schema/schema_types/pair.hpp similarity index 90% rename from libraries/schema/include/steem/schema/schema_types/pair.hpp rename to libraries/schema/include/sophiatx/schema/schema_types/pair.hpp index ced8b3cb..2fb35015 100644 --- a/libraries/schema/include/steem/schema/schema_types/pair.hpp +++ b/libraries/schema/include/sophiatx/schema/schema_types/pair.hpp @@ -1,12 +1,12 @@ #pragma once -#include -#include +#include +#include #include -namespace steem { namespace schema { namespace detail { +namespace sophiatx { namespace schema { namespace detail { ////////////////////////////////////////////// // pair // diff --git a/libraries/schema/include/steem/schema/schema_types/static_variant.hpp b/libraries/schema/include/sophiatx/schema/schema_types/static_variant.hpp similarity index 93% rename from libraries/schema/include/steem/schema/schema_types/static_variant.hpp rename to libraries/schema/include/sophiatx/schema/schema_types/static_variant.hpp index b48207b2..99a99a81 100644 --- a/libraries/schema/include/steem/schema/schema_types/static_variant.hpp +++ b/libraries/schema/include/sophiatx/schema/schema_types/static_variant.hpp @@ -1,12 +1,12 @@ #pragma once -#include -#include +#include +#include #include -namespace steem { namespace schema { namespace detail { +namespace sophiatx { namespace schema { namespace detail { ////////////////////////////////////////////// // static_variant // diff --git a/libraries/schema/include/steem/schema/schema_types/vector.hpp b/libraries/schema/include/sophiatx/schema/schema_types/vector.hpp similarity index 88% rename from libraries/schema/include/steem/schema/schema_types/vector.hpp rename to libraries/schema/include/sophiatx/schema/schema_types/vector.hpp index d0997807..72a5641d 100644 --- a/libraries/schema/include/steem/schema/schema_types/vector.hpp +++ b/libraries/schema/include/sophiatx/schema/schema_types/vector.hpp @@ -1,12 +1,12 @@ #pragma once -#include -#include +#include +#include #include -namespace steem { namespace schema { namespace detail { +namespace sophiatx { namespace schema { namespace detail { ////////////////////////////////////////////// // vector // diff --git a/libraries/schema/include/steem/schema/schema.hpp b/libraries/schema/include/steem/schema/schema.hpp deleted file mode 100644 index 32f6bd9f..00000000 --- a/libraries/schema/include/steem/schema/schema.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include -#include -#include diff --git a/libraries/schema/include/steem/schema/schema_types.hpp b/libraries/schema/include/steem/schema/schema_types.hpp deleted file mode 100644 index 4dc9aa0e..00000000 --- a/libraries/schema/include/steem/schema/schema_types.hpp +++ /dev/null @@ -1,10 +0,0 @@ - -#pragma once - -#include -#include -#include -#include -#include -#include - diff --git a/libraries/schema/schema.cpp b/libraries/schema/schema.cpp index 123b5bf9..e779d9c4 100644 --- a/libraries/schema/schema.cpp +++ b/libraries/schema/schema.cpp @@ -1,9 +1,9 @@ -#include +#include #include -namespace steem { namespace schema { +namespace sophiatx { namespace schema { namespace detail { diff --git a/libraries/utilities/CMakeFiles/git-data/HEAD b/libraries/utilities/CMakeFiles/git-data/HEAD deleted file mode 100644 index cb089cd8..00000000 --- a/libraries/utilities/CMakeFiles/git-data/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/heads/master diff --git a/libraries/utilities/CMakeFiles/git-data/grabRef.cmake b/libraries/utilities/CMakeFiles/git-data/grabRef.cmake deleted file mode 100644 index 3d6a5a6b..00000000 --- a/libraries/utilities/CMakeFiles/git-data/grabRef.cmake +++ /dev/null @@ -1,38 +0,0 @@ -# -# Internal file for GetGitRevisionDescription.cmake -# -# Requires CMake 2.6 or newer (uses the 'function' command) -# -# Original Author: -# 2009-2010 Ryan Pavlik -# http://academic.cleardefinition.com -# Iowa State University HCI Graduate Program/VRAC -# -# Copyright Iowa State University 2009-2010. -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt) - -set(HEAD_HASH) - -file(READ "/Users/ejossev/working/steem/libraries/utilities/CMakeFiles/git-data/HEAD" HEAD_CONTENTS LIMIT 1024) - -string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) -if(HEAD_CONTENTS MATCHES "ref") - # named branch - string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") - if(EXISTS "/Users/ejossev/working/steem/.git/${HEAD_REF}") - configure_file("/Users/ejossev/working/steem/.git/${HEAD_REF}" "/Users/ejossev/working/steem/libraries/utilities/CMakeFiles/git-data/head-ref" COPYONLY) - elseif(EXISTS "/Users/ejossev/working/steem/.git/logs/${HEAD_REF}") - configure_file("/Users/ejossev/working/steem/.git/logs/${HEAD_REF}" "/Users/ejossev/working/steem/libraries/utilities/CMakeFiles/git-data/head-ref" COPYONLY) - set(HEAD_HASH "${HEAD_REF}") - endif() -else() - # detached HEAD - configure_file("/Users/ejossev/working/steem/.git/HEAD" "/Users/ejossev/working/steem/libraries/utilities/CMakeFiles/git-data/head-ref" COPYONLY) -endif() - -if(NOT HEAD_HASH) - file(READ "/Users/ejossev/working/steem/libraries/utilities/CMakeFiles/git-data/head-ref" HEAD_HASH LIMIT 1024) - string(STRIP "${HEAD_HASH}" HEAD_HASH) -endif() diff --git a/libraries/utilities/CMakeLists.txt b/libraries/utilities/CMakeLists.txt index 503cd63d..99abd76d 100644 --- a/libraries/utilities/CMakeLists.txt +++ b/libraries/utilities/CMakeLists.txt @@ -1,13 +1,13 @@ list( APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/libraries/fc/GitVersionGen" ) include( GetGitRevisionDescription ) -get_git_head_revision(GIT_REFSPEC STEEM_GIT_REVISION_SHA) -get_git_unix_timestamp(STEEM_GIT_REVISION_UNIX_TIMESTAMP) -git_describe(STEEM_GIT_REVISION_DESCRIPTION --tags) -if(NOT STEEM_GIT_REVISION_DESCRIPTION) - set(STEEM_GIT_REVISION_DESCRIPTION "unknown") -endif(NOT STEEM_GIT_REVISION_DESCRIPTION) +get_git_head_revision(GIT_REFSPEC SOPHIATX_GIT_REVISION_SHA) +get_git_unix_timestamp(SOPHIATX_GIT_REVISION_UNIX_TIMESTAMP) +git_describe(SOPHIATX_GIT_REVISION_DESCRIPTION --tags) +if(NOT SOPHIATX_GIT_REVISION_DESCRIPTION) + set(SOPHIATX_GIT_REVISION_DESCRIPTION "unknown") +endif(NOT SOPHIATX_GIT_REVISION_DESCRIPTION) -file(GLOB HEADERS "include/steem/utilities/*.hpp") +file(GLOB HEADERS "include/sophiatx/utilities/*.hpp") set(sources benchmark_dumper.cpp @@ -21,29 +21,34 @@ set(sources configure_file("${CMAKE_CURRENT_SOURCE_DIR}/git_revision.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/git_revision.cpp" @ONLY) list(APPEND sources "${CMAKE_CURRENT_BINARY_DIR}/git_revision.cpp") -add_library( steem_utilities +if(MSVC) + find_library (PSAPI Psapi) + list( APPEND PLATFORM_SPECIFIC_LIBS PSAPI ) +endif() + +add_library( sophiatx_utilities ${sources} ${HEADERS} ) -target_link_libraries( steem_utilities fc ) -target_include_directories( steem_utilities +target_link_libraries( sophiatx_utilities fc ${PLATFORM_SPECIFIC_LIBS}) +target_include_directories( sophiatx_utilities PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) if (USE_PCH) - set_target_properties(steem_utilities PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE) - cotire(steem_utilities) + set_target_properties(sophiatx_utilities PROPERTIES COTIRE_ADD_UNITY_BUILD FALSE) + cotire(sophiatx_utilities) endif(USE_PCH) if( CLANG_TIDY_EXE ) set_target_properties( - steem_utilities PROPERTIES + sophiatx_utilities PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" ) endif( CLANG_TIDY_EXE ) install( TARGETS - steem_utilities + sophiatx_utilities RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) -install( FILES ${HEADERS} DESTINATION "include/steem/utilities" ) +install( FILES ${HEADERS} DESTINATION "include/sophiatx/utilities" ) diff --git a/libraries/utilities/benchmark_dumper.cpp b/libraries/utilities/benchmark_dumper.cpp index 922b677d..cc949aab 100644 --- a/libraries/utilities/benchmark_dumper.cpp +++ b/libraries/utilities/benchmark_dumper.cpp @@ -1,7 +1,13 @@ -#include +#include -namespace steem { namespace utilities { +#ifdef _MSC_VER +#include +#include +#include +#endif + +namespace sophiatx { namespace utilities { #define PROC_STATUS_LINE_LENGTH 1028 @@ -38,6 +44,29 @@ uint64_t read_u64_value_from(FILE* input, const char* key, unsigned key_length, return 0; } +#ifdef _MSC_VER +bool benchmark_dumper::read_mem(unsigned long pid, uint64_t* current_virtual, uint64_t* peak_virtual) +{ + HANDLE hProcess; + PROCESS_MEMORY_COUNTERS pmc; + + hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | + PROCESS_VM_READ, + FALSE, pid); + + if (NULL == hProcess) + return false; + + if (GetProcessMemoryInfo(hProcess, &pmc, sizeof(pmc))) + { + *peak_virtual = pmc.PeakWorkingSetSize; + *current_virtual = pmc.WorkingSetSize; + } + CloseHandle(hProcess); + + return true; +} +#else bool benchmark_dumper::read_mem(pid_t pid, uint64_t* current_virtual, uint64_t* peak_virtual) { const char* procPath = "/proc/self/status"; @@ -59,5 +88,6 @@ bool benchmark_dumper::read_mem(pid_t pid, uint64_t* current_virtual, uint64_t* fclose(input); return true; } +#endif } } diff --git a/libraries/utilities/git_revision.cpp b/libraries/utilities/git_revision.cpp deleted file mode 100644 index 5a8920f8..00000000 --- a/libraries/utilities/git_revision.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include - -#define STEEM_GIT_REVISION_SHA "" -#define STEEM_GIT_REVISION_UNIX_TIMESTAMP HEAD-HASH-NOTFOUND -#define STEEM_GIT_REVISION_DESCRIPTION "unknown" - -namespace steem { namespace utilities { - -const char* const git_revision_sha = STEEM_GIT_REVISION_SHA; -const uint32_t git_revision_unix_timestamp = STEEM_GIT_REVISION_UNIX_TIMESTAMP; -const char* const git_revision_description = STEEM_GIT_REVISION_DESCRIPTION; - -} } // end namespace steem::utilities diff --git a/libraries/utilities/git_revision.cpp.in b/libraries/utilities/git_revision.cpp.in index c38e6ac8..a630bbf2 100644 --- a/libraries/utilities/git_revision.cpp.in +++ b/libraries/utilities/git_revision.cpp.in @@ -1,14 +1,14 @@ #include -#include +#include -#define STEEM_GIT_REVISION_SHA "@STEEM_GIT_REVISION_SHA@" -#define STEEM_GIT_REVISION_UNIX_TIMESTAMP @STEEM_GIT_REVISION_UNIX_TIMESTAMP@ -#define STEEM_GIT_REVISION_DESCRIPTION "@STEEM_GIT_REVISION_DESCRIPTION@" +#define SOPHIATX_GIT_REVISION_SHA "@SOPHIATX_GIT_REVISION_SHA@" +#define SOPHIATX_GIT_REVISION_UNIX_TIMESTAMP @SOPHIATX_GIT_REVISION_UNIX_TIMESTAMP@ +#define SOPHIATX_GIT_REVISION_DESCRIPTION "@SOPHIATX_GIT_REVISION_DESCRIPTION@" -namespace steem { namespace utilities { +namespace sophiatx { namespace utilities { -const char* const git_revision_sha = STEEM_GIT_REVISION_SHA; -const uint32_t git_revision_unix_timestamp = STEEM_GIT_REVISION_UNIX_TIMESTAMP; -const char* const git_revision_description = STEEM_GIT_REVISION_DESCRIPTION; +const char* const git_revision_sha = SOPHIATX_GIT_REVISION_SHA; +const uint32_t git_revision_unix_timestamp = SOPHIATX_GIT_REVISION_UNIX_TIMESTAMP; +const char* const git_revision_description = SOPHIATX_GIT_REVISION_DESCRIPTION; -} } // end namespace steem::utilities +} } // end namespace sophiatx::utilities diff --git a/libraries/utilities/include/steem/utilities/benchmark_dumper.hpp b/libraries/utilities/include/sophiatx/utilities/benchmark_dumper.hpp similarity index 90% rename from libraries/utilities/include/steem/utilities/benchmark_dumper.hpp rename to libraries/utilities/include/sophiatx/utilities/benchmark_dumper.hpp index b2bba9f2..80f30e37 100644 --- a/libraries/utilities/include/steem/utilities/benchmark_dumper.hpp +++ b/libraries/utilities/include/sophiatx/utilities/benchmark_dumper.hpp @@ -6,9 +6,11 @@ #include #include -#include +#ifdef _MSC_VER +#include +#endif // _MSC_VER -namespace steem { namespace utilities { +namespace sophiatx { namespace utilities { /** * Time and memory usage measuring tool. @@ -95,7 +97,12 @@ class benchmark_dumper _file_name = file_name; _init_sys_time = _last_sys_time = fc::time_point::now(); _init_cpu_time = _last_cpu_time = clock(); - _pid = getpid(); +#ifdef _MSC_VER + _pid = GetCurrentProcessId(); +#else + _pid = getpid(); +#endif // _MSC_VER + get_database_objects_sizeofs(_all_data.database_object_sizeofs); } @@ -165,8 +172,11 @@ class benchmark_dumper } private: +#ifdef _MSC_VER + bool read_mem(unsigned long pid, uint64_t* current_virtual, uint64_t* peak_virtual); +#else bool read_mem(pid_t pid, uint64_t* current_virtual, uint64_t* peak_virtual); - +#endif private: const char* _file_name = nullptr; fc::time_point _init_sys_time; @@ -174,22 +184,26 @@ class benchmark_dumper clock_t _init_cpu_time = 0; clock_t _last_cpu_time = 0; uint64_t _total_blocks = 0; +#ifdef _MSC_VER + unsigned long _pid = 0; +#else pid_t _pid = 0; +#endif TAllData _all_data; }; -} } // steem::utilities +} } // sophiatx::utilities -FC_REFLECT( steem::utilities::benchmark_dumper::index_memory_details_t, +FC_REFLECT( sophiatx::utilities::benchmark_dumper::index_memory_details_t, (index_name)(index_size)(item_sizeof)(item_additional_allocation) (additional_container_allocation)(total_index_mem_usage) ) -FC_REFLECT( steem::utilities::benchmark_dumper::database_object_sizeof_t, +FC_REFLECT( sophiatx::utilities::benchmark_dumper::database_object_sizeof_t, (object_name)(object_size) ) -FC_REFLECT( steem::utilities::benchmark_dumper::measurement, +FC_REFLECT( sophiatx::utilities::benchmark_dumper::measurement, (block_number)(real_ms)(cpu_ms)(current_mem)(peak_mem)(index_memory_details_cntr) ) -FC_REFLECT( steem::utilities::benchmark_dumper::TAllData, +FC_REFLECT( sophiatx::utilities::benchmark_dumper::TAllData, (database_object_sizeofs)(measurements)(total_measurement) ) diff --git a/libraries/utilities/include/steem/utilities/git_revision.hpp b/libraries/utilities/include/sophiatx/utilities/git_revision.hpp similarity index 96% rename from libraries/utilities/include/steem/utilities/git_revision.hpp rename to libraries/utilities/include/sophiatx/utilities/git_revision.hpp index bae6d533..c0ee9f3d 100644 --- a/libraries/utilities/include/steem/utilities/git_revision.hpp +++ b/libraries/utilities/include/sophiatx/utilities/git_revision.hpp @@ -24,7 +24,7 @@ #pragma once #include -namespace steem { namespace utilities { +namespace sophiatx { namespace utilities { extern const char* const git_revision_sha; extern const uint32_t git_revision_unix_timestamp; diff --git a/libraries/utilities/include/steem/utilities/key_conversion.hpp b/libraries/utilities/include/sophiatx/utilities/key_conversion.hpp similarity index 94% rename from libraries/utilities/include/steem/utilities/key_conversion.hpp rename to libraries/utilities/include/sophiatx/utilities/key_conversion.hpp index f886f620..724a8bbc 100644 --- a/libraries/utilities/include/steem/utilities/key_conversion.hpp +++ b/libraries/utilities/include/sophiatx/utilities/key_conversion.hpp @@ -27,10 +27,10 @@ #include #include -namespace steem { namespace utilities { +namespace sophiatx { namespace utilities { std::string key_to_wif(const fc::sha256& private_secret ); std::string key_to_wif(const fc::ecc::private_key& key); fc::optional wif_to_key( const std::string& wif_key ); -} } // end namespace steem::utilities +} } // end namespace sophiatx::utilities diff --git a/libraries/utilities/include/steem/utilities/logging_config.hpp b/libraries/utilities/include/sophiatx/utilities/logging_config.hpp similarity index 72% rename from libraries/utilities/include/steem/utilities/logging_config.hpp rename to libraries/utilities/include/sophiatx/utilities/logging_config.hpp index 88d5a0e5..d40a2e6f 100644 --- a/libraries/utilities/include/steem/utilities/logging_config.hpp +++ b/libraries/utilities/include/sophiatx/utilities/logging_config.hpp @@ -10,7 +10,7 @@ #include -namespace steem { namespace utilities { +namespace sophiatx { namespace utilities { struct console_appender_args { @@ -35,8 +35,8 @@ void set_logging_program_options( boost::program_options::options_description& o fc::optional load_logging_config( const boost::program_options::variables_map& args, const boost::filesystem::path& pwd ); -} } // steem::utilities +} } // sophiatx::utilities -FC_REFLECT( steem::utilities::console_appender_args, (appender)(stream) ) -FC_REFLECT( steem::utilities::file_appender_args, (appender)(file) ) -FC_REFLECT( steem::utilities::logger_args, (name)(level)(appender) ) +FC_REFLECT( sophiatx::utilities::console_appender_args, (appender)(stream) ) +FC_REFLECT( sophiatx::utilities::file_appender_args, (appender)(file) ) +FC_REFLECT( sophiatx::utilities::logger_args, (name)(level)(appender) ) diff --git a/libraries/utilities/include/steem/utilities/padding_ostream.hpp b/libraries/utilities/include/sophiatx/utilities/padding_ostream.hpp similarity index 96% rename from libraries/utilities/include/steem/utilities/padding_ostream.hpp rename to libraries/utilities/include/sophiatx/utilities/padding_ostream.hpp index c26a86fa..2ef88e65 100644 --- a/libraries/utilities/include/steem/utilities/padding_ostream.hpp +++ b/libraries/utilities/include/sophiatx/utilities/padding_ostream.hpp @@ -23,7 +23,7 @@ */ #pragma once -namespace steem { namespace utilities { +namespace sophiatx { namespace utilities { template class padding_ostream : public fc::buffered_ostream { @@ -54,5 +54,5 @@ class padding_ostream : public fc::buffered_ostream { size_t bytes_out = 0; }; -} } //steem::utilities +} } //sophiatx::utilities diff --git a/libraries/utilities/include/steem/utilities/plugin_utilities.hpp b/libraries/utilities/include/sophiatx/utilities/plugin_utilities.hpp similarity index 73% rename from libraries/utilities/include/steem/utilities/plugin_utilities.hpp rename to libraries/utilities/include/sophiatx/utilities/plugin_utilities.hpp index a48665b2..d5fc1b92 100644 --- a/libraries/utilities/include/steem/utilities/plugin_utilities.hpp +++ b/libraries/utilities/include/sophiatx/utilities/plugin_utilities.hpp @@ -1,6 +1,6 @@ #include -namespace steem { namespace plugins { +namespace sophiatx { namespace plugins { template T dejsonify(const std::string& s) { @@ -8,12 +8,12 @@ T dejsonify(const std::string& s) { } // TODO: Move this somewhere else. Also exists in app/plugin.hpp, which will be removed. -#ifndef STEEM_LOAD_VALUE_SET -#define STEEM_LOAD_VALUE_SET(options, name, container, type) \ +#ifndef SOPHIATX_LOAD_VALUE_SET +#define SOPHIATX_LOAD_VALUE_SET(options, name, container, type) \ if( options.count(name) ) { \ const std::vector& ops = options[name].as>(); \ std::transform(ops.begin(), ops.end(), std::inserter(container, container.end()), &dejsonify); \ } #endif -} } // steem::plugins +} } // sophiatx::plugins diff --git a/libraries/utilities/include/steem/utilities/string_escape.hpp b/libraries/utilities/include/sophiatx/utilities/string_escape.hpp similarity index 93% rename from libraries/utilities/include/steem/utilities/string_escape.hpp rename to libraries/utilities/include/sophiatx/utilities/string_escape.hpp index a846cff2..2ffd67b7 100644 --- a/libraries/utilities/include/steem/utilities/string_escape.hpp +++ b/libraries/utilities/include/sophiatx/utilities/string_escape.hpp @@ -25,8 +25,8 @@ #include -namespace steem { namespace utilities { +namespace sophiatx { namespace utilities { std::string escape_string_for_c_source_code(const std::string& input); -} } // end namespace steem::utilities +} } // end namespace sophiatx::utilities diff --git a/libraries/utilities/include/steem/utilities/tempdir.hpp b/libraries/utilities/include/sophiatx/utilities/tempdir.hpp similarity index 94% rename from libraries/utilities/include/steem/utilities/tempdir.hpp rename to libraries/utilities/include/sophiatx/utilities/tempdir.hpp index 907f7ff4..bf49335d 100644 --- a/libraries/utilities/include/steem/utilities/tempdir.hpp +++ b/libraries/utilities/include/sophiatx/utilities/tempdir.hpp @@ -27,8 +27,8 @@ #include -namespace steem { namespace utilities { +namespace sophiatx { namespace utilities { fc::path temp_directory_path(); -} } // steem::utilities +} } // sophiatx::utilities diff --git a/libraries/utilities/include/steem/utilities/words.hpp b/libraries/utilities/include/sophiatx/utilities/words.hpp similarity index 97% rename from libraries/utilities/include/steem/utilities/words.hpp rename to libraries/utilities/include/sophiatx/utilities/words.hpp index ec1bf684..76b2099c 100644 --- a/libraries/utilities/include/steem/utilities/words.hpp +++ b/libraries/utilities/include/sophiatx/utilities/words.hpp @@ -23,7 +23,7 @@ */ #pragma once -namespace steem { namespace words { +namespace sophiatx { namespace words { typedef const char* const_char_ptr; extern const const_char_ptr word_list[]; diff --git a/libraries/utilities/key_conversion.cpp b/libraries/utilities/key_conversion.cpp index 77143504..e3a5aa73 100644 --- a/libraries/utilities/key_conversion.cpp +++ b/libraries/utilities/key_conversion.cpp @@ -21,11 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -#include +#include #include #include -namespace steem { namespace utilities { +namespace sophiatx { namespace utilities { std::string key_to_wif(const fc::sha256& secret ) { @@ -69,4 +69,4 @@ fc::optional wif_to_key( const std::string& wif_key ) return fc::optional(); } -} } // end namespace steem::utilities +} } // end namespace sophiatx::utilities diff --git a/libraries/utilities/logging_config.cpp b/libraries/utilities/logging_config.cpp index 5a1a69f0..eb36ee45 100644 --- a/libraries/utilities/logging_config.cpp +++ b/libraries/utilities/logging_config.cpp @@ -1,4 +1,4 @@ -#include +#include #include @@ -8,7 +8,7 @@ #include -namespace steem { namespace utilities { +namespace sophiatx { namespace utilities { using std::string; using std::vector; diff --git a/libraries/utilities/string_escape.cpp b/libraries/utilities/string_escape.cpp index 5dd7cca0..9066c21b 100644 --- a/libraries/utilities/string_escape.cpp +++ b/libraries/utilities/string_escape.cpp @@ -21,10 +21,10 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -#include +#include #include -namespace steem { namespace utilities { +namespace sophiatx { namespace utilities { std::string escape_string_for_c_source_code(const std::string& input) { @@ -69,5 +69,5 @@ namespace steem { namespace utilities { return escaped_string.str(); } -} } // end namespace steem::utilities +} } // end namespace sophiatx::utilities diff --git a/libraries/utilities/tempdir.cpp b/libraries/utilities/tempdir.cpp index fb177fca..9028b416 100644 --- a/libraries/utilities/tempdir.cpp +++ b/libraries/utilities/tempdir.cpp @@ -22,18 +22,18 @@ * THE SOFTWARE. */ -#include +#include #include -namespace steem { namespace utilities { +namespace sophiatx { namespace utilities { fc::path temp_directory_path() { - const char* steemit_tempdir = getenv("STEEM_TEMPDIR"); - if( steemit_tempdir != nullptr ) - return fc::path( steemit_tempdir ); - return fc::temp_directory_path() / "steem-tmp"; + const char* sophiatx_tempdir = getenv("SOPHIATX_TEMPDIR"); + if( sophiatx_tempdir != nullptr ) + return fc::path( sophiatx_tempdir ); + return fc::temp_directory_path() / "sophiatx-tmp"; } -} } // steem::utilities +} } // sophiatx::utilities diff --git a/libraries/utilities/words.cpp b/libraries/utilities/words.cpp index eaf8a04d..d7210d18 100644 --- a/libraries/utilities/words.cpp +++ b/libraries/utilities/words.cpp @@ -22,9 +22,9 @@ * THE SOFTWARE. */ #include -#include +#include -namespace steem { namespace words { +namespace sophiatx { namespace words { const const_char_ptr word_list[] = { "a", @@ -14362,7 +14362,7 @@ const const_char_ptr word_list[] = { "estado", "estamp", "estate", -"esteem", +"esophiatx", "ester", "estevin", "estival", @@ -49780,4 +49780,4 @@ void hide_unused_warning() { (void)word_list; } -} } // steem::words +} } // sophiatx::words diff --git a/libraries/wallet/CMakeLists.txt b/libraries/wallet/CMakeLists.txt index b669e3e0..e2cddfd9 100644 --- a/libraries/wallet/CMakeLists.txt +++ b/libraries/wallet/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB HEADERS "include/steem/wallet/*.hpp") +file(GLOB HEADERS "include/sophiatx/wallet/*.hpp") find_package( Perl ) find_package( Doxygen ) @@ -8,14 +8,25 @@ if( PERL_FOUND AND DOXYGEN_FOUND AND NOT "${CMAKE_GENERATOR}" STREQUAL "Ninja" ) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doxygen/perlmod/DoxyDocs.pm WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${DOXYGEN_EXECUTABLE} - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile ${CMAKE_CURRENT_SOURCE_DIR}/include/steem/wallet/wallet.hpp ) + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile ${CMAKE_CURRENT_SOURCE_DIR}/include/sophiatx/wallet/wallet.hpp ) - add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp - COMMAND PERLLIB=${CMAKE_CURRENT_SOURCE_DIR} ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_api_documentation.pl ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp.new + if(WIN32) + add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp + COMMAND set PERLLIB=${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_api_documentation.pl ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp.new + + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp.new ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp + COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp.new + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generate_api_documentation.pl ${CMAKE_CURRENT_BINARY_DIR}/doxygen/perlmod/DoxyDocs.pm ) + else() + add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp + COMMAND PERLLIB=${CMAKE_CURRENT_BINARY_DIR} ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_api_documentation.pl ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp.new COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp.new ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp.new DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generate_api_documentation.pl ${CMAKE_CURRENT_BINARY_DIR}/doxygen/perlmod/DoxyDocs.pm ) + endif() + else() # no perl and doxygen, generate the best docs we can at runtime from reflection add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp @@ -23,13 +34,16 @@ else() DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/api_documentation_standin.cpp ) endif() -add_library( steem_wallet wallet.cpp remote_node_api.cpp ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp ${HEADERS} ) -target_link_libraries( steem_wallet PRIVATE graphene_net steem_chain steem_protocol steem_utilities fc condenser_api_plugin ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) -target_include_directories( steem_wallet PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) +add_library( sophiatx_wallet wallet.cpp remote_node_api.cpp ${CMAKE_CURRENT_BINARY_DIR}/api_documentation.cpp ${HEADERS} ) +target_link_libraries( sophiatx_wallet PRIVATE graphene_net sophiatx_chain sophiatx_protocol sophiatx_utilities fc condenser_api_plugin ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) +target_include_directories( sophiatx_wallet PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) +if(USE_PCH) + cotire(sophiatx_wallet) +endif(USE_PCH) if( CLANG_TIDY_EXE ) set_target_properties( - steem_wallet PROPERTIES + sophiatx_wallet PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" ) endif( CLANG_TIDY_EXE ) @@ -39,10 +53,10 @@ if(MSVC) endif(MSVC) install( TARGETS - steem_wallet + sophiatx_wallet RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) -install( FILES ${HEADERS} DESTINATION "include/steem/wallet" ) +install( FILES ${HEADERS} DESTINATION "include/sophiatx/wallet" ) diff --git a/libraries/wallet/Doxyfile.in b/libraries/wallet/Doxyfile.in index 07b45c52..ddad4261 100644 --- a/libraries/wallet/Doxyfile.in +++ b/libraries/wallet/Doxyfile.in @@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = "Steem Wallet API" +PROJECT_NAME = "SophiaTX Wallet API" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version @@ -758,7 +758,7 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = ${CMAKE_CURRENT_SOURCE_DIR}/include/steem/wallet/wallet.hpp +INPUT = ${CMAKE_CURRENT_SOURCE_DIR}/include/sophiatx/wallet/wallet.hpp # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses diff --git a/libraries/wallet/api_documentation_standin.cpp b/libraries/wallet/api_documentation_standin.cpp index 7ef2416a..85796b42 100644 --- a/libraries/wallet/api_documentation_standin.cpp +++ b/libraries/wallet/api_documentation_standin.cpp @@ -23,10 +23,10 @@ */ #include #include -#include -#include +#include +#include -namespace steem { namespace wallet { +namespace sophiatx { namespace wallet { namespace detail { namespace { @@ -88,4 +88,4 @@ namespace steem { namespace wallet { std::inserter(method_descriptions, method_descriptions.end())); } -} } // end namespace steem::wallet +} } // end namespace sophiatx::wallet diff --git a/libraries/wallet/generate_api_documentation.pl b/libraries/wallet/generate_api_documentation.pl index a5c16103..f022b00d 100755 --- a/libraries/wallet/generate_api_documentation.pl +++ b/libraries/wallet/generate_api_documentation.pl @@ -13,10 +13,10 @@ my $fileHeader = <<'END'; /** GENERATED FILE **/ #include -#include -#include +#include +#include -namespace steem { namespace wallet { +namespace sophiatx { namespace wallet { namespace detail { struct api_method_name_collector_visitor @@ -38,7 +38,7 @@ END for my $class (@{$doxydocs->{classes}}) { - if ($class->{name} eq 'steem::wallet::wallet_api') + if ($class->{name} eq 'sophiatx::wallet::wallet_api') { for my $member (@{$class->{public_methods}->{members}}) { @@ -84,7 +84,7 @@ END ++iter; } -} } // end namespace steem::wallet +} } // end namespace sophiatx::wallet END $outFile->print($fileFooter); $outFile->close(); diff --git a/libraries/wallet/include/steem/wallet/api_documentation.hpp b/libraries/wallet/include/sophiatx/wallet/api_documentation.hpp similarity index 97% rename from libraries/wallet/include/steem/wallet/api_documentation.hpp rename to libraries/wallet/include/sophiatx/wallet/api_documentation.hpp index 8025d0e6..770c69b7 100644 --- a/libraries/wallet/include/steem/wallet/api_documentation.hpp +++ b/libraries/wallet/include/sophiatx/wallet/api_documentation.hpp @@ -31,7 +31,7 @@ #include -namespace steem { namespace wallet { +namespace sophiatx { namespace wallet { struct method_description { @@ -74,4 +74,4 @@ namespace steem { namespace wallet { } }; -} } // end namespace steem::wallet +} } // end namespace sophiatx::wallet diff --git a/libraries/wallet/include/steem/wallet/reflect_util.hpp b/libraries/wallet/include/sophiatx/wallet/reflect_util.hpp similarity index 96% rename from libraries/wallet/include/steem/wallet/reflect_util.hpp rename to libraries/wallet/include/sophiatx/wallet/reflect_util.hpp index 78e17aac..90d4d8e4 100644 --- a/libraries/wallet/include/steem/wallet/reflect_util.hpp +++ b/libraries/wallet/include/sophiatx/wallet/reflect_util.hpp @@ -27,7 +27,7 @@ // support the wallet, e.g. allow specifying operations by name // instead of ID. -namespace steem { namespace wallet { +namespace sophiatx { namespace wallet { struct static_variant_map { @@ -40,7 +40,7 @@ namespace impl { std::string clean_name( const std::string& name ) { std::string result; - const static std::string prefix = "steem::protocol::"; + const static std::string prefix = "sophiatx::protocol::"; const static std::string suffix = "_operation"; // graphene::chain::.*_operation if( (name.size() >= prefix.size() + suffix.size()) @@ -119,4 +119,4 @@ static_variant_map create_static_variant_map() return vtor.m; } -} } // namespace steem::wallet +} } // namespace sophiatx::wallet diff --git a/libraries/wallet/include/sophiatx/wallet/remote_node_api.hpp b/libraries/wallet/include/sophiatx/wallet/remote_node_api.hpp new file mode 100644 index 00000000..a89ee06f --- /dev/null +++ b/libraries/wallet/include/sophiatx/wallet/remote_node_api.hpp @@ -0,0 +1,112 @@ +#pragma once +#include + +namespace sophiatx { namespace wallet { + +using std::vector; +using fc::variant; +using fc::optional; + +using namespace chain; +using namespace plugins; +/*using namespace plugins::condenser_api; +using namespace plugins::database_api; +using namespace plugins::account_history; +using namespace plugins::follow; +using namespace plugins::market_history; +using namespace plugins::witness;*/ + +/** + * This is a dummy API so that the wallet can create properly formatted API calls + */ +struct remote_node_api +{ + condenser_api::get_version_return get_version(); + vector< account_name_type > get_active_witnesses(); + optional< block_header > get_block_header( uint32_t ); + optional< database_api::api_signed_block_object > get_block( uint32_t ); + vector< condenser_api::api_operation_object > get_ops_in_block( uint32_t, bool only_virtual = true ); + fc::variant_object get_config(); + condenser_api::extended_dynamic_global_properties get_dynamic_global_properties(); + chain_properties get_chain_properties(); + condenser_api::legacy_price get_current_median_history_price( asset_symbol_type ); + condenser_api::api_feed_history_object get_feed_history( asset_symbol_type); + condenser_api::api_witness_schedule_object get_witness_schedule(); + hardfork_version get_hardfork_version(); + condenser_api::scheduled_hardfork get_next_scheduled_hardfork(); + vector< vector< account_name_type > > get_key_references( vector< public_key_type > ); + vector< condenser_api::extended_account > get_accounts( vector< account_name_type > ); + vector< account_id_type > get_account_references( account_id_type account_id ); + vector< optional< condenser_api::api_account_object > > lookup_account_names( vector< account_name_type > ); + uint64_t get_account_count(); + vector< database_api::api_owner_authority_history_object > get_owner_history( account_name_type ); + optional< database_api::api_account_recovery_request_object > get_recovery_request( account_name_type ); + optional< condenser_api::api_escrow_object > get_escrow( account_name_type, uint32_t ); + optional< witness::api_account_bandwidth_object > get_account_bandwidth( account_name_type, witness::bandwidth_type ); + vector< optional< condenser_api::api_witness_object > > get_witnesses( vector< witness_id_type > ); + optional< condenser_api::api_witness_object > get_witness_by_account( account_name_type ); + vector< condenser_api::api_witness_object > get_witnesses_by_vote( account_name_type, uint32_t ); + vector< account_name_type > lookup_witness_accounts( string, uint32_t ); + uint64_t get_witness_count(); + string get_transaction_hex( signed_transaction ); + annotated_signed_transaction get_transaction( transaction_id_type ); + set< public_key_type > get_required_signatures( signed_transaction, flat_set< public_key_type > ); + set< public_key_type > get_potential_signatures( signed_transaction ); + bool verify_authority( signed_transaction ); + bool verify_account_authority( string, flat_set< public_key_type > ); + //vector< condenser_api::account_vote > get_account_votes( account_name_type ); + + map< uint32_t, condenser_api::api_operation_object > get_account_history( account_name_type, uint64_t, uint32_t ); + void broadcast_transaction( signed_transaction ); + network_broadcast_api::broadcast_transaction_synchronous_return broadcast_transaction_synchronous( signed_transaction ); + void broadcast_block( signed_block ); + flat_set< uint32_t > get_market_history_buckets(); + map< uint64_t, condenser_api::api_received_object > get_received_documents(uint32_t, string, string, string, uint32_t); + + vector get_applications(vector); + vector get_application_buyings(string, uint32_t, string); +}; + +} } + +FC_API( sophiatx::wallet::remote_node_api, + (get_version) + (get_active_witnesses) + (get_block_header) + (get_block) + (get_ops_in_block) + (get_config) + (get_dynamic_global_properties) + (get_chain_properties) + (get_current_median_history_price) + (get_feed_history) + (get_witness_schedule) + (get_hardfork_version) + (get_next_scheduled_hardfork) + (get_key_references) + (get_accounts) + (get_account_references) + (lookup_account_names) + (get_account_count) + (get_owner_history) + (get_recovery_request) + (get_escrow) + (get_witnesses) + (get_witness_by_account) + (get_witnesses_by_vote) + (lookup_witness_accounts) + (get_witness_count) + (get_transaction_hex) + (get_transaction) + (get_required_signatures) + (get_potential_signatures) + (verify_authority) + (verify_account_authority) + (get_account_history) + (broadcast_transaction) + (broadcast_transaction_synchronous) + (broadcast_block) + (get_applications) + (get_application_buyings) + (get_received_documents) + ) diff --git a/libraries/wallet/include/steem/wallet/wallet.hpp b/libraries/wallet/include/sophiatx/wallet/wallet.hpp similarity index 65% rename from libraries/wallet/include/steem/wallet/wallet.hpp rename to libraries/wallet/include/sophiatx/wallet/wallet.hpp index 1cdb37a9..a1675495 100644 --- a/libraries/wallet/include/steem/wallet/wallet.hpp +++ b/libraries/wallet/include/sophiatx/wallet/wallet.hpp @@ -1,22 +1,20 @@ #pragma once -#include +#include -#include +#include #include #include #include #include -namespace steem { namespace wallet { +namespace sophiatx { namespace wallet { using namespace std; -using namespace steem::utilities; -using namespace steem::protocol; - -typedef uint16_t transaction_handle_type; +using namespace sophiatx::utilities; +using namespace sophiatx::protocol; struct memo_data { @@ -66,8 +64,7 @@ struct wallet_data enum authority_type { owner, - active, - posting + active }; namespace detail { @@ -81,7 +78,7 @@ class wallet_api_impl; class wallet_api { public: - wallet_api( const wallet_data& initial_data, const steem::protocol::chain_id_type& _steem_chain_id, fc::api< remote_node_api > rapi ); + wallet_api( const wallet_data& initial_data, const sophiatx::protocol::chain_id_type& _sophiatx_chain_id, fc::api< remote_node_api > rapi ); virtual ~wallet_api(); bool copy_wallet_file( string destination_filename ); @@ -125,59 +122,24 @@ class wallet_api * * @returns Price feed history data on the blockchain */ - condenser_api::api_feed_history_object get_feed_history()const; + condenser_api::api_feed_history_object get_feed_history( asset_symbol_type symbol)const; /** * Returns the list of witnesses producing blocks in the current round (21 Blocks) */ vector< account_name_type > get_active_witnesses()const; - /** - * Returns the state info associated with the URL - */ - condenser_api::state get_state( string url ); - - /** - * Returns vesting withdraw routes for an account. - * - * @param account Account to query routes - * @param type Withdraw type type [incoming, outgoing, all] - */ - vector< database_api::api_withdraw_vesting_route_object > get_withdraw_routes( string account, condenser_api::withdraw_route_type type = condenser_api::all )const; - /** * Gets the account information for all accounts for which this wallet has a private key */ vector< condenser_api::api_account_object > list_my_accounts(); - /** Lists all accounts registered in the blockchain. - * This returns a list of all account names and their account ids, sorted by account name. - * - * Use the \c lowerbound and limit parameters to page through the list. To retrieve all accounts, - * start by setting \c lowerbound to the empty string \c "", and then each iteration, pass - * the last account name returned as the \c lowerbound for the next \c list_accounts() call. - * - * @param lowerbound the name of the first account to return. If the named account does not exist, - * the list will start at the account that comes after \c lowerbound - * @param limit the maximum number of accounts to return (max: 1000) - * @returns a list of accounts mapping account names to account ids - */ - vector< account_name_type > list_accounts(const string& lowerbound, uint32_t limit); - - /** Returns the block chain's rapidly-changing properties. - * The returned object contains information that changes every block interval - * such as the head block number, the next witness, etc. - * @see \c get_global_properties() for less-frequently changing properties - * @returns the dynamic global properties - */ - condenser_api::extended_dynamic_global_properties get_dynamic_global_properties() const; - /** Returns information about the given account. * * @param account_name the name of the account to provide information about * @returns the public account data stored in the blockchain */ - condenser_api::api_account_object get_account( string account_name ) const; + vector get_account( string account_name ) const; /** Returns the current wallet filename. * @@ -196,11 +158,11 @@ class wallet_api /** * @param account - the name of the account to retrieve key for - * @param role - active | owner | posting | memo + * @param role - active | owner | memo * @param password - the password to be used at key generation * @return public key corresponding to generated private key, and private key in WIF format. */ - pair get_private_key_from_password( string account, string role, string password )const; + pair get_private_key_from_password( string account, string password )const; /** @@ -341,11 +303,11 @@ class wallet_api * 'info' wallet command. * * @param creator The account creating the new account - * @param new_account_name The name of the new account + * @param seed The seed used to generate the name of the new account * @param json_meta JSON Metadata associated with the new account * @param broadcast true if you wish to broadcast the transaction */ - annotated_signed_transaction create_account( string creator, string new_account_name, string json_meta, bool broadcast ); + annotated_signed_transaction create_account( string creator, string seed, string json_meta, bool broadcast ); /** * This method is used by faucets to create new accounts for other users which must @@ -354,69 +316,22 @@ class wallet_api * The current account creation fee can be found with the 'info' wallet command. * * @param creator The account creating the new account - * @param newname The name of the new account + * @param seed The seed used to generate the name of the new account * @param json_meta JSON Metadata associated with the new account * @param owner public owner key of the new account * @param active public active key of the new account - * @param posting public posting key of the new account * @param memo public memo key of the new account * @param broadcast true if you wish to broadcast the transaction */ annotated_signed_transaction create_account_with_keys( string creator, - string newname, + string seed, string json_meta, public_key_type owner, public_key_type active, - public_key_type posting, public_key_type memo, bool broadcast )const; - /** - * This method will genrate new owner, active, and memo keys for the new account which - * will be controlable by this wallet. There is a fee associated with account creation - * that is paid by the creator. The current account creation fee can be found with the - * 'info' wallet command. - * - * These accounts are created with combination of STEEM and delegated SP - * - * @param creator The account creating the new account - * @param steem_fee The amount of the fee to be paid with STEEM - * @param delegated_vests The amount of the fee to be paid with delegation - * @param new_account_name The name of the new account - * @param json_meta JSON Metadata associated with the new account - * @param broadcast true if you wish to broadcast the transaction - */ - annotated_signed_transaction create_account_delegated( string creator, asset steem_fee, asset delegated_vests, string new_account_name, string json_meta, bool broadcast ); - /** - * This method is used by faucets to create new accounts for other users which must - * provide their desired keys. The resulting account may not be controllable by this - * wallet. There is a fee associated with account creation that is paid by the creator. - * The current account creation fee can be found with the 'info' wallet command. - * - * These accounts are created with combination of STEEM and delegated SP - * - * @param creator The account creating the new account - * @param steem_fee The amount of the fee to be paid with STEEM - * @param delegated_vests The amount of the fee to be paid with delegation - * @param newname The name of the new account - * @param json_meta JSON Metadata associated with the new account - * @param owner public owner key of the new account - * @param active public active key of the new account - * @param posting public posting key of the new account - * @param memo public memo key of the new account - * @param broadcast true if you wish to broadcast the transaction - */ - annotated_signed_transaction create_account_with_keys_delegated( string creator, - asset steem_fee, - asset delegated_vests, - string newname, - string json_meta, - public_key_type owner, - public_key_type active, - public_key_type posting, - public_key_type memo, - bool broadcast )const; /** * This method updates the keys of an existing account. @@ -425,7 +340,6 @@ class wallet_api * @param json_meta New JSON Metadata to be associated with the account * @param owner New public owner key for the account * @param active New public active key for the account - * @param posting New public posting key for the account * @param memo New public memo key for the account * @param broadcast true if you wish to broadcast the transaction */ @@ -433,7 +347,6 @@ class wallet_api string json_meta, public_key_type owner, public_key_type active, - public_key_type posting, public_key_type memo, bool broadcast )const; @@ -441,10 +354,10 @@ class wallet_api * This method updates the key of an authority for an exisiting account. * Warning: You can create impossible authorities using this method. The method * will fail if you create an impossible owner authority, but will allow impossible - * active and posting authorities. + * active authorities. * * @param account_name The name of the account whose authority you wish to update - * @param type The authority type. e.g. owner, active, or posting + * @param type The authority type. e.g. owner or active * @param key The public key to add to the authority * @param weight The weight the key should have in the authority. A weight of 0 indicates the removal of the key. * @param broadcast true if you wish to broadcast the transaction. @@ -455,10 +368,10 @@ class wallet_api * This method updates the account of an authority for an exisiting account. * Warning: You can create impossible authorities using this method. The method * will fail if you create an impossible owner authority, but will allow impossible - * active and posting authorities. + * active authorities. * * @param account_name The name of the account whose authority you wish to update - * @param type The authority type. e.g. owner, active, or posting + * @param type The authority type. e.g. owner or active * @param auth_account The account to add the the authority * @param weight The weight the account should have in the authority. A weight of 0 indicates the removal of the account. * @param broadcast true if you wish to broadcast the transaction. @@ -470,10 +383,10 @@ class wallet_api * Warning: You can create impossible authorities using this method as well * as implicitly met authorities. The method will fail if you create an implicitly * true authority and if you create an impossible owner authoroty, but will allow - * impossible active and posting authorities. + * impossible active authorities. * * @param account_name The name of the account whose authority you wish to update - * @param type The authority type. e.g. owner, active, or posting + * @param type The authority type. e.g. owner or active * @param threshold The weight threshold required for the authority to be met * @param broadcast true if you wish to broadcast the transaction */ @@ -497,17 +410,13 @@ class wallet_api */ annotated_signed_transaction update_account_memo_key( string account_name, public_key_type key, bool broadcast ); - - /** - * This method delegates VESTS from one account to another. - * - * @param delegator The name of the account delegating VESTS - * @param delegatee The name of the account receiving VESTS - * @param vesting_shares The amount of VESTS to delegate - * @param broadcast true if you wish to broadcast the transaction - */ - annotated_signed_transaction delegate_vesting_shares( string delegator, string delegatee, asset vesting_shares, bool broadcast ); - + /** + * This method deletes an existing account. + * + * @param account_name The name of the account you wish to delete + * @param broadcast true if you wish to broadcast the transaction. + */ + annotated_signed_transaction delete_account( string account_name, bool broadcast ); /** * This method is used to convert a JSON transaction to its transaction ID. @@ -535,15 +444,6 @@ class wallet_api */ optional< condenser_api::api_witness_object > get_witness(string owner_account); - /** Returns conversion requests by an account - * - * @param owner Account name of the account owning the requests - * - * @returns All pending conversion requests by account - */ - vector< condenser_api::api_convert_request_object > get_conversion_requests( string owner ); - - /** * Update a witness object owned by the given account. * @@ -556,9 +456,18 @@ class wallet_api annotated_signed_transaction update_witness(string witness_name, string url, public_key_type block_signing_key, - const legacy_chain_properties& props, + const chain_properties& props, bool broadcast = false); + /** + * Stop being a witness, effectively deleting the witness object owned by the given account. + * + * @param witness_name The name of the witness account. + * @param broadcast true if you wish to broadcast the transaction. + */ + annotated_signed_transaction stop_witness(string witness_name, + bool broadcast = false); + /** Set the voting proxy for an account. * * If a user does not wish to take an active part in voting, they can choose @@ -595,25 +504,24 @@ class wallet_api bool broadcast = false); /** - * Transfer funds from one account to another. STEEM and SBD can be transferred. + * Transfer funds from one account to another. SPHTX can be transferred. * * @param from The account the funds are coming from * @param to The account the funds are going to - * @param amount The funds being transferred. i.e. "100.000 STEEM" - * @param memo A memo for the transactionm, encrypted with the to account's public memo key + * @param amount The funds being transferred. i.e. "100.000 SOPHIATX" + * @param memo A memo for the transaction, encrypted with the to account's public memo key * @param broadcast true if you wish to broadcast the transaction */ annotated_signed_transaction transfer(string from, string to, asset amount, string memo, bool broadcast = false); /** - * Transfer funds from one account to another using escrow. STEEM and SBD can be transferred. + * Transfer funds from one account to another using escrow. SPHTX can be transferred. * * @param from The account the funds are coming from * @param to The account the funds are going to * @param agent The account acting as the agent in case of dispute * @param escrow_id A unique id for the escrow transfer. (from, escrow_id) must be a unique pair - * @param sbd_amount The amount of SBD to transfer - * @param steem_amount The amount of STEEM to transfer + * @param sophiatx_amount The amount of SPHTX to transfer * @param fee The fee paid to the agent * @param ratification_deadline The deadline for 'to' and 'agent' to approve the escrow transfer * @param escrow_expiration The expiration of the escrow transfer, after which either party can claim the funds @@ -625,8 +533,7 @@ class wallet_api string to, string agent, uint32_t escrow_id, - asset sbd_amount, - asset steem_amount, + asset sophiatx_amount, asset fee, time_point_sec ratification_deadline, time_point_sec escrow_expiration, @@ -684,8 +591,7 @@ class wallet_api * @param who The account authorizing the release * @param receiver The account that will receive funds being released * @param escrow_id A unique id for the escrow transfer - * @param sbd_amount The amount of SBD that will be released - * @param steem_amount The amount of STEEM that will be released + * @param sophiatx_amount The amount of SPHTX that will be released * @param broadcast true if you wish to broadcast the transaction */ annotated_signed_transaction escrow_release( @@ -695,83 +601,36 @@ class wallet_api string who, string receiver, uint32_t escrow_id, - asset sbd_amount, - asset steem_amount, + asset sophiatx_amount, bool broadcast = false ); /** - * Transfer STEEM into a vesting fund represented by vesting shares (VESTS). VESTS are required to vesting + * Transfer SPHTX into a vesting fund represented by vesting shares (VESTS). VESTS are required to vesting * for a minimum of one coin year and can be withdrawn once a week over a two year withdraw period. - * VESTS are protected against dilution up until 90% of STEEM is vesting. + * VESTS are protected against dilution up until 90% of SPHTX is vesting. * - * @param from The account the STEEM is coming from + * @param from The account the SPHTX is coming from * @param to The account getting the VESTS - * @param amount The amount of STEEM to vest i.e. "100.00 STEEM" + * @param amount The amount of SPHTX to vest i.e. "100.00 SPHTX" * @param broadcast true if you wish to broadcast the transaction */ annotated_signed_transaction transfer_to_vesting(string from, string to, asset amount, bool broadcast = false); - /** - * Transfers into savings happen immediately, transfers from savings take 72 hours - */ - annotated_signed_transaction transfer_to_savings( string from, string to, asset amount, string memo, bool broadcast = false ); - - /** - * @param from - the account that initiated the transfer - * @param request_id - an unique ID assigned by from account, the id is used to cancel the operation and can be reused after the transfer completes - * @param to - the account getting the transfer - * @param amount - the amount of assets to be transfered - * @param memo A memo for the transactionm, encrypted with the to account's public memo key - * @param broadcast true if you wish to broadcast the transaction - */ - annotated_signed_transaction transfer_from_savings( string from, uint32_t request_id, string to, asset amount, string memo, bool broadcast = false ); - - /** - * @param from the account that initiated the transfer - * @param request_id the id used in transfer_from_savings - * @param broadcast true if you wish to broadcast the transaction - */ - annotated_signed_transaction cancel_transfer_from_savings( string from, uint32_t request_id, bool broadcast = false ); - /** * Set up a vesting withdraw request. The request is fulfilled once a week over the next two year (104 weeks). * * @param from The account the VESTS are withdrawn from * @param vesting_shares The amount of VESTS to withdraw over the next two years. Each week (amount/104) shares are - * withdrawn and deposited back as STEEM. i.e. "10.000000 VESTS" + * withdrawn and deposited back as SPHTX. i.e. "10.000000 VESTS" * @param broadcast true if you wish to broadcast the transaction */ annotated_signed_transaction withdraw_vesting( string from, asset vesting_shares, bool broadcast = false ); /** - * Set up a vesting withdraw route. When vesting shares are withdrawn, they will be routed to these accounts - * based on the specified weights. - * - * @param from The account the VESTS are withdrawn from. - * @param to The account receiving either VESTS or STEEM. - * @param percent The percent of the withdraw to go to the 'to' account. This is denoted in hundreths of a percent. - * i.e. 100 is 1% and 10000 is 100%. This value must be between 1 and 100000 - * @param auto_vest Set to true if the from account should receive the VESTS as VESTS, or false if it should receive - * them as STEEM. - * @param broadcast true if you wish to broadcast the transaction. - */ - annotated_signed_transaction set_withdraw_vesting_route( string from, string to, uint16_t percent, bool auto_vest, bool broadcast = false ); - - /** - * This method will convert SBD to STEEM at the current_median_history price one - * week from the time it is executed. This method depends upon there being a valid price feed. - * - * @param from The account requesting conversion of its SBD i.e. "1.000 SBD" - * @param amount The amount of SBD to convert - * @param broadcast true if you wish to broadcast the transaction - */ - annotated_signed_transaction convert_sbd( string from, asset amount, bool broadcast = false ); - - /** - * A witness can public a price feed for the STEEM:SBD market. The median price feed is used - * to process conversion requests from SBD to STEEM. + * A witness can public a price feed for the SPHTX:SBD market. The median price feed is used + * to process conversion requests from SBD to SPHTX. * * @param witness The witness publishing the price feed * @param exchange_rate The desired exchange rate @@ -789,79 +648,6 @@ class wallet_api */ annotated_signed_transaction sign_transaction(signed_transaction tx, bool broadcast = false); - /** Returns an uninitialized object representing a given blockchain operation. - * - * This returns a default-initialized object of the given type; it can be used - * during early development of the wallet when we don't yet have custom commands for - * creating all of the operations the blockchain supports. - * - * Any operation the blockchain supports can be created using the transaction builder's - * \c add_operation_to_builder_transaction() , but to do that from the CLI you need to - * know what the JSON form of the operation looks like. This will give you a template - * you can fill in. It's better than nothing. - * - * @param operation_type the type of operation to return, must be one of the - * operations defined in `steem/chain/operations.hpp` - * (e.g., "global_parameters_update_operation") - * @return a default-constructed operation of the given type - */ - operation get_prototype_operation(string operation_type); - - /** - * Gets the current order book for STEEM:SBD - * - * @param limit Maximum number of orders to return for bids and asks. Max is 1000. - */ - condenser_api::get_order_book_return get_order_book( uint32_t limit = 1000 ); - vector< condenser_api::api_limit_order_object > get_open_orders( string accountname ); - - /** - * Creates a limit order at the price amount_to_sell / min_to_receive and will deduct amount_to_sell from account - * - * @param owner The name of the account creating the order - * @param order_id is a unique identifier assigned by the creator of the order, it can be reused after the order has been filled - * @param amount_to_sell The amount of either SBD or STEEM you wish to sell - * @param min_to_receive The amount of the other asset you will receive at a minimum - * @param fill_or_kill true if you want the order to be killed if it cannot immediately be filled - * @param expiration the time the order should expire if it has not been filled - * @param broadcast true if you wish to broadcast the transaction - */ - annotated_signed_transaction create_order( string owner, uint32_t order_id, asset amount_to_sell, asset min_to_receive, bool fill_or_kill, uint32_t expiration, bool broadcast ); - - /** - * Cancel an order created with create_order - * - * @param owner The name of the account owning the order to cancel_order - * @param orderid The unique identifier assigned to the order by its creator - * @param broadcast true if you wish to broadcast the transaction - */ - annotated_signed_transaction cancel_order( string owner, uint32_t orderid, bool broadcast ); - - /** - * Post or update a comment. - * - * @param author the name of the account authoring the comment - * @param permlink the accountwide unique permlink for the comment - * @param parent_author can be null if this is a top level comment - * @param parent_permlink becomes category if parent_author is "" - * @param title the title of the comment - * @param body the body of the comment - * @param json the json metadata of the comment - * @param broadcast true if you wish to broadcast the transaction - */ - annotated_signed_transaction post_comment( string author, string permlink, string parent_author, string parent_permlink, string title, string body, string json, bool broadcast ); - - /** - * Vote on a comment to be paid STEEM - * - * @param voter The account voting - * @param author The author of the comment to be voted on - * @param permlink The permlink of the comment to be voted on. (author, permlink) is a unique pair - * @param weight The weight [-100,100] of the vote - * @param broadcast true if you wish to broadcast the transaction - */ - annotated_signed_transaction vote( string voter, string author, string permlink, int16_t weight, bool broadcast ); - /** * Sets the amount of time in the future until a transaction expires. */ @@ -914,17 +700,80 @@ class wallet_api */ map< uint32_t, condenser_api::api_operation_object > get_account_history( string account, uint32_t from, uint32_t limit ); - - FC_TODO(Supplement API argument description) /** - * Marks one account as following another account. Requires the posting authority of the follower. - * - * @param follower - * @param following - * @param what - a set of things to follow: posts, comments, votes, ignore - * @param broadcast true if you wish to broadcast the transaction - */ - annotated_signed_transaction follow( string follower, string following, set what, bool broadcast ); + * This method will create new application object. There is a fee associated with account creation + * that is paid by the creator. The current account creation fee can be found with the + * 'info' wallet command. + * + * @param author The account creating the new application + * @param app_name The unique name for new application + * @param url The url of the new application + * @param meta_data The meta data of new application + * @param price_param The price parameter that specifies billing for the app + * @param broadcast true if you wish to broadcast the transaction + */ + annotated_signed_transaction create_application( string author, string app_name, + string url, string meta_data, uint8_t price_param, + bool broadcast ); + + /** + * This method will update existing application object. + * + * @param author The author of application + * @param app_name The name of app that will be updated + * @param new_author The new author + * @param url Updated url + * @param meta_data Updated meta data + * @param price_param Updated price param + * @param broadcast true if you wish to broadcast the transaction + */ + annotated_signed_transaction update_application( string author, string app_name, + string new_author, string url, string meta_data, + uint8_t price_param, bool broadcast ); + + /** + * This method will delete specified application object. + * + * @param author The author of application that will be deleted + * @param app_name The name of app that will be deleted + * @param broadcast true if you wish to broadcast the transaction + */ + annotated_signed_transaction delete_application( string author, string app_name, bool broadcast ); + + /** + * This method will create application buy object + * + * @param buyer The buyer of application + * @param app_id The id of app that buyer will buy + * @param broadcast true if you wish to broadcast the transaction + */ + annotated_signed_transaction buy_application( string buyer, int64_t app_id, bool broadcast ); + + /** + * This method will cancel application buy object + * + * @param app_owner The owner of bought application + * @param buyer The buyer of application + * @param app_id The id of bought app + * @param broadcast true if you wish to broadcast the transaction + */ + annotated_signed_transaction cancel_application_buying( string app_owner, string buyer, int64_t app_id, bool broadcast ); + + /** + * Get all app buyings by app_name or buyer + * @param name Application id or buyers name + * @param search_type One of "by_buyer", "by_app_id" + * @param count Number of items to retrieve + * @return + */ + vector< condenser_api::api_application_buying_object > get_application_buyings(string name, string search_type, uint32_t count); + + /** + * Get all app objects + * @param names - array of names of applications + * @return array of application objects + */ + vector< condenser_api::api_application_object > get_applications(vector names); std::map> get_result_formatters() const; @@ -948,9 +797,44 @@ class wallet_api */ string decrypt_memo( string memo ); - annotated_signed_transaction decline_voting_rights( string account, bool decline, bool broadcast ); + /** + * Send custom JSON data + * @param app_id Application ID + * @param from Sender + * @param to List of receivers + * @param json Data formatted in JSON + * @param broadcast true if you wish to broadcast the transaction + * @return + */ + annotated_signed_transaction send_custom_json_document(uint32_t app_id, string from, vector to, string json, bool broadcast); + + /** + * Send custom data data + * @param app_id Application ID + * @param from Sender + * @param to List of receivers + * @param data Data formatted in base58. + * @param broadcast true if you wish to broadcast the transaction + * @return + */ + annotated_signed_transaction send_custom_binary_document(uint32_t app_id, string from, vector to, string data, bool broadcast); + + /** + * Get all recevied custom jsons and data. + * @param app_id Application ID + * @param account_name Name of the relevant (sender/recipient) account + * @param search_type One of "by_sender", "by_recipient", "by_sender_datetime", "by_recipient_datetime" + * @param start Either timestamp in ISO format or index + * @param count Number of items to retrieve + * @return + */ + map< uint64_t, condenser_api::api_received_object > get_received_documents(uint32_t app_id, string account_name, string search_type, string start, uint32_t count); + + annotated_signed_transaction sponsor_account_fees(string sponsoring_account, string sponsored_account, bool is_sponsoring, bool broadcast); - annotated_signed_transaction claim_reward_balance( string account, asset reward_steem, asset reward_sbd, asset reward_vests, bool broadcast ); + string encode_to_base58(string what); + vector decode_from_base58(string what); + string get_account_name_from_seed(string seed); }; struct plain_keys { @@ -960,20 +844,20 @@ struct plain_keys { } } -FC_REFLECT( steem::wallet::wallet_data, +FC_REFLECT( sophiatx::wallet::wallet_data, (cipher_keys) (ws_server) (ws_user) (ws_password) ) -FC_REFLECT( steem::wallet::brain_key_info, (brain_priv_key)(wif_priv_key) (pub_key)) +FC_REFLECT( sophiatx::wallet::brain_key_info, (brain_priv_key)(wif_priv_key) (pub_key)) -FC_REFLECT( steem::wallet::plain_keys, (checksum)(keys) ) +FC_REFLECT( sophiatx::wallet::plain_keys, (checksum)(keys) ) -FC_REFLECT_ENUM( steem::wallet::authority_type, (owner)(active)(posting) ) +FC_REFLECT_ENUM( sophiatx::wallet::authority_type, (owner)(active) ) -FC_API( steem::wallet::wallet_api, +FC_API( sophiatx::wallet::wallet_api, /// wallet api (help)(gethelp) (about)(is_new)(is_locked)(lock)(unlock)(set_password) @@ -990,34 +874,31 @@ FC_API( steem::wallet::wallet_api, /// query api (info) (list_my_accounts) - (list_accounts) (list_witnesses) (get_witness) (get_account) (get_block) (get_ops_in_block) (get_feed_history) - (get_conversion_requests) (get_account_history) - (get_state) - (get_withdraw_routes) + (get_application_buyings) + (get_applications) /// transaction api (create_account) (create_account_with_keys) - (create_account_delegated) - (create_account_with_keys_delegated) (update_account) (update_account_auth_key) (update_account_auth_account) (update_account_auth_threshold) (update_account_meta) (update_account_memo_key) - (delegate_vesting_shares) + (delete_account) + (sponsor_account_fees) (update_witness) + (stop_witness) (set_voting_proxy) (vote_for_witness) - (follow) (transfer) (escrow_transfer) (escrow_approve) @@ -1025,35 +906,29 @@ FC_API( steem::wallet::wallet_api, (escrow_release) (transfer_to_vesting) (withdraw_vesting) - (set_withdraw_vesting_route) - (convert_sbd) (publish_feed) - (get_order_book) - (get_open_orders) - (create_order) - (cancel_order) - (post_comment) - (vote) - (set_transaction_expiration) (request_account_recovery) (recover_account) (change_recovery_account) (get_owner_history) - (transfer_to_savings) - (transfer_from_savings) - (cancel_transfer_from_savings) (get_encrypted_memo) (decrypt_memo) - (decline_voting_rights) - (claim_reward_balance) + (create_application) + (update_application) + (delete_application) + (buy_application) + (cancel_application_buying) - /// helper api - (get_prototype_operation) - (serialize_transaction) - (sign_transaction) (get_active_witnesses) (get_transaction) + + (send_custom_json_document) + (send_custom_binary_document) + (get_received_documents) + + + (encode_to_base58)(decode_from_base58)(get_account_name_from_seed) ) -FC_REFLECT( steem::wallet::memo_data, (from)(to)(nonce)(check)(encrypted) ) +FC_REFLECT( sophiatx::wallet::memo_data, (from)(to)(nonce)(check)(encrypted) ) diff --git a/libraries/wallet/include/steem/wallet/remote_node_api.hpp b/libraries/wallet/include/steem/wallet/remote_node_api.hpp deleted file mode 100644 index 400e7e74..00000000 --- a/libraries/wallet/include/steem/wallet/remote_node_api.hpp +++ /dev/null @@ -1,201 +0,0 @@ -#pragma once -#include - -namespace steem { namespace wallet { - -using std::vector; -using fc::variant; -using fc::optional; - -using namespace chain; -using namespace plugins; -/*using namespace plugins::condenser_api; -using namespace plugins::database_api; -using namespace plugins::account_history; -using namespace plugins::follow; -using namespace plugins::market_history; -using namespace plugins::witness;*/ - -/** - * This is a dummy API so that the wallet can create properly formatted API calls - */ -struct remote_node_api -{ - condenser_api::get_version_return get_version(); - vector< condenser_api::api_tag_object > get_trending_tags( string, uint32_t ); - condenser_api::state get_state( string ); - vector< account_name_type > get_active_witnesses(); - optional< block_header > get_block_header( uint32_t ); - optional< database_api::api_signed_block_object > get_block( uint32_t ); - vector< condenser_api::api_operation_object > get_ops_in_block( uint32_t, bool only_virtual = true ); - fc::variant_object get_config(); - condenser_api::extended_dynamic_global_properties get_dynamic_global_properties(); - chain_properties get_chain_properties(); - condenser_api::legacy_price get_current_median_history_price(); - condenser_api::api_feed_history_object get_feed_history(); - condenser_api::api_witness_schedule_object get_witness_schedule(); - hardfork_version get_hardfork_version(); - condenser_api::scheduled_hardfork get_next_scheduled_hardfork(); - condenser_api::api_reward_fund_object get_reward_fund( string ); - vector< vector< account_name_type > > get_key_references( vector< public_key_type > ); - vector< condenser_api::extended_account > get_accounts( vector< account_name_type > ); - vector< account_id_type > get_account_references( account_id_type account_id ); - vector< optional< condenser_api::api_account_object > > lookup_account_names( vector< account_name_type > ); - vector< account_name_type > lookup_accounts( account_name_type, uint32_t ); - uint64_t get_account_count(); - vector< database_api::api_owner_authority_history_object > get_owner_history( account_name_type ); - optional< database_api::api_account_recovery_request_object > get_recovery_request( account_name_type ); - optional< condenser_api::api_escrow_object > get_escrow( account_name_type, uint32_t ); - vector< database_api::api_withdraw_vesting_route_object > get_withdraw_routes( account_name_type, condenser_api::withdraw_route_type ); - optional< witness::api_account_bandwidth_object > get_account_bandwidth( account_name_type, witness::bandwidth_type ); - vector< condenser_api::api_savings_withdraw_object > get_savings_withdraw_from( account_name_type ); - vector< condenser_api::api_savings_withdraw_object > get_savings_withdraw_to( account_name_type ); - vector< condenser_api::api_vesting_delegation_object > get_vesting_delegations( account_name_type, account_name_type, uint32_t ); - vector< condenser_api::api_vesting_delegation_expiration_object > get_expiring_vesting_delegations( account_name_type, time_point_sec, uint32_t ); - vector< optional< condenser_api::api_witness_object > > get_witnesses( vector< witness_id_type > ); - vector< condenser_api::api_convert_request_object > get_conversion_requests( account_name_type ); - optional< condenser_api::api_witness_object > get_witness_by_account( account_name_type ); - vector< condenser_api::api_witness_object > get_witnesses_by_vote( account_name_type, uint32_t ); - vector< account_name_type > lookup_witness_accounts( string, uint32_t ); - uint64_t get_witness_count(); - vector< condenser_api::api_limit_order_object > get_open_orders( account_name_type ); - string get_transaction_hex( signed_transaction ); - annotated_signed_transaction get_transaction( transaction_id_type ); - set< public_key_type > get_required_signatures( signed_transaction, flat_set< public_key_type > ); - set< public_key_type > get_potential_signatures( signed_transaction ); - bool verify_authority( signed_transaction ); - bool verify_account_authority( string, flat_set< public_key_type > ); - vector< tags::vote_state > get_active_votes( account_name_type, string ); - vector< condenser_api::account_vote > get_account_votes( account_name_type ); - condenser_api::discussion get_content( account_name_type, string ); - vector< condenser_api::discussion > get_content_replies( account_name_type, string ); - vector< tags::tag_count_object > get_tags_used_by_author( account_name_type ); - vector< condenser_api::discussion > get_discussions_by_payout( tags::discussion_query ); - vector< condenser_api::discussion > get_post_discussions_by_payout( tags::discussion_query ); - vector< condenser_api::discussion > get_comment_discussions_by_payout( tags::discussion_query ); - vector< condenser_api::discussion > get_discussions_by_trending( tags::discussion_query ); - vector< condenser_api::discussion > get_discussions_by_created( tags::discussion_query ); - vector< condenser_api::discussion > get_discussions_by_active( tags::discussion_query ); - vector< condenser_api::discussion > get_discussions_by_cashout( tags::discussion_query ); - vector< condenser_api::discussion > get_discussions_by_votes( tags::discussion_query ); - vector< condenser_api::discussion > get_discussions_by_children( tags::discussion_query ); - vector< condenser_api::discussion > get_discussions_by_hot( tags::discussion_query ); - vector< condenser_api::discussion > get_discussions_by_feed( tags::discussion_query ); - vector< condenser_api::discussion > get_discussions_by_blog( tags::discussion_query ); - vector< condenser_api::discussion > get_discussions_by_comments( tags::discussion_query ); - vector< condenser_api::discussion > get_discussions_by_promoted( tags::discussion_query ); - vector< condenser_api::discussion > get_replies_by_last_update( tags::discussion_query ); - vector< condenser_api::discussion > get_discussions_by_author_before_date( tags::discussion_query ); - map< uint32_t, condenser_api::api_operation_object > get_account_history( account_name_type, uint64_t, uint32_t ); - void broadcast_transaction( signed_transaction ); - network_broadcast_api::broadcast_transaction_synchronous_return broadcast_transaction_synchronous( signed_transaction ); - void broadcast_block( signed_block ); - vector< follow::api_follow_object > get_followers( account_name_type, account_name_type, follow::follow_type, uint32_t ); - vector< follow::api_follow_object > get_following( account_name_type, account_name_type, follow::follow_type, uint32_t ); - follow::get_follow_count_return get_follow_count( account_name_type ); - vector< follow::feed_entry > get_feed_entries( account_name_type, uint32_t, uint32_t ); - vector< follow::comment_feed_entry > get_feed( account_name_type, uint32_t, uint32_t ); - vector< follow::blog_entry > get_blog_entries( account_name_type, uint32_t, uint32_t ); - vector< follow::comment_blog_entry > get_blog( account_name_type, uint32_t, uint32_t ); - vector< follow::account_reputation > get_account_reputations( account_name_type, uint32_t ); - vector< account_name_type > get_reblogged_by( account_name_type, string ); - vector< follow::reblog_count > get_blog_authors( account_name_type ); - condenser_api::get_ticker_return get_ticker(); - condenser_api::get_volume_return get_volume(); - condenser_api::get_order_book_return get_order_book( uint32_t ); - vector< condenser_api::market_trade > get_trade_history( time_point_sec, time_point_sec, uint32_t ); - vector< condenser_api::market_trade > get_recent_trades( uint32_t ); - vector< market_history::bucket_object > get_market_history( uint32_t, time_point_sec, time_point_sec ); - flat_set< uint32_t > get_market_history_buckets(); -}; - -} } - -FC_API( steem::wallet::remote_node_api, - (get_version) - (get_trending_tags) - (get_state) - (get_active_witnesses) - (get_block_header) - (get_block) - (get_ops_in_block) - (get_config) - (get_dynamic_global_properties) - (get_chain_properties) - (get_current_median_history_price) - (get_feed_history) - (get_witness_schedule) - (get_hardfork_version) - (get_next_scheduled_hardfork) - (get_reward_fund) - (get_key_references) - (get_accounts) - (get_account_references) - (lookup_account_names) - (lookup_accounts) - (get_account_count) - (get_owner_history) - (get_recovery_request) - (get_escrow) - (get_withdraw_routes) - (get_account_bandwidth) - (get_savings_withdraw_from) - (get_savings_withdraw_to) - (get_vesting_delegations) - (get_expiring_vesting_delegations) - (get_witnesses) - (get_conversion_requests) - (get_witness_by_account) - (get_witnesses_by_vote) - (lookup_witness_accounts) - (get_witness_count) - (get_open_orders) - (get_transaction_hex) - (get_transaction) - (get_required_signatures) - (get_potential_signatures) - (verify_authority) - (verify_account_authority) - (get_active_votes) - (get_account_votes) - (get_content) - (get_content_replies) - (get_tags_used_by_author) - (get_discussions_by_payout) - (get_post_discussions_by_payout) - (get_comment_discussions_by_payout) - (get_discussions_by_trending) - (get_discussions_by_created) - (get_discussions_by_active) - (get_discussions_by_cashout) - (get_discussions_by_votes) - (get_discussions_by_children) - (get_discussions_by_hot) - (get_discussions_by_feed) - (get_discussions_by_blog) - (get_discussions_by_comments) - (get_discussions_by_promoted) - (get_replies_by_last_update) - (get_discussions_by_author_before_date) - (get_account_history) - (broadcast_transaction) - (broadcast_transaction_synchronous) - (broadcast_block) - (get_followers) - (get_following) - (get_follow_count) - (get_feed_entries) - (get_feed) - (get_blog_entries) - (get_blog) - (get_account_reputations) - (get_reblogged_by) - (get_blog_authors) - (get_ticker) - (get_volume) - (get_order_book) - (get_trade_history) - (get_recent_trades) - (get_market_history) - (get_market_history_buckets) - ) diff --git a/libraries/wallet/remote_node_api.cpp b/libraries/wallet/remote_node_api.cpp index f610be5f..876aa190 100644 --- a/libraries/wallet/remote_node_api.cpp +++ b/libraries/wallet/remote_node_api.cpp @@ -1,6 +1,6 @@ -#include +#include -namespace steem { namespace wallet{ +namespace sophiatx { namespace wallet{ // This class exists only to provide method signature information to fc::api, not to execute calls. @@ -9,15 +9,6 @@ condenser_api::get_version_return remote_node_api::get_version() FC_ASSERT( false ); } -vector< condenser_api::api_tag_object > remote_node_api::get_trending_tags( string, uint32_t ) -{ - FC_ASSERT( false ); -} - -condenser_api::state remote_node_api::get_state( string ) -{ - FC_ASSERT( false ); -} vector< account_name_type > remote_node_api::get_active_witnesses() { @@ -54,12 +45,12 @@ chain_properties remote_node_api::get_chain_properties() FC_ASSERT( false ); } -condenser_api::legacy_price remote_node_api::get_current_median_history_price() +condenser_api::legacy_price remote_node_api::get_current_median_history_price( asset_symbol_type ) { FC_ASSERT( false ); } -condenser_api::api_feed_history_object remote_node_api::get_feed_history() +condenser_api::api_feed_history_object remote_node_api::get_feed_history( asset_symbol_type ) { FC_ASSERT( false ); } @@ -79,11 +70,6 @@ condenser_api::scheduled_hardfork remote_node_api::get_next_scheduled_hardfork() FC_ASSERT( false ); } -condenser_api::api_reward_fund_object remote_node_api::get_reward_fund( string ) -{ - FC_ASSERT( false ); -} - vector< vector< account_name_type > > remote_node_api::get_key_references( vector< public_key_type > ) { FC_ASSERT( false ); @@ -104,10 +90,6 @@ vector< optional< condenser_api::api_account_object > > remote_node_api::lookup_ FC_ASSERT( false ); } -vector< account_name_type > remote_node_api::lookup_accounts( account_name_type, uint32_t ) -{ - FC_ASSERT( false ); -} uint64_t remote_node_api::get_account_count() { @@ -129,46 +111,12 @@ optional< condenser_api::api_escrow_object > remote_node_api::get_escrow( accoun FC_ASSERT( false ); } -vector< database_api::api_withdraw_vesting_route_object > remote_node_api::get_withdraw_routes( account_name_type, condenser_api::withdraw_route_type ) -{ - FC_ASSERT( false ); -} - -optional< witness::api_account_bandwidth_object > remote_node_api::get_account_bandwidth( account_name_type, witness::bandwidth_type ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::api_savings_withdraw_object > remote_node_api::get_savings_withdraw_from( account_name_type ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::api_savings_withdraw_object > remote_node_api::get_savings_withdraw_to( account_name_type ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::api_vesting_delegation_object > remote_node_api::get_vesting_delegations( account_name_type, account_name_type, uint32_t ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::api_vesting_delegation_expiration_object > remote_node_api::get_expiring_vesting_delegations( account_name_type, time_point_sec, uint32_t ) -{ - FC_ASSERT( false ); -} vector< optional< condenser_api::api_witness_object > > remote_node_api::get_witnesses( vector< witness_id_type > ) { FC_ASSERT( false ); } -vector< condenser_api::api_convert_request_object > remote_node_api::get_conversion_requests( account_name_type ) -{ - FC_ASSERT( false ); -} - optional< condenser_api::api_witness_object > remote_node_api::get_witness_by_account( account_name_type ) { FC_ASSERT( false ); @@ -189,10 +137,6 @@ uint64_t remote_node_api::get_witness_count() FC_ASSERT( false ); } -vector< condenser_api::api_limit_order_object > remote_node_api::get_open_orders( account_name_type ) -{ - FC_ASSERT( false ); -} string remote_node_api::get_transaction_hex( signed_transaction ) { @@ -224,111 +168,6 @@ bool remote_node_api::verify_account_authority( string, flat_set< public_key_typ FC_ASSERT( false ); } -vector< tags::vote_state > remote_node_api::get_active_votes( account_name_type, string ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::account_vote > remote_node_api::get_account_votes( account_name_type ) -{ - FC_ASSERT( false ); -} - -condenser_api::discussion remote_node_api::get_content( account_name_type, string ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_content_replies( account_name_type, string ) -{ - FC_ASSERT( false ); -} - -vector< tags::tag_count_object > remote_node_api::get_tags_used_by_author( account_name_type ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_discussions_by_payout( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_post_discussions_by_payout( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_comment_discussions_by_payout( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_discussions_by_trending( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_discussions_by_created( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_discussions_by_active( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_discussions_by_cashout( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_discussions_by_votes( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_discussions_by_children( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_discussions_by_hot( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_discussions_by_feed( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_discussions_by_blog( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_discussions_by_comments( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_discussions_by_promoted( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_replies_by_last_update( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::discussion > remote_node_api::get_discussions_by_author_before_date( tags::discussion_query ) -{ - FC_ASSERT( false ); -} - map< uint32_t, condenser_api::api_operation_object > remote_node_api::get_account_history( account_name_type, uint64_t, uint32_t ) { FC_ASSERT( false ); @@ -349,89 +188,18 @@ void remote_node_api::broadcast_block( signed_block ) FC_ASSERT( false ); } -vector< follow::api_follow_object > remote_node_api::get_followers( account_name_type, account_name_type, follow::follow_type, uint32_t ) -{ - FC_ASSERT( false ); -} - -vector< follow::api_follow_object > remote_node_api::get_following( account_name_type, account_name_type, follow::follow_type, uint32_t ) -{ - FC_ASSERT( false ); -} - -follow::get_follow_count_return remote_node_api::get_follow_count( account_name_type ) -{ - FC_ASSERT( false ); -} - -vector< follow::feed_entry > remote_node_api::get_feed_entries( account_name_type, uint32_t, uint32_t ) -{ - FC_ASSERT( false ); -} - -vector< follow::comment_feed_entry > remote_node_api::get_feed( account_name_type, uint32_t, uint32_t ) -{ - FC_ASSERT( false ); -} - -vector< follow::blog_entry > remote_node_api::get_blog_entries( account_name_type, uint32_t, uint32_t ) -{ - FC_ASSERT( false ); -} - -vector< follow::comment_blog_entry > remote_node_api::get_blog( account_name_type, uint32_t, uint32_t ) -{ - FC_ASSERT( false ); -} - -vector< follow::account_reputation > remote_node_api::get_account_reputations( account_name_type, uint32_t ) -{ - FC_ASSERT( false ); -} - -vector< account_name_type > remote_node_api::get_reblogged_by( account_name_type, string ) +vector remote_node_api::get_applications(vector) { - FC_ASSERT( false ); -} - -vector< follow::reblog_count > remote_node_api::get_blog_authors( account_name_type ) -{ - FC_ASSERT( false ); + FC_ASSERT( false ); } -condenser_api::get_ticker_return remote_node_api::get_ticker() +vector remote_node_api::get_application_buyings(std::string, uint32_t, std::string) { - FC_ASSERT( false ); + FC_ASSERT( false ); } -condenser_api::get_volume_return remote_node_api::get_volume() -{ - FC_ASSERT( false ); -} - -condenser_api::get_order_book_return remote_node_api::get_order_book( uint32_t ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::market_trade > remote_node_api::get_trade_history( time_point_sec, time_point_sec, uint32_t ) -{ - FC_ASSERT( false ); -} - -vector< condenser_api::market_trade > remote_node_api::get_recent_trades( uint32_t ) -{ - FC_ASSERT( false ); -} - -vector< market_history::bucket_object > remote_node_api::get_market_history( uint32_t, time_point_sec, time_point_sec ) -{ - FC_ASSERT( false ); -} - -flat_set< uint32_t > remote_node_api::get_market_history_buckets() -{ - FC_ASSERT( false ); -} +map< uint64_t, condenser_api::api_received_object > remote_node_api::get_received_documents(uint32_t app_id, string account_name, string search_type, string start, uint32_t count){ + FC_ASSERT( false); +}; } } diff --git a/libraries/wallet/wallet.cpp b/libraries/wallet/wallet.cpp index 3f832b87..6be6a441 100644 --- a/libraries/wallet/wallet.cpp +++ b/libraries/wallet/wallet.cpp @@ -1,26 +1,13 @@ -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include +#include +#include +#include + +#include +#include +#include +#include + + #include #include @@ -28,40 +15,27 @@ #include #include -#include -#include -#include -#include #include -#include #include -#include #include #include #include #include #include -#include #include #include #include #include -#include #include #include #include -#ifndef WIN32 -# include -# include -#endif - #define BRAIN_KEY_WORD_COUNT 16 -namespace steem { namespace wallet { +namespace sophiatx { namespace wallet { -using steem::plugins::condenser_api::legacy_asset; +using sophiatx::plugins::condenser_api::legacy_asset; namespace detail { @@ -219,14 +193,14 @@ class wallet_api_impl public: wallet_api& self; - wallet_api_impl( wallet_api& s, const wallet_data& initial_data, const steem::protocol::chain_id_type& _steem_chain_id, fc::api< remote_node_api > rapi ) + wallet_api_impl( wallet_api& s, const wallet_data& initial_data, const sophiatx::protocol::chain_id_type& _sophiatx_chain_id, fc::api< remote_node_api > rapi ) : self( s ), _remote_api( rapi ) { init_prototype_ops(); _wallet.ws_server = initial_data.ws_server; - steem_chain_id = _steem_chain_id; + sophiatx_chain_id = _sophiatx_chain_id; } virtual ~wallet_api_impl() {} @@ -287,30 +261,33 @@ class wallet_api_impl fc::mutable_variant_object result(fc::variant(dynamic_props).get_object()); result["witness_majority_version"] = fc::string( _remote_api->get_witness_schedule().majority_version ); result["hardfork_version"] = fc::string( _remote_api->get_hardfork_version() ); - result["head_block_num"] = dynamic_props.head_block_number; - result["head_block_id"] = dynamic_props.head_block_id; + //result["head_block_id"] = dynamic_props.head_block_id; result["head_block_age"] = fc::get_approximate_relative_time_string(dynamic_props.time, time_point_sec(time_point::now()), " old"); result["participation"] = (100*dynamic_props.recent_slots_filled.popcount()) / 128.0; - result["median_sbd_price"] = _remote_api->get_current_median_history_price(); + result["median_sbd1_price"] = _remote_api->get_current_median_history_price(SBD1_SYMBOL); + result["median_sbd2_price"] = _remote_api->get_current_median_history_price(SBD2_SYMBOL); + result["median_sbd3_price"] = _remote_api->get_current_median_history_price(SBD3_SYMBOL); + result["median_sbd4_price"] = _remote_api->get_current_median_history_price(SBD4_SYMBOL); + result["median_sbd5_price"] = _remote_api->get_current_median_history_price(SBD5_SYMBOL); + result["account_creation_fee"] = _remote_api->get_chain_properties().account_creation_fee; - result["post_reward_fund"] = fc::variant(_remote_api->get_reward_fund( STEEM_POST_REWARD_FUND_NAME )).get_object(); return result; } variant_object about() const { - string client_version( steem::utilities::git_revision_description ); + string client_version( sophiatx::utilities::git_revision_description ); const size_t pos = client_version.find( '/' ); if( pos != string::npos && client_version.size() > pos ) client_version = client_version.substr( pos + 1 ); fc::mutable_variant_object result; - result["blockchain_version"] = STEEM_BLOCKCHAIN_VERSION; + result["blockchain_version"] = SOPHIATX_BLOCKCHAIN_VERSION; result["client_version"] = client_version; - result["steem_revision"] = steem::utilities::git_revision_sha; - result["steem_revision_age"] = fc::get_approximate_relative_time_string( fc::time_point_sec( steem::utilities::git_revision_unix_timestamp ) ); + result["sophiatx_revision"] = sophiatx::utilities::git_revision_sha; + result["sophiatx_revision_age"] = fc::get_approximate_relative_time_string( fc::time_point_sec( sophiatx::utilities::git_revision_unix_timestamp ) ); result["fc_revision"] = fc::git_revision_sha; result["fc_revision_age"] = fc::get_approximate_relative_time_string( fc::time_point_sec( fc::git_revision_unix_timestamp ) ); result["compile_date"] = "compiled on " __DATE__ " at " __TIME__; @@ -333,7 +310,7 @@ class wallet_api_impl { auto v = _remote_api->get_version(); result["server_blockchain_version"] = v.blockchain_version; - result["server_steem_revision"] = v.steem_revision; + result["server_sophiatx_revision"] = v.sophiatx_revision; result["server_fc_revision"] = v.fc_revision; } catch( fc::exception& ) @@ -344,11 +321,17 @@ class wallet_api_impl return result; } - condenser_api::api_account_object get_account( string account_name ) const + vector get_account( string account_name_or_seed ) const { - auto accounts = _remote_api->get_accounts( { account_name } ); + auto accounts = _remote_api->get_accounts( { account_name_or_seed, get_account_name_from_seed(account_name_or_seed) } ); FC_ASSERT( !accounts.empty(), "Unknown account" ); - return accounts.front(); + std::vector accounts_ret(std::make_move_iterator(accounts.begin()), + std::make_move_iterator(accounts.end())); + return accounts_ret; + } + + string get_account_name_from_seed(string seed) const{ + return make_random_fixed_string(seed); } string get_wallet_filename() const { return _wallet_filename; } @@ -386,7 +369,7 @@ class wallet_api_impl fc::optional optional_private_key = wif_to_key(wif_key); if (!optional_private_key) FC_THROW("Invalid private key"); - steem::chain::public_key_type wif_pub_key = optional_private_key->get_public_key(); + sophiatx::chain::public_key_type wif_pub_key = optional_private_key->get_public_key(); _keys[wif_pub_key] = wif_key; return true; @@ -457,7 +440,7 @@ class wallet_api_impl for (int key_index = 0; ; ++key_index) { fc::ecc::private_key derived_private_key = derive_private_key(key_to_wif(parent_key), key_index); - steem::chain::public_key_type derived_public_key = derived_private_key.get_public_key(); + sophiatx::chain::public_key_type derived_public_key = derived_private_key.get_public_key(); if( _keys.find(derived_public_key) == _keys.end() ) { if (number_of_consecutive_unused_keys) @@ -493,15 +476,15 @@ class wallet_api_impl int memo_key_index = find_first_unused_derived_key_index(active_privkey); fc::ecc::private_key memo_privkey = derive_private_key( key_to_wif(active_privkey), memo_key_index); - steem::chain::public_key_type owner_pubkey = owner_privkey.get_public_key(); - steem::chain::public_key_type active_pubkey = active_privkey.get_public_key(); - steem::chain::public_key_type memo_pubkey = memo_privkey.get_public_key(); + sophiatx::chain::public_key_type owner_pubkey = owner_privkey.get_public_key(); + sophiatx::chain::public_key_type active_pubkey = active_privkey.get_public_key(); + sophiatx::chain::public_key_type memo_pubkey = memo_privkey.get_public_key(); account_create_operation account_create_op; account_create_op.creator = creator_account_name; - account_create_op.new_account_name = account_name; - account_create_op.fee = _remote_api->get_chain_properties().account_creation_fee; + account_create_op.name_seed = account_name; +// account_create_op.fee = _remote_api->get_chain_properties().account_creation_fee; account_create_op.owner = authority(1, owner_pubkey, 1); account_create_op.active = authority(1, active_pubkey, 1); account_create_op.memo_key = memo_pubkey; @@ -542,24 +525,69 @@ class wallet_api_impl void set_transaction_expiration( uint32_t tx_expiration_seconds ) { - FC_ASSERT( tx_expiration_seconds < STEEM_MAX_TIME_UNTIL_EXPIRATION ); + FC_ASSERT( tx_expiration_seconds < SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); _tx_expiration_seconds = tx_expiration_seconds; } annotated_signed_transaction sign_transaction(signed_transaction tx, bool broadcast = false) { + //first, get the correct chain_id + if(sophiatx_chain_id == fc::sha256()) + { + auto v = _remote_api->get_version(); + sophiatx_chain_id = fc::sha256(v.chain_id); + } + + //set fees first + class op_visitor{ + public: + op_visitor(){}; + typedef void result_type; + result_type operator()( base_operation& bop){ + if(bop.has_special_fee()) + return; + asset req_fee = bop.get_required_fee(SOPHIATX_SYMBOL); + bop.fee = req_fee; + }; + }; + op_visitor op_v; + + for(operation& o: tx.operations){ + o.visit(op_v); + } + flat_set< account_name_type > req_active_approvals; flat_set< account_name_type > req_owner_approvals; - flat_set< account_name_type > req_posting_approvals; vector< authority > other_auths; - tx.get_required_authorities( req_active_approvals, req_owner_approvals, req_posting_approvals, other_auths ); + tx.get_required_authorities( req_active_approvals, req_owner_approvals, other_auths ); for( const auto& auth : other_auths ) for( const auto& a : auth.account_auths ) req_active_approvals.insert(a.first); - // std::merge lets us de-duplicate account_id's that occur in both + /// TODO: recursively check one layer deeper in the authority tree for keys + vector v_accs; + for(const auto& a: req_active_approvals) + v_accs.push_back(a); + auto req_active_objects = _remote_api->get_accounts(v_accs); + for(const auto& o: req_active_objects) { + for( const auto a: o.active.account_auths ) + req_active_approvals.insert(a.first); + for( const auto a: o.owner.account_auths ) + req_active_approvals.insert(a.first); + } + + v_accs.clear(); + for(const auto& a: req_owner_approvals) + v_accs.push_back(a); + auto req_owner_objects = _remote_api->get_accounts(v_accs); + for(const auto& o: req_owner_objects) { + for( const auto a: o.owner.account_auths ) + req_owner_approvals.insert(a.first); + } + + // std::merge lets us de-duplica te account_id's that occur in both // sets, and dump them into a vector (as required by remote_db api) // at the same time vector< account_name_type > v_approving_account_names; @@ -567,14 +595,11 @@ class wallet_api_impl req_owner_approvals.begin() , req_owner_approvals.end(), std::back_inserter( v_approving_account_names ) ); - for( const auto& a : req_posting_approvals ) - v_approving_account_names.push_back(a); - /// TODO: fetch the accounts specified via other_auths as well. auto approving_account_objects = _remote_api->get_accounts( v_approving_account_names ); + elog("Approving accounts: ${a}", ("a", v_approving_account_names)); - /// TODO: recursively check one layer deeper in the authority tree for keys FC_ASSERT( approving_account_objects.size() == v_approving_account_names.size(), "", ("aco.size:", approving_account_objects.size())("acn",v_approving_account_names.size()) ); @@ -607,29 +632,21 @@ class wallet_api_impl continue; const condenser_api::api_account_object& acct = it->second; vector v_approving_keys = acct.active.get_keys(); - wdump((v_approving_keys)); for( const public_key_type& approving_key : v_approving_keys ) { - wdump((approving_key)); + edump((approving_key)); approving_key_set.insert( approving_key ); } - } - - for( account_name_type& acct_name : req_posting_approvals ) - { - const auto it = approving_account_lut.find( acct_name ); - if( it == approving_account_lut.end() ) - continue; - const condenser_api::api_account_object& acct = it->second; - vector v_approving_keys = acct.posting.get_keys(); - wdump((v_approving_keys)); - for( const public_key_type& approving_key : v_approving_keys ) + vector v_approving_keys_o = acct.owner.get_keys(); + for( const public_key_type& approving_key : v_approving_keys_o ) { - wdump((approving_key)); + edump((approving_key)); approving_key_set.insert( approving_key ); } + } + for( const account_name_type& acct_name : req_owner_approvals ) { const auto it = approving_account_lut.find( acct_name ); @@ -657,7 +674,7 @@ class wallet_api_impl tx.set_expiration( dyn_props.time + fc::seconds(_tx_expiration_seconds) ); tx.signatures.clear(); - //idump((_keys)); + idump((_keys)); flat_set< public_key_type > available_keys; flat_map< public_key_type, fc::ecc::private_key > available_private_keys; for( const public_key_type& key : approving_key_set ) @@ -673,24 +690,23 @@ class wallet_api_impl } auto minimal_signing_keys = tx.minimize_required_signatures( - steem_chain_id, + sophiatx_chain_id, available_keys, [&]( const string& account_name ) -> const authority& { return (get_account_from_lut( account_name ).active); }, [&]( const string& account_name ) -> const authority& { return (get_account_from_lut( account_name ).owner); }, - [&]( const string& account_name ) -> const authority& - { return (get_account_from_lut( account_name ).posting); }, - STEEM_MAX_SIG_CHECK_DEPTH + SOPHIATX_MAX_SIG_CHECK_DEPTH ); for( const public_key_type& k : minimal_signing_keys ) { auto it = available_private_keys.find(k); FC_ASSERT( it != available_private_keys.end() ); - tx.sign( it->second, steem_chain_id ); + tx.sign( it->second, sophiatx_chain_id ); } + elog("Transaction digest is: ${d}", ("d", tx.sig_digest(sophiatx_chain_id))); if( broadcast ) { try { auto result = _remote_api->broadcast_transaction_synchronous( tx ); @@ -725,23 +741,19 @@ class wallet_api_impl std::stringstream out; auto accounts = result.as>(); - asset total_steem; + asset total_sophiatx; asset total_vest(0, VESTS_SYMBOL ); - asset total_sbd(0, SBD_SYMBOL ); for( const auto& a : accounts ) { - total_steem += a.balance.to_asset(); + total_sophiatx += a.balance.to_asset(); total_vest += a.vesting_shares.to_asset(); - total_sbd += a.sbd_balance.to_asset(); out << std::left << std::setw( 17 ) << std::string(a.name) << std::right << std::setw(18) << fc::variant(a.balance).as_string() <<" " - << std::right << std::setw(26) << fc::variant(a.vesting_shares).as_string() <<" " - << std::right << std::setw(16) << fc::variant(a.sbd_balance).as_string() <<"\n"; + << std::right << std::setw(26) << fc::variant(a.vesting_shares).as_string() <<" \n"; } out << "-------------------------------------------------------------------------\n"; out << std::left << std::setw( 17 ) << "TOTAL" - << std::right << std::setw(18) << legacy_asset::from_asset(total_steem).to_string() <<" " - << std::right << std::setw(26) << legacy_asset::from_asset(total_vest).to_string() <<" " - << std::right << std::setw(16) << legacy_asset::from_asset(total_sbd).to_string() <<"\n"; + << std::right << std::setw(18) << legacy_asset::from_asset(total_sophiatx).to_string() <<" " + << std::right << std::setw(26) << legacy_asset::from_asset(total_vest).to_string() <<" \n"; return out.str(); }; m["get_account_history"] = []( variant result, const fc::variants& a ) { @@ -764,119 +776,15 @@ class wallet_api_impl } return ss.str(); }; - m["get_open_orders"] = []( variant result, const fc::variants& a ) { - auto orders = result.as>(); - - std::stringstream ss; - - ss << setiosflags( ios::fixed ) << setiosflags( ios::left ) ; - ss << ' ' << setw( 10 ) << "Order #"; - ss << ' ' << setw( 10 ) << "Price"; - ss << ' ' << setw( 10 ) << "Quantity"; - ss << ' ' << setw( 10 ) << "Type"; - ss << "\n=====================================================================================================\n"; - for( const auto& o : orders ) { - ss << ' ' << setw( 10 ) << o.orderid; - ss << ' ' << setw( 10 ) << o.real_price; - ss << ' ' << setw( 10 ) << fc::variant( asset( o.for_sale, o.sell_price.base.symbol ) ).as_string(); - ss << ' ' << setw( 10 ) << (o.sell_price.base.symbol == STEEM_SYMBOL ? "SELL" : "BUY"); - ss << "\n"; - } - return ss.str(); - }; - m["get_order_book"] = []( variant result, const fc::variants& a ) { - auto orders = result.as< condenser_api::get_order_book_return >(); - std::stringstream ss; - asset bid_sum = asset( 0, SBD_SYMBOL ); - asset ask_sum = asset( 0, SBD_SYMBOL ); - int spacing = 24; - - ss << setiosflags( ios::fixed ) << setiosflags( ios::left ) ; - - ss << ' ' << setw( ( spacing * 4 ) + 6 ) << "Bids" << "Asks\n" - << ' ' - << setw( spacing + 3 ) << "Sum(SBD)" - << setw( spacing + 1) << "SBD" - << setw( spacing + 1 ) << "STEEM" - << setw( spacing + 1 ) << "Price" - << setw( spacing + 1 ) << "Price" - << setw( spacing + 1 ) << "STEEM " - << setw( spacing + 1 ) << "SBD " << "Sum(SBD)" - << "\n=====================================================================================================" - << "|=====================================================================================================\n"; - - for( size_t i = 0; i < orders.bids.size() || i < orders.asks.size(); i++ ) - { - if ( i < orders.bids.size() ) - { - bid_sum += asset( orders.bids[i].sbd, SBD_SYMBOL ); - ss - << ' ' << setw( spacing ) << legacy_asset::from_asset( bid_sum ).to_string() - << ' ' << setw( spacing ) << legacy_asset::from_asset( asset( orders.bids[i].sbd, SBD_SYMBOL ) ).to_string() - << ' ' << setw( spacing ) << legacy_asset::from_asset( asset( orders.bids[i].steem, STEEM_SYMBOL ) ).to_string() - << ' ' << setw( spacing ) << orders.bids[i].real_price; - } - else - { - ss << setw( (spacing * 4 ) + 5 ) << ' '; - } - - ss << " |"; - - if ( i < orders.asks.size() ) - { - ask_sum += asset( orders.asks[i].sbd, SBD_SYMBOL ); - ss << ' ' << setw( spacing ) << orders.asks[i].real_price - << ' ' << setw( spacing ) << legacy_asset::from_asset( asset( orders.asks[i].steem, STEEM_SYMBOL ) ).to_string() - << ' ' << setw( spacing ) << legacy_asset::from_asset( asset( orders.asks[i].sbd, SBD_SYMBOL ) ).to_string() - << ' ' << setw( spacing ) << legacy_asset::from_asset( ask_sum ).to_string(); - } - - ss << endl; - } - - ss << endl - << "Bid Total: " << legacy_asset::from_asset( bid_sum ).to_string() << endl - << "Ask Total: " << legacy_asset::from_asset( ask_sum ).to_string() << endl; - - return ss.str(); - }; - m["get_withdraw_routes"] = []( variant result, const fc::variants& a ) - { - auto routes = result.as< vector< database_api::api_withdraw_vesting_route_object > >(); - std::stringstream ss; - ss << ' ' << std::left << std::setw( 20 ) << "From"; - ss << ' ' << std::left << std::setw( 20 ) << "To"; - ss << ' ' << std::right << std::setw( 8 ) << "Percent"; - ss << ' ' << std::right << std::setw( 9 ) << "Auto-Vest"; - ss << "\n==============================================================\n"; - - for( auto& r : routes ) - { - ss << ' ' << std::left << std::setw( 20 ) << std::string( r.from_account ); - ss << ' ' << std::left << std::setw( 20 ) << std::string( r.to_account ); - ss << ' ' << std::right << std::setw( 8 ) << std::setprecision( 2 ) << std::fixed << double( r.percent ) / 100; - ss << ' ' << std::right << std::setw( 9 ) << ( r.auto_vest ? "true" : "false" ) << std::endl; - } - - return ss.str(); - }; return m; } - operation get_prototype_operation( string operation_name ) - { - auto it = _prototype_ops.find( operation_name ); - if( it == _prototype_ops.end() ) - FC_THROW("Unsupported operation: \"${operation_name}\"", ("operation_name", operation_name)); - return it->second; - } string _wallet_filename; wallet_data _wallet; - steem::protocol::chain_id_type steem_chain_id; + sophiatx::protocol::chain_id_type sophiatx_chain_id; map _keys; fc::sha512 _checksum; @@ -893,14 +801,14 @@ class wallet_api_impl const string _wallet_filename_extension = ".wallet"; }; -} } } // steem::wallet::detail +} } } // sophiatx::wallet::detail -namespace steem { namespace wallet { +namespace sophiatx { namespace wallet { -wallet_api::wallet_api(const wallet_data& initial_data, const steem::protocol::chain_id_type& _steem_chain_id, fc::api< remote_node_api > rapi) - : my(new detail::wallet_api_impl(*this, initial_data, _steem_chain_id, rapi)) +wallet_api::wallet_api(const wallet_data& initial_data, const sophiatx::protocol::chain_id_type& _sophiatx_chain_id, fc::api< remote_node_api > rapi) + : my(new detail::wallet_api_impl(*this, initial_data, _sophiatx_chain_id, rapi)) {} wallet_api::~wallet_api(){} @@ -940,15 +848,22 @@ vector< condenser_api::api_account_object > wallet_api::list_my_accounts() result.reserve( names.size() ); for( const auto& name : names ) - result.emplace_back( get_account( name ) ); + { + auto accounts = get_account( name ); + if(accounts.size() == 1) { + result.emplace_back( accounts.front()); + } else { + for(const auto& acc: accounts) { + if(acc.name == account_name_type(name)) { + result.emplace_back( acc); + } + } + } + } return result; } -vector< account_name_type > wallet_api::list_accounts(const string& lowerbound, uint32_t limit) -{ - return my->_remote_api->lookup_accounts( lowerbound, limit ); -} vector< account_name_type > wallet_api::get_active_witnesses()const { return my->_remote_api->get_active_witnesses(); @@ -969,11 +884,11 @@ brain_key_info wallet_api::suggest_brain_key()const for( int i=0; i 0 ) brain_key += " "; - brain_key += steem::words::word_list[ choice.to_int64() ]; + brain_key += sophiatx::words::word_list[ choice.to_int64() ]; } brain_key = normalize_brain_key(brain_key); @@ -984,10 +899,6 @@ brain_key_info wallet_api::suggest_brain_key()const return result; } -string wallet_api::serialize_transaction( signed_transaction tx )const -{ - return fc::to_hex(fc::raw::pack_to_vector(tx)); -} string wallet_api::get_wallet_filename() const { @@ -995,7 +906,7 @@ string wallet_api::get_wallet_filename() const } -condenser_api::api_account_object wallet_api::get_account( string account_name ) const +vector wallet_api::get_account( string account_name ) const { return my->get_account( account_name ); } @@ -1061,9 +972,6 @@ annotated_signed_transaction wallet_api::sign_transaction(signed_transaction tx, return my->sign_transaction( tx, broadcast); } FC_CAPTURE_AND_RETHROW( (tx) ) } -operation wallet_api::get_prototype_operation(string operation_name) { - return my->get_prototype_operation( operation_name ); -} string wallet_api::help()const { @@ -1170,15 +1078,17 @@ string wallet_api::get_private_key( public_key_type pubkey )const return key_to_wif( my->get_private_key( pubkey ) ); } -pair wallet_api::get_private_key_from_password( string account, string role, string password )const { - auto seed = account + role + password; +pair wallet_api::get_private_key_from_password( string account, string password )const { + auto seed = account + password; FC_ASSERT( seed.size() ); auto secret = fc::sha256::hash( seed.c_str(), seed.size() ); auto priv = fc::ecc::private_key::regenerate( secret ); return std::make_pair( public_key_type( priv.get_public_key() ), key_to_wif( priv ) ); } -condenser_api::api_feed_history_object wallet_api::get_feed_history()const { return my->_remote_api->get_feed_history(); } +condenser_api::api_feed_history_object wallet_api::get_feed_history(asset_symbol_type symbol)const { + return my->_remote_api->get_feed_history(symbol); +} /** * This method is used by faucets to create new accounts for other users which must @@ -1186,66 +1096,29 @@ condenser_api::api_feed_history_object wallet_api::get_feed_history()const { ret * wallet. */ annotated_signed_transaction wallet_api::create_account_with_keys( string creator, - string new_account_name, + string name_seed, string json_meta, public_key_type owner, public_key_type active, - public_key_type posting, public_key_type memo, bool broadcast )const { try { FC_ASSERT( !is_locked() ); account_create_operation op; op.creator = creator; - op.new_account_name = new_account_name; + op.name_seed = name_seed; op.owner = authority( 1, owner, 1 ); op.active = authority( 1, active, 1 ); - op.posting = authority( 1, posting, 1 ); op.memo_key = memo; op.json_metadata = json_meta; - op.fee = my->_remote_api->get_chain_properties().account_creation_fee * asset( STEEM_CREATE_ACCOUNT_WITH_STEEM_MODIFIER, STEEM_SYMBOL ); + op.fee = my->_remote_api->get_chain_properties().account_creation_fee * asset( 1, SOPHIATX_SYMBOL ); signed_transaction tx; tx.operations.push_back(op); tx.validate(); return my->sign_transaction( tx, broadcast ); -} FC_CAPTURE_AND_RETHROW( (creator)(new_account_name)(json_meta)(owner)(active)(memo)(broadcast) ) } - -/** - * This method is used by faucets to create new accounts for other users which must - * provide their desired keys. The resulting account may not be controllable by this - * wallet. - */ -annotated_signed_transaction wallet_api::create_account_with_keys_delegated( string creator, - asset steem_fee, - asset delegated_vests, - string new_account_name, - string json_meta, - public_key_type owner, - public_key_type active, - public_key_type posting, - public_key_type memo, - bool broadcast )const -{ try { - FC_ASSERT( !is_locked() ); - account_create_with_delegation_operation op; - op.creator = creator; - op.new_account_name = new_account_name; - op.owner = authority( 1, owner, 1 ); - op.active = authority( 1, active, 1 ); - op.posting = authority( 1, posting, 1 ); - op.memo_key = memo; - op.json_metadata = json_meta; - op.fee = steem_fee; - op.delegation = delegated_vests; - - signed_transaction tx; - tx.operations.push_back(op); - tx.validate(); - - return my->sign_transaction( tx, broadcast ); -} FC_CAPTURE_AND_RETHROW( (creator)(new_account_name)(json_meta)(owner)(active)(memo)(broadcast) ) } +} FC_CAPTURE_AND_RETHROW( (creator)(name_seed)(json_meta)(owner)(active)(memo)(broadcast) ) } annotated_signed_transaction wallet_api::request_account_recovery( string recovery_account, string account_to_recover, authority new_authority, bool broadcast ) { @@ -1301,7 +1174,6 @@ annotated_signed_transaction wallet_api::update_account( string json_meta, public_key_type owner, public_key_type active, - public_key_type posting, public_key_type memo, bool broadcast )const { @@ -1313,7 +1185,6 @@ annotated_signed_transaction wallet_api::update_account( op.account = account_name; op.owner = authority( 1, owner, 1 ); op.active = authority( 1, active, 1); - op.posting = authority( 1, posting, 1); op.memo_key = memo; op.json_metadata = json_meta; @@ -1349,9 +1220,7 @@ annotated_signed_transaction wallet_api::update_account_auth_key( string account case( active ): new_auth = accounts[0].active; break; - case( posting ): - new_auth = accounts[0].posting; - break; + } if( weight == 0 ) // Remove the key @@ -1381,9 +1250,7 @@ annotated_signed_transaction wallet_api::update_account_auth_key( string account case( active ): op.active = new_auth; break; - case( posting ): - op.posting = new_auth; - break; + } signed_transaction tx; @@ -1416,9 +1283,7 @@ annotated_signed_transaction wallet_api::update_account_auth_account( string acc case( active ): new_auth = accounts[0].active; break; - case( posting ): - new_auth = accounts[0].posting; - break; + } if( weight == 0 ) // Remove the key @@ -1448,9 +1313,7 @@ annotated_signed_transaction wallet_api::update_account_auth_account( string acc case( active ): op.active = new_auth; break; - case( posting ): - op.posting = new_auth; - break; + } signed_transaction tx; @@ -1484,9 +1347,7 @@ annotated_signed_transaction wallet_api::update_account_auth_threshold( string a case( active ): new_auth = accounts[0].active; break; - case( posting ): - new_auth = accounts[0].posting; - break; + } new_auth.weight_threshold = threshold; @@ -1509,9 +1370,7 @@ annotated_signed_transaction wallet_api::update_account_auth_threshold( string a case( active ): op.active = new_auth; break; - case( posting ): - op.posting = new_auth; - break; + } signed_transaction tx; @@ -1561,68 +1420,28 @@ annotated_signed_transaction wallet_api::update_account_memo_key( string account return my->sign_transaction( tx, broadcast ); } -annotated_signed_transaction wallet_api::delegate_vesting_shares( string delegator, string delegatee, asset vesting_shares, bool broadcast ) -{ - FC_ASSERT( !is_locked() ); - - auto accounts = my->_remote_api->get_accounts( { delegator, delegatee } ); - FC_ASSERT( accounts.size() == 2 , "One or more of the accounts specified do not exist." ); - FC_ASSERT( delegator == accounts[0].name, "Delegator account is not right?" ); - FC_ASSERT( delegatee == accounts[1].name, "Delegator account is not right?" ); - - delegate_vesting_shares_operation op; - op.delegator = delegator; - op.delegatee = delegatee; - op.vesting_shares = vesting_shares; - - signed_transaction tx; - tx.operations.push_back( op ); - tx.validate(); - - return my->sign_transaction( tx, broadcast ); -} - -/** - * This method will genrate new owner, active, and memo keys for the new account which - * will be controlable by this wallet. - */ -annotated_signed_transaction wallet_api::create_account( string creator, string new_account_name, string json_meta, bool broadcast ) -{ try { - FC_ASSERT( !is_locked() ); - auto owner = suggest_brain_key(); - auto active = suggest_brain_key(); - auto posting = suggest_brain_key(); - auto memo = suggest_brain_key(); - import_key( owner.wif_priv_key ); - import_key( active.wif_priv_key ); - import_key( posting.wif_priv_key ); - import_key( memo.wif_priv_key ); - return create_account_with_keys( creator, new_account_name, json_meta, owner.pub_key, active.pub_key, posting.pub_key, memo.pub_key, broadcast ); -} FC_CAPTURE_AND_RETHROW( (creator)(new_account_name)(json_meta) ) } /** * This method will genrate new owner, active, and memo keys for the new account which * will be controlable by this wallet. */ -annotated_signed_transaction wallet_api::create_account_delegated( string creator, asset steem_fee, asset delegated_vests, string new_account_name, string json_meta, bool broadcast ) +annotated_signed_transaction wallet_api::create_account( string creator, string name_seed, string json_meta, bool broadcast ) { try { FC_ASSERT( !is_locked() ); auto owner = suggest_brain_key(); auto active = suggest_brain_key(); - auto posting = suggest_brain_key(); auto memo = suggest_brain_key(); import_key( owner.wif_priv_key ); import_key( active.wif_priv_key ); - import_key( posting.wif_priv_key ); import_key( memo.wif_priv_key ); - return create_account_with_keys_delegated( creator, steem_fee, delegated_vests, new_account_name, json_meta, owner.pub_key, active.pub_key, posting.pub_key, memo.pub_key, broadcast ); -} FC_CAPTURE_AND_RETHROW( (creator)(new_account_name)(json_meta) ) } + return create_account_with_keys( creator, name_seed, json_meta, owner.pub_key, active.pub_key, memo.pub_key, broadcast ); +} FC_CAPTURE_AND_RETHROW( (creator)(name_seed)(json_meta) ) } annotated_signed_transaction wallet_api::update_witness( string witness_account_name, string url, public_key_type block_signing_key, - const legacy_chain_properties& props, + const chain_properties& props, bool broadcast ) { FC_ASSERT( !is_locked() ); @@ -1653,6 +1472,22 @@ annotated_signed_transaction wallet_api::update_witness( string witness_account_ return my->sign_transaction( tx, broadcast ); } +annotated_signed_transaction wallet_api::stop_witness( string witness_account_name, + bool broadcast ) +{ + FC_ASSERT( !is_locked() ); + + witness_stop_operation op; + + op.owner = witness_account_name; + + signed_transaction tx; + tx.operations.push_back(op); + tx.validate(); + + return my->sign_transaction( tx, broadcast ); +} + annotated_signed_transaction wallet_api::vote_for_witness(string voting_account, string witness_to_vote_for, bool approve, bool broadcast ) { try { FC_ASSERT( !is_locked() ); @@ -1689,10 +1524,6 @@ void wallet_api::check_memo( const string& memo, const condenser_api::api_accoun auto active_secret = fc::sha256::hash( active_seed.c_str(), active_seed.size() ); keys.push_back( fc::ecc::private_key::regenerate( active_secret ).get_public_key() ); - string posting_seed = account.name + "posting" + memo; - auto posting_secret = fc::sha256::hash( posting_seed.c_str(), posting_seed.size() ); - keys.push_back( fc::ecc::private_key::regenerate( posting_secret ).get_public_key() ); - // Check keys against public keys in authorites for( auto& key_weight_pair : account.owner.key_auths ) { @@ -1706,11 +1537,6 @@ void wallet_api::check_memo( const string& memo, const condenser_api::api_accoun FC_ASSERT( key_weight_pair.first != key, "Detected private active key in memo field. Cancelling transaction." ); } - for( auto& key_weight_pair : account.posting.key_auths ) - { - for( auto& key : keys ) - FC_ASSERT( key_weight_pair.first != key, "Detected private posting key in memo field. Cancelling transaction." ); - } const auto& memo_key = account.memo_key; for( auto& key : keys ) @@ -1730,10 +1556,28 @@ string wallet_api::get_encrypted_memo( string from, string to, string memo ) { memo_data m; auto from_account = get_account( from ); + + if(from_account.size() == 1) { + m.from = from_account.front().memo_key; + } else { + for(const auto& acc: from_account) { + if(acc.name == account_name_type(from)) { + m.from = acc.memo_key; + } + } + } auto to_account = get_account( to ); - m.from = from_account.memo_key; - m.to = to_account.memo_key; + if(from_account.size() == 1) { + m.to = to_account.front().memo_key; + } else { + for(const auto& acc: from_account) { + if(acc.name == account_name_type(to)) { + m.to = acc.memo_key; + } + } + } + m.nonce = fc::time_point::now().time_since_epoch().count(); auto from_priv = my->get_private_key( m.from ); @@ -1755,7 +1599,19 @@ string wallet_api::get_encrypted_memo( string from, string to, string memo ) { annotated_signed_transaction wallet_api::transfer(string from, string to, asset amount, string memo, bool broadcast ) { try { FC_ASSERT( !is_locked() ); - check_memo( memo, get_account( from ) ); + + auto acc_from = get_account(from); + + if(acc_from.size() == 1) { + check_memo( memo, acc_from.front() ); + } else { + for(const auto& acc: acc_from) { + if(acc.name == account_name_type(to)) { + check_memo( memo, acc ); + } + } + } + transfer_operation op; op.from = from; op.to = to; @@ -1775,8 +1631,7 @@ annotated_signed_transaction wallet_api::escrow_transfer( string to, string agent, uint32_t escrow_id, - asset sbd_amount, - asset steem_amount, + asset sophiatx_amount, asset fee, time_point_sec ratification_deadline, time_point_sec escrow_expiration, @@ -1790,9 +1645,8 @@ annotated_signed_transaction wallet_api::escrow_transfer( op.to = to; op.agent = agent; op.escrow_id = escrow_id; - op.sbd_amount = sbd_amount; - op.steem_amount = steem_amount; - op.fee = fee; + op.sophiatx_amount = sophiatx_amount; + op.escrow_fee = fee; op.ratification_deadline = ratification_deadline; op.escrow_expiration = escrow_expiration; op.json_meta = json_meta; @@ -1860,8 +1714,7 @@ annotated_signed_transaction wallet_api::escrow_release( string who, string receiver, uint32_t escrow_id, - asset sbd_amount, - asset steem_amount, + asset sophiatx_amount, bool broadcast ) { @@ -1873,72 +1726,14 @@ annotated_signed_transaction wallet_api::escrow_release( op.who = who; op.receiver = receiver; op.escrow_id = escrow_id; - op.sbd_amount = sbd_amount; - op.steem_amount = steem_amount; - - signed_transaction tx; - tx.operations.push_back( op ); - tx.validate(); - return my->sign_transaction( tx, broadcast ); -} - -/** - * Transfers into savings happen immediately, transfers from savings take 72 hours - */ -annotated_signed_transaction wallet_api::transfer_to_savings( string from, string to, asset amount, string memo, bool broadcast ) -{ - FC_ASSERT( !is_locked() ); - check_memo( memo, get_account( from ) ); - transfer_to_savings_operation op; - op.from = from; - op.to = to; - op.memo = get_encrypted_memo( from, to, memo ); - op.amount = amount; + op.sophiatx_amount = sophiatx_amount; signed_transaction tx; tx.operations.push_back( op ); tx.validate(); - return my->sign_transaction( tx, broadcast ); } -/** - * @param request_id - an unique ID assigned by from account, the id is used to cancel the operation and can be reused after the transfer completes - */ -annotated_signed_transaction wallet_api::transfer_from_savings( string from, uint32_t request_id, string to, asset amount, string memo, bool broadcast ) -{ - FC_ASSERT( !is_locked() ); - check_memo( memo, get_account( from ) ); - transfer_from_savings_operation op; - op.from = from; - op.request_id = request_id; - op.to = to; - op.amount = amount; - op.memo = get_encrypted_memo( from, to, memo ); - - signed_transaction tx; - tx.operations.push_back( op ); - tx.validate(); - - return my->sign_transaction( tx, broadcast ); -} - -/** - * @param request_id the id used in transfer_from_savings - * @param from the account that initiated the transfer - */ -annotated_signed_transaction wallet_api::cancel_transfer_from_savings( string from, uint32_t request_id, bool broadcast ) -{ - FC_ASSERT( !is_locked() ); - cancel_transfer_from_savings_operation op; - op.from = from; - op.request_id = request_id; - signed_transaction tx; - tx.operations.push_back( op ); - tx.validate(); - - return my->sign_transaction( tx, broadcast ); -} annotated_signed_transaction wallet_api::transfer_to_vesting(string from, string to, asset amount, bool broadcast ) { @@ -1969,37 +1764,6 @@ annotated_signed_transaction wallet_api::withdraw_vesting(string from, asset ves return my->sign_transaction( tx, broadcast ); } -annotated_signed_transaction wallet_api::set_withdraw_vesting_route( string from, string to, uint16_t percent, bool auto_vest, bool broadcast ) -{ - FC_ASSERT( !is_locked() ); - set_withdraw_vesting_route_operation op; - op.from_account = from; - op.to_account = to; - op.percent = percent; - op.auto_vest = auto_vest; - - signed_transaction tx; - tx.operations.push_back( op ); - tx.validate(); - - return my->sign_transaction( tx, broadcast ); -} - -annotated_signed_transaction wallet_api::convert_sbd(string from, asset amount, bool broadcast ) -{ - FC_ASSERT( !is_locked() ); - convert_operation op; - op.owner = from; - op.requestid = fc::time_point::now().sec_since_epoch(); - op.amount = amount; - - signed_transaction tx; - tx.operations.push_back( op ); - tx.validate(); - - return my->sign_transaction( tx, broadcast ); -} - annotated_signed_transaction wallet_api::publish_feed(string witness, price exchange_rate, bool broadcast ) { FC_ASSERT( !is_locked() ); @@ -2014,10 +1778,6 @@ annotated_signed_transaction wallet_api::publish_feed(string witness, price exch return my->sign_transaction( tx, broadcast ); } -vector< condenser_api::api_convert_request_object > wallet_api::get_conversion_requests( string owner_account ) -{ - return my->_remote_api->get_conversion_requests( owner_account ); -} string wallet_api::decrypt_memo( string encrypted_memo ) { if( is_locked() ) return encrypted_memo; @@ -2051,36 +1811,6 @@ string wallet_api::decrypt_memo( string encrypted_memo ) { return encrypted_memo; } -annotated_signed_transaction wallet_api::decline_voting_rights( string account, bool decline, bool broadcast ) -{ - FC_ASSERT( !is_locked() ); - decline_voting_rights_operation op; - op.account = account; - op.decline = decline; - - signed_transaction tx; - tx.operations.push_back( op ); - tx.validate(); - - return my->sign_transaction( tx, broadcast ); -} - -annotated_signed_transaction wallet_api::claim_reward_balance( string account, asset reward_steem, asset reward_sbd, asset reward_vests, bool broadcast ) -{ - FC_ASSERT( !is_locked() ); - claim_reward_balance_operation op; - op.account = account; - op.reward_steem = reward_steem; - op.reward_sbd = reward_sbd; - op.reward_vests = reward_vests; - - signed_transaction tx; - tx.operations.push_back( op ); - tx.validate(); - - return my->sign_transaction( tx, broadcast ); -} - map< uint32_t, condenser_api::api_operation_object > wallet_api::get_account_history( string account, uint32_t from, uint32_t limit ) { auto result = my->_remote_api->get_account_history( account, from, limit ); if( !is_locked() ) { @@ -2089,144 +1819,219 @@ map< uint32_t, condenser_api::api_operation_object > wallet_api::get_account_his auto& top = item.second.op.get(); top.memo = decrypt_memo( top.memo ); } - else if( item.second.op.which() == condenser_api::legacy_operation::tag::value ) { - auto& top = item.second.op.get(); - top.memo = decrypt_memo( top.memo ); - } - else if( item.second.op.which() == condenser_api::legacy_operation::tag::value ) { - auto& top = item.second.op.get(); - top.memo = decrypt_memo( top.memo ); - } } } return result; } -condenser_api::state wallet_api::get_state( string url ) { - return my->_remote_api->get_state( url ); + +annotated_signed_transaction wallet_api::get_transaction( transaction_id_type id )const { + return my->_remote_api->get_transaction( id ); } -vector< database_api::api_withdraw_vesting_route_object > wallet_api::get_withdraw_routes( string account, condenser_api::withdraw_route_type type )const -{ - return my->_remote_api->get_withdraw_routes( account, type ); +annotated_signed_transaction +wallet_api::delete_application(string author, string app_name, bool broadcast) { + try + { + FC_ASSERT( !is_locked() ); + + application_delete_operation op; + op.author = author; + op.name = app_name; + + signed_transaction tx; + tx.operations.push_back(op); + tx.validate(); + + return my->sign_transaction( tx, broadcast ); + } + FC_CAPTURE_AND_RETHROW( (author)(app_name)(broadcast) ) } -condenser_api::get_order_book_return wallet_api::get_order_book( uint32_t limit ) +annotated_signed_transaction wallet_api::buy_application(string buyer, int64_t app_id, bool broadcast) { - FC_ASSERT( limit <= 1000 ); - return my->_remote_api->get_order_book( limit ); + try + { + FC_ASSERT( !is_locked() ); + + buy_application_operation op; + op.buyer = buyer; + op.app_id = app_id; + + signed_transaction tx; + tx.operations.push_back(op); + tx.validate(); + + return my->sign_transaction( tx, broadcast ); + } + FC_CAPTURE_AND_RETHROW( (buyer)(app_id)(broadcast) ) } -vector< condenser_api::api_limit_order_object > wallet_api::get_open_orders( string owner ) +annotated_signed_transaction wallet_api::cancel_application_buying(string app_owner, string buyer, int64_t app_id, bool broadcast) { - return my->_remote_api->get_open_orders( owner ); + try + { + FC_ASSERT( !is_locked() ); + + cancel_application_buying_operation op; + op.app_owner = app_owner; + op.buyer = buyer; + op.app_id = app_id; + + signed_transaction tx; + tx.operations.push_back(op); + tx.validate(); + + return my->sign_transaction( tx, broadcast ); + } + FC_CAPTURE_AND_RETHROW( (app_owner)(buyer)(app_id)(broadcast) ) } -annotated_signed_transaction wallet_api::create_order( string owner, uint32_t order_id, asset amount_to_sell, asset min_to_receive, bool fill_or_kill, uint32_t expiration_sec, bool broadcast ) +vector wallet_api::get_application_buyings(string name, string search_type, uint32_t count) { - FC_ASSERT( !is_locked() ); - limit_order_create_operation op; - op.owner = owner; - op.orderid = order_id; - op.amount_to_sell = amount_to_sell; - op.min_to_receive = min_to_receive; - op.fill_or_kill = fill_or_kill; - op.expiration = expiration_sec ? (fc::time_point::now() + fc::seconds(expiration_sec)) : fc::time_point::maximum(); + try{ + return my->_remote_api->get_application_buyings(name, count, search_type); + }FC_CAPTURE_AND_RETHROW((name)(search_type)(count)) +} - signed_transaction tx; - tx.operations.push_back( op ); - tx.validate(); +annotated_signed_transaction +wallet_api::update_application(string author, string app_name, string new_author, string url, + string meta_data, uint8_t price_param, bool broadcast) { + try + { + FC_ASSERT( !is_locked() ); - return my->sign_transaction( tx, broadcast ); + application_update_operation op; + op.author = author; + op.name = app_name; + op.new_author= new_author; + op.url = url; + op.metadata = meta_data; + op.price_param = price_param; + + signed_transaction tx; + tx.operations.push_back(op); + tx.validate(); + + return my->sign_transaction( tx, broadcast ); + } + FC_CAPTURE_AND_RETHROW( (author)(app_name)(new_author)(url)(meta_data)(price_param)(broadcast) ) } -annotated_signed_transaction wallet_api::cancel_order( string owner, uint32_t orderid, bool broadcast ) { - FC_ASSERT( !is_locked() ); - limit_order_cancel_operation op; - op.owner = owner; - op.orderid = orderid; +annotated_signed_transaction +wallet_api::create_application(string author, string app_name, string url, string meta_data, + uint8_t price_param, bool broadcast) { + try + { + FC_ASSERT( !is_locked() ); - signed_transaction tx; - tx.operations.push_back( op ); - tx.validate(); + application_create_operation op; + op.author = author; + op.name = app_name; + op.url = url; + op.metadata = meta_data; + op.price_param = price_param; - return my->sign_transaction( tx, broadcast ); + signed_transaction tx; + tx.operations.push_back(op); + tx.validate(); + + return my->sign_transaction( tx, broadcast ); + } + FC_CAPTURE_AND_RETHROW( (author)(app_name)(url)(meta_data)(price_param)(broadcast) ) } -annotated_signed_transaction wallet_api::post_comment( string author, string permlink, string parent_author, string parent_permlink, string title, string body, string json, bool broadcast ) -{ - FC_ASSERT( !is_locked() ); - comment_operation op; - op.parent_author = parent_author; - op.parent_permlink = parent_permlink; - op.author = author; - op.permlink = permlink; - op.title = title; - op.body = body; - op.json_metadata = json; +annotated_signed_transaction wallet_api::send_custom_json_document(uint32_t app_id, string from, vector to, string json, bool broadcast){ + try{ + FC_ASSERT( !is_locked() ); + custom_json_operation op; + op.app_id = app_id; + op.sender = from; + for(const auto& r: to) + op.recipients.insert(r); + op.json = json; + signed_transaction tx; + tx.operations.push_back(op); + tx.validate(); - signed_transaction tx; - tx.operations.push_back( op ); - tx.validate(); + return my->sign_transaction( tx, broadcast ); - return my->sign_transaction( tx, broadcast ); + }FC_CAPTURE_AND_RETHROW( (app_id)(from)(to)(json)(broadcast)) } -annotated_signed_transaction wallet_api::vote( string voter, string author, string permlink, int16_t weight, bool broadcast ) -{ - FC_ASSERT( !is_locked() ); - FC_ASSERT( abs(weight) <= 100, "Weight must be between -100 and 100 and not 0" ); - - vote_operation op; - op.voter = voter; - op.author = author; - op.permlink = permlink; - op.weight = weight * STEEM_1_PERCENT; +annotated_signed_transaction wallet_api::send_custom_binary_document(uint32_t app_id, string from, vector to, string data, bool broadcast){ + try{ + FC_ASSERT( !is_locked() ); + custom_binary_operation op; + op.app_id = app_id; + op.sender = from; + for(const auto& r: to) + op.recipients.insert(r); + op.data = fc::from_base58(data); + signed_transaction tx; + tx.operations.push_back(op); + tx.validate(); - signed_transaction tx; - tx.operations.push_back( op ); - tx.validate(); + return my->sign_transaction( tx, broadcast ); - return my->sign_transaction( tx, broadcast ); + }FC_CAPTURE_AND_RETHROW( (app_id)(from)(to)(data)(broadcast)) } -void wallet_api::set_transaction_expiration(uint32_t seconds) -{ - my->set_transaction_expiration(seconds); +annotated_signed_transaction wallet_api::sponsor_account_fees(string sponsoring_account, string sponsored_account, bool is_sponsoring, bool broadcast){ + try{ + FC_ASSERT( !is_locked() ); + sponsor_fees_operation op; + op.sponsor = sponsoring_account; + op.sponsored = sponsored_account; + op.is_sponsoring = is_sponsoring; + + signed_transaction tx; + tx.operations.push_back(op); + tx.validate(); + + return my->sign_transaction( tx, broadcast ); + + }FC_CAPTURE_AND_RETHROW( (sponsoring_account)(sponsored_account)(broadcast) ) } -annotated_signed_transaction wallet_api::get_transaction( transaction_id_type id )const { - return my->_remote_api->get_transaction( id ); +map< uint64_t, condenser_api::api_received_object > wallet_api::get_received_documents(uint32_t app_id, string account_name, string search_type, string start, uint32_t count){ + try{ + return my->_remote_api->get_received_documents(app_id, account_name, search_type, start, count); + }FC_CAPTURE_AND_RETHROW((app_id)(account_name)(search_type)(start)(count)) } -annotated_signed_transaction wallet_api::follow( string follower, string following, set what, bool broadcast ) { - auto follwer_account = get_account( follower ); - FC_ASSERT( following.size() ); - if( following[0] != '@' || following[0] != '#' ) { - following = '@' + following; - } - if( following[0] == '@' ) { - get_account( following.substr(1) ); - } - FC_ASSERT( following.size() > 1 ); +annotated_signed_transaction wallet_api::delete_account(string account_name, bool broadcast) { + try{ + FC_ASSERT( !is_locked() ); + account_delete_operation op; + op.account = account_name; + signed_transaction tx; + tx.operations.push_back(op); + tx.validate(); - follow::follow_operation fop; - fop.follower = follower; - fop.following = following; - fop.what = what; - follow::follow_plugin_operation op = fop; + return my->sign_transaction( tx, broadcast ); - custom_json_operation jop; - jop.id = "follow"; - jop.json = fc::json::to_string(op); - jop.required_posting_auths.insert(follower); + }FC_CAPTURE_AND_RETHROW( (account_name)(broadcast)) +} - signed_transaction trx; - trx.operations.push_back( jop ); - trx.validate(); +vector wallet_api::get_applications(vector names) { + try{ + return my->_remote_api->get_applications(names); + }FC_CAPTURE_AND_RETHROW((names)) +} - return my->sign_transaction( trx, broadcast ); +string wallet_api::encode_to_base58(string what){ + return fc::to_base58(what.c_str(), what.size()); } -} } // steem::wallet +vector wallet_api::decode_from_base58(string what){ + return fc::from_base58(what); +} + +string wallet_api::get_account_name_from_seed(string seed){ + return my->get_account_name_from_seed(seed); +} + + +} } // sophiatx::wallet diff --git a/programs/CMakeLists.txt b/programs/CMakeLists.txt index 2d10a5f2..870d3c91 100644 --- a/programs/CMakeLists.txt +++ b/programs/CMakeLists.txt @@ -1,7 +1,15 @@ -add_subdirectory( build_helpers ) add_subdirectory( cli_wallet ) -add_subdirectory( steemd ) +add_subdirectory( sophiatxd ) #add_subdirectory( delayed_node ) add_subdirectory( js_operation_serializer ) add_subdirectory( size_checker ) add_subdirectory( util ) +add_subdirectory( alexandria_deamon ) + +if(BUILD_PIC AND (NOT ABAP_INTERFACE)) + add_subdirectory( alexandria ) + if(JNI_FOUND) + add_subdirectory( alexandriaJNI ) + endif(JNI_FOUND) +endif(BUILD_PIC AND (NOT ABAP_INTERFACE)) + diff --git a/programs/alexandria/CMakeLists.txt b/programs/alexandria/CMakeLists.txt new file mode 100644 index 00000000..068f125c --- /dev/null +++ b/programs/alexandria/CMakeLists.txt @@ -0,0 +1,37 @@ +add_library( alexandria MODULE alexandria.cpp alexandria.hpp ) + +if( UNIX AND NOT APPLE ) + set(rt_library rt ) +endif() + +set_target_properties(alexandria PROPERTIES PUBLIC_HEADER alexandria.hpp) + +find_package( Gperftools QUIET ) +if( GPERFTOOLS_FOUND ) + message( STATUS "Found gperftools; compiling alexandria with TCMalloc") + list( APPEND PLATFORM_SPECIFIC_LIBS tcmalloc ) +endif() + + +target_link_libraries( alexandria PRIVATE + sophiatx_protocol sophiatx_utilities fc + ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) + + +if( CLANG_TIDY_EXE ) + set_target_properties( + alexandria PROPERTIES + CXX_CLANG_TIDY "${DO_CLANG_TIDY}" + ) +endif( CLANG_TIDY_EXE ) + + + + +install( TARGETS + alexandria + RUNTIME DESTINATION lib + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + PUBLIC_HEADER DESTINATION lib + ) diff --git a/programs/alexandria/alexandria.cpp b/programs/alexandria/alexandria.cpp new file mode 100644 index 00000000..29611c55 --- /dev/null +++ b/programs/alexandria/alexandria.cpp @@ -0,0 +1,246 @@ +#include "alexandria.hpp" + +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + + +using namespace sophiatx::utilities; +using namespace sophiatx::protocol; +using namespace fc::ecc; +using namespace std; + +namespace { + +struct memo_data { + + static fc::optional from_string( string str ) { + try { + if( str.size() > sizeof(memo_data)) { + auto data = fc::from_base58( str ); + auto m = fc::raw::unpack_from_vector( data ); + FC_ASSERT( string(m) == str ); + return m; + } + } catch ( ... ) {} + return fc::optional(); + } + + int64_t nonce = 0; + uint64_t check = 0; + vector encrypted; + + operator string()const { + auto data = fc::raw::pack_to_vector(*this); + auto base58 = fc::to_base58( data ); + return base58; + } +}; + + +bool generate_private_key(char *private_key, char *public_key) { + try { + private_key_type priv_key = fc::ecc::private_key::generate(); + public_key_type pub_key = priv_key.get_public_key(); + strcpy(private_key, key_to_wif(priv_key).c_str()); + auto public_key_str = fc::json::to_string(pub_key); + strcpy(public_key, public_key_str.substr(1, public_key_str.size() - 2).c_str()); + return true; + } catch (const fc::exception& e) { + return false; + } +} + +bool get_public_key(const char *private_key, char *public_key) { + if(private_key) { + try { + auto priv_key = *sophiatx::utilities::wif_to_key(string(private_key)); + public_key_type pub_key = priv_key.get_public_key(); + auto public_key_str = fc::json::to_string(pub_key); + strcpy(public_key, public_key_str.substr(1, public_key_str.size() - 2).c_str()); + return true; + } catch (const fc::exception& e) { + return false; + } + } + return false; +} + +bool generate_key_pair_from_brain_key(const char *brain_key, char *private_key, char *public_key) { + if(brain_key) { + try { + fc::sha512 h = fc::sha512::hash(string(brain_key) + " 0"); + auto priv_key = fc::ecc::private_key::regenerate(fc::sha256::hash(h)); + public_key_type pub_key = priv_key.get_public_key(); + strcpy(private_key, key_to_wif(priv_key).c_str()); + auto public_key_str = fc::json::to_string(pub_key); + strcpy(public_key, public_key_str.substr(1, public_key_str.size() - 2).c_str()); + return true; + } catch (const fc::exception& e) { + return false; + } + } + return false; +} + +bool get_transaction_digest(const char *transaction, const char *chain_id, char *digest) { + if(transaction && chain_id) { + try { + string tx_str(transaction); + fc::variant v = fc::json::from_string( tx_str, fc::json::strict_parser ); + signed_transaction stx; + fc::from_variant( v, stx); + digest_type dig = stx.sig_digest(fc::sha256(string(chain_id))); + strcpy(digest, dig.str().c_str()); + return true; + } catch (const fc::exception& e) { + return false; + } + } + return false; +} + +bool sign_digest(const char *digest, const char *private_key, char *signed_digest) { + if(digest && private_key) { + try { + fc::sha256 dig(string(digest, strlen(digest))); + string private_k_str(private_key); + auto priv_key = *sophiatx::utilities::wif_to_key(private_k_str); + auto sig = priv_key.sign_compact(dig); + string result = fc::json::to_string(sig); + strcpy(signed_digest, result.substr(1, result.size() - 2).c_str()); + return true; + } catch (const fc::exception& e) { + return false; + } + } + return false; +} + +bool add_signature(const char *transaction, const char *signature, char *signed_tx) { + if(transaction && signature) { + try { + string tx_str(transaction); + fc::variant v = fc::json::from_string( tx_str, fc::json::strict_parser ); + signed_transaction stx; + fc::from_variant( v, stx ); + + compact_signature sig; + fc::from_hex( string(signature), (char*)sig.begin(), sizeof(compact_signature) ); + + stx.signatures.push_back(sig); + strcpy(signed_tx, fc::json::to_string(stx).c_str()); + return true; + + } catch (const fc::exception& e) { + return false; + } + } + return false; +} + +bool verify_signature(const char *digest, const char *public_key, const char *signed_digest) { + if(digest && public_key && signed_digest) { + try { + fc::sha256 dig(string(digest, strlen(digest))); + + fc::variant v = fc::json::from_string( string(public_key), fc::json::relaxed_parser ); + public_key_type pub_key; + fc::from_variant( v, pub_key ); + + compact_signature sig; + fc::from_hex( string(signed_digest), (char*)sig.begin(), sizeof(compact_signature) ); + + if(pub_key == fc::ecc::public_key(sig, dig)) { + return true; + } + + } catch (const fc::exception& e) { + return false; + } + } + return false; +} + + +bool encrypt_memo(const char *memo, const char *private_key, const char *public_key, char *encrypted_memo) { + if(memo && private_key && public_key) { + try { + memo_data m; + + auto priv_key = *sophiatx::utilities::wif_to_key(string(private_key)); + + fc::variant v = fc::json::from_string( string(public_key), fc::json::relaxed_parser ); + public_key_type pub_key; + fc::from_variant( v, pub_key ); + + m.nonce = fc::time_point::now().time_since_epoch().count(); + + auto shared_secret = priv_key.get_shared_secret( pub_key ); + + fc::sha512::encoder enc; + fc::raw::pack( enc, m.nonce ); + fc::raw::pack( enc, shared_secret ); + auto encrypt_key = enc.result(); + + m.encrypted = fc::aes_encrypt( encrypt_key, fc::raw::pack_to_vector(string(memo)) ); + m.check = fc::sha256::hash( encrypt_key )._hash[0]; + strcpy(encrypted_memo, string(m).c_str()); + return true; + + } catch (const fc::exception& e) { + return false; + } + } + return false; +} + +bool decrypt_memo(const char *memo, const char *private_key, const char* public_key, char *decrypted_memo) { + if(memo && private_key) { + try { + string str_memo(memo); + auto m = memo_data::from_string( str_memo ); + + if( m ) { + fc::sha512 shared_secret; + auto priv_key = *sophiatx::utilities::wif_to_key(string(private_key)); + + fc::variant v = fc::json::from_string( string(public_key), fc::json::relaxed_parser ); + public_key_type pub_key; + fc::from_variant( v, pub_key ); + + shared_secret = priv_key.get_shared_secret(pub_key); + + fc::sha512::encoder enc; + fc::raw::pack( enc, m->nonce ); + fc::raw::pack( enc, shared_secret ); + auto encryption_key = enc.result(); + + uint64_t check = fc::sha256::hash( encryption_key )._hash[0]; + if( check != m->check ) return false; + + vector decrypted = fc::aes_decrypt( encryption_key, m->encrypted ); + strcpy(decrypted_memo, fc::raw::unpack_from_vector( decrypted ).c_str()); + + return true; + } + } catch (const fc::exception& e) { + return false; + } + } + return false; +} + +} // + +FC_REFLECT( memo_data, (nonce)(check)(encrypted) ) diff --git a/programs/alexandria/alexandria.hpp b/programs/alexandria/alexandria.hpp new file mode 100644 index 00000000..d994b945 --- /dev/null +++ b/programs/alexandria/alexandria.hpp @@ -0,0 +1,97 @@ +#ifndef SOPHIATX_ALEXANDRIA_HPP +#define SOPHIATX_ALEXANDRIA_HPP + +#ifdef _WIN32 +#define ALEXANDRIA_EXPORT __declspec(dllexport) +#else +#define ALEXANDRIA_EXPORT +#endif + +namespace { + +extern "C" { + + /** + * Generates private_key in WIF format based on random seed. + * @param private_key - return parameter of size 51 + * @param public_key - return parameter of size 53 + * @return - true if operation is successful + */ + ALEXANDRIA_EXPORT bool generate_private_key(char *private_key, char *public_key); + + /** + * Returns public_key for given private_key + * @param private_key - Private key in WIF format + * @param public_key - return paramter public key derived from private_key + * @return - true if operation is successful + */ + ALEXANDRIA_EXPORT bool get_public_key(const char *private_key, char *public_key); + + /** + * Generates new private/public key pair from brian key.​ + * @param brain_key - Brain key that will be used for private/public key generation + * @param private_key - return parameter of size 51 (WIF) + * @param public_key - return parameter of size 53 + * @return - true if operation is successful + */ + ALEXANDRIA_EXPORT bool generate_key_pair_from_brain_key(const char *brain_key, char *private_key, char *public_key); + + /** + * Creates digest of JSON formatted transaction + * @param transaction - transaction in JSON format + * @param chain_id - id of current blockchain + * @param digest - returned digest of transaction (size 64) + * @return - true if operation is successful + */ + ALEXANDRIA_EXPORT bool get_transaction_digest(const char *transaction, const char *chain_id, char *digest); + + /** + * Creates signature for provided digest + * @param digest - digest that will be singed + * @param private_key - private key for singing in WIF format + * @param signed_digest - returned signature (size 130) + * @return - true if operation is successful + */ + ALEXANDRIA_EXPORT bool sign_digest(const char *digest, const char *private_key, char *signed_digest); + + /** + * Adds signature to JSON formatted transaction + * @param transaction - transaction for singing in JSON format + * @param signature - signature + * @param signed_tx - returned signed transaction (size variable, depends on size of transaction on input_ + * @return - true if operation is successful + */ + ALEXANDRIA_EXPORT bool add_signature(const char *transaction, const char *signature, char *signed_tx); + + /** + * Function for verifying signature base on digest and public key + * @param digest - digest that will be singed + * @param public_key - corresponding public key to private_key used fo signing + * @param signed_digest - digest singed by private_key + * @return - true if signature is correct + */ + ALEXANDRIA_EXPORT bool verify_signature(const char *digest, const char *public_key, const char *signed_digest); + + /** + * Returns the encrypted memo + * @param memo - memo that should be encrypted + * @param private_key - Private key of sender of memo + * @param public_key - Public key of recipient + * @param encrypted_memo - return value of encrypted memo + * @return - true if signature is correct + */ + ALEXANDRIA_EXPORT bool encrypt_memo(const char *memo, const char *private_key, const char *public_key, char *encrypted_memo); + + /** + * Returns the decrypted memo if possible given private keys + * @param memo - memo that should be encrypted + * @param private_key - Private key of recipient of memo + * @param public_key - Public key of sender + * @param decrypted_memo - decrypted memo + * @return - true if signature is correct + */ + ALEXANDRIA_EXPORT bool decrypt_memo(const char *memo, const char *private_key, const char *public_key, char *decrypted_memo); +} + +#endif //SOPHIATX_ALEXANDRIA_HPP +} diff --git a/programs/alexandriaJNI/AlexandriaJNI.cpp b/programs/alexandriaJNI/AlexandriaJNI.cpp new file mode 100644 index 00000000..c3726195 --- /dev/null +++ b/programs/alexandriaJNI/AlexandriaJNI.cpp @@ -0,0 +1,648 @@ +#include "AlexandriaJNI.h" + +#include + +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + + +using namespace sophiatx::utilities; +using namespace sophiatx::protocol; +using namespace fc::ecc; +using namespace std; + +struct Java_AlexandriaJNI_memo_data { + + static fc::optional from_string( string str ) { + try { + if( str.size() > sizeof(Java_AlexandriaJNI_memo_data)) { + auto data = fc::from_base58( str ); + auto m = fc::raw::unpack_from_vector( data ); + FC_ASSERT( string(m) == str ); + return m; + } + } catch ( ... ) {} + return fc::optional(); + } + + int64_t nonce = 0; + uint64_t check = 0; + vector encrypted; + + operator string()const { + auto data = fc::raw::pack_to_vector(*this); + auto base58 = fc::to_base58( data ); + return base58; + } +}; + +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_generatePrivateKey(JNIEnv *env, jclass) { + try { + private_key_type priv_key = fc::ecc::private_key::generate(); + + std::vector key_bytes = fc::variant(priv_key).as>(); + + jbyteArray ret = env->NewByteArray(static_cast(key_bytes.size())); + + if (env->ExceptionCheck() || ret == nullptr) { + return nullptr; + } + env->SetByteArrayRegion(ret, 0, static_cast(key_bytes.size()), reinterpret_cast(key_bytes.data())); + + if (env->ExceptionCheck()) { + env->ReleaseByteArrayElements(ret, reinterpret_cast(key_bytes.data()), 0); + return nullptr; + } + return ret; + } catch (const fc::exception& e) { + return nullptr; + } +} + +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_generatePrivateKeyFromBrainKey(JNIEnv *env, jclass, + jstring inJNIStrBrainKey) { + + const char *brain_key = env->GetStringUTFChars(inJNIStrBrainKey, NULL); + if (brain_key == nullptr || env->ExceptionCheck()) { + return nullptr; + } + + try { + fc::sha512 h = fc::sha512::hash(string(brain_key) + " 0"); + env->ReleaseStringUTFChars(inJNIStrBrainKey, brain_key); + + auto priv_key = fc::ecc::private_key::regenerate(fc::sha256::hash(h)); + + std::vector key_bytes = fc::variant(priv_key).as>(); + + jbyteArray ret = env->NewByteArray(static_cast(key_bytes.size())); + + if (env->ExceptionCheck() || ret == nullptr) { + return nullptr; + } + env->SetByteArrayRegion(ret, 0, static_cast(key_bytes.size()), reinterpret_cast(key_bytes.data())); + + if (env->ExceptionCheck()) { + env->ReleaseByteArrayElements(ret, reinterpret_cast(key_bytes.data()), 0); + return nullptr; + } + return ret; + + } catch (const fc::exception& e) { + env->ReleaseStringUTFChars(inJNIStrBrainKey, brain_key); + return nullptr; + } + +} + +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_getPublicKey(JNIEnv *env, jclass, jbyteArray private_key) { + try { + int length = env->GetArrayLength(private_key); + if(length == -1) { + return nullptr; + } + + std::vector private_k((size_t)length); + env->GetByteArrayRegion(private_key, 0, length, reinterpret_cast(&private_k.front())); + + if (env->ExceptionCheck()) { + return nullptr; + } + + fc::ecc::private_key key = fc::variant(private_k).as(); + + public_key_type pub_key = key.get_public_key(); + + public_key_type::binary_key k; + k.data = pub_key.key_data; + k.check = fc::ripemd160::hash( k.data.data, static_cast(k.data.size()) )._hash[0]; + auto data = fc::raw::pack_to_vector( k ); + + jbyteArray ret = env->NewByteArray(static_cast(data.size())); + + if (env->ExceptionCheck() || ret == nullptr) { + return nullptr; + } + env->SetByteArrayRegion(ret, 0, static_cast(data.size()), reinterpret_cast(data.data())); + + if (env->ExceptionCheck()) { + env->ReleaseByteArrayElements(ret, reinterpret_cast(data.data()), 0); + return nullptr; + } + + return ret; + } catch (const fc::exception& e) { + return nullptr; + } +} + +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_getTransactionDigest(JNIEnv *env, jclass, jstring inJNIStrTransaction, + jbyteArray inJNIChainID) { + + const char *transaction = env->GetStringUTFChars(inJNIStrTransaction, 0); + if (transaction == nullptr) { + return nullptr; + } + + int length = env->GetArrayLength(inJNIChainID); + if(length == -1) { + env->ReleaseStringUTFChars(inJNIStrTransaction, transaction); + return nullptr; + } + + std::vector chain_id((size_t)length); + env->GetByteArrayRegion(inJNIChainID, 0, length, reinterpret_cast(&chain_id.front())); + + if (env->ExceptionCheck()) { + env->ReleaseStringUTFChars(inJNIStrTransaction, transaction); + return nullptr; + } + + try { + string tx_str(transaction); + fc::variant v = fc::json::from_string( tx_str, fc::json::strict_parser ); + signed_transaction stx; + fc::from_variant( v, stx); + digest_type dig = stx.sig_digest(fc::sha256(chain_id.data(), chain_id.size())); + env->ReleaseStringUTFChars(inJNIStrTransaction, transaction); + + jbyteArray ret = env->NewByteArray(static_cast(dig.data_size())); + + if (env->ExceptionCheck() || ret == nullptr) { + return nullptr; + } + env->SetByteArrayRegion(ret, 0, static_cast(dig.data_size()), reinterpret_cast(dig.data())); + + if (env->ExceptionCheck()) { + env->ReleaseByteArrayElements(ret, reinterpret_cast(dig.data()), 0); + return nullptr; + } + + return ret; + } catch (const fc::exception& e) { + env->ReleaseStringUTFChars(inJNIStrTransaction, transaction); + return nullptr; + } +} + +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_signDigest(JNIEnv *env, jclass, jbyteArray inJNIDigest, + jbyteArray inJNIPrivateKey) { + + int length = env->GetArrayLength(inJNIDigest); + if(length == -1) { + return nullptr; + } + + std::vector digest((size_t)length); + env->GetByteArrayRegion(inJNIDigest, 0, length, reinterpret_cast(&digest.front())); + + if (env->ExceptionCheck()) { + return nullptr; + } + + length = env->GetArrayLength(inJNIPrivateKey); + if(length == -1) { + return nullptr; + } + + std::vector private_key((size_t)length); + env->GetByteArrayRegion(inJNIPrivateKey, 0, length, reinterpret_cast(&private_key.front())); + + if (env->ExceptionCheck()) { + return nullptr; + } + + try { + fc::sha256 dig(digest.data(), digest.size()); + fc::ecc::private_key key = fc::variant(private_key).as(); + auto sig = key.sign_compact(dig); + + jbyteArray ret = env->NewByteArray(static_cast(sig.size())); + + if (env->ExceptionCheck() || ret == nullptr) { + return nullptr; + } + env->SetByteArrayRegion(ret, 0, static_cast(sig.size()), reinterpret_cast(sig.data)); + + if (env->ExceptionCheck()) { + env->ReleaseByteArrayElements(ret, reinterpret_cast(sig.data), 0); + return nullptr; + } + + return ret; + } catch (const fc::exception& e) { + + return nullptr; + } + } + +JNIEXPORT jstring JNICALL Java_AlexandriaJNI_addSignature(JNIEnv *env, jclass, jstring inJNIStrTransaction, + jbyteArray inJNISignature) { + + const char *transaction = env->GetStringUTFChars(inJNIStrTransaction, 0); + if (transaction == nullptr) { + return nullptr; + } + + int length = env->GetArrayLength(inJNISignature); + if(length != 65) { + env->ReleaseStringUTFChars(inJNIStrTransaction, transaction); + return nullptr; + } + + compact_signature signature; + env->GetByteArrayRegion(inJNISignature, 0, 65, reinterpret_cast(&signature)); + + if (env->ExceptionCheck()) { + env->ReleaseStringUTFChars(inJNIStrTransaction, transaction); + return nullptr; + } + + try { + string tx_str(transaction); + fc::variant v = fc::json::from_string( tx_str, fc::json::strict_parser ); + signed_transaction stx; + fc::from_variant( v, stx ); + + stx.signatures.push_back(signature); + + env->ReleaseStringUTFChars(inJNIStrTransaction, transaction); + return env->NewStringUTF(fc::json::to_string(stx).c_str()); + + } catch (const fc::exception& e) { + env->ReleaseStringUTFChars(inJNIStrTransaction, transaction); + return nullptr; + } + } + +JNIEXPORT jboolean JNICALL Java_AlexandriaJNI_verifySignature(JNIEnv *env, jclass, jbyteArray inJNIDigest, + jbyteArray inJNIPublicKey, jbyteArray inJNISignature) { + int length = env->GetArrayLength(inJNISignature); + if(length != 65) { + return static_cast(false); + } + + compact_signature signature; + env->GetByteArrayRegion(inJNISignature, 0, 65, reinterpret_cast(&signature)); + + if (env->ExceptionCheck()) { + return static_cast(false); + } + + length = env->GetArrayLength(inJNIDigest); + if(length == -1) { + return static_cast(false); + } + + std::vector digest((size_t)length); + env->GetByteArrayRegion(inJNIDigest, 0, length, reinterpret_cast(&digest.front())); + + if (env->ExceptionCheck()) { + return static_cast(false); + } + + length = env->GetArrayLength(inJNIPublicKey); + if(length == -1) { + return static_cast(false); + } + + std::vector pub_key((size_t)length); + env->GetByteArrayRegion(inJNIPublicKey, 0, length, reinterpret_cast(&pub_key.front())); + + if (env->ExceptionCheck()) { + return static_cast(false); + } + + try { + fc::sha256 dig(digest.data(), digest.size()); + + auto bin_key = fc::raw::unpack_from_vector(pub_key); + public_key_type public_key(bin_key.data); + + if(public_key == fc::ecc::public_key(signature, dig)) { + return static_cast(true); + } + } catch (const fc::exception& e) { + return static_cast(false); + } + return static_cast(false); + } + +JNIEXPORT jstring JNICALL Java_AlexandriaJNI_encryptMemo(JNIEnv *env, jclass, jstring inJNIStrMemo, + jbyteArray inJNIPrivateKey, jbyteArray inJNIPublicKey) { + + const char *memo = env->GetStringUTFChars(inJNIStrMemo, 0); + if (memo == nullptr) { + return nullptr; + } + + int length = env->GetArrayLength(inJNIPrivateKey); + if(length == -1) { + return nullptr; + } + + std::vector private_key((size_t)length); + env->GetByteArrayRegion(inJNIPrivateKey, 0, length, reinterpret_cast(&private_key.front())); + + if (env->ExceptionCheck()) { + env->ReleaseStringUTFChars(inJNIStrMemo, memo); + return nullptr; + } + + length = env->GetArrayLength(inJNIPublicKey); + if(length == -1) { + env->ReleaseStringUTFChars(inJNIStrMemo, memo); + return nullptr; + } + + std::vector pub_key((size_t)length); + env->GetByteArrayRegion(inJNIPublicKey, 0, length, reinterpret_cast(&pub_key.front())); + + if (env->ExceptionCheck()) { + env->ReleaseStringUTFChars(inJNIStrMemo, memo); + return nullptr; + } + + try { + Java_AlexandriaJNI_memo_data m; + + auto bin_key = fc::raw::unpack_from_vector(pub_key); + public_key_type public_key(bin_key.data); + + fc::ecc::private_key key = fc::variant(private_key).as(); + + m.nonce = fc::time_point::now().time_since_epoch().count(); + + auto shared_secret = key.get_shared_secret( public_key ); + + fc::sha512::encoder enc; + fc::raw::pack( enc, m.nonce ); + fc::raw::pack( enc, shared_secret ); + auto encrypt_key = enc.result(); + + m.encrypted = fc::aes_encrypt( encrypt_key, fc::raw::pack_to_vector(string(memo)) ); + m.check = fc::sha256::hash( encrypt_key )._hash[0]; + + env->ReleaseStringUTFChars(inJNIStrMemo, memo); + + return env->NewStringUTF(string(m).c_str()); + + } catch (const fc::exception& e) { + env->ReleaseStringUTFChars(inJNIStrMemo, memo); + return nullptr; + } + } + +JNIEXPORT jstring JNICALL Java_AlexandriaJNI_decryptedMemo(JNIEnv *env, jclass, jstring inJNIStrMemo, + jbyteArray inJNIPrivateKey, jbyteArray inJNIPublicKey) { + + const char *memo = env->GetStringUTFChars(inJNIStrMemo, 0); + if (memo == nullptr) { + return nullptr; + } + + int length = env->GetArrayLength(inJNIPrivateKey); + if(length == -1) { + return nullptr; + } + + std::vector private_key((size_t)length); + env->GetByteArrayRegion(inJNIPrivateKey, 0, length, reinterpret_cast(&private_key.front())); + + if (env->ExceptionCheck()) { + env->ReleaseStringUTFChars(inJNIStrMemo, memo); + return nullptr; + } + + length = env->GetArrayLength(inJNIPublicKey); + if(length == -1) { + env->ReleaseStringUTFChars(inJNIStrMemo, memo); + return nullptr; + } + + std::vector pub_key((size_t)length); + env->GetByteArrayRegion(inJNIPublicKey, 0, length, reinterpret_cast(&pub_key.front())); + + if (env->ExceptionCheck()) { + env->ReleaseStringUTFChars(inJNIStrMemo, memo); + return nullptr; + } + + try { + string str_memo(memo); + auto m = Java_AlexandriaJNI_memo_data::from_string( str_memo ); + + if( m ) { + fc::sha512 shared_secret; + auto bin_key = fc::raw::unpack_from_vector(pub_key); + public_key_type public_key(bin_key.data); + + fc::ecc::private_key key = fc::variant(private_key).as(); + + shared_secret = key.get_shared_secret(public_key); + + fc::sha512::encoder enc; + fc::raw::pack( enc, m->nonce ); + fc::raw::pack( enc, shared_secret ); + auto encryption_key = enc.result(); + + uint64_t check = fc::sha256::hash( encryption_key )._hash[0]; + if( check != m->check ) { + env->ReleaseStringUTFChars(inJNIStrMemo, memo); + return nullptr; + } + + vector decrypted = fc::aes_decrypt( encryption_key, m->encrypted ); + + env->ReleaseStringUTFChars(inJNIStrMemo, memo); + return env->NewStringUTF(fc::raw::unpack_from_vector( decrypted ).c_str()); + } else { + env->ReleaseStringUTFChars(inJNIStrMemo, memo); + return nullptr; + } + } catch (const fc::exception& e) { + env->ReleaseStringUTFChars(inJNIStrMemo, memo); + return nullptr; + } +} + +JNIEXPORT jstring JNICALL Java_AlexandriaJNI_publicKeyToString(JNIEnv *env, jclass, jbyteArray inJNIPublicKey) { + + int length = env->GetArrayLength(inJNIPublicKey); + if(length == -1) { + return nullptr; + } + + std::vector pub_key((size_t)length); + env->GetByteArrayRegion(inJNIPublicKey, 0, length, reinterpret_cast(&pub_key.front())); + + if (env->ExceptionCheck()) { + return nullptr; + } + try { + auto bin_key = fc::raw::unpack_from_vector(pub_key); + public_key_type public_key(bin_key.data); + auto public_key_str = fc::json::to_string(public_key); + return env->NewStringUTF(public_key_str.substr(1, public_key_str.size() - 2).c_str()); + + } catch (const fc::exception& e) { + return nullptr; + } + +} + +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_stringToPublicKey(JNIEnv *env, jclass, jstring inJNIStrPublicKey) { + + const char *public_key = env->GetStringUTFChars(inJNIStrPublicKey, 0); + if (public_key == nullptr) { + return nullptr; + } + + try { + fc::variant v = fc::json::from_string( string(public_key), fc::json::relaxed_parser ); + public_key_type pub_key; + fc::from_variant( v, pub_key ); + + env->ReleaseStringUTFChars(inJNIStrPublicKey, public_key); + + public_key_type::binary_key k; + k.data = pub_key.key_data; + k.check = fc::ripemd160::hash( k.data.data, static_cast(k.data.size()) )._hash[0]; + auto data = fc::raw::pack_to_vector( k ); + + jbyteArray ret = env->NewByteArray(static_cast(data.size())); + + if (env->ExceptionCheck() || ret == nullptr) { + return nullptr; + } + env->SetByteArrayRegion(ret, 0, static_cast(data.size()), reinterpret_cast(data.data())); + + if (env->ExceptionCheck()) { + env->ReleaseByteArrayElements(ret, reinterpret_cast(data.data()), 0); + return nullptr; + } + + return ret; + } catch (const fc::exception& e) { + return nullptr; + } + +} + +JNIEXPORT jstring JNICALL Java_AlexandriaJNI_privateKeyToWif(JNIEnv *env, jclass, jbyteArray array) { + try { + int length = env->GetArrayLength(array); + if(length == -1) { + return nullptr; + } + + std::vector private_k((size_t)length); + env->GetByteArrayRegion(array, 0, length, reinterpret_cast(&private_k.front())); + + if (env->ExceptionCheck()) { + return nullptr; + } + + fc::ecc::private_key key = fc::variant(private_k).as(); + + return env->NewStringUTF(key_to_wif(key).c_str()); + + } catch (const fc::exception& e) { + return nullptr; + } +} + + +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_wifToPrivateKey(JNIEnv *env, jclass, jstring inJNIStrPrivateKey) { + const char *private_key = env->GetStringUTFChars(inJNIStrPrivateKey, 0); + + if (private_key == nullptr || env->ExceptionCheck()) { + return nullptr; + } + + try { + auto priv_key = *sophiatx::utilities::wif_to_key(string(private_key)); + env->ReleaseStringUTFChars(inJNIStrPrivateKey, private_key); + + std::vector key_bytes = fc::variant(priv_key).as>(); + + jbyteArray ret = env->NewByteArray(static_cast(key_bytes.size())); + + if (env->ExceptionCheck() || ret == nullptr) { + return nullptr; + } + env->SetByteArrayRegion(ret, 0, static_cast(key_bytes.size()), reinterpret_cast(key_bytes.data())); + + if (env->ExceptionCheck()) { + env->ReleaseByteArrayElements(ret, reinterpret_cast(key_bytes.data()), 0); + return nullptr; + } + return ret; + } catch (const fc::exception& e) { + env->ReleaseStringUTFChars(inJNIStrPrivateKey, private_key); + return nullptr; + } +} + +JNIEXPORT jstring JNICALL Java_AlexandriaJNI_toBase58(JNIEnv *env, jclass, jbyteArray array) { + try { + int length = env->GetArrayLength(array); + if(length == -1) { + return nullptr; + } + + std::vector data((size_t)length); + env->GetByteArrayRegion(array, 0, length, reinterpret_cast(&data.front())); + + if (env->ExceptionCheck()) { + return nullptr; + } + + return env->NewStringUTF(fc::to_base58(data).c_str()); + } catch (const fc::exception& e) { + return nullptr; + } +} + +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_fromBase58(JNIEnv *env, jclass, jstring inJNIStrdata) { + const char *str_data = env->GetStringUTFChars(inJNIStrdata, 0); + + if (str_data == nullptr || env->ExceptionCheck()) { + return nullptr; + } + + try { + std::vector bytes = fc::from_base58(string(str_data)); + env->ReleaseStringUTFChars(inJNIStrdata, str_data); + + jbyteArray ret = env->NewByteArray(static_cast(bytes.size())); + + if (env->ExceptionCheck() || ret == nullptr) { + return nullptr; + } + env->SetByteArrayRegion(ret, 0, static_cast(bytes.size()), reinterpret_cast(bytes.data())); + + if (env->ExceptionCheck()) { + env->ReleaseByteArrayElements(ret, reinterpret_cast(bytes.data()), 0); + return nullptr; + } + return ret; + + } catch (const fc::exception& e) { + env->ReleaseStringUTFChars(inJNIStrdata, str_data); + return nullptr; + } +} + +FC_REFLECT( Java_AlexandriaJNI_memo_data, (nonce)(check)(encrypted) ) \ No newline at end of file diff --git a/programs/alexandriaJNI/AlexandriaJNI.h b/programs/alexandriaJNI/AlexandriaJNI.h new file mode 100644 index 00000000..03d204e4 --- /dev/null +++ b/programs/alexandriaJNI/AlexandriaJNI.h @@ -0,0 +1,133 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class AlexandriaJNI */ + +#ifndef _Included_AlexandriaJNI +#define _Included_AlexandriaJNI +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: AlexandriaJNI + * Method: generatePrivateKey + * Signature: ()[B + */ +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_generatePrivateKey + (JNIEnv *, jclass); + +/* + * Class: AlexandriaJNI + * Method: generatePrivateKeyFromBrainKey + * Signature: (Ljava/lang/String;)[B + */ +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_generatePrivateKeyFromBrainKey + (JNIEnv *, jclass, jstring); + +/* + * Class: AlexandriaJNI + * Method: getPublicKey + * Signature: ([B)[B + */ +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_getPublicKey + (JNIEnv *, jclass, jbyteArray); + +/* + * Class: AlexandriaJNI + * Method: getTransactionDigest + * Signature: (Ljava/lang/String;[B)[B + */ +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_getTransactionDigest + (JNIEnv *, jclass, jstring, jbyteArray); + +/* + * Class: AlexandriaJNI + * Method: signDigest + * Signature: ([B[B)[B + */ +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_signDigest + (JNIEnv *, jclass, jbyteArray, jbyteArray); + +/* + * Class: AlexandriaJNI + * Method: addSignature + * Signature: (Ljava/lang/String;[B)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_AlexandriaJNI_addSignature + (JNIEnv *, jclass, jstring, jbyteArray); + +/* + * Class: AlexandriaJNI + * Method: verifySignature + * Signature: ([B[B[B)Z + */ +JNIEXPORT jboolean JNICALL Java_AlexandriaJNI_verifySignature + (JNIEnv *, jclass, jbyteArray, jbyteArray, jbyteArray); + +/* + * Class: AlexandriaJNI + * Method: encryptMemo + * Signature: (Ljava/lang/String;[B[B)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_AlexandriaJNI_encryptMemo + (JNIEnv *, jclass, jstring, jbyteArray, jbyteArray); + +/* + * Class: AlexandriaJNI + * Method: decryptedMemo + * Signature: (Ljava/lang/String;[B[B)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_AlexandriaJNI_decryptedMemo + (JNIEnv *, jclass, jstring, jbyteArray, jbyteArray); + +/* + * Class: AlexandriaJNI + * Method: publicKeyToString + * Signature: ([B)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_AlexandriaJNI_publicKeyToString + (JNIEnv *, jclass, jbyteArray); + +/* + * Class: AlexandriaJNI + * Method: stringToPublicKey + * Signature: (Ljava/lang/String;)[B + */ +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_stringToPublicKey + (JNIEnv *, jclass, jstring); + +/* + * Class: AlexandriaJNI + * Method: privateKeyToWif + * Signature: ([B)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_AlexandriaJNI_privateKeyToWif + (JNIEnv *, jclass, jbyteArray); + +/* + * Class: AlexandriaJNI + * Method: wifToPrivateKey + * Signature: (Ljava/lang/String;)[B + */ +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_wifToPrivateKey + (JNIEnv *, jclass, jstring); + +/* + * Class: AlexandriaJNI + * Method: toBase58 + * Signature: ([B)Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_AlexandriaJNI_toBase58 + (JNIEnv *, jclass, jbyteArray); + +/* + * Class: AlexandriaJNI + * Method: fromBase58 + * Signature: (Ljava/lang/String;)[B + */ +JNIEXPORT jbyteArray JNICALL Java_AlexandriaJNI_fromBase58 + (JNIEnv *, jclass, jstring); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/programs/alexandriaJNI/AlexandriaJNI.java b/programs/alexandriaJNI/AlexandriaJNI.java new file mode 100644 index 00000000..02c717c0 --- /dev/null +++ b/programs/alexandriaJNI/AlexandriaJNI.java @@ -0,0 +1,57 @@ +public class AlexandriaJNI { + static { + System.loadLibrary("alexandriaJNI"); // Load native library at runtime + } + + public static native byte[] generatePrivateKey(); + public static native byte[] generatePrivateKeyFromBrainKey(String brain_key); + public static native byte[] getPublicKey(byte[] private_key); + public static native byte[] getTransactionDigest(String transaction, byte[] chain_id); + public static native byte[] signDigest(byte[] digest, byte[] private_key); + public static native String addSignature(String transaction, byte[] signature); + public static native boolean verifySignature(byte[] digest, byte[] public_key, byte[] signed_digest); + public static native String encryptMemo(String memo, byte[] private_key, byte[] public_key); + public static native String decryptedMemo(String memo, byte[] private_key, byte[] public_key); + public static native String publicKeyToString(byte[] publicKey); + public static native byte[] stringToPublicKey(String publicKey); + public static native String privateKeyToWif(byte[] private_key); + public static native byte[] wifToPrivateKey(String wif_key); + public static native String toBase58(byte[] data); + public static native byte[] fromBase58(String data); + + public static byte[] hexStringToByteArray(String s) { + int len = s.length(); + byte[] data = new byte[len / 2]; + for (int i = 0; i < len; i += 2) { + data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + + Character.digit(s.charAt(i+1), 16)); + } + return data; + } + + + // Test Driver + public static void main(String[] args) { + String tx = "{\"id\":0,\"result\":{\"ref_block_num\":28367,\"ref_block_prefix\":785299212,\"expiration\":\"2018-07-04T11:19:03\",\"operations\":[[\"account_create\",{\"fee\":\"0.100000 SPHTX\",\"creator\":\"GN3Ug8ou6tiE4kWvyopJBJmZgcw\",\"name_seed\":\"sanjiv\",\"owner\":{\"weight_threshold\":1,\"account_auths\":[],\"key_auths\":[[\"SPH6vh1vH3DTzFj2NUpZgpXfNACxUGsXThSpwVLXh9KaYAnJtrUpz\",1]]},\"active\":{\"weight_threshold\":1,\"account_auths\":[],\"key_auths\":[[\"SPH6vh1vH3DTzFj2NUpZgpXfNACxUGsXThSpwVLXh9KaYAnJtrUpz\",1]]},\"memo_key\":\"SPH6vh1vH3DTzFj2NUpZgpXfNACxUGsXThSpwVLXh9KaYAnJtrUpz\",\"json_metadata\":\"{}\"}]],\"extensions\":[],\"signatures\":[]}}"; + AlexandriaJNI test = new AlexandriaJNI(); + byte[] private_key = test.generatePrivateKey(); + byte[] public_key = test.getPublicKey(private_key); + System.out.println(test.privateKeyToWif(private_key)); + System.out.println(test.publicKeyToString(public_key)); + byte[] digest = test.getTransactionDigest(tx, test.hexStringToByteArray("0000000000000000000000000000000000000000000000000000000000000000")); + byte[] signature = test.signDigest(digest, private_key); + if(!test.verifySignature(digest, public_key, signature)) + { + System.out.println("Transaction signing failed"); + } + + byte[] private_keyB = test.generatePrivateKey(); + byte[] public_keyB = test.getPublicKey(private_keyB); + String memo = "testabc"; + String enctryped = test.encryptMemo(memo, private_key, public_keyB); + if(!test.decryptedMemo(enctryped, private_keyB, public_key).equals(memo)) + { + System.out.println("Encryption failed"); + } + } +} diff --git a/programs/alexandriaJNI/CMakeLists.txt b/programs/alexandriaJNI/CMakeLists.txt new file mode 100644 index 00000000..105b98c0 --- /dev/null +++ b/programs/alexandriaJNI/CMakeLists.txt @@ -0,0 +1,57 @@ +#find_package(Java REQUIRED) +include(UseJava) + +#enable_testing() + +# compile AlexandriaJNI.java to class file +#set(CMAKE_JAVA_COMPILE_FLAGS "-source" "1.6" "-target" "1.6") +#add_jar(AlexandriaJNI AlexandriaJNI.java) +#get_target_property(_jarFile AlexandriaJNI JAR_FILE) +#get_target_property(_classDir AlexandriaJNI CLASSDIR) +# +## generate AlexandriaJNI.h stub +#set (_stubDir "${CMAKE_CURRENT_BINARY_DIR}") +#add_custom_command( +# OUTPUT AlexandriaJNI.h +# COMMAND ${Java_JAVAH_EXECUTABLE} -verbose +# -classpath ${_classDir} +# -d ${_stubDir} +# -jni AlexandriaJNI +# DEPENDS AlexandriaJNI +#) + + +# generate libalexandriaJNIb +#include_directories(${JNI_INCLUDE_DIRS} ${_classDir} ${_stubDir}) +include_directories(${JNI_INCLUDE_DIRS}) + +add_library(alexandriaJNI MODULE AlexandriaJNI.cpp AlexandriaJNI.h ) + +set_target_properties(alexandriaJNI PROPERTIES PUBLIC_HEADER AlexandriaJNI.java) + +target_link_libraries(alexandriaJNI PRIVATE + sophiatx_protocol sophiatx_utilities fc + ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ${JNI_LIBRARIES}) + +# add test to run JNIFoo +#add_test(NAME TestAlexandriaJNI +# COMMAND ${Java_JAVA_EXECUTABLE} +# -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR} +# -cp ${_jarFile} AlexandriaJNI) + + +if( CLANG_TIDY_EXE ) + set_target_properties( + alexandriaJNI PROPERTIES + CXX_CLANG_TIDY "${DO_CLANG_TIDY}" + ) +endif( CLANG_TIDY_EXE ) + + +install( TARGETS + alexandriaJNI + RUNTIME DESTINATION lib + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + PUBLIC_HEADER DESTINATION lib + ) diff --git a/programs/alexandria_deamon/CMakeLists.txt b/programs/alexandria_deamon/CMakeLists.txt new file mode 100644 index 00000000..ed76a234 --- /dev/null +++ b/programs/alexandria_deamon/CMakeLists.txt @@ -0,0 +1,38 @@ +add_executable( alexandria_deamon main.cpp ) +if( UNIX AND NOT APPLE ) + set(rt_library rt ) +endif() + +find_package( Gperftools QUIET ) +if( GPERFTOOLS_FOUND ) + message( STATUS "Found gperftools; compiling alexandria_deamon with TCMalloc") + list( APPEND PLATFORM_SPECIFIC_LIBS tcmalloc ) +endif() + +if( sophiatx_STATIC_BUILD ) + target_link_libraries( alexandria_deamon PRIVATE + "-static-libstdc++ -static-libgcc -lreadline" + graphene_net sophiatx_chain sophiatx_protocol sophiatx_utilities lib_alexandria condenser_api_plugin fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) +else( sophiatx_STATIC_BUILD ) + target_link_libraries( alexandria_deamon PRIVATE + graphene_net sophiatx_chain sophiatx_protocol sophiatx_utilities lib_alexandria condenser_api_plugin fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) +endif( sophiatx_STATIC_BUILD ) + +if( CLANG_TIDY_EXE ) + set_target_properties( + alexandria_deamon PROPERTIES + CXX_CLANG_TIDY "${DO_CLANG_TIDY}" + ) +endif( CLANG_TIDY_EXE ) + +if(MSVC) + set_source_files_properties( main.cpp PROPERTIES COMPILE_FLAGS "/bigobj" ) +endif(MSVC) + +install( TARGETS + alexandria_deamon + + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) diff --git a/programs/alexandria_deamon/main.cpp b/programs/alexandria_deamon/main.cpp new file mode 100644 index 00000000..a5843815 --- /dev/null +++ b/programs/alexandria_deamon/main.cpp @@ -0,0 +1,194 @@ +/* + * Copyright (c) 2015 Cryptonomex, Inc., and contributors. + * + * The MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#ifdef WIN32 +# include +#endif + + +using namespace sophiatx::utilities; +using namespace sophiatx::chain; +using namespace sophiatx::alexandria; +using namespace std; +namespace bpo = boost::program_options; + +int main( int argc, char** argv ) +{ + try { + + boost::program_options::options_description opts; + opts.add_options() + ("help,h", "Print this help message and exit.") + ("server-rpc-endpoint,s", bpo::value()->implicit_value("ws://127.0.0.1:8090"), "Server websocket RPC endpoint") + ("rpc-endpoint,r", bpo::value()->implicit_value("127.0.0.1:8091"), "Endpoint for alexandria websocket RPC to listen on") + ("rpc-http-endpoint,H", bpo::value()->implicit_value("127.0.0.1:8093"), "Endpoint for alexandria HTTP RPC to listen on") + ("rpc-http-cors,C", bpo::value()->implicit_value("*"), "Access-Control-Allow-Origin response header") + ("daemon,d", "Run the alexandria in daemon mode" ); + + bpo::variables_map options; + + bpo::store( bpo::parse_command_line(argc, argv, opts), options ); + + if( options.count("help") ) + { + std::cout << opts << "\n"; + return 0; + } + + fc::path data_dir; + fc::logging_config cfg; + fc::path log_dir = data_dir / "logs"; + + fc::file_appender::config ac; + ac.filename = log_dir / "rpc" / "rpc.log"; + ac.flush = true; + ac.rotate = true; + ac.rotation_interval = fc::hours( 1 ); + ac.rotation_limit = fc::days( 1 ); + + std::cout << "Logging RPC to file: " << (data_dir / ac.filename).preferred_string() << "\n"; + + cfg.appenders.push_back(fc::appender_config( "default", "console", fc::variant(fc::console_appender::config()))); + cfg.appenders.push_back(fc::appender_config( "rpc", "file", fc::variant(ac))); + + cfg.loggers = { fc::logger_config("default"), fc::logger_config( "rpc") }; + cfg.loggers.front().level = fc::log_level::debug; + cfg.loggers.front().appenders = {"default"}; + cfg.loggers.back().level = fc::log_level::debug; + cfg.loggers.back().appenders = {"rpc"}; + + string ws_server = "ws://127.0.0.1:8090"; + // but allow CLI to override + if( options.count("server-rpc-endpoint") ) + ws_server = options.at("server-rpc-endpoint").as(); + + fc::http::websocket_client client; + auto con = client.connect( ws_server ); + auto apic = std::make_shared(*con); + + auto remote_api = apic->get_remote_api< sophiatx::alexandria::remote_node_api >( 0, "condenser_api" ); + + auto alex_apiptr = std::make_shared( remote_api ); + + fc::api alex_api(alex_apiptr); + + auto alexandria_deamon = std::make_shared(); + for( auto& name_formatter : alex_apiptr->get_result_formatters() ) + alexandria_deamon->format_result( name_formatter.first, name_formatter.second ); + + boost::signals2::scoped_connection closed_connection(con->closed.connect([=]{ + cerr << "Server has disconnected us.\n"; + alexandria_deamon->stop(); + })); + (void)(closed_connection); + + auto _websocket_server = std::make_shared(); + if( options.count("rpc-endpoint") ) + { + _websocket_server->on_connection([&]( const fc::http::websocket_connection_ptr& c ){ + std::cout << "here... \n"; + wlog("." ); + auto wsc = std::make_shared(*c); + wsc->register_api(alex_api); + c->set_session_data( wsc ); + }); + ilog( "Listening for incoming RPC requests on ${p}", ("p", options.at("rpc-endpoint").as() )); + _websocket_server->listen( fc::ip::endpoint::from_string(options.at("rpc-endpoint").as()) ); + _websocket_server->start_accept(); + } + + auto _http_server = std::make_shared(); + if( options.count("rpc-http-endpoint" ) ) + { + ilog( "Listening for incoming HTTP RPC requests on ${p}", ("p", options.at("rpc-http-endpoint").as() ) ); + + _http_server->listen( fc::ip::endpoint::from_string( options.at( "rpc-http-endpoint" ).as() ) ); + // + // due to implementation, on_request() must come AFTER listen() + // + _http_server->on_request( + [&]( const fc::http::request& req, const fc::http::server::response& resp ) + { + resp.add_header("Access-Control-Allow-Origin", + options.count( "rpc-http-cors" ) ? options.at( "rpc-http-cors" ).as() : "*"); + std::shared_ptr< fc::rpc::http_api_connection > conn = + std::make_shared< fc::rpc::http_api_connection>(); + conn->register_api( alex_api ); + conn->on_request( req, resp ); + } ); + } + + if( !options.count( "daemon" ) ) + { + alexandria_deamon->register_api( alex_api ); + alexandria_deamon->start(); + alexandria_deamon->wait(); + } + else + { + fc::promise::ptr exit_promise = new fc::promise("UNIX Signal Handler"); + fc::set_signal_handler([&exit_promise](int signal) { + exit_promise->set_value(signal); + }, SIGINT); + + ilog( "Entering Daemon Mode, ^C to exit" ); + exit_promise->wait(); + } + + closed_connection.disconnect(); + } + catch ( const fc::exception& e ) + { + std::cout << e.to_detail_string() << "\n"; + return -1; + } + return 0; +} diff --git a/programs/build_helpers/CMakeLists.txt b/programs/build_helpers/CMakeLists.txt deleted file mode 100644 index 678663e2..00000000 --- a/programs/build_helpers/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ - -add_executable( cat-parts cat-parts.cpp ) -if( UNIX AND NOT APPLE ) - set(rt_library rt ) -endif() - -# we only actually need Boost, but link against FC for now so we don't duplicate it. -target_link_libraries( cat-parts PRIVATE fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) diff --git a/programs/build_helpers/cat-parts.cpp b/programs/build_helpers/cat-parts.cpp deleted file mode 100644 index 0f06d2dc..00000000 --- a/programs/build_helpers/cat-parts.cpp +++ /dev/null @@ -1,77 +0,0 @@ - -#include -#include - -#include -#include -#include -#include -#include - -int main( int argc, char** argv, char** envp ) -{ - if( argc != 3 ) - { - std::cerr << "syntax: cat-parts DIR OUTFILE" << std::endl; - return 1; - } - - boost::filesystem::path p(argv[1]); - - try - { - std::vector< boost::filesystem::path > v; - - for( boost::filesystem::directory_iterator it(p); - it != boost::filesystem::directory_iterator(); - ++it ) - { - boost::filesystem::path pit = it->path(); - std::string spit = pit.generic_string(); - size_t n = spit.length(); - if( n <= 3 ) - continue; - if( spit.substr(n-3, 3) != ".hf" ) - continue; - v.push_back( pit ); - } - std::sort( v.begin(), v.end() ); - - // open each file and grab its contents, concatenating into single stringstream - std::stringstream ss_data; - for( const boost::filesystem::path& p : v ) - { - boost::filesystem::ifstream ifs(p); - ss_data << ifs.rdbuf(); - } - std::string new_data = ss_data.str(); - - boost::filesystem::path opath(argv[2]); - - if( boost::filesystem::exists( opath ) ) - { - boost::filesystem::ifstream ifs(opath); - std::stringstream ss_old_data; - ss_old_data << ifs.rdbuf(); - std::string old_data = ss_old_data.str(); - if( old_data == new_data ) - { - std::cerr << "File " << opath << " up-to-date with .d directory" << std::endl; - return 0; - } - } - - { - boost::filesystem::ofstream ofs(opath); - ofs.write( new_data.c_str(), new_data.length() ); - } - - std::cerr << "Built " << opath << " from .d directory" << std::endl; - } - catch( const boost::filesystem::filesystem_error& e ) - { - std::cout << e.what() << std::endl; - return 1; - } - return 0; -} diff --git a/programs/build_helpers/check_reflect.py b/programs/build_helpers/check_reflect.py index ba8d825c..bb4f1d0c 100755 --- a/programs/build_helpers/check_reflect.py +++ b/programs/build_helpers/check_reflect.py @@ -56,16 +56,16 @@ def process_class_node(node): re_reflect = re.compile(r""" FC_REFLECT\s*[(] -\s*(steem::[a-zA-Z0-9_:]+) +\s*(sophiatx::[a-zA-Z0-9_:]+) \s*, ((?:\s*[(]\s*[a-zA-Z0-9_]+\s*[)])*) """, re.VERBOSE) re_reflect_derived = re.compile(r""" FC_REFLECT_DERIVED\s*[(] -\s*(steem::[a-zA-Z0-9_:]+) +\s*(sophiatx::[a-zA-Z0-9_:]+) \s*, -\s*[(]\s*((?:graphene|steem)::[a-zA-Z0-9_:]+)\s*[)] +\s*[(]\s*((?:graphene|sophiatx)::[a-zA-Z0-9_:]+)\s*[)] \s*, ((?:\s*[(]\s*[a-zA-Z0-9_]+\s*[)])*) """, re.VERBOSE) diff --git a/programs/build_helpers/configure_build.py b/programs/build_helpers/configure_build.py index 6cf40852..add87c20 100755 --- a/programs/build_helpers/configure_build.py +++ b/programs/build_helpers/configure_build.py @@ -59,7 +59,7 @@ def try_default_dir_from_env(args, flag_name, metavar_name, env_name=None): else: setattr(args, flag_name, directory) - parser = MyParser(description="Helper function to call cmake with appropriate configuration to build Steem.") + parser = MyParser(description="Helper function to call cmake with appropriate configuration to build SophiaTX.") parser.add_argument("--sys-root", metavar="SYS_ROOT", type=convert_to_dir, default=argparse.SUPPRESS, help="Root directory to search within for libraries and header files (can alternatively specify with SYS_ROOT environment variable)") parser.add_argument("--boost-dir", metavar="BOOST_ROOT", type=convert_to_dir, default=argparse.SUPPRESS, @@ -74,7 +74,7 @@ def try_default_dir_from_env(args, flag_name, metavar_name, env_name=None): build_type.add_argument("-d", "--debug", dest="release", action="store_false", default=argparse.SUPPRESS, help="built with CMAKE_BUILD_TYPE=DEBUG") parser.add_argument("--win", "--windows", dest="windows", action="store_true", default=argparse.SUPPRESS, help="cross compile for Windows using MinGW") parser.add_argument("--src", dest="source_dir", metavar="SOURCEDIR", type=convert_to_dir, default=argparse.SUPPRESS, - help="Steem source directory (if omitted, will assume is at ../.. relative to location of this script)") + help="SophiaTX source directory (if omitted, will assume is at ../.. relative to location of this script)") parser.add_argument("additional_args", metavar="CMAKEOPTS", nargs=argparse.REMAINDER, help=argparse.SUPPRESS) parser.set_defaults(low_mem_node=False, release=True, windows=False, source_dir=src_default) @@ -148,7 +148,7 @@ def main(args): command.append("-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY") command.append("-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY") - # Add Steem flags + # Add SophiaTX flags command.append("-DLOW_MEMORY_NODE=" + ("ON" if args.low_mem_node else "OFF")) command.append("-DCMAKE_BUILD_TYPE=" + ("RELEASE" if args.release else "DEBUG")) diff --git a/programs/build_helpers/get_config_check.sh b/programs/build_helpers/get_config_check.sh index a076b4b2..762f33c9 100755 --- a/programs/build_helpers/get_config_check.sh +++ b/programs/build_helpers/get_config_check.sh @@ -1,7 +1,7 @@ #!/bin/bash diff -u \ <(cat libraries/protocol/get_config.cpp | grep 'result[[]".*"' | cut -d '"' -f 2 | sort | uniq) \ - <(cat libraries/protocol/include/steem/protocol/config.hpp | grep '[#]define\s\+[A-Z0-9_]\+' | cut -d ' ' -f 2 | sort | uniq) + <(cat libraries/protocol/include/sophiatx/protocol/config.hpp | grep '[#]define\s\+[A-Z0-9_]\+' | cut -d ' ' -f 2 | sort | uniq) exit $? diff --git a/programs/cli_wallet/CMakeLists.txt b/programs/cli_wallet/CMakeLists.txt index 1c06213c..9412eca5 100644 --- a/programs/cli_wallet/CMakeLists.txt +++ b/programs/cli_wallet/CMakeLists.txt @@ -9,14 +9,14 @@ if( GPERFTOOLS_FOUND ) list( APPEND PLATFORM_SPECIFIC_LIBS tcmalloc ) endif() -if( STEEM_STATIC_BUILD ) +if( SOPHIATX_STATIC_BUILD ) target_link_libraries( cli_wallet PRIVATE "-static-libstdc++ -static-libgcc -lreadline" - graphene_net steem_chain steem_protocol steem_utilities steem_wallet condenser_api_plugin fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) -else( STEEM_STATIC_BUILD ) + graphene_net sophiatx_chain sophiatx_protocol sophiatx_egenesis_full sophiatx_utilities sophiatx_wallet condenser_api_plugin fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) +else( SOPHIATX_STATIC_BUILD ) target_link_libraries( cli_wallet PRIVATE - graphene_net steem_chain steem_protocol steem_utilities steem_wallet condenser_api_plugin fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) -endif( STEEM_STATIC_BUILD ) + graphene_net sophiatx_chain sophiatx_protocol sophiatx_egenesis_full sophiatx_utilities sophiatx_wallet condenser_api_plugin fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) +endif( SOPHIATX_STATIC_BUILD ) if( CLANG_TIDY_EXE ) set_target_properties( diff --git a/programs/cli_wallet/main.cpp b/programs/cli_wallet/main.cpp index 6c813f45..156f91c7 100644 --- a/programs/cli_wallet/main.cpp +++ b/programs/cli_wallet/main.cpp @@ -36,11 +36,14 @@ #include #include -#include +#include -#include -#include -#include +#include +#include +#include +#ifdef IS_TEST_NET +#include +#endif #include #include @@ -58,9 +61,9 @@ #endif -using namespace steem::utilities; -using namespace steem::chain; -using namespace steem::wallet; +using namespace sophiatx::utilities; +using namespace sophiatx::chain; +using namespace sophiatx::wallet; using namespace std; namespace bpo = boost::program_options; @@ -81,7 +84,7 @@ int main( int argc, char** argv ) ("rpc-http-allowip", bpo::value>()->multitoken(), "Allows only specified IPs to connect to the HTTP endpoint" ) ("wallet-file,w", bpo::value()->implicit_value("wallet.json"), "wallet to load") #ifdef IS_TEST_NET - ("chain-id", bpo::value< std::string >()->implicit_value( STEEM_CHAIN_ID_NAME ), "chain ID to connect to") + ("chain-id", bpo::value< std::string >()->implicit_value( sophiatx::egenesis::get_egenesis_chain_id() ), "chain ID to connect to") #endif ; vector allowed_ips; @@ -100,12 +103,10 @@ int main( int argc, char** argv ) wdump((allowed_ips)); } - steem::protocol::chain_id_type _steem_chain_id; + sophiatx::protocol::chain_id_type _sophiatx_chain_id; -#ifdef IS_TEST_NET if( options.count("chain-id") ) - _steem_chain_id = generate_chain_id( options["chain-id"].as< std::string >() ); -#endif + _sophiatx_chain_id = generate_chain_id( options["chain-id"].as< std::string >() ); fc::path data_dir; fc::logging_config cfg; @@ -157,9 +158,9 @@ int main( int argc, char** argv ) auto con = client.connect( wdata.ws_server ); auto apic = std::make_shared(*con); - auto remote_api = apic->get_remote_api< steem::wallet::remote_node_api >( 0, "condenser_api" ); + auto remote_api = apic->get_remote_api< sophiatx::wallet::remote_node_api >( 0, "condenser_api" ); - auto wapiptr = std::make_shared( wdata, _steem_chain_id, remote_api ); + auto wapiptr = std::make_shared( wdata, _sophiatx_chain_id, remote_api ); wapiptr->set_wallet_filename( wallet_file.generic_string() ); wapiptr->load_wallet_file(); @@ -235,7 +236,7 @@ int main( int argc, char** argv ) [&]( const fc::http::request& req, const fc::http::server::response& resp ) { auto itr = allowed_ip_set.find( fc::ip::endpoint::from_string(req.remote_endpoint).get_address() ); - if( itr == allowed_ip_set.end() ) { + if( allowed_ip_set.size() && itr == allowed_ip_set.end() ) { elog("rejected connection from ${ip} because it isn't in allowed set ${s}", ("ip",req.remote_endpoint)("s",allowed_ip_set) ); resp.set_status( fc::http::reply::NotAuthorized ); return; diff --git a/programs/js_operation_serializer/CMakeLists.txt b/programs/js_operation_serializer/CMakeLists.txt index 7084b92c..e9930cce 100644 --- a/programs/js_operation_serializer/CMakeLists.txt +++ b/programs/js_operation_serializer/CMakeLists.txt @@ -4,7 +4,7 @@ if( UNIX AND NOT APPLE ) endif() target_link_libraries( js_operation_serializer - PRIVATE steem_chain steem_protocol fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) + PRIVATE sophiatx_chain sophiatx_protocol fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) install( TARGETS js_operation_serializer diff --git a/programs/js_operation_serializer/main.cpp b/programs/js_operation_serializer/main.cpp index d10d190b..65fdf439 100644 --- a/programs/js_operation_serializer/main.cpp +++ b/programs/js_operation_serializer/main.cpp @@ -21,13 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -#include -#include +#include +#include #include #include -using namespace steem::chain; -using namespace steem::protocol; +using namespace sophiatx::chain; +using namespace sophiatx::protocol; using std::string; using std::map; @@ -57,7 +57,7 @@ string remove_namespace( string str ) str = remove_tail_if( str, '_', "t" ); str = remove_tail_if( str, '_', "object" ); str = remove_tail_if( str, '_', "type" ); - str = remove_namespace_if( str, "steem::chain" ); + str = remove_namespace_if( str, "sophiatx::chain" ); str = remove_namespace_if( str, "chainbase" ); str = remove_namespace_if( str, "std" ); str = remove_namespace_if( str, "fc" ); @@ -77,7 +77,7 @@ void register_serializer(); map st; -steem::vector> serializers; +sophiatx::vector> serializers; bool register_serializer( const string& name, std::function sr ) { diff --git a/programs/size_checker/CMakeLists.txt b/programs/size_checker/CMakeLists.txt index ef225a8e..a5e45b6d 100644 --- a/programs/size_checker/CMakeLists.txt +++ b/programs/size_checker/CMakeLists.txt @@ -4,7 +4,7 @@ if( UNIX AND NOT APPLE ) endif() target_link_libraries( size_checker - PRIVATE steem_chain steem_protocol fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) + PRIVATE sophiatx_chain sophiatx_protocol fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) install( TARGETS size_checker diff --git a/programs/size_checker/main.cpp b/programs/size_checker/main.cpp index e68179ce..33f8d1ea 100644 --- a/programs/size_checker/main.cpp +++ b/programs/size_checker/main.cpp @@ -27,7 +27,7 @@ #include #include -#include +#include #include #include @@ -35,7 +35,7 @@ #include #include -using namespace steem::protocol; +using namespace sophiatx::protocol; std::vector< fc::variant_object > g_op_types; @@ -68,7 +68,7 @@ int main( int argc, char** argv ) { try { - steem::protocol::operation op; + sophiatx::protocol::operation op; std::vector witnesses; witnesses.resize(50); diff --git a/programs/steemd/CMakeLists.txt b/programs/sophiatxd/CMakeLists.txt similarity index 57% rename from programs/steemd/CMakeLists.txt rename to programs/sophiatxd/CMakeLists.txt index cb75b7da..a9327217 100644 --- a/programs/steemd/CMakeLists.txt +++ b/programs/sophiatxd/CMakeLists.txt @@ -1,42 +1,42 @@ -add_executable( steemd main.cpp ) +add_executable( sophiatxd main.cpp ) if( UNIX AND NOT APPLE ) set(rt_library rt ) endif() find_package( Gperftools QUIET ) if( GPERFTOOLS_FOUND ) - message( STATUS "Found gperftools; compiling steemd with TCMalloc") + message( STATUS "Found gperftools; compiling sophiatxd with TCMalloc") list( APPEND PLATFORM_SPECIFIC_LIBS tcmalloc ) endif() -if( STEEM_STATIC_BUILD ) - target_link_libraries( steemd PRIVATE +if( SOPHIATX_STATIC_BUILD ) + target_link_libraries( sophiatxd PRIVATE "-static-libstdc++ -static-libgcc" appbase - steem_utilities - steem_plugins + sophiatx_utilities + sophiatx_plugins ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) -else( STEEM_STATIC_BUILD ) - target_link_libraries( steemd PRIVATE +else( SOPHIATX_STATIC_BUILD ) + target_link_libraries( sophiatxd PRIVATE appbase - steem_utilities - steem_plugins + sophiatx_utilities + sophiatx_plugins ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) -endif( STEEM_STATIC_BUILD ) +endif( SOPHIATX_STATIC_BUILD ) if( CLANG_TIDY_EXE ) set_target_properties( - steemd PROPERTIES + sophiatxd PROPERTIES CXX_CLANG_TIDY "${DO_CLANG_TIDY}" ) endif( CLANG_TIDY_EXE ) install( TARGETS - steemd + sophiatxd RUNTIME DESTINATION bin LIBRARY DESTINATION lib diff --git a/programs/steemd/main.cpp b/programs/sophiatxd/main.cpp similarity index 62% rename from programs/steemd/main.cpp rename to programs/sophiatxd/main.cpp index b643c5f4..682c1df0 100644 --- a/programs/steemd/main.cpp +++ b/programs/sophiatxd/main.cpp @@ -1,16 +1,16 @@ #include -#include +#include -#include -#include +#include +#include -#include -#include -#include +#include +#include +#include -#include -#include -#include +#include +#include +#include #include #include @@ -25,16 +25,18 @@ #include #include +#include + namespace bpo = boost::program_options; -using steem::protocol::version; +using sophiatx::protocol::version; using std::string; using std::vector; string& version_string() { static string v_str = - "steem_blockchain_version: " + fc::string( STEEM_BLOCKCHAIN_VERSION ) + "\n" + - "steem_git_revision: " + fc::string( steem::utilities::git_revision_sha ) + "\n" + + "sophiatx_blockchain_version: " + fc::string( SOPHIATX_BLOCKCHAIN_VERSION ) + "\n" + + "sophiatx_git_revision: " + fc::string( sophiatx::utilities::git_revision_sha ) + "\n" + "fc_git_revision: " + fc::string( fc::git_revision_sha ) + "\n"; return v_str; } @@ -45,18 +47,17 @@ void info() std::cerr << "------------------------------------------------------\n\n"; std::cerr << " STARTING TEST NETWORK\n\n"; std::cerr << "------------------------------------------------------\n"; - auto initminer_private_key = steem::utilities::key_to_wif( STEEM_INIT_PRIVATE_KEY ); - std::cerr << "initminer public key: " << STEEM_INIT_PUBLIC_KEY_STR << "\n"; + auto initminer_private_key = sophiatx::utilities::key_to_wif( SOPHIATX_INIT_PRIVATE_KEY ); + std::cerr << "initminer public key: " << SOPHIATX_INIT_PUBLIC_KEY_STR << "\n"; std::cerr << "initminer private key: " << initminer_private_key << "\n"; - std::cerr << "blockchain version: " << fc::string( STEEM_BLOCKCHAIN_VERSION ) << "\n"; + std::cerr << "blockchain version: " << fc::string( SOPHIATX_BLOCKCHAIN_VERSION ) << "\n"; std::cerr << "------------------------------------------------------\n"; #else std::cerr << "------------------------------------------------------\n\n"; - std::cerr << " STARTING STEEM NETWORK\n\n"; + std::cerr << " STARTING SOPHIATX NETWORK\n\n"; std::cerr << "------------------------------------------------------\n"; - std::cerr << "initminer public key: " << STEEM_INIT_PUBLIC_KEY_STR << "\n"; - std::cerr << "chain id: " << std::string( STEEM_CHAIN_ID ) << "\n"; - std::cerr << "blockchain version: " << fc::string( STEEM_BLOCKCHAIN_VERSION ) << "\n"; + std::cerr << "initminer public key: " << SOPHIATX_INIT_PUBLIC_KEY_STR << "\n"; + std::cerr << "blockchain version: " << fc::string( SOPHIATX_BLOCKCHAIN_VERSION ) << "\n"; std::cerr << "------------------------------------------------------\n"; #endif } @@ -68,19 +69,19 @@ int main( int argc, char** argv ) // Setup logging config bpo::options_description options; - steem::utilities::set_logging_program_options( options ); + sophiatx::utilities::set_logging_program_options( options ); options.add_options() ("backtrace", bpo::value< string >()->default_value( "yes" ), "Whether to print backtrace on SIGSEGV" ); appbase::app().add_program_options( bpo::options_description(), options ); - steem::plugins::register_plugins(); + sophiatx::plugins::register_plugins(); appbase::app().set_version_string( version_string() ); bool initialized = appbase::app().initialize< - steem::plugins::chain::chain_plugin, - steem::plugins::p2p::p2p_plugin, - steem::plugins::webserver::webserver_plugin > + sophiatx::plugins::chain::chain_plugin, + sophiatx::plugins::p2p::p2p_plugin, + sophiatx::plugins::webserver::webserver_plugin > ( argc, argv ); info(); @@ -92,7 +93,7 @@ int main( int argc, char** argv ) try { - fc::optional< fc::logging_config > logging_config = steem::utilities::load_logging_config( args, appbase::app().data_dir() ); + fc::optional< fc::logging_config > logging_config = sophiatx::utilities::load_logging_config( args, appbase::app().data_dir() ); if( logging_config ) fc::configure_logging( *logging_config ); } @@ -110,6 +111,7 @@ int main( int argc, char** argv ) appbase::app().startup(); appbase::app().exec(); std::cout << "exited cleanly\n"; + return 0; } catch ( const boost::exception& e ) diff --git a/programs/util/CMakeLists.txt b/programs/util/CMakeLists.txt index 44141c65..cf0b7257 100644 --- a/programs/util/CMakeLists.txt +++ b/programs/util/CMakeLists.txt @@ -1,7 +1,7 @@ add_executable( get_dev_key get_dev_key.cpp ) target_link_libraries( get_dev_key - PRIVATE steem_chain steem_protocol steem_utilities fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) + PRIVATE sophiatx_chain sophiatx_protocol sophiatx_utilities fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) install( TARGETS get_dev_key @@ -15,12 +15,12 @@ install( TARGETS add_executable( test_shared_mem test_shared_mem.cpp ) target_link_libraries( test_shared_mem - PRIVATE steem_chain steem_protocol steem_utilities fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) + PRIVATE sophiatx_chain sophiatx_protocol sophiatx_utilities fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) add_executable( sign_digest sign_digest.cpp ) target_link_libraries( sign_digest - PRIVATE steem_chain steem_protocol steem_utilities fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) + PRIVATE sophiatx_chain sophiatx_protocol sophiatx_utilities fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) install( TARGETS sign_digest @@ -33,7 +33,7 @@ install( TARGETS add_executable( sign_transaction sign_transaction.cpp ) target_link_libraries( sign_transaction - PRIVATE steem_chain steem_protocol steem_utilities fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) + PRIVATE sophiatx_chain sophiatx_protocol sophiatx_utilities fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) install( TARGETS sign_transaction @@ -43,21 +43,9 @@ install( TARGETS ARCHIVE DESTINATION lib ) -add_executable( inflation_model inflation_model.cpp ) -target_link_libraries( inflation_model - PRIVATE steem_chain steem_protocol fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) - -install( TARGETS - inflation_model - - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) - #add_executable( schema_test schema_test.cpp ) #target_link_libraries( schema_test -# PRIVATE steem_chain fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) +# PRIVATE sophiatx_chain fc ${CMAKE_DL_LIBS} ${PLATFORM_SPECIFIC_LIBS} ) # #install( TARGETS # schema_test @@ -69,7 +57,7 @@ install( TARGETS add_executable( test_block_log test_block_log.cpp ) target_link_libraries( test_block_log - PRIVATE steem_chain steem_protocol fc ${CMAKE_DL_LIB} ${PLATFORM_SPECIFIC_LIBS} ) + PRIVATE sophiatx_chain sophiatx_protocol fc ${CMAKE_DL_LIB} ${PLATFORM_SPECIFIC_LIBS} ) install( TARGETS test_block_log @@ -81,7 +69,7 @@ install( TARGETS add_executable( test_fixed_string test_fixed_string.cpp ) target_link_libraries( test_fixed_string - PRIVATE steem_chain steem_protocol fc ${CMAKE_DL_LIB} ${PLATFORM_SPECIFIC_LIBS} ) + PRIVATE sophiatx_chain sophiatx_protocol fc ${CMAKE_DL_LIB} ${PLATFORM_SPECIFIC_LIBS} ) install( TARGETS test_fixed_string diff --git a/programs/util/get_dev_key.cpp b/programs/util/get_dev_key.cpp index 87a6ab96..169dadc0 100644 --- a/programs/util/get_dev_key.cpp +++ b/programs/util/get_dev_key.cpp @@ -28,8 +28,8 @@ #include #include -#include -#include +#include +#include #ifndef WIN32 #include @@ -87,8 +87,8 @@ int main( int argc, char** argv ) auto show_key = [&]( const fc::ecc::private_key& priv_key, const std::string& name ) { fc::mutable_variant_object mvo; - steem::protocol::public_key_type pub_key = priv_key.get_public_key(); - mvo( "private_key", steem::utilities::key_to_wif( priv_key ) ) + sophiatx::protocol::public_key_type pub_key = priv_key.get_public_key(); + mvo( "private_key", sophiatx::utilities::key_to_wif( priv_key ) ) ( "public_key", std::string( pub_key ) ) ( "account_name", name ) ; diff --git a/programs/util/inflation_model.cpp b/programs/util/inflation_model.cpp deleted file mode 100644 index c5cbc654..00000000 --- a/programs/util/inflation_model.cpp +++ /dev/null @@ -1,153 +0,0 @@ - -#include -#include -#include - -#include -#include - -#include -#include - -#define CURATE_OFF 0 -#define VCURATE_OFF 1 -#define CONTENT_OFF 2 -#define VCONTENT_OFF 3 -#define PRODUCER_OFF 4 -#define VPRODUCER_OFF 5 -#define LIQUIDITY_OFF 6 -#define VLIQUIDITY_OFF 7 -#define POW_OFF 8 -#define VPOW_OFF 9 -#define REWARD_TYPES 10 - -using steem::protocol::asset; -using steem::protocol::share_type; -using steem::protocol::calc_percent_reward_per_block; -using steem::protocol::calc_percent_reward_per_round; -using steem::protocol::calc_percent_reward_per_hour; - -/* -Explanation of output - -{"rvec":["929159090641","8360617424769","929159090641","8360617424769","197985103985","1780051544865","195077031513","1755693283617","179687790278","1615357001502"],"b":68585000,"s":"24303404786580"} - -rvec shows total number of STEEM satoshis created since genesis for: - -- Curation rewards -- Vesting rewards balancing curation rewards -- Content rewards -- Vesting rewards balancing content rewards -- Producer rewards -- Vesting rewards balancing producer rewards -- Liquidity rewards -- Vesting rewards balancing liquidity rewards -- PoW rewards -- Vesting rewards balancing PoW rewards - -b is block number -s is total supply - - -Some possible sources of inaccuracy, the direction and estimated relative sizes of these effects: - -- Missed blocks not modeled (lowers STEEM supply, small) -- Miner queue length very approximately modeled (assumed to go to 100 during the first blocks and then stay there) (may lower or raise STEEM supply, very small) -- Creation / destruction of STEEM used to back SBD not modeled (moves STEEM supply in direction opposite to changes in dollar value of 1 STEEM, large) -- Interest paid to SBD not modeled (raises STEEM supply, medium) -- Lost / forgotten private keys / wallets and deliberate burning of STEEM not modeled (lowers STEEM supply, unknown but likely small) -- Possible bugs or mismatches with implementation (unknown) - -*/ - -int main( int argc, char** argv, char** envp ) -{ - std::vector< share_type > reward_delta; - std::vector< share_type > reward_total; - -/* -#define STEEM_GENESIS_TIME (fc::time_point_sec(1458835200)) -#define STEEM_MINING_TIME (fc::time_point_sec(1458838800)) -#define STEEM_FIRST_CASHOUT_TIME (fc::time_point_sec(1467590400)) /// July 4th -*/ - - uint32_t liquidity_begin_block = (1467590400 - 1458835200) / 3; - uint32_t pow_deficit = 100; - - for( int i=0; i( current_supply ); - reward_delta[ CURATE_OFF ] = std::max( curate_reward, STEEM_MIN_CURATE_REWARD.amount ); - reward_delta[ VCURATE_OFF ] = reward_delta[ CURATE_OFF ] * vesting_factor; - - share_type content_reward = calc_percent_reward_per_block< STEEM_CONTENT_APR_PERCENT >( current_supply ); - reward_delta[ CONTENT_OFF ] = std::max( content_reward, STEEM_MIN_CONTENT_REWARD.amount ); - reward_delta[ VCONTENT_OFF ] = reward_delta[ CONTENT_OFF ] * vesting_factor; - - share_type producer_reward = calc_percent_reward_per_block< STEEM_PRODUCER_APR_PERCENT >( current_supply ); - reward_delta[ PRODUCER_OFF ] = std::max( producer_reward, STEEM_MIN_PRODUCER_REWARD.amount ); - reward_delta[ VPRODUCER_OFF ] = reward_delta[ PRODUCER_OFF ] * vesting_factor; - - current_supply += reward_delta[CURATE_OFF] + reward_delta[VCURATE_OFF] + reward_delta[CONTENT_OFF] + reward_delta[VCONTENT_OFF] + reward_delta[PRODUCER_OFF] + reward_delta[VPRODUCER_OFF]; - // supply for above is computed by using pre-updated supply for computing all 3 amounts. - // supply for below reward types is basically a self-contained event which updates the supply immediately before the next reward type's computation. - - share_type liquidity_reward = 0; - share_type pow_reward = 0; - - if( (block_num % STEEM_MAX_WITNESSES) == 0 ) - ++pow_deficit; - - if( pow_deficit > 0 ) - { - pow_reward = calc_percent_reward_per_round< STEEM_POW_APR_PERCENT >( current_supply ); - pow_reward = std::max( pow_reward, STEEM_MIN_POW_REWARD.amount ); - if( block_num < STEEM_START_MINER_VOTING_BLOCK ) - pow_reward *= STEEM_MAX_WITNESSES; - --pow_deficit; - } - reward_delta[ POW_OFF ] = pow_reward; - reward_delta[ VPOW_OFF ] = reward_delta[ POW_OFF ] * vesting_factor; - - current_supply += reward_delta[ POW_OFF ] + reward_delta[ VPOW_OFF ]; - - if( (block_num > liquidity_begin_block) && ((block_num % STEEM_LIQUIDITY_REWARD_BLOCKS) == 0) ) - { - liquidity_reward = calc_percent_reward_per_hour< STEEM_LIQUIDITY_APR_PERCENT >( current_supply ); - liquidity_reward = std::max( liquidity_reward, STEEM_MIN_LIQUIDITY_REWARD.amount ); - } - reward_delta[ LIQUIDITY_OFF ] = liquidity_reward; - reward_delta[ VLIQUIDITY_OFF ] = reward_delta[ LIQUIDITY_OFF ] * vesting_factor; - current_supply += reward_delta[ LIQUIDITY_OFF ] + reward_delta[ VLIQUIDITY_OFF ]; - - for( int i=0; i -namespace steem {{ namespace app {{ +namespace sophiatx {{ namespace app {{ struct api_context; }} }} @@ -41,7 +41,7 @@ class {plugin_name}_api_impl; class {plugin_name}_api {{ public: - {plugin_name}_api( const steem::app::api_context& ctx ); + {plugin_name}_api( const sophiatx::app::api_context& ctx ); void on_api_startup(); @@ -62,7 +62,7 @@ class {plugin_name}_api """ #pragma once -#include +#include namespace {plugin_provider} {{ namespace plugin {{ namespace {plugin_name} {{ @@ -70,10 +70,10 @@ class {plugin_name}_api class {plugin_name}_plugin_impl; }} -class {plugin_name}_plugin : public steem::app::plugin +class {plugin_name}_plugin : public sophiatx::app::plugin {{ public: - {plugin_name}_plugin( steem::app::application* app ); + {plugin_name}_plugin( sophiatx::app::application* app ); virtual ~{plugin_name}_plugin(); virtual std::string plugin_name()const override; @@ -90,8 +90,8 @@ class {plugin_name}_plugin : public steem::app::plugin "{plugin_name}_api.cpp" : """ -#include -#include +#include +#include #include <{plugin_provider}/plugins/{plugin_name}/{plugin_name}_api.hpp> #include <{plugin_provider}/plugins/{plugin_name}/{plugin_name}_plugin.hpp> @@ -103,14 +103,14 @@ class {plugin_name}_plugin : public steem::app::plugin class {plugin_name}_api_impl {{ public: - {plugin_name}_api_impl( steem::app::application& _app ); + {plugin_name}_api_impl( sophiatx::app::application& _app ); std::shared_ptr< {plugin_provider}::plugin::{plugin_name}::{plugin_name}_plugin > get_plugin(); - steem::app::application& app; + sophiatx::app::application& app; }}; -{plugin_name}_api_impl::{plugin_name}_api_impl( steem::app::application& _app ) : app( _app ) +{plugin_name}_api_impl::{plugin_name}_api_impl( sophiatx::app::application& _app ) : app( _app ) {{}} std::shared_ptr< {plugin_provider}::plugin::{plugin_name}::{plugin_name}_plugin > {plugin_name}_api_impl::get_plugin() @@ -120,7 +120,7 @@ class {plugin_name}_api_impl }} // detail -{plugin_name}_api::{plugin_name}_api( const steem::app::api_context& ctx ) +{plugin_name}_api::{plugin_name}_api( const sophiatx::app::api_context& ctx ) {{ my = std::make_shared< detail::{plugin_name}_api_impl >(ctx.app); }} @@ -145,7 +145,7 @@ class {plugin_name}_api_impl class {plugin_name}_plugin_impl {{ public: - {plugin_name}_plugin_impl( steem::app::application& app ); + {plugin_name}_plugin_impl( sophiatx::app::application& app ); virtual ~{plugin_name}_plugin_impl(); virtual std::string plugin_name()const; @@ -154,11 +154,11 @@ class {plugin_name}_plugin_impl virtual void plugin_shutdown(); void on_applied_block( const chain::signed_block& b ); - steem::app::application& _app; + sophiatx::app::application& _app; boost::signals2::scoped_connection _applied_block_conn; }}; -{plugin_name}_plugin_impl::{plugin_name}_plugin_impl( steem::app::application& app ) +{plugin_name}_plugin_impl::{plugin_name}_plugin_impl( sophiatx::app::application& app ) : _app(app) {{}} {plugin_name}_plugin_impl::~{plugin_name}_plugin_impl() {{}} @@ -189,7 +189,7 @@ class {plugin_name}_plugin_impl }} -{plugin_name}_plugin::{plugin_name}_plugin( steem::app::application* app ) +{plugin_name}_plugin::{plugin_name}_plugin( sophiatx::app::application* app ) : plugin(app) {{ FC_ASSERT( app != nullptr ); @@ -220,7 +220,7 @@ class {plugin_name}_plugin_impl }} }} }} // {plugin_provider}::plugin::{plugin_name} -STEEM_DEFINE_PLUGIN( {plugin_name}, {plugin_provider}::plugin::{plugin_name}::{plugin_name}_plugin ) +SOPHIATX_DEFINE_PLUGIN( {plugin_name}, {plugin_provider}::plugin::{plugin_name}::{plugin_name}_plugin ) """, } @@ -230,7 +230,7 @@ class {plugin_name}_plugin_impl def main(argv): parser = argparse.ArgumentParser() - parser.add_argument("provider", help="Name of plugin provider (steem for plugins developed by Steemit)") + parser.add_argument("provider", help="Name of plugin provider (sophiatx for plugins developed by Equidato Technologies)") parser.add_argument("name", help="Name of plugin to create") args = parser.parse_args(argv[1:]) ctx = { diff --git a/programs/util/schema_test.cpp b/programs/util/schema_test.cpp index 53f8021a..c59eb51a 100644 --- a/programs/util/schema_test.cpp +++ b/programs/util/schema_test.cpp @@ -7,8 +7,8 @@ #include #include -#include -#include +#include +#include using namespace graphene::db; @@ -48,8 +48,8 @@ int main( int argc, char** argv, char** envp ) { std::vector< std::shared_ptr< abstract_schema > > schemas; - schemas.push_back( get_schema_for_type< steem::chain::account_object >() ); - schemas.push_back( get_schema_for_type< steem::chain::comment_object >() ); + schemas.push_back( get_schema_for_type< sophiatx::chain::account_object >() ); + schemas.push_back( get_schema_for_type< sophiatx::chain::comment_object >() ); add_dependent_schemas( schemas ); for( const std::shared_ptr< abstract_schema >& s : schemas ) diff --git a/programs/util/sign_digest.cpp b/programs/util/sign_digest.cpp index f5118f76..75e31fbd 100644 --- a/programs/util/sign_digest.cpp +++ b/programs/util/sign_digest.cpp @@ -8,9 +8,9 @@ #include #include -#include +#include -#include +#include struct signing_request { @@ -21,8 +21,8 @@ struct signing_request struct signing_result { fc::sha256 dig; - steem::protocol::public_key_type key; - steem::protocol::signature_type sig; + sophiatx::protocol::public_key_type key; + sophiatx::protocol::signature_type sig; }; FC_REFLECT( signing_request, (dig)(wif) ) @@ -45,9 +45,9 @@ int main(int argc, char** argv, char** envp) fc::from_variant( v, sreq ); signing_result sres; sres.dig = sreq.dig; - fc::ecc::private_key priv_key = *steem::utilities::wif_to_key( sreq.wif ); + fc::ecc::private_key priv_key = *sophiatx::utilities::wif_to_key( sreq.wif ); sres.sig = priv_key.sign_compact( sreq.dig ); - sres.key = steem::protocol::public_key_type( priv_key.get_public_key() ); + sres.key = sophiatx::protocol::public_key_type( priv_key.get_public_key() ); std::cout << fc::json::to_string( sres ) << std::endl; } return 0; diff --git a/programs/util/sign_transaction.cpp b/programs/util/sign_transaction.cpp index 59d36f71..043e4ce4 100644 --- a/programs/util/sign_transaction.cpp +++ b/programs/util/sign_transaction.cpp @@ -8,26 +8,26 @@ #include #include -#include +#include -#include -#include +#include +#include #define CHAIN_ID_PARAM "--chain-id" struct tx_signing_request { - steem::protocol::transaction tx; + sophiatx::protocol::transaction tx; std::string wif; }; struct tx_signing_result { - steem::protocol::transaction tx; + sophiatx::protocol::transaction tx; fc::sha256 digest; fc::sha256 sig_digest; - steem::protocol::public_key_type key; - steem::protocol::signature_type sig; + sophiatx::protocol::public_key_type key; + sophiatx::protocol::signature_type sig; }; struct error_result @@ -43,8 +43,6 @@ int main(int argc, char** argv, char** envp) { fc::sha256 chainId; - chainId = STEEM_CHAIN_ID; - const size_t chainIdLen = strlen(CHAIN_ID_PARAM); if(argc > 1 && !strncmp(argv[1], CHAIN_ID_PARAM, chainIdLen)) @@ -120,12 +118,12 @@ int main(int argc, char** argv, char** envp) sres.digest = sreq.tx.digest(); sres.sig_digest = sreq.tx.sig_digest(chainId); - auto priv_key = steem::utilities::wif_to_key( sreq.wif ); + auto priv_key = sophiatx::utilities::wif_to_key( sreq.wif ); if(priv_key) { sres.sig = priv_key->sign_compact( sres.sig_digest ); - sres.key = steem::protocol::public_key_type( priv_key->get_public_key() ); + sres.key = sophiatx::protocol::public_key_type( priv_key->get_public_key() ); std::string sres_str = fc::json::to_string( sres ); std::cout << "{\"result\":" << sres_str << "}" << std::endl; } diff --git a/programs/util/test_block_log.cpp b/programs/util/test_block_log.cpp index 10790b96..38aabe89 100644 --- a/programs/util/test_block_log.cpp +++ b/programs/util/test_block_log.cpp @@ -1,13 +1,13 @@ -#include -#include +#include +#include #include int main( int argc, char** argv, char** envp ) { try { - //steem::chain::database db; - steem::chain::block_log log; + //sophiatx::chain::database db; + sophiatx::chain::block_log log; fc::temp_directory temp_dir( "." ); @@ -16,9 +16,9 @@ int main( int argc, char** argv, char** envp ) idump( (log.head() ) ); - steem::protocol::signed_block b1; + sophiatx::protocol::signed_block b1; b1.witness = "alice"; - b1.previous = steem::protocol::block_id_type(); + b1.previous = sophiatx::protocol::block_id_type(); log.append( b1 ); log.flush(); @@ -26,7 +26,7 @@ int main( int argc, char** argv, char** envp ) idump( ( log.head() ) ); idump( (fc::raw::pack_size(b1)) ); - steem::protocol::signed_block b2; + sophiatx::protocol::signed_block b2; b2.witness = "bob"; b2.previous = b1.id(); @@ -56,4 +56,4 @@ int main( int argc, char** argv, char** envp ) } return 0; -} \ No newline at end of file +} diff --git a/programs/util/test_fixed_string.cpp b/programs/util/test_fixed_string.cpp index 55ee5fd1..e4eda9a8 100644 --- a/programs/util/test_fixed_string.cpp +++ b/programs/util/test_fixed_string.cpp @@ -1,5 +1,5 @@ -#include +#include #include @@ -32,7 +32,7 @@ void check( const std::string& s, const std::string& t, } template< typename Storage > -void check_variant( const std::string& s, const steem::protocol::fixed_string_impl< Storage >& fs ) +void check_variant( const std::string& s, const sophiatx::protocol::fixed_string_impl< Storage >& fs ) { fc::variant vs, vfs; fc::to_variant( s, vs ); @@ -46,7 +46,7 @@ void check_variant( const std::string& s, const steem::protocol::fixed_string_im } std::string s2; - steem::protocol::fixed_string_impl< Storage > fs2; + sophiatx::protocol::fixed_string_impl< Storage > fs2; fc::from_variant( vs, s2 ); fc::from_variant( vfs, fs2 ); if( s2 != s ) @@ -63,7 +63,7 @@ void check_variant( const std::string& s, const steem::protocol::fixed_string_im } template< typename Storage > -void check_pack( const std::string& s, const steem::protocol::fixed_string_impl< Storage >& fs ) +void check_pack( const std::string& s, const sophiatx::protocol::fixed_string_impl< Storage >& fs ) { std::stringstream ss, sfs; fc::raw::pack( ss, s ); @@ -76,7 +76,7 @@ void check_pack( const std::string& s, const steem::protocol::fixed_string_impl< } ss.seekg(0); - steem::protocol::fixed_string_impl< Storage > unpacked; + sophiatx::protocol::fixed_string_impl< Storage > unpacked; fc::raw::unpack( ss, unpacked ); if( unpacked != fs ) { @@ -88,7 +88,7 @@ void check_pack( const std::string& s, const steem::protocol::fixed_string_impl< int main( int argc, char** argv, char** envp ) { std::vector< std::string > all_strings; - std::vector< steem::protocol::fixed_string< 16 > > all_fixed_string_16s; + std::vector< sophiatx::protocol::fixed_string< 16 > > all_fixed_string_16s; std::vector< std::vector< uint32_t > > sim_index; std::cout << "setting up LUT's" << std::endl; @@ -135,7 +135,7 @@ int main( int argc, char** argv, char** envp ) for( size_t i=0; i fs(s); + sophiatx::protocol::fixed_string< 16 > fs(s); std::string sfs = fs; if( s != fs ) { @@ -154,7 +154,7 @@ int main( int argc, char** argv, char** envp ) for( const uint32_t& j : sim_index[i] ) { const std::string& t = all_strings[j]; - steem::protocol::fixed_string< 16 > ft(t); + sophiatx::protocol::fixed_string< 16 > ft(t); check( s, t, (s< t) == (fs< ft) ); check( s, t, (s<=t) == (fs<=ft) ); check( s, t, (s> t) == (fs> ft) ); @@ -170,7 +170,7 @@ int main( int argc, char** argv, char** envp ) errors = 0; all_strings = std::vector< std::string >(); - std::vector< steem::protocol::fixed_string< 24 > > all_fixed_string_24s; + std::vector< sophiatx::protocol::fixed_string< 24 > > all_fixed_string_24s; sim_index = std::vector< std::vector< uint32_t > >(); std::cout << "setting up LUT's" << std::endl; @@ -208,7 +208,7 @@ int main( int argc, char** argv, char** envp ) for( size_t i=0; i fs(s); + sophiatx::protocol::fixed_string< 24 > fs(s); std::string sfs = fs; if( s != fs ) { @@ -227,7 +227,7 @@ int main( int argc, char** argv, char** envp ) for( const uint32_t& j : sim_index[i] ) { const std::string& t = all_strings[j]; - steem::protocol::fixed_string< 24 > ft(t); + sophiatx::protocol::fixed_string< 24 > ft(t); check( s, t, (s< t) == (fs< ft) ); check( s, t, (s<=t) == (fs<=ft) ); check( s, t, (s> t) == (fs> ft) ); @@ -243,7 +243,7 @@ int main( int argc, char** argv, char** envp ) errors = 0; all_strings = std::vector< std::string >(); - std::vector< steem::protocol::fixed_string< 32 > > all_fixed_string_32s; + std::vector< sophiatx::protocol::fixed_string< 32 > > all_fixed_string_32s; sim_index = std::vector< std::vector< uint32_t > >(); std::cout << "setting up LUT's" << std::endl; @@ -281,7 +281,7 @@ int main( int argc, char** argv, char** envp ) for( size_t i=0; i fs(s); + sophiatx::protocol::fixed_string< 32 > fs(s); std::string sfs = fs; if( s != fs ) { @@ -300,7 +300,7 @@ int main( int argc, char** argv, char** envp ) for( const uint32_t& j : sim_index[i] ) { const std::string& t = all_strings[j]; - steem::protocol::fixed_string< 32 > ft(t); + sophiatx::protocol::fixed_string< 32 > ft(t); check( s, t, (s< t) == (fs< ft) ); check( s, t, (s<=t) == (fs<=ft) ); check( s, t, (s> t) == (fs> ft) ); diff --git a/programs/util/test_shared_mem.cpp b/programs/util/test_shared_mem.cpp index f3850b80..2bbb41f7 100644 --- a/programs/util/test_shared_mem.cpp +++ b/programs/util/test_shared_mem.cpp @@ -8,12 +8,12 @@ #include #include -#include +#include -#include -#include +#include +#include -#include +#include #include #include @@ -102,7 +102,7 @@ struct book template book( Constructor&& c, const Allocator& al ) :name(al),author(al),pages(0),prize(0), - auth( bip::allocator( al.get_segment_manager() )), + auth( bip::allocator( al.get_segment_manager() )), deq( basic_string_allocator( al.get_segment_manager() ) ) { c( *this ); @@ -112,12 +112,12 @@ struct book shared_string author; int32_t pages; int32_t prize; - steem::chain::shared_authority auth; + sophiatx::chain::shared_authority auth; bip::deque deq; book(const shared_string::allocator_type& al): name(al),author(al),pages(0),prize(0), - auth( bip::allocator( al.get_segment_manager() )), + auth( bip::allocator( al.get_segment_manager() )), deq( basic_string_allocator( al.get_segment_manager() ) ) {} @@ -171,7 +171,7 @@ int main(int argc, char** argv, char** envp) } //b.pages = pbc->size(); - //b.auth = steem::chain::authority( 1, "dan", pbc->size() ); + //b.auth = sophiatx::chain::authority( 1, "dan", pbc->size() ); pbc->emplace( [&]( book& b ) { b.name = "emplace name"; b.pages = pbc->size(); diff --git a/python_scripts/setup.py b/python_scripts/setup.py index 8a8f1bb6..7567a2d2 100644 --- a/python_scripts/setup.py +++ b/python_scripts/setup.py @@ -1,12 +1,12 @@ from setuptools import setup -setup( name='steemdebugnode', +setup( name='sophiatxdebugnode', version='0.1', - description='A wrapper for launching and interacting with a Steem Debug Node', - url='http://github.com/steemit/steem', - author='Steemit, Inc.', - author_email='vandeberg@steemit.com', + description='A wrapper for launching and interacting with a SophiaTX Debug Node', + url='http://github.com/SophiaTX/SophiaTX', + author='Equidato Technologies', + author_email='josef.sevcik@sophiatx.com', license='See LICENSE.md', - packages=['steemdebugnode'], - #install_requires=['steemapi'], - zip_safe=False ) \ No newline at end of file + packages=['sophiatxdebugnode'], + #install_requires=['sophiatxapi'], + zip_safe=False ) diff --git a/python_scripts/sophiatxdebugnode/__init__.py b/python_scripts/sophiatxdebugnode/__init__.py new file mode 100644 index 00000000..cb2a2eaa --- /dev/null +++ b/python_scripts/sophiatxdebugnode/__init__.py @@ -0,0 +1,3 @@ +from sophiatxdebugnode.debugnode import DebugNode + +__all__ = [ 'debugnode' ] diff --git a/python_scripts/steemdebugnode/debugnode.py b/python_scripts/sophiatxdebugnode/debugnode.py similarity index 71% rename from python_scripts/steemdebugnode/debugnode.py rename to python_scripts/sophiatxdebugnode/debugnode.py index a4e1d706..7dd2df66 100644 --- a/python_scripts/steemdebugnode/debugnode.py +++ b/python_scripts/sophiatxdebugnode/debugnode.py @@ -11,48 +11,48 @@ from threading import Lock from time import sleep -from steemapi.steemnoderpc import SteemNodeRPC +from sophiatxapi.sophiatxnoderpc import SophiaTXNodeRPC class DebugNode( object ): - """ Wraps the steemd debug node plugin for easier automated testing of the Steem Network""" + """ Wraps the sophiatxd debug node plugin for easier automated testing of the SophiaTX Network""" - def __init__( self, steemd, data_dir, args='', plugins=[], apis=[], steemd_out=None, steemd_err=None ): - """ Creates a steemd debug node. + def __init__( self, sophiatxd, data_dir, args='', plugins=[], apis=[], sophiatxd_out=None, sophiatxd_err=None ): + """ Creates a sophiatxd debug node. It can be ran by using 'with debug_node:' While in the context of 'with' the debug node will continue to run. Upon exit of 'with' the debug will exit and clean up temporary files. This class also contains methods to allow basic manipulation of the blockchain. - For all other requests, the python-steem library should be used. + For all other requests, the python-sophiatx library should be used. args: - steemd -- The string path to the location of the steemd binary - data_dir -- The string path to an existing steemd data directory which will be used to pull blocks from. - args -- Other string args to pass to steemd. + sophiatxd -- The string path to the location of the sophiatxd binary + data_dir -- The string path to an existing sophiatxd data directory which will be used to pull blocks from. + args -- Other string args to pass to sophiatxd. plugins -- Any additional plugins to start with the debug node. Modify plugins DebugNode.plugins apis -- Any additional APIs to have available. APIs will retain this order for accesibility starting at id 3. database_api is 0, login_api is 1, and debug_node_api is 2. Modify apis with DebugNode.api - steemd_stdout -- A stream for steemd's stdout. Default is to pipe to /dev/null - steemd_stderr -- A stream for steemd's stderr. Default is to pipe to /dev/null + sophiatxd_stdout -- A stream for sophiatxd's stdout. Default is to pipe to /dev/null + sophiatxd_stderr -- A stream for sophiatxd's stderr. Default is to pipe to /dev/null """ self._data_dir = None self._debug_key = None self._FNULL = None self._rpc = None - self._steemd_bin = None - self._steemd_lock = None - self._steemd_process = None + self._sophiatxd_bin = None + self._sophiatxd_lock = None + self._sophiatxd_process = None self._temp_data_dir = None - self._steemd_bin = Path( steemd ) - if( not self._steemd_bin.exists() ): - raise ValueError( 'steemd does not exist' ) - if( not self._steemd_bin.is_file() ): - raise ValueError( 'steemd is not a file' ) + self._sophiatxd_bin = Path( sophiatxd ) + if( not self._sophiatxd_bin.exists() ): + raise ValueError( 'sophiatxd does not exist' ) + if( not self._sophiatxd_bin.is_file() ): + raise ValueError( 'sophiatxd is not a file' ) self._data_dir = Path( data_dir ) if( not self._data_dir.exists() ): - raise ValueError( 'data_dir either does not exist or is not a properly constructed steem data directory' ) + raise ValueError( 'data_dir either does not exist or is not a properly constructed sophiatx data directory' ) if( not self._data_dir.is_dir() ): raise ValueError( 'data_dir is not a directory' ) @@ -65,22 +65,22 @@ def __init__( self, steemd, data_dir, args='', plugins=[], apis=[], steemd_out=N self._args = list() self._FNULL = open( devnull, 'w' ) - if( steemd_out != None ): - self.steemd_out = steemd_out + if( sophiatxd_out != None ): + self.sophiatxd_out = sophiatxd_out else: - self.steemd_out = self._FNULL + self.sophiatxd_out = self._FNULL - if( steemd_err != None ): - self.steemd_err = steemd_err + if( sophiatxd_err != None ): + self.sophiatxd_err = sophiatxd_err else: - self.steemd_err = self._FNULL + self.sophiatxd_err = self._FNULL self._debug_key = '5JHNbFNDg834SFj8CMArV6YW7td4zrPzXveqTfaShmYVuYNeK69' - self._steemd_lock = Lock() + self._sophiatxd_lock = Lock() def __enter__( self ): - self._steemd_lock.acquire() + self._sophiatxd_lock.acquire() # Setup temp directory to use as the data directory for this self._temp_data_dir = TemporaryDirectory() @@ -97,42 +97,42 @@ def __enter__( self ): config.touch() config.write_text( self._get_config() ) - steemd = [ str( self._steemd_bin ), '--data-dir=' + str( self._temp_data_dir.name ) ] - steemd.extend( self._args ) + sophiatxd = [ str( self._sophiatxd_bin ), '--data-dir=' + str( self._temp_data_dir.name ) ] + sophiatxd.extend( self._args ) - self._steemd_process = Popen( steemd, stdout=self.steemd_out, stderr=self.steemd_err ) - self._steemd_process.poll() + self._sophiatxd_process = Popen( sophiatxd, stdout=self.sophiatxd_out, stderr=self.sophiatxd_err ) + self._sophiatxd_process.poll() sleep( 5 ) - if( not self._steemd_process.returncode ): - self._rpc = SteemNodeRPC( 'ws://127.0.0.1:8095', '', '' ) + if( not self._sophiatxd_process.returncode ): + self._rpc = SophiaTXNodeRPC( 'ws://127.0.0.1:8095', '', '' ) else: - raise Exception( "steemd did not start properly..." ) + raise Exception( "sophiatxd did not start properly..." ) def __exit__( self, exc, value, tb ): self._rpc = None - if( self._steemd_process != None ): - self._steemd_process.poll() + if( self._sophiatxd_process != None ): + self._sophiatxd_process.poll() - if( not self._steemd_process.returncode ): - self._steemd_process.send_signal( SIGINT ) + if( not self._sophiatxd_process.returncode ): + self._sophiatxd_process.send_signal( SIGINT ) sleep( 7 ) - self._steemd_process.poll() + self._sophiatxd_process.poll() - if( not self._steemd_process.returncode ): - self._steemd_process.send_signal( SIGTERM ) + if( not self._sophiatxd_process.returncode ): + self._sophiatxd_process.send_signal( SIGTERM ) sleep( 5 ) - self._steemd_process.poll() + self._sophiatxd_process.poll() - if( self._steemd_process.returncode ): - loggin.error( 'steemd did not properly shut down after SIGINT and SIGTERM. User intervention may be required.' ) + if( self._sophiatxd_process.returncode ): + loggin.error( 'sophiatxd did not properly shut down after SIGINT and SIGTERM. User intervention may be required.' ) - self._steemd_process = None + self._sophiatxd_process = None self._temp_data_dir.cleanup() self._temp_data_dir = None - self._steemd_lock.release() + self._sophiatxd_lock.release() def _get_config( self ): @@ -150,7 +150,7 @@ def debug_generate_blocks( self, count ): The debug node plugin requires a WIF key to sign blocks with. This class uses the key 5JHNbFNDg834SFj8CMArV6YW7td4zrPzXveqTfaShmYVuYNeK69 which was generated from - `get_dev_key steem debug`. Do not use this key on the live chain for any reason. + `get_dev_key sophiatx debug`. Do not use this key on the live chain for any reason. args: count -- The number of new blocks to generate. @@ -170,7 +170,7 @@ def debug_generate_blocks_until( self, timestamp, generate_sparsely=True ): The debug node plugin requires a WIF key to sign blocks with. This class uses the key 5JHNbFNDg834SFj8CMArV6YW7td4zrPzXveqTfaShmYVuYNeK69 which was generated from - `get_dev_key steem debug`. Do not use this key on the live chain for any reason. + `get_dev_key sophiatx debug`. Do not use this key on the live chain for any reason. args: time -- The desired new head block time. This is a POSIX Timestmap. @@ -207,7 +207,7 @@ def debug_set_hardfork( self, hardfork_id ): args: hardfork_id: The id of the hardfork to set. Hardfork IDs start at 1 (0 is genesis) and increment - by one for each hardfork. The maximum value is STEEM_NUM_HARDFORKS in chain/hardfork.d/0-preamble.hf + by one for each hardfork. The maximum value is SOPHIATX_NUM_HARDFORKS in chain/hardfork.d/0-preamble.hf """ if( hardfork_id < 0 ): raise ValueError( "hardfork_id cannot be negative" ) @@ -233,7 +233,7 @@ def debug_get_hardfork_property_object( self ): def main(): global WAITING """ - This example contains a simple parser to obtain the locations of both steemd and the data directory, + This example contains a simple parser to obtain the locations of both sophiatxd and the data directory, creates and runs a new debug node, replays all of the blocks in the data directory, and finally waits for the user to interface with it outside of the script. Sending SIGINT succesfully and cleanly terminates the program. @@ -248,26 +248,26 @@ def main(): parser = ArgumentParser( description='Run a Debug Node on an existing chain. This simply replays all blocks ' + \ 'and then waits indefinitely to allow user interaction through RPC calls and ' + \ 'the CLI wallet' ) - parser.add_argument( '--steemd', '-s', type=str, required=True, help='The location of a steemd binary to run the debug node' ) + parser.add_argument( '--sophiatxd', '-s', type=str, required=True, help='The location of a sophiatxd binary to run the debug node' ) parser.add_argument( '--data-dir', '-d', type=str, required=True, help='The location of an existing data directory. ' + \ 'The debug node will pull blocks from this directory when replaying the chain. The directory ' + \ 'will not be changed.' ) args = parser.parse_args() - steemd = Path( args.steemd ) - if( not steemd.exists() ): - print( 'Error: steemd does not exist.' ) + sophiatxd = Path( args.sophiatxd ) + if( not sophiatxd.exists() ): + print( 'Error: sophiatxd does not exist.' ) return - steemd = steemd.resolve() - if( not steemd.is_file() ): - print( 'Error: steemd is not a file.' ) + sophiatxd = sophiatxd.resolve() + if( not sophiatxd.is_file() ): + print( 'Error: sophiatxd is not a file.' ) return data_dir = Path( args.data_dir ) if( not data_dir.exists() ): - print( 'Error: data_dir does not exist or is not a properly constructed steemd data directory' ) + print( 'Error: data_dir does not exist or is not a properly constructed sophiatxd data directory' ) data_dir = data_dir.resolve() if( not data_dir.is_dir() ): @@ -276,7 +276,7 @@ def main(): signal.signal( signal.SIGINT, sigint_handler ) print( 'Creating and starting debug node' ) - debug_node = DebugNode( str( steemd ), str( data_dir ), steemd_err=sys.stderr ) + debug_node = DebugNode( str( sophiatxd ), str( data_dir ), sophiatxd_err=sys.stderr ) with debug_node: print( 'Done!' ) @@ -292,4 +292,4 @@ def sigint_handler( signum, frame ): sleep( 3 ) sys.exit( 0 ) - main() \ No newline at end of file + main() diff --git a/python_scripts/steemdebugnode/private_testnet.py b/python_scripts/sophiatxdebugnode/private_testnet.py similarity index 80% rename from python_scripts/steemdebugnode/private_testnet.py rename to python_scripts/sophiatxdebugnode/private_testnet.py index 631de182..bcb9c153 100644 --- a/python_scripts/steemdebugnode/private_testnet.py +++ b/python_scripts/sophiatxdebugnode/private_testnet.py @@ -11,15 +11,15 @@ from time import time # local imports -from steemdebugnode import DebugNode -from steemapi.steemnoderpc import SteemNodeRPC +from sophiatxdebugnode import DebugNode +from sophiatxapi.sophiatxnoderpc import SophiaTXNodeRPC WAITING = True def main( ): global WAITING """ - This example contains a simple parser to obtain the locations of both steemd and the data directory, + This example contains a simple parser to obtain the locations of both sophiatxd and the data directory, creates and runs a new debug node, replays all of the blocks in the data directory, and finally waits for the user to interface with it outside of the script. Sending SIGINT succesfully and cleanly terminates the program. @@ -34,7 +34,7 @@ def main( ): parser = ArgumentParser( description='Run a Debug Node on an existing chain. This simply replays all blocks ' + \ 'and then waits indefinitely to allow user interaction through RPC calls and ' + \ 'the CLI wallet' ) - parser.add_argument( '--steemd', '-s', type=str, required=True, help='The location of a steemd binary to run the debug node' ) + parser.add_argument( '--sophiatxd', '-s', type=str, required=True, help='The location of a sophiatxd binary to run the debug node' ) parser.add_argument( '--data-dir', '-d', type=str, required=True, help='The location of an existing data directory. ' + \ 'The debug node will pull blocks from this directory when replaying the chain. The directory ' + \ 'will not be changed.' ) @@ -45,19 +45,19 @@ def main( ): args = parser.parse_args() - steemd = Path( args.steemd ) - if( not steemd.exists() ): - print( 'Error: steemd does not exist.' ) + sophiatxd = Path( args.sophiatxd ) + if( not sophiatxd.exists() ): + print( 'Error: sophiatxd does not exist.' ) return - steemd = steemd.resolve() - if( not steemd.is_file() ): - print( 'Error: steemd is not a file.' ) + sophiatxd = sophiatxd.resolve() + if( not sophiatxd.is_file() ): + print( 'Error: sophiatxd is not a file.' ) return data_dir = Path( args.data_dir ) if( not data_dir.exists() ): - print( 'Error: data_dir does not exist or is not a properly constructed steemd data directory' ) + print( 'Error: data_dir does not exist or is not a properly constructed sophiatxd data directory' ) data_dir = data_dir.resolve() if( not data_dir.is_dir() ): @@ -74,7 +74,7 @@ def main( ): signal.signal( signal.SIGINT, sigint_handler ) print( 'Creating and starting debug node' ) - debug_node = DebugNode( str( steemd ), str( data_dir ), plugins=plugins, apis=apis, args='--replay', steemd_err=sys.stderr ) + debug_node = DebugNode( str( sophiatxd ), str( data_dir ), plugins=plugins, apis=apis, args='--replay', sophiatxd_err=sys.stderr ) with debug_node: debug_node.debug_generate_blocks_until( int( time() ), True ) @@ -94,4 +94,4 @@ def sigint_handler( signum, frame ): sleep( 3 ) sys.exit( 0 ) -main() \ No newline at end of file +main() diff --git a/python_scripts/steemdebugnode/__init__.py b/python_scripts/steemdebugnode/__init__.py deleted file mode 100644 index deb425ee..00000000 --- a/python_scripts/steemdebugnode/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from steemdebugnode.debugnode import DebugNode - -__all__ = [ 'debugnode' ] \ No newline at end of file diff --git a/python_scripts/tests/api_tests/account_history_api/get_account_history.json.pat b/python_scripts/tests/api_tests/account_history_api/get_account_history.json.pat index 171eabe8..007a35ae 100644 --- a/python_scripts/tests/api_tests/account_history_api/get_account_history.json.pat +++ b/python_scripts/tests/api_tests/account_history_api/get_account_history.json.pat @@ -26,7 +26,7 @@ "vote", { "author": "blocktrades", - "permlink": "steem-deposits-withdrawals-re-enabled-on-openledger-for-decentralized-trading", + "permlink": "sophiatx-deposits-withdrawals-re-enabled-on-openledger-for-decentralized-trading", "voter": "dilzeem", "weight": 10000 } @@ -47,10 +47,10 @@ { "author": "mikegold10", "body": "Just use the market on this site and forget about OpenLedger and its fees.", - "json_metadata": "{\"tags\":[\"steem\"]}", + "json_metadata": "{\"tags\":[\"sophiatx\"]}", "parent_author": "blocktrades", - "parent_permlink": "steem-deposits-withdrawals-re-enabled-on-openledger-for-decentralized-trading", - "permlink": "re-blocktrades-steem-deposits-withdrawals-re-enabled-on-openledger-for-decentralized-trading-20160715t165115443z", + "parent_permlink": "sophiatx-deposits-withdrawals-re-enabled-on-openledger-for-decentralized-trading", + "permlink": "re-blocktrades-sophiatx-deposits-withdrawals-re-enabled-on-openledger-for-decentralized-trading-20160715t165115443z", "title": "" } ], @@ -123,7 +123,7 @@ "vote", { "author": "blocktrades", - "permlink": "steem-deposits-withdrawals-re-enabled-on-openledger-for-decentralized-trading", + "permlink": "sophiatx-deposits-withdrawals-re-enabled-on-openledger-for-decentralized-trading", "voter": "rufai", "weight": 10000 } @@ -179,7 +179,7 @@ "vote", { "author": "blocktrades", - "permlink": "steem-deposits-withdrawals-re-enabled-on-openledger-for-decentralized-trading", + "permlink": "sophiatx-deposits-withdrawals-re-enabled-on-openledger-for-decentralized-trading", "voter": "george-goya", "weight": 10000 } @@ -210,4 +210,4 @@ } ] ] -} \ No newline at end of file +} diff --git a/python_scripts/tests/api_tests/basic_smoketest.yaml b/python_scripts/tests/api_tests/basic_smoketest.yaml index db76d099..8d265231 100644 --- a/python_scripts/tests/api_tests/basic_smoketest.yaml +++ b/python_scripts/tests/api_tests/basic_smoketest.yaml @@ -1,5 +1,5 @@ - config: - - testset: "Basic steemd API Smoke Test" + - testset: "Basic sophiatxd API Smoke Test" - test: - name: "Test ip address" diff --git a/python_scripts/tests/api_tests/compare_state_history.sh b/python_scripts/tests/api_tests/compare_state_history.sh index 861305fc..66a6ad79 100755 --- a/python_scripts/tests/api_tests/compare_state_history.sh +++ b/python_scripts/tests/api_tests/compare_state_history.sh @@ -7,7 +7,7 @@ PAT_FILE=$TEST_DIR/get_ops_in_block.json.pat function print_help_and_quit { echo "Usage: last_block_number [--pre-appbase] 1st_node_address [--pre-appbase] 2nd_node_address" - echo "Example: 10000 --pre-appbase https://steemd.steemit.com http://127.0.0.1:8090" + echo "Example: 10000 --pre-appbase https://sophiatxd.sophiatx.com http://127.0.0.1:8090" exit $EXIT_CODE } @@ -57,11 +57,11 @@ esac echo Checking $NODE1... pyresttest $NODE1 ./basic_smoketest.yaml -[ $? -ne 0 ] && echo FATAL: steemd not running at $NODE1? && exit -1 +[ $? -ne 0 ] && echo FATAL: sophiatxd not running at $NODE1? && exit -1 echo Checking $NODE2... pyresttest $NODE2 ./basic_smoketest.yaml -[ $? -ne 0 ] && echo FATAL: steemd not running at $NODE2? && exit -1 +[ $? -ne 0 ] && echo FATAL: sophiatxd not running at $NODE2? && exit -1 # Delete .out & .pat files here. rm -f $OUT_FILE $PAT_FILE diff --git a/python_scripts/tests/api_tests/database_api/get_config.json.pat b/python_scripts/tests/api_tests/database_api/get_config.json.pat index 7c1bc16b..38a19135 100644 --- a/python_scripts/tests/api_tests/database_api/get_config.json.pat +++ b/python_scripts/tests/api_tests/database_api/get_config.json.pat @@ -3,159 +3,159 @@ "SBD_SYMBOL": "TBD", "SMT_UPVOTE_LOCKOUT": 43200, "SMT_VESTING_WITHDRAW_INTERVAL_SECONDS": 604800, - "STEEM_100_PERCENT": 10000, - "STEEM_1_PERCENT": 100, - "STEEM_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD": 12000000, - "STEEM_ACTIVE_CHALLENGE_COOLDOWN": "86400000000", - "STEEM_ACTIVE_CHALLENGE_FEE": "2.000 TESTS", - "STEEM_ADDRESS_PREFIX": "TST", - "STEEM_APR_PERCENT_MULTIPLY_PER_BLOCK": "102035135585887", - "STEEM_APR_PERCENT_MULTIPLY_PER_HOUR": "119577151364285", - "STEEM_APR_PERCENT_MULTIPLY_PER_ROUND": "133921203762304", - "STEEM_APR_PERCENT_SHIFT_PER_BLOCK": 87, - "STEEM_APR_PERCENT_SHIFT_PER_HOUR": 77, - "STEEM_APR_PERCENT_SHIFT_PER_ROUND": 83, - "STEEM_BANDWIDTH_AVERAGE_WINDOW_SECONDS": 604800, - "STEEM_BANDWIDTH_PRECISION": 1000000, - "STEEM_BLOCKCHAIN_HARDFORK_VERSION": "0.21.0", - "STEEM_BLOCKCHAIN_PRECISION": 1000, - "STEEM_BLOCKCHAIN_PRECISION_DIGITS": 3, - "STEEM_BLOCKCHAIN_VERSION": "0.21.0", - "STEEM_BLOCKS_PER_DAY": 28800, - "STEEM_BLOCKS_PER_HOUR": 1200, - "STEEM_BLOCKS_PER_YEAR": 10512000, - "STEEM_BLOCK_INTERVAL": 3, - "STEEM_CASHOUT_WINDOW_SECONDS": 3600, - "STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF12": 3600, - "STEEM_CASHOUT_WINDOW_SECONDS_PRE_HF17": 3600, - "STEEM_CHAIN_ID": "18dcf0a285365fc58b71f18b3d3fec954aa0c141c44e4e5cb4cf777b9eab274e", - "STEEM_CHAIN_ID_NAME": "testnet", - "STEEM_COMMENT_REWARD_FUND_NAME": "comment", - "STEEM_CONTENT_APR_PERCENT": 3875, - "STEEM_CONTENT_CONSTANT_HF0": "2000000000000", - "STEEM_CONTENT_REWARD_PERCENT": 7500, - "STEEM_CONVERSION_DELAY": "302400000000", - "STEEM_CONVERSION_DELAY_PRE_HF_16": "604800000000", - "STEEM_CREATE_ACCOUNT_DELEGATION_RATIO": 5, - "STEEM_CREATE_ACCOUNT_DELEGATION_TIME": "2592000000000", - "STEEM_CREATE_ACCOUNT_WITH_STEEM_MODIFIER": 30, - "STEEM_CURATE_APR_PERCENT": 3875, - "STEEM_DEFAULT_SBD_INTEREST_RATE": 1000, - "STEEM_ENABLE_SMT": true, - "STEEM_EQUIHASH_K": 6, - "STEEM_EQUIHASH_N": 140, - "STEEM_FEED_HISTORY_WINDOW": 84, - "STEEM_FEED_HISTORY_WINDOW_PRE_HF_16": 168, - "STEEM_FEED_INTERVAL_BLOCKS": 1200, - "STEEM_GENESIS_TIME": "2016-01-01T00:00:00", - "STEEM_HARDFORK_REQUIRED_WITNESSES": 17, - "STEEM_INFLATION_NARROWING_PERIOD": 250000, - "STEEM_INFLATION_RATE_START_PERCENT": 978, - "STEEM_INFLATION_RATE_STOP_PERCENT": 95, - "STEEM_INITIAL_VOTE_POWER_RATE": 40, - "STEEM_INIT_MINER_NAME": "initminer", - "STEEM_INIT_PUBLIC_KEY_STR": "TST6LLegbAgLAy28EHrffBVuANFWcFgmqRMW13wBmTExqFE9SCkg4", - "STEEM_INIT_SUPPLY": "250000000000", - "STEEM_INIT_TIME": "1970-01-01T00:00:00", - "STEEM_IRREVERSIBLE_THRESHOLD": 7500, - "STEEM_LIQUIDITY_APR_PERCENT": 750, - "STEEM_LIQUIDITY_REWARD_BLOCKS": 1200, - "STEEM_LIQUIDITY_REWARD_PERIOD_SEC": 3600, - "STEEM_LIQUIDITY_TIMEOUT_SEC": "604800000000", - "STEEM_MAX_ACCOUNT_NAME_LENGTH": 16, - "STEEM_MAX_ACCOUNT_WITNESS_VOTES": 30, - "STEEM_MAX_ASSET_WHITELIST_AUTHORITIES": 10, - "STEEM_MAX_AUTHORITY_MEMBERSHIP": 10, - "STEEM_MAX_BLOCK_SIZE": 393216000, - "STEEM_MAX_CASHOUT_WINDOW_SECONDS": 86400, - "STEEM_MAX_COMMENT_DEPTH": 65535, - "STEEM_MAX_COMMENT_DEPTH_PRE_HF17": 6, - "STEEM_MAX_FEED_AGE_SECONDS": 604800, - "STEEM_MAX_INSTANCE_ID": "281474976710655", - "STEEM_MAX_MEMO_SIZE": 2048, - "STEEM_MAX_MINER_WITNESSES_HF0": 1, - "STEEM_MAX_MINER_WITNESSES_HF17": 0, - "STEEM_MAX_PERMLINK_LENGTH": 256, - "STEEM_MAX_PROXY_RECURSION_DEPTH": 4, - "STEEM_MAX_RATION_DECAY_RATE": 1000000, - "STEEM_MAX_RESERVE_RATIO": 20000, - "STEEM_MAX_RUNNER_WITNESSES_HF0": 1, - "STEEM_MAX_RUNNER_WITNESSES_HF17": 1, - "STEEM_MAX_SATOSHIS": "4611686018427387903", - "STEEM_MAX_SHARE_SUPPLY": "1000000000000000", - "STEEM_MAX_SIG_CHECK_DEPTH": 2, - "STEEM_MAX_TIME_UNTIL_EXPIRATION": 3600, - "STEEM_MAX_TRANSACTION_SIZE": 65536, - "STEEM_MAX_UNDO_HISTORY": 10000, - "STEEM_MAX_URL_LENGTH": 127, - "STEEM_MAX_VOTED_WITNESSES_HF0": 19, - "STEEM_MAX_VOTED_WITNESSES_HF17": 20, - "STEEM_MAX_VOTE_CHANGES": 5, - "STEEM_MAX_WITHDRAW_ROUTES": 10, - "STEEM_MAX_WITNESSES": 21, - "STEEM_MAX_WITNESS_URL_LENGTH": 2048, - "STEEM_MINER_ACCOUNT": "miners", - "STEEM_MINER_PAY_PERCENT": 100, - "STEEM_MINING_REWARD": "1.000 TESTS", - "STEEM_MINING_TIME": "2016-01-01T00:00:00", - "STEEM_MIN_ACCOUNT_CREATION_FEE": 0, - "STEEM_MIN_ACCOUNT_NAME_LENGTH": 3, - "STEEM_MIN_BLOCK_SIZE_LIMIT": 65536, - "STEEM_MIN_CONTENT_REWARD": "1.000 TESTS", - "STEEM_MIN_CURATE_REWARD": "1.000 TESTS", - "STEEM_MIN_FEEDS": 7, - "STEEM_MIN_LIQUIDITY_REWARD": "1200.000 TESTS", - "STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC": 60000000, - "STEEM_MIN_PAYOUT_SBD": "0.020 TBD", - "STEEM_MIN_PERMLINK_LENGTH": 0, - "STEEM_MIN_POW_REWARD": "1.000 TESTS", - "STEEM_MIN_PRODUCER_REWARD": "1.000 TESTS", - "STEEM_MIN_REPLY_INTERVAL": 20000000, - "STEEM_MIN_ROOT_COMMENT_INTERVAL": 300000000, - "STEEM_MIN_TRANSACTION_EXPIRATION_LIMIT": 15, - "STEEM_MIN_TRANSACTION_SIZE_LIMIT": 1024, - "STEEM_MIN_UNDO_HISTORY": 10, - "STEEM_MIN_VOTE_INTERVAL_SEC": 3, - "STEEM_NULL_ACCOUNT": "null", - "STEEM_NUM_INIT_MINERS": 1, - "STEEM_OWNER_AUTH_HISTORY_TRACKING_START_BLOCK_NUM": 1, - "STEEM_OWNER_AUTH_RECOVERY_PERIOD": 60000000, - "STEEM_OWNER_CHALLENGE_COOLDOWN": "86400000000", - "STEEM_OWNER_CHALLENGE_FEE": "30.000 TESTS", - "STEEM_OWNER_UPDATE_LIMIT": 0, - "STEEM_POST_AVERAGE_WINDOW": 86400, - "STEEM_POST_REWARD_FUND_NAME": "post", - "STEEM_POST_WEIGHT_CONSTANT": 1600000000, - "STEEM_POW_APR_PERCENT": 750, - "STEEM_PRODUCER_APR_PERCENT": 750, - "STEEM_PROXY_TO_SELF_ACCOUNT": "", - "STEEM_RECENT_RSHARES_DECAY_TIME_HF17": "2592000000000", - "STEEM_RECENT_RSHARES_DECAY_TIME_HF19": "1296000000000", - "STEEM_REDUCED_VOTE_POWER_RATE": 10, - "STEEM_REVERSE_AUCTION_WINDOW_SECONDS": 1800, - "STEEM_ROOT_POST_PARENT": "", - "STEEM_SAVINGS_WITHDRAW_REQUEST_LIMIT": 100, - "STEEM_SAVINGS_WITHDRAW_TIME": "259200000000", - "STEEM_SBD_INTEREST_COMPOUND_INTERVAL_SEC": 2592000, - "STEEM_SBD_START_PERCENT": 200, - "STEEM_SBD_STOP_PERCENT": 500, - "STEEM_SECONDS_PER_YEAR": 31536000, - "STEEM_SECOND_CASHOUT_WINDOW": 259200, - "STEEM_SOFT_MAX_BLOCK_SIZE": 2097152, - "STEEM_SOFT_MAX_COMMENT_DEPTH": 255, - "STEEM_START_MINER_VOTING_BLOCK": 864000, - "STEEM_START_VESTING_BLOCK": 201600, - "STEEM_SYMBOL": "TESTS", - "STEEM_TEMP_ACCOUNT": "temp", - "STEEM_UPVOTE_LOCKOUT_HF17": 300000000, - "STEEM_UPVOTE_LOCKOUT_HF7": 60000000, - "STEEM_VESTING_FUND_PERCENT": 1500, - "STEEM_VESTING_WITHDRAW_INTERVALS": 13, - "STEEM_VESTING_WITHDRAW_INTERVALS_PRE_HF_16": 104, - "STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS": 604800, - "STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH": "18446744073709551615", - "STEEM_VIRTUAL_SCHEDULE_LAP_LENGTH2": "340282366920938463463374607431768211455", - "STEEM_VOTE_DUST_THRESHOLD": 50000000, - "STEEM_VOTE_REGENERATION_SECONDS": 432000, + "SOPHIATX_100_PERCENT": 10000, + "SOPHIATX_1_PERCENT": 100, + "SOPHIATX_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD": 12000000, + "SOPHIATX_ACTIVE_CHALLENGE_COOLDOWN": "86400000000", + "SOPHIATX_ACTIVE_CHALLENGE_FEE": "2.000 TESTS", + "SOPHIATX_ADDRESS_PREFIX": "TST", + "SOPHIATX_APR_PERCENT_MULTIPLY_PER_BLOCK": "102035135585887", + "SOPHIATX_APR_PERCENT_MULTIPLY_PER_HOUR": "119577151364285", + "SOPHIATX_APR_PERCENT_MULTIPLY_PER_ROUND": "133921203762304", + "SOPHIATX_APR_PERCENT_SHIFT_PER_BLOCK": 87, + "SOPHIATX_APR_PERCENT_SHIFT_PER_HOUR": 77, + "SOPHIATX_APR_PERCENT_SHIFT_PER_ROUND": 83, + "SOPHIATX_BANDWIDTH_AVERAGE_WINDOW_SECONDS": 604800, + "SOPHIATX_BANDWIDTH_PRECISION": 1000000, + "SOPHIATX_BLOCKCHAIN_HARDFORK_VERSION": "0.21.0", + "SOPHIATX_BLOCKCHAIN_PRECISION": 1000, + "SOPHIATX_BLOCKCHAIN_PRECISION_DIGITS": 3, + "SOPHIATX_BLOCKCHAIN_VERSION": "0.21.0", + "SOPHIATX_BLOCKS_PER_DAY": 28800, + "SOPHIATX_BLOCKS_PER_HOUR": 1200, + "SOPHIATX_BLOCKS_PER_YEAR": 10512000, + "SOPHIATX_BLOCK_INTERVAL": 3, + "SOPHIATX_CASHOUT_WINDOW_SECONDS": 3600, + "SOPHIATX_CASHOUT_WINDOW_SECONDS_PRE_HF12": 3600, + "SOPHIATX_CASHOUT_WINDOW_SECONDS_PRE_HF17": 3600, + "SOPHIATX_CHAIN_ID": "18dcf0a285365fc58b71f18b3d3fec954aa0c141c44e4e5cb4cf777b9eab274e", + "SOPHIATX_CHAIN_ID_NAME": "testnet", + "SOPHIATX_COMMENT_REWARD_FUND_NAME": "comment", + "SOPHIATX_CONTENT_APR_PERCENT": 3875, + "SOPHIATX_CONTENT_CONSTANT_HF0": "2000000000000", + "SOPHIATX_CONTENT_REWARD_PERCENT": 7500, + "SOPHIATX_CONVERSION_DELAY": "302400000000", + "SOPHIATX_CONVERSION_DELAY_PRE_HF_16": "604800000000", + "SOPHIATX_CREATE_ACCOUNT_DELEGATION_RATIO": 5, + "SOPHIATX_CREATE_ACCOUNT_DELEGATION_TIME": "2592000000000", + "SOPHIATX_CREATE_ACCOUNT_WITH_SOPHIATX_MODIFIER": 30, + "SOPHIATX_CURATE_APR_PERCENT": 3875, + "SOPHIATX_DEFAULT_SBD_INTEREST_RATE": 1000, + "SOPHIATX_ENABLE_SMT": true, + "SOPHIATX_EQUIHASH_K": 6, + "SOPHIATX_EQUIHASH_N": 140, + "SOPHIATX_FEED_HISTORY_WINDOW": 84, + "SOPHIATX_FEED_HISTORY_WINDOW_PRE_HF_16": 168, + "SOPHIATX_FEED_INTERVAL_BLOCKS": 1200, + "SOPHIATX_GENESIS_TIME": "2016-01-01T00:00:00", + "SOPHIATX_HARDFORK_REQUIRED_WITNESSES": 17, + "SOPHIATX_INFLATION_NARROWING_PERIOD": 250000, + "SOPHIATX_INFLATION_RATE_START_PERCENT": 978, + "SOPHIATX_INFLATION_RATE_STOP_PERCENT": 95, + "SOPHIATX_INITIAL_VOTE_POWER_RATE": 40, + "SOPHIATX_INIT_MINER_NAME": "initminer", + "SOPHIATX_INIT_PUBLIC_KEY_STR": "TST6LLegbAgLAy28EHrffBVuANFWcFgmqRMW13wBmTExqFE9SCkg4", + "SOPHIATX_INIT_SUPPLY": "250000000000", + "SOPHIATX_INIT_TIME": "1970-01-01T00:00:00", + "SOPHIATX_IRREVERSIBLE_THRESHOLD": 7500, + "SOPHIATX_LIQUIDITY_APR_PERCENT": 750, + "SOPHIATX_LIQUIDITY_REWARD_BLOCKS": 1200, + "SOPHIATX_LIQUIDITY_REWARD_PERIOD_SEC": 3600, + "SOPHIATX_LIQUIDITY_TIMEOUT_SEC": "604800000000", + "SOPHIATX_MAX_ACCOUNT_NAME_LENGTH": 16, + "SOPHIATX_MAX_ACCOUNT_WITNESS_VOTES": 30, + "SOPHIATX_MAX_ASSET_WHITELIST_AUTHORITIES": 10, + "SOPHIATX_MAX_AUTHORITY_MEMBERSHIP": 10, + "SOPHIATX_MAX_BLOCK_SIZE": 393216000, + "SOPHIATX_MAX_CASHOUT_WINDOW_SECONDS": 86400, + "SOPHIATX_MAX_COMMENT_DEPTH": 65535, + "SOPHIATX_MAX_COMMENT_DEPTH_PRE_HF17": 6, + "SOPHIATX_MAX_FEED_AGE_SECONDS": 604800, + "SOPHIATX_MAX_INSTANCE_ID": "281474976710655", + "SOPHIATX_MAX_MEMO_SIZE": 2048, + "SOPHIATX_MAX_MINER_WITNESSES_HF0": 1, + "SOPHIATX_MAX_MINER_WITNESSES_HF17": 0, + "SOPHIATX_MAX_PERMLINK_LENGTH": 256, + "SOPHIATX_MAX_PROXY_RECURSION_DEPTH": 4, + "SOPHIATX_MAX_RATION_DECAY_RATE": 1000000, + "SOPHIATX_MAX_RESERVE_RATIO": 20000, + "SOPHIATX_MAX_RUNNER_WITNESSES_HF0": 1, + "SOPHIATX_MAX_RUNNER_WITNESSES_HF17": 1, + "SOPHIATX_MAX_SATOSHIS": "4611686018427387903", + "SOPHIATX_MAX_SHARE_SUPPLY": "1000000000000000", + "SOPHIATX_MAX_SIG_CHECK_DEPTH": 2, + "SOPHIATX_MAX_TIME_UNTIL_EXPIRATION": 3600, + "SOPHIATX_MAX_TRANSACTION_SIZE": 65536, + "SOPHIATX_MAX_UNDO_HISTORY": 10000, + "SOPHIATX_MAX_URL_LENGTH": 127, + "SOPHIATX_MAX_VOTED_WITNESSES_HF0": 19, + "SOPHIATX_MAX_VOTED_WITNESSES_HF17": 20, + "SOPHIATX_MAX_VOTE_CHANGES": 5, + "SOPHIATX_MAX_WITHDRAW_ROUTES": 10, + "SOPHIATX_MAX_WITNESSES": 21, + "SOPHIATX_MAX_WITNESS_URL_LENGTH": 2048, + "SOPHIATX_MINER_ACCOUNT": "miners", + "SOPHIATX_MINER_PAY_PERCENT": 100, + "SOPHIATX_MINING_REWARD": "1.000 TESTS", + "SOPHIATX_MINING_TIME": "2016-01-01T00:00:00", + "SOPHIATX_MIN_ACCOUNT_CREATION_FEE": 0, + "SOPHIATX_MIN_ACCOUNT_NAME_LENGTH": 3, + "SOPHIATX_MIN_BLOCK_SIZE_LIMIT": 65536, + "SOPHIATX_MIN_CONTENT_REWARD": "1.000 TESTS", + "SOPHIATX_MIN_CURATE_REWARD": "1.000 TESTS", + "SOPHIATX_MIN_FEEDS": 7, + "SOPHIATX_MIN_LIQUIDITY_REWARD": "1200.000 TESTS", + "SOPHIATX_MIN_LIQUIDITY_REWARD_PERIOD_SEC": 60000000, + "SOPHIATX_MIN_PAYOUT_SBD": "0.020 TBD", + "SOPHIATX_MIN_PERMLINK_LENGTH": 0, + "SOPHIATX_MIN_POW_REWARD": "1.000 TESTS", + "SOPHIATX_MIN_PRODUCER_REWARD": "1.000 TESTS", + "SOPHIATX_MIN_REPLY_INTERVAL": 20000000, + "SOPHIATX_MIN_ROOT_COMMENT_INTERVAL": 300000000, + "SOPHIATX_MIN_TRANSACTION_EXPIRATION_LIMIT": 15, + "SOPHIATX_MIN_TRANSACTION_SIZE_LIMIT": 1024, + "SOPHIATX_MIN_UNDO_HISTORY": 10, + "SOPHIATX_MIN_VOTE_INTERVAL_SEC": 3, + "SOPHIATX_NULL_ACCOUNT": "null", + "SOPHIATX_NUM_INIT_MINERS": 1, + "SOPHIATX_OWNER_AUTH_HISTORY_TRACKING_START_BLOCK_NUM": 1, + "SOPHIATX_OWNER_AUTH_RECOVERY_PERIOD": 60000000, + "SOPHIATX_OWNER_CHALLENGE_COOLDOWN": "86400000000", + "SOPHIATX_OWNER_CHALLENGE_FEE": "30.000 TESTS", + "SOPHIATX_OWNER_UPDATE_LIMIT": 0, + "SOPHIATX_POST_AVERAGE_WINDOW": 86400, + "SOPHIATX_POST_REWARD_FUND_NAME": "post", + "SOPHIATX_POST_WEIGHT_CONSTANT": 1600000000, + "SOPHIATX_POW_APR_PERCENT": 750, + "SOPHIATX_PRODUCER_APR_PERCENT": 750, + "SOPHIATX_PROXY_TO_SELF_ACCOUNT": "", + "SOPHIATX_RECENT_RSHARES_DECAY_TIME_HF17": "2592000000000", + "SOPHIATX_RECENT_RSHARES_DECAY_TIME_HF19": "1296000000000", + "SOPHIATX_REDUCED_VOTE_POWER_RATE": 10, + "SOPHIATX_REVERSE_AUCTION_WINDOW_SECONDS": 1800, + "SOPHIATX_ROOT_POST_PARENT": "", + "SOPHIATX_SAVINGS_WITHDRAW_REQUEST_LIMIT": 100, + "SOPHIATX_SAVINGS_WITHDRAW_TIME": "259200000000", + "SOPHIATX_SBD_INTEREST_COMPOUND_INTERVAL_SEC": 2592000, + "SOPHIATX_SBD_START_PERCENT": 200, + "SOPHIATX_SBD_STOP_PERCENT": 500, + "SOPHIATX_SECONDS_PER_YEAR": 31536000, + "SOPHIATX_SECOND_CASHOUT_WINDOW": 259200, + "SOPHIATX_SOFT_MAX_BLOCK_SIZE": 2097152, + "SOPHIATX_SOFT_MAX_COMMENT_DEPTH": 255, + "SOPHIATX_START_MINER_VOTING_BLOCK": 864000, + "SOPHIATX_START_VESTING_BLOCK": 201600, + "SOPHIATX_SYMBOL": "TESTS", + "SOPHIATX_TEMP_ACCOUNT": "temp", + "SOPHIATX_UPVOTE_LOCKOUT_HF17": 300000000, + "SOPHIATX_UPVOTE_LOCKOUT_HF7": 60000000, + "SOPHIATX_VESTING_FUND_PERCENT": 1500, + "SOPHIATX_VESTING_WITHDRAW_INTERVALS": 13, + "SOPHIATX_VESTING_WITHDRAW_INTERVALS_PRE_HF_16": 104, + "SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS": 604800, + "SOPHIATX_VIRTUAL_SCHEDULE_LAP_LENGTH": "18446744073709551615", + "SOPHIATX_VIRTUAL_SCHEDULE_LAP_LENGTH2": "340282366920938463463374607431768211455", + "SOPHIATX_VOTE_DUST_THRESHOLD": 50000000, + "SOPHIATX_VOTE_REGENERATION_SECONDS": 432000, "VESTS_SYMBOL": "VESTS" -} \ No newline at end of file +} diff --git a/python_scripts/tests/api_tests/database_api/get_dynamic_global_properties.json.pat b/python_scripts/tests/api_tests/database_api/get_dynamic_global_properties.json.pat index 5f510f07..ad70fa6d 100644 --- a/python_scripts/tests/api_tests/database_api/get_dynamic_global_properties.json.pat +++ b/python_scripts/tests/api_tests/database_api/get_dynamic_global_properties.json.pat @@ -13,17 +13,16 @@ "num_pow_witnesses": 0, "participation_count": 128, "pending_rewarded_vesting_shares": "0.000000 VESTS", - "pending_rewarded_vesting_steem": "0.000 TESTS", + "pending_rewarded_vesting_sophiatx": "0.000 TESTS", "recent_slots_filled": "340282366920938463463374607431768211455", "sbd_interest_rate": 0, "sbd_print_rate": 10000, "smt_creation_fee": "1000.000 TBD", "time": "2016-01-01T00:00:00", "total_pow": "18446744073709551615", - "total_reward_fund_steem": "0.000 TESTS", + "total_reward_fund_sophiatx": "0.000 TESTS", "total_reward_shares2": "0", - "total_vesting_fund_steem": "0.000 TESTS", + "total_vesting_fund_sophiatx": "0.000 TESTS", "total_vesting_shares": "0.000000 VESTS", - "virtual_supply": "0.000 TESTS", "vote_power_reserve_rate": 40 -} \ No newline at end of file +} diff --git a/python_scripts/tests/api_tests/run_api_tests.sh b/python_scripts/tests/api_tests/run_api_tests.sh index df98bb3c..a2a39d66 100755 --- a/python_scripts/tests/api_tests/run_api_tests.sh +++ b/python_scripts/tests/api_tests/run_api_tests.sh @@ -18,7 +18,7 @@ fi echo COMPARATOR: $COMPARATOR pyresttest $NODE:$RPC_PORT ./basic_smoketest.yaml -[ $? -ne 0 ] && echo FATAL: steemd not running? && exit -1 +[ $? -ne 0 ] && echo FATAL: sophiatxd not running? && exit -1 pyresttest $NODE:$RPC_PORT ./database_api/database_api_test.yaml --import_extensions='validator_ex;'$COMPARATOR [ $? -ne 0 ] && EXIT_CODE=-1 diff --git a/python_scripts/tests/debug_hardforks.py b/python_scripts/tests/debug_hardforks.py index 44047fb3..1d2c9e58 100644 --- a/python_scripts/tests/debug_hardforks.py +++ b/python_scripts/tests/debug_hardforks.py @@ -9,8 +9,8 @@ from time import sleep # local imports -from steemdebugnode import DebugNode -from steemapi.steemnoderpc import SteemNodeRPC +from sophiatxdebugnode import DebugNode +from sophiatxapi.sophiatxnoderpc import SophiaTXNodeRPC WAITING = True @@ -20,9 +20,9 @@ def main( ): print( "This script only works on POSIX systems" ) return - parser = ArgumentParser( description='Run a steemd debug node on an existing chain, trigger a hardfork' \ + parser = ArgumentParser( description='Run a sophiatxd debug node on an existing chain, trigger a hardfork' \ ' and verify hardfork does not break invariants or block production' ) - parser.add_argument( '--steemd', '-s', type=str, required=True, help='The location of a steemd binary to run the debug node' ) + parser.add_argument( '--sophiatxd', '-s', type=str, required=True, help='The location of a sophiatxd binary to run the debug node' ) parser.add_argument( '--data-dir', '-d', type=str, required=True, help='The location of an existing data directory. ' + \ 'The debug node will pull blocks from this directory when replaying the chain. The directory ' + \ 'will not be changed.' ) @@ -31,19 +31,19 @@ def main( ): args = parser.parse_args() - steemd = Path( args.steemd ) - if( not steemd.exists() ): - print( 'Error: steemd does not exist.' ) + sophiatxd = Path( args.sophiatxd ) + if( not sophiatxd.exists() ): + print( 'Error: sophiatxd does not exist.' ) return - steemd = steemd.resolve() - if( not steemd.is_file() ): - print( 'Error: steemd is not a file.' ) + sophiatxd = sophiatxd.resolve() + if( not sophiatxd.is_file() ): + print( 'Error: sophiatxd is not a file.' ) return data_dir = Path( args.data_dir ) if( not data_dir.exists() ): - print( 'Error: data_dir does not exist or is not a properly constructed steemd data directory' ) + print( 'Error: data_dir does not exist or is not a properly constructed sophiatxd data directory' ) data_dir = data_dir.resolve() if( not data_dir.is_dir() ): @@ -51,11 +51,11 @@ def main( ): signal.signal( signal.SIGINT, sigint_handler ) - debug_node = DebugNode( str( steemd ), str( data_dir ) ) + debug_node = DebugNode( str( sophiatxd ), str( data_dir ) ) with debug_node : - run_steemd_tests( debug_node ) + run_sophiatxd_tests( debug_node ) if( args.pause_node ): print( "Letting the node hang for manual inspection..." ) @@ -66,8 +66,8 @@ def main( ): sleep( 1 ) -def run_steemd_tests( debug_node ): - from steemapi.steemnoderpc import SteemNodeRPC +def run_sophiatxd_tests( debug_node ): + from sophiatxapi.sophiatxnoderpc import SophiaTXNodeRPC try: print( 'Replaying blocks...', ) @@ -99,4 +99,4 @@ def sigint_handler( signum, frame ): sleep( 3 ) sys.exit( 0 ) -main() \ No newline at end of file +main() diff --git a/python_scripts/tests/test_payouts.py b/python_scripts/tests/test_payouts.py index 7f92d7e4..904f3430 100644 --- a/python_scripts/tests/test_payouts.py +++ b/python_scripts/tests/test_payouts.py @@ -9,8 +9,8 @@ from time import sleep # local imports -from steemdebugnode import DebugNode -from steemapi.steemnoderpc import SteemNodeRPC +from sophiatxdebugnode import DebugNode +from sophiatxapi.sophiatxnoderpc import SophiaTXNodeRPC WAITING = True @@ -20,9 +20,9 @@ def main( ): print( "This script only works on POSIX systems" ) return - parser = ArgumentParser( description='Run a steemd debug node on an existing chain, trigger a hardfork' \ + parser = ArgumentParser( description='Run a sophiatxd debug node on an existing chain, trigger a hardfork' \ ' and verify hardfork does not break invariants or block production' ) - parser.add_argument( '--steemd', '-s', type=str, required=True, help='The location of a steemd binary to run the debug node' ) + parser.add_argument( '--sophiatxd', '-s', type=str, required=True, help='The location of a sophiatxd binary to run the debug node' ) parser.add_argument( '--data-dir', '-d', type=str, required=True, help='The location of an existing data directory. ' + \ 'The debug node will pull blocks from this directory when replaying the chain. The directory ' + \ 'will not be changed.' ) @@ -31,19 +31,19 @@ def main( ): args = parser.parse_args() - steemd = Path( args.steemd ) - if( not steemd.exists() ): - print( 'Error: steemd does not exist.' ) + sophiatxd = Path( args.sophiatxd ) + if( not sophiatxd.exists() ): + print( 'Error: sophiatxd does not exist.' ) return - steemd = steemd.resolve() - if( not steemd.is_file() ): - print( 'Error: steemd is not a file.' ) + sophiatxd = sophiatxd.resolve() + if( not sophiatxd.is_file() ): + print( 'Error: sophiatxd is not a file.' ) return data_dir = Path( args.data_dir ) if( not data_dir.exists() ): - print( 'Error: data_dir does not exist or is not a properly constructed steemd data directory' ) + print( 'Error: data_dir does not exist or is not a properly constructed sophiatxd data directory' ) data_dir = data_dir.resolve() if( not data_dir.is_dir() ): @@ -51,11 +51,11 @@ def main( ): signal.signal( signal.SIGINT, sigint_handler ) - debug_node = DebugNode( str( steemd ), str( data_dir ), steemd_err=sys.stderr ) + debug_node = DebugNode( str( sophiatxd ), str( data_dir ), sophiatxd_err=sys.stderr ) with debug_node : - run_steemd_tests( debug_node ) + run_sophiatxd_tests( debug_node ) if( args.pause_node ): print( "Letting the node hang for manual inspection..." ) @@ -66,8 +66,8 @@ def main( ): sleep( 1 ) -def run_steemd_tests( debug_node ): - from steemapi.steemnoderpc import SteemNodeRPC +def run_sophiatxd_tests( debug_node ): + from sophiatxapi.sophiatxnoderpc import SophiaTXNodeRPC try: print( 'Replaying blocks...', ) @@ -81,7 +81,7 @@ def run_steemd_tests( debug_node ): print( "Triggering payouts" ) sys.stdout.flush() debug_node.debug_generate_blocks_until( 1467590400 - 3 ) - rpc = SteemNodeRPC( 'ws://127.0.0.1:8095', '', '' ) + rpc = SophiaTXNodeRPC( 'ws://127.0.0.1:8095', '', '' ) ret = rpc.lookup_accounts( '', str( 0xFFFFFFFF ) ) debug_node.debug_generate_blocks( 1 ) @@ -114,7 +114,7 @@ def run_steemd_tests( debug_node ): ''' print( "Printing account reward dump:" ) sorted_rewards = sorted( account_rewards.items(), key=operator.itemgetter(1) ) - print( "account, curation_steem" ) + print( "account, curation_sophiatx" ) for rew in sorted_rewards: print( rew[0] + ', ' + str( rew[1] ) + ', ' + str( vote_count[ rew[0] ] ) ) @@ -128,4 +128,4 @@ def sigint_handler( signum, frame ): sleep( 3 ) sys.exit( 0 ) -main() \ No newline at end of file +main() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 0547a1e4..52f5bb08 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -8,11 +8,11 @@ endif() file(GLOB UNIT_TESTS "tests/*.cpp") add_executable( chain_test ${UNIT_TESTS} ) -target_link_libraries( chain_test db_fixture chainbase steem_chain steem_protocol account_history_plugin market_history_plugin witness_plugin debug_node_plugin fc ${PLATFORM_SPECIFIC_LIBS} ) +target_link_libraries( chain_test db_fixture chainbase sophiatx_chain sophiatx_protocol account_history_plugin witness_plugin debug_node_plugin fc ${PLATFORM_SPECIFIC_LIBS} ) file(GLOB PLUGIN_TESTS "plugin_tests/*.cpp") add_executable( plugin_test ${PLUGIN_TESTS} ) -target_link_libraries( plugin_test db_fixture steem_chain steem_protocol account_history_plugin market_history_plugin witness_plugin debug_node_plugin fc ${PLATFORM_SPECIFIC_LIBS} ) +target_link_libraries( plugin_test db_fixture sophiatx_chain sophiatx_protocol account_history_plugin witness_plugin debug_node_plugin fc ${PLATFORM_SPECIFIC_LIBS} ) if(MSVC) set_source_files_properties( tests/serialization_tests.cpp PROPERTIES COMPILE_FLAGS "/bigobj" ) diff --git a/tests/README.md b/tests/README.md index 86b58be1..04893d36 100644 --- a/tests/README.md +++ b/tests/README.md @@ -5,7 +5,7 @@ From the root of the repository: docker build --rm=false \ - -t steemitinc/ci-test-environment:latest \ + -t sophiatx/ci-test-environment:latest \ -f tests/scripts/Dockerfile.testenv . ## To Run The Tests @@ -13,13 +13,13 @@ From the root of the repository: (Also in the root of the repository.) docker build --rm=false \ - -t steemitinc/steem-test \ + -t sophiatx/sophiatx-test \ -f Dockerfile.test . ## To Troubleshoot Failing Tests docker run -ti \ - steemitinc/ci-test-environment:latest \ + sophiatx/ci-test-environment:latest \ /bin/bash Then, inside the container: @@ -27,21 +27,21 @@ Then, inside the container: (These steps are taken from `/Dockerfile.test` in the repository root.) - git clone https://github.com/steemit/steem.git \ - /usr/local/src/steem - cd /usr/local/src/steem + git clone https://github.com/SophiaTX/SophiaTX.git \ + /usr/local/src/sophiatx + cd /usr/local/src/sophiatx git checkout # e.g. 123-feature git submodule update --init --recursive mkdir build cd build cmake \ -DCMAKE_BUILD_TYPE=Debug \ - -DBUILD_STEEM_TESTNET=ON \ + -DBUILD_SOPHIATX_TESTNET=ON \ -DLOW_MEMORY_NODE=OFF \ -DCLEAR_VOTES=ON \ .. make -j$(nproc) chain_test ./tests/chain_test - cd /usr/local/src/steem + cd /usr/local/src/sophiatx doxygen programs/build_helpers/check_reflect.py diff --git a/tests/db_fixture/CMakeLists.txt b/tests/db_fixture/CMakeLists.txt index 172e02e6..cc9619ff 100644 --- a/tests/db_fixture/CMakeLists.txt +++ b/tests/db_fixture/CMakeLists.txt @@ -12,10 +12,9 @@ add_library(db_fixture ${HEADERS}) target_link_libraries(db_fixture - steem_chain - steem_protocol + sophiatx_chain + sophiatx_protocol account_history_plugin - market_history_plugin block_api_plugin database_api_plugin webserver_plugin diff --git a/tests/db_fixture/database_fixture.cpp b/tests/db_fixture/database_fixture.cpp index 5a67dbd8..83134143 100644 --- a/tests/db_fixture/database_fixture.cpp +++ b/tests/db_fixture/database_fixture.cpp @@ -1,15 +1,15 @@ #include #include -#include +#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -20,16 +20,19 @@ #include "database_fixture.hpp" -//using namespace steem::chain::test; +//using namespace sophiatx::chain::test; -uint32_t STEEM_TESTING_GENESIS_TIMESTAMP = 1431700000; +uint32_t SOPHIATX_TESTING_GENESIS_TIMESTAMP = 1431700000; -using namespace steem::plugins::webserver; -using namespace steem::plugins::database_api; -using namespace steem::plugins::block_api; -using steem::plugins::condenser_api::condenser_api_plugin; +using namespace sophiatx::plugins::webserver; +using namespace sophiatx::plugins::database_api; +using namespace sophiatx::plugins::block_api; +using sophiatx::plugins::condenser_api::condenser_api_plugin; -namespace steem { namespace chain { + +#define DUMP( x ) {fc::variant vo; fc::to_variant( x , vo); std::cout<< fc::json::to_string(vo) <<"\n";} + +namespace sophiatx { namespace chain { using std::cout; using std::cerr; @@ -48,39 +51,53 @@ clean_database_fixture::clean_database_fixture() std::cout << "running test " << boost::unit_test::framework::current_test_case().p_name << std::endl; } - appbase::app().register_plugin< steem::plugins::account_history::account_history_plugin >(); - db_plugin = &appbase::app().register_plugin< steem::plugins::debug_node::debug_node_plugin >(); - appbase::app().register_plugin< steem::plugins::witness::witness_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::account_history::account_history_plugin >(); + db_plugin = &appbase::app().register_plugin< sophiatx::plugins::debug_node::debug_node_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::witness::witness_plugin >(); db_plugin->logging = false; appbase::app().initialize< - steem::plugins::account_history::account_history_plugin, - steem::plugins::debug_node::debug_node_plugin, - steem::plugins::witness::witness_plugin + sophiatx::plugins::account_history::account_history_plugin, + sophiatx::plugins::debug_node::debug_node_plugin, + sophiatx::plugins::witness::witness_plugin >( argc, argv ); - db = &appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db(); + db = &appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db(); BOOST_REQUIRE( db ); init_account_pub_key = init_account_priv_key.get_public_key(); open_database(); + db->modify( db->get_witness( "initminer" ), [&]( witness_object& a ) + { + a.signing_key = init_account_pub_key; + }); + db->modify( db->get< account_authority_object, by_account >( "initminer" ), [&]( account_authority_object& a ) + { + a.active.add_authority(init_account_pub_key, 1); + a.owner.add_authority(init_account_pub_key, 1); + }); generate_block(); - db->set_hardfork( STEEM_BLOCKCHAIN_VERSION.minor() ); + db->set_hardfork( SOPHIATX_BLOCKCHAIN_VERSION.minor() ); generate_block(); - vest( "initminer", 10000 ); - // Fill up the rest of the required miners - for( int i = STEEM_NUM_INIT_MINERS; i < STEEM_MAX_WITNESSES; i++ ) + vest( "initminer", SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + + validate_database(); + + // Fill up the rest of the required miners + for( int i = SOPHIATX_NUM_INIT_MINERS; i < SOPHIATX_MAX_WITNESSES; i++ ) { - account_create( STEEM_INIT_MINER_NAME + fc::to_string( i ), init_account_pub_key ); - fund( STEEM_INIT_MINER_NAME + fc::to_string( i ), STEEM_MIN_PRODUCER_REWARD.amount.value ); - witness_create( STEEM_INIT_MINER_NAME + fc::to_string( i ), init_account_priv_key, "foo.bar", init_account_pub_key, STEEM_MIN_PRODUCER_REWARD.amount ); + account_create( SOPHIATX_INIT_MINER_NAME + fc::to_string( i ), init_account_pub_key ); + fund( AN(SOPHIATX_INIT_MINER_NAME + fc::to_string( i )), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + vest( AN(SOPHIATX_INIT_MINER_NAME + fc::to_string( i )), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + witness_create( AN(SOPHIATX_INIT_MINER_NAME + fc::to_string( i )), init_account_priv_key, "foo.bar", init_account_pub_key, 0 ); } validate_database(); + } catch ( const fc::exception& e ) { edump( (e.to_detail_string()) ); @@ -102,7 +119,7 @@ clean_database_fixture::~clean_database_fixture() if( data_dir ) db->wipe( data_dir->path(), data_dir->path(), true ); return; -} FC_CAPTURE_AND_LOG( () ) +} FC_CAPTURE_AND_LOG( (data_dir->path()) ) exit(1); } @@ -122,29 +139,40 @@ void clean_database_fixture::resize_shared_mem( uint64_t size ) init_account_pub_key = init_account_priv_key.get_public_key(); { + genesis_state_type gen; + gen.genesis_time = fc::time_point::now(); database::open_args args; args.data_dir = data_dir->path(); args.shared_mem_dir = args.data_dir; - args.initial_supply = INITIAL_TEST_SUPPLY; args.shared_file_size = size; - db->open( args ); + db->open( args, gen ); } + db->modify( db->get_witness( "initminer" ), [&]( witness_object& a ) + { + a.signing_key = init_account_pub_key; + }); + db->modify( db->get< account_authority_object, by_account >( "initminer" ), [&]( account_authority_object& a ) + { + a.active.add_authority(init_account_pub_key, 1); + a.owner.add_authority(init_account_pub_key, 1); + }); boost::program_options::variables_map options; generate_block(); - db->set_hardfork( STEEM_BLOCKCHAIN_VERSION.minor() ); + db->set_hardfork( SOPHIATX_BLOCKCHAIN_VERSION.minor() ); generate_block(); - vest( "initminer", 10000 ); + vest( "initminer", SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); // Fill up the rest of the required miners - for( int i = STEEM_NUM_INIT_MINERS; i < STEEM_MAX_WITNESSES; i++ ) + for( int i = SOPHIATX_NUM_INIT_MINERS; i < SOPHIATX_MAX_WITNESSES; i++ ) { - account_create( STEEM_INIT_MINER_NAME + fc::to_string( i ), init_account_pub_key ); - fund( STEEM_INIT_MINER_NAME + fc::to_string( i ), STEEM_MIN_PRODUCER_REWARD.amount.value ); - witness_create( STEEM_INIT_MINER_NAME + fc::to_string( i ), init_account_priv_key, "foo.bar", init_account_pub_key, STEEM_MIN_PRODUCER_REWARD.amount ); + account_create( SOPHIATX_INIT_MINER_NAME + fc::to_string( i ), init_account_pub_key ); + fund( AN(SOPHIATX_INIT_MINER_NAME + fc::to_string( i )), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + vest( AN(SOPHIATX_INIT_MINER_NAME + fc::to_string( i )), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + witness_create( AN(SOPHIATX_INIT_MINER_NAME + fc::to_string( i )), init_account_priv_key, "foo.bar", init_account_pub_key, 0 ); } validate_database(); @@ -161,19 +189,23 @@ live_database_fixture::live_database_fixture() _chain_dir = fc::current_path() / "test_blockchain"; FC_ASSERT( fc::exists( _chain_dir ), "Requires blockchain to test on in ./test_blockchain" ); - appbase::app().register_plugin< steem::plugins::account_history::account_history_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::account_history::account_history_plugin >(); + db_plugin = &appbase::app().register_plugin< sophiatx::plugins::debug_node::debug_node_plugin >(); + appbase::app().initialize< - steem::plugins::account_history::account_history_plugin + sophiatx::plugins::account_history::account_history_plugin, sophiatx::plugins::debug_node::debug_node_plugin >( argc, argv ); - db = &appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db(); + db = &appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db(); BOOST_REQUIRE( db ); { + genesis_state_type gen; + gen.genesis_time = fc::time_point::now(); database::open_args args; args.data_dir = _chain_dir; args.shared_mem_dir = args.data_dir; - db->open( args ); + db->open( args, gen ); } validate_database(); @@ -199,7 +231,7 @@ live_database_fixture::~live_database_fixture() db->close(); return; } - FC_CAPTURE_AND_LOG( () ) + FC_CAPTURE_AND_LOG( (data_dir->path()) ) exit(1); } @@ -217,17 +249,11 @@ asset_symbol_type database_fixture::name_to_asset_symbol( const std::string& nam // Example: // alice -> sha256(alice) -> 2bd806c9... -> 2bd806c9 -> low 27 bits is 64489161 -> add check digit -> @@644891612 - uint32_t h0 = (boost::endian::native_to_big( fc::sha256::hash( name )._hash[0] ) >> 32) & 0x7FFFFFF; - FC_ASSERT( decimal_places <= STEEM_ASSET_MAX_DECIMALS, "Invalid decimal_places" ); - while( h0 > SMT_MAX_NAI ) - h0 -= SMT_MAX_NAI; - while( h0 < SMT_MIN_NAI ) - h0 += SMT_MIN_NAI; - uint32_t asset_num = (h0 << 5) | 0x10 | decimal_places; - return asset_symbol_type::from_asset_num( asset_num ); + return asset_symbol_type::from_string(name); + } -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT asset_symbol_type database_fixture::get_new_smt_symbol( uint8_t token_decimal_places, chain::database* db ) { // The list of available nais is not dependent on SMT desired precision (token_decimal_places). @@ -250,22 +276,24 @@ void database_fixture::open_database() { if( !data_dir ) { - data_dir = fc::temp_directory( steem::utilities::temp_directory_path() ); + data_dir = fc::temp_directory( sophiatx::utilities::temp_directory_path() ); db->_log_hardforks = false; + genesis_state_type gen; + gen.genesis_time = fc::time_point::now(); + database::open_args args; args.data_dir = data_dir->path(); args.shared_mem_dir = args.data_dir; - args.initial_supply = INITIAL_TEST_SUPPLY; - args.shared_file_size = 1024 * 1024 * 8; // 8MB file for testing - db->open(args); + args.shared_file_size = 1024 * 1024 * 256; // 8MB file for testing + db->open(args, gen); } } void database_fixture::generate_block(uint32_t skip, const fc::ecc::private_key& key, int miss_blocks) { skip |= default_skip; - db_plugin->debug_generate_blocks( steem::utilities::key_to_wif( key ), 1, skip, miss_blocks ); + db_plugin->debug_generate_blocks( sophiatx::utilities::key_to_wif( key ), 1, skip, miss_blocks ); } void database_fixture::generate_blocks( uint32_t block_count ) @@ -277,7 +305,7 @@ void database_fixture::generate_blocks( uint32_t block_count ) void database_fixture::generate_blocks(fc::time_point_sec timestamp, bool miss_intermediate_blocks) { db_plugin->debug_generate_blocks_until( debug_key, timestamp, miss_intermediate_blocks, default_skip ); - BOOST_REQUIRE( ( db->head_block_time() - timestamp ).to_seconds() < STEEM_BLOCK_INTERVAL ); + BOOST_REQUIRE( ( db->head_block_time() - timestamp ).to_seconds() < SOPHIATX_BLOCK_INTERVAL ); } const account_object& database_fixture::account_create( @@ -286,32 +314,30 @@ const account_object& database_fixture::account_create( const private_key_type& creator_key, const share_type& fee, const public_key_type& key, - const public_key_type& post_key, const string& json_metadata ) { try { account_create_operation op; - op.new_account_name = name; + op.name_seed = name; op.creator = creator; - op.fee = asset( fee, STEEM_SYMBOL ); + op.fee = asset( fee, SOPHIATX_SYMBOL ); op.owner = authority( 1, key, 1 ); op.active = authority( 1, key, 1 ); - op.posting = authority( 1, post_key, 1 ); op.memo_key = key; op.json_metadata = json_metadata; trx.operations.push_back( op ); - trx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + trx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); trx.sign( creator_key, db->get_chain_id() ); trx.validate(); db->push_transaction( trx, 0 ); trx.operations.clear(); trx.signatures.clear(); - const account_object& acct = db->get_account( name ); + const account_object& acct = db->get_account( AN(name) ); return acct; } @@ -320,31 +346,22 @@ const account_object& database_fixture::account_create( const account_object& database_fixture::account_create( const string& name, - const public_key_type& key, - const public_key_type& post_key + const public_key_type& key ) { try { return account_create( name, - STEEM_INIT_MINER_NAME, + SOPHIATX_INIT_MINER_NAME, init_account_priv_key, - std::max( db->get_witness_schedule_object().median_props.account_creation_fee.amount * STEEM_CREATE_ACCOUNT_WITH_STEEM_MODIFIER, share_type( 100 ) ), + std::max( db->get_witness_schedule_object().median_props.account_creation_fee.amount, share_type( 100 ) ), key, - post_key, "" ); } FC_CAPTURE_AND_RETHROW( (name) ); } -const account_object& database_fixture::account_create( - const string& name, - const public_key_type& key -) -{ - return account_create( name, key, key ); -} const witness_object& database_fixture::witness_create( const string& owner, @@ -359,10 +376,10 @@ const witness_object& database_fixture::witness_create( op.owner = owner; op.url = url; op.block_signing_key = signing_key; - op.fee = asset( fee, STEEM_SYMBOL ); + op.fee = asset( fee, SOPHIATX_SYMBOL ); trx.operations.push_back( op ); - trx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + trx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); trx.sign( owner_key, db->get_chain_id() ); trx.validate(); db->push_transaction( trx, 0 ); @@ -381,7 +398,7 @@ void database_fixture::fund( { try { - transfer( STEEM_INIT_MINER_NAME, account_name, asset( amount, STEEM_SYMBOL ) ); + transfer( SOPHIATX_INIT_MINER_NAME, account_name, asset( amount, SOPHIATX_SYMBOL ) ); } FC_CAPTURE_AND_RETHROW( (account_name)(amount) ) } @@ -395,72 +412,25 @@ void database_fixture::fund( { db_plugin->debug_update( [=]( database& db) { - if( amount.symbol.space() == asset_symbol_type::smt_nai_space ) - { - db.adjust_balance(account_name, amount); - db.adjust_supply(amount); - // Note that SMT have no equivalent of SBD, hence no virtual supply, hence no need to update it. - return; - } - db.modify( db.get_account( account_name ), [&]( account_object& a ) { - if( amount.symbol == STEEM_SYMBOL ) + if( amount.symbol == SOPHIATX_SYMBOL ) a.balance += amount; - else if( amount.symbol == SBD_SYMBOL ) - { - a.sbd_balance += amount; - a.sbd_seconds_last_update = db.head_block_time(); - } }); db.modify( db.get_dynamic_global_properties(), [&]( dynamic_global_property_object& gpo ) { - if( amount.symbol == STEEM_SYMBOL ) + if( amount.symbol == SOPHIATX_SYMBOL ) gpo.current_supply += amount; - else if( amount.symbol == SBD_SYMBOL ) - gpo.current_sbd_supply += amount; + }); - if( amount.symbol == SBD_SYMBOL ) - { - const auto& median_feed = db.get_feed_history(); - if( median_feed.current_median_history.is_null() ) - db.modify( median_feed, [&]( feed_history_object& f ) - { - f.current_median_history = price( asset( 1, SBD_SYMBOL ), asset( 1, STEEM_SYMBOL ) ); - }); - } - - db.update_virtual_supply(); + }, default_skip ); } FC_CAPTURE_AND_RETHROW( (account_name)(amount) ) } -void database_fixture::convert( - const string& account_name, - const asset& amount ) -{ - try - { - if ( amount.symbol == STEEM_SYMBOL ) - { - db->adjust_balance( account_name, -amount ); - db->adjust_balance( account_name, db->to_sbd( amount ) ); - db->adjust_supply( -amount ); - db->adjust_supply( db->to_sbd( amount ) ); - } - else if ( amount.symbol == SBD_SYMBOL ) - { - db->adjust_balance( account_name, -amount ); - db->adjust_balance( account_name, db->to_steem( amount ) ); - db->adjust_supply( -amount ); - db->adjust_supply( db->to_steem( amount ) ); - } - } FC_CAPTURE_AND_RETHROW( (account_name)(amount) ) -} - void database_fixture::transfer( const string& from, const string& to, @@ -472,48 +442,40 @@ void database_fixture::transfer( op.from = from; op.to = to; op.amount = amount; + op.fee = asset(100000, SOPHIATX_SYMBOL); trx.operations.push_back( op ); - trx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + trx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); trx.validate(); db->push_transaction( trx, ~0 ); trx.operations.clear(); } FC_CAPTURE_AND_RETHROW( (from)(to)(amount) ) } -void database_fixture::vest( const string& from, const share_type& amount ) +void database_fixture::vest( const string& account_name, const share_type& amount ) { - try - { - transfer_to_vesting_operation op; - op.from = from; - op.to = ""; - op.amount = asset( amount, STEEM_SYMBOL ); - trx.operations.push_back( op ); - trx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - trx.validate(); - db->push_transaction( trx, ~0 ); - trx.operations.clear(); - } FC_CAPTURE_AND_RETHROW( (from)(amount) ) + vest(account_name, asset(amount, SOPHIATX_SYMBOL)); } -void database_fixture::vest( const string& account, const asset& amount ) +void database_fixture::vest( const string& account_name, const asset& amount ) { - if( amount.symbol != STEEM_SYMBOL ) + if( amount.symbol != SOPHIATX_SYMBOL ) return; - db_plugin->debug_update( [=]( database& db ) + try { - db.modify( db.get_dynamic_global_properties(), [&]( dynamic_global_property_object& gpo ) - { - gpo.current_supply += amount; - }); - - db.create_vesting( db.get_account( account ), amount ); + transfer_to_vesting_operation op; + op.from = account_name; + op.to = account_name; + op.amount = amount; + trx.operations.push_back( op ); + trx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + trx.validate(); - db.update_virtual_supply(); - }, default_skip ); + db->push_transaction( trx, ~0 ); + trx.operations.clear(); + } FC_CAPTURE_AND_RETHROW( (account_name)(amount) ) } void database_fixture::proxy( const string& account, const string& proxy ) @@ -524,6 +486,8 @@ void database_fixture::proxy( const string& account, const string& proxy ) op.account = account; op.proxy = proxy; trx.operations.push_back( op ); + trx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + db->push_transaction( trx, ~0 ); trx.operations.clear(); } FC_CAPTURE_AND_RETHROW( (account)(proxy) ) @@ -532,14 +496,13 @@ void database_fixture::proxy( const string& account, const string& proxy ) void database_fixture::set_price_feed( const price& new_price ) { flat_map< string, vector< char > > props; - props[ "sbd_exchange_rate" ] = fc::raw::pack_to_vector( new_price ); + vector new_prices; + new_prices.push_back(new_price); + props[ "exchange_rates" ] = fc::raw::pack_to_vector( new_prices ); set_witness_props( props ); BOOST_REQUIRE( -#ifdef IS_TEST_NET - !db->skip_price_feed_limit_check || -#endif db->get(feed_history_id_type()).current_median_history == new_price ); } @@ -549,7 +512,7 @@ void database_fixture::set_witness_props( const flat_map< string, vector< char > for( size_t i = 1; i < 8; i++ ) { witness_set_properties_operation op; - op.owner = STEEM_INIT_MINER_NAME + fc::to_string( i ); + op.owner = AN(SOPHIATX_INIT_MINER_NAME + fc::to_string( i )); op.props = props; if( op.props.find( "key" ) == op.props.end() ) @@ -558,17 +521,17 @@ void database_fixture::set_witness_props( const flat_map< string, vector< char > } trx.operations.push_back( op ); - trx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + trx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); db->push_transaction( trx, ~0 ); trx.operations.clear(); } - generate_blocks( STEEM_BLOCKS_PER_HOUR ); + generate_blocks( SOPHIATX_BLOCKS_PER_HOUR ); } const asset& database_fixture::get_balance( const string& account_name )const { - return db->get_account( account_name ).balance; + return db->get_account( AN(account_name )).balance; } void database_fixture::sign(signed_transaction& trx, const fc::ecc::private_key& key) @@ -589,7 +552,29 @@ vector< operation > database_fixture::get_last_operations( uint32_t num_ops ) std::vector serialized_op; serialized_op.reserve( bip_serialized_op.size() ); std::copy( bip_serialized_op.begin(), bip_serialized_op.end(), std::back_inserter( serialized_op ) ); - ops.push_back( fc::raw::unpack_from_vector< steem::chain::operation >( serialized_op ) ); + ops.push_back( fc::raw::unpack_from_vector< sophiatx::chain::operation >( serialized_op ) ); + } + + return ops; +} + +vector< operation > database_fixture::get_last_operations( uint32_t num_ops, string account_name ) +{ + vector< operation > ops; + const auto& acc_hist_idx = db->get_index< account_history_index >().indices().get< by_account >(); + + + auto itr = acc_hist_idx.lower_bound(boost::make_tuple(account_name, 100000000 )); + auto end = acc_hist_idx.upper_bound(boost::make_tuple(account_name, 0 )); + + while( itr != end && ops.size() < num_ops && itr->account == account_name ) + { + const buffer_type& bip_serialized_op = db->get(itr->op).serialized_op; + std::vector serialized_op; + serialized_op.reserve( bip_serialized_op.size() ); + std::copy( bip_serialized_op.begin(), bip_serialized_op.end(), std::back_inserter( serialized_op ) ); + ops.push_back( fc::raw::unpack_from_vector< sophiatx::chain::operation >( serialized_op ) ); + itr++; } return ops; @@ -600,14 +585,14 @@ void database_fixture::validate_database( void ) try { db->validate_invariants(); -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT db->validate_smt_invariants(); #endif } FC_LOG_AND_RETHROW(); } -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT template< typename T > asset_symbol_type t_smt_database_fixture< T >::create_smt( const string& account_name, const fc::ecc::private_key& key, @@ -617,19 +602,19 @@ asset_symbol_type t_smt_database_fixture< T >::create_smt( const string& account signed_transaction tx; try { - fund( account_name, 10 * 1000 * 1000 ); + fund( AN(account_name), 10 * 1000 * 1000 ); this->generate_block(); - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); - convert( account_name, ASSET( "5000.000 TESTS" ) ); + set_price_feed( price( ASSET( "1.000000 TBD" ), ASSET( "1.000000 TESTS" ) ) ); + convert( account_name, ASSET( "5000.000000 TESTS" ) ); op.symbol = this->get_new_smt_symbol( token_decimal_places, this->db ); op.precision = op.symbol.decimals(); - op.smt_creation_fee = ASSET( "1000.000 TBD" ); + op.smt_creation_fee = ASSET( "1000.000000 TBD" ); op.control_account = account_name; tx.operations.push_back( op ); - tx.set_expiration( this->db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( this->db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( key, this->db->get_chain_id() ); this->db->push_transaction( tx, 0 ); @@ -644,7 +629,7 @@ asset_symbol_type t_smt_database_fixture< T >::create_smt( const string& account void sub_set_create_op(smt_create_operation* op, account_name_type control_acount) { op->precision = op->symbol.decimals(); - op->smt_creation_fee = ASSET( "1000.000 TBD" ); + op->smt_creation_fee = ASSET( "1000.000000 TBD" ); op->control_account = control_acount; } @@ -672,8 +657,8 @@ std::array t_smt_database_fixture< T >::create_smt_3(const fund( control_account_name, 10 * 1000 * 1000 ); this->generate_block(); - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); - convert( control_account_name, ASSET( "5000.000 TESTS" ) ); + set_price_feed( price( ASSET( "1.000000 TBD" ), ASSET( "1.000000 TESTS" ) ) ); + convert( control_account_name, ASSET( "5000.000000 TESTS" ) ); set_create_op(this->db, &op0, control_account_name, 0); set_create_op(this->db, &op1, control_account_name, 1); @@ -683,7 +668,7 @@ std::array t_smt_database_fixture< T >::create_smt_3(const tx.operations.push_back( op0 ); tx.operations.push_back( op1 ); tx.operations.push_back( op2 ); - tx.set_expiration( this->db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( this->db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( key, this->db->get_chain_id() ); this->db->push_transaction( tx, 0 ); @@ -702,9 +687,9 @@ void push_invalid_operation(const operation& invalid_op, const fc::ecc::private_ { signed_transaction tx; tx.operations.push_back( invalid_op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::assert_exception ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::assert_exception ); } template< typename T > @@ -712,7 +697,7 @@ void t_smt_database_fixture< T >::create_invalid_smt( const char* control_accoun { // Fail due to precision too big. smt_create_operation op_precision; - STEEM_REQUIRE_THROW( set_create_op(this->db, &op_precision, control_account_name, STEEM_ASSET_MAX_DECIMALS + 1), fc::assert_exception ); + SOPHIATX_REQUIRE_THROW( set_create_op(this->db, &op_precision, control_account_name, SOPHIATX_ASSET_MAX_DECIMALS + 1), fc::assert_exception ); } template< typename T > @@ -753,46 +738,56 @@ json_rpc_database_fixture::json_rpc_database_fixture() std::cout << "running test " << boost::unit_test::framework::current_test_case().p_name << std::endl; } - appbase::app().register_plugin< steem::plugins::account_history::account_history_plugin >(); - db_plugin = &appbase::app().register_plugin< steem::plugins::debug_node::debug_node_plugin >(); - appbase::app().register_plugin< steem::plugins::witness::witness_plugin >(); - rpc_plugin = &appbase::app().register_plugin< steem::plugins::json_rpc::json_rpc_plugin >(); - appbase::app().register_plugin< steem::plugins::block_api::block_api_plugin >(); - appbase::app().register_plugin< steem::plugins::database_api::database_api_plugin >(); - appbase::app().register_plugin< steem::plugins::condenser_api::condenser_api_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::account_history::account_history_plugin >(); + db_plugin = &appbase::app().register_plugin< sophiatx::plugins::debug_node::debug_node_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::witness::witness_plugin >(); + rpc_plugin = &appbase::app().register_plugin< sophiatx::plugins::json_rpc::json_rpc_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::block_api::block_api_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::database_api::database_api_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::condenser_api::condenser_api_plugin >(); db_plugin->logging = false; appbase::app().initialize< - steem::plugins::account_history::account_history_plugin, - steem::plugins::debug_node::debug_node_plugin, - steem::plugins::witness::witness_plugin, - steem::plugins::json_rpc::json_rpc_plugin, - steem::plugins::block_api::block_api_plugin, - steem::plugins::database_api::database_api_plugin, - steem::plugins::condenser_api::condenser_api_plugin + sophiatx::plugins::account_history::account_history_plugin, + sophiatx::plugins::debug_node::debug_node_plugin, + sophiatx::plugins::witness::witness_plugin, + sophiatx::plugins::json_rpc::json_rpc_plugin, + sophiatx::plugins::block_api::block_api_plugin, + sophiatx::plugins::database_api::database_api_plugin, + sophiatx::plugins::condenser_api::condenser_api_plugin >( argc, argv ); - appbase::app().get_plugin< steem::plugins::condenser_api::condenser_api_plugin >().plugin_startup(); + appbase::app().get_plugin< sophiatx::plugins::condenser_api::condenser_api_plugin >().plugin_startup(); - db = &appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db(); + db = &appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db(); BOOST_REQUIRE( db ); init_account_pub_key = init_account_priv_key.get_public_key(); open_database(); + db->modify( db->get_witness( "initminer" ), [&]( witness_object& a ) + { + a.signing_key = init_account_pub_key; + }); + db->modify( db->get< account_authority_object, by_account >( "initminer" ), [&]( account_authority_object& a ) + { + a.active.add_authority(init_account_pub_key, 1); + a.owner.add_authority(init_account_pub_key, 1); + }); generate_block(); - db->set_hardfork( STEEM_BLOCKCHAIN_VERSION.minor() ); + db->set_hardfork( SOPHIATX_BLOCKCHAIN_VERSION.minor() ); generate_block(); - vest( "initminer", 10000 ); + vest( "initminer", SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); // Fill up the rest of the required miners - for( int i = STEEM_NUM_INIT_MINERS; i < STEEM_MAX_WITNESSES; i++ ) + for( int i = SOPHIATX_NUM_INIT_MINERS; i < SOPHIATX_MAX_WITNESSES; i++ ) { - account_create( STEEM_INIT_MINER_NAME + fc::to_string( i ), init_account_pub_key ); - fund( STEEM_INIT_MINER_NAME + fc::to_string( i ), STEEM_MIN_PRODUCER_REWARD.amount.value ); - witness_create( STEEM_INIT_MINER_NAME + fc::to_string( i ), init_account_priv_key, "foo.bar", init_account_pub_key, STEEM_MIN_PRODUCER_REWARD.amount ); + account_create( SOPHIATX_INIT_MINER_NAME + fc::to_string( i ), init_account_pub_key ); + fund( AN(SOPHIATX_INIT_MINER_NAME + fc::to_string( i )), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + vest( AN(SOPHIATX_INIT_MINER_NAME + fc::to_string( i )), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + witness_create( AN(SOPHIATX_INIT_MINER_NAME + fc::to_string( i )), init_account_priv_key, "foo.bar", init_account_pub_key, 0 ); } validate_database(); @@ -935,6 +930,6 @@ void _push_transaction( database& db, const signed_transaction& tx, uint32_t ski db.push_transaction( tx, skip_flags ); } FC_CAPTURE_AND_RETHROW((tx)) } -} // steem::chain::test +} // sophiatx::chain::test -} } // steem::chain +} } // sophiatx::chain diff --git a/tests/db_fixture/database_fixture.hpp b/tests/db_fixture/database_fixture.hpp index 660d192d..a4d16eb1 100644 --- a/tests/db_fixture/database_fixture.hpp +++ b/tests/db_fixture/database_fixture.hpp @@ -1,17 +1,17 @@ #pragma once #include -#include +#include #include #include -#include +#include -#include +#include -#include -#include -#include +#include +#include +#include #include #include @@ -19,15 +19,15 @@ #include #include -#define INITIAL_TEST_SUPPLY (10000000000ll) +#define INITIAL_TEST_SUPPLY (SOPHIATX_INIT_SUPPLY) -extern uint32_t ( STEEM_TESTING_GENESIS_TIMESTAMP ); +extern uint32_t ( SOPHIATX_TESTING_GENESIS_TIMESTAMP ); #define PUSH_TX \ - steem::chain::test::_push_transaction + sophiatx::chain::test::_push_transaction #define PUSH_BLOCK \ - steem::chain::test::_push_block + sophiatx::chain::test::_push_block // See below #define REQUIRE_OP_VALIDATION_SUCCESS( op, field, value ) \ @@ -46,7 +46,7 @@ extern uint32_t ( STEEM_TESTING_GENESIS_TIMESTAMP ); db.push_transaction( trx, ~0 ); \ } -/*#define STEEM_REQUIRE_THROW( expr, exc_type ) \ +/*#define SOPHIATX_REQUIRE_THROW( expr, exc_type ) \ { \ std::string req_throw_info = fc::json::to_string( \ fc::mutable_variant_object() \ @@ -56,18 +56,21 @@ extern uint32_t ( STEEM_TESTING_GENESIS_TIMESTAMP ); ("exc_type", #exc_type) \ ); \ if( fc::enable_record_assert_trip ) \ - std::cout << "STEEM_REQUIRE_THROW begin " \ + std::cout << "SOPHIATX_REQUIRE_THROW begin " \ << req_throw_info << std::endl; \ BOOST_REQUIRE_THROW( expr, exc_type ); \ if( fc::enable_record_assert_trip ) \ - std::cout << "STEEM_REQUIRE_THROW end " \ + std::cout << "SOPHIATX_REQUIRE_THROW end " \ << req_throw_info << std::endl; \ }*/ -#define STEEM_REQUIRE_THROW( expr, exc_type ) \ +#define AN( name) \ + sophiatx::protocol::make_random_fixed_string( name ) + +#define SOPHIATX_REQUIRE_THROW( expr, exc_type ) \ BOOST_REQUIRE_THROW( expr, exc_type ); -#define STEEM_CHECK_THROW( expr, exc_type ) \ +#define SOPHIATX_CHECK_THROW( expr, exc_type ) \ { \ std::string req_throw_info = fc::json::to_string( \ fc::mutable_variant_object() \ @@ -77,11 +80,11 @@ extern uint32_t ( STEEM_TESTING_GENESIS_TIMESTAMP ); ("exc_type", #exc_type) \ ); \ if( fc::enable_record_assert_trip ) \ - std::cout << "STEEM_CHECK_THROW begin " \ + std::cout << "SOPHIATX_CHECK_THROW begin " \ << req_throw_info << std::endl; \ BOOST_CHECK_THROW( expr, exc_type ); \ if( fc::enable_record_assert_trip ) \ - std::cout << "STEEM_CHECK_THROW end " \ + std::cout << "SOPHIATX_CHECK_THROW end " \ << req_throw_info << std::endl; \ } @@ -89,7 +92,7 @@ extern uint32_t ( STEEM_TESTING_GENESIS_TIMESTAMP ); { \ const auto temp = op.field; \ op.field = value; \ - STEEM_REQUIRE_THROW( op.validate(), exc_type ); \ + SOPHIATX_REQUIRE_THROW( op.validate(), exc_type ); \ op.field = temp; \ } #define REQUIRE_OP_VALIDATION_FAILURE( op, field, value ) \ @@ -101,7 +104,7 @@ extern uint32_t ( STEEM_TESTING_GENESIS_TIMESTAMP ); op.field = value; \ trx.operations.back() = op; \ op.field = bak; \ - STEEM_REQUIRE_THROW(db.push_transaction(trx, ~0), exc_type); \ + SOPHIATX_REQUIRE_THROW(db.push_transaction(trx, ~0), exc_type); \ } #define REQUIRE_THROW_WITH_VALUE( op, field, value ) \ @@ -116,17 +119,16 @@ extern uint32_t ( STEEM_TESTING_GENESIS_TIMESTAMP ); #define PREP_ACTOR(name) \ fc::ecc::private_key name ## _private_key = generate_private_key(BOOST_PP_STRINGIZE(name)); \ - fc::ecc::private_key name ## _post_key = generate_private_key(std::string( BOOST_PP_STRINGIZE(name) ) + "_post" ); \ public_key_type name ## _public_key = name ## _private_key.get_public_key(); #define ACTOR(name) \ PREP_ACTOR(name) \ - const auto& name = account_create(BOOST_PP_STRINGIZE(name), name ## _public_key, name ## _post_key.get_public_key()); \ + const auto& name = account_create(BOOST_PP_STRINGIZE(name), name ## _public_key); \ account_id_type name ## _id = name.id; (void)name ## _id; #define GET_ACTOR(name) \ fc::ecc::private_key name ## _private_key = generate_private_key(BOOST_PP_STRINGIZE(name)); \ - const account_object& name = get_account(BOOST_PP_STRINGIZE(name)); \ + const account_object& name = get_account(AN(BOOST_PP_STRINGIZE(name))); \ account_id_type name ## _id = name.id; \ (void)name ##_id @@ -138,7 +140,7 @@ extern uint32_t ( STEEM_TESTING_GENESIS_TIMESTAMP ); asset_symbol_type name ## _symbol = name_to_asset_symbol( #name , decimal_places ); #define ASSET( s ) \ - steem::plugins::condenser_api::legacy_asset::from_string( s ).to_asset() + sophiatx::plugins::condenser_api::legacy_asset::from_string( s ).to_asset() #define FUND( account_name, amount ) \ fund( account_name, amount ); \ @@ -153,7 +155,7 @@ extern uint32_t ( STEEM_TESTING_GENESIS_TIMESTAMP ); #define OP2TX(OP,TX,KEY) \ TX.operations.push_back( OP ); \ -TX.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); \ +TX.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); \ TX.sign( KEY, db->get_chain_id() ); #define PUSH_OP(OP,KEY) \ @@ -175,12 +177,12 @@ TX.sign( KEY, db->get_chain_id() ); { \ signed_transaction tx; \ OP2TX(OP,tx,KEY) \ - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), EXCEPTION ); \ + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), EXCEPTION ); \ } -namespace steem { namespace chain { +namespace sophiatx { namespace chain { -using namespace steem::protocol; +using namespace sophiatx::protocol; struct database_fixture { // the reason we use an app is to exercise the indexes of built-in @@ -190,8 +192,8 @@ struct database_fixture { public_key_type committee_key; account_id_type committee_account; fc::ecc::private_key private_key = fc::ecc::private_key::generate(); - fc::ecc::private_key init_account_priv_key = fc::ecc::private_key::regenerate( fc::sha256::hash( string( "init_key" ) ) ); - string debug_key = steem::utilities::key_to_wif( init_account_priv_key ); + fc::ecc::private_key init_account_priv_key = *(sophiatx::utilities::wif_to_key("5JusFLYUhNNsYV8PSTanqfADU5nhWAkTzogZwYjPrTYMw3nCAx3")); + string debug_key = sophiatx::utilities::key_to_wif( init_account_priv_key ); public_key_type init_account_pub_key = init_account_priv_key.get_public_key(); uint32_t default_skip = 0 | database::skip_undo_history_check | database::skip_authority_check; @@ -206,13 +208,11 @@ struct database_fixture { static fc::ecc::private_key generate_private_key( string seed = "init_key" ); static asset_symbol_type name_to_asset_symbol( const std::string& name, uint8_t decimal_places ); -#ifdef STEEM_ENABLE_SMT - static asset_symbol_type get_new_smt_symbol( uint8_t token_decimal_places, chain::database* db ); -#endif + string generate_anon_acct_name(); void open_database(); void generate_block(uint32_t skip = 0, - const fc::ecc::private_key& key = generate_private_key("init_key"), + const fc::ecc::private_key& key = *(sophiatx::utilities::wif_to_key("5JusFLYUhNNsYV8PSTanqfADU5nhWAkTzogZwYjPrTYMw3nCAx3")), int miss_blocks = 0); /** @@ -233,22 +233,16 @@ struct database_fixture { const private_key_type& creator_key, const share_type& fee, const public_key_type& key, - const public_key_type& post_key, const string& json_metadata ); - const account_object& account_create( - const string& name, - const public_key_type& key, - const public_key_type& post_key - ); - const account_object& account_create( const string& name, const public_key_type& key ); + const witness_object& witness_create( const string& owner, const private_key_type& owner_key, @@ -271,6 +265,7 @@ struct database_fixture { vector< operation > get_last_operations( uint32_t ops ); + vector< operation > get_last_operations( uint32_t ops, string account_name ); void validate_database( void ); }; @@ -290,7 +285,7 @@ struct live_database_fixture : public database_fixture fc::path _chain_dir; }; -#ifdef STEEM_ENABLE_SMT +#ifdef SOPHIATX_ENABLE_SMT template< typename T > struct t_smt_database_fixture : public T { @@ -320,7 +315,7 @@ using smt_database_fixture_for_plugin = t_smt_database_fixture< database_fixture struct json_rpc_database_fixture : public database_fixture { private: - steem::plugins::json_rpc::json_rpc_plugin* rpc_plugin; + sophiatx::plugins::json_rpc::json_rpc_plugin* rpc_plugin; fc::variant get_answer( std::string& request ); void review_answer( fc::variant& answer, int64_t code, bool is_warning, bool is_fail, fc::optional< fc::variant > id ); diff --git a/tests/plugin_tests/json_rpc.cpp b/tests/plugin_tests/json_rpc.cpp index 7cc2904d..ff59fc68 100644 --- a/tests/plugin_tests/json_rpc.cpp +++ b/tests/plugin_tests/json_rpc.cpp @@ -1,15 +1,14 @@ #ifdef IS_TEST_NET #include -#include -#include -#include -#include +#include +#include +#include #include "../db_fixture/database_fixture.hpp" -using namespace steem::chain; -using namespace steem::protocol; +using namespace sophiatx::chain; +using namespace sophiatx::protocol; BOOST_FIXTURE_TEST_SUITE( json_rpc, json_rpc_database_fixture ) diff --git a/tests/plugin_tests/main.cpp b/tests/plugin_tests/main.cpp index cc024b9c..3406dc6d 100644 --- a/tests/plugin_tests/main.cpp +++ b/tests/plugin_tests/main.cpp @@ -25,16 +25,16 @@ #include #include -extern uint32_t STEEM_TESTING_GENESIS_TIMESTAMP; +extern uint32_t SOPHIATX_TESTING_GENESIS_TIMESTAMP; boost::unit_test::test_suite* init_unit_test_suite(int argc, char* argv[]) { std::srand(time(NULL)); std::cout << "Random number generator seeded to " << time(NULL) << std::endl; - const char* genesis_timestamp_str = getenv("STEEM_TESTING_GENESIS_TIMESTAMP"); + const char* genesis_timestamp_str = getenv("SOPHIATX_TESTING_GENESIS_TIMESTAMP"); if( genesis_timestamp_str != nullptr ) { - STEEM_TESTING_GENESIS_TIMESTAMP = std::stoul( genesis_timestamp_str ); + SOPHIATX_TESTING_GENESIS_TIMESTAMP = std::stoul( genesis_timestamp_str ); } - std::cout << "STEEM_TESTING_GENESIS_TIMESTAMP is " << STEEM_TESTING_GENESIS_TIMESTAMP << std::endl; + std::cout << "SOPHIATX_TESTING_GENESIS_TIMESTAMP is " << SOPHIATX_TESTING_GENESIS_TIMESTAMP << std::endl; return nullptr; } diff --git a/tests/plugin_tests/market_history.cpp b/tests/plugin_tests/market_history.cpp deleted file mode 100644 index 0e2dc056..00000000 --- a/tests/plugin_tests/market_history.cpp +++ /dev/null @@ -1,350 +0,0 @@ -#ifdef IS_TEST_NET -#include - -#include -#include -#include - -#include - -#include "../db_fixture/database_fixture.hpp" - -using namespace steem::chain; -using namespace steem::protocol; - -BOOST_FIXTURE_TEST_SUITE( market_history, database_fixture ) - -BOOST_AUTO_TEST_CASE( mh_test ) -{ - using namespace steem::plugins::market_history; - - try - { - int argc = boost::unit_test::framework::master_test_suite().argc; - char** argv = boost::unit_test::framework::master_test_suite().argv; - for( int i=1; i(); - db_plugin = &appbase::app().register_plugin< steem::plugins::debug_node::debug_node_plugin >(); - init_account_pub_key = init_account_priv_key.get_public_key(); - - db_plugin->logging = false; - appbase::app().initialize< - steem::plugins::market_history::market_history_plugin, - steem::plugins::debug_node::debug_node_plugin - >( argc, argv ); - - db = &appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db(); - BOOST_REQUIRE( db ); - - open_database(); - - generate_block(); - db->set_hardfork( STEEM_NUM_HARDFORKS ); - generate_block(); - - vest( "initminer", 10000 ); - - // Fill up the rest of the required miners - for( int i = STEEM_NUM_INIT_MINERS; i < STEEM_MAX_WITNESSES; i++ ) - { - account_create( STEEM_INIT_MINER_NAME + fc::to_string( i ), init_account_pub_key ); - fund( STEEM_INIT_MINER_NAME + fc::to_string( i ), STEEM_MIN_PRODUCER_REWARD.amount.value ); - witness_create( STEEM_INIT_MINER_NAME + fc::to_string( i ), init_account_priv_key, "foo.bar", init_account_pub_key, STEEM_MIN_PRODUCER_REWARD.amount ); - } - - validate_database(); - - ACTORS( (alice)(bob)(sam) ); - generate_block(); - - fund( "alice", ASSET( "1000.000 TESTS" ) ); - fund( "alice", ASSET( "1000.000 TBD" ) ); - fund( "bob", ASSET( "1000.000 TESTS" ) ); - fund( "sam", ASSET( "1000.000 TESTS" ) ); - - const auto& bucket_idx = db->get_index< bucket_index >().indices().get< by_bucket >(); - const auto& order_hist_idx = db->get_index< order_history_index >().indices().get< by_id >(); - - BOOST_REQUIRE( bucket_idx.begin() == bucket_idx.end() ); - BOOST_REQUIRE( order_hist_idx.begin() == order_hist_idx.end() ); - validate_database(); - - signed_transaction tx; - - auto fill_order_a_time = db->head_block_time(); - auto time_a = fc::time_point_sec( ( fill_order_a_time.sec_since_epoch() / 15 ) * 15 ); - - limit_order_create_operation op; - op.owner = "alice"; - op.amount_to_sell = ASSET( "1.000 TBD" ); - op.min_to_receive = ASSET( "2.000 TESTS" ); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - - op.owner = "bob"; - op.amount_to_sell = ASSET( "1.500 TESTS" ); - op.min_to_receive = ASSET( "0.750 TBD" ); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->head_block_time() + ( 60 * 90 ) ); - - auto fill_order_b_time = db->head_block_time(); - - tx.operations.clear(); - tx.signatures.clear(); - - op.owner = "sam"; - op.amount_to_sell = ASSET( "1.000 TESTS" ); - op.min_to_receive = ASSET( "0.500 TBD" ); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->head_block_time() + 60 ); - - auto fill_order_c_time = db->head_block_time(); - - tx.operations.clear(); - tx.signatures.clear(); - - op.owner = "alice"; - op.amount_to_sell = ASSET( "0.500 TBD" ); - op.min_to_receive = ASSET( "0.900 TESTS" ); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - - op.owner = "bob"; - op.amount_to_sell = ASSET( "0.450 TESTS" ); - op.min_to_receive = ASSET( "0.250 TBD" ); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - validate_database(); - - auto bucket = bucket_idx.begin(); - - BOOST_REQUIRE( bucket->seconds == 15 ); - BOOST_REQUIRE( bucket->open == time_a ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "1.500 TESTS " ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "1.500 TESTS").amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.close == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == ASSET( "0.750 TBD" ).amount ); - - bucket++; - - BOOST_REQUIRE( bucket->seconds == 15 ); - BOOST_REQUIRE( bucket->open == time_a + ( 60 * 90 ) ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.500 TESTS " ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.500 TESTS").amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.close == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == ASSET( "0.250 TBD" ).amount ); - - bucket++; - - BOOST_REQUIRE( bucket->seconds == 15 ); - BOOST_REQUIRE( bucket->open == time_a + ( 60 * 90 ) + 60 ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.450 TESTS " ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.450 TESTS").amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "0.950 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.close == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == ASSET( "0.500 TBD" ).amount ); - bucket++; - - BOOST_REQUIRE( bucket->seconds == 60 ); - BOOST_REQUIRE( bucket->open == time_a ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "1.500 TESTS " ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "1.500 TESTS").amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.close == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == ASSET( "0.750 TBD" ).amount ); - bucket++; - - BOOST_REQUIRE( bucket->seconds == 60 ); - BOOST_REQUIRE( bucket->open == time_a + ( 60 * 90 ) ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.500 TESTS " ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.500 TESTS").amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.close == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == ASSET( "0.250 TBD" ).amount ); - bucket++; - - BOOST_REQUIRE( bucket->seconds == 60 ); - BOOST_REQUIRE( bucket->open == time_a + ( 60 * 90 ) + 60 ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.450 TESTS " ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.450 TESTS").amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "0.950 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.close == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == ASSET( "0.500 TBD" ).amount ); - bucket++; - - BOOST_REQUIRE( bucket->seconds == 300 ); - BOOST_REQUIRE( bucket->open == time_a ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "1.500 TESTS " ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "1.500 TESTS").amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.close == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == ASSET( "0.750 TBD" ).amount ); - bucket++; - - BOOST_REQUIRE( bucket->seconds == 300 ); - BOOST_REQUIRE( bucket->open == time_a + ( 60 * 90 ) ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.450 TESTS " ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.450 TESTS").amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "1.450 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.close == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == ASSET( "0.750 TBD" ).amount ); - bucket++; - - BOOST_REQUIRE( bucket->seconds == 3600 ); - BOOST_REQUIRE( bucket->open == time_a ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "1.500 TESTS " ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "1.500 TESTS").amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.close == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == ASSET( "0.750 TBD" ).amount ); - bucket++; - - BOOST_REQUIRE( bucket->seconds == 3600 ); - BOOST_REQUIRE( bucket->open == time_a + ( 60 * 60 ) ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.450 TESTS " ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.450 TESTS").amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "1.450 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.close == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == ASSET( "0.750 TBD" ).amount ); - bucket++; - - BOOST_REQUIRE( bucket->seconds == 86400 ); - BOOST_REQUIRE( bucket->open == STEEM_GENESIS_TIME ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.450 TESTS " ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.450 TESTS").amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "2.950 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == ASSET( "0.750 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.close == ASSET( "0.250 TBD" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == ASSET( "1.500 TBD" ).amount ); - bucket++; - - BOOST_REQUIRE( bucket == bucket_idx.end() ); - - auto order = order_hist_idx.begin(); - - BOOST_REQUIRE( order->time == fill_order_a_time ); - BOOST_REQUIRE( order->op.current_owner == "bob" ); - BOOST_REQUIRE( order->op.current_orderid == 0 ); - BOOST_REQUIRE( order->op.current_pays == ASSET( "1.500 TESTS" ) ); - BOOST_REQUIRE( order->op.open_owner == "alice" ); - BOOST_REQUIRE( order->op.open_orderid == 0 ); - BOOST_REQUIRE( order->op.open_pays == ASSET( "0.750 TBD" ) ); - order++; - - BOOST_REQUIRE( order->time == fill_order_b_time ); - BOOST_REQUIRE( order->op.current_owner == "sam" ); - BOOST_REQUIRE( order->op.current_orderid == 0 ); - BOOST_REQUIRE( order->op.current_pays == ASSET( "0.500 TESTS" ) ); - BOOST_REQUIRE( order->op.open_owner == "alice" ); - BOOST_REQUIRE( order->op.open_orderid == 0 ); - BOOST_REQUIRE( order->op.open_pays == ASSET( "0.250 TBD" ) ); - order++; - - BOOST_REQUIRE( order->time == fill_order_c_time ); - BOOST_REQUIRE( order->op.current_owner == "alice" ); - BOOST_REQUIRE( order->op.current_orderid == 0 ); - BOOST_REQUIRE( order->op.current_pays == ASSET( "0.250 TBD" ) ); - BOOST_REQUIRE( order->op.open_owner == "sam" ); - BOOST_REQUIRE( order->op.open_orderid == 0 ); - BOOST_REQUIRE( order->op.open_pays == ASSET( "0.500 TESTS" ) ); - order++; - - BOOST_REQUIRE( order->time == fill_order_c_time ); - BOOST_REQUIRE( order->op.current_owner == "bob" ); - BOOST_REQUIRE( order->op.current_orderid == 0 ); - BOOST_REQUIRE( order->op.current_pays == ASSET( "0.450 TESTS" ) ); - BOOST_REQUIRE( order->op.open_owner == "alice" ); - BOOST_REQUIRE( order->op.open_orderid == 0 ); - BOOST_REQUIRE( order->op.open_pays == ASSET( "0.250 TBD" ) ); - order++; - - BOOST_REQUIRE( order == order_hist_idx.end() ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_SUITE_END() -#endif diff --git a/tests/plugin_tests/plugin_ops.cpp b/tests/plugin_tests/plugin_ops.cpp index 567e4b8c..d21d439b 100644 --- a/tests/plugin_tests/plugin_ops.cpp +++ b/tests/plugin_tests/plugin_ops.cpp @@ -1,18 +1,18 @@ #ifdef IS_TEST_NET -#include -#include - -#include - -#include "../db_fixture/database_fixture.hpp" - -using namespace steem::chain; -using namespace steem::chain::test; +//#include +//#include +// +//#include +// +//#include "../db_fixture/database_fixture.hpp" +// +//using namespace sophiatx::chain; +//using namespace sophiatx::chain::test; /* -namespace steem { namespace plugin_tests { +namespace sophiatx { namespace plugin_tests { -using namespace steem::app; -using namespace steem::chain; +using namespace sophiatx::app; +using namespace sophiatx::chain; struct test_a_operation : base_operation { @@ -42,8 +42,8 @@ class test_plugin : public plugin std::shared_ptr< generic_custom_operation_interpreter< test_op > > _evaluator_registry; }; -STEEM_DEFINE_PLUGIN_EVALUATOR( test_plugin, test_a_operation, test_a ); -STEEM_DEFINE_PLUGIN_EVALUATOR( test_plugin, test_b_operation, test_b ); +SOPHIATX_DEFINE_PLUGIN_EVALUATOR( test_plugin, test_a_operation, test_a ); +SOPHIATX_DEFINE_PLUGIN_EVALUATOR( test_plugin, test_b_operation, test_b ); void test_a_evaluator::do_apply( const test_a_operation& o ) { @@ -75,19 +75,19 @@ test_plugin::test_plugin( application* app ) : plugin( app ) database().set_custom_operation_interpreter( plugin_name(), _evaluator_registry ); } -} } // steem::plugin_tests +} } // sophiatx::plugin_tests -STEEM_DEFINE_PLUGIN( test, steem::plugin_tests::test_plugin ) +SOPHIATX_DEFINE_PLUGIN( test, sophiatx::plugin_tests::test_plugin ) -FC_REFLECT( steem::plugin_tests::test_a_operation, (account) ) -FC_REFLECT( steem::plugin_tests::test_b_operation, (account) ) +FC_REFLECT( sophiatx::plugin_tests::test_a_operation, (account) ) +FC_REFLECT( sophiatx::plugin_tests::test_b_operation, (account) ) -STEEM_DECLARE_OPERATION_TYPE( steem::plugin_tests::test_op ); -FC_REFLECT_TYPENAME( steem::plugin_tests::test_op ); -STEEM_DEFINE_OPERATION_TYPE( steem::plugin_tests::test_op ); +SOPHIATX_DECLARE_OPERATION_TYPE( sophiatx::plugin_tests::test_op ); +FC_REFLECT_TYPENAME( sophiatx::plugin_tests::test_op ); +SOPHIATX_DEFINE_OPERATION_TYPE( sophiatx::plugin_tests::test_op ); */ -BOOST_FIXTURE_TEST_SUITE( plugin_ops, clean_database_fixture ); +//BOOST_FIXTURE_TEST_SUITE( plugin_ops, clean_database_fixture ); /* BOOST_AUTO_TEST_CASE( custom_json ) { @@ -107,5 +107,5 @@ BOOST_AUTO_TEST_CASE( custom_binary ) FC_LOG_AND_RETHROW() } */ -BOOST_AUTO_TEST_SUITE_END() -#endif \ No newline at end of file +//BOOST_AUTO_TEST_SUITE_END() +#endif diff --git a/tests/plugin_tests/smt_market_history.cpp b/tests/plugin_tests/smt_market_history.cpp index 3b40376d..6e5ff2bb 100644 --- a/tests/plugin_tests/smt_market_history.cpp +++ b/tests/plugin_tests/smt_market_history.cpp @@ -1,22 +1,22 @@ -#if defined IS_TEST_NET && defined STEEM_ENABLE_SMT +#if defined IS_TEST_NET && defined SOPHIATX_ENABLE_SMT #include -#include -#include -#include +#include +#include +#include -#include +#include #include "../db_fixture/database_fixture.hpp" -using namespace steem::chain; -using namespace steem::protocol; +using namespace sophiatx::chain; +using namespace sophiatx::protocol; BOOST_FIXTURE_TEST_SUITE( smt_market_history, smt_database_fixture_for_plugin ) BOOST_AUTO_TEST_CASE( smt_mh_test ) { - using namespace steem::plugins::market_history; + using namespace sophiatx::plugins::market_history; try { @@ -32,32 +32,32 @@ BOOST_AUTO_TEST_CASE( smt_mh_test ) } appbase::app().register_plugin< market_history_plugin >(); - db_plugin = &appbase::app().register_plugin< steem::plugins::debug_node::debug_node_plugin >(); + db_plugin = &appbase::app().register_plugin< sophiatx::plugins::debug_node::debug_node_plugin >(); init_account_pub_key = init_account_priv_key.get_public_key(); db_plugin->logging = false; appbase::app().initialize< - steem::plugins::market_history::market_history_plugin, - steem::plugins::debug_node::debug_node_plugin + sophiatx::plugins::market_history::market_history_plugin, + sophiatx::plugins::debug_node::debug_node_plugin >( argc, argv ); - db = &appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db(); + db = &appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db(); BOOST_REQUIRE( db ); open_database(); generate_block(); - db->set_hardfork( STEEM_NUM_HARDFORKS ); + db->set_hardfork( SOPHIATX_NUM_HARDFORKS ); generate_block(); vest( "initminer", 10000 ); // Fill up the rest of the required miners - for( int i = STEEM_NUM_INIT_MINERS; i < STEEM_MAX_WITNESSES; i++ ) + for( int i = SOPHIATX_NUM_INIT_MINERS; i < SOPHIATX_MAX_WITNESSES; i++ ) { - account_create( STEEM_INIT_MINER_NAME + fc::to_string( i ), init_account_pub_key ); - fund( STEEM_INIT_MINER_NAME + fc::to_string( i ), STEEM_MIN_PRODUCER_REWARD.amount.value ); - witness_create( STEEM_INIT_MINER_NAME + fc::to_string( i ), init_account_priv_key, "foo.bar", init_account_pub_key, STEEM_MIN_PRODUCER_REWARD.amount ); + account_create( SOPHIATX_INIT_MINER_NAME + fc::to_string( i ), init_account_pub_key ); + fund( SOPHIATX_INIT_MINER_NAME + fc::to_string( i ), SOPHIATX_MIN_PRODUCER_REWARD.amount.value ); + witness_create( SOPHIATX_INIT_MINER_NAME + fc::to_string( i ), init_account_priv_key, "foo.bar", init_account_pub_key, SOPHIATX_MIN_PRODUCER_REWARD.amount ); } validate_database(); @@ -90,7 +90,7 @@ BOOST_AUTO_TEST_CASE( smt_mh_test ) op.amount_to_sell = asset( 1000, any_smt_symbol ); op.min_to_receive = ASSET( "2.000 TESTS" ); tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); @@ -115,7 +115,7 @@ BOOST_AUTO_TEST_CASE( smt_mh_test ) op.amount_to_sell = ASSET( "1.000 TESTS" ); op.min_to_receive = asset( 500, any_smt_symbol ); tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( sam_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); @@ -130,7 +130,7 @@ BOOST_AUTO_TEST_CASE( smt_mh_test ) op.amount_to_sell = asset( 500, any_smt_symbol ); op.min_to_receive = ASSET( "0.900 TESTS" ); tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); @@ -141,7 +141,7 @@ BOOST_AUTO_TEST_CASE( smt_mh_test ) op.amount_to_sell = ASSET( "0.450 TESTS" ); op.min_to_receive = asset( 250, any_smt_symbol ); tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( bob_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); validate_database(); @@ -150,156 +150,156 @@ BOOST_AUTO_TEST_CASE( smt_mh_test ) BOOST_REQUIRE( bucket->seconds == 15 ); BOOST_REQUIRE( bucket->open == time_a ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "1.500 TESTS " ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "1.500 TESTS").amount ); - BOOST_REQUIRE( bucket->non_steem.close == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.high == ASSET( "1.500 TESTS " ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.high == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.low == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.low == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.open == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.open == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.close == ASSET( "1.500 TESTS").amount ); + BOOST_REQUIRE( bucket->non_sophiatx.close == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.volume == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.volume == asset( 750, any_smt_symbol ).amount ); bucket++; BOOST_REQUIRE( bucket->seconds == 15 ); BOOST_REQUIRE( bucket->open == time_a + ( 60 * 90 ) ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.500 TESTS " ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.500 TESTS").amount ); - BOOST_REQUIRE( bucket->non_steem.close == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.high == ASSET( "0.500 TESTS " ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.high == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.low == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.low == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.open == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.open == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.close == ASSET( "0.500 TESTS").amount ); + BOOST_REQUIRE( bucket->non_sophiatx.close == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.volume == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.volume == asset( 250, any_smt_symbol ).amount ); bucket++; BOOST_REQUIRE( bucket->seconds == 15 ); BOOST_REQUIRE( bucket->open == time_a + ( 60 * 90 ) + 60 ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.450 TESTS " ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.450 TESTS").amount ); - BOOST_REQUIRE( bucket->non_steem.close == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "0.950 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == asset( 500, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.high == ASSET( "0.450 TESTS " ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.high == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.low == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.low == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.open == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.open == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.close == ASSET( "0.450 TESTS").amount ); + BOOST_REQUIRE( bucket->non_sophiatx.close == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.volume == ASSET( "0.950 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.volume == asset( 500, any_smt_symbol ).amount ); bucket++; BOOST_REQUIRE( bucket->seconds == 60 ); BOOST_REQUIRE( bucket->open == time_a ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "1.500 TESTS " ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "1.500 TESTS").amount ); - BOOST_REQUIRE( bucket->non_steem.close == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.high == ASSET( "1.500 TESTS " ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.high == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.low == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.low == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.open == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.open == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.close == ASSET( "1.500 TESTS").amount ); + BOOST_REQUIRE( bucket->non_sophiatx.close == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.volume == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.volume == asset( 750, any_smt_symbol ).amount ); bucket++; BOOST_REQUIRE( bucket->seconds == 60 ); BOOST_REQUIRE( bucket->open == time_a + ( 60 * 90 ) ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.500 TESTS " ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.500 TESTS").amount ); - BOOST_REQUIRE( bucket->non_steem.close == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.high == ASSET( "0.500 TESTS " ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.high == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.low == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.low == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.open == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.open == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.close == ASSET( "0.500 TESTS").amount ); + BOOST_REQUIRE( bucket->non_sophiatx.close == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.volume == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.volume == asset( 250, any_smt_symbol ).amount ); bucket++; BOOST_REQUIRE( bucket->seconds == 60 ); BOOST_REQUIRE( bucket->open == time_a + ( 60 * 90 ) + 60 ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.450 TESTS " ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.450 TESTS").amount ); - BOOST_REQUIRE( bucket->non_steem.close == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "0.950 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == asset( 500, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.high == ASSET( "0.450 TESTS " ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.high == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.low == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.low == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.open == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.open == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.close == ASSET( "0.450 TESTS").amount ); + BOOST_REQUIRE( bucket->non_sophiatx.close == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.volume == ASSET( "0.950 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.volume == asset( 500, any_smt_symbol ).amount ); bucket++; BOOST_REQUIRE( bucket->seconds == 300 ); BOOST_REQUIRE( bucket->open == time_a ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "1.500 TESTS " ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "1.500 TESTS").amount ); - BOOST_REQUIRE( bucket->non_steem.close == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.high == ASSET( "1.500 TESTS " ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.high == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.low == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.low == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.open == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.open == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.close == ASSET( "1.500 TESTS").amount ); + BOOST_REQUIRE( bucket->non_sophiatx.close == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.volume == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.volume == asset( 750, any_smt_symbol ).amount ); bucket++; BOOST_REQUIRE( bucket->seconds == 300 ); BOOST_REQUIRE( bucket->open == time_a + ( 60 * 90 ) ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.450 TESTS " ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.450 TESTS").amount ); - BOOST_REQUIRE( bucket->non_steem.close == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "1.450 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.high == ASSET( "0.450 TESTS " ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.high == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.low == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.low == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.open == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.open == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.close == ASSET( "0.450 TESTS").amount ); + BOOST_REQUIRE( bucket->non_sophiatx.close == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.volume == ASSET( "1.450 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.volume == asset( 750, any_smt_symbol ).amount ); bucket++; BOOST_REQUIRE( bucket->seconds == 3600 ); BOOST_REQUIRE( bucket->open == time_a ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "1.500 TESTS " ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "1.500 TESTS").amount ); - BOOST_REQUIRE( bucket->non_steem.close == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.high == ASSET( "1.500 TESTS " ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.high == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.low == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.low == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.open == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.open == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.close == ASSET( "1.500 TESTS").amount ); + BOOST_REQUIRE( bucket->non_sophiatx.close == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.volume == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.volume == asset( 750, any_smt_symbol ).amount ); bucket++; BOOST_REQUIRE( bucket->seconds == 3600 ); BOOST_REQUIRE( bucket->open == time_a + ( 60 * 60 ) ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.450 TESTS " ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "0.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.450 TESTS").amount ); - BOOST_REQUIRE( bucket->non_steem.close == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "1.450 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.high == ASSET( "0.450 TESTS " ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.high == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.low == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.low == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.open == ASSET( "0.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.open == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.close == ASSET( "0.450 TESTS").amount ); + BOOST_REQUIRE( bucket->non_sophiatx.close == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.volume == ASSET( "1.450 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.volume == asset( 750, any_smt_symbol ).amount ); bucket++; BOOST_REQUIRE( bucket->seconds == 86400 ); - BOOST_REQUIRE( bucket->open == STEEM_GENESIS_TIME ); - BOOST_REQUIRE( bucket->steem.high == ASSET( "0.450 TESTS " ).amount ); - BOOST_REQUIRE( bucket->non_steem.high == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.low == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.low == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.open == ASSET( "1.500 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.open == asset( 750, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.close == ASSET( "0.450 TESTS").amount ); - BOOST_REQUIRE( bucket->non_steem.close == asset( 250, any_smt_symbol ).amount ); - BOOST_REQUIRE( bucket->steem.volume == ASSET( "2.950 TESTS" ).amount ); - BOOST_REQUIRE( bucket->non_steem.volume == asset( 1500, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->open == SOPHIATX_GENESIS_TIME ); + BOOST_REQUIRE( bucket->sophiatx.high == ASSET( "0.450 TESTS " ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.high == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.low == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.low == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.open == ASSET( "1.500 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.open == asset( 750, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.close == ASSET( "0.450 TESTS").amount ); + BOOST_REQUIRE( bucket->non_sophiatx.close == asset( 250, any_smt_symbol ).amount ); + BOOST_REQUIRE( bucket->sophiatx.volume == ASSET( "2.950 TESTS" ).amount ); + BOOST_REQUIRE( bucket->non_sophiatx.volume == asset( 1500, any_smt_symbol ).amount ); bucket++; BOOST_REQUIRE( bucket == bucket_idx.end() ); diff --git a/tests/smoketest/README.md b/tests/smoketest/README.md index ffa47191..0515a5cd 100644 --- a/tests/smoketest/README.md +++ b/tests/smoketest/README.md @@ -4,7 +4,7 @@ From directory of smoketest.sh: - ./smoketest.sh ~/working/steemd ~/reference/steemd ~/working_blockchain_dir ~/reference_blockchain_dir 3000000 + ./smoketest.sh ~/working/sophiatxd ~/reference/sophiatxd ~/working_blockchain_dir ~/reference_blockchain_dir 3000000 ## To Add a Test Group @@ -13,7 +13,7 @@ In directory of smoketest.sh: 2. In that subdirectory create test_group.sh which i Accepts following arguments: JOBS TEST_ADDRESS TEST_PORT REF_ADDRESS REF_PORT BLOCK_LIMIT where JOBS is suggested number of parallel jobs to run, - TEST_ADDRESS:TEST_PORT indicate where the tested steemd instance listens to API requests, + TEST_ADDRESS:TEST_PORT indicate where the tested sophiatxd instance listens to API requests, REF_ADDRESS:REF_PORT ditto for reference instance and BLOCK_LIMIT is the top number of block to be processed. - ii Returns 0 on success, non-zero on failure \ No newline at end of file + ii Returns 0 on success, non-zero on failure diff --git a/tests/smoketest/account_history/get_ops_in_block/test.sh b/tests/smoketest/account_history/get_ops_in_block/test.sh index 8b84a591..f368b710 100755 --- a/tests/smoketest/account_history/get_ops_in_block/test.sh +++ b/tests/smoketest/account_history/get_ops_in_block/test.sh @@ -6,7 +6,7 @@ if [[ $# -lt 5 || $# -gt 7 ]] then echo Usage: jobs 1st_address 1st_port 2nd_address 2nd_port [last_block [first_block]] echo if jobs == 0 script detect processor count and use it - echo if last_block not passed or 0 will be read from steemd + echo if last_block not passed or 0 will be read from sophiatxd echo if first_block not passed will be 0 echo Example: 127.0.0.1 8090 ec2-34-235-166-184.compute-1.amazonaws.com 8090 exit -1 @@ -154,4 +154,4 @@ test_blocks $FIRST_BLOCK $LAST_BLOCK $OUTPUT wait -exit $EXIT_CODE \ No newline at end of file +exit $EXIT_CODE diff --git a/tests/smoketest/scripts/create_account_list.py b/tests/smoketest/scripts/create_account_list.py index 9da9abf7..85227253 100755 --- a/tests/smoketest/scripts/create_account_list.py +++ b/tests/smoketest/scripts/create_account_list.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """ -Create list of all steem accounts in file. +Create list of all sophiatx accounts in file. Usage: create_account_list.py """ import sys @@ -60,4 +60,4 @@ def main(): if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/tests/smoketest/smoketest.sh b/tests/smoketest/smoketest.sh index d75b248d..09923f8c 100755 --- a/tests/smoketest/smoketest.sh +++ b/tests/smoketest/smoketest.sh @@ -8,7 +8,7 @@ JOBS=1 API_TEST_PATH=../../python_scripts/tests/api_tests BLOCK_SUBPATH=blockchain/block_log GROUP_TEST_SCRIPT=test_group.sh -STEEMD_CONFIG=config.ini +SOPHIATXD_CONFIG=config.ini NODE_ADDRESS=127.0.0.1 TEST_PORT=8090 REF_PORT=8091 @@ -22,12 +22,12 @@ pushd () { command pushd "$@" > /dev/null; } popd () { command popd "$@" > /dev/null; } function print_help_and_quit { - echo "Usage: path_to_tested_steemd path_to_reference_steemd path_to_test_blockchain_directory path_to_reference_blockchain_directory number_of_blocks_to_replay" - echo "Example: ~/work/steemit/steem/build/Release/programs/steemd/steemd ~/master/steemit/steem/build/Release/programs/steemd/steemd ~/steemit/steem/work1 ~/steemit/steem/work2 5000000" + echo "Usage: path_to_tested_sophiatxd path_to_reference_sophiatxd path_to_test_blockchain_directory path_to_reference_blockchain_directory number_of_blocks_to_replay" + echo "Example: ~/work/SophiaTX/SophiaTX/build/Release/programs/sophiatxd/sophiatxd ~/master/SophiaTX/SophiaTX/build/Release/programs/sophiatxd/sophiatxd ~/SophiaTX/SophiaTX/work1 ~/SophiaTX/SophiaTX/work2 5000000" exit $EXIT_CODE } -function check_steemd_path { +function check_sophiatxd_path { echo Checking $1... if [ -x "$1" ] && file "$1" | grep -q "executable" then @@ -50,33 +50,33 @@ function check_work_path { function run_replay { echo Running $1 replay of $BLOCK_LIMIT blocks $2 --replay --stop-replay-at-block $BLOCK_LIMIT -d $3 - [ $? -ne 0 ] && echo FATAL: steemd failed to replay $BLOCK_LIMIT blocks. && exit -1 + [ $? -ne 0 ] && echo FATAL: sophiatxd failed to replay $BLOCK_LIMIT blocks. && exit -1 } function copy_config { - echo Copying ./$STEEMD_CONFIG over $1/$STEEMD_CONFIG - cp ./$STEEMD_CONFIG $1/$STEEMD_CONFIG - [ $? -ne 0 ] && echo FATAL: Failed to copy ./$STEEMD_CONFIG over $1/$STEEMD_CONFIG file. && exit -1 + echo Copying ./$SOPHIATXD_CONFIG over $1/$SOPHIATXD_CONFIG + cp ./$SOPHIATXD_CONFIG $1/$SOPHIATXD_CONFIG + [ $? -ne 0 ] && echo FATAL: Failed to copy ./$SOPHIATXD_CONFIG over $1/$SOPHIATXD_CONFIG file. && exit -1 } function check_pid_port { - echo Checking that steemd with pid $1 listens at $2 port. + echo Checking that sophiatxd with pid $1 listens at $2 port. NETSTAT_CMD="netstat -tlpn 2> /dev/null" STAGE1=$(eval $NETSTAT_CMD) - STAGE2=$(echo $STAGE1 | grep -o ":$2 [^ ]* LISTEN $1/steemd") + STAGE2=$(echo $STAGE1 | grep -o ":$2 [^ ]* LISTEN $1/sophiatxd") ATTEMPT=0 while [[ -z $STAGE2 ]] && [ $ATTEMPT -lt 3 ]; do sleep 1 STAGE1=$(eval $NETSTAT_CMD) - STAGE2=$(echo $STAGE1 | grep -o ":$2 [^ ]* LISTEN $1/steemd") + STAGE2=$(echo $STAGE1 | grep -o ":$2 [^ ]* LISTEN $1/sophiatxd") ((ATTEMPT++)) done if [[ -z $STAGE2 ]]; then - echo FATAL: Could not find steemd with pid $1 listening at port $2 using $NETSTAT_CMD command. - echo FATAL: Most probably another steemd instance is running and listens at the port. + echo FATAL: Could not find sophiatxd with pid $1 listening at port $2 using $NETSTAT_CMD command. + echo FATAL: Most probably another sophiatxd instance is running and listens at the port. return 1 else return 0 @@ -97,15 +97,15 @@ function run_test_group { copy_config $TEST_WORK_PATH copy_config $REF_WORK_PATH - run_replay "test instance" $STEEMD_PATH $TEST_WORK_PATH - run_replay "reference instance" $REF_STEEMD_PATH $REF_WORK_PATH + run_replay "test instance" $SOPHIATXD_PATH $TEST_WORK_PATH + run_replay "reference instance" $REF_SOPHIATXD_PATH $REF_WORK_PATH - echo Running tested steemd to listen - $STEEMD_PATH $TEST_NODE_OPT -d $TEST_WORK_PATH & TEST_STEEMD_PID=$! - echo Running reference steemd to listen - $REF_STEEMD_PATH $REF_NODE_OPT -d $REF_WORK_PATH & REF_STEEMD_PID=$! + echo Running tested sophiatxd to listen + $SOPHIATXD_PATH $TEST_NODE_OPT -d $TEST_WORK_PATH & TEST_SOPHIATXD_PID=$! + echo Running reference sophiatxd to listen + $REF_SOPHIATXD_PATH $REF_NODE_OPT -d $REF_WORK_PATH & REF_SOPHIATXD_PID=$! - if check_pid_port $TEST_STEEMD_PID $TEST_PORT && check_pid_port $REF_STEEMD_PID $REF_PORT; then + if check_pid_port $TEST_SOPHIATXD_PID $TEST_PORT && check_pid_port $REF_SOPHIATXD_PID $REF_PORT; then echo Running ./$GROUP_TEST_SCRIPT $JOBS $NODE_ADDRESS $TEST_PORT $NODE_ADDRESS $REF_PORT $BLOCK_LIMIT ./$GROUP_TEST_SCRIPT $JOBS $NODE_ADDRESS $TEST_PORT $NODE_ADDRESS $REF_PORT $BLOCK_LIMIT [ $? -ne 0 ] && echo test group $1 FAILED && ((GROUP_FAILURE++)) && EXIT_CODE=-1 @@ -113,8 +113,8 @@ function run_test_group { ((GROUP_FAILURE++)) fi - kill -s SIGINT $TEST_STEEMD_PID - kill -s SIGINT $REF_STEEMD_PID + kill -s SIGINT $TEST_SOPHIATXD_PID + kill -s SIGINT $REF_SOPHIATXD_PID wait popd } @@ -124,14 +124,14 @@ then print_help_and_quit fi -STEEMD_PATH=$1 -REF_STEEMD_PATH=$2 +SOPHIATXD_PATH=$1 +REF_SOPHIATXD_PATH=$2 TEST_WORK_PATH=$3 REF_WORK_PATH=$4 BLOCK_LIMIT=$5 -check_steemd_path $STEEMD_PATH -check_steemd_path $REF_STEEMD_PATH +check_sophiatxd_path $SOPHIATXD_PATH +check_sophiatxd_path $REF_SOPHIATXD_PATH check_work_path $TEST_WORK_PATH check_work_path $REF_WORK_PATH diff --git a/tests/tests/basic_tests.cpp b/tests/tests/basic_tests.cpp index e8344b87..49829dff 100644 --- a/tests/tests/basic_tests.cpp +++ b/tests/tests/basic_tests.cpp @@ -24,10 +24,10 @@ #include -#include -#include +#include +#include -#include +#include #include #include @@ -36,9 +36,9 @@ #include #include -using namespace steem; -using namespace steem::chain; -using namespace steem::protocol; +using namespace sophiatx; +using namespace sophiatx::chain; +using namespace sophiatx::protocol; BOOST_FIXTURE_TEST_SUITE( basic_tests, clean_database_fixture ) diff --git a/tests/tests/block_tests.cpp b/tests/tests/block_tests.cpp index d92967de..3f3cd7c4 100644 --- a/tests/tests/block_tests.cpp +++ b/tests/tests/block_tests.cpp @@ -21,26 +21,26 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -#ifdef IS_TEST_NET +//#ifdef IS_TEST_NET #include -#include +#include -#include -#include -#include +#include +#include +#include -#include +#include -#include +#include #include #include "../db_fixture/database_fixture.hpp" -using namespace steem; -using namespace steem::chain; -using namespace steem::protocol; +using namespace sophiatx; +using namespace sophiatx::chain; +using namespace sophiatx::protocol; #define TEST_SHARED_MEM_SIZE (1024 * 1024 * 8) @@ -48,23 +48,36 @@ BOOST_AUTO_TEST_SUITE(block_tests) void open_test_database( database& db, const fc::path& dir ) { + fc::ecc::private_key init_account_priv_key = *(sophiatx::utilities::wif_to_key("5JPwY3bwFgfsGtxMeLkLqXzUrQDMAsqSyAZDnMBkg7PDDRhQgaV")); + auto init_account_pub_key = init_account_priv_key.get_public_key(); + + genesis_state_type gen; + gen.genesis_time = fc::time_point_sec(1530644400); database::open_args args; args.data_dir = dir; args.shared_mem_dir = dir; - args.initial_supply = INITIAL_TEST_SUPPLY; args.shared_file_size = TEST_SHARED_MEM_SIZE; - db.open( args ); + db.open( args, gen ); + db.modify( db.get_witness( "initminer" ), [&]( witness_object& a ) + { + a.signing_key = init_account_pub_key; + }); + db.modify( db.get< account_authority_object, by_account >( "initminer" ), [&]( account_authority_object& a ) + { + a.active.add_authority(init_account_pub_key, 1); + a.owner.add_authority(init_account_pub_key, 1); + }); } BOOST_AUTO_TEST_CASE( generate_empty_blocks ) { try { - fc::time_point_sec now( STEEM_TESTING_GENESIS_TIMESTAMP ); - fc::temp_directory data_dir( steem::utilities::temp_directory_path() ); + fc::time_point_sec now( SOPHIATX_TESTING_GENESIS_TIMESTAMP ); + fc::temp_directory data_dir( sophiatx::utilities::temp_directory_path() ); signed_block b; // TODO: Don't generate this here - auto init_account_priv_key = fc::ecc::private_key::regenerate( fc::sha256::hash( string( "init_key" ) ) ); + fc::ecc::private_key init_account_priv_key = *(sophiatx::utilities::wif_to_key("5JPwY3bwFgfsGtxMeLkLqXzUrQDMAsqSyAZDnMBkg7PDDRhQgaV")); signed_block cutoff_block; { database db; @@ -73,7 +86,7 @@ BOOST_AUTO_TEST_CASE( generate_empty_blocks ) b = db.generate_block(db.get_slot_time(1), db.get_scheduled_witness(1), init_account_priv_key, database::skip_nothing); // TODO: Change this test when we correct #406 - // n.b. we generate STEEM_MIN_UNDO_HISTORY+1 extra blocks which will be discarded on save + // n.b. we generate SOPHIATX_MIN_UNDO_HISTORY+1 extra blocks which will be discarded on save for( uint32_t i = 1; ; ++i ) { BOOST_CHECK( db.head_block_id() == b.id() ); @@ -118,15 +131,15 @@ BOOST_AUTO_TEST_CASE( generate_empty_blocks ) BOOST_AUTO_TEST_CASE( undo_block ) { try { - fc::temp_directory data_dir( steem::utilities::temp_directory_path() ); + fc::temp_directory data_dir( sophiatx::utilities::temp_directory_path() ); { database db; db._log_hardforks = false; open_test_database( db, data_dir.path() ); - fc::time_point_sec now( STEEM_TESTING_GENESIS_TIMESTAMP ); + fc::time_point_sec now( SOPHIATX_TESTING_GENESIS_TIMESTAMP ); std::vector< time_point_sec > time_stack; - auto init_account_priv_key = fc::ecc::private_key::regenerate(fc::sha256::hash(string("init_key")) ); + fc::ecc::private_key init_account_priv_key = *(sophiatx::utilities::wif_to_key("5JPwY3bwFgfsGtxMeLkLqXzUrQDMAsqSyAZDnMBkg7PDDRhQgaV")); for( uint32_t i = 0; i < 5; ++i ) { now = db.get_slot_time(1); @@ -167,8 +180,8 @@ BOOST_AUTO_TEST_CASE( undo_block ) BOOST_AUTO_TEST_CASE( fork_blocks ) { try { - fc::temp_directory data_dir1( steem::utilities::temp_directory_path() ); - fc::temp_directory data_dir2( steem::utilities::temp_directory_path() ); + fc::temp_directory data_dir1( sophiatx::utilities::temp_directory_path() ); + fc::temp_directory data_dir2( sophiatx::utilities::temp_directory_path() ); //TODO This test needs 6-7 ish witnesses prior to fork @@ -179,7 +192,7 @@ BOOST_AUTO_TEST_CASE( fork_blocks ) db2._log_hardforks = false; open_test_database( db2, data_dir2.path() ); - auto init_account_priv_key = fc::ecc::private_key::regenerate(fc::sha256::hash(string("init_key")) ); + fc::ecc::private_key init_account_priv_key = *(sophiatx::utilities::wif_to_key("5JPwY3bwFgfsGtxMeLkLqXzUrQDMAsqSyAZDnMBkg7PDDRhQgaV")); for( uint32_t i = 0; i < 10; ++i ) { auto b = db1.generate_block(db1.get_slot_time(1), db1.get_scheduled_witness(1), init_account_priv_key, database::skip_nothing); @@ -216,7 +229,7 @@ BOOST_AUTO_TEST_CASE( fork_blocks ) b.transactions.back().operations.emplace_back(transfer_operation()); b.sign( init_account_priv_key ); BOOST_CHECK_EQUAL(b.block_num(), 14); - STEEM_CHECK_THROW(PUSH_BLOCK( db1, b ), fc::exception); + SOPHIATX_CHECK_THROW(PUSH_BLOCK( db1, b ), fc::exception); } BOOST_CHECK_EQUAL(db1.head_block_num(), 13); BOOST_CHECK_EQUAL(db1.head_block_id().str(), db1_tip); @@ -234,8 +247,8 @@ BOOST_AUTO_TEST_CASE( fork_blocks ) BOOST_AUTO_TEST_CASE( switch_forks_undo_create ) { try { - fc::temp_directory dir1( steem::utilities::temp_directory_path() ), - dir2( steem::utilities::temp_directory_path() ); + fc::temp_directory dir1( sophiatx::utilities::temp_directory_path() ), + dir2( sophiatx::utilities::temp_directory_path() ); database db1, db2; db1._log_hardforks = false; @@ -243,19 +256,20 @@ BOOST_AUTO_TEST_CASE( switch_forks_undo_create ) db2._log_hardforks = false; open_test_database( db2, dir2.path() ); - auto init_account_priv_key = fc::ecc::private_key::regenerate(fc::sha256::hash(string("init_key")) ); + fc::ecc::private_key init_account_priv_key = *(sophiatx::utilities::wif_to_key("5JPwY3bwFgfsGtxMeLkLqXzUrQDMAsqSyAZDnMBkg7PDDRhQgaV")); public_key_type init_account_pub_key = init_account_priv_key.get_public_key(); db1.get_index< account_index >(); //* signed_transaction trx; account_create_operation cop; - cop.new_account_name = "alice"; - cop.creator = STEEM_INIT_MINER_NAME; + cop.name_seed = "alice"; + cop.creator = SOPHIATX_INIT_MINER_NAME; cop.owner = authority(1, init_account_pub_key, 1); cop.active = cop.owner; + cop.fee = asset(50000, SOPHIATX_SYMBOL); trx.operations.push_back(cop); - trx.set_expiration( db1.head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + trx.set_expiration( db1.head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); trx.sign( init_account_priv_key, db1.get_chain_id() ); PUSH_TX( db1, trx ); //*/ @@ -265,25 +279,25 @@ BOOST_AUTO_TEST_CASE( switch_forks_undo_create ) auto b = db1.generate_block(db1.get_slot_time(1), db1.get_scheduled_witness(1), init_account_priv_key, database::skip_nothing); - auto alice_id = db1.get_account( "alice" ).id; - BOOST_CHECK( db1.get(alice_id).name == "alice" ); + auto alice_id = db1.get_account( AN("alice") ).id; + BOOST_CHECK( db1.get(alice_id).name == AN("alice") ); b = db2.generate_block(db2.get_slot_time(1), db2.get_scheduled_witness(1), init_account_priv_key, database::skip_nothing); db1.push_block(b); b = db2.generate_block(db2.get_slot_time(1), db2.get_scheduled_witness(1), init_account_priv_key, database::skip_nothing); db1.push_block(b); - STEEM_REQUIRE_THROW(db2.get(alice_id), std::exception); + SOPHIATX_REQUIRE_THROW(db2.get(alice_id), std::exception); db1.get(alice_id); /// it should be included in the pending state db1.clear_pending(); // clear it so that we can verify it was properly removed from pending state. - STEEM_REQUIRE_THROW(db1.get(alice_id), std::exception); + SOPHIATX_REQUIRE_THROW(db1.get(alice_id), std::exception); PUSH_TX( db2, trx ); b = db2.generate_block(db2.get_slot_time(1), db2.get_scheduled_witness(1), init_account_priv_key, database::skip_nothing); db1.push_block(b); - BOOST_CHECK( db1.get(alice_id).name == "alice"); - BOOST_CHECK( db2.get(alice_id).name == "alice"); + BOOST_CHECK( db1.get(alice_id).name == AN("alice")); + BOOST_CHECK( db2.get(alice_id).name == AN("alice")); } catch (fc::exception& e) { edump((e.to_detail_string())); throw; @@ -293,8 +307,8 @@ BOOST_AUTO_TEST_CASE( switch_forks_undo_create ) BOOST_AUTO_TEST_CASE( duplicate_transactions ) { try { - fc::temp_directory dir1( steem::utilities::temp_directory_path() ), - dir2( steem::utilities::temp_directory_path() ); + fc::temp_directory dir1( sophiatx::utilities::temp_directory_path() ), + dir2( sophiatx::utilities::temp_directory_path() ); database db1, db2; db1._log_hardforks = false; @@ -305,39 +319,42 @@ BOOST_AUTO_TEST_CASE( duplicate_transactions ) auto skip_sigs = database::skip_transaction_signatures | database::skip_authority_check; - auto init_account_priv_key = fc::ecc::private_key::regenerate(fc::sha256::hash(string("init_key")) ); + fc::ecc::private_key init_account_priv_key = *(sophiatx::utilities::wif_to_key("5JPwY3bwFgfsGtxMeLkLqXzUrQDMAsqSyAZDnMBkg7PDDRhQgaV")); public_key_type init_account_pub_key = init_account_priv_key.get_public_key(); signed_transaction trx; account_create_operation cop; - cop.new_account_name = "alice"; - cop.creator = STEEM_INIT_MINER_NAME; + cop.name_seed = "alice"; + cop.creator = SOPHIATX_INIT_MINER_NAME; cop.owner = authority(1, init_account_pub_key, 1); cop.active = cop.owner; + cop.fee = asset(50000, SOPHIATX_SYMBOL); + trx.operations.push_back(cop); - trx.set_expiration( db1.head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + trx.set_expiration( db1.head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); trx.sign( init_account_priv_key, db1.get_chain_id() ); PUSH_TX( db1, trx, skip_sigs ); trx = decltype(trx)(); transfer_operation t; - t.from = STEEM_INIT_MINER_NAME; - t.to = "alice"; - t.amount = asset(500,STEEM_SYMBOL); + t.from = SOPHIATX_INIT_MINER_NAME; + t.to = AN("alice"); + t.amount = asset(500,SOPHIATX_SYMBOL); + t.fee = asset(100000, SOPHIATX_SYMBOL); trx.operations.push_back(t); - trx.set_expiration( db1.head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + trx.set_expiration( db1.head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); trx.sign( init_account_priv_key, db1.get_chain_id() ); PUSH_TX( db1, trx, skip_sigs ); - STEEM_CHECK_THROW(PUSH_TX( db1, trx, skip_sigs ), fc::exception); + SOPHIATX_CHECK_THROW(PUSH_TX( db1, trx, skip_sigs ), fc::exception); auto b = db1.generate_block( db1.get_slot_time(1), db1.get_scheduled_witness( 1 ), init_account_priv_key, skip_sigs ); PUSH_BLOCK( db2, b, skip_sigs ); - STEEM_CHECK_THROW(PUSH_TX( db1, trx, skip_sigs ), fc::exception); - STEEM_CHECK_THROW(PUSH_TX( db2, trx, skip_sigs ), fc::exception); - BOOST_CHECK_EQUAL(db1.get_balance( "alice", STEEM_SYMBOL ).amount.value, 500); - BOOST_CHECK_EQUAL(db2.get_balance( "alice", STEEM_SYMBOL ).amount.value, 500); + SOPHIATX_CHECK_THROW(PUSH_TX( db1, trx, skip_sigs ), fc::exception); + SOPHIATX_CHECK_THROW(PUSH_TX( db2, trx, skip_sigs ), fc::exception); + BOOST_CHECK_EQUAL(db1.get_balance( AN("alice"), SOPHIATX_SYMBOL ).amount.value, 500); + BOOST_CHECK_EQUAL(db2.get_balance( AN("alice"), SOPHIATX_SYMBOL ).amount.value, 500); } catch (fc::exception& e) { edump((e.to_detail_string())); throw; @@ -347,12 +364,12 @@ BOOST_AUTO_TEST_CASE( duplicate_transactions ) BOOST_AUTO_TEST_CASE( tapos ) { try { - fc::temp_directory dir1( steem::utilities::temp_directory_path() ); + fc::temp_directory dir1( sophiatx::utilities::temp_directory_path() ); database db1; db1._log_hardforks = false; open_test_database( db1, dir1.path() ); - auto init_account_priv_key = fc::ecc::private_key::regenerate(fc::sha256::hash(string("init_key")) ); + fc::ecc::private_key init_account_priv_key = *(sophiatx::utilities::wif_to_key("5JPwY3bwFgfsGtxMeLkLqXzUrQDMAsqSyAZDnMBkg7PDDRhQgaV")); public_key_type init_account_pub_key = init_account_priv_key.get_public_key(); auto b = db1.generate_block( db1.get_slot_time(1), db1.get_scheduled_witness( 1 ), init_account_priv_key, database::skip_nothing); @@ -364,12 +381,14 @@ BOOST_AUTO_TEST_CASE( tapos ) trx.set_reference_block( db1.head_block_id() ); account_create_operation cop; - cop.new_account_name = "alice"; - cop.creator = STEEM_INIT_MINER_NAME; + cop.name_seed = "alice"; + cop.creator = SOPHIATX_INIT_MINER_NAME; cop.owner = authority(1, init_account_pub_key, 1); cop.active = cop.owner; + cop.fee = asset(50000, SOPHIATX_SYMBOL); + trx.operations.push_back(cop); - trx.set_expiration( db1.head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + trx.set_expiration( db1.head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); trx.sign( init_account_priv_key, db1.get_chain_id() ); BOOST_TEST_MESSAGE( "Pushing Pending Transaction" ); @@ -380,9 +399,9 @@ BOOST_AUTO_TEST_CASE( tapos ) trx.clear(); transfer_operation t; - t.from = STEEM_INIT_MINER_NAME; - t.to = "alice"; - t.amount = asset(50,STEEM_SYMBOL); + t.from = SOPHIATX_INIT_MINER_NAME; + t.to = AN("alice"); + t.amount = asset(50,SOPHIATX_SYMBOL); trx.operations.push_back(t); trx.set_expiration( db1.head_block_time() + fc::seconds(2) ); trx.sign( init_account_priv_key, db1.get_chain_id() ); @@ -410,11 +429,12 @@ BOOST_FIXTURE_TEST_CASE( optional_tapos, clean_database_fixture ) BOOST_TEST_MESSAGE( "Create transaction" ); - transfer( STEEM_INIT_MINER_NAME, "alice", asset( 1000000, STEEM_SYMBOL ) ); + transfer( SOPHIATX_INIT_MINER_NAME, AN("alice"), asset( 1000000, SOPHIATX_SYMBOL ) ); transfer_operation op; - op.from = "alice"; - op.to = "bob"; - op.amount = asset(1000,STEEM_SYMBOL); + op.from = AN("alice"); + op.to = AN("bob"); + op.fee = asset(100000, SOPHIATX_SYMBOL); + op.amount = asset(1000,SOPHIATX_SYMBOL); signed_transaction tx; tx.operations.push_back( op ); @@ -423,14 +443,14 @@ BOOST_FIXTURE_TEST_CASE( optional_tapos, clean_database_fixture ) tx.ref_block_num = 0; tx.ref_block_prefix = 0; tx.signatures.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); PUSH_TX( *db, tx ); BOOST_TEST_MESSAGE( "proper ref_block_num, ref_block_prefix" ); tx.signatures.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); PUSH_TX( *db, tx, database::skip_transaction_dupe_check ); @@ -439,27 +459,27 @@ BOOST_FIXTURE_TEST_CASE( optional_tapos, clean_database_fixture ) tx.ref_block_num = 0; tx.ref_block_prefix = 0x12345678; tx.signatures.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( PUSH_TX( *db, tx, database::skip_transaction_dupe_check ), fc::exception ); + SOPHIATX_REQUIRE_THROW( PUSH_TX( *db, tx, database::skip_transaction_dupe_check ), fc::exception ); BOOST_TEST_MESSAGE( "ref_block_num=1, ref_block_prefix=12345678" ); tx.ref_block_num = 1; tx.ref_block_prefix = 0x12345678; tx.signatures.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( PUSH_TX( *db, tx, database::skip_transaction_dupe_check ), fc::exception ); + SOPHIATX_REQUIRE_THROW( PUSH_TX( *db, tx, database::skip_transaction_dupe_check ), fc::exception ); BOOST_TEST_MESSAGE( "ref_block_num=9999, ref_block_prefix=12345678" ); tx.ref_block_num = 9999; tx.ref_block_prefix = 0x12345678; tx.signatures.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( PUSH_TX( *db, tx, database::skip_transaction_dupe_check ), fc::exception ); + SOPHIATX_REQUIRE_THROW( PUSH_TX( *db, tx, database::skip_transaction_dupe_check ), fc::exception ); } catch (fc::exception& e) { @@ -472,37 +492,38 @@ BOOST_FIXTURE_TEST_CASE( double_sign_check, clean_database_fixture ) { try { generate_block(); ACTOR(bob); - share_type amount = 1000; + share_type amount = 1000000; transfer_operation t; - t.from = STEEM_INIT_MINER_NAME; - t.to = "bob"; - t.amount = asset(amount,STEEM_SYMBOL); + t.from = SOPHIATX_INIT_MINER_NAME; + t.to = AN("bob"); + t.fee = ASSET( "0.100000 SPHTX" ); + t.amount = asset(amount*2,SOPHIATX_SYMBOL); trx.operations.push_back(t); - trx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + trx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); trx.validate(); db->push_transaction(trx, ~0); trx.operations.clear(); - t.from = "bob"; - t.to = STEEM_INIT_MINER_NAME; - t.amount = asset(amount,STEEM_SYMBOL); + t.from = AN("bob"); + t.to = SOPHIATX_INIT_MINER_NAME; + t.amount = asset(amount,SOPHIATX_SYMBOL); trx.operations.push_back(t); trx.validate(); BOOST_TEST_MESSAGE( "Verify that not-signing causes an exception" ); - STEEM_REQUIRE_THROW( db->push_transaction(trx, 0), fc::exception ); + SOPHIATX_REQUIRE_THROW( db->push_transaction(trx, 0), fc::exception ); BOOST_TEST_MESSAGE( "Verify that double-signing causes an exception" ); trx.sign( bob_private_key, db->get_chain_id() ); trx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction(trx, 0), tx_duplicate_sig ); + SOPHIATX_REQUIRE_THROW( db->push_transaction(trx, 0), tx_duplicate_sig ); BOOST_TEST_MESSAGE( "Verify that signing with an extra, unused key fails" ); trx.signatures.pop_back(); trx.sign( generate_private_key("bogus" ), db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction(trx, 0), tx_irrelevant_sig ); + SOPHIATX_REQUIRE_THROW( db->push_transaction(trx, 0), tx_irrelevant_sig ); BOOST_TEST_MESSAGE( "Verify that signing once with the proper key passes" ); trx.signatures.pop_back(); @@ -522,7 +543,7 @@ BOOST_FIXTURE_TEST_CASE( pop_block_twice, clean_database_fixture ) ); // Sam is the creator of accounts - auto init_account_priv_key = fc::ecc::private_key::regenerate(fc::sha256::hash(string("init_key")) ); + fc::ecc::private_key init_account_priv_key = *(sophiatx::utilities::wif_to_key("5JPwY3bwFgfsGtxMeLkLqXzUrQDMAsqSyAZDnMBkg7PDDRhQgaV")); private_key_type sam_key = generate_private_key( "sam" ); account_object sam_account_object = account_create( "sam", sam_key.get_public_key() ); @@ -532,9 +553,9 @@ BOOST_FIXTURE_TEST_CASE( pop_block_twice, clean_database_fixture ) transaction tx; signed_transaction ptx; - db->get_account( STEEM_INIT_MINER_NAME ); + db->get_account( SOPHIATX_INIT_MINER_NAME ); // transfer from committee account to Sam account - transfer( STEEM_INIT_MINER_NAME, "sam", asset( 100000, STEEM_SYMBOL ) ); + transfer( SOPHIATX_INIT_MINER_NAME, AN("sam"), asset( 100000, SOPHIATX_SYMBOL ) ); generate_block(skip_flags); @@ -572,7 +593,7 @@ BOOST_FIXTURE_TEST_CASE( rsf_missed_blocks, clean_database_fixture ) auto pct = []( uint32_t x ) -> uint32_t { - return uint64_t( STEEM_100_PERCENT ) * x / 128; + return uint64_t( SOPHIATX_100_PERCENT ) * x / 128; }; BOOST_TEST_MESSAGE("checking initial participation rate" ); @@ -580,7 +601,7 @@ BOOST_FIXTURE_TEST_CASE( rsf_missed_blocks, clean_database_fixture ) "1111111111111111111111111111111111111111111111111111111111111111" "1111111111111111111111111111111111111111111111111111111111111111" ); - BOOST_CHECK_EQUAL( db->witness_participation_rate(), STEEM_100_PERCENT ); + BOOST_CHECK_EQUAL( db->witness_participation_rate(), SOPHIATX_100_PERCENT ); BOOST_TEST_MESSAGE("Generating a block skipping 1" ); generate_block( ~database::skip_fork_db, init_account_priv_key, 1 ); @@ -693,7 +714,7 @@ BOOST_FIXTURE_TEST_CASE( skip_block, clean_database_fixture ) BOOST_REQUIRE( db->head_block_num() == 2 ); int init_block_num = db->head_block_num(); - int miss_blocks = fc::minutes( 1 ).to_seconds() / STEEM_BLOCK_INTERVAL; + int miss_blocks = fc::minutes( 1 ).to_seconds() / SOPHIATX_BLOCK_INTERVAL; auto witness = db->get_scheduled_witness( miss_blocks ); auto block_time = db->get_slot_time( miss_blocks ); db->generate_block( block_time , witness, init_account_priv_key, 0 ); @@ -705,7 +726,7 @@ BOOST_FIXTURE_TEST_CASE( skip_block, clean_database_fixture ) generate_block(); BOOST_CHECK_EQUAL( db->head_block_num(), init_block_num + 2 ); - BOOST_CHECK( db->head_block_time() == block_time + STEEM_BLOCK_INTERVAL ); + BOOST_CHECK( db->head_block_time() == block_time + SOPHIATX_BLOCK_INTERVAL ); } FC_LOG_AND_RETHROW(); } @@ -725,31 +746,41 @@ BOOST_FIXTURE_TEST_CASE( hardfork_test, database_fixture ) if( arg == "--show-test-names" ) std::cout << "running test " << boost::unit_test::framework::current_test_case().p_name << std::endl; } - appbase::app().register_plugin< steem::plugins::account_history::account_history_plugin >(); - db_plugin = &appbase::app().register_plugin< steem::plugins::debug_node::debug_node_plugin >(); + appbase::app().register_plugin< sophiatx::plugins::account_history::account_history_plugin >(); + db_plugin = &appbase::app().register_plugin< sophiatx::plugins::debug_node::debug_node_plugin >(); init_account_pub_key = init_account_priv_key.get_public_key(); appbase::app().initialize< - steem::plugins::account_history::account_history_plugin, - steem::plugins::debug_node::debug_node_plugin + sophiatx::plugins::account_history::account_history_plugin, + sophiatx::plugins::debug_node::debug_node_plugin >( argc, argv ); - db = &appbase::app().get_plugin< steem::plugins::chain::chain_plugin >().db(); + db = &appbase::app().get_plugin< sophiatx::plugins::chain::chain_plugin >().db(); BOOST_REQUIRE( db ); open_database(); + db->modify( db->get_witness( "initminer" ), [&]( witness_object& a ) + { + a.signing_key = init_account_pub_key; + }); + db->modify( db->get< account_authority_object, by_account >( "initminer" ), [&]( account_authority_object& a ) + { + a.active.add_authority(init_account_pub_key, 1); + a.owner.add_authority(init_account_pub_key, 1); + }); generate_blocks( 2 ); vest( "initminer", 10000 ); // Fill up the rest of the required miners - for( int i = STEEM_NUM_INIT_MINERS; i < STEEM_MAX_WITNESSES; i++ ) + for( int i = SOPHIATX_NUM_INIT_MINERS; i < SOPHIATX_MAX_WITNESSES; i++ ) { - account_create( STEEM_INIT_MINER_NAME + fc::to_string( i ), init_account_pub_key ); - fund( STEEM_INIT_MINER_NAME + fc::to_string( i ), STEEM_MIN_PRODUCER_REWARD.amount.value ); - witness_create( STEEM_INIT_MINER_NAME + fc::to_string( i ), init_account_priv_key, "foo.bar", init_account_pub_key, STEEM_MIN_PRODUCER_REWARD.amount ); + account_create( SOPHIATX_INIT_MINER_NAME + fc::to_string( i ), init_account_pub_key ); + fund( AN(SOPHIATX_INIT_MINER_NAME + fc::to_string( i )), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + vest( AN(SOPHIATX_INIT_MINER_NAME + fc::to_string( i )), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + witness_create( AN(SOPHIATX_INIT_MINER_NAME + fc::to_string( i )), init_account_priv_key, "foo.bar", init_account_pub_key, 0 ); } validate_database(); @@ -761,13 +792,13 @@ BOOST_FIXTURE_TEST_CASE( hardfork_test, database_fixture ) BOOST_TEST_MESSAGE( "Check hardfork not applied at genesis" ); BOOST_REQUIRE( db->has_hardfork( 0 ) ); - BOOST_REQUIRE( !db->has_hardfork( STEEM_HARDFORK_0_1 ) ); + /*BOOST_REQUIRE( !db->has_hardfork( SOPHIATX_HARDFORK_0_1 ) ); BOOST_TEST_MESSAGE( "Generate blocks up to the hardfork time and check hardfork still not applied" ); - generate_blocks( fc::time_point_sec( STEEM_HARDFORK_0_1_TIME - STEEM_BLOCK_INTERVAL ), true ); + generate_blocks( fc::time_point_sec( SOPHIATX_HARDFORK_0_1_TIME - SOPHIATX_BLOCK_INTERVAL ), true ); BOOST_REQUIRE( db->has_hardfork( 0 ) ); - BOOST_REQUIRE( !db->has_hardfork( STEEM_HARDFORK_0_1 ) ); + BOOST_REQUIRE( !db->has_hardfork( SOPHIATX_HARDFORK_0_1 ) ); BOOST_TEST_MESSAGE( "Generate a block and check hardfork is applied" ); generate_block(); @@ -777,7 +808,7 @@ BOOST_FIXTURE_TEST_CASE( hardfork_test, database_fixture ) itr--; BOOST_REQUIRE( db->has_hardfork( 0 ) ); - BOOST_REQUIRE( db->has_hardfork( STEEM_HARDFORK_0_1 ) ); + BOOST_REQUIRE( db->has_hardfork( SOPHIATX_HARDFORK_0_1 ) ); BOOST_REQUIRE( get_last_operations( 1 )[0].get< custom_operation >().data == vector< char >( op_msg.begin(), op_msg.end() ) ); BOOST_REQUIRE( db->get(itr->op).timestamp == db->head_block_time() ); @@ -788,14 +819,14 @@ BOOST_FIXTURE_TEST_CASE( hardfork_test, database_fixture ) itr--; BOOST_REQUIRE( db->has_hardfork( 0 ) ); - BOOST_REQUIRE( db->has_hardfork( STEEM_HARDFORK_0_1 ) ); + BOOST_REQUIRE( db->has_hardfork( SOPHIATX_HARDFORK_0_1 ) ); BOOST_REQUIRE( get_last_operations( 1 )[0].get< custom_operation >().data == vector< char >( op_msg.begin(), op_msg.end() ) ); - BOOST_REQUIRE( db->get(itr->op).timestamp == db->head_block_time() - STEEM_BLOCK_INTERVAL ); + BOOST_REQUIRE( db->get(itr->op).timestamp == db->head_block_time() - SOPHIATX_BLOCK_INTERVAL ); - db->wipe( data_dir->path(), data_dir->path(), true ); + db->wipe( data_dir->path(), data_dir->path(), true );*/ } FC_LOG_AND_RETHROW() } BOOST_AUTO_TEST_SUITE_END() -#endif +//#endif diff --git a/tests/tests/live_tests.cpp b/tests/tests/live_tests.cpp index a4b2827f..71307e3b 100644 --- a/tests/tests/live_tests.cpp +++ b/tests/tests/live_tests.cpp @@ -1,10 +1,10 @@ #include -#include -#include +#include +#include -#include -#include +#include +#include #include @@ -12,11 +12,11 @@ #include -using namespace steem; -using namespace steem::chain; -using namespace steem::protocol; +using namespace sophiatx; +using namespace sophiatx::chain; +using namespace sophiatx::protocol; -#ifndef IS_TEST_NET +#ifdef IS_TEST_NET BOOST_FIXTURE_TEST_SUITE( live_tests, live_database_fixture ) @@ -43,12 +43,11 @@ BOOST_AUTO_TEST_CASE( vests_stock_split ) acnt_itr++; } - auto old_virtual_supply = db->get_dynamic_global_properties().virtual_supply; auto old_current_supply = db->get_dynamic_global_properties().current_supply; - auto old_vesting_fund = db->get_dynamic_global_properties().total_vesting_fund_steem; + auto old_vesting_fund = db->get_dynamic_global_properties().total_vesting_fund_sophiatx; auto old_vesting_shares = db->get_dynamic_global_properties().total_vesting_shares; auto old_rshares2 = db->get_dynamic_global_properties().total_reward_shares2; - auto old_reward_fund = db->get_dynamic_global_properties().total_reward_fund_steem; + auto old_reward_fund = db->get_dynamic_global_properties().total_reward_fund_sophiatx; flat_map< std::tuple< account_name_type, string >, share_type > comment_net_rshares; flat_map< std::tuple< account_name_type, string >, share_type > comment_abs_rshares; @@ -73,7 +72,7 @@ BOOST_AUTO_TEST_CASE( vests_stock_split ) { total_rshares2 += com_itr->net_rshares.value > 0 ? fc::uint128_t( com_itr->net_rshares.value ) * com_itr->net_rshares.value * magnitude * magnitude : 0; u256 rs( com_itr->net_rshares.value ); - u256 rf( gpo.total_reward_fund_steem.amount.value ); + u256 rf( gpo.total_reward_fund_sophiatx.amount.value ); auto rs2 = rs * rs; u256 rshares2 = old_rshares2.hi; rshares2 = rshares2 << 64; @@ -102,11 +101,10 @@ BOOST_AUTO_TEST_CASE( vests_stock_split ) BOOST_TEST_MESSAGE( "Verify split took place correctly" ); BOOST_REQUIRE( db->get_dynamic_global_properties().current_supply == old_current_supply ); - BOOST_REQUIRE( db->get_dynamic_global_properties().virtual_supply == old_virtual_supply ); - BOOST_REQUIRE( db->get_dynamic_global_properties().total_vesting_fund_steem == old_vesting_fund ); + BOOST_REQUIRE( db->get_dynamic_global_properties().total_vesting_fund_sophiatx == old_vesting_fund ); BOOST_REQUIRE( db->get_dynamic_global_properties().total_vesting_shares.amount == old_vesting_shares.amount * magnitude ); BOOST_REQUIRE( db->get_dynamic_global_properties().total_reward_shares2 == total_rshares2 ); - BOOST_REQUIRE( db->get_dynamic_global_properties().total_reward_fund_steem == old_reward_fund ); + BOOST_REQUIRE( db->get_dynamic_global_properties().total_reward_fund_sophiatx == old_reward_fund ); BOOST_TEST_MESSAGE( "Check accounts were updated" ); acnt_itr = acnt_idx.begin(); @@ -129,7 +127,7 @@ BOOST_AUTO_TEST_CASE( vests_stock_split ) if( com_itr->net_rshares.value > 0 ) { u256 rs( com_itr->net_rshares.value ); - u256 rf( gpo.total_reward_fund_steem.amount.value ); + u256 rf( gpo.total_reward_fund_sophiatx.amount.value ); u256 rshares2 = total_rshares2.hi; rshares2 = ( rshares2 << 64 ) + total_rshares2.lo; auto rs2 = rs * rs; diff --git a/tests/tests/main.cpp b/tests/tests/main.cpp index 84aa9629..03614138 100644 --- a/tests/tests/main.cpp +++ b/tests/tests/main.cpp @@ -25,19 +25,19 @@ #include #include -// extern uint32_t STEEM_TESTING_GENESIS_TIMESTAMP; +// extern uint32_t SOPHIATX_TESTING_GENESIS_TIMESTAMP; boost::unit_test::test_suite* init_unit_test_suite(int argc, char* argv[]) { std::srand(time(NULL)); std::cout << "Random number generator seeded to " << time(NULL) << std::endl; /* - const char* genesis_timestamp_str = getenv("STEEM_TESTING_GENESIS_TIMESTAMP"); + const char* genesis_timestamp_str = getenv("SOPHIATX_TESTING_GENESIS_TIMESTAMP"); if( genesis_timestamp_str != nullptr ) { - STEEM_TESTING_GENESIS_TIMESTAMP = std::stoul( genesis_timestamp_str ); + SOPHIATX_TESTING_GENESIS_TIMESTAMP = std::stoul( genesis_timestamp_str ); } - std::cout << "STEEM_TESTING_GENESIS_TIMESTAMP is " << STEEM_TESTING_GENESIS_TIMESTAMP << std::endl; + std::cout << "SOPHIATX_TESTING_GENESIS_TIMESTAMP is " << SOPHIATX_TESTING_GENESIS_TIMESTAMP << std::endl; */ return nullptr; } diff --git a/tests/tests/operation_tests.cpp b/tests/tests/operation_tests.cpp index 73443571..58d88f0b 100644 --- a/tests/tests/operation_tests.cpp +++ b/tests/tests/operation_tests.cpp @@ -1,16 +1,15 @@ -#ifdef IS_TEST_NET +//#ifdef IS_TEST_NET #include -#include -#include +#include +#include -#include -#include -#include +#include +#include +#include +#include -#include - -#include +#include #include #include @@ -21,11 +20,12 @@ #include #include -using namespace steem; -using namespace steem::chain; -using namespace steem::protocol; +using namespace sophiatx; +using namespace sophiatx::chain; +using namespace sophiatx::protocol; using fc::string; +#define DUMP( x ) {fc::variant vo; fc::to_variant( x , vo); std::cout<< fc::json::to_string(vo) <<"\n";} BOOST_FIXTURE_TEST_SUITE( operation_tests, clean_database_fixture ) BOOST_AUTO_TEST_CASE( account_create_validate ) @@ -44,8 +44,8 @@ BOOST_AUTO_TEST_CASE( account_create_authorities ) BOOST_TEST_MESSAGE( "Testing: account_create_authorities" ); account_create_operation op; - op.creator = "alice"; - op.new_account_name = "bob"; + op.creator = AN("alice"); + op.name_seed = "bob"; flat_set< account_name_type > auths; flat_set< account_name_type > expected; @@ -55,15 +55,10 @@ BOOST_AUTO_TEST_CASE( account_create_authorities ) BOOST_REQUIRE( auths == expected ); BOOST_TEST_MESSAGE( "--- Testing active authority" ); - expected.insert( "alice" ); + expected.insert( AN("alice") ); op.get_required_active_authorities( auths ); BOOST_REQUIRE( auths == expected ); - BOOST_TEST_MESSAGE( "--- Testing posting authority" ); - expected.clear(); - auths.clear(); - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); } FC_LOG_AND_RETHROW() } @@ -74,81 +69,80 @@ BOOST_AUTO_TEST_CASE( account_create_apply ) { BOOST_TEST_MESSAGE( "Testing: account_create_apply" ); - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); + set_price_feed( price( ASSET( "1.000000 USD" ), ASSET( "1.000000 SPHTX" ) ) ); signed_transaction tx; private_key_type priv_key = generate_private_key( "alice" ); - const account_object& init = db->get_account( STEEM_INIT_MINER_NAME ); + const account_object& init = db->get_account( SOPHIATX_INIT_MINER_NAME ); asset init_starting_balance = init.balance; const auto& gpo = db->get_dynamic_global_properties(); account_create_operation op; - op.fee = asset( 100, STEEM_SYMBOL ); - op.new_account_name = "alice"; - op.creator = STEEM_INIT_MINER_NAME; + op.fee = ASSET( "0.050000 SPHTX" ); + op.name_seed = "alice"; + op.creator = SOPHIATX_INIT_MINER_NAME; op.owner = authority( 1, priv_key.get_public_key(), 1 ); op.active = authority( 2, priv_key.get_public_key(), 2 ); op.memo_key = priv_key.get_public_key(); op.json_metadata = "{\"foo\":\"bar\"}"; BOOST_TEST_MESSAGE( "--- Test normal account creation" ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.operations.push_back( op ); tx.sign( init_account_priv_key, db->get_chain_id() ); tx.validate(); db->push_transaction( tx, 0 ); - const account_object& acct = db->get_account( "alice" ); - const account_authority_object& acct_auth = db->get< account_authority_object, by_account >( "alice" ); - auto vest_shares = gpo.total_vesting_shares; - auto vests = gpo.total_vesting_fund_steem; + const account_object& acct = db->get_account( AN("alice") ); + const account_authority_object& acct_auth = db->get< account_authority_object, by_account >( AN("alice") ); - BOOST_REQUIRE( acct.name == "alice" ); + + BOOST_REQUIRE( acct.name == AN("alice") ); BOOST_REQUIRE( acct_auth.owner == authority( 1, priv_key.get_public_key(), 1 ) ); BOOST_REQUIRE( acct_auth.active == authority( 2, priv_key.get_public_key(), 2 ) ); BOOST_REQUIRE( acct.memo_key == priv_key.get_public_key() ); BOOST_REQUIRE( acct.proxy == "" ); BOOST_REQUIRE( acct.created == db->head_block_time() ); - BOOST_REQUIRE( acct.balance.amount.value == ASSET( "0.000 TESTS" ).amount.value ); - BOOST_REQUIRE( acct.sbd_balance.amount.value == ASSET( "0.000 TBD" ).amount.value ); + BOOST_REQUIRE( acct.balance.amount.value == 0 ); BOOST_REQUIRE( acct.id._id == acct_auth.id._id ); - /// because init_witness has created vesting shares and blocks have been produced, 100 STEEM is worth less than 100 vesting shares due to rounding - BOOST_REQUIRE( acct.vesting_shares.amount.value == ( op.fee * ( vest_shares / vests ) ).amount.value ); - BOOST_REQUIRE( acct.vesting_withdraw_rate.amount.value == ASSET( "0.000000 VESTS" ).amount.value ); + /// because init_witness has created vesting shares and blocks have been produced, 100 SOPHIATX is worth less than 100 vesting shares due to rounding + BOOST_REQUIRE( acct.vesting_shares.amount.value == 0 ); + BOOST_REQUIRE( acct.vesting_withdraw_rate.amount.value == 0 ); BOOST_REQUIRE( acct.proxied_vsf_votes_total().value == 0 ); - BOOST_REQUIRE( ( init_starting_balance - ASSET( "0.100 TESTS" ) ).amount.value == init.balance.amount.value ); + //This doeas not hold due to interests... + // BOOST_REQUIRE( ( init_starting_balance - ASSET( "0.100000 SPHTX" ) ).amount.value == init.balance.amount.value ); validate_database(); BOOST_TEST_MESSAGE( "--- Test failure of duplicate account creation" ); BOOST_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::exception ); - BOOST_REQUIRE( acct.name == "alice" ); + BOOST_REQUIRE( acct.name == AN("alice") ); BOOST_REQUIRE( acct_auth.owner == authority( 1, priv_key.get_public_key(), 1 ) ); BOOST_REQUIRE( acct_auth.active == authority( 2, priv_key.get_public_key(), 2 ) ); BOOST_REQUIRE( acct.memo_key == priv_key.get_public_key() ); BOOST_REQUIRE( acct.proxy == "" ); BOOST_REQUIRE( acct.created == db->head_block_time() ); - BOOST_REQUIRE( acct.balance.amount.value == ASSET( "0.000 TESTS " ).amount.value ); - BOOST_REQUIRE( acct.sbd_balance.amount.value == ASSET( "0.000 TBD" ).amount.value ); - BOOST_REQUIRE( acct.vesting_shares.amount.value == ( op.fee * ( vest_shares / vests ) ).amount.value ); + BOOST_REQUIRE( acct.balance.amount.value == ASSET( "0.000000 SPHTX" ).amount.value ); + BOOST_REQUIRE( acct.vesting_shares.amount.value == 0 ); BOOST_REQUIRE( acct.vesting_withdraw_rate.amount.value == ASSET( "0.000000 VESTS" ).amount.value ); BOOST_REQUIRE( acct.proxied_vsf_votes_total().value == 0 ); - BOOST_REQUIRE( ( init_starting_balance - ASSET( "0.100 TESTS" ) ).amount.value == init.balance.amount.value ); + //This doeas not hold due to interests... + //BOOST_REQUIRE( ( init_starting_balance - ASSET( "0.100000 SPHTX" ) ).amount.value == init.balance.amount.value ); validate_database(); BOOST_TEST_MESSAGE( "--- Test failure when creator cannot cover fee" ); tx.signatures.clear(); tx.operations.clear(); - op.fee = asset( db->get_account( STEEM_INIT_MINER_NAME ).balance.amount + 1, STEEM_SYMBOL ); - op.new_account_name = "bob"; + op.fee = asset( db->get_account( SOPHIATX_INIT_MINER_NAME ).balance.amount + 1, SOPHIATX_SYMBOL ); + op.name_seed = "bob"; tx.operations.push_back( op ); tx.sign( init_account_priv_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); validate_database(); BOOST_TEST_MESSAGE( "--- Test failure covering witness fee" ); @@ -157,16 +151,16 @@ BOOST_AUTO_TEST_CASE( account_create_apply ) { db.modify( db.get_witness_schedule_object(), [&]( witness_schedule_object& wso ) { - wso.median_props.account_creation_fee = ASSET( "10.000 TESTS" ); + wso.median_props.account_creation_fee = ASSET( "10.000000 SPHTX" ); }); }); generate_block(); tx.clear(); - op.fee = ASSET( "1.000 TESTS" ); + op.fee = ASSET( "1.000000 SPHTX" ); tx.operations.push_back( op ); tx.sign( init_account_priv_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); validate_database(); } FC_LOG_AND_RETHROW() @@ -181,17 +175,17 @@ BOOST_AUTO_TEST_CASE( account_update_validate ) ACTORS( (alice) ) account_update_operation op; - op.account = "alice"; - op.posting = authority(); - op.posting->weight_threshold = 1; - op.posting->add_authorities( "abcdefghijklmnopq", 1 ); + op.account = AN("alice"); + op.active = authority(); + op.active->weight_threshold = 1; + op.active->add_authorities( AN("abcdefghijklmnopq"), 1 ); try { op.validate(); signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); @@ -214,36 +208,36 @@ BOOST_AUTO_TEST_CASE( account_update_authorities ) ACTORS( (alice)(bob) ) private_key_type active_key = generate_private_key( "new_key" ); - db->modify( db->get< account_authority_object, by_account >( "alice" ), [&]( account_authority_object& a ) + db->modify( db->get< account_authority_object, by_account >( AN("alice") ), [&]( account_authority_object& a ) { a.active = authority( 1, active_key.get_public_key(), 1 ); }); account_update_operation op; - op.account = "alice"; + op.account = AN("alice"); op.json_metadata = "{\"success\":true}"; signed_transaction tx; tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); BOOST_TEST_MESSAGE( " Tests when owner authority is not updated ---" ); BOOST_TEST_MESSAGE( "--- Test failure when no signature" ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); BOOST_TEST_MESSAGE( "--- Test failure when wrong signature" ); tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); BOOST_TEST_MESSAGE( "--- Test failure when containing additional incorrect signature" ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); BOOST_TEST_MESSAGE( "--- Test failure when containing duplicate signatures" ); tx.signatures.clear(); tx.sign( active_key, db->get_chain_id() ); tx.sign( active_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); BOOST_TEST_MESSAGE( "--- Test success on active key" ); tx.signatures.clear(); @@ -262,22 +256,21 @@ BOOST_AUTO_TEST_CASE( account_update_authorities ) op.owner = authority( 1, active_key.get_public_key(), 1 ); tx.operations.push_back( op ); tx.sign( active_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_owner_auth ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_owner_auth ); BOOST_TEST_MESSAGE( "--- Test failure when owner key and active key are present" ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); BOOST_TEST_MESSAGE( "--- Test failure when incorrect signature" ); tx.signatures.clear(); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0), tx_missing_owner_auth ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0), tx_missing_owner_auth ); BOOST_TEST_MESSAGE( "--- Test failure when duplicate owner keys are present" ); tx.signatures.clear(); tx.sign( alice_private_key, db->get_chain_id() ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0), tx_duplicate_sig ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0), tx_duplicate_sig ); BOOST_TEST_MESSAGE( "--- Test success when updating the owner authority with an owner key" ); tx.signatures.clear(); @@ -301,7 +294,7 @@ BOOST_AUTO_TEST_CASE( account_update_apply ) BOOST_TEST_MESSAGE( "--- Test normal update" ); account_update_operation op; - op.account = "alice"; + op.account = AN("alice"); op.owner = authority( 1, new_private_key.get_public_key(), 1 ); op.active = authority( 2, new_private_key.get_public_key(), 2 ); op.memo_key = new_private_key.get_public_key(); @@ -309,14 +302,14 @@ BOOST_AUTO_TEST_CASE( account_update_apply ) signed_transaction tx; tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - const account_object& acct = db->get_account( "alice" ); - const account_authority_object& acct_auth = db->get< account_authority_object, by_account >( "alice" ); + const account_object& acct = db->get_account( AN("alice") ); + const account_authority_object& acct_auth = db->get< account_authority_object, by_account >( AN("alice") ); - BOOST_REQUIRE( acct.name == "alice" ); + BOOST_REQUIRE( acct.name == AN("alice") ); BOOST_REQUIRE( acct_auth.owner == authority( 1, new_private_key.get_public_key(), 1 ) ); BOOST_REQUIRE( acct_auth.active == authority( 2, new_private_key.get_public_key(), 2 ) ); BOOST_REQUIRE( acct.memo_key == new_private_key.get_public_key() ); @@ -334,5011 +327,1688 @@ BOOST_AUTO_TEST_CASE( account_update_apply ) BOOST_TEST_MESSAGE( "--- Test failure when updating a non-existent account" ); tx.operations.clear(); tx.signatures.clear(); - op.account = "bob"; + op.account = AN("bob"); tx.operations.push_back( op ); tx.sign( new_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ) + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ) validate_database(); BOOST_TEST_MESSAGE( "--- Test failure when account authority does not exist" ); tx.clear(); op = account_update_operation(); - op.account = "alice"; - op.posting = authority(); - op.posting->weight_threshold = 1; - op.posting->add_authorities( "dave", 1 ); + op.account = AN("alice"); + op.active = authority(); + op.active->weight_threshold = 1; + op.active->add_authorities( "dave", 1 ); tx.operations.push_back( op ); tx.sign( new_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( comment_validate ) +BOOST_AUTO_TEST_CASE( account_delete_apply ) { try { - BOOST_TEST_MESSAGE( "Testing: comment_validate" ); + BOOST_TEST_MESSAGE( "Testing: account_delete_apply" ); + + ACTORS( (alice)(bob) ) + const auto& alice_auth = db->get< account_authority_object, by_account >( AN("alice") ); + const auto& bob_auth = db->get< account_authority_object, by_account >( AN("bob") ); + + BOOST_TEST_MESSAGE( "--- Test normal delete" ); + + account_delete_operation op; + op.account = AN("alice"); + authority a(1, public_key_type(), 1); + + signed_transaction tx; + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + + validate_database(); + + const auto& new_alice = db->get_account( AN("alice") ); + const auto& new_alice_auth = db->get< account_authority_object, by_account >( AN("alice") ); + BOOST_REQUIRE( new_alice_auth.owner == a ); + BOOST_REQUIRE( new_alice_auth.active == a ); + BOOST_REQUIRE( new_alice.memo_key == public_key_type() ); + + + BOOST_TEST_MESSAGE( "--- Test failure when deleting account without owner authorities"); + tx.operations.clear(); + tx.signatures.clear(); + op.account = AN("bob"); + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + BOOST_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + validate_database(); + + + BOOST_TEST_MESSAGE( "--- Test failure when account does not exist" ); + tx.clear(); + op = account_delete_operation(); + op.account = AN("alice2"); + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + BOOST_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + validate_database(); + } + FC_LOG_AND_RETHROW() +} + +BOOST_AUTO_TEST_CASE( transfer_validate ) +{ + try + { + BOOST_TEST_MESSAGE( "Testing: transfer_validate" ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( comment_authorities ) +BOOST_AUTO_TEST_CASE( transfer_authorities ) { try { - BOOST_TEST_MESSAGE( "Testing: comment_authorities" ); + ACTORS( (alice)(bob) ) + fund( AN("alice"), 10000000 ); - ACTORS( (alice)(bob) ); - generate_blocks( 60 / STEEM_BLOCK_INTERVAL ); - - comment_operation op; - op.author = "alice"; - op.permlink = "lorem"; - op.parent_author = ""; - op.parent_permlink = "ipsum"; - op.title = "Lorem Ipsum"; - op.body = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; - op.json_metadata = "{\"foo\":\"bar\"}"; + BOOST_TEST_MESSAGE( "Testing: transfer_authorities" ); + + transfer_operation op; + op.from = AN("alice"); + op.to = AN("bob"); + op.fee = asset(100000, SOPHIATX_SYMBOL); + op.amount = ASSET( "2.500 SPHTX" ); signed_transaction tx; + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); BOOST_TEST_MESSAGE( "--- Test failure when no signatures" ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_posting_auth ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); BOOST_TEST_MESSAGE( "--- Test failure when duplicate signatures" ); - tx.sign( alice_post_key, db->get_chain_id() ); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); - - BOOST_TEST_MESSAGE( "--- Test success with post signature" ); tx.signatures.clear(); - tx.sign( alice_post_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); BOOST_TEST_MESSAGE( "--- Test failure when signed by an additional signature not in the creator's authority" ); + tx.signatures.clear(); + tx.sign( alice_private_key, db->get_chain_id() ); tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_irrelevant_sig ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); - BOOST_TEST_MESSAGE( "--- Test failure when signed by a signature not in the creator's authority" ); + BOOST_TEST_MESSAGE( "--- Test success with witness signature" ); tx.signatures.clear(); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_posting_auth ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( comment_apply ) +BOOST_AUTO_TEST_CASE( signature_stripping ) { try { - BOOST_TEST_MESSAGE( "Testing: comment_apply" ); + // Alice, Bob and Sam all have 2-of-3 multisig on corp. + // Legitimate tx signed by (Alice, Bob) goes through. + // Sam shouldn't be able to add or remove signatures to get the transaction to process multiple times. - ACTORS( (alice)(bob)(sam) ) - generate_blocks( 60 / STEEM_BLOCK_INTERVAL ); - - comment_operation op; - op.author = "alice"; - op.permlink = "lorem"; - op.parent_author = ""; - op.parent_permlink = "ipsum"; - op.title = "Lorem Ipsum"; - op.body = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; - op.json_metadata = "{\"foo\":\"bar\"}"; + ACTORS( (alice)(bob)(sam)(corp) ) + fund( AN("corp"), 10000000 ); + + account_update_operation update_op; + update_op.account = AN("corp"); + update_op.active = authority( 2, AN("alice"), 1, AN("bob"), 1, AN("sam"), 1 ); signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.operations.push_back( update_op ); - BOOST_TEST_MESSAGE( "--- Test Alice posting a root comment" ); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( corp_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - const comment_object& alice_comment = db->get_comment( "alice", string( "lorem" ) ); + tx.operations.clear(); + tx.signatures.clear(); - BOOST_REQUIRE( alice_comment.author == op.author ); - BOOST_REQUIRE( to_string( alice_comment.permlink ) == op.permlink ); - BOOST_REQUIRE( to_string( alice_comment.parent_permlink ) == op.parent_permlink ); - BOOST_REQUIRE( alice_comment.last_update == db->head_block_time() ); - BOOST_REQUIRE( alice_comment.created == db->head_block_time() ); - BOOST_REQUIRE( alice_comment.net_rshares.value == 0 ); - BOOST_REQUIRE( alice_comment.abs_rshares.value == 0 ); - BOOST_REQUIRE( alice_comment.cashout_time == fc::time_point_sec( db->head_block_time() + fc::seconds( STEEM_CASHOUT_WINDOW_SECONDS ) ) ); + transfer_operation transfer_op; + transfer_op.from = AN("corp"); + transfer_op.to = AN("sam"); + transfer_op.fee = ASSET( "0.100000 SPHTX" ); + transfer_op.amount = ASSET( "1.000000 SPHTX" ); - #ifndef IS_LOW_MEM - const auto& alice_comment_content = db->get< comment_content_object, by_comment >( alice_comment.id ); - BOOST_REQUIRE( to_string( alice_comment_content.title ) == op.title ); - BOOST_REQUIRE( to_string( alice_comment_content.body ) == op.body ); - BOOST_REQUIRE( to_string( alice_comment_content.json_metadata ) == op.json_metadata ); - #else - const auto* alice_comment_content = db->find< comment_content_object, by_comment >( alice_comment.id ); - BOOST_REQUIRE( alice_comment_content == nullptr ); - #endif + tx.operations.push_back( transfer_op ); - validate_database(); + tx.sign( alice_private_key, db->get_chain_id() ); + signature_type alice_sig = tx.signatures.back(); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); + tx.sign( bob_private_key, db->get_chain_id() ); + signature_type bob_sig = tx.signatures.back(); + tx.sign( sam_private_key, db->get_chain_id() ); + signature_type sam_sig = tx.signatures.back(); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); - BOOST_TEST_MESSAGE( "--- Test Bob posting a comment on a non-existent comment" ); - op.author = "bob"; - op.permlink = "ipsum"; - op.parent_author = "alice"; - op.parent_permlink = "foobar"; + tx.signatures.clear(); + tx.signatures.push_back( alice_sig ); + tx.signatures.push_back( bob_sig ); + db->push_transaction( tx, 0 ); tx.signatures.clear(); - tx.operations.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + tx.signatures.push_back( alice_sig ); + tx.signatures.push_back( sam_sig ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + } + FC_LOG_AND_RETHROW() +} - BOOST_TEST_MESSAGE( "--- Test Bob posting a comment on Alice's comment" ); - op.parent_permlink = "lorem"; +BOOST_AUTO_TEST_CASE( transfer_apply ) +{ + try + { + BOOST_TEST_MESSAGE( "Testing: transfer_apply" ); - tx.signatures.clear(); - tx.operations.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + ACTORS( (alice)(bob) ) + fund( AN("alice"), 10200000 ); - const comment_object& bob_comment = db->get_comment( "bob", string( "ipsum" ) ); - - BOOST_REQUIRE( bob_comment.author == op.author ); - BOOST_REQUIRE( to_string( bob_comment.permlink ) == op.permlink ); - BOOST_REQUIRE( bob_comment.parent_author == op.parent_author ); - BOOST_REQUIRE( to_string( bob_comment.parent_permlink ) == op.parent_permlink ); - BOOST_REQUIRE( bob_comment.last_update == db->head_block_time() ); - BOOST_REQUIRE( bob_comment.created == db->head_block_time() ); - BOOST_REQUIRE( bob_comment.net_rshares.value == 0 ); - BOOST_REQUIRE( bob_comment.abs_rshares.value == 0 ); - BOOST_REQUIRE( bob_comment.cashout_time == bob_comment.created + STEEM_CASHOUT_WINDOW_SECONDS ); - BOOST_REQUIRE( bob_comment.root_comment == alice_comment.id ); - validate_database(); + BOOST_REQUIRE( alice.balance.amount.value == ASSET( "10.200000 SPHTX" ).amount.value ); + BOOST_REQUIRE( bob.balance.amount.value == ASSET(" 0.000000 SPHTX" ).amount.value ); - BOOST_TEST_MESSAGE( "--- Test Sam posting a comment on Bob's comment" ); + signed_transaction tx; + transfer_operation op; - op.author = "sam"; - op.permlink = "dolor"; - op.parent_author = "bob"; - op.parent_permlink = "ipsum"; + op.from = AN("alice"); + op.to = AN("bob"); + op.fee = ASSET( "0.100000 SPHTX" ); + op.amount = ASSET( "5.000000 SPHTX" ); - tx.signatures.clear(); - tx.operations.clear(); + BOOST_TEST_MESSAGE( "--- Test normal transaction" ); tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - const comment_object& sam_comment = db->get_comment( "sam", string( "dolor" ) ); - - BOOST_REQUIRE( sam_comment.author == op.author ); - BOOST_REQUIRE( to_string( sam_comment.permlink ) == op.permlink ); - BOOST_REQUIRE( sam_comment.parent_author == op.parent_author ); - BOOST_REQUIRE( to_string( sam_comment.parent_permlink ) == op.parent_permlink ); - BOOST_REQUIRE( sam_comment.last_update == db->head_block_time() ); - BOOST_REQUIRE( sam_comment.created == db->head_block_time() ); - BOOST_REQUIRE( sam_comment.net_rshares.value == 0 ); - BOOST_REQUIRE( sam_comment.abs_rshares.value == 0 ); - BOOST_REQUIRE( sam_comment.cashout_time == sam_comment.created + STEEM_CASHOUT_WINDOW_SECONDS ); - BOOST_REQUIRE( sam_comment.root_comment == alice_comment.id ); + BOOST_REQUIRE( alice.balance.amount.value >= ASSET( "5.100000 SPHTX" ).amount.value && alice.balance.amount.value < ASSET( "5.110000 SPHTX" ).amount.value); + BOOST_REQUIRE( bob.balance.amount.value == ASSET( "5.000000 SPHTX" ).amount.value ); validate_database(); - generate_blocks( 60 * 5 / STEEM_BLOCK_INTERVAL + 1 ); - - BOOST_TEST_MESSAGE( "--- Test modifying a comment" ); - const auto& mod_sam_comment = db->get_comment( "sam", string( "dolor" ) ); - const auto& mod_bob_comment = db->get_comment( "bob", string( "ipsum" ) ); - const auto& mod_alice_comment = db->get_comment( "alice", string( "lorem" ) ); - - FC_UNUSED(mod_bob_comment, mod_alice_comment); - - fc::time_point_sec created = mod_sam_comment.created; + BOOST_TEST_MESSAGE( "--- Generating a block" ); + generate_block(); - db->modify( mod_sam_comment, [&]( comment_object& com ) - { - com.net_rshares = 10; - com.abs_rshares = 10; - }); + const auto& new_alice = db->get_account( AN("alice") ); + const auto& new_bob = db->get_account( AN("bob") ); - db->modify( db->get_dynamic_global_properties(), [&]( dynamic_global_property_object& o) - { - o.total_reward_shares2 = steem::chain::util::evaluate_reward_curve( 10 ); - }); + BOOST_REQUIRE( new_alice.balance.amount.value >= ASSET( "5.100000 SPHTX" ).amount.value && new_alice.balance.amount.value < ASSET( "5.110000 SPHTX" ).amount.value ); + BOOST_REQUIRE( new_bob.balance.amount.value == ASSET( "5.000000 SPHTX" ).amount.value ); + validate_database(); + BOOST_TEST_MESSAGE( "--- Test emptying an account" ); tx.signatures.clear(); tx.operations.clear(); - op.title = "foo"; - op.body = "bar"; - op.json_metadata = "{\"bar\":\"foo\"}"; tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, database::skip_transaction_dupe_check ); - BOOST_REQUIRE( mod_sam_comment.author == op.author ); - BOOST_REQUIRE( to_string( mod_sam_comment.permlink ) == op.permlink ); - BOOST_REQUIRE( mod_sam_comment.parent_author == op.parent_author ); - BOOST_REQUIRE( to_string( mod_sam_comment.parent_permlink ) == op.parent_permlink ); - BOOST_REQUIRE( mod_sam_comment.last_update == db->head_block_time() ); - BOOST_REQUIRE( mod_sam_comment.created == created ); - BOOST_REQUIRE( mod_sam_comment.cashout_time == mod_sam_comment.created + STEEM_CASHOUT_WINDOW_SECONDS ); + BOOST_REQUIRE( new_alice.balance.amount.value >= ASSET( "0.000000 SPHTX" ).amount.value && new_alice.balance.amount.value < ASSET( "0.010000 SPHTX" ).amount.value); + BOOST_REQUIRE( new_bob.balance.amount.value >= ASSET( "10.000000 SPHTX" ).amount.value && new_bob.balance.amount.value < ASSET( "10.010000 SPHTX" ).amount.value); validate_database(); - BOOST_TEST_MESSAGE( "--- Test failure posting withing 1 minute" ); - - op.permlink = "sit"; - op.parent_author = ""; - op.parent_permlink = "test"; - tx.operations.clear(); + BOOST_TEST_MESSAGE( "--- Test transferring non-existent funds" ); tx.signatures.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( 60 * 5 / STEEM_BLOCK_INTERVAL ); - - op.permlink = "amet"; tx.operations.clear(); - tx.signatures.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::exception ); + BOOST_REQUIRE( new_alice.balance.amount.value >= ASSET( "0.000000 SPHTX" ).amount.value && new_alice.balance.amount.value < ASSET( "0.010000 SPHTX" ).amount.value); + BOOST_REQUIRE( new_bob.balance.amount.value >= ASSET( "10.000000 SPHTX" ).amount.value && new_bob.balance.amount.value < ASSET( "10.010000 SPHTX" ).amount.value); validate_database(); - generate_block(); - db->push_transaction( tx, 0 ); - validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( comment_delete_apply ) +BOOST_AUTO_TEST_CASE( transfer_to_vesting_validate ) { try { - BOOST_TEST_MESSAGE( "Testing: comment_delete_apply" ); - ACTORS( (alice) ) - generate_block(); + BOOST_TEST_MESSAGE( "Testing: transfer_to_vesting_validate" ); - vest( "alice", ASSET( "1000.000 TESTS" ) ); + validate_database(); + } + FC_LOG_AND_RETHROW() +} - generate_block(); +BOOST_AUTO_TEST_CASE( transfer_to_vesting_authorities ) +{ + try + { + ACTORS( (alice)(bob) ) + fund( AN("alice"), 10000000 ); - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); + BOOST_TEST_MESSAGE( "Testing: transfer_to_vesting_authorities" ); + + transfer_to_vesting_operation op; + op.from = AN("alice"); + op.to = AN("bob"); + op.amount = ASSET( "2.500 SPHTX" ); signed_transaction tx; - comment_operation comment; - vote_operation vote; - - comment.author = "alice"; - comment.permlink = "test1"; - comment.title = "test"; - comment.body = "foo bar"; - comment.parent_permlink = "test"; - vote.voter = "alice"; - vote.author = "alice"; - vote.permlink = "test1"; - vote.weight = STEEM_100_PERCENT; - tx.operations.push_back( comment ); - tx.operations.push_back( vote ); - tx.set_expiration( db->head_block_time() + STEEM_MIN_TRANSACTION_EXPIRATION_LIMIT ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.operations.push_back( op ); - BOOST_TEST_MESSAGE( "--- Test failue deleting a comment with positive rshares" ); + BOOST_TEST_MESSAGE( "--- Test failure when no signatures" ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); - delete_comment_operation op; - op.author = "alice"; - op.permlink = "test1"; - tx.clear(); - tx.operations.push_back( op ); + BOOST_TEST_MESSAGE( "--- Test failure when duplicate signatures" ); + tx.signatures.clear(); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::assert_exception ); - + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); - BOOST_TEST_MESSAGE( "--- Test success deleting a comment with negative rshares" ); + BOOST_TEST_MESSAGE( "--- Test failure when signed by an additional signature not in the creator's authority" ); + tx.signatures.clear(); + tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); - generate_block(); - vote.weight = -1 * STEEM_100_PERCENT; - tx.clear(); - tx.operations.push_back( vote ); - tx.operations.push_back( op ); + BOOST_TEST_MESSAGE( "--- Test success with from signature" ); + tx.signatures.clear(); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - auto test_comment = db->find< comment_object, by_permlink >( boost::make_tuple( "alice", string( "test1" ) ) ); - BOOST_REQUIRE( test_comment == nullptr ); - + validate_database(); + } + FC_LOG_AND_RETHROW() +} - BOOST_TEST_MESSAGE( "--- Test failure deleting a comment past cashout" ); - generate_blocks( STEEM_MIN_ROOT_COMMENT_INTERVAL.to_seconds() / STEEM_BLOCK_INTERVAL ); +BOOST_AUTO_TEST_CASE( transfer_to_vesting_apply ) +{ + try + { + BOOST_TEST_MESSAGE( "Testing: transfer_to_vesting_apply" ); - tx.clear(); - tx.operations.push_back( comment ); - tx.set_expiration( db->head_block_time() + STEEM_MIN_TRANSACTION_EXPIRATION_LIMIT ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + ACTORS( (alice)(bob) ) + fund( AN("alice"), 10000000 ); - generate_blocks( STEEM_CASHOUT_WINDOW_SECONDS / STEEM_BLOCK_INTERVAL ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test1" ) ).cashout_time == fc::time_point_sec::maximum() ); + const auto& gpo = db->get_dynamic_global_properties(); - tx.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MIN_TRANSACTION_EXPIRATION_LIMIT ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::assert_exception ); + BOOST_REQUIRE( alice.balance == ASSET( "10.000000 SPHTX" ) ); + auto alice_shares = alice.vesting_shares; + auto bob_shares = bob.vesting_shares; - BOOST_TEST_MESSAGE( "--- Test failure deleting a comment with a reply" ); + transfer_to_vesting_operation op; + op.from = AN("alice"); + op.to = ""; + op.amount = ASSET( "7.500000 SPHTX" ); - comment.permlink = "test2"; - comment.parent_author = "alice"; - comment.parent_permlink = "test1"; - tx.clear(); - tx.operations.push_back( comment ); - tx.set_expiration( db->head_block_time() + STEEM_MIN_TRANSACTION_EXPIRATION_LIMIT ); + signed_transaction tx; + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - generate_blocks( STEEM_MIN_ROOT_COMMENT_INTERVAL.to_seconds() / STEEM_BLOCK_INTERVAL ); - comment.permlink = "test3"; - comment.parent_permlink = "test2"; - tx.clear(); - tx.operations.push_back( comment ); - tx.set_expiration( db->head_block_time() + STEEM_MIN_TRANSACTION_EXPIRATION_LIMIT ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + BOOST_REQUIRE( alice.balance.amount.value == ASSET( "2.500000 SPHTX" ).amount.value ); + BOOST_REQUIRE( alice.vesting_shares.amount.value == ASSET( "7.500000 VESTS" ).amount.value ); + validate_database(); - op.permlink = "test2"; - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::assert_exception ); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( vote_validate ) +BOOST_AUTO_TEST_CASE( withdraw_vesting_validate ) { try { - BOOST_TEST_MESSAGE( "Testing: vote_validate" ); + BOOST_TEST_MESSAGE( "Testing: withdraw_vesting_validate" ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( vote_authorities ) +BOOST_AUTO_TEST_CASE( withdraw_vesting_authorities ) { try { - BOOST_TEST_MESSAGE( "Testing: vote_authorities" ); + BOOST_TEST_MESSAGE( "Testing: withdraw_vesting_authorities" ); + + ACTORS( (alice)(bob) ) + fund( AN("alice"), 10000000 ); + vest( AN("alice"), 10000000 ); + + const auto& new_alice = db->get_account(AN("alice")); + withdraw_vesting_operation op; + op.account = AN("alice"); + op.vesting_shares = ASSET( "1.000000 VESTS" ); + + signed_transaction tx; + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + + BOOST_TEST_MESSAGE( "--- Test failure when no signature." ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); + + BOOST_TEST_MESSAGE( "--- Test success with account signature" ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, database::skip_transaction_dupe_check ); + + BOOST_TEST_MESSAGE( "--- Test failure with duplicate signature" ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_duplicate_sig ); + + BOOST_TEST_MESSAGE( "--- Test failure with additional incorrect signature" ); + tx.signatures.clear(); + tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_irrelevant_sig ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( vote_apply ) +BOOST_AUTO_TEST_CASE( withdraw_vesting_apply ) { try { - BOOST_TEST_MESSAGE( "Testing: vote_apply" ); + BOOST_TEST_MESSAGE( "Testing: withdraw_vesting_apply" ); - ACTORS( (alice)(bob)(sam)(dave) ) + ACTORS( (alice) ) generate_block(); - - vest( "alice", ASSET( "10.000 TESTS" ) ); - validate_database(); - vest( "bob" , ASSET( "10.000 TESTS" ) ); - vest( "sam" , ASSET( "10.000 TESTS" ) ); - vest( "dave" , ASSET( "10.000 TESTS" ) ); + fund( AN("alice"), 10000000 ); + vest( AN("alice"), ASSET( "10.000000 SPHTX" ) ); generate_block(); - const auto& vote_idx = db->get_index< comment_vote_index >().indices().get< by_comment_voter >(); + + BOOST_TEST_MESSAGE( "--- Test withdraw of existing VESTS" ); { - const auto& alice = db->get_account( "alice" ); + const auto& alice = db->get_account( AN("alice") ); - signed_transaction tx; - comment_operation comment_op; - comment_op.author = "alice"; - comment_op.permlink = "foo"; - comment_op.parent_permlink = "test"; - comment_op.title = "bar"; - comment_op.body = "foo bar"; - tx.operations.push_back( comment_op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + withdraw_vesting_operation op; + op.account = AN("alice"); + op.vesting_shares = asset( alice.vesting_shares.amount / 2, VESTS_SYMBOL ); - BOOST_TEST_MESSAGE( "--- Testing voting on a non-existent comment" ); + auto old_vesting_shares = alice.vesting_shares; - tx.operations.clear(); - tx.signatures.clear(); - - vote_operation op; - op.voter = "alice"; - op.author = "bob"; - op.permlink = "foo"; - op.weight = STEEM_100_PERCENT; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - validate_database(); - - BOOST_TEST_MESSAGE( "--- Testing voting with a weight of 0" ); - - op.weight = (int16_t) 0; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - validate_database(); - - BOOST_TEST_MESSAGE( "--- Testing success" ); - - auto old_voting_power = alice.voting_power; - - op.weight = STEEM_100_PERCENT; - op.author = "alice"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - - db->push_transaction( tx, 0 ); - - auto& alice_comment = db->get_comment( "alice", string( "foo" ) ); - auto itr = vote_idx.find( std::make_tuple( alice_comment.id, alice.id ) ); - int64_t max_vote_denom = ( db->get_dynamic_global_properties().vote_power_reserve_rate * STEEM_VOTE_REGENERATION_SECONDS ) / (60*60*24); - - BOOST_REQUIRE( alice.voting_power == old_voting_power - ( ( old_voting_power + max_vote_denom - 1 ) / max_vote_denom ) ); - BOOST_REQUIRE( alice.last_vote_time == db->head_block_time() ); - BOOST_REQUIRE( alice_comment.net_rshares.value == alice.vesting_shares.amount.value * ( old_voting_power - alice.voting_power ) / STEEM_100_PERCENT - STEEM_VOTE_DUST_THRESHOLD ); - BOOST_REQUIRE( alice_comment.cashout_time == alice_comment.created + STEEM_CASHOUT_WINDOW_SECONDS ); - BOOST_REQUIRE( itr->rshares == alice.vesting_shares.amount.value * ( old_voting_power - alice.voting_power ) / STEEM_100_PERCENT - STEEM_VOTE_DUST_THRESHOLD ); - BOOST_REQUIRE( itr != vote_idx.end() ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test reduced power for quick voting" ); - - generate_blocks( db->head_block_time() + STEEM_MIN_VOTE_INTERVAL_SEC ); - - old_voting_power = db->get_account( "alice" ).voting_power; - - comment_op.author = "bob"; - comment_op.permlink = "foo"; - comment_op.title = "bar"; - comment_op.body = "foo bar"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( comment_op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.weight = STEEM_100_PERCENT / 2; - op.voter = "alice"; - op.author = "bob"; - op.permlink = "foo"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - const auto& bob_comment = db->get_comment( "bob", string( "foo" ) ); - itr = vote_idx.find( std::make_tuple( bob_comment.id, alice.id ) ); - - BOOST_REQUIRE( db->get_account( "alice" ).voting_power == old_voting_power - ( ( old_voting_power + max_vote_denom - 1 ) * STEEM_100_PERCENT / ( 2 * max_vote_denom * STEEM_100_PERCENT ) ) ); - BOOST_REQUIRE( bob_comment.net_rshares.value == alice.vesting_shares.amount.value * ( old_voting_power - db->get_account( "alice" ).voting_power ) / STEEM_100_PERCENT - STEEM_VOTE_DUST_THRESHOLD ); - BOOST_REQUIRE( bob_comment.cashout_time == bob_comment.created + STEEM_CASHOUT_WINDOW_SECONDS ); - BOOST_REQUIRE( itr != vote_idx.end() ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test payout time extension on vote" ); - - old_voting_power = db->get_account( "bob" ).voting_power; - auto old_abs_rshares = db->get_comment( "alice", string( "foo" ) ).abs_rshares.value; - - generate_blocks( db->head_block_time() + fc::seconds( ( STEEM_CASHOUT_WINDOW_SECONDS / 2 ) ), true ); - - const auto& new_bob = db->get_account( "bob" ); - const auto& new_alice_comment = db->get_comment( "alice", string( "foo" ) ); - - op.weight = STEEM_100_PERCENT; - op.voter = "bob"; - op.author = "alice"; - op.permlink = "foo"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - itr = vote_idx.find( std::make_tuple( new_alice_comment.id, new_bob.id ) ); - uint128_t new_cashout_time = db->head_block_time().sec_since_epoch() + STEEM_CASHOUT_WINDOW_SECONDS; - - BOOST_REQUIRE( new_bob.voting_power == STEEM_100_PERCENT - ( ( STEEM_100_PERCENT + max_vote_denom - 1 ) / max_vote_denom ) ); - BOOST_REQUIRE( new_alice_comment.net_rshares.value == old_abs_rshares + new_bob.vesting_shares.amount.value * ( old_voting_power - new_bob.voting_power ) / STEEM_100_PERCENT - STEEM_VOTE_DUST_THRESHOLD ); - BOOST_REQUIRE( new_alice_comment.cashout_time == new_alice_comment.created + STEEM_CASHOUT_WINDOW_SECONDS ); - BOOST_REQUIRE( itr != vote_idx.end() ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test negative vote" ); - - const auto& new_sam = db->get_account( "sam" ); - const auto& new_bob_comment = db->get_comment( "bob", string( "foo" ) ); - - old_abs_rshares = new_bob_comment.abs_rshares.value; - - op.weight = -1 * STEEM_100_PERCENT / 2; - op.voter = "sam"; - op.author = "bob"; - op.permlink = "foo"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - itr = vote_idx.find( std::make_tuple( new_bob_comment.id, new_sam.id ) ); - new_cashout_time = db->head_block_time().sec_since_epoch() + STEEM_CASHOUT_WINDOW_SECONDS; - auto sam_weight /*= ( ( uint128_t( new_sam.vesting_shares.amount.value ) ) / 400 + 1 ).to_uint64();*/ - = ( ( uint128_t( new_sam.vesting_shares.amount.value ) * ( ( STEEM_100_PERCENT + max_vote_denom - 1 ) / ( 2 * max_vote_denom ) ) ) / STEEM_100_PERCENT ).to_uint64() - STEEM_VOTE_DUST_THRESHOLD; - - BOOST_REQUIRE( new_sam.voting_power == STEEM_100_PERCENT - ( ( STEEM_100_PERCENT + max_vote_denom - 1 ) / ( 2 * max_vote_denom ) ) ); - BOOST_REQUIRE( static_cast(new_bob_comment.net_rshares.value) == old_abs_rshares - sam_weight ); - BOOST_REQUIRE( static_cast(new_bob_comment.abs_rshares.value) == old_abs_rshares + sam_weight ); - BOOST_REQUIRE( new_bob_comment.cashout_time == new_bob_comment.created + STEEM_CASHOUT_WINDOW_SECONDS ); - BOOST_REQUIRE( itr != vote_idx.end() ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test nested voting on nested comments" ); - - old_abs_rshares = new_alice_comment.children_abs_rshares.value; - int64_t regenerated_power = (STEEM_100_PERCENT * ( db->head_block_time() - db->get_account( "alice").last_vote_time ).to_seconds() ) / STEEM_VOTE_REGENERATION_SECONDS; - int64_t used_power = ( db->get_account( "alice" ).voting_power + regenerated_power + max_vote_denom - 1 ) / max_vote_denom; - - comment_op.author = "sam"; - comment_op.permlink = "foo"; - comment_op.title = "bar"; - comment_op.body = "foo bar"; - comment_op.parent_author = "alice"; - comment_op.parent_permlink = "foo"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( comment_op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.weight = STEEM_100_PERCENT; - op.voter = "alice"; - op.author = "sam"; - op.permlink = "foo"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - auto new_rshares = ( ( fc::uint128_t( db->get_account( "alice" ).vesting_shares.amount.value ) * used_power ) / STEEM_100_PERCENT ).to_uint64() - STEEM_VOTE_DUST_THRESHOLD; - - BOOST_REQUIRE( db->get_comment( "alice", string( "foo" ) ).cashout_time == db->get_comment( "alice", string( "foo" ) ).created + STEEM_CASHOUT_WINDOW_SECONDS ); - - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test increasing vote rshares" ); - - generate_blocks( db->head_block_time() + STEEM_MIN_VOTE_INTERVAL_SEC ); - - auto new_alice = db->get_account( "alice" ); - auto alice_bob_vote = vote_idx.find( std::make_tuple( new_bob_comment.id, new_alice.id ) ); - auto old_vote_rshares = alice_bob_vote->rshares; - auto old_net_rshares = new_bob_comment.net_rshares.value; - old_abs_rshares = new_bob_comment.abs_rshares.value; - used_power = ( ( STEEM_1_PERCENT * 25 * ( new_alice.voting_power ) / STEEM_100_PERCENT ) + max_vote_denom - 1 ) / max_vote_denom; - auto alice_voting_power = new_alice.voting_power - used_power; - - op.voter = "alice"; - op.weight = STEEM_1_PERCENT * 25; - op.author = "bob"; - op.permlink = "foo"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - alice_bob_vote = vote_idx.find( std::make_tuple( new_bob_comment.id, new_alice.id ) ); - - new_rshares = ( ( fc::uint128_t( new_alice.vesting_shares.amount.value ) * used_power ) / STEEM_100_PERCENT ).to_uint64() - STEEM_VOTE_DUST_THRESHOLD; - - BOOST_REQUIRE( new_bob_comment.net_rshares == old_net_rshares - old_vote_rshares + new_rshares ); - BOOST_REQUIRE( new_bob_comment.abs_rshares == old_abs_rshares + new_rshares ); - BOOST_REQUIRE( new_bob_comment.cashout_time == new_bob_comment.created + STEEM_CASHOUT_WINDOW_SECONDS ); - BOOST_REQUIRE( static_cast(alice_bob_vote->rshares) == new_rshares ); - BOOST_REQUIRE( alice_bob_vote->last_update == db->head_block_time() ); - BOOST_REQUIRE( alice_bob_vote->vote_percent == op.weight ); - BOOST_REQUIRE( db->get_account( "alice" ).voting_power == alice_voting_power ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test decreasing vote rshares" ); - - generate_blocks( db->head_block_time() + STEEM_MIN_VOTE_INTERVAL_SEC ); + signed_transaction tx; + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - old_vote_rshares = new_rshares; - old_net_rshares = new_bob_comment.net_rshares.value; - old_abs_rshares = new_bob_comment.abs_rshares.value; - used_power = ( uint64_t( STEEM_1_PERCENT ) * 75 * uint64_t( alice_voting_power ) ) / STEEM_100_PERCENT; - used_power = ( used_power + max_vote_denom - 1 ) / max_vote_denom; - alice_voting_power -= used_power; + BOOST_REQUIRE( alice.vesting_shares.amount.value == old_vesting_shares.amount.value ); + BOOST_REQUIRE( alice.vesting_withdraw_rate.amount.value == ( old_vesting_shares.amount / ( SOPHIATX_VESTING_WITHDRAW_INTERVALS * 2 ) ).value ); + BOOST_REQUIRE( alice.to_withdraw.value == op.vesting_shares.amount.value ); + BOOST_REQUIRE( alice.next_vesting_withdrawal == db->head_block_time() + SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS ); + validate_database(); - op.weight = STEEM_1_PERCENT * -75; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - alice_bob_vote = vote_idx.find( std::make_tuple( new_bob_comment.id, new_alice.id ) ); + BOOST_TEST_MESSAGE( "--- Test changing vesting withdrawal" ); + tx.operations.clear(); + tx.signatures.clear(); - new_rshares = ( ( fc::uint128_t( new_alice.vesting_shares.amount.value ) * used_power ) / STEEM_100_PERCENT ).to_uint64() - STEEM_VOTE_DUST_THRESHOLD; + op.vesting_shares = asset( alice.vesting_shares.amount / 3, VESTS_SYMBOL ); + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - BOOST_REQUIRE( new_bob_comment.net_rshares == old_net_rshares - old_vote_rshares - new_rshares ); - BOOST_REQUIRE( new_bob_comment.abs_rshares == old_abs_rshares + new_rshares ); - BOOST_REQUIRE( new_bob_comment.cashout_time == new_bob_comment.created + STEEM_CASHOUT_WINDOW_SECONDS ); - BOOST_REQUIRE( alice_bob_vote->rshares == -1 * static_cast(new_rshares) ); - BOOST_REQUIRE( alice_bob_vote->last_update == db->head_block_time() ); - BOOST_REQUIRE( alice_bob_vote->vote_percent == op.weight ); - BOOST_REQUIRE( db->get_account( "alice" ).voting_power == alice_voting_power ); - validate_database(); + BOOST_REQUIRE( alice.vesting_shares.amount.value == old_vesting_shares.amount.value ); + BOOST_REQUIRE( alice.vesting_withdraw_rate.amount.value == ( old_vesting_shares.amount / ( SOPHIATX_VESTING_WITHDRAW_INTERVALS * 3 ) ).value ); + BOOST_REQUIRE( alice.to_withdraw.value == op.vesting_shares.amount.value ); + BOOST_REQUIRE( alice.next_vesting_withdrawal == db->head_block_time() + SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS ); + validate_database(); - BOOST_TEST_MESSAGE( "--- Test changing a vote to 0 weight (aka: removing a vote)" ); + BOOST_TEST_MESSAGE( "--- Test withdrawing more vests than available" ); + //auto old_withdraw_amount = alice.to_withdraw; + tx.operations.clear(); + tx.signatures.clear(); - generate_blocks( db->head_block_time() + STEEM_MIN_VOTE_INTERVAL_SEC ); + op.vesting_shares = asset( alice.vesting_shares.amount * 2, VESTS_SYMBOL ); + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - old_vote_rshares = alice_bob_vote->rshares; - old_net_rshares = new_bob_comment.net_rshares.value; - old_abs_rshares = new_bob_comment.abs_rshares.value; + BOOST_REQUIRE( alice.vesting_shares.amount.value == old_vesting_shares.amount.value ); + BOOST_REQUIRE( alice.vesting_withdraw_rate.amount.value == ( old_vesting_shares.amount / ( SOPHIATX_VESTING_WITHDRAW_INTERVALS * 3 ) ).value ); + BOOST_REQUIRE( alice.next_vesting_withdrawal == db->head_block_time() + SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS ); + validate_database(); - op.weight = 0; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - alice_bob_vote = vote_idx.find( std::make_tuple( new_bob_comment.id, new_alice.id ) ); + BOOST_TEST_MESSAGE( "--- Test withdrawing 0 to reset vesting withdraw" ); + tx.operations.clear(); + tx.signatures.clear(); - BOOST_REQUIRE( new_bob_comment.net_rshares == old_net_rshares - old_vote_rshares ); - BOOST_REQUIRE( new_bob_comment.abs_rshares == old_abs_rshares ); - BOOST_REQUIRE( new_bob_comment.cashout_time == new_bob_comment.created + STEEM_CASHOUT_WINDOW_SECONDS ); - BOOST_REQUIRE( alice_bob_vote->rshares == 0 ); - BOOST_REQUIRE( alice_bob_vote->last_update == db->head_block_time() ); - BOOST_REQUIRE( alice_bob_vote->vote_percent == op.weight ); - BOOST_REQUIRE( db->get_account( "alice" ).voting_power == alice_voting_power ); - validate_database(); + op.vesting_shares = asset( 0, VESTS_SYMBOL ); + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - BOOST_TEST_MESSAGE( "--- Test failure when increasing rshares within lockout period" ); + BOOST_REQUIRE( alice.vesting_shares.amount.value == old_vesting_shares.amount.value ); + BOOST_REQUIRE( alice.vesting_withdraw_rate.amount.value == 0 ); + BOOST_REQUIRE( alice.to_withdraw.value == 0 ); + BOOST_REQUIRE( alice.next_vesting_withdrawal == fc::time_point_sec::maximum() ); - generate_blocks( fc::time_point_sec( ( new_bob_comment.cashout_time - STEEM_UPVOTE_LOCKOUT_HF17 ).sec_since_epoch() + STEEM_BLOCK_INTERVAL ), true ); - op.weight = STEEM_100_PERCENT; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); + BOOST_TEST_MESSAGE( "--- Test cancelling a withdraw when below the account creation fee" ); + op.vesting_shares = alice.vesting_shares; + tx.clear(); + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + generate_block(); + } - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - validate_database(); + db_plugin->debug_update( [=]( database& db ) + { + auto& wso = db.get_witness_schedule_object(); - BOOST_TEST_MESSAGE( "--- Test success when reducing rshares within lockout period" ); + db.modify( wso, [&]( witness_schedule_object& w ) + { + w.median_props.account_creation_fee = ASSET( "10.000000 SPHTX" ); + }); - op.weight = -1 * STEEM_100_PERCENT; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - validate_database(); + }, database::skip_witness_signature ); - BOOST_TEST_MESSAGE( "--- Test failure with a new vote within lockout period" ); + withdraw_vesting_operation op; + signed_transaction tx; + op.account = AN("alice"); + op.vesting_shares = ASSET( "0.000000 VESTS" ); + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - op.weight = STEEM_100_PERCENT; - op.voter = "dave"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( dave_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - validate_database(); - } + BOOST_REQUIRE( db->get_account( AN("alice") ).vesting_withdraw_rate == ASSET( "0.000000 VESTS" ) ); + validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( transfer_validate ) +BOOST_AUTO_TEST_CASE( witness_update_validate ) { try { - BOOST_TEST_MESSAGE( "Testing: transfer_validate" ); + BOOST_TEST_MESSAGE( "Testing: withness_update_validate" ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( transfer_authorities ) +BOOST_AUTO_TEST_CASE( witness_update_authorities ) { try { - ACTORS( (alice)(bob) ) - fund( "alice", 10000 ); + BOOST_TEST_MESSAGE( "Testing: witness_update_authorities" ); - BOOST_TEST_MESSAGE( "Testing: transfer_authorities" ); + ACTORS( (alice)(bob) ); + fund( AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE + 1000000); + vest(AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); - transfer_operation op; - op.from = "alice"; - op.to = "bob"; - op.amount = ASSET( "2.500 TESTS" ); + private_key_type signing_key = generate_private_key( "new_key" ); + + witness_update_operation op; + op.owner = AN("alice"); + op.url = "foo.bar"; + op.fee = ASSET( "1.000000 SPHTX" ); + op.block_signing_key = signing_key.get_public_key(); signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.operations.push_back( op ); BOOST_TEST_MESSAGE( "--- Test failure when no signatures" ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); - - BOOST_TEST_MESSAGE( "--- Test failure when signed by a signature not in the account's authority" ); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); BOOST_TEST_MESSAGE( "--- Test failure when duplicate signatures" ); tx.signatures.clear(); tx.sign( alice_private_key, db->get_chain_id() ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); BOOST_TEST_MESSAGE( "--- Test failure when signed by an additional signature not in the creator's authority" ); tx.signatures.clear(); tx.sign( alice_private_key, db->get_chain_id() ); tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); BOOST_TEST_MESSAGE( "--- Test success with witness signature" ); tx.signatures.clear(); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); + tx.signatures.clear(); + tx.sign( signing_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( signature_stripping ) +BOOST_AUTO_TEST_CASE( witness_update_apply ) { try { - // Alice, Bob and Sam all have 2-of-3 multisig on corp. - // Legitimate tx signed by (Alice, Bob) goes through. - // Sam shouldn't be able to add or remove signatures to get the transaction to process multiple times. + BOOST_TEST_MESSAGE( "Testing: witness_update_apply" ); - ACTORS( (alice)(bob)(sam)(corp) ) - fund( "corp", 10000 ); + ACTORS( (alice) ) + fund( AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + vest(AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE); - account_update_operation update_op; - update_op.account = "corp"; - update_op.active = authority( 2, "alice", 1, "bob", 1, "sam", 1 ); + private_key_type signing_key = generate_private_key( "new_key" ); + + BOOST_TEST_MESSAGE( "--- Test upgrading an account to a witness" ); + + witness_update_operation op; + op.owner = AN("alice"); + op.url = "foo.bar"; + op.block_signing_key = signing_key.get_public_key(); + op.props.account_creation_fee = ASSET("1.000000 SPHTX"); + op.props.maximum_block_size = SOPHIATX_MIN_BLOCK_SIZE_LIMIT + 100; signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( update_op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( corp_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - tx.operations.clear(); - tx.signatures.clear(); + const witness_object& alice_witness = db->get_witness( AN("alice") ); - transfer_operation transfer_op; - transfer_op.from = "corp"; - transfer_op.to = "sam"; - transfer_op.amount = ASSET( "1.000 TESTS" ); + BOOST_REQUIRE( alice_witness.owner == AN("alice") ); + BOOST_REQUIRE( alice_witness.created == db->head_block_time() ); + BOOST_REQUIRE( to_string( alice_witness.url ) == op.url ); + BOOST_REQUIRE( alice_witness.signing_key == op.block_signing_key ); + BOOST_REQUIRE( alice_witness.props.account_creation_fee.amount.value == 1000000 ); + BOOST_REQUIRE( alice_witness.props.maximum_block_size == op.props.maximum_block_size ); + BOOST_REQUIRE( alice_witness.total_missed == 0 ); + BOOST_REQUIRE( alice_witness.last_aslot == 0 ); + BOOST_REQUIRE( alice_witness.last_confirmed_block_num == 0 ); + BOOST_REQUIRE( alice_witness.votes.value == 0 ); + BOOST_REQUIRE( alice_witness.virtual_last_update == static_cast(0) ); + BOOST_REQUIRE( alice_witness.virtual_position == static_cast(0)); + BOOST_REQUIRE( alice_witness.virtual_scheduled_time == fc::uint128_t::max_value() ); + BOOST_REQUIRE( alice.balance.amount.value == ASSET( "0.000000 SPHTX" ).amount.value); // No fee + validate_database(); - tx.operations.push_back( transfer_op ); + BOOST_TEST_MESSAGE( "--- Test updating a witness" ); + tx.signatures.clear(); + tx.operations.clear(); + op.url = "bar.foo"; + tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - signature_type alice_sig = tx.signatures.back(); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); - tx.sign( bob_private_key, db->get_chain_id() ); - signature_type bob_sig = tx.signatures.back(); - tx.sign( sam_private_key, db->get_chain_id() ); - signature_type sam_sig = tx.signatures.back(); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); - tx.signatures.clear(); - tx.signatures.push_back( alice_sig ); - tx.signatures.push_back( bob_sig ); db->push_transaction( tx, 0 ); + BOOST_REQUIRE( alice_witness.owner == AN("alice") ); + BOOST_REQUIRE( alice_witness.created == db->head_block_time() ); + BOOST_REQUIRE( to_string( alice_witness.url ) == "bar.foo" ); + BOOST_REQUIRE( alice_witness.signing_key == op.block_signing_key ); + BOOST_REQUIRE( alice_witness.props.account_creation_fee.amount.value == 1000000 ); + BOOST_REQUIRE( alice_witness.props.maximum_block_size == op.props.maximum_block_size ); + BOOST_REQUIRE( alice_witness.total_missed == 0 ); + BOOST_REQUIRE( alice_witness.last_aslot == 0 ); + BOOST_REQUIRE( alice_witness.last_confirmed_block_num == 0 ); + BOOST_REQUIRE( alice_witness.votes.value == 0 ); + BOOST_REQUIRE( alice_witness.virtual_last_update == static_cast(0)); + BOOST_REQUIRE( alice_witness.virtual_position == static_cast(0)); + BOOST_REQUIRE( alice_witness.virtual_scheduled_time == fc::uint128_t::max_value() ); + BOOST_REQUIRE( alice.balance.amount.value == ASSET( "0.000000 SPHTX" ).amount.value ); // No fee + validate_database(); + + BOOST_TEST_MESSAGE( "--- Test failure when upgrading a non-existent account" ); + tx.signatures.clear(); - tx.signatures.push_back( alice_sig ); - tx.signatures.push_back( sam_sig ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + tx.operations.clear(); + op.owner = AN("bob"); + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( transfer_apply ) +BOOST_AUTO_TEST_CASE( account_witness_vote_validate ) { try { - BOOST_TEST_MESSAGE( "Testing: transfer_apply" ); + BOOST_TEST_MESSAGE( "Testing: account_witness_vote_validate" ); - ACTORS( (alice)(bob) ) - fund( "alice", 10000 ); + validate_database(); + } + FC_LOG_AND_RETHROW() +} - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "10.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET(" 0.000 TESTS" ).amount.value ); +BOOST_AUTO_TEST_CASE( account_witness_vote_authorities ) +{ + try + { + BOOST_TEST_MESSAGE( "Testing: account_witness_vote_authorities" ); - signed_transaction tx; - transfer_operation op; + ACTORS( (alice)(bob)(sam) ) - op.from = "alice"; - op.to = "bob"; - op.amount = ASSET( "5.000 TESTS" ); + fund( AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + vest( AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE); + private_key_type alice_witness_key = generate_private_key( "alice_witness" ); + witness_create( AN("alice"), alice_private_key, "foo.bar", alice_witness_key.get_public_key(), 0 ); - BOOST_TEST_MESSAGE( "--- Test normal transaction" ); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "5.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "5.000 TESTS" ).amount.value ); - validate_database(); + account_witness_vote_operation op; + op.account = AN("bob"); + op.witness = AN("alice"); - BOOST_TEST_MESSAGE( "--- Generating a block" ); - generate_block(); + signed_transaction tx; + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.operations.push_back( op ); - const auto& new_alice = db->get_account( "alice" ); - const auto& new_bob = db->get_account( "bob" ); + BOOST_TEST_MESSAGE( "--- Test failure when no signatures" ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); - BOOST_REQUIRE( new_alice.balance.amount.value == ASSET( "5.000 TESTS" ).amount.value ); - BOOST_REQUIRE( new_bob.balance.amount.value == ASSET( "5.000 TESTS" ).amount.value ); - validate_database(); + BOOST_TEST_MESSAGE( "--- Test failure when duplicate signatures" ); + tx.signatures.clear(); + tx.sign( bob_private_key, db->get_chain_id() ); + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); - BOOST_TEST_MESSAGE( "--- Test emptying an account" ); + BOOST_TEST_MESSAGE( "--- Test failure when signed by an additional signature not in the creator's authority" ); tx.signatures.clear(); - tx.operations.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( bob_private_key, db->get_chain_id() ); tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, database::skip_transaction_dupe_check ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); - BOOST_REQUIRE( new_alice.balance.amount.value == ASSET( "0.000 TESTS" ).amount.value ); - BOOST_REQUIRE( new_bob.balance.amount.value == ASSET( "10.000 TESTS" ).amount.value ); - validate_database(); + BOOST_TEST_MESSAGE( "--- Test success with witness signature" ); + tx.signatures.clear(); + tx.sign( bob_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - BOOST_TEST_MESSAGE( "--- Test transferring non-existent funds" ); + BOOST_TEST_MESSAGE( "--- Test failure with proxy signature" ); + proxy( AN("bob"), AN("sam") ); tx.signatures.clear(); - tx.operations.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::exception ); + tx.sign( sam_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - BOOST_REQUIRE( new_alice.balance.amount.value == ASSET( "0.000 TESTS" ).amount.value ); - BOOST_REQUIRE( new_bob.balance.amount.value == ASSET( "10.000 TESTS" ).amount.value ); validate_database(); - } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( transfer_to_vesting_validate ) +BOOST_AUTO_TEST_CASE( account_witness_vote_apply ) { try { - BOOST_TEST_MESSAGE( "Testing: transfer_to_vesting_validate" ); + BOOST_TEST_MESSAGE( "Testing: account_witness_vote_apply" ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} + ACTORS( (alice)(bob)(sam) ) + fund( AN("alice") , 5000000 ); + vest( AN("alice"), 5000000 ); + fund( AN("sam"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + vest( AN("sam"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE); -BOOST_AUTO_TEST_CASE( transfer_to_vesting_authorities ) -{ - try - { - ACTORS( (alice)(bob) ) - fund( "alice", 10000 ); + private_key_type sam_witness_key = generate_private_key( "sam_key" ); + witness_create( AN("sam"), sam_private_key, "foo.bar", sam_witness_key.get_public_key(), 0 ); + const witness_object& sam_witness = db->get_witness( AN("sam") ); - BOOST_TEST_MESSAGE( "Testing: transfer_to_vesting_authorities" ); + const auto& witness_vote_idx = db->get_index< witness_vote_index >().indices().get< by_witness_account >(); - transfer_to_vesting_operation op; - op.from = "alice"; - op.to = "bob"; - op.amount = ASSET( "2.500 TESTS" ); + BOOST_TEST_MESSAGE( "--- Test normal vote" ); + account_witness_vote_operation op; + op.account = AN("alice"); + op.witness = AN("sam"); + op.approve = true; signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); - BOOST_TEST_MESSAGE( "--- Test failure when no signatures" ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); - - BOOST_TEST_MESSAGE( "--- Test failure when signed by a signature not in the account's authority" ); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); + db->push_transaction( tx, 0 ); - BOOST_TEST_MESSAGE( "--- Test failure when duplicate signatures" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); + BOOST_REQUIRE( sam_witness.votes == alice.vesting_shares.amount ); + BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, alice.name ) ) != witness_vote_idx.end() ); + validate_database(); - BOOST_TEST_MESSAGE( "--- Test failure when signed by an additional signature not in the creator's authority" ); + BOOST_TEST_MESSAGE( "--- Test revoke vote" ); + op.approve = false; + tx.operations.clear(); tx.signatures.clear(); + tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); - BOOST_TEST_MESSAGE( "--- Test success with from signature" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); + BOOST_REQUIRE( sam_witness.votes.value == 0 ); + BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, alice.name ) ) == witness_vote_idx.end() ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} + BOOST_TEST_MESSAGE( "--- Test failure when attempting to revoke a non-existent vote" ); -BOOST_AUTO_TEST_CASE( transfer_to_vesting_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: transfer_to_vesting_apply" ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::exception ); + BOOST_REQUIRE( sam_witness.votes.value == 0 ); + BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, alice.name ) ) == witness_vote_idx.end() ); - ACTORS( (alice)(bob) ) - fund( "alice", 10000 ); + BOOST_TEST_MESSAGE( "--- Test proxied vote" ); + proxy( AN("alice"), AN("bob") ); + tx.operations.clear(); + tx.signatures.clear(); + op.approve = true; + op.account = AN("bob"); + tx.operations.push_back( op ); + tx.sign( bob_private_key, db->get_chain_id() ); - const auto& gpo = db->get_dynamic_global_properties(); + db->push_transaction( tx, 0 ); - BOOST_REQUIRE( alice.balance == ASSET( "10.000 TESTS" ) ); + BOOST_REQUIRE( sam_witness.votes == ( bob.proxied_vsf_votes_total() + bob.vesting_shares.amount ) ); + BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, bob.name ) ) != witness_vote_idx.end() ); + BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, alice.name ) ) == witness_vote_idx.end() ); - auto shares = asset( gpo.total_vesting_shares.amount, VESTS_SYMBOL ); - auto vests = asset( gpo.total_vesting_fund_steem.amount, STEEM_SYMBOL ); - auto alice_shares = alice.vesting_shares; - auto bob_shares = bob.vesting_shares; + BOOST_TEST_MESSAGE( "--- Test vote from a proxied account" ); + tx.operations.clear(); + tx.signatures.clear(); + op.account = AN("alice"); + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::exception ); - transfer_to_vesting_operation op; - op.from = "alice"; - op.to = ""; - op.amount = ASSET( "7.500 TESTS" ); + BOOST_REQUIRE( sam_witness.votes == ( bob.proxied_vsf_votes_total() + bob.vesting_shares.amount ) ); + BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, bob.name ) ) != witness_vote_idx.end() ); + BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, alice.name ) ) == witness_vote_idx.end() ); - signed_transaction tx; + BOOST_TEST_MESSAGE( "--- Test revoke proxied vote" ); + tx.operations.clear(); + tx.signatures.clear(); + op.account = AN("bob"); + op.approve = false; tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + tx.sign( bob_private_key, db->get_chain_id() ); - auto new_vest = op.amount * ( shares / vests ); - shares += new_vest; - vests += op.amount; - alice_shares += new_vest; + db->push_transaction( tx, 0 ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "2.500 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.vesting_shares.amount.value == alice_shares.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_fund_steem.amount.value == vests.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_shares.amount.value == shares.amount.value ); - validate_database(); + BOOST_REQUIRE( sam_witness.votes.value == 0 ); + BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, bob.name ) ) == witness_vote_idx.end() ); + BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, alice.name ) ) == witness_vote_idx.end() ); - op.to = "bob"; - op.amount = asset( 2000, STEEM_SYMBOL ); + BOOST_TEST_MESSAGE( "--- Test failure when voting for a non-existent account" ); tx.operations.clear(); tx.signatures.clear(); + op.witness = AN("dave"); + op.approve = true; tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + tx.sign( bob_private_key, db->get_chain_id() ); - new_vest = asset( ( op.amount * ( shares / vests ) ).amount, VESTS_SYMBOL ); - shares += new_vest; - vests += op.amount; - bob_shares += new_vest; - - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "0.500 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.vesting_shares.amount.value == alice_shares.amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "0.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.vesting_shares.amount.value == bob_shares.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_fund_steem.amount.value == vests.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_shares.amount.value == shares.amount.value ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); validate_database(); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::exception ); + BOOST_TEST_MESSAGE( "--- Test failure when voting for an account that is not a witness" ); + tx.operations.clear(); + tx.signatures.clear(); + op.witness = AN("alice"); + tx.operations.push_back( op ); + tx.sign( bob_private_key, db->get_chain_id() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "0.500 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.vesting_shares.amount.value == alice_shares.amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "0.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.vesting_shares.amount.value == bob_shares.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_fund_steem.amount.value == vests.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_shares.amount.value == shares.amount.value ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( withdraw_vesting_validate ) +BOOST_AUTO_TEST_CASE( account_witness_proxy_validate ) { try { - BOOST_TEST_MESSAGE( "Testing: withdraw_vesting_validate" ); + BOOST_TEST_MESSAGE( "Testing: account_witness_proxy_validate" ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( withdraw_vesting_authorities ) +BOOST_AUTO_TEST_CASE( account_witness_proxy_authorities ) { try { - BOOST_TEST_MESSAGE( "Testing: withdraw_vesting_authorities" ); + BOOST_TEST_MESSAGE( "Testing: account_witness_proxy_authorities" ); ACTORS( (alice)(bob) ) - fund( "alice", 10000 ); - vest( "alice", 10000 ); - withdraw_vesting_operation op; - op.account = "alice"; - op.vesting_shares = ASSET( "0.001000 VESTS" ); + account_witness_proxy_operation op; + op.account = AN("bob"); + op.proxy = AN("alice"); signed_transaction tx; + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - BOOST_TEST_MESSAGE( "--- Test failure when no signature." ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); + BOOST_TEST_MESSAGE( "--- Test failure when no signatures" ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); - BOOST_TEST_MESSAGE( "--- Test success with account signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, database::skip_transaction_dupe_check ); + BOOST_TEST_MESSAGE( "--- Test failure when duplicate signatures" ); + tx.signatures.clear(); + tx.sign( bob_private_key, db->get_chain_id() ); + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); - BOOST_TEST_MESSAGE( "--- Test failure with duplicate signature" ); + BOOST_TEST_MESSAGE( "--- Test failure when signed by an additional signature not in the creator's authority" ); + tx.signatures.clear(); + tx.sign( bob_private_key, db->get_chain_id() ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_duplicate_sig ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); - BOOST_TEST_MESSAGE( "--- Test failure with additional incorrect signature" ); + BOOST_TEST_MESSAGE( "--- Test success with witness signature" ); tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_irrelevant_sig ); + db->push_transaction( tx, 0 ); - BOOST_TEST_MESSAGE( "--- Test failure with incorrect signature" ); + BOOST_TEST_MESSAGE( "--- Test failure with proxy signature" ); tx.signatures.clear(); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( withdraw_vesting_apply ) +BOOST_AUTO_TEST_CASE( account_witness_proxy_apply ) { try { - BOOST_TEST_MESSAGE( "Testing: withdraw_vesting_apply" ); - - ACTORS( (alice) ) - generate_block(); - vest( "alice", ASSET( "10.000 TESTS" ) ); - - BOOST_TEST_MESSAGE( "--- Test withdraw of existing VESTS" ); + BOOST_TEST_MESSAGE( "Testing: account_witness_proxy_apply" ); - { - const auto& alice = db->get_account( "alice" ); + ACTORS( (alice)(bob)(sam)(dave) ) + fund( AN("alice"), 1000000 ); + vest( AN("alice"), 1000000 ); + fund( AN("bob"), 3000000 ); + vest( AN("bob"), 3000000 ); + fund( AN("sam"), 5000000 ); + vest( AN("sam"), 5000000 ); + fund( AN("dave"), 7000000 ); + vest( AN("dave"), 7000000 ); - withdraw_vesting_operation op; - op.account = "alice"; - op.vesting_shares = asset( alice.vesting_shares.amount / 2, VESTS_SYMBOL ); + BOOST_TEST_MESSAGE( "--- Test setting proxy to another account from self." ); + // bob -> alice - auto old_vesting_shares = alice.vesting_shares; + account_witness_proxy_operation op; + op.account = AN("bob"); + op.proxy = AN("alice"); signed_transaction tx; tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( bob_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - BOOST_REQUIRE( alice.vesting_shares.amount.value == old_vesting_shares.amount.value ); - BOOST_REQUIRE( alice.vesting_withdraw_rate.amount.value == ( old_vesting_shares.amount / ( STEEM_VESTING_WITHDRAW_INTERVALS * 2 ) ).value ); - BOOST_REQUIRE( alice.to_withdraw.value == op.vesting_shares.amount.value ); - BOOST_REQUIRE( alice.next_vesting_withdrawal == db->head_block_time() + STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS ); + const auto& new_bob = db->get_account(AN("bob")); + const auto& new_alice = db->get_account(AN("alice")); + BOOST_REQUIRE( new_bob.proxy == AN("alice") ); + BOOST_REQUIRE( new_bob.proxied_vsf_votes_total().value == 0 ); + BOOST_REQUIRE( new_alice.proxy == SOPHIATX_PROXY_TO_SELF_ACCOUNT ); + BOOST_REQUIRE( new_alice.proxied_vsf_votes_total() == new_bob.total_balance() ); validate_database(); - BOOST_TEST_MESSAGE( "--- Test changing vesting withdrawal" ); + BOOST_TEST_MESSAGE( "--- Test changing proxy" ); + // bob->sam + tx.operations.clear(); tx.signatures.clear(); - - op.vesting_shares = asset( alice.vesting_shares.amount / 3, VESTS_SYMBOL ); + op.proxy = AN("sam"); tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( bob_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + const auto& new_sam = db->get_account(AN("sam")); - BOOST_REQUIRE( alice.vesting_shares.amount.value == old_vesting_shares.amount.value ); - BOOST_REQUIRE( alice.vesting_withdraw_rate.amount.value == ( old_vesting_shares.amount / ( STEEM_VESTING_WITHDRAW_INTERVALS * 3 ) ).value ); - BOOST_REQUIRE( alice.to_withdraw.value == op.vesting_shares.amount.value ); - BOOST_REQUIRE( alice.next_vesting_withdrawal == db->head_block_time() + STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS ); + BOOST_REQUIRE( new_bob.proxy == AN("sam") ); + BOOST_REQUIRE( new_bob.proxied_vsf_votes_total().value == 0 ); + BOOST_REQUIRE( new_alice.proxied_vsf_votes_total().value == 0 ); + BOOST_REQUIRE( new_sam.proxy == SOPHIATX_PROXY_TO_SELF_ACCOUNT ); + BOOST_REQUIRE( new_sam.proxied_vsf_votes_total().value == new_bob.total_balance() ); validate_database(); - BOOST_TEST_MESSAGE( "--- Test withdrawing more vests than available" ); - //auto old_withdraw_amount = alice.to_withdraw; - tx.operations.clear(); - tx.signatures.clear(); + BOOST_TEST_MESSAGE( "--- Test failure when changing proxy to existing proxy" ); - op.vesting_shares = asset( alice.vesting_shares.amount * 2, VESTS_SYMBOL ); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::exception ); - BOOST_REQUIRE( alice.vesting_shares.amount.value == old_vesting_shares.amount.value ); - BOOST_REQUIRE( alice.vesting_withdraw_rate.amount.value == ( old_vesting_shares.amount / ( STEEM_VESTING_WITHDRAW_INTERVALS * 3 ) ).value ); - BOOST_REQUIRE( alice.next_vesting_withdrawal == db->head_block_time() + STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS ); + BOOST_REQUIRE( new_bob.proxy == AN("sam") ); + BOOST_REQUIRE( new_bob.proxied_vsf_votes_total().value == 0 ); + BOOST_REQUIRE( new_sam.proxy == SOPHIATX_PROXY_TO_SELF_ACCOUNT ); + BOOST_REQUIRE( new_sam.proxied_vsf_votes_total() == new_bob.total_balance()); validate_database(); - BOOST_TEST_MESSAGE( "--- Test withdrawing 0 to reset vesting withdraw" ); + BOOST_TEST_MESSAGE( "--- Test adding a grandparent proxy" ); + // bob->sam->dave + tx.operations.clear(); tx.signatures.clear(); - - op.vesting_shares = asset( 0, VESTS_SYMBOL ); + op.proxy = AN("dave"); + op.account = AN("sam"); tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( sam_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + const auto& new_dave = db->get_account(AN("dave")); - BOOST_REQUIRE( alice.vesting_shares.amount.value == old_vesting_shares.amount.value ); - BOOST_REQUIRE( alice.vesting_withdraw_rate.amount.value == 0 ); - BOOST_REQUIRE( alice.to_withdraw.value == 0 ); - BOOST_REQUIRE( alice.next_vesting_withdrawal == fc::time_point_sec::maximum() ); + BOOST_REQUIRE( new_bob.proxy == AN("sam") ); + BOOST_REQUIRE( new_bob.proxied_vsf_votes_total().value == 0 ); + BOOST_REQUIRE( new_sam.proxy == AN("dave") ); + BOOST_REQUIRE( new_sam.proxied_vsf_votes_total() == new_bob.total_balance() ); + BOOST_REQUIRE( new_dave.proxy == SOPHIATX_PROXY_TO_SELF_ACCOUNT ); + BOOST_REQUIRE( new_dave.proxied_vsf_votes_total() == ( new_sam.total_balance() + new_bob.total_balance() ) ); + validate_database(); - BOOST_TEST_MESSAGE( "--- Test cancelling a withdraw when below the account creation fee" ); - op.vesting_shares = alice.vesting_shares; - tx.clear(); + BOOST_TEST_MESSAGE( "--- Test adding a grandchild proxy" ); + // alice + // | + // bob-> sam->dave + + tx.operations.clear(); + tx.signatures.clear(); + op.proxy = AN("sam"); + op.account = AN("alice"); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - generate_block(); - } - - db_plugin->debug_update( [=]( database& db ) - { - auto& wso = db.get_witness_schedule_object(); - db.modify( wso, [&]( witness_schedule_object& w ) - { - w.median_props.account_creation_fee = ASSET( "10.000 TESTS" ); - }); + db->push_transaction( tx, 0 ); - db.modify( db.get_dynamic_global_properties(), [&]( dynamic_global_property_object& gpo ) - { - gpo.current_supply += wso.median_props.account_creation_fee - ASSET( "0.001 TESTS" ) - gpo.total_vesting_fund_steem; - gpo.total_vesting_fund_steem = wso.median_props.account_creation_fee - ASSET( "0.001 TESTS" ); - }); + BOOST_REQUIRE( new_alice.proxy == AN("sam") ); + BOOST_REQUIRE( new_alice.proxied_vsf_votes_total().value == 0 ); + BOOST_REQUIRE( new_bob.proxy == AN("sam") ); + BOOST_REQUIRE( new_bob.proxied_vsf_votes_total().value == 0 ); + BOOST_REQUIRE( new_sam.proxy == AN("dave") ); + BOOST_REQUIRE( new_sam.proxied_vsf_votes_total() == ( new_bob.total_balance() + new_alice.total_balance() ) ); + BOOST_REQUIRE( new_dave.proxy == SOPHIATX_PROXY_TO_SELF_ACCOUNT ); + BOOST_REQUIRE( new_dave.proxied_vsf_votes_total() == ( new_sam.total_balance() + new_bob.total_balance() + new_alice.total_balance() ) ); + validate_database(); - db.update_virtual_supply(); - }, database::skip_witness_signature ); + BOOST_TEST_MESSAGE( "--- Test removing a grandchild proxy" ); + // alice->sam->dave - withdraw_vesting_operation op; - signed_transaction tx; - op.account = "alice"; - op.vesting_shares = ASSET( "0.000000 VESTS" ); + tx.operations.clear(); + tx.signatures.clear(); + op.proxy = SOPHIATX_PROXY_TO_SELF_ACCOUNT; + op.account = AN("bob"); tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( bob_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - BOOST_REQUIRE( db->get_account( "alice" ).vesting_withdraw_rate == ASSET( "0.000000 VESTS" ) ); + BOOST_REQUIRE( new_alice.proxy == AN("sam") ); + BOOST_REQUIRE( new_alice.proxied_vsf_votes_total().value == 0 ); + BOOST_REQUIRE( new_bob.proxy == SOPHIATX_PROXY_TO_SELF_ACCOUNT ); + BOOST_REQUIRE( new_bob.proxied_vsf_votes_total().value == 0 ); + BOOST_REQUIRE( new_sam.proxy == AN("dave") ); + BOOST_REQUIRE( new_sam.proxied_vsf_votes_total() == new_alice.total_balance() ); + BOOST_REQUIRE( new_dave.proxy == SOPHIATX_PROXY_TO_SELF_ACCOUNT ); + BOOST_REQUIRE( new_dave.proxied_vsf_votes_total() == ( new_sam.total_balance() + new_alice.total_balance() ) ); + validate_database(); + + BOOST_TEST_MESSAGE( "--- Test votes are transferred when a proxy is added" ); + account_witness_vote_operation vote; + vote.account= AN("bob"); + vote.witness = SOPHIATX_INIT_MINER_NAME; + tx.operations.clear(); + tx.signatures.clear(); + tx.operations.push_back( vote ); + tx.sign( bob_private_key, db->get_chain_id() ); + + db->push_transaction( tx, 0 ); + + tx.operations.clear(); + tx.signatures.clear(); + op.account = AN("alice"); + op.proxy = AN("bob"); + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + + db->push_transaction( tx, 0 ); + BOOST_REQUIRE( db->get_witness( SOPHIATX_INIT_MINER_NAME ).votes == ( new_alice.total_balance() + new_bob.total_balance() ) ); + validate_database(); + + BOOST_TEST_MESSAGE( "--- Test votes are removed when a proxy is removed" ); + op.proxy = SOPHIATX_PROXY_TO_SELF_ACCOUNT; + tx.signatures.clear(); + tx.operations.clear(); + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + + db->push_transaction( tx, 0 ); + + BOOST_REQUIRE( db->get_witness( SOPHIATX_INIT_MINER_NAME ).votes == new_bob.total_balance() ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( witness_update_validate ) +/*BOOST_AUTO_TEST_CASE( custom_authorities ) +{ + custom_operation op; + op.required_auths.insert( AN("alice") ); + op.required_auths.insert( AN("bob") ); + + flat_set< account_name_type > auths; + flat_set< account_name_type > expected; + + op.get_required_owner_authorities( auths ); + BOOST_REQUIRE( auths == expected ); + + op.get_required_posting_authorities( auths ); + BOOST_REQUIRE( auths == expected ); + + expected.insert( AN("alice") ); + expected.insert( AN("bob") ); + op.get_required_active_authorities( auths ); + BOOST_REQUIRE( auths == expected ); +} + +BOOST_AUTO_TEST_CASE( custom_json_authorities ) +{ + custom_json_operation op; + op.required_auths.insert( AN("alice") ); + + flat_set< account_name_type > auths; + flat_set< account_name_type > expected; + + op.get_required_owner_authorities( auths ); + BOOST_REQUIRE( auths == expected ); + + expected.insert( AN("alice") ); + op.get_required_active_authorities( auths ); + BOOST_REQUIRE( auths == expected ); + + auths.clear(); + expected.clear(); + expected.insert( AN("bob") ); + op.get_required_posting_authorities( auths ); + BOOST_REQUIRE( auths == expected ); +} + +BOOST_AUTO_TEST_CASE( custom_binary_authorities ) +{ + ACTORS( (alice) ) + + custom_binary_operation op; + op.required_owner_auths.insert( AN("alice") ); + op.required_active_auths.insert( AN("bob") ); + op.required_posting_auths.insert( AN("sam") ); + op.required_auths.push_back( db->get< account_authority_object, by_account >( AN("alice") ).posting ); + + flat_set< account_name_type > acc_auths; + flat_set< account_name_type > acc_expected; + vector< authority > auths; + vector< authority > expected; + + acc_expected.insert( AN("alice") ); + op.get_required_owner_authorities( acc_auths ); + BOOST_REQUIRE( acc_auths == acc_expected ); + + acc_auths.clear(); + acc_expected.clear(); + acc_expected.insert( AN("bob") ); + op.get_required_active_authorities( acc_auths ); + BOOST_REQUIRE( acc_auths == acc_expected ); + + acc_auths.clear(); + acc_expected.clear(); + acc_expected.insert( AN("sam") ); + op.get_required_posting_authorities( acc_auths ); + BOOST_REQUIRE( acc_auths == acc_expected ); + + expected.push_back( db->get< account_authority_object, by_account >( AN("alice") ).posting ); + op.get_required_authorities( auths ); + BOOST_REQUIRE( auths == expected ); +}*/ + +BOOST_AUTO_TEST_CASE( feed_publish_validate ) { try { - BOOST_TEST_MESSAGE( "Testing: withness_update_validate" ); - - validate_database(); + BOOST_TEST_MESSAGE( "Testing: feed_publish_validate" ); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( witness_update_authorities ) +BOOST_AUTO_TEST_CASE( feed_publish_authorities ) { try { - BOOST_TEST_MESSAGE( "Testing: witness_update_authorities" ); - - ACTORS( (alice)(bob) ); - fund( "alice", 10000 ); + BOOST_TEST_MESSAGE( "Testing: feed_publish_authorities" ); - private_key_type signing_key = generate_private_key( "new_key" ); + ACTORS( (alice)(bob) ) + fund( AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + vest(AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE); + witness_create( AN("alice"), alice_private_key, "foo.bar", alice_private_key.get_public_key(), 0 ); - witness_update_operation op; - op.owner = "alice"; - op.url = "foo.bar"; - op.fee = ASSET( "1.000 TESTS" ); - op.block_signing_key = signing_key.get_public_key(); + feed_publish_operation op; + op.publisher = AN("alice"); + op.exchange_rate = price( ASSET( "1.000000 USD" ), ASSET( "1.000000 SPHTX" ) ); signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); - BOOST_TEST_MESSAGE( "--- Test failure when no signatures" ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); - - BOOST_TEST_MESSAGE( "--- Test failure when signed by a signature not in the account's authority" ); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); + BOOST_TEST_MESSAGE( "--- Test failure when no signature." ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - BOOST_TEST_MESSAGE( "--- Test failure when duplicate signatures" ); - tx.signatures.clear(); + BOOST_TEST_MESSAGE( "--- Test failure with duplicate signature" ); tx.sign( alice_private_key, db->get_chain_id() ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_duplicate_sig ); - BOOST_TEST_MESSAGE( "--- Test failure when signed by an additional signature not in the creator's authority" ); + BOOST_TEST_MESSAGE( "--- Test failure with additional incorrect signature" ); tx.signatures.clear(); tx.sign( alice_private_key, db->get_chain_id() ); tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_irrelevant_sig ); - BOOST_TEST_MESSAGE( "--- Test success with witness signature" ); + BOOST_TEST_MESSAGE( "--- Test success with witness account signature" ); tx.signatures.clear(); tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + db->push_transaction( tx, database::skip_transaction_dupe_check ); - tx.signatures.clear(); - tx.sign( signing_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( witness_update_apply ) +BOOST_AUTO_TEST_CASE( feed_publish_apply ) { try { - BOOST_TEST_MESSAGE( "Testing: witness_update_apply" ); + BOOST_TEST_MESSAGE( "Testing: feed_publish_apply" ); ACTORS( (alice) ) - fund( "alice", 10000 ); - - private_key_type signing_key = generate_private_key( "new_key" ); - - BOOST_TEST_MESSAGE( "--- Test upgrading an account to a witness" ); + fund( AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE + 10000000 ); + vest( AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + witness_create( AN("alice"), alice_private_key, "foo.bar", alice_private_key.get_public_key(), 1000000 ); - witness_update_operation op; - op.owner = "alice"; - op.url = "foo.bar"; - op.fee = ASSET( "1.000 TESTS" ); - op.block_signing_key = signing_key.get_public_key(); - op.props.account_creation_fee = legacy_steem_asset::from_asset( asset(STEEM_MIN_ACCOUNT_CREATION_FEE + 10, STEEM_SYMBOL) ); - op.props.maximum_block_size = STEEM_MIN_BLOCK_SIZE_LIMIT + 100; + BOOST_TEST_MESSAGE( "--- Test publishing price feed" ); + feed_publish_operation op; + op.publisher = AN("alice"); + op.exchange_rate = price( asset(1000000, SOPHIATX_SYMBOL), asset(1000000, SBD1_SYMBOL )); // 1000 SOPHIATX : 1 SBD signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - const witness_object& alice_witness = db->get_witness( "alice" ); + witness_object& alice_witness = const_cast< witness_object& >( db->get_witness( AN("alice") ) ); - BOOST_REQUIRE( alice_witness.owner == "alice" ); - BOOST_REQUIRE( alice_witness.created == db->head_block_time() ); - BOOST_REQUIRE( to_string( alice_witness.url ) == op.url ); - BOOST_REQUIRE( alice_witness.signing_key == op.block_signing_key ); - BOOST_REQUIRE( alice_witness.props.account_creation_fee == op.props.account_creation_fee.to_asset() ); - BOOST_REQUIRE( alice_witness.props.maximum_block_size == op.props.maximum_block_size ); - BOOST_REQUIRE( alice_witness.total_missed == 0 ); - BOOST_REQUIRE( alice_witness.last_aslot == 0 ); - BOOST_REQUIRE( alice_witness.last_confirmed_block_num == 0 ); - BOOST_REQUIRE( alice_witness.pow_worker == 0 ); - BOOST_REQUIRE( alice_witness.votes.value == 0 ); - BOOST_REQUIRE( alice_witness.virtual_last_update == 0 ); - BOOST_REQUIRE( alice_witness.virtual_position == 0 ); - BOOST_REQUIRE( alice_witness.virtual_scheduled_time == fc::uint128_t::max_value() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "10.000 TESTS" ).amount.value ); // No fee + BOOST_REQUIRE( alice_witness.submitted_exchange_rates[SBD1_SYMBOL].rate == op.exchange_rate ); + BOOST_REQUIRE( alice_witness.submitted_exchange_rates[SBD1_SYMBOL].last_change == db->head_block_time() ); validate_database(); - BOOST_TEST_MESSAGE( "--- Test updating a witness" ); + BOOST_TEST_MESSAGE( "--- Test failure publishing to non-existent witness" ); - tx.signatures.clear(); tx.operations.clear(); - op.url = "bar.foo"; - tx.operations.push_back( op ); + tx.signatures.clear(); + op.publisher = AN("bob"); tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( alice_witness.owner == "alice" ); - BOOST_REQUIRE( alice_witness.created == db->head_block_time() ); - BOOST_REQUIRE( to_string( alice_witness.url ) == "bar.foo" ); - BOOST_REQUIRE( alice_witness.signing_key == op.block_signing_key ); - BOOST_REQUIRE( alice_witness.props.account_creation_fee == op.props.account_creation_fee.to_asset() ); - BOOST_REQUIRE( alice_witness.props.maximum_block_size == op.props.maximum_block_size ); - BOOST_REQUIRE( alice_witness.total_missed == 0 ); - BOOST_REQUIRE( alice_witness.last_aslot == 0 ); - BOOST_REQUIRE( alice_witness.last_confirmed_block_num == 0 ); - BOOST_REQUIRE( alice_witness.pow_worker == 0 ); - BOOST_REQUIRE( alice_witness.votes.value == 0 ); - BOOST_REQUIRE( alice_witness.virtual_last_update == 0 ); - BOOST_REQUIRE( alice_witness.virtual_position == 0 ); - BOOST_REQUIRE( alice_witness.virtual_scheduled_time == fc::uint128_t::max_value() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "10.000 TESTS" ).amount.value ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); validate_database(); - BOOST_TEST_MESSAGE( "--- Test failure when upgrading a non-existent account" ); - tx.signatures.clear(); + + BOOST_TEST_MESSAGE( "--- Test updating price feed" ); + tx.operations.clear(); - op.owner = "bob"; + tx.signatures.clear(); + op.exchange_rate = price( asset(1000000, SBD1_SYMBOL), asset(15000000000, SOPHIATX_SYMBOL )); + op.publisher = AN("alice"); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} -BOOST_AUTO_TEST_CASE( account_witness_vote_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: account_witness_vote_validate" ); + db->push_transaction( tx, 0 ); + alice_witness = const_cast< witness_object& >( db->get_witness( AN("alice") ) ); + BOOST_REQUIRE( alice_witness.submitted_exchange_rates[SBD1_SYMBOL].rate == op.exchange_rate ); + BOOST_REQUIRE( alice_witness.submitted_exchange_rates[SBD1_SYMBOL].last_change == db->head_block_time() ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( account_witness_vote_authorities ) + +BOOST_AUTO_TEST_CASE( account_recovery ) { try { - BOOST_TEST_MESSAGE( "Testing: account_witness_vote_authorities" ); + BOOST_TEST_MESSAGE( "Testing: account recovery" ); - ACTORS( (alice)(bob)(sam) ) + ACTORS( (alice) ); + fund( AN("alice"), 10000000 ); - fund( "alice", 1000 ); - private_key_type alice_witness_key = generate_private_key( "alice_witness" ); - witness_create( "alice", alice_private_key, "foo.bar", alice_witness_key.get_public_key(), 1000 ); + BOOST_TEST_MESSAGE( "Creating account bob with alice" ); + + account_create_operation acc_create; + acc_create.fee = ASSET( "10.000000 SPHTX" ); + acc_create.creator = AN("alice"); + acc_create.name_seed = "bob"; + acc_create.owner = authority( 1, generate_private_key( "bob_owner" ).get_public_key(), 1 ); + acc_create.active = authority( 1, generate_private_key( "bob_active" ).get_public_key(), 1 ); + acc_create.memo_key = generate_private_key( "bob_memo" ).get_public_key(); + acc_create.json_metadata = ""; - account_witness_vote_operation op; - op.account = "bob"; - op.witness = "alice"; signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); + tx.operations.push_back( acc_create ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - BOOST_TEST_MESSAGE( "--- Test failure when no signatures" ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); + const auto& bob_auth = db->get< account_authority_object, by_account >( AN("bob") ); + BOOST_REQUIRE( bob_auth.owner == acc_create.owner ); - BOOST_TEST_MESSAGE( "--- Test failure when signed by a signature not in the account's authority" ); - tx.sign( bob_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); - BOOST_TEST_MESSAGE( "--- Test failure when duplicate signatures" ); - tx.signatures.clear(); - tx.sign( bob_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); + BOOST_TEST_MESSAGE( "Changing bob's owner authority" ); - BOOST_TEST_MESSAGE( "--- Test failure when signed by an additional signature not in the creator's authority" ); - tx.signatures.clear(); - tx.sign( bob_private_key, db->get_chain_id() ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); + account_update_operation acc_update; + acc_update.account = AN("bob"); + acc_update.owner = authority( 1, generate_private_key( "bad_key" ).get_public_key(), 1 ); + acc_update.memo_key = acc_create.memo_key; + acc_update.json_metadata = ""; - BOOST_TEST_MESSAGE( "--- Test success with witness signature" ); + tx.operations.clear(); tx.signatures.clear(); - tx.sign( bob_private_key, db->get_chain_id() ); + + tx.operations.push_back( acc_update ); + tx.sign( generate_private_key( "bob_owner" ), db->get_chain_id() ); db->push_transaction( tx, 0 ); - BOOST_TEST_MESSAGE( "--- Test failure with proxy signature" ); - proxy( "bob", "sam" ); - tx.signatures.clear(); - tx.sign( sam_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); + BOOST_REQUIRE( bob_auth.owner == *acc_update.owner ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} -BOOST_AUTO_TEST_CASE( account_witness_vote_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: account_witness_vote_apply" ); + BOOST_TEST_MESSAGE( "Creating recover request for bob with alice" ); - ACTORS( (alice)(bob)(sam) ) - fund( "alice" , 5000 ); - vest( "alice", 5000 ); - fund( "sam", 1000 ); + request_account_recovery_operation request; + request.recovery_account = AN("alice"); + request.account_to_recover = AN("bob"); + request.new_owner_authority = authority( 1, generate_private_key( "new_key" ).get_public_key(), 1 ); - private_key_type sam_witness_key = generate_private_key( "sam_key" ); - witness_create( "sam", sam_private_key, "foo.bar", sam_witness_key.get_public_key(), 1000 ); - const witness_object& sam_witness = db->get_witness( "sam" ); + tx.operations.clear(); + tx.signatures.clear(); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); - const auto& witness_vote_idx = db->get_index< witness_vote_index >().indices().get< by_witness_account >(); + tx.operations.push_back( request ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - BOOST_TEST_MESSAGE( "--- Test normal vote" ); - account_witness_vote_operation op; - op.account = "alice"; - op.witness = "sam"; - op.approve = true; + BOOST_REQUIRE( bob_auth.owner == *acc_update.owner ); - signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + BOOST_TEST_MESSAGE( "Recovering bob's account with original owner auth and new secret" ); - BOOST_REQUIRE( sam_witness.votes == alice.vesting_shares.amount ); - BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, alice.name ) ) != witness_vote_idx.end() ); - validate_database(); + generate_blocks( db->head_block_time() + SOPHIATX_OWNER_UPDATE_LIMIT ); - BOOST_TEST_MESSAGE( "--- Test revoke vote" ); - op.approve = false; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - - db->push_transaction( tx, 0 ); - BOOST_REQUIRE( sam_witness.votes.value == 0 ); - BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, alice.name ) ) == witness_vote_idx.end() ); - - BOOST_TEST_MESSAGE( "--- Test failure when attempting to revoke a non-existent vote" ); - - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::exception ); - BOOST_REQUIRE( sam_witness.votes.value == 0 ); - BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, alice.name ) ) == witness_vote_idx.end() ); - - BOOST_TEST_MESSAGE( "--- Test proxied vote" ); - proxy( "alice", "bob" ); - tx.operations.clear(); - tx.signatures.clear(); - op.approve = true; - op.account = "bob"; - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( sam_witness.votes == ( bob.proxied_vsf_votes_total() + bob.vesting_shares.amount ) ); - BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, bob.name ) ) != witness_vote_idx.end() ); - BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, alice.name ) ) == witness_vote_idx.end() ); + recover_account_operation recover; + recover.account_to_recover = AN("bob"); + recover.new_owner_authority = request.new_owner_authority; + recover.recent_owner_authority = acc_create.owner; - BOOST_TEST_MESSAGE( "--- Test vote from a proxied account" ); tx.operations.clear(); tx.signatures.clear(); - op.account = "alice"; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::exception ); - - BOOST_REQUIRE( sam_witness.votes == ( bob.proxied_vsf_votes_total() + bob.vesting_shares.amount ) ); - BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, bob.name ) ) != witness_vote_idx.end() ); - BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, alice.name ) ) == witness_vote_idx.end() ); - BOOST_TEST_MESSAGE( "--- Test revoke proxied vote" ); - tx.operations.clear(); - tx.signatures.clear(); - op.account = "bob"; - op.approve = false; - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); + tx.operations.push_back( recover ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( generate_private_key( "bob_owner" ), db->get_chain_id() ); + tx.sign( generate_private_key( "new_key" ), db->get_chain_id() ); db->push_transaction( tx, 0 ); + const auto& owner1 = db->get< account_authority_object, by_account >(AN("bob")).owner; - BOOST_REQUIRE( sam_witness.votes.value == 0 ); - BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, bob.name ) ) == witness_vote_idx.end() ); - BOOST_REQUIRE( witness_vote_idx.find( std::make_tuple( sam_witness.owner, alice.name ) ) == witness_vote_idx.end() ); - - BOOST_TEST_MESSAGE( "--- Test failure when voting for a non-existent account" ); - tx.operations.clear(); - tx.signatures.clear(); - op.witness = "dave"; - op.approve = true; - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure when voting for an account that is not a witness" ); - tx.operations.clear(); - tx.signatures.clear(); - op.witness = "alice"; - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( account_witness_proxy_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: account_witness_proxy_validate" ); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( account_witness_proxy_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: account_witness_proxy_authorities" ); - - ACTORS( (alice)(bob) ) - - account_witness_proxy_operation op; - op.account = "bob"; - op.proxy = "alice"; + BOOST_REQUIRE( owner1 == recover.new_owner_authority ); - signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - BOOST_TEST_MESSAGE( "--- Test failure when no signatures" ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); + BOOST_TEST_MESSAGE( "Creating new recover request for a bogus key" ); - BOOST_TEST_MESSAGE( "--- Test failure when signed by a signature not in the account's authority" ); - tx.sign( bob_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); + request.new_owner_authority = authority( 1, generate_private_key( "foo bar" ).get_public_key(), 1 ); - BOOST_TEST_MESSAGE( "--- Test failure when duplicate signatures" ); + tx.operations.clear(); tx.signatures.clear(); - tx.sign( bob_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); - BOOST_TEST_MESSAGE( "--- Test failure when signed by an additional signature not in the creator's authority" ); - tx.signatures.clear(); - tx.sign( bob_private_key, db->get_chain_id() ); + tx.operations.push_back( request ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); - - BOOST_TEST_MESSAGE( "--- Test success with witness signature" ); - tx.signatures.clear(); - tx.sign( bob_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - BOOST_TEST_MESSAGE( "--- Test failure with proxy signature" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( account_witness_proxy_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: account_witness_proxy_apply" ); - - ACTORS( (alice)(bob)(sam)(dave) ) - fund( "alice", 1000 ); - vest( "alice", 1000 ); - fund( "bob", 3000 ); - vest( "bob", 3000 ); - fund( "sam", 5000 ); - vest( "sam", 5000 ); - fund( "dave", 7000 ); - vest( "dave", 7000 ); - - BOOST_TEST_MESSAGE( "--- Test setting proxy to another account from self." ); - // bob -> alice - - account_witness_proxy_operation op; - op.account = "bob"; - op.proxy = "alice"; - - signed_transaction tx; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + BOOST_TEST_MESSAGE( "Testing failure when bob does not have new authority" ); - BOOST_REQUIRE( bob.proxy == "alice" ); - BOOST_REQUIRE( bob.proxied_vsf_votes_total().value == 0 ); - BOOST_REQUIRE( alice.proxy == STEEM_PROXY_TO_SELF_ACCOUNT ); - BOOST_REQUIRE( alice.proxied_vsf_votes_total() == bob.vesting_shares.amount ); - validate_database(); + generate_blocks( db->head_block_time() + SOPHIATX_OWNER_UPDATE_LIMIT + fc::seconds( SOPHIATX_BLOCK_INTERVAL ) ); - BOOST_TEST_MESSAGE( "--- Test changing proxy" ); - // bob->sam + recover.new_owner_authority = authority( 1, generate_private_key( "idontknow" ).get_public_key(), 1 ); tx.operations.clear(); tx.signatures.clear(); - op.proxy = "sam"; - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( bob.proxy == "sam" ); - BOOST_REQUIRE( bob.proxied_vsf_votes_total().value == 0 ); - BOOST_REQUIRE( alice.proxied_vsf_votes_total().value == 0 ); - BOOST_REQUIRE( sam.proxy == STEEM_PROXY_TO_SELF_ACCOUNT ); - BOOST_REQUIRE( sam.proxied_vsf_votes_total().value == bob.vesting_shares.amount ); - validate_database(); - BOOST_TEST_MESSAGE( "--- Test failure when changing proxy to existing proxy" ); + tx.operations.push_back( recover ); + tx.sign( generate_private_key( "bob_owner" ), db->get_chain_id() ); + tx.sign( generate_private_key( "idontknow" ), db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + const auto& owner2 = db->get< account_authority_object, by_account >(AN("bob")).owner; + BOOST_REQUIRE( owner2 == authority( 1, generate_private_key( "new_key" ).get_public_key(), 1 ) ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::exception ); - BOOST_REQUIRE( bob.proxy == "sam" ); - BOOST_REQUIRE( bob.proxied_vsf_votes_total().value == 0 ); - BOOST_REQUIRE( sam.proxy == STEEM_PROXY_TO_SELF_ACCOUNT ); - BOOST_REQUIRE( sam.proxied_vsf_votes_total() == bob.vesting_shares.amount ); - validate_database(); + BOOST_TEST_MESSAGE( "Testing failure when bob does not have old authority" ); - BOOST_TEST_MESSAGE( "--- Test adding a grandparent proxy" ); - // bob->sam->dave + recover.recent_owner_authority = authority( 1, generate_private_key( "idontknow" ).get_public_key(), 1 ); + recover.new_owner_authority = authority( 1, generate_private_key( "foo bar" ).get_public_key(), 1 ); tx.operations.clear(); tx.signatures.clear(); - op.proxy = "dave"; - op.account = "sam"; - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( bob.proxy == "sam" ); - BOOST_REQUIRE( bob.proxied_vsf_votes_total().value == 0 ); - BOOST_REQUIRE( sam.proxy == "dave" ); - BOOST_REQUIRE( sam.proxied_vsf_votes_total() == bob.vesting_shares.amount ); - BOOST_REQUIRE( dave.proxy == STEEM_PROXY_TO_SELF_ACCOUNT ); - BOOST_REQUIRE( dave.proxied_vsf_votes_total() == ( sam.vesting_shares + bob.vesting_shares ).amount ); - validate_database(); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); - BOOST_TEST_MESSAGE( "--- Test adding a grandchild proxy" ); - // alice - // | - // bob-> sam->dave - - tx.operations.clear(); - tx.signatures.clear(); - op.proxy = "sam"; - op.account = "alice"; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); + tx.operations.push_back( recover ); + tx.sign( generate_private_key( "foo bar" ), db->get_chain_id() ); + tx.sign( generate_private_key( "idontknow" ), db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + const auto& owner3 = db->get< account_authority_object, by_account >(AN("bob")).owner; + BOOST_REQUIRE( owner3 == authority( 1, generate_private_key( "new_key" ).get_public_key(), 1 ) ); - db->push_transaction( tx, 0 ); - BOOST_REQUIRE( alice.proxy == "sam" ); - BOOST_REQUIRE( alice.proxied_vsf_votes_total().value == 0 ); - BOOST_REQUIRE( bob.proxy == "sam" ); - BOOST_REQUIRE( bob.proxied_vsf_votes_total().value == 0 ); - BOOST_REQUIRE( sam.proxy == "dave" ); - BOOST_REQUIRE( sam.proxied_vsf_votes_total() == ( bob.vesting_shares + alice.vesting_shares ).amount ); - BOOST_REQUIRE( dave.proxy == STEEM_PROXY_TO_SELF_ACCOUNT ); - BOOST_REQUIRE( dave.proxied_vsf_votes_total() == ( sam.vesting_shares + bob.vesting_shares + alice.vesting_shares ).amount ); - validate_database(); + BOOST_TEST_MESSAGE( "Testing using the same old owner auth again for recovery" ); - BOOST_TEST_MESSAGE( "--- Test removing a grandchild proxy" ); - // alice->sam->dave + recover.recent_owner_authority = authority( 1, generate_private_key( "bob_owner" ).get_public_key(), 1 ); + recover.new_owner_authority = authority( 1, generate_private_key( "foo bar" ).get_public_key(), 1 ); tx.operations.clear(); tx.signatures.clear(); - op.proxy = STEEM_PROXY_TO_SELF_ACCOUNT; - op.account = "bob"; - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); + tx.operations.push_back( recover ); + tx.sign( generate_private_key( "bob_owner" ), db->get_chain_id() ); + tx.sign( generate_private_key( "foo bar" ), db->get_chain_id() ); db->push_transaction( tx, 0 ); - BOOST_REQUIRE( alice.proxy == "sam" ); - BOOST_REQUIRE( alice.proxied_vsf_votes_total().value == 0 ); - BOOST_REQUIRE( bob.proxy == STEEM_PROXY_TO_SELF_ACCOUNT ); - BOOST_REQUIRE( bob.proxied_vsf_votes_total().value == 0 ); - BOOST_REQUIRE( sam.proxy == "dave" ); - BOOST_REQUIRE( sam.proxied_vsf_votes_total() == alice.vesting_shares.amount ); - BOOST_REQUIRE( dave.proxy == STEEM_PROXY_TO_SELF_ACCOUNT ); - BOOST_REQUIRE( dave.proxied_vsf_votes_total() == ( sam.vesting_shares + alice.vesting_shares ).amount ); - validate_database(); + const auto& owner4 = db->get< account_authority_object, by_account >(AN("bob")).owner; + BOOST_REQUIRE( owner4 == recover.new_owner_authority ); - BOOST_TEST_MESSAGE( "--- Test votes are transferred when a proxy is added" ); - account_witness_vote_operation vote; - vote.account= "bob"; - vote.witness = STEEM_INIT_MINER_NAME; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( vote ); - tx.sign( bob_private_key, db->get_chain_id() ); + BOOST_TEST_MESSAGE( "Creating a recovery request that will expire" ); - db->push_transaction( tx, 0 ); + request.new_owner_authority = authority( 1, generate_private_key( "expire" ).get_public_key(), 1 ); tx.operations.clear(); tx.signatures.clear(); - op.account = "alice"; - op.proxy = "bob"; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - - db->push_transaction( tx, 0 ); - BOOST_REQUIRE( db->get_witness( STEEM_INIT_MINER_NAME ).votes == ( alice.vesting_shares + bob.vesting_shares ).amount ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test votes are removed when a proxy is removed" ); - op.proxy = STEEM_PROXY_TO_SELF_ACCOUNT; - tx.signatures.clear(); - tx.operations.clear(); - tx.operations.push_back( op ); + tx.operations.push_back( request ); tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - BOOST_REQUIRE( db->get_witness( STEEM_INIT_MINER_NAME ).votes == bob.vesting_shares.amount ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( custom_authorities ) -{ - custom_operation op; - op.required_auths.insert( "alice" ); - op.required_auths.insert( "bob" ); - - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; - - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); + const auto& request_idx = db->get_index< account_recovery_request_index >().indices(); + auto req_itr = request_idx.begin(); - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); + BOOST_REQUIRE( req_itr->account_to_recover == AN("bob") ); + BOOST_REQUIRE( req_itr->new_owner_authority == authority( 1, generate_private_key( "expire" ).get_public_key(), 1 ) ); + BOOST_REQUIRE( req_itr->expires == db->head_block_time() + SOPHIATX_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD ); + auto expires = req_itr->expires; + ++req_itr; + BOOST_REQUIRE( req_itr == request_idx.end() ); - expected.insert( "alice" ); - expected.insert( "bob" ); - op.get_required_active_authorities( auths ); - BOOST_REQUIRE( auths == expected ); -} + generate_blocks( time_point_sec( expires - SOPHIATX_BLOCK_INTERVAL ), true ); -BOOST_AUTO_TEST_CASE( custom_json_authorities ) -{ - custom_json_operation op; - op.required_auths.insert( "alice" ); - op.required_posting_auths.insert( "bob" ); + const auto& new_request_idx = db->get_index< account_recovery_request_index >().indices(); + BOOST_REQUIRE( new_request_idx.begin() != new_request_idx.end() ); - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; + generate_block(); - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); + BOOST_REQUIRE( new_request_idx.begin() == new_request_idx.end() ); - expected.insert( "alice" ); - op.get_required_active_authorities( auths ); - BOOST_REQUIRE( auths == expected ); + recover.new_owner_authority = authority( 1, generate_private_key( "expire" ).get_public_key(), 1 ); + recover.recent_owner_authority = authority( 1, generate_private_key( "bob_owner" ).get_public_key(), 1 ); - auths.clear(); - expected.clear(); - expected.insert( "bob" ); - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); -} + tx.operations.clear(); + tx.signatures.clear(); -BOOST_AUTO_TEST_CASE( custom_binary_authorities ) -{ - ACTORS( (alice) ) - - custom_binary_operation op; - op.required_owner_auths.insert( "alice" ); - op.required_active_auths.insert( "bob" ); - op.required_posting_auths.insert( "sam" ); - op.required_auths.push_back( db->get< account_authority_object, by_account >( "alice" ).posting ); - - flat_set< account_name_type > acc_auths; - flat_set< account_name_type > acc_expected; - vector< authority > auths; - vector< authority > expected; - - acc_expected.insert( "alice" ); - op.get_required_owner_authorities( acc_auths ); - BOOST_REQUIRE( acc_auths == acc_expected ); - - acc_auths.clear(); - acc_expected.clear(); - acc_expected.insert( "bob" ); - op.get_required_active_authorities( acc_auths ); - BOOST_REQUIRE( acc_auths == acc_expected ); - - acc_auths.clear(); - acc_expected.clear(); - acc_expected.insert( "sam" ); - op.get_required_posting_authorities( acc_auths ); - BOOST_REQUIRE( acc_auths == acc_expected ); - - expected.push_back( db->get< account_authority_object, by_account >( "alice" ).posting ); - op.get_required_authorities( auths ); - BOOST_REQUIRE( auths == expected ); -} - -BOOST_AUTO_TEST_CASE( feed_publish_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: feed_publish_validate" ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( feed_publish_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: feed_publish_authorities" ); - - ACTORS( (alice)(bob) ) - fund( "alice", 10000 ); - witness_create( "alice", alice_private_key, "foo.bar", alice_private_key.get_public_key(), 1000 ); - - feed_publish_operation op; - op.publisher = "alice"; - op.exchange_rate = price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ); - - signed_transaction tx; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - - BOOST_TEST_MESSAGE( "--- Test failure when no signature." ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - BOOST_TEST_MESSAGE( "--- Test failure with incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - BOOST_TEST_MESSAGE( "--- Test failure with duplicate signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_duplicate_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure with additional incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_irrelevant_sig ); - - BOOST_TEST_MESSAGE( "--- Test success with witness account signature" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, database::skip_transaction_dupe_check ); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( feed_publish_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: feed_publish_apply" ); - - ACTORS( (alice) ) - fund( "alice", 10000 ); - witness_create( "alice", alice_private_key, "foo.bar", alice_private_key.get_public_key(), 1000 ); - - BOOST_TEST_MESSAGE( "--- Test publishing price feed" ); - feed_publish_operation op; - op.publisher = "alice"; - op.exchange_rate = price( ASSET( "1.000 TBD" ), ASSET( "1000.000 TESTS" ) ); // 1000 STEEM : 1 SBD - - signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - - db->push_transaction( tx, 0 ); - - witness_object& alice_witness = const_cast< witness_object& >( db->get_witness( "alice" ) ); - - BOOST_REQUIRE( alice_witness.sbd_exchange_rate == op.exchange_rate ); - BOOST_REQUIRE( alice_witness.last_sbd_exchange_update == db->head_block_time() ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure publishing to non-existent witness" ); - - tx.operations.clear(); - tx.signatures.clear(); - op.publisher = "bob"; - tx.sign( alice_private_key, db->get_chain_id() ); - - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure publishing with SBD base symbol" ); - - tx.operations.clear(); - tx.signatures.clear(); - op.exchange_rate = price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ); - tx.sign( alice_private_key, db->get_chain_id() ); - - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::assert_exception ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test updating price feed" ); - - tx.operations.clear(); - tx.signatures.clear(); - op.exchange_rate = price( ASSET(" 1.000 TBD" ), ASSET( "1500.000 TESTS" ) ); - op.publisher = "alice"; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - - db->push_transaction( tx, 0 ); - - alice_witness = const_cast< witness_object& >( db->get_witness( "alice" ) ); - // BOOST_REQUIRE( std::abs( alice_witness.sbd_exchange_rate.to_real() - op.exchange_rate.to_real() ) < 0.0000005 ); - BOOST_REQUIRE( alice_witness.last_sbd_exchange_update == db->head_block_time() ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( convert_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: convert_validate" ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( convert_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: convert_authorities" ); - - ACTORS( (alice)(bob) ) - fund( "alice", 10000 ); - - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); - - convert( "alice", ASSET( "2.500 TESTS" ) ); - - validate_database(); - - convert_operation op; - op.owner = "alice"; - op.amount = ASSET( "2.500 TBD" ); - - signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - - BOOST_TEST_MESSAGE( "--- Test failure when no signatures" ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); - - BOOST_TEST_MESSAGE( "--- Test failure when signed by a signature not in the account's authority" ); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); - - BOOST_TEST_MESSAGE( "--- Test failure when duplicate signatures" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure when signed by an additional signature not in the creator's authority" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); - - BOOST_TEST_MESSAGE( "--- Test success with owner signature" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( convert_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: convert_apply" ); - ACTORS( (alice)(bob) ); - fund( "alice", 10000 ); - fund( "bob" , 10000 ); - - convert_operation op; - signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - - const auto& convert_request_idx = db->get_index< convert_request_index >().indices().get< by_owner >(); - - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); - - convert( "alice", ASSET( "2.500 TESTS" ) ); - convert( "bob", ASSET( "7.000 TESTS" ) ); - - const auto& new_alice = db->get_account( "alice" ); - const auto& new_bob = db->get_account( "bob" ); - - BOOST_TEST_MESSAGE( "--- Test failure when account does not have the required TESTS" ); - op.owner = "bob"; - op.amount = ASSET( "5.000 TESTS" ); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( new_bob.balance.amount.value == ASSET( "3.000 TESTS" ).amount.value ); - BOOST_REQUIRE( new_bob.sbd_balance.amount.value == ASSET( "7.000 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure when account does not have the required TBD" ); - op.owner = "alice"; - op.amount = ASSET( "5.000 TBD" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( new_alice.balance.amount.value == ASSET( "7.500 TESTS" ).amount.value ); - BOOST_REQUIRE( new_alice.sbd_balance.amount.value == ASSET( "2.500 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure when account does not exist" ); - op.owner = "sam"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_TEST_MESSAGE( "--- Test success converting SBD to TESTS" ); - op.owner = "bob"; - op.amount = ASSET( "3.000 TBD" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( new_bob.balance.amount.value == ASSET( "3.000 TESTS" ).amount.value ); - BOOST_REQUIRE( new_bob.sbd_balance.amount.value == ASSET( "4.000 TBD" ).amount.value ); - - auto convert_request = convert_request_idx.find( std::make_tuple( op.owner, op.requestid ) ); - BOOST_REQUIRE( convert_request != convert_request_idx.end() ); - BOOST_REQUIRE( convert_request->owner == op.owner ); - BOOST_REQUIRE( convert_request->requestid == op.requestid ); - BOOST_REQUIRE( convert_request->amount.amount.value == op.amount.amount.value ); - //BOOST_REQUIRE( convert_request->premium == 100000 ); - BOOST_REQUIRE( convert_request->conversion_date == db->head_block_time() + STEEM_CONVERSION_DELAY ); - - BOOST_TEST_MESSAGE( "--- Test failure from repeated id" ); - op.amount = ASSET( "2.000 TESTS" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( new_bob.balance.amount.value == ASSET( "3.000 TESTS" ).amount.value ); - BOOST_REQUIRE( new_bob.sbd_balance.amount.value == ASSET( "4.000 TBD" ).amount.value ); - - convert_request = convert_request_idx.find( std::make_tuple( op.owner, op.requestid ) ); - BOOST_REQUIRE( convert_request != convert_request_idx.end() ); - BOOST_REQUIRE( convert_request->owner == op.owner ); - BOOST_REQUIRE( convert_request->requestid == op.requestid ); - BOOST_REQUIRE( convert_request->amount.amount.value == ASSET( "3.000 TBD" ).amount.value ); - //BOOST_REQUIRE( convert_request->premium == 100000 ); - BOOST_REQUIRE( convert_request->conversion_date == db->head_block_time() + STEEM_CONVERSION_DELAY ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( fixture_convert_checks_balance ) -{ - // This actually tests the convert() method of the database fixture can't result in negative - // balances, see issue #1825 - try - { - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); - ACTORS( (dany) ) - - fund( "dany", 5000 ); - STEEM_REQUIRE_THROW( convert( "dany", ASSET( "5000.000 TESTS" ) ), fc::exception ); - } - FC_LOG_AND_RETHROW() - -} - -BOOST_AUTO_TEST_CASE( limit_order_create_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: limit_order_create_validate" ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( limit_order_create_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: limit_order_create_authorities" ); - - ACTORS( (alice)(bob) ) - fund( "alice", 10000 ); - - limit_order_create_operation op; - op.owner = "alice"; - op.amount_to_sell = ASSET( "1.000 TESTS" ); - op.min_to_receive = ASSET( "1.000 TBD" ); - - signed_transaction tx; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - - BOOST_TEST_MESSAGE( "--- Test failure when no signature." ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - BOOST_TEST_MESSAGE( "--- Test success with account signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, database::skip_transaction_dupe_check ); - - BOOST_TEST_MESSAGE( "--- Test failure with duplicate signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_duplicate_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure with additional incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_irrelevant_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure with incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( limit_order_create_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: limit_order_create_apply" ); - - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); - - ACTORS( (alice)(bob) ) - fund( "alice", 1000000 ); - fund( "bob", 1000000 ); - convert( "bob", ASSET("1000.000 TESTS" ) ); - - const auto& limit_order_idx = db->get_index< limit_order_index >().indices().get< by_account >(); - - BOOST_TEST_MESSAGE( "--- Test failure when account does not have required funds" ); - limit_order_create_operation op; - signed_transaction tx; - - op.owner = "bob"; - op.orderid = 1; - op.amount_to_sell = ASSET( "10.000 TESTS" ); - op.min_to_receive = ASSET( "10.000 TBD" ); - op.fill_or_kill = false; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "bob", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "0.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.sbd_balance.amount.value == ASSET( "1000.000 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure when amount to receive is 0" ); - - op.owner = "alice"; - op.min_to_receive = ASSET( "0.000 TBD" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "1000.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "0.000 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure when amount to sell is 0" ); - - op.amount_to_sell = ASSET( "0.000 TESTS" ); - op.min_to_receive = ASSET( "10.000 TBD" ) ; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "1000.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "0.000 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test success creating limit order that will not be filled" ); - - op.amount_to_sell = ASSET( "10.000 TESTS" ); - op.min_to_receive = ASSET( "15.000 TBD" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - auto limit_order = limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == op.owner ); - BOOST_REQUIRE( limit_order->orderid == op.orderid ); - BOOST_REQUIRE( limit_order->for_sale == op.amount_to_sell.amount ); - BOOST_REQUIRE( limit_order->sell_price == price( op.amount_to_sell / op.min_to_receive ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( SBD_SYMBOL, STEEM_SYMBOL ) ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "990.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "0.000 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure creating limit order with duplicate id" ); - - op.amount_to_sell = ASSET( "20.000 TESTS" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - limit_order = limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == op.owner ); - BOOST_REQUIRE( limit_order->orderid == op.orderid ); - BOOST_REQUIRE( limit_order->for_sale == 10000 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "10.000 TESTS" ), op.min_to_receive ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( SBD_SYMBOL, STEEM_SYMBOL ) ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "990.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "0.000 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test sucess killing an order that will not be filled" ); - - op.orderid = 2; - op.fill_or_kill = true; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "990.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "0.000 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test having a partial match to limit order" ); - // Alice has order for 15 SBD at a price of 2:3 - // Fill 5 STEEM for 7.5 SBD - - op.owner = "bob"; - op.orderid = 1; - op.amount_to_sell = ASSET( "7.500 TBD" ); - op.min_to_receive = ASSET( "5.000 TESTS" ); - op.fill_or_kill = false; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - auto recent_ops = get_last_operations( 1 ); - auto fill_order_op = recent_ops[0].get< fill_order_operation >(); - - limit_order = limit_order_idx.find( std::make_tuple( "alice", 1 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "alice" ); - BOOST_REQUIRE( limit_order->orderid == op.orderid ); - BOOST_REQUIRE( limit_order->for_sale == 5000 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "10.000 TESTS" ), ASSET( "15.000 TBD" ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( SBD_SYMBOL, STEEM_SYMBOL ) ); - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "bob", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "990.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "7.500 TBD" ).amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "5.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.sbd_balance.amount.value == ASSET( "992.500 TBD" ).amount.value ); - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 1 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == ASSET( "5.000 TESTS").amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 1 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == ASSET( "7.500 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test filling an existing order fully, but the new order partially" ); - - op.amount_to_sell = ASSET( "15.000 TBD" ); - op.min_to_receive = ASSET( "10.000 TESTS" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - limit_order = limit_order_idx.find( std::make_tuple( "bob", 1 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "bob" ); - BOOST_REQUIRE( limit_order->orderid == 1 ); - BOOST_REQUIRE( limit_order->for_sale.value == 7500 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "15.000 TBD" ), ASSET( "10.000 TESTS" ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( SBD_SYMBOL, STEEM_SYMBOL ) ); - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", 1 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "990.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "15.000 TBD" ).amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "10.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.sbd_balance.amount.value == ASSET( "977.500 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test filling an existing order and new order fully" ); - - op.owner = "alice"; - op.orderid = 3; - op.amount_to_sell = ASSET( "5.000 TESTS" ); - op.min_to_receive = ASSET( "7.500 TBD" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", 3 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "bob", 1 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "985.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "22.500 TBD" ).amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "15.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.sbd_balance.amount.value == ASSET( "977.500 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test filling limit order with better order when partial order is better." ); - - op.owner = "alice"; - op.orderid = 4; - op.amount_to_sell = ASSET( "10.000 TESTS" ); - op.min_to_receive = ASSET( "11.000 TBD" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "bob"; - op.orderid = 4; - op.amount_to_sell = ASSET( "12.000 TBD" ); - op.min_to_receive = ASSET( "10.000 TESTS" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - limit_order = limit_order_idx.find( std::make_tuple( "bob", 4 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order_idx.find(std::make_tuple( "alice", 4 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "bob" ); - BOOST_REQUIRE( limit_order->orderid == 4 ); - BOOST_REQUIRE( limit_order->for_sale.value == 1000 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "12.000 TBD" ), ASSET( "10.000 TESTS" ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( SBD_SYMBOL, STEEM_SYMBOL ) ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "975.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "33.500 TBD" ).amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "25.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.sbd_balance.amount.value == ASSET( "965.500 TBD" ).amount.value ); - validate_database(); - - limit_order_cancel_operation can; - can.owner = "bob"; - can.orderid = 4; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( can ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "--- Test filling limit order with better order when partial order is worse." ); - - //auto gpo = db->get_dynamic_global_properties(); - //auto start_sbd = gpo.current_sbd_supply; - - op.owner = "alice"; - op.orderid = 5; - op.amount_to_sell = ASSET( "20.000 TESTS" ); - op.min_to_receive = ASSET( "22.000 TBD" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "bob"; - op.orderid = 5; - op.amount_to_sell = ASSET( "12.000 TBD" ); - op.min_to_receive = ASSET( "10.000 TESTS" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - limit_order = limit_order_idx.find( std::make_tuple( "alice", 5 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order_idx.find(std::make_tuple( "bob", 5 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "alice" ); - BOOST_REQUIRE( limit_order->orderid == 5 ); - BOOST_REQUIRE( limit_order->for_sale.value == 9091 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "20.000 TESTS" ), ASSET( "22.000 TBD" ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( SBD_SYMBOL, STEEM_SYMBOL ) ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "955.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "45.500 TBD" ).amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "35.909 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.sbd_balance.amount.value == ASSET( "954.500 TBD" ).amount.value ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( limit_order_create2_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: limit_order_create2_authorities" ); - - ACTORS( (alice)(bob) ) - fund( "alice", 10000 ); - - limit_order_create2_operation op; - op.owner = "alice"; - op.amount_to_sell = ASSET( "1.000 TESTS" ); - op.exchange_rate = price( ASSET( "1.000 TESTS" ), ASSET( "1.000 TBD" ) ); - - signed_transaction tx; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - - BOOST_TEST_MESSAGE( "--- Test failure when no signature." ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - BOOST_TEST_MESSAGE( "--- Test success with account signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, database::skip_transaction_dupe_check ); - - BOOST_TEST_MESSAGE( "--- Test failure with duplicate signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_duplicate_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure with additional incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_irrelevant_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure with incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( limit_order_create2_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: limit_order_create2_apply" ); - - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); - - ACTORS( (alice)(bob) ) - fund( "alice", 1000000 ); - fund( "bob", 1000000 ); - convert( "bob", ASSET("1000.000 TESTS" ) ); - - const auto& limit_order_idx = db->get_index< limit_order_index >().indices().get< by_account >(); - - BOOST_TEST_MESSAGE( "--- Test failure when account does not have required funds" ); - limit_order_create2_operation op; - signed_transaction tx; - - op.owner = "bob"; - op.orderid = 1; - op.amount_to_sell = ASSET( "10.000 TESTS" ); - op.exchange_rate = price( ASSET( "1.000 TESTS" ), ASSET( "1.000 TBD" ) ); - op.fill_or_kill = false; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "bob", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "0.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.sbd_balance.amount.value == ASSET( "1000.000 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure when price is 0" ); - - /// First check validation on price constructor level: - { - price broken_price; - /// Invalid base value - STEEM_REQUIRE_THROW(broken_price=price(ASSET("0.000 TESTS"), ASSET("1.000 TBD")), - fc::exception); - /// Invalid quote value - STEEM_REQUIRE_THROW(broken_price=price(ASSET("1.000 TESTS"), ASSET("0.000 TBD")), - fc::exception); - /// Invalid symbol (same in base & quote) - STEEM_REQUIRE_THROW(broken_price=price(ASSET("1.000 TESTS"), ASSET("0.000 TESTS")), - fc::exception); - } - - op.owner = "alice"; - /** Here intentionally price has assigned its members directly, to skip validation - inside price constructor, and force the one performed at tx push. - */ - op.exchange_rate = price(); - op.exchange_rate.base = ASSET("0.000 TESTS"); - op.exchange_rate.quote = ASSET("1.000 TBD"); - - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "1000.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "0.000 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure when amount to sell is 0" ); - - op.amount_to_sell = ASSET( "0.000 TESTS" ); - op.exchange_rate = price( ASSET( "1.000 TESTS" ), ASSET( "1.000 TBD" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "1000.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "0.000 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test success creating limit order that will not be filled" ); - - op.amount_to_sell = ASSET( "10.000 TESTS" ); - op.exchange_rate = price( ASSET( "2.000 TESTS" ), ASSET( "3.000 TBD" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - auto limit_order = limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == op.owner ); - BOOST_REQUIRE( limit_order->orderid == op.orderid ); - BOOST_REQUIRE( limit_order->for_sale == op.amount_to_sell.amount ); - BOOST_REQUIRE( limit_order->sell_price == op.exchange_rate ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( SBD_SYMBOL, STEEM_SYMBOL ) ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "990.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "0.000 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure creating limit order with duplicate id" ); - - op.amount_to_sell = ASSET( "20.000 TESTS" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - limit_order = limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == op.owner ); - BOOST_REQUIRE( limit_order->orderid == op.orderid ); - BOOST_REQUIRE( limit_order->for_sale == 10000 ); - BOOST_REQUIRE( limit_order->sell_price == op.exchange_rate ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( SBD_SYMBOL, STEEM_SYMBOL ) ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "990.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "0.000 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test sucess killing an order that will not be filled" ); - - op.orderid = 2; - op.fill_or_kill = true; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "990.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "0.000 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test having a partial match to limit order" ); - // Alice has order for 15 SBD at a price of 2:3 - // Fill 5 STEEM for 7.5 SBD - - op.owner = "bob"; - op.orderid = 1; - op.amount_to_sell = ASSET( "7.500 TBD" ); - op.exchange_rate = price( ASSET( "3.000 TBD" ), ASSET( "2.000 TESTS" ) ); - op.fill_or_kill = false; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - auto recent_ops = get_last_operations( 1 ); - auto fill_order_op = recent_ops[0].get< fill_order_operation >(); - - limit_order = limit_order_idx.find( std::make_tuple( "alice", 1 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "alice" ); - BOOST_REQUIRE( limit_order->orderid == op.orderid ); - BOOST_REQUIRE( limit_order->for_sale == 5000 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "2.000 TESTS" ), ASSET( "3.000 TBD" ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( SBD_SYMBOL, STEEM_SYMBOL ) ); - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "bob", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "990.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "7.500 TBD" ).amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "5.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.sbd_balance.amount.value == ASSET( "992.500 TBD" ).amount.value ); - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 1 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == ASSET( "5.000 TESTS").amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 1 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == ASSET( "7.500 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test filling an existing order fully, but the new order partially" ); - - op.amount_to_sell = ASSET( "15.000 TBD" ); - op.exchange_rate = price( ASSET( "3.000 TBD" ), ASSET( "2.000 TESTS" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - limit_order = limit_order_idx.find( std::make_tuple( "bob", 1 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "bob" ); - BOOST_REQUIRE( limit_order->orderid == 1 ); - BOOST_REQUIRE( limit_order->for_sale.value == 7500 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "3.000 TBD" ), ASSET( "2.000 TESTS" ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( SBD_SYMBOL, STEEM_SYMBOL ) ); - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", 1 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "990.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "15.000 TBD" ).amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "10.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.sbd_balance.amount.value == ASSET( "977.500 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test filling an existing order and new order fully" ); - - op.owner = "alice"; - op.orderid = 3; - op.amount_to_sell = ASSET( "5.000 TESTS" ); - op.exchange_rate = price( ASSET( "2.000 TESTS" ), ASSET( "3.000 TBD" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", 3 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "bob", 1 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "985.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "22.500 TBD" ).amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "15.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.sbd_balance.amount.value == ASSET( "977.500 TBD" ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test filling limit order with better order when partial order is better." ); - - op.owner = "alice"; - op.orderid = 4; - op.amount_to_sell = ASSET( "10.000 TESTS" ); - op.exchange_rate = price( ASSET( "1.000 TESTS" ), ASSET( "1.100 TBD" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "bob"; - op.orderid = 4; - op.amount_to_sell = ASSET( "12.000 TBD" ); - op.exchange_rate = price( ASSET( "1.200 TBD" ), ASSET( "1.000 TESTS" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - limit_order = limit_order_idx.find( std::make_tuple( "bob", 4 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order_idx.find(std::make_tuple( "alice", 4 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "bob" ); - BOOST_REQUIRE( limit_order->orderid == 4 ); - BOOST_REQUIRE( limit_order->for_sale.value == 1000 ); - BOOST_REQUIRE( limit_order->sell_price == op.exchange_rate ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( SBD_SYMBOL, STEEM_SYMBOL ) ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "975.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "33.500 TBD" ).amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "25.000 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.sbd_balance.amount.value == ASSET( "965.500 TBD" ).amount.value ); - validate_database(); - - limit_order_cancel_operation can; - can.owner = "bob"; - can.orderid = 4; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( can ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "--- Test filling limit order with better order when partial order is worse." ); - - //auto gpo = db->get_dynamic_global_properties(); - //auto start_sbd = gpo.current_sbd_supply; - - - op.owner = "alice"; - op.orderid = 5; - op.amount_to_sell = ASSET( "20.000 TESTS" ); - op.exchange_rate = price( ASSET( "1.000 TESTS" ), ASSET( "1.100 TBD" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "bob"; - op.orderid = 5; - op.amount_to_sell = ASSET( "12.000 TBD" ); - op.exchange_rate = price( ASSET( "1.200 TBD" ), ASSET( "1.000 TESTS" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - limit_order = limit_order_idx.find( std::make_tuple( "alice", 5 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order_idx.find(std::make_tuple( "bob", 5 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "alice" ); - BOOST_REQUIRE( limit_order->orderid == 5 ); - BOOST_REQUIRE( limit_order->for_sale.value == 9091 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "1.000 TESTS" ), ASSET( "1.100 TBD" ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( SBD_SYMBOL, STEEM_SYMBOL ) ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "955.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "45.500 TBD" ).amount.value ); - BOOST_REQUIRE( bob.balance.amount.value == ASSET( "35.909 TESTS" ).amount.value ); - BOOST_REQUIRE( bob.sbd_balance.amount.value == ASSET( "954.500 TBD" ).amount.value ); - - BOOST_TEST_MESSAGE( "--- Test filling best order with multiple matches." ); - ACTORS( (sam)(dave) ) - fund( "sam", 1000000 ); - fund( "dave", 1000000 ); - convert( "dave", ASSET("1000.000 TESTS" ) ); - - op.owner = "bob"; - op.orderid = 6; - op.amount_to_sell = ASSET( "20.000 TESTS" ); - op.exchange_rate = price( ASSET( "1.000 TESTS" ), ASSET( "1.000 TBD" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "sam"; - op.orderid = 1; - op.amount_to_sell = ASSET( "20.000 TESTS" ); - op.exchange_rate = price( ASSET( "1.000 TESTS" ), ASSET( "0.500 TBD" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "alice"; - op.orderid = 6; - op.amount_to_sell = ASSET( "20.000 TESTS" ); - op.exchange_rate = price( ASSET( "1.000 TESTS" ), ASSET( "2.000 TBD" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "dave"; - op.orderid = 1; - op.amount_to_sell = ASSET( "25.000 TBD" ); - op.exchange_rate = price( ASSET( "1.000 TBD" ), ASSET( "0.010 TESTS" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( dave_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - recent_ops = get_last_operations( 3 ); - fill_order_op = recent_ops[2].get< fill_order_operation >(); - BOOST_REQUIRE( fill_order_op.open_owner == "sam" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 1 ); - BOOST_REQUIRE( fill_order_op.open_pays == ASSET( "20.000 TESTS") ); - BOOST_REQUIRE( fill_order_op.current_owner == "dave" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 1 ); - BOOST_REQUIRE( fill_order_op.current_pays == ASSET( "10.000 TBD" ) ); - - fill_order_op = recent_ops[0].get< fill_order_operation >(); - BOOST_REQUIRE( fill_order_op.open_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 6 ); - BOOST_REQUIRE( fill_order_op.open_pays == ASSET( "15.000 TESTS") ); - BOOST_REQUIRE( fill_order_op.current_owner == "dave" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 1 ); - BOOST_REQUIRE( fill_order_op.current_pays == ASSET( "15.000 TBD" ) ); - - limit_order = limit_order_idx.find( std::make_tuple( "bob", 6 ) ); - BOOST_REQUIRE( limit_order->seller == "bob" ); - BOOST_REQUIRE( limit_order->orderid == 6 ); - BOOST_REQUIRE( limit_order->for_sale.value == 5000 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "1.000 TESTS" ), ASSET( "1.000 TBD" ) ) ); - - limit_order = limit_order_idx.find( std::make_tuple( "alice", 6 ) ); - BOOST_REQUIRE( limit_order->seller == "alice" ); - BOOST_REQUIRE( limit_order->orderid == 6 ); - BOOST_REQUIRE( limit_order->for_sale.value == 20000 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "1.000 TESTS" ), ASSET( "2.000 TBD" ) ) ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( limit_order_cancel_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: limit_order_cancel_validate" ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( limit_order_cancel_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: limit_order_cancel_authorities" ); - - ACTORS( (alice)(bob) ) - fund( "alice", 10000 ); - - limit_order_create_operation c; - c.owner = "alice"; - c.orderid = 1; - c.amount_to_sell = ASSET( "1.000 TESTS" ); - c.min_to_receive = ASSET( "1.000 TBD" ); - - signed_transaction tx; - tx.operations.push_back( c ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - limit_order_cancel_operation op; - op.owner = "alice"; - op.orderid = 1; - - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - - BOOST_TEST_MESSAGE( "--- Test failure when no signature." ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - BOOST_TEST_MESSAGE( "--- Test success with account signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, database::skip_transaction_dupe_check ); - - BOOST_TEST_MESSAGE( "--- Test failure with duplicate signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_duplicate_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure with additional incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_irrelevant_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure with incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( limit_order_cancel_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: limit_order_cancel_apply" ); - - ACTORS( (alice) ) - fund( "alice", 10000 ); - - const auto& limit_order_idx = db->get_index< limit_order_index >().indices().get< by_account >(); - - BOOST_TEST_MESSAGE( "--- Test cancel non-existent order" ); - - limit_order_cancel_operation op; - signed_transaction tx; - - op.owner = "alice"; - op.orderid = 5; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_TEST_MESSAGE( "--- Test cancel order" ); - - limit_order_create_operation create; - create.owner = "alice"; - create.orderid = 5; - create.amount_to_sell = ASSET( "5.000 TESTS" ); - create.min_to_receive = ASSET( "7.500 TBD" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( create ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", 5 ) ) != limit_order_idx.end() ); - - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", 5 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( alice.balance.amount.value == ASSET( "10.000 TESTS" ).amount.value ); - BOOST_REQUIRE( alice.sbd_balance.amount.value == ASSET( "0.000 TBD" ).amount.value ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( pow_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: pow_validate" ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( pow_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: pow_authorities" ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( pow_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: pow_apply" ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( account_recovery ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: account recovery" ); - - ACTORS( (alice) ); - fund( "alice", 1000000 ); - - BOOST_TEST_MESSAGE( "Creating account bob with alice" ); - - account_create_operation acc_create; - acc_create.fee = ASSET( "10.000 TESTS" ); - acc_create.creator = "alice"; - acc_create.new_account_name = "bob"; - acc_create.owner = authority( 1, generate_private_key( "bob_owner" ).get_public_key(), 1 ); - acc_create.active = authority( 1, generate_private_key( "bob_active" ).get_public_key(), 1 ); - acc_create.posting = authority( 1, generate_private_key( "bob_posting" ).get_public_key(), 1 ); - acc_create.memo_key = generate_private_key( "bob_memo" ).get_public_key(); - acc_create.json_metadata = ""; - - - signed_transaction tx; - tx.operations.push_back( acc_create ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - const auto& bob_auth = db->get< account_authority_object, by_account >( "bob" ); - BOOST_REQUIRE( bob_auth.owner == acc_create.owner ); - - - BOOST_TEST_MESSAGE( "Changing bob's owner authority" ); - - account_update_operation acc_update; - acc_update.account = "bob"; - acc_update.owner = authority( 1, generate_private_key( "bad_key" ).get_public_key(), 1 ); - acc_update.memo_key = acc_create.memo_key; - acc_update.json_metadata = ""; - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( acc_update ); - tx.sign( generate_private_key( "bob_owner" ), db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( bob_auth.owner == *acc_update.owner ); - - - BOOST_TEST_MESSAGE( "Creating recover request for bob with alice" ); - - request_account_recovery_operation request; - request.recovery_account = "alice"; - request.account_to_recover = "bob"; - request.new_owner_authority = authority( 1, generate_private_key( "new_key" ).get_public_key(), 1 ); - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( request ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( bob_auth.owner == *acc_update.owner ); - - - BOOST_TEST_MESSAGE( "Recovering bob's account with original owner auth and new secret" ); - - generate_blocks( db->head_block_time() + STEEM_OWNER_UPDATE_LIMIT ); - - recover_account_operation recover; - recover.account_to_recover = "bob"; - recover.new_owner_authority = request.new_owner_authority; - recover.recent_owner_authority = acc_create.owner; - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( recover ); - tx.sign( generate_private_key( "bob_owner" ), db->get_chain_id() ); - tx.sign( generate_private_key( "new_key" ), db->get_chain_id() ); - db->push_transaction( tx, 0 ); - const auto& owner1 = db->get< account_authority_object, by_account >("bob").owner; - - BOOST_REQUIRE( owner1 == recover.new_owner_authority ); - - - BOOST_TEST_MESSAGE( "Creating new recover request for a bogus key" ); - - request.new_owner_authority = authority( 1, generate_private_key( "foo bar" ).get_public_key(), 1 ); - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( request ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - - BOOST_TEST_MESSAGE( "Testing failure when bob does not have new authority" ); - - generate_blocks( db->head_block_time() + STEEM_OWNER_UPDATE_LIMIT + fc::seconds( STEEM_BLOCK_INTERVAL ) ); - - recover.new_owner_authority = authority( 1, generate_private_key( "idontknow" ).get_public_key(), 1 ); - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( recover ); - tx.sign( generate_private_key( "bob_owner" ), db->get_chain_id() ); - tx.sign( generate_private_key( "idontknow" ), db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - const auto& owner2 = db->get< account_authority_object, by_account >("bob").owner; - BOOST_REQUIRE( owner2 == authority( 1, generate_private_key( "new_key" ).get_public_key(), 1 ) ); - - - BOOST_TEST_MESSAGE( "Testing failure when bob does not have old authority" ); - - recover.recent_owner_authority = authority( 1, generate_private_key( "idontknow" ).get_public_key(), 1 ); - recover.new_owner_authority = authority( 1, generate_private_key( "foo bar" ).get_public_key(), 1 ); - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( recover ); - tx.sign( generate_private_key( "foo bar" ), db->get_chain_id() ); - tx.sign( generate_private_key( "idontknow" ), db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - const auto& owner3 = db->get< account_authority_object, by_account >("bob").owner; - BOOST_REQUIRE( owner3 == authority( 1, generate_private_key( "new_key" ).get_public_key(), 1 ) ); - - - BOOST_TEST_MESSAGE( "Testing using the same old owner auth again for recovery" ); - - recover.recent_owner_authority = authority( 1, generate_private_key( "bob_owner" ).get_public_key(), 1 ); - recover.new_owner_authority = authority( 1, generate_private_key( "foo bar" ).get_public_key(), 1 ); - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( recover ); - tx.sign( generate_private_key( "bob_owner" ), db->get_chain_id() ); - tx.sign( generate_private_key( "foo bar" ), db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - const auto& owner4 = db->get< account_authority_object, by_account >("bob").owner; - BOOST_REQUIRE( owner4 == recover.new_owner_authority ); - - BOOST_TEST_MESSAGE( "Creating a recovery request that will expire" ); - - request.new_owner_authority = authority( 1, generate_private_key( "expire" ).get_public_key(), 1 ); - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( request ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - const auto& request_idx = db->get_index< account_recovery_request_index >().indices(); - auto req_itr = request_idx.begin(); - - BOOST_REQUIRE( req_itr->account_to_recover == "bob" ); - BOOST_REQUIRE( req_itr->new_owner_authority == authority( 1, generate_private_key( "expire" ).get_public_key(), 1 ) ); - BOOST_REQUIRE( req_itr->expires == db->head_block_time() + STEEM_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD ); - auto expires = req_itr->expires; - ++req_itr; - BOOST_REQUIRE( req_itr == request_idx.end() ); - - generate_blocks( time_point_sec( expires - STEEM_BLOCK_INTERVAL ), true ); - - const auto& new_request_idx = db->get_index< account_recovery_request_index >().indices(); - BOOST_REQUIRE( new_request_idx.begin() != new_request_idx.end() ); - - generate_block(); - - BOOST_REQUIRE( new_request_idx.begin() == new_request_idx.end() ); - - recover.new_owner_authority = authority( 1, generate_private_key( "expire" ).get_public_key(), 1 ); - recover.recent_owner_authority = authority( 1, generate_private_key( "bob_owner" ).get_public_key(), 1 ); - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( recover ); - tx.set_expiration( db->head_block_time() ); - tx.sign( generate_private_key( "expire" ), db->get_chain_id() ); - tx.sign( generate_private_key( "bob_owner" ), db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - const auto& owner5 = db->get< account_authority_object, by_account >("bob").owner; - BOOST_REQUIRE( owner5 == authority( 1, generate_private_key( "foo bar" ).get_public_key(), 1 ) ); - - BOOST_TEST_MESSAGE( "Expiring owner authority history" ); - - acc_update.owner = authority( 1, generate_private_key( "new_key" ).get_public_key(), 1 ); - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( acc_update ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( generate_private_key( "foo bar" ), db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->head_block_time() + ( STEEM_OWNER_AUTH_RECOVERY_PERIOD - STEEM_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD ) ); - generate_block(); - - request.new_owner_authority = authority( 1, generate_private_key( "last key" ).get_public_key(), 1 ); - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( request ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - recover.new_owner_authority = request.new_owner_authority; - recover.recent_owner_authority = authority( 1, generate_private_key( "bob_owner" ).get_public_key(), 1 ); - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( recover ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( generate_private_key( "bob_owner" ), db->get_chain_id() ); - tx.sign( generate_private_key( "last key" ), db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - const auto& owner6 = db->get< account_authority_object, by_account >("bob").owner; - BOOST_REQUIRE( owner6 == authority( 1, generate_private_key( "new_key" ).get_public_key(), 1 ) ); - - recover.recent_owner_authority = authority( 1, generate_private_key( "foo bar" ).get_public_key(), 1 ); - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( recover ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( generate_private_key( "foo bar" ), db->get_chain_id() ); - tx.sign( generate_private_key( "last key" ), db->get_chain_id() ); - db->push_transaction( tx, 0 ); - const auto& owner7 = db->get< account_authority_object, by_account >("bob").owner; - BOOST_REQUIRE( owner7 == authority( 1, generate_private_key( "last key" ).get_public_key(), 1 ) ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( change_recovery_account ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing change_recovery_account_operation" ); - - ACTORS( (alice)(bob)(sam)(tyler) ) - - auto change_recovery_account = [&]( const std::string& account_to_recover, const std::string& new_recovery_account ) - { - change_recovery_account_operation op; - op.account_to_recover = account_to_recover; - op.new_recovery_account = new_recovery_account; - - signed_transaction tx; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - }; - - auto recover_account = [&]( const std::string& account_to_recover, const fc::ecc::private_key& new_owner_key, const fc::ecc::private_key& recent_owner_key ) - { - recover_account_operation op; - op.account_to_recover = account_to_recover; - op.new_owner_authority = authority( 1, public_key_type( new_owner_key.get_public_key() ), 1 ); - op.recent_owner_authority = authority( 1, public_key_type( recent_owner_key.get_public_key() ), 1 ); - - signed_transaction tx; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( recent_owner_key, db->get_chain_id() ); - // only Alice -> throw - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - tx.signatures.clear(); - tx.sign( new_owner_key, db->get_chain_id() ); - // only Sam -> throw - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - tx.sign( recent_owner_key, db->get_chain_id() ); - // Alice+Sam -> OK - db->push_transaction( tx, 0 ); - }; - - auto request_account_recovery = [&]( const std::string& recovery_account, const fc::ecc::private_key& recovery_account_key, const std::string& account_to_recover, const public_key_type& new_owner_key ) - { - request_account_recovery_operation op; - op.recovery_account = recovery_account; - op.account_to_recover = account_to_recover; - op.new_owner_authority = authority( 1, new_owner_key, 1 ); - - signed_transaction tx; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( recovery_account_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - }; - - auto change_owner = [&]( const std::string& account, const fc::ecc::private_key& old_private_key, const public_key_type& new_public_key ) - { - account_update_operation op; - op.account = account; - op.owner = authority( 1, new_public_key, 1 ); - - signed_transaction tx; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( old_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - }; - - // if either/both users do not exist, we shouldn't allow it - STEEM_REQUIRE_THROW( change_recovery_account("alice", "nobody"), fc::exception ); - STEEM_REQUIRE_THROW( change_recovery_account("haxer", "sam" ), fc::exception ); - STEEM_REQUIRE_THROW( change_recovery_account("haxer", "nobody"), fc::exception ); - change_recovery_account("alice", "sam"); - - fc::ecc::private_key alice_priv1 = fc::ecc::private_key::regenerate( fc::sha256::hash( "alice_k1" ) ); - fc::ecc::private_key alice_priv2 = fc::ecc::private_key::regenerate( fc::sha256::hash( "alice_k2" ) ); - public_key_type alice_pub1 = public_key_type( alice_priv1.get_public_key() ); - - generate_blocks( db->head_block_time() + STEEM_OWNER_AUTH_RECOVERY_PERIOD - fc::seconds( STEEM_BLOCK_INTERVAL ), true ); - // cannot request account recovery until recovery account is approved - STEEM_REQUIRE_THROW( request_account_recovery( "sam", sam_private_key, "alice", alice_pub1 ), fc::exception ); - generate_blocks(1); - // cannot finish account recovery until requested - STEEM_REQUIRE_THROW( recover_account( "alice", alice_priv1, alice_private_key ), fc::exception ); - // do the request - request_account_recovery( "sam", sam_private_key, "alice", alice_pub1 ); - // can't recover with the current owner key - STEEM_REQUIRE_THROW( recover_account( "alice", alice_priv1, alice_private_key ), fc::exception ); - // unless we change it! - change_owner( "alice", alice_private_key, public_key_type( alice_priv2.get_public_key() ) ); - recover_account( "alice", alice_priv1, alice_private_key ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( escrow_transfer_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: escrow_transfer_validate" ); - - escrow_transfer_operation op; - op.from = "alice"; - op.to = "bob"; - op.sbd_amount = ASSET( "1.000 TBD" ); - op.steem_amount = ASSET( "1.000 TESTS" ); - op.escrow_id = 0; - op.agent = "sam"; - op.fee = ASSET( "0.100 TESTS" ); - op.json_meta = ""; - op.ratification_deadline = db->head_block_time() + 100; - op.escrow_expiration = db->head_block_time() + 200; - - BOOST_TEST_MESSAGE( "--- failure when sbd symbol != SBD" ); - op.sbd_amount.symbol = STEEM_SYMBOL; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - BOOST_TEST_MESSAGE( "--- failure when steem symbol != STEEM" ); - op.sbd_amount.symbol = SBD_SYMBOL; - op.steem_amount.symbol = SBD_SYMBOL; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - BOOST_TEST_MESSAGE( "--- failure when fee symbol != SBD and fee symbol != STEEM" ); - op.steem_amount.symbol = STEEM_SYMBOL; - op.fee.symbol = VESTS_SYMBOL; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - BOOST_TEST_MESSAGE( "--- failure when sbd == 0 and steem == 0" ); - op.fee.symbol = STEEM_SYMBOL; - op.sbd_amount.amount = 0; - op.steem_amount.amount = 0; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - BOOST_TEST_MESSAGE( "--- failure when sbd < 0" ); - op.sbd_amount.amount = -100; - op.steem_amount.amount = 1000; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - BOOST_TEST_MESSAGE( "--- failure when steem < 0" ); - op.sbd_amount.amount = 1000; - op.steem_amount.amount = -100; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - BOOST_TEST_MESSAGE( "--- failure when fee < 0" ); - op.steem_amount.amount = 1000; - op.fee.amount = -100; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - BOOST_TEST_MESSAGE( "--- failure when ratification deadline == escrow expiration" ); - op.fee.amount = 100; - op.ratification_deadline = op.escrow_expiration; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - BOOST_TEST_MESSAGE( "--- failure when ratification deadline > escrow expiration" ); - op.ratification_deadline = op.escrow_expiration + 100; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - BOOST_TEST_MESSAGE( "--- success" ); - op.ratification_deadline = op.escrow_expiration - 100; - op.validate(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( escrow_transfer_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: escrow_transfer_authorities" ); - - escrow_transfer_operation op; - op.from = "alice"; - op.to = "bob"; - op.sbd_amount = ASSET( "1.000 TBD" ); - op.steem_amount = ASSET( "1.000 TESTS" ); - op.escrow_id = 0; - op.agent = "sam"; - op.fee = ASSET( "0.100 TESTS" ); - op.json_meta = ""; - op.ratification_deadline = db->head_block_time() + 100; - op.escrow_expiration = db->head_block_time() + 200; - - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; - - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_active_authorities( auths ); - expected.insert( "alice" ); - BOOST_REQUIRE( auths == expected ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( escrow_transfer_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: escrow_transfer_apply" ); - - ACTORS( (alice)(bob)(sam) ) - - fund( "alice", 10000 ); - - escrow_transfer_operation op; - op.from = "alice"; - op.to = "bob"; - op.sbd_amount = ASSET( "1.000 TBD" ); - op.steem_amount = ASSET( "1.000 TESTS" ); - op.escrow_id = 0; - op.agent = "sam"; - op.fee = ASSET( "0.100 TESTS" ); - op.json_meta = ""; - op.ratification_deadline = db->head_block_time() + 100; - op.escrow_expiration = db->head_block_time() + 200; - - BOOST_TEST_MESSAGE( "--- failure when from cannot cover sbd amount" ); - signed_transaction tx; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_TEST_MESSAGE( "--- falure when from cannot cover amount + fee" ); - op.sbd_amount.amount = 0; - op.steem_amount.amount = 10000; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_TEST_MESSAGE( "--- failure when ratification deadline is in the past" ); - op.steem_amount.amount = 1000; - op.ratification_deadline = db->head_block_time() - 200; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_TEST_MESSAGE( "--- failure when expiration is in the past" ); - op.escrow_expiration = db->head_block_time() - 100; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_TEST_MESSAGE( "--- success" ); - op.ratification_deadline = db->head_block_time() + 100; - op.escrow_expiration = db->head_block_time() + 200; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - - auto alice_steem_balance = alice.balance - op.steem_amount - op.fee; - auto alice_sbd_balance = alice.sbd_balance - op.sbd_amount; - auto bob_steem_balance = bob.balance; - auto bob_sbd_balance = bob.sbd_balance; - auto sam_steem_balance = sam.balance; - auto sam_sbd_balance = sam.sbd_balance; - - db->push_transaction( tx, 0 ); - - const auto& escrow = db->get_escrow( op.from, op.escrow_id ); - - BOOST_REQUIRE( escrow.escrow_id == op.escrow_id ); - BOOST_REQUIRE( escrow.from == op.from ); - BOOST_REQUIRE( escrow.to == op.to ); - BOOST_REQUIRE( escrow.agent == op.agent ); - BOOST_REQUIRE( escrow.ratification_deadline == op.ratification_deadline ); - BOOST_REQUIRE( escrow.escrow_expiration == op.escrow_expiration ); - BOOST_REQUIRE( escrow.sbd_balance == op.sbd_amount ); - BOOST_REQUIRE( escrow.steem_balance == op.steem_amount ); - BOOST_REQUIRE( escrow.pending_fee == op.fee ); - BOOST_REQUIRE( !escrow.to_approved ); - BOOST_REQUIRE( !escrow.agent_approved ); - BOOST_REQUIRE( !escrow.disputed ); - BOOST_REQUIRE( alice.balance == alice_steem_balance ); - BOOST_REQUIRE( alice.sbd_balance == alice_sbd_balance ); - BOOST_REQUIRE( bob.balance == bob_steem_balance ); - BOOST_REQUIRE( bob.sbd_balance == bob_sbd_balance ); - BOOST_REQUIRE( sam.balance == sam_steem_balance ); - BOOST_REQUIRE( sam.sbd_balance == sam_sbd_balance ); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( escrow_approve_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: escrow_approve_validate" ); - - escrow_approve_operation op; - - op.from = "alice"; - op.to = "bob"; - op.agent = "sam"; - op.who = "bob"; - op.escrow_id = 0; - op.approve = true; - - BOOST_TEST_MESSAGE( "--- failure when who is not to or agent" ); - op.who = "dave"; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - BOOST_TEST_MESSAGE( "--- success when who is to" ); - op.who = op.to; - op.validate(); - - BOOST_TEST_MESSAGE( "--- success when who is agent" ); - op.who = op.agent; - op.validate(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( escrow_approve_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: escrow_approve_authorities" ); - - escrow_approve_operation op; - - op.from = "alice"; - op.to = "bob"; - op.agent = "sam"; - op.who = "bob"; - op.escrow_id = 0; - op.approve = true; - - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; - - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_active_authorities( auths ); - expected.insert( "bob" ); - BOOST_REQUIRE( auths == expected ); - - expected.clear(); - auths.clear(); - - op.who = "sam"; - op.get_required_active_authorities( auths ); - expected.insert( "sam" ); - BOOST_REQUIRE( auths == expected ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( escrow_approve_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: escrow_approve_apply" ); - ACTORS( (alice)(bob)(sam)(dave) ) - fund( "alice", 10000 ); - - escrow_transfer_operation et_op; - et_op.from = "alice"; - et_op.to = "bob"; - et_op.agent = "sam"; - et_op.steem_amount = ASSET( "1.000 TESTS" ); - et_op.fee = ASSET( "0.100 TESTS" ); - et_op.json_meta = ""; - et_op.ratification_deadline = db->head_block_time() + 100; - et_op.escrow_expiration = db->head_block_time() + 200; - - signed_transaction tx; - tx.operations.push_back( et_op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - tx.operations.clear(); - tx.signatures.clear(); - - - BOOST_TEST_MESSAGE( "---failure when to does not match escrow" ); - escrow_approve_operation op; - op.from = "alice"; - op.to = "dave"; - op.agent = "sam"; - op.who = "dave"; - op.approve = true; - - tx.operations.push_back( op ); - tx.sign( dave_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when agent does not match escrow" ); - op.to = "bob"; - op.agent = "dave"; - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( op ); - tx.sign( dave_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- success approving to" ); - op.agent = "sam"; - op.who = "bob"; - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - auto& escrow = db->get_escrow( op.from, op.escrow_id ); - BOOST_REQUIRE( escrow.to == "bob" ); - BOOST_REQUIRE( escrow.agent == "sam" ); - BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); - BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); - BOOST_REQUIRE( escrow.sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( escrow.steem_balance == ASSET( "1.000 TESTS" ) ); - BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.100 TESTS" ) ); - BOOST_REQUIRE( escrow.to_approved ); - BOOST_REQUIRE( !escrow.agent_approved ); - BOOST_REQUIRE( !escrow.disputed ); - - - BOOST_TEST_MESSAGE( "--- failure on repeat approval" ); - tx.signatures.clear(); - - tx.set_expiration( db->head_block_time() + STEEM_BLOCK_INTERVAL ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( escrow.to == "bob" ); - BOOST_REQUIRE( escrow.agent == "sam" ); - BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); - BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); - BOOST_REQUIRE( escrow.sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( escrow.steem_balance == ASSET( "1.000 TESTS" ) ); - BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.100 TESTS" ) ); - BOOST_REQUIRE( escrow.to_approved ); - BOOST_REQUIRE( !escrow.agent_approved ); - BOOST_REQUIRE( !escrow.disputed ); - - - BOOST_TEST_MESSAGE( "--- failure trying to repeal after approval" ); - tx.signatures.clear(); - tx.operations.clear(); - - op.approve = false; - - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( escrow.to == "bob" ); - BOOST_REQUIRE( escrow.agent == "sam" ); - BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); - BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); - BOOST_REQUIRE( escrow.sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( escrow.steem_balance == ASSET( "1.000 TESTS" ) ); - BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.100 TESTS" ) ); - BOOST_REQUIRE( escrow.to_approved ); - BOOST_REQUIRE( !escrow.agent_approved ); - BOOST_REQUIRE( !escrow.disputed ); - - - BOOST_TEST_MESSAGE( "--- success refunding from because of repeal" ); - tx.signatures.clear(); - tx.operations.clear(); - - op.who = op.agent; - - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - STEEM_REQUIRE_THROW( db->get_escrow( op.from, op.escrow_id ), fc::exception ); - BOOST_REQUIRE( alice.balance == ASSET( "10.000 TESTS" ) ); - validate_database(); - - - BOOST_TEST_MESSAGE( "--- test automatic refund when escrow is not ratified before deadline" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( et_op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( et_op.ratification_deadline + STEEM_BLOCK_INTERVAL, true ); - - STEEM_REQUIRE_THROW( db->get_escrow( op.from, op.escrow_id ), fc::exception ); - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "10.000 TESTS" ) ); - validate_database(); - - - BOOST_TEST_MESSAGE( "--- test ratification expiration when escrow is only approved by to" ); - tx.operations.clear(); - tx.signatures.clear(); - et_op.ratification_deadline = db->head_block_time() + 100; - et_op.escrow_expiration = db->head_block_time() + 200; - tx.operations.push_back( et_op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - op.who = op.to; - op.approve = true; - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( et_op.ratification_deadline + STEEM_BLOCK_INTERVAL, true ); - - STEEM_REQUIRE_THROW( db->get_escrow( op.from, op.escrow_id ), fc::exception ); - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "10.000 TESTS" ) ); - validate_database(); - - - BOOST_TEST_MESSAGE( "--- test ratification expiration when escrow is only approved by agent" ); - tx.operations.clear(); - tx.signatures.clear(); - et_op.ratification_deadline = db->head_block_time() + 100; - et_op.escrow_expiration = db->head_block_time() + 200; - tx.operations.push_back( et_op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - op.who = op.agent; - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( et_op.ratification_deadline + STEEM_BLOCK_INTERVAL, true ); - - STEEM_REQUIRE_THROW( db->get_escrow( op.from, op.escrow_id ), fc::exception ); - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "10.000 TESTS" ) ); - validate_database(); - - - BOOST_TEST_MESSAGE( "--- success approving escrow" ); - tx.operations.clear(); - tx.signatures.clear(); - et_op.ratification_deadline = db->head_block_time() + 100; - et_op.escrow_expiration = db->head_block_time() + 200; - tx.operations.push_back( et_op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - op.who = op.to; - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - op.who = op.agent; - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - { - const auto& escrow = db->get_escrow( op.from, op.escrow_id ); - BOOST_REQUIRE( escrow.to == "bob" ); - BOOST_REQUIRE( escrow.agent == "sam" ); - BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); - BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); - BOOST_REQUIRE( escrow.sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( escrow.steem_balance == ASSET( "1.000 TESTS" ) ); - BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( escrow.to_approved ); - BOOST_REQUIRE( escrow.agent_approved ); - BOOST_REQUIRE( !escrow.disputed ); - } - - BOOST_REQUIRE( db->get_account( "sam" ).balance == et_op.fee ); - validate_database(); - - - BOOST_TEST_MESSAGE( "--- ratification expiration does not remove an approved escrow" ); - - generate_blocks( et_op.ratification_deadline + STEEM_BLOCK_INTERVAL, true ); - { - const auto& escrow = db->get_escrow( op.from, op.escrow_id ); - BOOST_REQUIRE( escrow.to == "bob" ); - BOOST_REQUIRE( escrow.agent == "sam" ); - BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); - BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); - BOOST_REQUIRE( escrow.sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( escrow.steem_balance == ASSET( "1.000 TESTS" ) ); - BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( escrow.to_approved ); - BOOST_REQUIRE( escrow.agent_approved ); - BOOST_REQUIRE( !escrow.disputed ); - } - - BOOST_REQUIRE( db->get_account( "sam" ).balance == et_op.fee ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( escrow_dispute_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: escrow_dispute_validate" ); - escrow_dispute_operation op; - op.from = "alice"; - op.to = "bob"; - op.agent = "alice"; - op.who = "alice"; - - BOOST_TEST_MESSAGE( "failure when who is not from or to" ); - op.who = "sam"; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - BOOST_TEST_MESSAGE( "success" ); - op.who = "alice"; - op.validate(); - - op.who = "bob"; - op.validate(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( escrow_dispute_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: escrow_dispute_authorities" ); - escrow_dispute_operation op; - op.from = "alice"; - op.to = "bob"; - op.who = "alice"; - - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; - - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_active_authorities( auths ); - expected.insert( "alice" ); - BOOST_REQUIRE( auths == expected ); - - auths.clear(); - expected.clear(); - op.who = "bob"; - op.get_required_active_authorities( auths ); - expected.insert( "bob" ); - BOOST_REQUIRE( auths == expected ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( escrow_dispute_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: escrow_dispute_apply" ); - - ACTORS( (alice)(bob)(sam)(dave) ) - fund( "alice", 10000 ); - - escrow_transfer_operation et_op; - et_op.from = "alice"; - et_op.to = "bob"; - et_op.agent = "sam"; - et_op.steem_amount = ASSET( "1.000 TESTS" ); - et_op.fee = ASSET( "0.100 TESTS" ); - et_op.ratification_deadline = db->head_block_time() + STEEM_BLOCK_INTERVAL; - et_op.escrow_expiration = db->head_block_time() + 2 * STEEM_BLOCK_INTERVAL; - - escrow_approve_operation ea_b_op; - ea_b_op.from = "alice"; - ea_b_op.to = "bob"; - ea_b_op.agent = "sam"; - ea_b_op.who = "bob"; - ea_b_op.approve = true; - - signed_transaction tx; - tx.operations.push_back( et_op ); - tx.operations.push_back( ea_b_op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - - BOOST_TEST_MESSAGE( "--- failure when escrow has not been approved" ); - escrow_dispute_operation op; - op.from = "alice"; - op.to = "bob"; - op.agent = "sam"; - op.who = "bob"; - - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - const auto& escrow = db->get_escrow( et_op.from, et_op.escrow_id ); - BOOST_REQUIRE( escrow.to == "bob" ); - BOOST_REQUIRE( escrow.agent == "sam" ); - BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); - BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); - BOOST_REQUIRE( escrow.sbd_balance == et_op.sbd_amount ); - BOOST_REQUIRE( escrow.steem_balance == et_op.steem_amount ); - BOOST_REQUIRE( escrow.pending_fee == et_op.fee ); - BOOST_REQUIRE( escrow.to_approved ); - BOOST_REQUIRE( !escrow.agent_approved ); - BOOST_REQUIRE( !escrow.disputed ); - - - BOOST_TEST_MESSAGE( "--- failure when to does not match escrow" ); - escrow_approve_operation ea_s_op; - ea_s_op.from = "alice"; - ea_s_op.to = "bob"; - ea_s_op.agent = "sam"; - ea_s_op.who = "sam"; - ea_s_op.approve = true; - - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( ea_s_op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.to = "dave"; - op.who = "alice"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( escrow.to == "bob" ); - BOOST_REQUIRE( escrow.agent == "sam" ); - BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); - BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); - BOOST_REQUIRE( escrow.sbd_balance == et_op.sbd_amount ); - BOOST_REQUIRE( escrow.steem_balance == et_op.steem_amount ); - BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( escrow.to_approved ); - BOOST_REQUIRE( escrow.agent_approved ); - BOOST_REQUIRE( !escrow.disputed ); - - - BOOST_TEST_MESSAGE( "--- failure when agent does not match escrow" ); - op.to = "bob"; - op.who = "alice"; - op.agent = "dave"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( escrow.to == "bob" ); - BOOST_REQUIRE( escrow.agent == "sam" ); - BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); - BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); - BOOST_REQUIRE( escrow.sbd_balance == et_op.sbd_amount ); - BOOST_REQUIRE( escrow.steem_balance == et_op.steem_amount ); - BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( escrow.to_approved ); - BOOST_REQUIRE( escrow.agent_approved ); - BOOST_REQUIRE( !escrow.disputed ); - - - BOOST_TEST_MESSAGE( "--- failure when escrow is expired" ); - generate_blocks( 2 ); - - tx.operations.clear(); - tx.signatures.clear(); - op.agent = "sam"; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - { - const auto& escrow = db->get_escrow( et_op.from, et_op.escrow_id ); - BOOST_REQUIRE( escrow.to == "bob" ); - BOOST_REQUIRE( escrow.agent == "sam" ); - BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); - BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); - BOOST_REQUIRE( escrow.sbd_balance == et_op.sbd_amount ); - BOOST_REQUIRE( escrow.steem_balance == et_op.steem_amount ); - BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( escrow.to_approved ); - BOOST_REQUIRE( escrow.agent_approved ); - BOOST_REQUIRE( !escrow.disputed ); - } - - - BOOST_TEST_MESSAGE( "--- success disputing escrow" ); - et_op.escrow_id = 1; - et_op.ratification_deadline = db->head_block_time() + STEEM_BLOCK_INTERVAL; - et_op.escrow_expiration = db->head_block_time() + 2 * STEEM_BLOCK_INTERVAL; - ea_b_op.escrow_id = et_op.escrow_id; - ea_s_op.escrow_id = et_op.escrow_id; - - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( et_op ); - tx.operations.push_back( ea_b_op ); - tx.operations.push_back( ea_s_op ); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - op.escrow_id = et_op.escrow_id; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - { - const auto& escrow = db->get_escrow( et_op.from, et_op.escrow_id ); - BOOST_REQUIRE( escrow.to == "bob" ); - BOOST_REQUIRE( escrow.agent == "sam" ); - BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); - BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); - BOOST_REQUIRE( escrow.sbd_balance == et_op.sbd_amount ); - BOOST_REQUIRE( escrow.steem_balance == et_op.steem_amount ); - BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( escrow.to_approved ); - BOOST_REQUIRE( escrow.agent_approved ); - BOOST_REQUIRE( escrow.disputed ); - } - - - BOOST_TEST_MESSAGE( "--- failure when escrow is already under dispute" ); - tx.operations.clear(); - tx.signatures.clear(); - op.who = "bob"; - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - { - const auto& escrow = db->get_escrow( et_op.from, et_op.escrow_id ); - BOOST_REQUIRE( escrow.to == "bob" ); - BOOST_REQUIRE( escrow.agent == "sam" ); - BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); - BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); - BOOST_REQUIRE( escrow.sbd_balance == et_op.sbd_amount ); - BOOST_REQUIRE( escrow.steem_balance == et_op.steem_amount ); - BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( escrow.to_approved ); - BOOST_REQUIRE( escrow.agent_approved ); - BOOST_REQUIRE( escrow.disputed ); - } - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( escrow_release_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: escrow release validate" ); - escrow_release_operation op; - op.from = "alice"; - op.to = "bob"; - op.who = "alice"; - op.agent = "sam"; - op.receiver = "bob"; - - - BOOST_TEST_MESSAGE( "--- failure when steem < 0" ); - op.steem_amount.amount = -1; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when sbd < 0" ); - op.steem_amount.amount = 0; - op.sbd_amount.amount = -1; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when steem == 0 and sbd == 0" ); - op.sbd_amount.amount = 0; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when sbd is not sbd symbol" ); - op.sbd_amount = ASSET( "1.000 TESTS" ); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when steem is not steem symbol" ); - op.sbd_amount.symbol = SBD_SYMBOL; - op.steem_amount = ASSET( "1.000 TBD" ); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- success" ); - op.steem_amount.symbol = STEEM_SYMBOL; - op.validate(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( escrow_release_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: escrow_release_authorities" ); - escrow_release_operation op; - op.from = "alice"; - op.to = "bob"; - op.who = "alice"; - - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; - - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - expected.insert( "alice" ); - op.get_required_active_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.who = "bob"; - auths.clear(); - expected.clear(); - expected.insert( "bob" ); - op.get_required_active_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.who = "sam"; - auths.clear(); - expected.clear(); - expected.insert( "sam" ); - op.get_required_active_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( escrow_release_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: escrow_release_apply" ); - - ACTORS( (alice)(bob)(sam)(dave) ) - fund( "alice", 10000 ); - - escrow_transfer_operation et_op; - et_op.from = "alice"; - et_op.to = "bob"; - et_op.agent = "sam"; - et_op.steem_amount = ASSET( "1.000 TESTS" ); - et_op.fee = ASSET( "0.100 TESTS" ); - et_op.ratification_deadline = db->head_block_time() + STEEM_BLOCK_INTERVAL; - et_op.escrow_expiration = db->head_block_time() + 2 * STEEM_BLOCK_INTERVAL; - - signed_transaction tx; - tx.operations.push_back( et_op ); - - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - - BOOST_TEST_MESSAGE( "--- failure releasing funds prior to approval" ); - escrow_release_operation op; - op.from = et_op.from; - op.to = et_op.to; - op.agent = et_op.agent; - op.who = et_op.from; - op.receiver = et_op.to; - op.steem_amount = ASSET( "0.100 TESTS" ); - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - escrow_approve_operation ea_b_op; - ea_b_op.from = "alice"; - ea_b_op.to = "bob"; - ea_b_op.agent = "sam"; - ea_b_op.who = "bob"; - - escrow_approve_operation ea_s_op; - ea_s_op.from = "alice"; - ea_s_op.to = "bob"; - ea_s_op.agent = "sam"; - ea_s_op.who = "sam"; - - tx.clear(); - tx.operations.push_back( ea_b_op ); - tx.operations.push_back( ea_s_op ); - tx.sign( bob_private_key, db->get_chain_id() ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "--- failure when 'agent' attempts to release non-disputed escrow to 'to'" ); - op.who = et_op.agent; - tx.clear(); - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE("--- failure when 'agent' attempts to release non-disputed escrow to 'from' " ); - op.receiver = et_op.from; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when 'agent' attempt to release non-disputed escrow to not 'to' or 'from'" ); - op.receiver = "dave"; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when other attempts to release non-disputed escrow to 'to'" ); - op.receiver = et_op.to; - op.who = "dave"; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( dave_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE("--- failure when other attempts to release non-disputed escrow to 'from' " ); - op.receiver = et_op.from; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( dave_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when other attempt to release non-disputed escrow to not 'to' or 'from'" ); - op.receiver = "dave"; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( dave_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when 'to' attemtps to release non-disputed escrow to 'to'" ); - op.receiver = et_op.to; - op.who = et_op.to; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE("--- failure when 'to' attempts to release non-dispured escrow to 'agent' " ); - op.receiver = et_op.agent; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when 'to' attempts to release non-disputed escrow to not 'from'" ); - op.receiver = "dave"; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- success release non-disputed escrow to 'to' from 'from'" ); - op.receiver = et_op.from; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_escrow( op.from, op.escrow_id ).steem_balance == ASSET( "0.900 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "9.000 TESTS" ) ); - - - BOOST_TEST_MESSAGE( "--- failure when 'from' attempts to release non-disputed escrow to 'from'" ); - op.receiver = et_op.from; - op.who = et_op.from; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE("--- failure when 'from' attempts to release non-disputed escrow to 'agent'" ); - op.receiver = et_op.agent; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when 'from' attempts to release non-disputed escrow to not 'from'" ); - op.receiver = "dave"; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- success release non-disputed escrow to 'from' from 'to'" ); - op.receiver = et_op.to; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_escrow( op.from, op.escrow_id ).steem_balance == ASSET( "0.800 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "bob" ).balance == ASSET( "0.100 TESTS" ) ); - - - BOOST_TEST_MESSAGE( "--- failure when releasing more sbd than available" ); - op.steem_amount = ASSET( "1.000 TESTS" ); - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when releasing less steem than available" ); - op.steem_amount = ASSET( "0.000 TESTS" ); - op.sbd_amount = ASSET( "1.000 TBD" ); - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when 'to' attempts to release disputed escrow" ); - escrow_dispute_operation ed_op; - ed_op.from = "alice"; - ed_op.to = "bob"; - ed_op.agent = "sam"; - ed_op.who = "alice"; - - tx.clear(); - tx.operations.push_back( ed_op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.clear(); - op.from = et_op.from; - op.receiver = et_op.from; - op.who = et_op.to; - op.steem_amount = ASSET( "0.100 TESTS" ); - op.sbd_amount = ASSET( "0.000 TBD" ); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when 'from' attempts to release disputed escrow" ); - tx.clear(); - op.receiver = et_op.to; - op.who = et_op.from; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when releasing disputed escrow to an account not 'to' or 'from'" ); - tx.clear(); - op.who = et_op.agent; - op.receiver = "dave"; - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when agent does not match escrow" ); - tx.clear(); - op.who = "dave"; - op.receiver = et_op.from; - tx.operations.push_back( op ); - tx.sign( dave_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- success releasing disputed escrow with agent to 'to'" ); - tx.clear(); - op.receiver = et_op.to; - op.who = et_op.agent; - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "bob" ).balance == ASSET( "0.200 TESTS" ) ); - BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).steem_balance == ASSET( "0.700 TESTS" ) ); - - - BOOST_TEST_MESSAGE( "--- success releasing disputed escrow with agent to 'from'" ); - tx.clear(); - op.receiver = et_op.from; - op.who = et_op.agent; - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "9.100 TESTS" ) ); - BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).steem_balance == ASSET( "0.600 TESTS" ) ); - - - BOOST_TEST_MESSAGE( "--- failure when 'to' attempts to release disputed expired escrow" ); - generate_blocks( 2 ); - - tx.clear(); - op.receiver = et_op.from; - op.who = et_op.to; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when 'from' attempts to release disputed expired escrow" ); - tx.clear(); - op.receiver = et_op.to; - op.who = et_op.from; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- success releasing disputed expired escrow with agent" ); - tx.clear(); - op.receiver = et_op.from; - op.who = et_op.agent; - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "9.200 TESTS" ) ); - BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).steem_balance == ASSET( "0.500 TESTS" ) ); - - - BOOST_TEST_MESSAGE( "--- success deleting escrow when balances are both zero" ); - tx.clear(); - op.steem_amount = ASSET( "0.500 TESTS" ); - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "9.700 TESTS" ) ); - STEEM_REQUIRE_THROW( db->get_escrow( et_op.from, et_op.escrow_id ), fc::exception ); - - - tx.clear(); - et_op.ratification_deadline = db->head_block_time() + STEEM_BLOCK_INTERVAL; - et_op.escrow_expiration = db->head_block_time() + 2 * STEEM_BLOCK_INTERVAL; - tx.operations.push_back( et_op ); - tx.operations.push_back( ea_b_op ); - tx.operations.push_back( ea_s_op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - generate_blocks( 2 ); - - - BOOST_TEST_MESSAGE( "--- failure when 'agent' attempts to release non-disputed expired escrow to 'to'" ); - tx.clear(); - op.receiver = et_op.to; - op.who = et_op.agent; - op.steem_amount = ASSET( "0.100 TESTS" ); - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when 'agent' attempts to release non-disputed expired escrow to 'from'" ); - tx.clear(); - op.receiver = et_op.from; - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when 'agent' attempt to release non-disputed expired escrow to not 'to' or 'from'" ); - tx.clear(); - op.receiver = "dave"; - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when 'to' attempts to release non-dispured expired escrow to 'agent'" ); - tx.clear(); - op.who = et_op.to; - op.receiver = et_op.agent; - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when 'to' attempts to release non-disputed expired escrow to not 'from' or 'to'" ); - tx.clear(); - op.receiver = "dave"; - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- success release non-disputed expired escrow to 'to' from 'to'" ); - tx.clear(); - op.receiver = et_op.to; - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "bob" ).balance == ASSET( "0.300 TESTS" ) ); - BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).steem_balance == ASSET( "0.900 TESTS" ) ); - - - BOOST_TEST_MESSAGE( "--- success release non-disputed expired escrow to 'from' from 'to'" ); - tx.clear(); - op.receiver = et_op.from; - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "8.700 TESTS" ) ); - BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).steem_balance == ASSET( "0.800 TESTS" ) ); - - - BOOST_TEST_MESSAGE( "--- failure when 'from' attempts to release non-disputed expired escrow to 'agent'" ); - tx.clear(); - op.who = et_op.from; - op.receiver = et_op.agent; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- failure when 'from' attempts to release non-disputed expired escrow to not 'from' or 'to'" ); - tx.clear(); - op.receiver = "dave"; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- success release non-disputed expired escrow to 'to' from 'from'" ); - tx.clear(); - op.receiver = et_op.to; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "bob" ).balance == ASSET( "0.400 TESTS" ) ); - BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).steem_balance == ASSET( "0.700 TESTS" ) ); - - - BOOST_TEST_MESSAGE( "--- success release non-disputed expired escrow to 'from' from 'from'" ); - tx.clear(); - op.receiver = et_op.from; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "8.800 TESTS" ) ); - BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).steem_balance == ASSET( "0.600 TESTS" ) ); - - - BOOST_TEST_MESSAGE( "--- success deleting escrow when balances are zero on non-disputed escrow" ); - tx.clear(); - op.steem_amount = ASSET( "0.600 TESTS" ); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "9.400 TESTS" ) ); - STEEM_REQUIRE_THROW( db->get_escrow( et_op.from, et_op.escrow_id ), fc::exception ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( transfer_to_savings_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: transfer_to_savings_validate" ); - - transfer_to_savings_operation op; - op.from = "alice"; - op.to = "alice"; - op.amount = ASSET( "1.000 TESTS" ); - - - BOOST_TEST_MESSAGE( "failure when 'from' is empty" ); - op.from = ""; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - - BOOST_TEST_MESSAGE( "failure when 'to' is empty" ); - op.from = "alice"; - op.to = ""; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - - BOOST_TEST_MESSAGE( "sucess when 'to' is not empty" ); - op.to = "bob"; - op.validate(); - - - BOOST_TEST_MESSAGE( "failure when amount is VESTS" ); - op.to = "alice"; - op.amount = ASSET( "1.000000 VESTS" ); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - - BOOST_TEST_MESSAGE( "success when amount is SBD" ); - op.amount = ASSET( "1.000 TBD" ); - op.validate(); - - - BOOST_TEST_MESSAGE( "success when amount is STEEM" ); - op.amount = ASSET( "1.000 TESTS" ); - op.validate(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( transfer_to_savings_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: transfer_to_savings_authorities" ); - - transfer_to_savings_operation op; - op.from = "alice"; - op.to = "alice"; - op.amount = ASSET( "1.000 TESTS" ); - - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; - - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_active_authorities( auths ); - expected.insert( "alice" ); - BOOST_REQUIRE( auths == expected ); - - auths.clear(); - expected.clear(); - op.from = "bob"; - op.get_required_active_authorities( auths ); - expected.insert( "bob" ); - BOOST_REQUIRE( auths == expected ); - } - FC_LOG_AND_RETHROW() -} + tx.operations.push_back( recover ); + tx.set_expiration( db->head_block_time() ); + tx.sign( generate_private_key( "expire" ), db->get_chain_id() ); + tx.sign( generate_private_key( "bob_owner" ), db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + const auto& owner5 = db->get< account_authority_object, by_account >(AN("bob")).owner; + BOOST_REQUIRE( owner5 == authority( 1, generate_private_key( "foo bar" ).get_public_key(), 1 ) ); -BOOST_AUTO_TEST_CASE( transfer_to_savings_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: transfer_to_savings_apply" ); + BOOST_TEST_MESSAGE( "Expiring owner authority history" ); - ACTORS( (alice)(bob) ); - generate_block(); + acc_update.owner = authority( 1, generate_private_key( "new_key" ).get_public_key(), 1 ); - fund( "alice", ASSET( "10.000 TESTS" ) ); - fund( "alice", ASSET( "10.000 TBD" ) ); + tx.operations.clear(); + tx.signatures.clear(); + + tx.operations.push_back( acc_update ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( generate_private_key( "foo bar" ), db->get_chain_id() ); + db->push_transaction( tx, 0 ); - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "10.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance == ASSET( "10.000 TBD" ) ); + generate_blocks( db->head_block_time() + ( SOPHIATX_OWNER_AUTH_RECOVERY_PERIOD - SOPHIATX_ACCOUNT_RECOVERY_REQUEST_EXPIRATION_PERIOD ) ); + generate_block(); - transfer_to_savings_operation op; - signed_transaction tx; + request.new_owner_authority = authority( 1, generate_private_key( "last key" ).get_public_key(), 1 ); - BOOST_TEST_MESSAGE( "--- failure with insufficient funds" ); - op.from = "alice"; - op.to = "alice"; - op.amount = ASSET( "20.000 TESTS" ); + tx.operations.clear(); + tx.signatures.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.operations.push_back( request ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - validate_database(); + db->push_transaction( tx, 0 ); + recover.new_owner_authority = request.new_owner_authority; + recover.recent_owner_authority = authority( 1, generate_private_key( "bob_owner" ).get_public_key(), 1 ); - BOOST_TEST_MESSAGE( "--- failure when transferring to non-existent account" ); - op.to = "sam"; - op.amount = ASSET( "1.000 TESTS" ); + tx.operations.clear(); + tx.signatures.clear(); - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - validate_database(); + tx.operations.push_back( recover ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( generate_private_key( "bob_owner" ), db->get_chain_id() ); + tx.sign( generate_private_key( "last key" ), db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + const auto& owner6 = db->get< account_authority_object, by_account >(AN("bob")).owner; + BOOST_REQUIRE( owner6 == authority( 1, generate_private_key( "new_key" ).get_public_key(), 1 ) ); + recover.recent_owner_authority = authority( 1, generate_private_key( "foo bar" ).get_public_key(), 1 ); - BOOST_TEST_MESSAGE( "--- success transferring STEEM to self" ); - op.to = "alice"; + tx.operations.clear(); + tx.signatures.clear(); - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); + tx.operations.push_back( recover ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( generate_private_key( "foo bar" ), db->get_chain_id() ); + tx.sign( generate_private_key( "last key" ), db->get_chain_id() ); db->push_transaction( tx, 0 ); + const auto& owner7 = db->get< account_authority_object, by_account >(AN("bob")).owner; + BOOST_REQUIRE( owner7 == authority( 1, generate_private_key( "last key" ).get_public_key(), 1 ) ); + } + FC_LOG_AND_RETHROW() +} - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "9.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_balance == ASSET( "1.000 TESTS" ) ); - validate_database(); +BOOST_AUTO_TEST_CASE( change_recovery_account ) +{ + try + { + BOOST_TEST_MESSAGE( "Testing change_recovery_account_operation" ); + ACTORS( (alice)(bob)(sam)(tyler) ) - BOOST_TEST_MESSAGE( "--- success transferring SBD to self" ); - op.amount = ASSET( "1.000 TBD" ); + auto change_recovery_account = [&]( const std::string& account_to_recover, const std::string& new_recovery_account ) + { + change_recovery_account_operation op; + op.account_to_recover = account_to_recover; + op.new_recovery_account = new_recovery_account; - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + signed_transaction tx; + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + }; - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance == ASSET( "9.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_sbd_balance == ASSET( "1.000 TBD" ) ); - validate_database(); + auto recover_account = [&]( const std::string& account_to_recover, const fc::ecc::private_key& new_owner_key, const fc::ecc::private_key& recent_owner_key ) + { + recover_account_operation op; + op.account_to_recover = account_to_recover; + op.new_owner_authority = authority( 1, public_key_type( new_owner_key.get_public_key() ), 1 ); + op.recent_owner_authority = authority( 1, public_key_type( recent_owner_key.get_public_key() ), 1 ); + signed_transaction tx; + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( recent_owner_key, db->get_chain_id() ); + // only Alice -> throw + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + tx.signatures.clear(); + tx.sign( new_owner_key, db->get_chain_id() ); + // only Sam -> throw + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + tx.sign( recent_owner_key, db->get_chain_id() ); + // Alice+Sam -> OK + db->push_transaction( tx, 0 ); + }; - BOOST_TEST_MESSAGE( "--- success transferring STEEM to other" ); - op.to = "bob"; - op.amount = ASSET( "1.000 TESTS" ); + auto request_account_recovery = [&]( const std::string& recovery_account, const fc::ecc::private_key& recovery_account_key, const std::string& account_to_recover, const public_key_type& new_owner_key ) + { + request_account_recovery_operation op; + op.recovery_account = recovery_account; + op.account_to_recover = account_to_recover; + op.new_owner_authority = authority( 1, new_owner_key, 1 ); - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + signed_transaction tx; + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( recovery_account_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + }; - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "8.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "bob" ).savings_balance == ASSET( "1.000 TESTS" ) ); - validate_database(); + auto change_owner = [&]( const std::string& account, const fc::ecc::private_key& old_private_key, const public_key_type& new_public_key ) + { + account_update_operation op; + op.account = account; + op.owner = authority( 1, new_public_key, 1 ); + signed_transaction tx; + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( old_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + }; - BOOST_TEST_MESSAGE( "--- success transferring SBD to other" ); - op.amount = ASSET( "1.000 TBD" ); + // if either/both users do not exist, we shouldn't allow it + SOPHIATX_REQUIRE_THROW( change_recovery_account(AN("alice"), "nobody"), fc::exception ); + SOPHIATX_REQUIRE_THROW( change_recovery_account("haxer", AN("sam") ), fc::exception ); + SOPHIATX_REQUIRE_THROW( change_recovery_account("haxer", "nobody"), fc::exception ); + change_recovery_account(AN("alice"), AN("sam")); - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + fc::ecc::private_key alice_priv1 = fc::ecc::private_key::regenerate( fc::sha256::hash( "alice_k1" ) ); + fc::ecc::private_key alice_priv2 = fc::ecc::private_key::regenerate( fc::sha256::hash( "alice_k2" ) ); + public_key_type alice_pub1 = public_key_type( alice_priv1.get_public_key() ); - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance == ASSET( "8.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "bob" ).savings_sbd_balance == ASSET( "1.000 TBD" ) ); - validate_database(); + generate_blocks( db->head_block_time() + SOPHIATX_OWNER_AUTH_RECOVERY_PERIOD - fc::seconds( SOPHIATX_BLOCK_INTERVAL ), true ); + // cannot request account recovery until recovery account is approved + SOPHIATX_REQUIRE_THROW( request_account_recovery( AN("sam"), sam_private_key, AN("alice"), alice_pub1 ), fc::exception ); + generate_blocks(1); + // cannot finish account recovery until requested + SOPHIATX_REQUIRE_THROW( recover_account( AN("alice"), alice_priv1, alice_private_key ), fc::exception ); + // do the request + request_account_recovery( AN("sam"), sam_private_key, AN("alice"), alice_pub1 ); + // can't recover with the current owner key + SOPHIATX_REQUIRE_THROW( recover_account( AN("alice"), alice_priv1, alice_private_key ), fc::exception ); + // unless we change it! + change_owner( AN("alice"), alice_private_key, public_key_type( alice_priv2.get_public_key() ) ); + recover_account( AN("alice"), alice_priv1, alice_private_key ); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( transfer_from_savings_validate ) +BOOST_AUTO_TEST_CASE( escrow_transfer_validate ) { try { - BOOST_TEST_MESSAGE( "Testing: transfer_from_savings_validate" ); - - transfer_from_savings_operation op; - op.from = "alice"; - op.request_id = 0; - op.to = "alice"; - op.amount = ASSET( "1.000 TESTS" ); - - - BOOST_TEST_MESSAGE( "failure when 'from' is empty" ); - op.from = ""; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - + BOOST_TEST_MESSAGE( "Testing: escrow_transfer_validate" ); - BOOST_TEST_MESSAGE( "failure when 'to' is empty" ); - op.from = "alice"; - op.to = ""; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); + escrow_transfer_operation op; + op.from = AN("alice"); + op.to = AN("bob"); + op.sophiatx_amount = ASSET( "1.000000 SPHTX" ); + op.escrow_id = 0; + op.agent = AN("sam"); + op.fee = ASSET( "0.100000 SPHTX" ); + op.escrow_fee = ASSET( "0.100000 SPHTX" ); + op.json_meta = ""; + op.ratification_deadline = db->head_block_time() + 100; + op.escrow_expiration = db->head_block_time() + 200; + BOOST_TEST_MESSAGE( "--- failure when sophiatx symbol != SOPHIATX" ); + op.sophiatx_amount.symbol = SBD1_SYMBOL; + SOPHIATX_REQUIRE_THROW( op.validate(), fc::exception ); - BOOST_TEST_MESSAGE( "sucess when 'to' is not empty" ); - op.to = "bob"; - op.validate(); + BOOST_TEST_MESSAGE( "--- failure when fee symbol != SBD and fee symbol != SOPHIATX" ); + op.sophiatx_amount.symbol = SOPHIATX_SYMBOL; + op.escrow_fee.symbol = VESTS_SYMBOL; + SOPHIATX_REQUIRE_THROW( op.validate(), fc::exception ); + BOOST_TEST_MESSAGE( "--- failure when sbd == 0 " ); + op.escrow_fee.symbol = SOPHIATX_SYMBOL; + op.sophiatx_amount.amount = 0; + SOPHIATX_REQUIRE_THROW( op.validate(), fc::exception ); - BOOST_TEST_MESSAGE( "failure when amount is VESTS" ); - op.to = "alice"; - op.amount = ASSET( "1.000000 VESTS" ); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); + BOOST_TEST_MESSAGE( "--- failure when sophiatx < 0" ); + op.sophiatx_amount.amount = -100; + SOPHIATX_REQUIRE_THROW( op.validate(), fc::exception ); + BOOST_TEST_MESSAGE( "--- failure when fee < 0" ); + op.sophiatx_amount.amount = 1000; + op.escrow_fee.amount = -100; + SOPHIATX_REQUIRE_THROW( op.validate(), fc::exception ); - BOOST_TEST_MESSAGE( "success when amount is SBD" ); - op.amount = ASSET( "1.000 TBD" ); - op.validate(); + BOOST_TEST_MESSAGE( "--- failure when ratification deadline == escrow expiration" ); + op.escrow_fee.amount = 100; + op.ratification_deadline = op.escrow_expiration; + SOPHIATX_REQUIRE_THROW( op.validate(), fc::exception ); + BOOST_TEST_MESSAGE( "--- failure when ratification deadline > escrow expiration" ); + op.ratification_deadline = op.escrow_expiration + 100; + SOPHIATX_REQUIRE_THROW( op.validate(), fc::exception ); - BOOST_TEST_MESSAGE( "success when amount is STEEM" ); - op.amount = ASSET( "1.000 TESTS" ); + BOOST_TEST_MESSAGE( "--- success" ); + op.ratification_deadline = op.escrow_expiration - 100; op.validate(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( transfer_from_savings_authorities ) +BOOST_AUTO_TEST_CASE( escrow_transfer_authorities ) { try { - BOOST_TEST_MESSAGE( "Testing: transfer_from_savings_authorities" ); + BOOST_TEST_MESSAGE( "Testing: escrow_transfer_authorities" ); - transfer_from_savings_operation op; - op.from = "alice"; - op.to = "alice"; - op.amount = ASSET( "1.000 TESTS" ); + escrow_transfer_operation op; + op.from = AN("alice"); + op.to = AN("bob"); + op.sophiatx_amount = ASSET( "1.000000 SPHTX" ); + op.escrow_id = 0; + op.agent = AN("sam"); + op.escrow_fee = ASSET( "0.100000 SPHTX" ); + op.json_meta = ""; + op.ratification_deadline = db->head_block_time() + 100; + op.escrow_expiration = db->head_block_time() + 200; flat_set< account_name_type > auths; flat_set< account_name_type > expected; @@ -5346,246 +2016,145 @@ BOOST_AUTO_TEST_CASE( transfer_from_savings_authorities ) op.get_required_owner_authorities( auths ); BOOST_REQUIRE( auths == expected ); - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_active_authorities( auths ); - expected.insert( "alice" ); - BOOST_REQUIRE( auths == expected ); - auths.clear(); - expected.clear(); - op.from = "bob"; op.get_required_active_authorities( auths ); - expected.insert( "bob" ); + expected.insert( AN("alice") ); BOOST_REQUIRE( auths == expected ); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( transfer_from_savings_apply ) +BOOST_AUTO_TEST_CASE( escrow_transfer_apply ) { try { - BOOST_TEST_MESSAGE( "Testing: transfer_from_savings_apply" ); + BOOST_TEST_MESSAGE( "Testing: escrow_transfer_apply" ); - ACTORS( (alice)(bob) ); - generate_block(); + ACTORS( (alice)(bob)(sam) ) - fund( "alice", ASSET( "10.000 TESTS" ) ); - fund( "alice", ASSET( "10.000 TBD" ) ); + fund( AN("alice"), 10000000 ); - transfer_to_savings_operation save; - save.from = "alice"; - save.to = "alice"; - save.amount = ASSET( "10.000 TESTS" ); + escrow_transfer_operation op; + op.from = AN("alice"); + op.to = AN("bob"); + op.sophiatx_amount = ASSET( "1.000000 SPHTX" ); + op.escrow_id = 0; + op.agent = AN("sam"); + op.escrow_fee = ASSET( "0.100000 SPHTX" ); + op.fee = ASSET( "0.100000 SPHTX" ); + op.json_meta = ""; + op.ratification_deadline = db->head_block_time() + 100; + op.escrow_expiration = db->head_block_time() + 200; signed_transaction tx; - tx.operations.push_back( save ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - save.amount = ASSET( "10.000 TBD" ); - tx.clear(); - tx.operations.push_back( save ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - - BOOST_TEST_MESSAGE( "--- failure when account has insufficient funds" ); - transfer_from_savings_operation op; - op.from = "alice"; - op.to = "bob"; - op.amount = ASSET( "20.000 TESTS" ); - op.request_id = 0; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); - BOOST_TEST_MESSAGE( "--- failure withdrawing to non-existant account" ); - op.to = "sam"; - op.amount = ASSET( "1.000 TESTS" ); - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - - BOOST_TEST_MESSAGE( "--- success withdrawing STEEM to self" ); - op.to = "alice"; - - tx.clear(); + BOOST_TEST_MESSAGE( "--- falure when from cannot cover amount + fee" ); + op.sophiatx_amount.amount = 10000000; + tx.operations.clear(); + tx.signatures.clear(); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_balance == ASSET( "9.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_withdraw_requests == 1 ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).from == op.from ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).to == op.to ); - BOOST_REQUIRE( to_string( db->get_savings_withdraw( "alice", op.request_id ).memo ) == op.memo ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).request_id == op.request_id ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).amount == op.amount ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).complete == db->head_block_time() + STEEM_SAVINGS_WITHDRAW_TIME ); - validate_database(); - - - BOOST_TEST_MESSAGE( "--- success withdrawing SBD to self" ); - op.amount = ASSET( "1.000 TBD" ); - op.request_id = 1; + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - tx.clear(); + BOOST_TEST_MESSAGE( "--- failure when ratification deadline is in the past" ); + op.sophiatx_amount.amount = 1000000; + op.ratification_deadline = db->head_block_time() - 200; + tx.operations.clear(); + tx.signatures.clear(); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_sbd_balance == ASSET( "9.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_withdraw_requests == 2 ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).from == op.from ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).to == op.to ); - BOOST_REQUIRE( to_string( db->get_savings_withdraw( "alice", op.request_id ).memo ) == op.memo ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).request_id == op.request_id ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).amount == op.amount ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).complete == db->head_block_time() + STEEM_SAVINGS_WITHDRAW_TIME ); - validate_database(); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_TEST_MESSAGE( "--- failure withdrawing with repeat request id" ); - op.amount = ASSET( "2.000 TESTS" ); - - tx.clear(); + BOOST_TEST_MESSAGE( "--- failure when expiration is in the past" ); + op.escrow_expiration = db->head_block_time() - 100; + tx.operations.clear(); + tx.signatures.clear(); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_TEST_MESSAGE( "--- success withdrawing STEEM to other" ); - op.to = "bob"; - op.amount = ASSET( "1.000 TESTS" ); - op.request_id = 3; - - tx.clear(); + BOOST_TEST_MESSAGE( "--- success" ); + op.ratification_deadline = db->head_block_time() + 100; + op.escrow_expiration = db->head_block_time() + 200; + tx.operations.clear(); + tx.signatures.clear(); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_balance == ASSET( "8.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_withdraw_requests == 3 ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).from == op.from ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).to == op.to ); - BOOST_REQUIRE( to_string( db->get_savings_withdraw( "alice", op.request_id ).memo ) == op.memo ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).request_id == op.request_id ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).amount == op.amount ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).complete == db->head_block_time() + STEEM_SAVINGS_WITHDRAW_TIME ); - validate_database(); + auto alice_sophiatx_balance = alice.balance - op.sophiatx_amount - op.escrow_fee; + auto bob_sophiatx_balance = bob.balance; + auto sam_sophiatx_balance = sam.balance; - BOOST_TEST_MESSAGE( "--- success withdrawing SBD to other" ); - op.amount = ASSET( "1.000 TBD" ); - op.request_id = 4; - - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_sbd_balance == ASSET( "8.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_withdraw_requests == 4 ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).from == op.from ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).to == op.to ); - BOOST_REQUIRE( to_string( db->get_savings_withdraw( "alice", op.request_id ).memo ) == op.memo ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).request_id == op.request_id ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).amount == op.amount ); - BOOST_REQUIRE( db->get_savings_withdraw( "alice", op.request_id ).complete == db->head_block_time() + STEEM_SAVINGS_WITHDRAW_TIME ); - validate_database(); - - - BOOST_TEST_MESSAGE( "--- withdraw on timeout" ); - generate_blocks( db->head_block_time() + STEEM_SAVINGS_WITHDRAW_TIME - fc::seconds( STEEM_BLOCK_INTERVAL ), true ); - - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "bob" ).balance == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "bob" ).sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_withdraw_requests == 4 ); - validate_database(); - - generate_block(); - - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "1.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance == ASSET( "1.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "bob" ).balance == ASSET( "1.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "bob" ).sbd_balance == ASSET( "1.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_withdraw_requests == 0 ); - validate_database(); - - - BOOST_TEST_MESSAGE( "--- savings withdraw request limit" ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - op.to = "alice"; - op.amount = ASSET( "0.001 TESTS" ); + const auto& escrow = db->get_escrow( op.from, op.escrow_id ); - for( int i = 0; i < STEEM_SAVINGS_WITHDRAW_REQUEST_LIMIT; i++ ) - { - op.request_id = i; - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_withdraw_requests == i + 1 ); - } + BOOST_REQUIRE( escrow.escrow_id == op.escrow_id ); + BOOST_REQUIRE( escrow.from == op.from ); + BOOST_REQUIRE( escrow.to == op.to ); + BOOST_REQUIRE( escrow.agent == op.agent ); + BOOST_REQUIRE( escrow.ratification_deadline == op.ratification_deadline ); + BOOST_REQUIRE( escrow.escrow_expiration == op.escrow_expiration ); + BOOST_REQUIRE( escrow.sophiatx_balance == op.sophiatx_amount ); + BOOST_REQUIRE( escrow.pending_fee == op.escrow_fee ); + BOOST_REQUIRE( !escrow.to_approved ); + BOOST_REQUIRE( !escrow.agent_approved ); + BOOST_REQUIRE( !escrow.disputed ); + BOOST_REQUIRE( alice.balance.amount == alice_sophiatx_balance.amount - 100000 ); + BOOST_REQUIRE( bob.balance == bob_sophiatx_balance ); + BOOST_REQUIRE( sam.balance == sam_sophiatx_balance ); - op.request_id = STEEM_SAVINGS_WITHDRAW_REQUEST_LIMIT; - tx.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_withdraw_requests == STEEM_SAVINGS_WITHDRAW_REQUEST_LIMIT ); validate_database(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( cancel_transfer_from_savings_validate ) +BOOST_AUTO_TEST_CASE( escrow_approve_validate ) { try { - BOOST_TEST_MESSAGE( "Testing: cancel_transfer_from_savings_validate" ); + BOOST_TEST_MESSAGE( "Testing: escrow_approve_validate" ); - cancel_transfer_from_savings_operation op; - op.from = "alice"; - op.request_id = 0; + escrow_approve_operation op; + op.from = AN("alice"); + op.to = AN("bob"); + op.agent = AN("sam"); + op.who = AN("bob"); + op.escrow_id = 0; + op.approve = true; - BOOST_TEST_MESSAGE( "--- failure when 'from' is empty" ); - op.from = ""; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); + BOOST_TEST_MESSAGE( "--- failure when who is not to or agent" ); + op.who = AN("dave"); + SOPHIATX_REQUIRE_THROW( op.validate(), fc::exception ); + BOOST_TEST_MESSAGE( "--- success when who is to" ); + op.who = op.to; + op.validate(); - BOOST_TEST_MESSAGE( "--- sucess when 'from' is not empty" ); - op.from = "alice"; + BOOST_TEST_MESSAGE( "--- success when who is agent" ); + op.who = op.agent; op.validate(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( cancel_transfer_from_savings_authorities ) +BOOST_AUTO_TEST_CASE( escrow_approve_authorities ) { try { - BOOST_TEST_MESSAGE( "Testing: cancel_transfer_from_savings_authorities" ); + BOOST_TEST_MESSAGE( "Testing: escrow_approve_authorities" ); - cancel_transfer_from_savings_operation op; - op.from = "alice"; + escrow_approve_operation op; + + op.from = AN("alice"); + op.to = AN("bob"); + op.agent = AN("sam"); + op.who = AN("bob"); + op.escrow_id = 0; + op.approve = true; flat_set< account_name_type > auths; flat_set< account_name_type > expected; @@ -5593,406 +2162,586 @@ BOOST_AUTO_TEST_CASE( cancel_transfer_from_savings_authorities ) op.get_required_owner_authorities( auths ); BOOST_REQUIRE( auths == expected ); - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - op.get_required_active_authorities( auths ); - expected.insert( "alice" ); + expected.insert( AN("bob") ); BOOST_REQUIRE( auths == expected ); - auths.clear(); expected.clear(); - op.from = "bob"; + auths.clear(); + + op.who = AN("sam"); op.get_required_active_authorities( auths ); - expected.insert( "bob" ); + expected.insert( AN("sam") ); BOOST_REQUIRE( auths == expected ); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( cancel_transfer_from_savings_apply ) +BOOST_AUTO_TEST_CASE( escrow_approve_apply ) { try { - BOOST_TEST_MESSAGE( "Testing: cancel_transfer_from_savings_apply" ); - - ACTORS( (alice)(bob) ) - generate_block(); - - fund( "alice", ASSET( "10.000 TESTS" ) ); + BOOST_TEST_MESSAGE( "Testing: escrow_approve_apply" ); + ACTORS( (alice)(bob)(sam)(dave) ) + fund( AN("alice"), 10100000 ); + fund( AN("bob"), 1000000 ); + fund( AN("sam"), 1000000 ); - transfer_to_savings_operation save; - save.from = "alice"; - save.to = "alice"; - save.amount = ASSET( "10.000 TESTS" ); - transfer_from_savings_operation withdraw; - withdraw.from = "alice"; - withdraw.to = "bob"; - withdraw.request_id = 1; - withdraw.amount = ASSET( "3.000 TESTS" ); + escrow_transfer_operation et_op; + et_op.from = AN("alice"); + et_op.to = AN("bob"); + et_op.agent = AN("sam"); + et_op.sophiatx_amount = ASSET( "1.000000 SPHTX" ); + et_op.escrow_fee = ASSET( "0.100000 SPHTX" ); + et_op.fee = ASSET( "0.100000 SPHTX" ); + et_op.json_meta = ""; + et_op.ratification_deadline = db->head_block_time() + 100; + et_op.escrow_expiration = db->head_block_time() + 200; signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( save ); - tx.operations.push_back( withdraw ); + tx.operations.push_back( et_op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - validate_database(); - - BOOST_REQUIRE( db->get_account( "alice" ).savings_withdraw_requests == 1 ); - BOOST_REQUIRE( db->get_account( "bob" ).savings_withdraw_requests == 0 ); + tx.operations.clear(); + tx.signatures.clear(); - BOOST_TEST_MESSAGE( "--- Failure when there is no pending request" ); - cancel_transfer_from_savings_operation op; - op.from = "alice"; - op.request_id = 0; + BOOST_TEST_MESSAGE( "---failure when to does not match escrow" ); + escrow_approve_operation op; + op.from = AN("alice"); + op.fee = ASSET( "0.100000 SPHTX" ); + op.to = AN("dave"); + op.agent = AN("sam"); + op.who = AN("dave"); + op.approve = true; - tx.clear(); tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - validate_database(); + tx.sign( dave_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_withdraw_requests == 1 ); - BOOST_REQUIRE( db->get_account( "bob" ).savings_withdraw_requests == 0 ); + BOOST_TEST_MESSAGE( "--- failure when agent does not match escrow" ); + op.to = AN("bob"); + op.agent = AN("dave"); - BOOST_TEST_MESSAGE( "--- Success" ); - op.request_id = 1; + tx.operations.clear(); + tx.signatures.clear(); - tx.clear(); tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + tx.sign( dave_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_balance == ASSET( "10.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).savings_withdraw_requests == 0 ); - BOOST_REQUIRE( db->get_account( "bob" ).balance == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "bob" ).savings_balance == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "bob" ).savings_withdraw_requests == 0 ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} -BOOST_AUTO_TEST_CASE( decline_voting_rights_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: decline_voting_rights_authorities" ); + BOOST_TEST_MESSAGE( "--- success approving to" ); + op.agent = AN("sam"); + op.who = AN("bob"); + + tx.operations.clear(); + tx.signatures.clear(); - decline_voting_rights_operation op; - op.account = "alice"; + tx.operations.push_back( op ); + tx.sign( bob_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; + auto& escrow = db->get_escrow( op.from, op.escrow_id ); + BOOST_REQUIRE( escrow.to == AN("bob") ); + BOOST_REQUIRE( escrow.agent == AN("sam") ); + BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); + BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); + BOOST_REQUIRE( escrow.sophiatx_balance == ASSET( "1.000000 SPHTX" ) ); + BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.100000 SPHTX" ) ); + BOOST_REQUIRE( escrow.to_approved ); + BOOST_REQUIRE( !escrow.agent_approved ); + BOOST_REQUIRE( !escrow.disputed ); - op.get_required_active_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); + BOOST_TEST_MESSAGE( "--- failure on repeat approval" ); + tx.signatures.clear(); - expected.insert( "alice" ); - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - } - FC_LOG_AND_RETHROW() -} + tx.set_expiration( db->head_block_time() + SOPHIATX_BLOCK_INTERVAL ); + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); -BOOST_AUTO_TEST_CASE( decline_voting_rights_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: decline_voting_rights_apply" ); + BOOST_REQUIRE( escrow.to == AN("bob") ); + BOOST_REQUIRE( escrow.agent == AN("sam") ); + BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); + BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); + BOOST_REQUIRE( escrow.sophiatx_balance == ASSET( "1.000000 SPHTX" ) ); + BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.100000 SPHTX" ) ); + BOOST_REQUIRE( escrow.to_approved ); + BOOST_REQUIRE( !escrow.agent_approved ); + BOOST_REQUIRE( !escrow.disputed ); - ACTORS( (alice)(bob) ); - generate_block(); - vest( "alice", ASSET( "10.000 TESTS" ) ); - vest( "bob", ASSET( "10.000 TESTS" ) ); - generate_block(); - account_witness_proxy_operation proxy; - proxy.account = "bob"; - proxy.proxy = "alice"; + BOOST_TEST_MESSAGE( "--- failure trying to repeal after approval" ); + tx.signatures.clear(); + tx.operations.clear(); - signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( proxy ); + op.approve = false; + + tx.operations.push_back( op ); tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + + BOOST_REQUIRE( escrow.to == AN("bob") ); + BOOST_REQUIRE( escrow.agent == AN("sam") ); + BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); + BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); + BOOST_REQUIRE( escrow.sophiatx_balance == ASSET( "1.000000 SPHTX" ) ); + BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.100000 SPHTX" ) ); + BOOST_REQUIRE( escrow.to_approved ); + BOOST_REQUIRE( !escrow.agent_approved ); + BOOST_REQUIRE( !escrow.disputed ); - decline_voting_rights_operation op; - op.account = "alice"; + BOOST_TEST_MESSAGE( "--- success refunding from because of repeal" ); + tx.signatures.clear(); + tx.operations.clear(); + op.who = op.agent; - BOOST_TEST_MESSAGE( "--- success" ); - tx.clear(); tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( sam_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - const auto& request_idx = db->get_index< decline_voting_rights_request_index >().indices().get< by_account >(); - auto itr = request_idx.find( db->get_account( "alice" ).name ); - BOOST_REQUIRE( itr != request_idx.end() ); - BOOST_REQUIRE( itr->effective_date == db->head_block_time() + STEEM_OWNER_AUTH_RECOVERY_PERIOD ); + SOPHIATX_REQUIRE_THROW( db->get_escrow( op.from, op.escrow_id ), fc::exception ); + BOOST_REQUIRE( alice.balance == ASSET( "10.000000 SPHTX" ) ); + validate_database(); - BOOST_TEST_MESSAGE( "--- failure revoking voting rights with existing request" ); - generate_block(); - tx.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + BOOST_TEST_MESSAGE( "--- test automatic refund when escrow is not ratified before deadline" ); + tx.operations.clear(); + tx.signatures.clear(); + tx.operations.push_back( et_op ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + db->push_transaction( tx, 0 ); + generate_blocks( et_op.ratification_deadline + SOPHIATX_BLOCK_INTERVAL, true ); - BOOST_TEST_MESSAGE( "--- successs cancelling a request" ); - op.decline = false; - tx.clear(); - tx.operations.push_back( op ); + SOPHIATX_REQUIRE_THROW( db->get_escrow( op.from, op.escrow_id ), fc::exception ); + BOOST_REQUIRE( db->get_account( AN("alice") ).balance >= ASSET( "9.900000 SPHTX" ) && db->get_account( AN("alice") ).balance < ASSET( "9.910000 SPHTX" ) ); + validate_database(); + + + BOOST_TEST_MESSAGE( "--- test ratification expiration when escrow is only approved by to" ); + tx.operations.clear(); + tx.signatures.clear(); + et_op.ratification_deadline = db->head_block_time() + 100; + et_op.escrow_expiration = db->head_block_time() + 200; + tx.operations.push_back( et_op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - itr = request_idx.find( db->get_account( "alice" ).name ); - BOOST_REQUIRE( itr == request_idx.end() ); + tx.operations.clear(); + tx.signatures.clear(); + op.who = op.to; + op.approve = true; + tx.operations.push_back( op ); + tx.sign( bob_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + generate_blocks( et_op.ratification_deadline + SOPHIATX_BLOCK_INTERVAL, true ); - BOOST_TEST_MESSAGE( "--- failure cancelling a request that doesn't exist" ); - generate_block(); - tx.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + SOPHIATX_REQUIRE_THROW( db->get_escrow( op.from, op.escrow_id ), fc::exception ); + BOOST_REQUIRE( db->get_account( AN("alice") ).balance >= ASSET( "9.800000 SPHTX" ) && db->get_account( AN("alice") ).balance < ASSET( "9.810000 SPHTX" ) ); + validate_database(); - BOOST_TEST_MESSAGE( "--- check account can vote during waiting period" ); - op.decline = true; - tx.clear(); - tx.operations.push_back( op ); + BOOST_TEST_MESSAGE( "--- test ratification expiration when escrow is only approved by agent" ); + tx.operations.clear(); + tx.signatures.clear(); + et_op.ratification_deadline = db->head_block_time() + 100; + et_op.escrow_expiration = db->head_block_time() + 200; + tx.operations.push_back( et_op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - generate_blocks( db->head_block_time() + STEEM_OWNER_AUTH_RECOVERY_PERIOD - fc::seconds( STEEM_BLOCK_INTERVAL ), true ); - BOOST_REQUIRE( db->get_account( "alice" ).can_vote ); - witness_create( "alice", alice_private_key, "foo.bar", alice_private_key.get_public_key(), 0 ); + tx.operations.clear(); + tx.signatures.clear(); + op.who = op.agent; + tx.operations.push_back( op ); + tx.sign( sam_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - account_witness_vote_operation witness_vote; - witness_vote.account = "alice"; - witness_vote.witness = "alice"; - tx.clear(); - tx.operations.push_back( witness_vote ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + generate_blocks( et_op.ratification_deadline + SOPHIATX_BLOCK_INTERVAL, true ); + + SOPHIATX_REQUIRE_THROW( db->get_escrow( op.from, op.escrow_id ), fc::exception ); + BOOST_REQUIRE( db->get_account( AN("alice") ).balance >= ASSET( "9.700000 SPHTX" ) && db->get_account( AN("alice") ).balance < ASSET( "9.710000 SPHTX" ) ); + validate_database(); + + + BOOST_TEST_MESSAGE( "--- success approving escrow" ); + tx.operations.clear(); + tx.signatures.clear(); + et_op.ratification_deadline = db->head_block_time() + 100; + et_op.escrow_expiration = db->head_block_time() + 200; + tx.operations.push_back( et_op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - comment_operation comment; - comment.author = "alice"; - comment.permlink = "test"; - comment.parent_permlink = "test"; - comment.title = "test"; - comment.body = "test"; - vote_operation vote; - vote.voter = "alice"; - vote.author = "alice"; - vote.permlink = "test"; - vote.weight = STEEM_100_PERCENT; - tx.clear(); - tx.operations.push_back( comment ); - tx.operations.push_back( vote ); - tx.sign( alice_private_key, db->get_chain_id() ); + tx.operations.clear(); + tx.signatures.clear(); + op.who = op.to; + tx.operations.push_back( op ); + tx.sign( bob_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + + tx.operations.clear(); + tx.signatures.clear(); + op.who = op.agent; + tx.operations.push_back( op ); + tx.sign( sam_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); + + { + const auto& escrow = db->get_escrow( op.from, op.escrow_id ); + BOOST_REQUIRE( escrow.to == AN("bob") ); + BOOST_REQUIRE( escrow.agent == AN("sam") ); + BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); + BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); + BOOST_REQUIRE( escrow.sophiatx_balance == ASSET( "1.000000 SPHTX" ) ); + BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000000 SPHTX" ) ); + BOOST_REQUIRE( escrow.to_approved ); + BOOST_REQUIRE( escrow.agent_approved ); + BOOST_REQUIRE( !escrow.disputed ); + } + + BOOST_REQUIRE( db->get_account( AN("sam") ).balance.amount == et_op.escrow_fee.amount + 700000); validate_database(); - BOOST_TEST_MESSAGE( "--- check account cannot vote after request is processed" ); - generate_block(); - BOOST_REQUIRE( !db->get_account( "alice" ).can_vote ); + BOOST_TEST_MESSAGE( "--- ratification expiration does not remove an approved escrow" ); + + generate_blocks( et_op.ratification_deadline + SOPHIATX_BLOCK_INTERVAL, true ); + { + const auto& escrow = db->get_escrow( op.from, op.escrow_id ); + BOOST_REQUIRE( escrow.to == AN("bob") ); + BOOST_REQUIRE( escrow.agent == AN("sam") ); + BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); + BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); + BOOST_REQUIRE( escrow.sophiatx_balance == ASSET( "1.000000 SPHTX" ) ); + BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000000 SPHTX" ) ); + BOOST_REQUIRE( escrow.to_approved ); + BOOST_REQUIRE( escrow.agent_approved ); + BOOST_REQUIRE( !escrow.disputed ); + } + + BOOST_REQUIRE( db->get_account( AN("sam") ).balance.amount == et_op.escrow_fee.amount + 700000 ); validate_database(); + } + FC_LOG_AND_RETHROW() +} + +BOOST_AUTO_TEST_CASE( escrow_dispute_validate ) +{ + try + { + BOOST_TEST_MESSAGE( "Testing: escrow_dispute_validate" ); + escrow_dispute_operation op; + op.from = AN("alice"); + op.to = AN("bob"); + op.agent = AN("alice"); + op.who = AN("alice"); - itr = request_idx.find( db->get_account( "alice" ).name ); - BOOST_REQUIRE( itr == request_idx.end() ); + BOOST_TEST_MESSAGE( "failure when who is not from or to" ); + op.who = AN("sam"); + SOPHIATX_REQUIRE_THROW( op.validate(), fc::exception ); - const auto& witness_idx = db->get_index< witness_vote_index >().indices().get< by_account_witness >(); - auto witness_itr = witness_idx.find( boost::make_tuple( db->get_account( "alice" ).name, db->get_witness( "alice" ).owner ) ); - BOOST_REQUIRE( witness_itr == witness_idx.end() ); + BOOST_TEST_MESSAGE( "success" ); + op.who = AN("alice"); + op.validate(); - tx.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( witness_vote ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + op.who = AN("bob"); + op.validate(); + } + FC_LOG_AND_RETHROW() +} + +BOOST_AUTO_TEST_CASE( escrow_dispute_authorities ) +{ + try + { + BOOST_TEST_MESSAGE( "Testing: escrow_dispute_authorities" ); + escrow_dispute_operation op; + op.from = AN("alice"); + op.to = AN("bob"); + op.who = AN("alice"); - db->get< comment_vote_object, by_comment_voter >( boost::make_tuple( db->get_comment( "alice", string( "test" ) ).id, db->get_account( "alice" ).id ) ); + flat_set< account_name_type > auths; + flat_set< account_name_type > expected; - vote.weight = 0; - tx.clear(); - tx.operations.push_back( vote ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + op.get_required_owner_authorities( auths ); + BOOST_REQUIRE( auths == expected ); - vote.weight = STEEM_1_PERCENT * 50; - tx.clear(); - tx.operations.push_back( vote ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + op.get_required_active_authorities( auths ); + expected.insert( AN("alice") ); + BOOST_REQUIRE( auths == expected ); - proxy.account = "alice"; - proxy.proxy = "bob"; - tx.clear(); - tx.operations.push_back( proxy ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + auths.clear(); + expected.clear(); + op.who = AN("bob"); + op.get_required_active_authorities( auths ); + expected.insert( AN("bob") ); + BOOST_REQUIRE( auths == expected ); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( account_bandwidth ) +BOOST_AUTO_TEST_CASE( escrow_dispute_apply ) { try { - BOOST_TEST_MESSAGE( "Testing: account_bandwidth" ); - ACTORS( (alice)(bob) ) - generate_block(); - vest( "alice", ASSET( "10.000 TESTS" ) ); - fund( "alice", ASSET( "10.000 TESTS" ) ); - vest( "bob", ASSET( "10.000 TESTS" ) ); + BOOST_TEST_MESSAGE( "Testing: escrow_dispute_apply" ); - generate_block(); - db->skip_transaction_delta_check = false; + ACTORS( (alice)(bob)(sam)(dave) ) + fund( AN("alice"), 10000000 ); + fund( AN("bob"), 200000 ); + fund( AN("sam"), 100000 ); - BOOST_TEST_MESSAGE( "--- Test first tx in block" ); - signed_transaction tx; - transfer_operation op; - op.from = "alice"; - op.to = "bob"; - op.amount = ASSET( "1.000 TESTS" ); + escrow_transfer_operation et_op; + et_op.from = AN("alice"); + et_op.to = AN("bob"); + et_op.agent = AN("sam"); + et_op.sophiatx_amount = ASSET( "1.000000 SPHTX" ); + et_op.escrow_fee = ASSET( "0.100000 SPHTX" ); + et_op.fee = ASSET( "0.100000 SPHTX" ); + et_op.ratification_deadline = db->head_block_time() + SOPHIATX_BLOCK_INTERVAL; + et_op.escrow_expiration = db->head_block_time() + 2 * SOPHIATX_BLOCK_INTERVAL; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); + escrow_approve_operation ea_b_op; + ea_b_op.from = AN("alice"); + ea_b_op.to = AN("bob"); + ea_b_op.agent = AN("sam"); + ea_b_op.who = AN("bob"); + ea_b_op.fee = ASSET( "0.100000 SPHTX" ); + ea_b_op.approve = true; + signed_transaction tx; + tx.operations.push_back( et_op ); + tx.operations.push_back( ea_b_op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( bob_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - auto last_bandwidth_update = db->get< plugins::witness::account_bandwidth_object, plugins::witness::by_account_bandwidth_type >( boost::make_tuple( "alice", plugins::witness::bandwidth_type::market ) ).last_bandwidth_update; - auto average_bandwidth = db->get< plugins::witness::account_bandwidth_object, plugins::witness::by_account_bandwidth_type >( boost::make_tuple( "alice", plugins::witness::bandwidth_type::market ) ).average_bandwidth; - BOOST_REQUIRE( last_bandwidth_update == db->head_block_time() ); - BOOST_REQUIRE( average_bandwidth == fc::raw::pack_size( tx ) * 10 * STEEM_BANDWIDTH_PRECISION ); - auto total_bandwidth = average_bandwidth; - BOOST_TEST_MESSAGE( "--- Test second tx in block" ); + BOOST_TEST_MESSAGE( "--- failure when escrow has not been approved" ); + escrow_dispute_operation op; + op.from = AN("alice"); + op.to = AN("bob"); + op.agent = AN("sam"); + op.who = AN("bob"); + op.fee = ASSET( "0.100000 SPHTX" ); - op.amount = ASSET( "0.100 TESTS" ); - tx.clear(); + tx.operations.clear(); + tx.signatures.clear(); tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + + const auto& escrow = db->get_escrow( et_op.from, et_op.escrow_id ); + BOOST_REQUIRE( escrow.to == AN("bob") ); + BOOST_REQUIRE( escrow.agent == AN("sam") ); + BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); + BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); + BOOST_REQUIRE( escrow.sophiatx_balance == et_op.sophiatx_amount ); + BOOST_REQUIRE( escrow.pending_fee == et_op.escrow_fee ); + BOOST_REQUIRE( escrow.to_approved ); + BOOST_REQUIRE( !escrow.agent_approved ); + BOOST_REQUIRE( !escrow.disputed ); + + + BOOST_TEST_MESSAGE( "--- failure when to does not match escrow" ); + escrow_approve_operation ea_s_op; + ea_s_op.from = AN("alice"); + ea_s_op.to = AN("bob"); + ea_s_op.agent = AN("sam"); + ea_s_op.who = AN("sam"); + ea_s_op.fee = ASSET("0.100000 SPHTX"); + ea_s_op.approve = true; + tx.operations.clear(); + tx.signatures.clear(); + tx.operations.push_back( ea_s_op ); + tx.sign( sam_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - last_bandwidth_update = db->get< plugins::witness::account_bandwidth_object, plugins::witness::by_account_bandwidth_type >( boost::make_tuple( "alice", plugins::witness::bandwidth_type::market ) ).last_bandwidth_update; - average_bandwidth = db->get< plugins::witness::account_bandwidth_object, plugins::witness::by_account_bandwidth_type >( boost::make_tuple( "alice", plugins::witness::bandwidth_type::market ) ).average_bandwidth; - BOOST_REQUIRE( last_bandwidth_update == db->head_block_time() ); - BOOST_REQUIRE( average_bandwidth == total_bandwidth + fc::raw::pack_size( tx ) * 10 * STEEM_BANDWIDTH_PRECISION ); - } - FC_LOG_AND_RETHROW() -} + op.to = AN("dave"); + op.who = AN("alice"); + tx.operations.clear(); + tx.signatures.clear(); + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); -BOOST_AUTO_TEST_CASE( claim_reward_balance_validate ) -{ - try - { - claim_reward_balance_operation op; - op.account = "alice"; - op.reward_steem = ASSET( "0.000 TESTS" ); - op.reward_sbd = ASSET( "0.000 TBD" ); - op.reward_vests = ASSET( "0.000000 VESTS" ); + BOOST_REQUIRE( escrow.to == AN("bob") ); + BOOST_REQUIRE( escrow.agent == AN("sam") ); + BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); + BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); + BOOST_REQUIRE( escrow.sophiatx_balance == et_op.sophiatx_amount ); + BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000000 SPHTX" ) ); + BOOST_REQUIRE( escrow.to_approved ); + BOOST_REQUIRE( escrow.agent_approved ); + BOOST_REQUIRE( !escrow.disputed ); - BOOST_TEST_MESSAGE( "Testing all 0 amounts" ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); + BOOST_TEST_MESSAGE( "--- failure when agent does not match escrow" ); + op.to = AN("bob"); + op.who = AN("alice"); + op.agent = AN("dave"); + tx.operations.clear(); + tx.signatures.clear(); + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + BOOST_REQUIRE( escrow.to == AN("bob") ); + BOOST_REQUIRE( escrow.agent == AN("sam") ); + BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); + BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); + BOOST_REQUIRE( escrow.sophiatx_balance == et_op.sophiatx_amount ); + BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000000 SPHTX" ) ); + BOOST_REQUIRE( escrow.to_approved ); + BOOST_REQUIRE( escrow.agent_approved ); + BOOST_REQUIRE( !escrow.disputed ); - BOOST_TEST_MESSAGE( "Testing single reward claims" ); - op.reward_steem.amount = 1000; - op.validate(); - op.reward_steem.amount = 0; - op.reward_sbd.amount = 1000; - op.validate(); + BOOST_TEST_MESSAGE( "--- failure when escrow is expired" ); + generate_blocks( 2 ); - op.reward_sbd.amount = 0; - op.reward_vests.amount = 1000; - op.validate(); + tx.operations.clear(); + tx.signatures.clear(); + op.agent = AN("sam"); + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - op.reward_vests.amount = 0; + { + const auto& escrow = db->get_escrow( et_op.from, et_op.escrow_id ); + BOOST_REQUIRE( escrow.to == AN("bob") ); + BOOST_REQUIRE( escrow.agent == AN("sam") ); + BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); + BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); + BOOST_REQUIRE( escrow.sophiatx_balance == et_op.sophiatx_amount ); + BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000000 SPHTX" ) ); + BOOST_REQUIRE( escrow.to_approved ); + BOOST_REQUIRE( escrow.agent_approved ); + BOOST_REQUIRE( !escrow.disputed ); + } - BOOST_TEST_MESSAGE( "Testing wrong STEEM symbol" ); - op.reward_steem = ASSET( "1.000 TBD" ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); + BOOST_TEST_MESSAGE( "--- success disputing escrow" ); + et_op.escrow_id = 1; + et_op.ratification_deadline = db->head_block_time() + SOPHIATX_BLOCK_INTERVAL; + et_op.escrow_expiration = db->head_block_time() + 2 * SOPHIATX_BLOCK_INTERVAL; + ea_b_op.escrow_id = et_op.escrow_id; + ea_s_op.escrow_id = et_op.escrow_id; + tx.operations.clear(); + tx.signatures.clear(); + tx.operations.push_back( et_op ); + tx.operations.push_back( ea_b_op ); + tx.operations.push_back( ea_s_op ); + tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( bob_private_key, db->get_chain_id() ); + tx.sign( sam_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - BOOST_TEST_MESSAGE( "Testing wrong SBD symbol" ); - op.reward_steem = ASSET( "1.000 TESTS" ); - op.reward_sbd = ASSET( "1.000 TESTS" ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); + tx.operations.clear(); + tx.signatures.clear(); + op.escrow_id = et_op.escrow_id; + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + { + const auto& escrow = db->get_escrow( et_op.from, et_op.escrow_id ); + BOOST_REQUIRE( escrow.to == AN("bob") ); + BOOST_REQUIRE( escrow.agent == AN("sam") ); + BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); + BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); + BOOST_REQUIRE( escrow.sophiatx_balance == et_op.sophiatx_amount ); + BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000000 SPHTX" ) ); + BOOST_REQUIRE( escrow.to_approved ); + BOOST_REQUIRE( escrow.agent_approved ); + BOOST_REQUIRE( escrow.disputed ); + } - BOOST_TEST_MESSAGE( "Testing wrong VESTS symbol" ); - op.reward_sbd = ASSET( "1.000 TBD" ); - op.reward_vests = ASSET( "1.000 TESTS" ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); + BOOST_TEST_MESSAGE( "--- failure when escrow is already under dispute" ); + tx.operations.clear(); + tx.signatures.clear(); + op.who = AN("bob"); + tx.operations.push_back( op ); + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_TEST_MESSAGE( "Testing a single negative amount" ); - op.reward_steem.amount = 1000; - op.reward_sbd.amount = -1000; - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); + { + const auto& escrow = db->get_escrow( et_op.from, et_op.escrow_id ); + BOOST_REQUIRE( escrow.to == AN("bob") ); + BOOST_REQUIRE( escrow.agent == AN("sam") ); + BOOST_REQUIRE( escrow.ratification_deadline == et_op.ratification_deadline ); + BOOST_REQUIRE( escrow.escrow_expiration == et_op.escrow_expiration ); + BOOST_REQUIRE( escrow.sophiatx_balance == et_op.sophiatx_amount ); + BOOST_REQUIRE( escrow.pending_fee == ASSET( "0.000000 SPHTX" ) ); + BOOST_REQUIRE( escrow.to_approved ); + BOOST_REQUIRE( escrow.agent_approved ); + BOOST_REQUIRE( escrow.disputed ); + } } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( claim_reward_balance_authorities ) +BOOST_AUTO_TEST_CASE( escrow_release_validate ) { try { - BOOST_TEST_MESSAGE( "Testing: decline_voting_rights_authorities" ); + BOOST_TEST_MESSAGE( "Testing: escrow release validate" ); + escrow_release_operation op; + op.from = AN("alice"); + op.to = AN("bob"); + op.who = AN("alice"); + op.agent = AN("sam"); + op.receiver = AN("bob"); - claim_reward_balance_operation op; - op.account = "alice"; - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; + BOOST_TEST_MESSAGE( "--- failure when sophiatx < 0" ); + op.sophiatx_amount.amount = -1; + SOPHIATX_REQUIRE_THROW( op.validate(), fc::exception ); - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); + BOOST_TEST_MESSAGE( "--- failure when sophiatx == 0 and sbd == 0" ); + op.sophiatx_amount.amount = 0; + SOPHIATX_REQUIRE_THROW( op.validate(), fc::exception ); - op.get_required_active_authorities( auths ); - BOOST_REQUIRE( auths == expected ); + BOOST_TEST_MESSAGE( "--- failure when sophiatx is not sophiatx symbol" ); + op.sophiatx_amount = ASSET( "1.000000 SBD" ); + SOPHIATX_REQUIRE_THROW( op.validate(), fc::exception ); - expected.insert( "alice" ); - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); + + BOOST_TEST_MESSAGE( "--- success" ); + op.sophiatx_amount.symbol = SOPHIATX_SYMBOL; + op.validate(); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( account_create_with_delegation_authorities ) +BOOST_AUTO_TEST_CASE( escrow_release_authorities ) { try { - BOOST_TEST_MESSAGE( "Testing: account_create_with_delegation_authorities" ); - - account_create_with_delegation_operation op; - op.creator = "alice"; + BOOST_TEST_MESSAGE( "Testing: escrow_release_authorities" ); + escrow_release_operation op; + op.from = AN("alice"); + op.to = AN("bob"); + op.who = AN("alice"); flat_set< account_name_type > auths; flat_set< account_name_type > expected; @@ -6000,676 +2749,494 @@ BOOST_AUTO_TEST_CASE( account_create_with_delegation_authorities ) op.get_required_owner_authorities( auths ); BOOST_REQUIRE( auths == expected ); - expected.insert( "alice" ); + expected.insert( AN("alice") ); op.get_required_active_authorities( auths ); BOOST_REQUIRE( auths == expected ); + op.who = AN("bob"); + auths.clear(); expected.clear(); + expected.insert( AN("bob") ); + op.get_required_active_authorities( auths ); + BOOST_REQUIRE( auths == expected ); + + op.who = AN("sam"); auths.clear(); - op.get_required_posting_authorities( auths ); + expected.clear(); + expected.insert( AN("sam") ); + op.get_required_active_authorities( auths ); BOOST_REQUIRE( auths == expected ); } FC_LOG_AND_RETHROW() - } -BOOST_AUTO_TEST_CASE( account_create_with_delegation_apply ) +BOOST_AUTO_TEST_CASE( escrow_release_apply ) { try { - BOOST_TEST_MESSAGE( "Testing: account_create_with_delegation_apply" ); - signed_transaction tx; - ACTORS( (alice) ); - // 150 * fee = ( 5 * STEEM ) + SP - //auto gpo = db->get_dynamic_global_properties(); - generate_blocks(1); - fund( "alice", ASSET("1510.000 TESTS") ); - vest( "alice", ASSET("1000.000 TESTS") ); + BOOST_TEST_MESSAGE( "Testing: escrow_release_apply" ); - private_key_type priv_key = generate_private_key( "temp_key" ); + ACTORS( (alice)(bob)(sam)(dave) ) + fund( AN("alice"), 10000000 ); + fund( AN("bob"), 1000000); + fund( AN("sam"), 1000000); - generate_block(); + escrow_transfer_operation et_op; + et_op.from = AN("alice"); + et_op.to = AN("bob"); + et_op.agent = AN("sam"); + et_op.sophiatx_amount = ASSET( "1.000000 SPHTX" ); + et_op.escrow_fee = ASSET( "0.100000 SPHTX" ); + et_op.fee = ASSET( "0.100000 SPHTX" ); + et_op.ratification_deadline = db->head_block_time() + SOPHIATX_BLOCK_INTERVAL; + et_op.escrow_expiration = db->head_block_time() + 2 * SOPHIATX_BLOCK_INTERVAL; - db_plugin->debug_update( [=]( database& db ) - { - db.modify( db.get_witness_schedule_object(), [&]( witness_schedule_object& w ) - { - w.median_props.account_creation_fee = ASSET( "1.000 TESTS" ); - }); - }); + signed_transaction tx; + tx.operations.push_back( et_op ); - generate_block(); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - // This test passed pre HF20 - BOOST_TEST_MESSAGE( "--- Test deprecation. " ); - account_create_with_delegation_operation op; - op.fee = ASSET( "10.000 TESTS" ); - op.delegation = ASSET( "100000000.000000 VESTS" ); - op.creator = "alice"; - op.new_account_name = "bob"; - op.owner = authority( 1, priv_key.get_public_key(), 1 ); - op.active = authority( 2, priv_key.get_public_key(), 2 ); - op.memo_key = priv_key.get_public_key(); - op.json_metadata = "{\"foo\":\"bar\"}"; + + BOOST_TEST_MESSAGE( "--- failure releasing funds prior to approval" ); + escrow_release_operation op; + op.from = et_op.from; + op.to = et_op.to; + op.agent = et_op.agent; + op.who = et_op.from; + op.fee = ASSET( "0.100000 SPHTX" ); + op.receiver = et_op.to; + op.sophiatx_amount = ASSET( "0.100000 SPHTX" ); + + tx.clear(); tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::assert_exception ); - } - FC_LOG_AND_RETHROW() -} + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); -BOOST_AUTO_TEST_CASE( claim_reward_balance_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: claim_reward_balance_apply" ); - BOOST_TEST_MESSAGE( "--- Setting up test state" ); + escrow_approve_operation ea_b_op; + ea_b_op.fee = ASSET( "0.100000 SPHTX" ); + ea_b_op.from = AN("alice"); + ea_b_op.to = AN("bob"); + ea_b_op.agent = AN("sam"); + ea_b_op.who = AN("bob"); - ACTORS( (alice) ) - generate_block(); + escrow_approve_operation ea_s_op; + ea_s_op.fee = ASSET( "0.100000 SPHTX" ); + ea_s_op.from = AN("alice"); + ea_s_op.to = AN("bob"); + ea_s_op.agent = AN("sam"); + ea_s_op.who = AN("sam"); - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); + tx.clear(); + tx.operations.push_back( ea_b_op ); + tx.operations.push_back( ea_s_op ); + tx.sign( bob_private_key, db->get_chain_id() ); + tx.sign( sam_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - db_plugin->debug_update( []( database& db ) - { - db.modify( db.get_account( "alice" ), []( account_object& a ) - { - a.reward_steem_balance = ASSET( "10.000 TESTS" ); - a.reward_sbd_balance = ASSET( "10.000 TBD" ); - a.reward_vesting_balance = ASSET( "10.000000 VESTS" ); - a.reward_vesting_steem = ASSET( "10.000 TESTS" ); - }); + BOOST_TEST_MESSAGE( "--- failure when 'agent' attempts to release non-disputed escrow to 'to'" ); + op.who = et_op.agent; + tx.clear(); + tx.operations.push_back( op ); + tx.sign( sam_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - db.modify( db.get_dynamic_global_properties(), []( dynamic_global_property_object& gpo ) - { - gpo.current_supply += ASSET( "20.000 TESTS" ); - gpo.current_sbd_supply += ASSET( "10.000 TBD" ); - gpo.virtual_supply += ASSET( "20.000 TESTS" ); - gpo.pending_rewarded_vesting_shares += ASSET( "10.000000 VESTS" ); - gpo.pending_rewarded_vesting_steem += ASSET( "10.000 TESTS" ); - }); - }); - generate_block(); - validate_database(); + BOOST_TEST_MESSAGE("--- failure when 'agent' attempts to release non-disputed escrow to 'from' " ); + op.receiver = et_op.from; + + tx.clear(); + tx.operations.push_back( op ); + tx.sign( sam_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + - auto alice_steem = db->get_account( "alice" ).balance; - auto alice_sbd = db->get_account( "alice" ).sbd_balance; - auto alice_vests = db->get_account( "alice" ).vesting_shares; + BOOST_TEST_MESSAGE( "--- failure when 'agent' attempt to release non-disputed escrow to not 'to' or 'from'" ); + op.receiver = AN("dave"); + tx.clear(); + tx.operations.push_back( op ); + tx.sign( sam_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_TEST_MESSAGE( "--- Attempting to claim more STEEM than exists in the reward balance." ); - claim_reward_balance_operation op; - signed_transaction tx; + BOOST_TEST_MESSAGE( "--- failure when other attempts to release non-disputed escrow to 'to'" ); + op.receiver = et_op.to; + op.who = AN("dave"); + + tx.clear(); + tx.operations.push_back( op ); + tx.sign( dave_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + + + BOOST_TEST_MESSAGE("--- failure when other attempts to release non-disputed escrow to 'from' " ); + op.receiver = et_op.from; + + tx.clear(); + tx.operations.push_back( op ); + tx.sign( dave_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + + + BOOST_TEST_MESSAGE( "--- failure when other attempt to release non-disputed escrow to not 'to' or 'from'" ); + op.receiver = AN("dave"); - op.account = "alice"; - op.reward_steem = ASSET( "20.000 TESTS" ); - op.reward_sbd = ASSET( "0.000 TBD" ); - op.reward_vests = ASSET( "0.000000 VESTS" ); + tx.clear(); + tx.operations.push_back( op ); + tx.sign( dave_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + + + BOOST_TEST_MESSAGE( "--- failure when 'to' attemtps to release non-disputed escrow to 'to'" ); + op.receiver = et_op.to; + op.who = et_op.to; + + tx.clear(); + tx.operations.push_back( op ); + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + + + BOOST_TEST_MESSAGE("--- failure when 'to' attempts to release non-dispured escrow to 'agent' " ); + op.receiver = et_op.agent; + tx.clear(); tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::assert_exception ); + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_TEST_MESSAGE( "--- Claiming a partial reward balance" ); + BOOST_TEST_MESSAGE( "--- failure when 'to' attempts to release non-disputed escrow to not 'from'" ); + op.receiver = AN("dave"); - op.reward_steem = ASSET( "0.000 TESTS" ); - op.reward_vests = ASSET( "5.000000 VESTS" ); tx.clear(); tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "alice" ).balance == alice_steem + op.reward_steem ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_steem_balance == ASSET( "10.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance == alice_sbd + op.reward_sbd ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_sbd_balance == ASSET( "10.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).vesting_shares == alice_vests + op.reward_vests ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_vesting_balance == ASSET( "5.000000 VESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_vesting_steem == ASSET( "5.000 TESTS" ) ); - validate_database(); - - alice_vests += op.reward_vests; + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_TEST_MESSAGE( "--- Claiming the full reward balance" ); + BOOST_TEST_MESSAGE( "--- success release non-disputed escrow to 'to' from 'from'" ); + op.receiver = et_op.from; - op.reward_steem = ASSET( "10.000 TESTS" ); - op.reward_sbd = ASSET( "10.000 TBD" ); tx.clear(); tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( bob_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - BOOST_REQUIRE( db->get_account( "alice" ).balance == alice_steem + op.reward_steem ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_steem_balance == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance == alice_sbd + op.reward_sbd ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).vesting_shares == alice_vests + op.reward_vests ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_vesting_balance == ASSET( "0.000000 VESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_vesting_steem == ASSET( "0.000 TESTS" ) ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( delegate_vesting_shares_validate ) -{ - try - { - delegate_vesting_shares_operation op; - - op.delegator = "alice"; - op.delegatee = "bob"; - op.vesting_shares = asset( -1, VESTS_SYMBOL ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( delegate_vesting_shares_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: delegate_vesting_shares_authorities" ); - signed_transaction tx; - ACTORS( (alice)(bob) ) - vest( "alice", ASSET( "10000.000000 VESTS" ) ); + BOOST_REQUIRE( db->get_escrow( op.from, op.escrow_id ).sophiatx_balance == ASSET( "0.900000 SPHTX" ) ); + BOOST_REQUIRE( db->get_account( AN("alice") ).balance == ASSET( "8.900000 SPHTX" ) ); - delegate_vesting_shares_operation op; - op.vesting_shares = ASSET( "300.000000 VESTS"); - op.delegator = "alice"; - op.delegatee = "bob"; + BOOST_TEST_MESSAGE( "--- failure when 'from' attempts to release non-disputed escrow to 'from'" ); + op.receiver = et_op.from; + op.who = et_op.from; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.clear(); tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_TEST_MESSAGE( "--- Test failure when no signatures" ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); - BOOST_TEST_MESSAGE( "--- Test success with witness signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + BOOST_TEST_MESSAGE("--- failure when 'from' attempts to release non-disputed escrow to 'agent'" ); + op.receiver = et_op.agent; - BOOST_TEST_MESSAGE( "--- Test failure when duplicate signatures" ); - tx.operations.clear(); - tx.signatures.clear(); - op.delegatee = "sam"; + tx.clear(); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_duplicate_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure when signed by an additional signature not in the creator's authority" ); - tx.signatures.clear(); - tx.sign( init_account_priv_key, db->get_chain_id() ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_irrelevant_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure when signed by a signature not in the creator's authority" ); - tx.signatures.clear(); - tx.sign( init_account_priv_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), tx_missing_active_auth ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( delegate_vesting_shares_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: delegate_vesting_shares_apply" ); - signed_transaction tx; - ACTORS( (alice)(bob) ) - generate_block(); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - vest( "alice", ASSET( "1000.000 TESTS" ) ); - generate_block(); + BOOST_TEST_MESSAGE( "--- failure when 'from' attempts to release non-disputed escrow to not 'from'" ); + op.receiver = AN("dave"); - db_plugin->debug_update( [=]( database& db ) - { - db.modify( db.get_witness_schedule_object(), [&]( witness_schedule_object& w ) - { - w.median_props.account_creation_fee = ASSET( "1.000 TESTS" ); - }); - }); + tx.clear(); + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - generate_block(); - delegate_vesting_shares_operation op; - op.vesting_shares = ASSET( "10000000.000000 VESTS"); - op.delegator = "alice"; - op.delegatee = "bob"; + BOOST_TEST_MESSAGE( "--- success release non-disputed escrow to 'from' from 'to'" ); + op.receiver = et_op.to; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.clear(); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - generate_blocks( 1 ); - const account_object& alice_acc = db->get_account( "alice" ); - const account_object& bob_acc = db->get_account( "bob" ); - BOOST_REQUIRE( alice_acc.delegated_vesting_shares == ASSET( "10000000.000000 VESTS")); - BOOST_REQUIRE( bob_acc.received_vesting_shares == ASSET( "10000000.000000 VESTS")); + BOOST_REQUIRE( db->get_escrow( op.from, op.escrow_id ).sophiatx_balance == ASSET( "0.800000 SPHTX" ) ); + BOOST_REQUIRE( db->get_account( AN("bob") ).balance == ASSET( "0.900000 SPHTX" ) ); - BOOST_TEST_MESSAGE( "--- Test that the delegation object is correct. " ); - auto delegation = db->find< vesting_delegation_object, by_delegation >( boost::make_tuple( op.delegator, op.delegatee ) ); - BOOST_REQUIRE( delegation != nullptr ); - BOOST_REQUIRE( delegation->delegator == op.delegator); - BOOST_REQUIRE( delegation->vesting_shares == ASSET( "10000000.000000 VESTS")); + BOOST_TEST_MESSAGE( "--- failure when releasing more sbd than available" ); + op.sophiatx_amount = ASSET( "1.000000 SPHTX" ); - validate_database(); tx.clear(); - op.vesting_shares = ASSET( "20000000.000000 VESTS"); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - generate_blocks(1); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_REQUIRE( delegation != nullptr ); - BOOST_REQUIRE( delegation->delegator == op.delegator); - BOOST_REQUIRE( delegation->vesting_shares == ASSET( "20000000.000000 VESTS")); - BOOST_REQUIRE( alice_acc.delegated_vesting_shares == ASSET( "20000000.000000 VESTS")); - BOOST_REQUIRE( bob_acc.received_vesting_shares == ASSET( "20000000.000000 VESTS")); - BOOST_TEST_MESSAGE( "--- Test that effective vesting shares is accurate and being applied." ); - tx.operations.clear(); - tx.signatures.clear(); + BOOST_TEST_MESSAGE( "--- failure when releasing less sophiatx than available" ); + op.sophiatx_amount = ASSET( "0.000000 SPHTX" ); - comment_operation comment_op; - comment_op.author = "alice"; - comment_op.permlink = "foo"; - comment_op.parent_permlink = "test"; - comment_op.title = "bar"; - comment_op.body = "foo bar"; - tx.operations.push_back( comment_op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.clear(); + tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - tx.signatures.clear(); - tx.operations.clear(); - vote_operation vote_op; - vote_op.voter = "bob"; - vote_op.author = "alice"; - vote_op.permlink = "foo"; - vote_op.weight = STEEM_100_PERCENT; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( vote_op ); - tx.sign( bob_private_key, db->get_chain_id() ); - auto old_voting_power = bob_acc.voting_power; - - db->push_transaction( tx, 0 ); - generate_blocks(1); - - const auto& vote_idx = db->get_index< comment_vote_index >().indices().get< by_comment_voter >(); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - auto& alice_comment = db->get_comment( "alice", string( "foo" ) ); - auto itr = vote_idx.find( std::make_tuple( alice_comment.id, bob_acc.id ) ); - BOOST_REQUIRE( alice_comment.net_rshares.value == bob_acc.effective_vesting_shares().amount.value * ( old_voting_power - bob_acc.voting_power ) / STEEM_100_PERCENT - STEEM_VOTE_DUST_THRESHOLD); - BOOST_REQUIRE( itr->rshares == bob_acc.effective_vesting_shares().amount.value * ( old_voting_power - bob_acc.voting_power ) / STEEM_100_PERCENT - STEEM_VOTE_DUST_THRESHOLD ); + BOOST_TEST_MESSAGE( "--- failure when 'to' attempts to release disputed escrow" ); + escrow_dispute_operation ed_op; + ed_op.from = AN("alice"); + ed_op.to = AN("bob"); + ed_op.agent = AN("sam"); + ed_op.who = AN("alice"); + ed_op.fee = ASSET( "0.100000 SPHTX" ); - generate_block(); - ACTORS( (sam)(dave) ) - generate_block(); - - vest( "sam", ASSET( "1000.000 TESTS" ) ); - - generate_block(); - - auto sam_vest = db->get_account( "sam" ).vesting_shares; - - BOOST_TEST_MESSAGE( "--- Test failure when delegating 0 VESTS" ); tx.clear(); - op.delegator = "sam"; - op.delegatee = "dave"; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( sam_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx ), fc::assert_exception ); - + tx.operations.push_back( ed_op ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - BOOST_TEST_MESSAGE( "--- Testing failure delegating more vesting shares than account has." ); tx.clear(); - op.vesting_shares = asset( sam_vest.amount + 1, VESTS_SYMBOL ); + op.from = et_op.from; + op.receiver = et_op.from; + op.who = et_op.to; + op.sophiatx_amount = ASSET( "0.100000 SPHTX" ); tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx ), fc::assert_exception ); + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_TEST_MESSAGE( "--- Test failure delegating vesting shares that are part of a power down" ); + BOOST_TEST_MESSAGE( "--- failure when 'from' attempts to release disputed escrow" ); tx.clear(); - sam_vest = asset( sam_vest.amount / 2, VESTS_SYMBOL ); - withdraw_vesting_operation withdraw; - withdraw.account = "sam"; - withdraw.vesting_shares = sam_vest; - tx.operations.push_back( withdraw ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + op.receiver = et_op.to; + op.who = et_op.from; + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + + BOOST_TEST_MESSAGE( "--- failure when releasing disputed escrow to an account not 'to' or 'from'" ); tx.clear(); - op.vesting_shares = asset( sam_vest.amount + 2, VESTS_SYMBOL ); + op.who = et_op.agent; + op.receiver = AN("dave"); tx.operations.push_back( op ); tx.sign( sam_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx ), fc::assert_exception ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + + BOOST_TEST_MESSAGE( "--- failure when agent does not match escrow" ); tx.clear(); - withdraw.vesting_shares = ASSET( "0.000000 VESTS" ); - tx.operations.push_back( withdraw ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + op.who = AN("dave"); + op.receiver = et_op.from; + tx.operations.push_back( op ); + tx.sign( dave_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_TEST_MESSAGE( "--- Test failure powering down vesting shares that are delegated" ); - sam_vest.amount += 1000; - op.vesting_shares = sam_vest; + BOOST_TEST_MESSAGE( "--- success releasing disputed escrow with agent to 'to'" ); tx.clear(); + op.receiver = et_op.to; + op.who = et_op.agent; tx.operations.push_back( op ); tx.sign( sam_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - tx.clear(); - withdraw.vesting_shares = asset( sam_vest.amount, VESTS_SYMBOL ); - tx.operations.push_back( withdraw ); - tx.sign( sam_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx ), fc::assert_exception ); + BOOST_REQUIRE( db->get_account( AN("bob") ).balance == ASSET( "1.000000 SPHTX" ) ); + BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).sophiatx_balance == ASSET( "0.700000 SPHTX" ) ); - BOOST_TEST_MESSAGE( "--- Remove a delegation and ensure it is returned after 1 week" ); + BOOST_TEST_MESSAGE( "--- success releasing disputed escrow with agent to 'from'" ); tx.clear(); - op.vesting_shares = ASSET( "0.000000 VESTS" ); + op.receiver = et_op.from; + op.who = et_op.agent; tx.operations.push_back( op ); tx.sign( sam_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - auto exp_obj = db->get_index< vesting_delegation_expiration_index, by_id >().begin(); - auto end = db->get_index< vesting_delegation_expiration_index, by_id >().end(); - - BOOST_REQUIRE( exp_obj != end ); - BOOST_REQUIRE( exp_obj->delegator == "sam" ); - BOOST_REQUIRE( exp_obj->vesting_shares == sam_vest ); - BOOST_REQUIRE( exp_obj->expiration == db->head_block_time() + STEEM_CASHOUT_WINDOW_SECONDS ); - BOOST_REQUIRE( db->get_account( "sam" ).delegated_vesting_shares == sam_vest ); - BOOST_REQUIRE( db->get_account( "dave" ).received_vesting_shares == ASSET( "0.000000 VESTS" ) ); - delegation = db->find< vesting_delegation_object, by_delegation >( boost::make_tuple( op.delegator, op.delegatee ) ); - BOOST_REQUIRE( delegation == nullptr ); + BOOST_REQUIRE( db->get_account( AN("alice") ).balance == ASSET( "8.800000 SPHTX" ) ); + BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).sophiatx_balance == ASSET( "0.600000 SPHTX" ) ); - generate_blocks( exp_obj->expiration + STEEM_BLOCK_INTERVAL ); - exp_obj = db->get_index< vesting_delegation_expiration_index, by_id >().begin(); - end = db->get_index< vesting_delegation_expiration_index, by_id >().end(); - - BOOST_REQUIRE( exp_obj == end ); - BOOST_REQUIRE( db->get_account( "sam" ).delegated_vesting_shares == ASSET( "0.000000 VESTS" ) ); - } - FC_LOG_AND_RETHROW() -} + BOOST_TEST_MESSAGE( "--- failure when 'to' attempts to release disputed expired escrow" ); + generate_blocks( 2 ); -BOOST_AUTO_TEST_CASE( issue_971_vesting_removal ) -{ - // This is a regression test specifically for issue #971 - try - { - BOOST_TEST_MESSAGE( "Test Issue 971 Vesting Removal" ); - ACTORS( (alice)(bob) ) - generate_block(); + tx.clear(); + op.receiver = et_op.from; + op.who = et_op.to; + tx.operations.push_back( op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - vest( "alice", ASSET( "1000.000 TESTS" ) ); - generate_block(); + BOOST_TEST_MESSAGE( "--- failure when 'from' attempts to release disputed expired escrow" ); + tx.clear(); + op.receiver = et_op.to; + op.who = et_op.from; + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - db_plugin->debug_update( [=]( database& db ) - { - db.modify( db.get_witness_schedule_object(), [&]( witness_schedule_object& w ) - { - w.median_props.account_creation_fee = ASSET( "1.000 TESTS" ); - }); - }); - generate_block(); + BOOST_TEST_MESSAGE( "--- success releasing disputed expired escrow with agent" ); + tx.clear(); + op.receiver = et_op.from; + op.who = et_op.agent; + tx.operations.push_back( op ); + tx.sign( sam_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - signed_transaction tx; - delegate_vesting_shares_operation op; - op.vesting_shares = ASSET( "10000000.000000 VESTS"); - op.delegator = "alice"; - op.delegatee = "bob"; + BOOST_REQUIRE( db->get_account( AN("alice") ).balance >= ASSET( "8.900000 SPHTX" ) && db->get_account( AN("alice") ).balance < ASSET( "8.910000 SPHTX" ) ); + BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).sophiatx_balance == ASSET( "0.500000 SPHTX" ) ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + BOOST_TEST_MESSAGE( "--- success deleting escrow when balances are both zero" ); + tx.clear(); + op.sophiatx_amount = ASSET( "0.500000 SPHTX" ); tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( sam_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - generate_block(); - const account_object& alice_acc = db->get_account( "alice" ); - const account_object& bob_acc = db->get_account( "bob" ); - BOOST_REQUIRE( alice_acc.delegated_vesting_shares == ASSET( "10000000.000000 VESTS")); - BOOST_REQUIRE( bob_acc.received_vesting_shares == ASSET( "10000000.000000 VESTS")); + BOOST_REQUIRE( db->get_account( AN("alice") ).balance >= ASSET( "9.400000 SPHTX" ) && db->get_account( AN("alice") ).balance < ASSET( "9.410000 SPHTX" ) ); + SOPHIATX_REQUIRE_THROW( db->get_escrow( et_op.from, et_op.escrow_id ), fc::exception ); - generate_block(); - - db_plugin->debug_update( [=]( database& db ) - { - db.modify( db.get_witness_schedule_object(), [&]( witness_schedule_object& w ) - { - w.median_props.account_creation_fee = ASSET( "100.000 TESTS" ); - }); - }); - generate_block(); + tx.clear(); + et_op.ratification_deadline = db->head_block_time() + SOPHIATX_BLOCK_INTERVAL; + et_op.escrow_expiration = db->head_block_time() + 2 * SOPHIATX_BLOCK_INTERVAL; + tx.operations.push_back( et_op ); + tx.operations.push_back( ea_b_op ); + tx.operations.push_back( ea_s_op ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.sign( alice_private_key, db->get_chain_id() ); + tx.sign( bob_private_key, db->get_chain_id() ); + tx.sign( sam_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + generate_blocks( 2 ); - op.vesting_shares = ASSET( "0.000000 VESTS" ); + BOOST_TEST_MESSAGE( "--- failure when 'agent' attempts to release non-disputed expired escrow to 'to'" ); tx.clear(); + op.receiver = et_op.to; + op.who = et_op.agent; + op.sophiatx_amount = ASSET( "0.100000 SPHTX" ); tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - generate_block(); + tx.sign( sam_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_REQUIRE( alice_acc.delegated_vesting_shares == ASSET( "10000000.000000 VESTS")); - BOOST_REQUIRE( bob_acc.received_vesting_shares == ASSET( "0.000000 VESTS")); - } - FC_LOG_AND_RETHROW() -} -BOOST_AUTO_TEST_CASE( comment_beneficiaries_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Test Comment Beneficiaries Validate" ); - comment_options_operation op; - - op.author = "alice"; - op.permlink = "test"; - - BOOST_TEST_MESSAGE( "--- Testing more than 100% weight on a single route" ); - comment_payout_beneficiaries b; - b.beneficiaries.push_back( beneficiary_route_type( account_name_type( "bob" ), STEEM_100_PERCENT + 1 ) ); - op.extensions.insert( b ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - - BOOST_TEST_MESSAGE( "--- Testing more than 100% total weight" ); - b.beneficiaries.clear(); - b.beneficiaries.push_back( beneficiary_route_type( account_name_type( "bob" ), STEEM_1_PERCENT * 75 ) ); - b.beneficiaries.push_back( beneficiary_route_type( account_name_type( "sam" ), STEEM_1_PERCENT * 75 ) ); - op.extensions.clear(); - op.extensions.insert( b ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - - BOOST_TEST_MESSAGE( "--- Testing maximum number of routes" ); - b.beneficiaries.clear(); - for( size_t i = 0; i < 127; i++ ) - { - b.beneficiaries.push_back( beneficiary_route_type( account_name_type( "foo" + fc::to_string( i ) ), 1 ) ); - } + BOOST_TEST_MESSAGE( "--- failure when 'agent' attempts to release non-disputed expired escrow to 'from'" ); + tx.clear(); + op.receiver = et_op.from; + tx.operations.push_back( op ); + tx.sign( sam_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - op.extensions.clear(); - std::sort( b.beneficiaries.begin(), b.beneficiaries.end() ); - op.extensions.insert( b ); - op.validate(); - BOOST_TEST_MESSAGE( "--- Testing one too many routes" ); - b.beneficiaries.push_back( beneficiary_route_type( account_name_type( "bar" ), 1 ) ); - std::sort( b.beneficiaries.begin(), b.beneficiaries.end() ); - op.extensions.clear(); - op.extensions.insert( b ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - - - BOOST_TEST_MESSAGE( "--- Testing duplicate accounts" ); - b.beneficiaries.clear(); - b.beneficiaries.push_back( beneficiary_route_type( "bob", STEEM_1_PERCENT * 2 ) ); - b.beneficiaries.push_back( beneficiary_route_type( "bob", STEEM_1_PERCENT ) ); - op.extensions.clear(); - op.extensions.insert( b ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - - BOOST_TEST_MESSAGE( "--- Testing incorrect account sort order" ); - b.beneficiaries.clear(); - b.beneficiaries.push_back( beneficiary_route_type( "bob", STEEM_1_PERCENT ) ); - b.beneficiaries.push_back( beneficiary_route_type( "alice", STEEM_1_PERCENT ) ); - op.extensions.clear(); - op.extensions.insert( b ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - - BOOST_TEST_MESSAGE( "--- Testing correct account sort order" ); - b.beneficiaries.clear(); - b.beneficiaries.push_back( beneficiary_route_type( "alice", STEEM_1_PERCENT ) ); - b.beneficiaries.push_back( beneficiary_route_type( "bob", STEEM_1_PERCENT ) ); - op.extensions.clear(); - op.extensions.insert( b ); - op.validate(); - } - FC_LOG_AND_RETHROW() -} + BOOST_TEST_MESSAGE( "--- failure when 'agent' attempt to release non-disputed expired escrow to not 'to' or 'from'" ); + tx.clear(); + op.receiver = AN("dave"); + tx.operations.push_back( op ); + tx.sign( sam_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); -BOOST_AUTO_TEST_CASE( comment_beneficiaries_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Test Comment Beneficiaries" ); - ACTORS( (alice)(bob)(sam)(dave) ) - generate_block(); - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); + BOOST_TEST_MESSAGE( "--- failure when 'to' attempts to release non-dispured expired escrow to 'agent'" ); + tx.clear(); + op.who = et_op.to; + op.receiver = et_op.agent; + tx.operations.push_back( op ); + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - comment_operation comment; - vote_operation vote; - comment_options_operation op; - comment_payout_beneficiaries b; - signed_transaction tx; - comment.author = "alice"; - comment.permlink = "test"; - comment.parent_permlink = "test"; - comment.title = "test"; - comment.body = "foobar"; + BOOST_TEST_MESSAGE( "--- failure when 'to' attempts to release non-disputed expired escrow to not 'from' or 'to'" ); + tx.clear(); + op.receiver = AN("dave"); + tx.operations.push_back( op ); + tx.sign( bob_private_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - tx.operations.push_back( comment ); - tx.set_expiration( db->head_block_time() + STEEM_MIN_TRANSACTION_EXPIRATION_LIMIT ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx ); - BOOST_TEST_MESSAGE( "--- Test failure on more than 8 benefactors" ); - b.beneficiaries.push_back( beneficiary_route_type( account_name_type( "bob" ), STEEM_1_PERCENT ) ); + BOOST_TEST_MESSAGE( "--- success release non-disputed expired escrow to 'to' from 'to'" ); + tx.clear(); + op.receiver = et_op.to; + tx.operations.push_back( op ); + tx.sign( bob_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); - for( size_t i = 0; i < 8; i++ ) - { - b.beneficiaries.push_back( beneficiary_route_type( account_name_type( STEEM_INIT_MINER_NAME + fc::to_string( i ) ), STEEM_1_PERCENT ) ); - } + BOOST_REQUIRE( db->get_account( AN("bob") ).balance >= ASSET( "0.900000 SPHTX" ) && db->get_account( AN("bob") ).balance < ASSET( "0.910000 SPHTX" )); + BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).sophiatx_balance == ASSET( "0.900000 SPHTX" ) ); - op.author = "alice"; - op.permlink = "test"; - op.allow_curation_rewards = false; - op.extensions.insert( b ); + + BOOST_TEST_MESSAGE( "--- success release non-disputed expired escrow to 'from' from 'to'" ); tx.clear(); + op.receiver = et_op.from; tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx ), chain::plugin_exception ); + tx.sign( bob_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + BOOST_REQUIRE( db->get_account( AN("alice") ).balance >= ASSET( "8.300000 SPHTX" ) && db->get_account( AN("alice") ).balance < ASSET( "8.310000 SPHTX" ) ); + BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).sophiatx_balance == ASSET( "0.800000 SPHTX" ) ); - BOOST_TEST_MESSAGE( "--- Test specifying a non-existent benefactor" ); - b.beneficiaries.clear(); - b.beneficiaries.push_back( beneficiary_route_type( account_name_type( "doug" ), STEEM_1_PERCENT ) ); - op.extensions.clear(); - op.extensions.insert( b ); + + BOOST_TEST_MESSAGE( "--- failure when 'from' attempts to release non-disputed expired escrow to 'agent'" ); tx.clear(); + op.who = et_op.from; + op.receiver = et_op.agent; tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx ), fc::assert_exception ); - - - BOOST_TEST_MESSAGE( "--- Test setting when comment has been voted on" ); - vote.author = "alice"; - vote.permlink = "test"; - vote.voter = "bob"; - vote.weight = STEEM_100_PERCENT; + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - b.beneficiaries.clear(); - b.beneficiaries.push_back( beneficiary_route_type( account_name_type( "bob" ), 25 * STEEM_1_PERCENT ) ); - b.beneficiaries.push_back( beneficiary_route_type( account_name_type( "sam" ), 50 * STEEM_1_PERCENT ) ); - op.extensions.clear(); - op.extensions.insert( b ); + BOOST_TEST_MESSAGE( "--- failure when 'from' attempts to release non-disputed expired escrow to not 'from' or 'to'" ); tx.clear(); - tx.operations.push_back( vote ); + op.receiver = AN("dave"); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx ), fc::assert_exception ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - BOOST_TEST_MESSAGE( "--- Test success" ); + BOOST_TEST_MESSAGE( "--- success release non-disputed expired escrow to 'to' from 'from'" ); tx.clear(); + op.receiver = et_op.to; tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx ); + db->push_transaction( tx, 0 ); - BOOST_TEST_MESSAGE( "--- Test setting when there are already beneficiaries" ); - b.beneficiaries.clear(); - b.beneficiaries.push_back( beneficiary_route_type( account_name_type( "dave" ), 25 * STEEM_1_PERCENT ) ); - op.extensions.clear(); - op.extensions.insert( b ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx ), fc::assert_exception ); + BOOST_REQUIRE( db->get_account( AN("bob") ).balance >= ASSET( "0.900000 SPHTX" ) && db->get_account( AN("bob") ).balance < ASSET( "0.910000 SPHTX" ) ); + BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).sophiatx_balance == ASSET( "0.700000 SPHTX" ) ); - BOOST_TEST_MESSAGE( "--- Payout and verify rewards were split properly" ); + BOOST_TEST_MESSAGE( "--- success release non-disputed expired escrow to 'from' from 'from'" ); tx.clear(); - tx.operations.push_back( vote ); - tx.sign( bob_private_key, db->get_chain_id() ); + op.receiver = et_op.from; + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - generate_blocks( db->get_comment( "alice", string( "test" ) ).cashout_time - STEEM_BLOCK_INTERVAL ); - db_plugin->debug_update( [=]( database& db ) - { - db.modify( db.get_dynamic_global_properties(), [=]( dynamic_global_property_object& gpo ) - { - gpo.current_supply -= gpo.total_reward_fund_steem; - gpo.total_reward_fund_steem = ASSET( "100.000 TESTS" ); - gpo.current_supply += gpo.total_reward_fund_steem; - }); - }); + BOOST_REQUIRE( db->get_account( AN("alice") ).balance >= ASSET( "8.200000 SPHTX" ) && db->get_account( AN("alice") ).balance < ASSET( "8.210000 SPHTX" )); + BOOST_REQUIRE( db->get_escrow( et_op.from, et_op.escrow_id ).sophiatx_balance == ASSET( "0.600000 SPHTX" ) ); - generate_block(); - BOOST_REQUIRE( db->get_account( "bob" ).reward_steem_balance == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "bob" ).reward_sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "bob" ).reward_vesting_steem.amount + db->get_account( "sam" ).reward_vesting_steem.amount == db->get_comment( "alice", string( "test" ) ).beneficiary_payout_value.amount ); - BOOST_REQUIRE( ( db->get_account( "alice" ).reward_sbd_balance.amount + db->get_account( "alice" ).reward_vesting_steem.amount ) == db->get_account( "bob" ).reward_vesting_steem.amount + 2 ); - BOOST_REQUIRE( ( db->get_account( "alice" ).reward_sbd_balance.amount + db->get_account( "alice" ).reward_vesting_steem.amount ) * 2 == db->get_account( "sam" ).reward_vesting_steem.amount + 3 ); + BOOST_TEST_MESSAGE( "--- success deleting escrow when balances are zero on non-disputed escrow" ); + tx.clear(); + op.sophiatx_amount = ASSET( "0.600000 SPHTX" ); + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + + BOOST_REQUIRE( db->get_account( AN("alice") ).balance >= ASSET( "8.700000 SPHTX" ) && db->get_account( AN("alice") ).balance < ASSET( "8.710000 SPHTX" )); + SOPHIATX_REQUIRE_THROW( db->get_escrow( et_op.from, et_op.escrow_id ), fc::exception ); } FC_LOG_AND_RETHROW() } + BOOST_AUTO_TEST_CASE( witness_set_properties_validate ) { try @@ -6677,19 +3244,20 @@ BOOST_AUTO_TEST_CASE( witness_set_properties_validate ) BOOST_TEST_MESSAGE( "Testing: witness_set_properties_validate" ); ACTORS( (alice) ) - fund( "alice", 10000 ); + fund( AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE + 1000000); + vest( AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); private_key_type signing_key = generate_private_key( "old_key" ); witness_update_operation op; - op.owner = "alice"; + op.owner = AN("alice"); op.url = "foo.bar"; - op.fee = ASSET( "1.000 TESTS" ); + op.fee = ASSET( "1.000000 SPHTX" ); op.block_signing_key = signing_key.get_public_key(); - op.props.account_creation_fee = legacy_steem_asset::from_asset( asset(STEEM_MIN_ACCOUNT_CREATION_FEE + 10, STEEM_SYMBOL) ); - op.props.maximum_block_size = STEEM_MIN_BLOCK_SIZE_LIMIT + 100; + op.props.account_creation_fee = asset(SOPHIATX_MIN_ACCOUNT_CREATION_FEE + 10, SOPHIATX_SYMBOL) ; + op.props.maximum_block_size = SOPHIATX_MIN_BLOCK_SIZE_LIMIT + 100; signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); @@ -6697,43 +3265,35 @@ BOOST_AUTO_TEST_CASE( witness_set_properties_validate ) BOOST_TEST_MESSAGE( "--- failure when signing key is not present" ); witness_set_properties_operation prop_op; - prop_op.owner = "alice"; - STEEM_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); + prop_op.owner = AN("alice"); + SOPHIATX_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); BOOST_TEST_MESSAGE( "--- failure when setting account_creation_fee with incorrect symbol" ); prop_op.props[ "key" ] = fc::raw::pack_to_vector( signing_key.get_public_key() ); - prop_op.props[ "account_creation_fee" ] = fc::raw::pack_to_vector( ASSET( "2.000 TBD" ) ); - STEEM_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); + prop_op.props[ "account_creation_fee" ] = fc::raw::pack_to_vector( ASSET( "2.000000 SBD" ) ); + SOPHIATX_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); - BOOST_TEST_MESSAGE( "--- failure when setting maximum_block_size below STEEM_MIN_BLOCK_SIZE_LIMIT" ); + BOOST_TEST_MESSAGE( "--- failure when setting maximum_block_size below SOPHIATX_MIN_BLOCK_SIZE_LIMIT" ); prop_op.props.erase( "account_creation_fee" ); - prop_op.props[ "maximum_block_size" ] = fc::raw::pack_to_vector( STEEM_MIN_BLOCK_SIZE_LIMIT - 1 ); - STEEM_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); - - BOOST_TEST_MESSAGE( "--- failure when setting sbd_interest_rate with negative number" ); - prop_op.props.erase( "maximum_block_size" ); - prop_op.props[ "sbd_interest_rate" ] = fc::raw::pack_to_vector( -700 ); - STEEM_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); - - BOOST_TEST_MESSAGE( "--- failure when setting sbd_interest_rate to STEEM_100_PERCENT + 1" ); - prop_op.props[ "sbd_interest_rate" ].clear(); - prop_op.props[ "sbd_interest_rate" ] = fc::raw::pack_to_vector( STEEM_100_PERCENT + 1 ); - STEEM_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); + prop_op.props[ "maximum_block_size" ] = fc::raw::pack_to_vector( SOPHIATX_MIN_BLOCK_SIZE_LIMIT - 1 ); + SOPHIATX_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); - BOOST_TEST_MESSAGE( "--- failure when setting new sbd_exchange_rate with SBD / STEEM" ); - prop_op.props.erase( "sbd_interest_rate" ); - prop_op.props[ "sbd_exchange_rate" ] = fc::raw::pack_to_vector( price( ASSET( "1.000 TESTS" ), ASSET( "10.000 TBD" ) ) ); - STEEM_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); + BOOST_TEST_MESSAGE( "--- failure when setting new sbd_exchange_rate with SBD / SOPHIATX" ); + prop_op.props.erase( "exchange_rates" ); + vector vpt; + vpt.push_back(price( ASSET( "1.000000 SPHTX" ), ASSET( "10.000000 USD" ) )); + prop_op.props[ "exchange_rates" ] = fc::raw::pack_to_vector( vpt ); + SOPHIATX_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); BOOST_TEST_MESSAGE( "--- failure when setting new url with length of zero" ); - prop_op.props.erase( "sbd_exchange_rate" ); + prop_op.props.erase( "url" ); prop_op.props[ "url" ] = fc::raw::pack_to_vector( "" ); - STEEM_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); + SOPHIATX_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); BOOST_TEST_MESSAGE( "--- failure when setting new url with non UTF-8 character" ); prop_op.props[ "url" ].clear(); prop_op.props[ "url" ] = fc::raw::pack_to_vector( "\xE0\x80\x80" ); - STEEM_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); + SOPHIATX_REQUIRE_THROW( prop_op.validate(), fc::assert_exception ); } FC_LOG_AND_RETHROW() @@ -6746,7 +3306,7 @@ BOOST_AUTO_TEST_CASE( witness_set_properties_authorities ) BOOST_TEST_MESSAGE( "Testing: witness_set_properties_authorities" ); witness_set_properties_operation op; - op.owner = "alice"; + op.owner = AN("alice"); op.props[ "key" ] = fc::raw::pack_to_vector( generate_private_key( "key" ).get_public_key() ); flat_set< account_name_type > auths; @@ -6758,9 +3318,6 @@ BOOST_AUTO_TEST_CASE( witness_set_properties_authorities ) op.get_required_active_authorities( auths ); BOOST_REQUIRE( auths == expected ); - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - vector< authority > key_auths; vector< authority > expected_keys; expected_keys.push_back( authority( 1, generate_private_key( "key" ).get_public_key(), 1 ) ); @@ -6777,10 +3334,7 @@ BOOST_AUTO_TEST_CASE( witness_set_properties_authorities ) op.get_required_active_authorities( auths ); BOOST_REQUIRE( auths == expected ); - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - expected_keys.push_back( authority( 1, STEEM_NULL_ACCOUNT, 1 ) ); + expected_keys.push_back( authority( 1, SOPHIATX_NULL_ACCOUNT, 1 ) ); op.get_required_authorities( key_auths ); BOOST_REQUIRE( key_auths == expected_keys ); @@ -6795,19 +3349,20 @@ BOOST_AUTO_TEST_CASE( witness_set_properties_apply ) BOOST_TEST_MESSAGE( "Testing: witness_set_properties_apply" ); ACTORS( (alice) ) - fund( "alice", 10000 ); + fund( AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE + 1000000 ); + vest( AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); private_key_type signing_key = generate_private_key( "old_key" ); witness_update_operation op; - op.owner = "alice"; + op.owner = AN("alice"); op.url = "foo.bar"; - op.fee = ASSET( "1.000 TESTS" ); + op.fee = ASSET( "1.000000 SPHTX" ); op.block_signing_key = signing_key.get_public_key(); - op.props.account_creation_fee = legacy_steem_asset::from_asset( asset(STEEM_MIN_ACCOUNT_CREATION_FEE + 10, STEEM_SYMBOL) ); - op.props.maximum_block_size = STEEM_MIN_BLOCK_SIZE_LIMIT + 100; + op.props.account_creation_fee = asset(SOPHIATX_MIN_ACCOUNT_CREATION_FEE + 10, SOPHIATX_SYMBOL) ; + op.props.maximum_block_size = SOPHIATX_MIN_BLOCK_SIZE_LIMIT + 100; signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); @@ -6815,61 +3370,42 @@ BOOST_AUTO_TEST_CASE( witness_set_properties_apply ) BOOST_TEST_MESSAGE( "--- Test setting runtime parameters" ); // Setting account_creation_fee - const witness_object& alice_witness = db->get_witness( "alice" ); + const witness_object& alice_witness = db->get_witness( AN("alice") ); witness_set_properties_operation prop_op; - prop_op.owner = "alice"; + prop_op.owner = AN("alice"); prop_op.props[ "key" ] = fc::raw::pack_to_vector( signing_key.get_public_key() ); - prop_op.props[ "account_creation_fee" ] = fc::raw::pack_to_vector( ASSET( "2.000 TESTS" ) ); + prop_op.props[ "account_creation_fee" ] = fc::raw::pack_to_vector( ASSET( "2.000000 SPHTX" ) ); tx.clear(); tx.operations.push_back( prop_op ); tx.sign( signing_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - BOOST_REQUIRE( alice_witness.props.account_creation_fee == ASSET( "2.000 TESTS" ) ); + BOOST_REQUIRE( alice_witness.props.account_creation_fee == ASSET( "2.000000 SPHTX" ) ); // Setting maximum_block_size prop_op.props.erase( "account_creation_fee" ); - prop_op.props[ "maximum_block_size" ] = fc::raw::pack_to_vector( STEEM_MIN_BLOCK_SIZE_LIMIT + 1 ); - tx.clear(); - tx.operations.push_back( prop_op ); - tx.sign( signing_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - BOOST_REQUIRE( alice_witness.props.maximum_block_size == STEEM_MIN_BLOCK_SIZE_LIMIT + 1 ); - - // Setting sbd_interest_rate - prop_op.props.erase( "maximim_block_size" ); - prop_op.props[ "sbd_interest_rate" ] = fc::raw::pack_to_vector( 700 ); + prop_op.props[ "maximum_block_size" ] = fc::raw::pack_to_vector( SOPHIATX_MIN_BLOCK_SIZE_LIMIT + 1 ); tx.clear(); tx.operations.push_back( prop_op ); tx.sign( signing_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - BOOST_REQUIRE( alice_witness.props.sbd_interest_rate == 700 ); - - // Setting new signing_key - private_key_type old_signing_key = signing_key; - signing_key = generate_private_key( "new_key" ); - public_key_type alice_pub = signing_key.get_public_key(); - prop_op.props.erase( "sbd_interest_rate" ); - prop_op.props[ "new_signing_key" ] = fc::raw::pack_to_vector( alice_pub ); - tx.clear(); - tx.operations.push_back( prop_op ); - tx.sign( old_signing_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - BOOST_REQUIRE( alice_witness.signing_key == alice_pub ); + BOOST_REQUIRE( alice_witness.props.maximum_block_size == SOPHIATX_MIN_BLOCK_SIZE_LIMIT + 1 ); // Setting new sbd_exchange_rate prop_op.props.erase( "new_signing_key" ); prop_op.props[ "key" ].clear(); prop_op.props[ "key" ] = fc::raw::pack_to_vector( signing_key.get_public_key() ); - prop_op.props[ "sbd_exchange_rate" ] = fc::raw::pack_to_vector( price( ASSET(" 1.000 TBD" ), ASSET( "100.000 TESTS" ) ) ); + vector myfeeds; + myfeeds.push_back(price( ASSET(" 1.000000 USD" ), ASSET( "100.000000 SPHTX" ) )); + prop_op.props[ "exchange_rates" ] = fc::raw::pack_to_vector( myfeeds ); tx.clear(); tx.operations.push_back( prop_op ); tx.sign( signing_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - BOOST_REQUIRE( alice_witness.sbd_exchange_rate == price( ASSET( "1.000 TBD" ), ASSET( "100.000 TESTS" ) ) ); - BOOST_REQUIRE( alice_witness.last_sbd_exchange_update == db->head_block_time() ); + BOOST_REQUIRE( alice_witness.submitted_exchange_rates.at(SBD1_SYMBOL).rate == price( ASSET( "1.000000 USD" ), ASSET( "100.000000 SPHTX" ) ) ); + BOOST_REQUIRE( alice_witness.submitted_exchange_rates.at(SBD1_SYMBOL).last_change == db->head_block_time() ); // Setting new url - prop_op.props.erase( "sbd_exchange_rate" ); + prop_op.props.erase( "exchange_rates" ); prop_op.props[ "url" ] = fc::raw::pack_to_vector( "foo.bar" ); tx.clear(); tx.operations.push_back( prop_op ); @@ -6878,35 +3414,453 @@ BOOST_AUTO_TEST_CASE( witness_set_properties_apply ) BOOST_REQUIRE( alice_witness.url == "foo.bar" ); // Setting new extranious_property - prop_op.props.erase( "sbd_exchange_rate" ); + prop_op.props.erase( "url" ); prop_op.props[ "extraneous_property" ] = fc::raw::pack_to_vector( "foo" ); tx.clear(); tx.operations.push_back( prop_op ); tx.sign( signing_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - BOOST_TEST_MESSAGE( "--- Testing failure when 'key' does not match witness signing key" ); - prop_op.props.erase( "extranious_property" ); - prop_op.props[ "key" ].clear(); - prop_op.props[ "key" ] = fc::raw::pack_to_vector( old_signing_key.get_public_key() ); + validate_database(); + } + FC_LOG_AND_RETHROW() +} + +BOOST_AUTO_TEST_CASE( application_create ) +{ + try + { + BOOST_TEST_MESSAGE( "Testing: application_create_apply" ); + + ACTORS( (alice) ) + fund(AN("alice"), 1000000); + + application_create_operation op; + op.author = AN("alice"); + op.name = "test_app"; + op.fee = ASSET( "0.100000 SPHTX" ); + op.price_param = static_cast(time_based); + op.url = "www.sophiatx.com"; + op.metadata = "Random metadata"; + + BOOST_TEST_MESSAGE( "--- Test normal application creation" ); + + op.validate(); + + signed_transaction tx; + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.operations.push_back( op ); + tx.sign( alice_private_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + + const application_object& app = db->get_application( "test_app" ); + + BOOST_REQUIRE( app.name == "test_app" ); + BOOST_REQUIRE( app.author == AN("alice") ); + BOOST_REQUIRE( app.metadata == "Random metadata" ); + BOOST_REQUIRE( app.url == "www.sophiatx.com" ); + BOOST_REQUIRE( app.price_param == time_based ); + + validate_database(); + + BOOST_TEST_MESSAGE( "--- Test failure of duplicate application creation" ); + BOOST_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::exception ); + + BOOST_TEST_MESSAGE( "--- Test failure of application creation without authorities" ); + op.author = AN("bob"); + op.name = "test_app2"; + tx.operations.push_back( op ); + + BOOST_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::exception ); + } + FC_LOG_AND_RETHROW() +} + +BOOST_AUTO_TEST_CASE( application_update ) +{ + try + { + //Creating test app + ACTORS( (alice)(bob) ) + fund(AN("alice"), 1000000); + + { + application_create_operation op; + op.author = AN("alice"); + op.name = "test_app"; + op.price_param = static_cast(time_based); + op.url = "www.sophiatx.com"; + op.metadata = "Random metadata"; + op.fee = ASSET( "0.100000 SPHTX" ); + op.validate(); + signed_transaction tx; + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(op); + tx.sign(alice_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + } + ///// + + BOOST_TEST_MESSAGE( "--- Test normal application update" ); + application_update_operation op; + op.name = "test_app"; + op.author = AN("alice"); + op.fee = ASSET( "0.100000 SPHTX" ); + op.price_param = static_cast(permanent); + op.new_author = AN("bob"); + op.metadata = "New metadata"; + op.url = "www.sophiatx.com/update"; + op.validate(); + + signed_transaction tx; + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(op); + tx.sign(alice_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + + const application_object& app = db->get_application( "test_app" ); + + BOOST_REQUIRE( app.name == "test_app" ); + BOOST_REQUIRE( app.author == AN("bob") ); + BOOST_REQUIRE( app.metadata == "New metadata" ); + BOOST_REQUIRE( app.url == "www.sophiatx.com/update" ); + BOOST_REQUIRE( app.price_param == permanent ); + + validate_database(); + + BOOST_TEST_MESSAGE( "--- Test failure of updating application without active authority" ); + BOOST_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), fc::exception ); + } + FC_LOG_AND_RETHROW() +} + +BOOST_AUTO_TEST_CASE( application_delete ) +{ + try + { + //Creating test app + ACTORS( (alice) ) + fund(AN("alice"), 1000000); + + { + application_create_operation op; + op.author = AN("alice"); + op.fee = ASSET( "0.100000 SPHTX" ); + op.name = "test_app"; + op.price_param = static_cast(time_based); + op.url = "www.sophiatx.com"; + op.metadata = "Random metadata"; + op.validate(); + signed_transaction tx; + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(op); + tx.sign(alice_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + } + ///// + + BOOST_TEST_MESSAGE( "--- Test normal application delete" ); + application_delete_operation op; + op.fee = ASSET( "0.100000 SPHTX" ); + op.name = "test_app"; + op.author = AN("alice"); + op.validate(); + + signed_transaction tx; + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(op); + tx.sign(alice_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + + BOOST_REQUIRE_THROW( db->get_application( "test_app" ), fc::exception ); + + validate_database(); + + } + FC_LOG_AND_RETHROW() +} + +BOOST_AUTO_TEST_CASE( application_buy ) +{ + try + { + //Creating test app + ACTORS( (alice)(bob) ) + fund(AN("bob"), 1000000); + fund(AN("alice"), 1000000); + + { + application_create_operation op; + op.author = AN("alice"); + op.fee = ASSET( "0.100000 SPHTX" ); + op.name = "test_app"; + op.price_param = static_cast(time_based); + op.url = "www.sophiatx.com"; + op.metadata = "Random metadata"; + op.validate(); + signed_transaction tx; + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(op); + tx.sign(alice_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + } + ///// + + const auto& app = db->get_application( "test_app" ); + + BOOST_TEST_MESSAGE( "--- Test normal application buy" ); + buy_application_operation op; + op.fee = ASSET( "0.100000 SPHTX" ); + op.app_id = app.id._id; + op.buyer = AN("bob"); + op.validate(); + + signed_transaction tx; + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(op); + tx.sign(bob_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + + const auto& app_buy = db->get_application_buying( AN("bob"), app.id._id ); + + BOOST_REQUIRE( app_buy.app_id == app.id ); + BOOST_REQUIRE( app_buy.buyer == AN("bob") ); + validate_database(); + + BOOST_TEST_MESSAGE( "--- Test application rebuying" ); + BOOST_REQUIRE_THROW( db->push_transaction(tx, database::skip_transaction_dupe_check), fc::exception ); + validate_database(); + + BOOST_TEST_MESSAGE( "--- Test application buying with wrong authorities" ); + tx.signatures.clear(); + tx.sign(alice_private_key, db->get_chain_id()); + BOOST_REQUIRE_THROW( db->push_transaction(tx, database::skip_transaction_dupe_check), fc::exception ); + validate_database(); + + + BOOST_TEST_MESSAGE( "--- Test canceling application buy" ); + cancel_application_buying_operation op_cancel; + op_cancel.fee = ASSET( "0.100000 SPHTX" ); + op_cancel.app_id = app.id._id; + op_cancel.buyer = AN("bob"); + op_cancel.app_owner = AN("alice"); + op_cancel.validate(); + tx.clear(); - tx.operations.push_back( prop_op ); - tx.sign( old_signing_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::assert_exception ); + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(op_cancel); + tx.sign(alice_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + + BOOST_REQUIRE_THROW( db->get_application_buying( AN("bob"), app.id._id ), fc::exception ); + + validate_database(); + + } + FC_LOG_AND_RETHROW() +} + +BOOST_AUTO_TEST_CASE( deleting_bought_application ) +{ + try + { + //Creating test app + ACTORS( (alice)(bob) ) + fund(AN("bob"), 1000000); + fund(AN("alice"), 1000000); + + { + application_create_operation op; + op.author = AN("alice"); + op.fee = ASSET( "0.100000 SPHTX" ); + op.name = "test_app"; + op.price_param = static_cast(time_based); + op.url = "www.sophiatx.com"; + op.metadata = "Random metadata"; + op.validate(); + signed_transaction tx; + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(op); + tx.sign(alice_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + } + ///// + + const auto& app = db->get_application( "test_app" ); + + BOOST_TEST_MESSAGE( "--- Test normal application buy" ); + buy_application_operation op; + op.fee = ASSET( "0.100000 SPHTX" ); + op.app_id = app.id._id; + op.buyer = AN("bob"); + op.validate(); + + signed_transaction tx; + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(op); + tx.sign(bob_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + + const auto& app_buy = db->get_application_buying( AN("bob"), app.id._id ); + + BOOST_REQUIRE( app_buy.app_id == app.id ); + BOOST_REQUIRE( app_buy.buyer == AN("bob") ); + validate_database(); + + BOOST_TEST_MESSAGE( "--- Test normal application delete" ); + application_delete_operation op_d; + op_d.fee = ASSET( "0.100000 SPHTX" ); + op_d.name = "test_app"; + op_d.author = AN("alice"); + op_d.validate(); - BOOST_TEST_MESSAGE( "--- Testing setting account subsidy limit" ); - prop_op.props[ "key" ].clear(); - prop_op.props[ "key" ] = fc::raw::pack_to_vector( signing_key.get_public_key() ); - prop_op.props[ "account_subsidy_limit" ] = fc::raw::pack_to_vector( 1000 ); tx.clear(); - tx.operations.push_back( prop_op ); - tx.sign( signing_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - BOOST_REQUIRE( alice_witness.props.account_subsidy_limit == 1000 ); + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(op_d); + tx.sign(alice_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + + BOOST_REQUIRE_THROW( db->get_application( "test_app" ), fc::exception ); + + BOOST_TEST_MESSAGE( "--- Test application buy object deleting" ); + BOOST_REQUIRE_THROW( db->get_application_buying( AN("bob"), app.id._id ), fc::exception ); validate_database(); + + } + FC_LOG_AND_RETHROW() +} + +BOOST_AUTO_TEST_CASE( withdraw_from_promotion_pool ) +{ + try{ + BOOST_TEST_MESSAGE("Testing: withdraw_from_promotion_pool"); + + ACTORS( (alice)(bob) ); + + generate_block(); + generate_block(); + const auto& new_alice = db->get_account( AN("alice") ); + + + transfer_from_promotion_pool_operation op; + op.transfer_to = AN("bob"); + op.amount = asset(10000000, SOPHIATX_SYMBOL); + + signed_transaction tx; + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.operations.push_back( op ); + tx.sign( init_account_priv_key, db->get_chain_id() ); + + db->push_transaction( tx, 0 ); + + BOOST_REQUIRE( db->get_economic_model().get_available_promotion_pool(db->head_block_num()) == ASSET( "0.000000 SPHTX" ).amount.value); + + generate_block(); + + op.amount = asset(1000000, SOPHIATX_SYMBOL); + op.transfer_to = AN("alice"); + tx.clear(); + tx.operations.push_back( op ); + tx.sign( init_account_priv_key, db->get_chain_id() ); + db->push_transaction( tx, 0 ); + + BOOST_REQUIRE( new_alice.balance.amount == ASSET( "0.057077 SPHTX" ).amount || new_alice.balance.amount == ASSET( "0.057078 SPHTX" ).amount ); + + private_key_type priv_key = generate_private_key( "alice" ); + + tx.clear(); + tx.operations.push_back( op ); + tx.sign( priv_key, db->get_chain_id() ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + + } + FC_LOG_AND_RETHROW() +} + +BOOST_AUTO_TEST_CASE( sponsor_fees ) +{ + try{ + BOOST_TEST_MESSAGE("Testing: sponsor_fees"); + ACTORS((alice)(bob)(cecil)); + fund(AN("alice"), 100000000); + fund(AN("bob"), 1000000); + + generate_block(); + sponsor_fees_operation sponsor_op; + sponsor_op.sponsor = AN("alice"); + sponsor_op.sponsored = AN("bob"); + sponsor_op.is_sponsoring = true; + + signed_transaction tx; + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(sponsor_op); + tx.sign(alice_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + + generate_block(); + + transfer_operation t_op; + t_op.from = AN("bob"); + t_op.to = AN("cecil"); + t_op.amount = ASSET("0.500000 SPHTX"); + t_op.fee = ASSET("0.100000 SPHTX"); + tx.clear(); + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(t_op); + tx.sign(bob_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + + generate_block(); + + const auto& new_alice = db->get_account( AN("alice") ); + const auto& new_bob = db->get_account( AN("bob") ); + const auto& new_cecil = db->get_account( AN("cecil") ); + + BOOST_REQUIRE( new_alice.balance.amount.value == ASSET( "99.900000 SPHTX" ).amount.value && new_bob.balance.amount.value == ASSET( "0.500000 SPHTX" ).amount.value && new_cecil.balance.amount.value == ASSET( "0.500000 SPHTX" ).amount.value); + + sponsor_op.is_sponsoring = false; + tx.clear(); + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(sponsor_op); + tx.sign(alice_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + + generate_block(); + + tx.clear(); + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(t_op); + tx.sign(bob_private_key, db->get_chain_id()); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + + sponsor_op.is_sponsoring = true; + tx.clear(); + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(sponsor_op); + tx.sign(alice_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + + generate_block(); + sponsor_op.sponsor = ""; + sponsor_op.is_sponsoring = false; + tx.clear(); + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(sponsor_op); + tx.sign(bob_private_key, db->get_chain_id()); + db->push_transaction(tx, 0); + generate_block(); + + tx.clear(); + tx.set_expiration(db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION); + tx.operations.push_back(t_op); + tx.sign(bob_private_key, db->get_chain_id()); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); + } FC_LOG_AND_RETHROW() } + + BOOST_AUTO_TEST_SUITE_END() -#endif +//#endif diff --git a/tests/tests/operation_time_tests.cpp b/tests/tests/operation_time_tests.cpp index 75a684f3..32f98842 100644 --- a/tests/tests/operation_time_tests.cpp +++ b/tests/tests/operation_time_tests.cpp @@ -1,2853 +1,365 @@ -#ifdef IS_TEST_NET #include -#include -#include +#include +#include -#include -#include -#include -#include +#include +#include +#include +#include -#include -#include +#include +#include #include #include "../db_fixture/database_fixture.hpp" #include -using namespace steem; -using namespace steem::chain; -using namespace steem::protocol; +using namespace sophiatx; +using namespace sophiatx::chain; +using namespace sophiatx::protocol; +#define DUMP( x ) {fc::variant vo; fc::to_variant( x , vo); std::cout<< fc::json::to_string(vo) <<"\n";} BOOST_FIXTURE_TEST_SUITE( operation_time_tests, clean_database_fixture ) -BOOST_AUTO_TEST_CASE( comment_payout_equalize ) -{ - try - { - ACTORS( (alice)(bob)(dave) - (ulysses)(vivian)(wendy) ) - - struct author_actor - { - author_actor( - const std::string& n, - fc::ecc::private_key pk, - fc::optional mpay = fc::optional() ) - : name(n), private_key(pk), max_accepted_payout(mpay) {} - std::string name; - fc::ecc::private_key private_key; - fc::optional< asset > max_accepted_payout; - }; - - struct voter_actor - { - voter_actor( const std::string& n, fc::ecc::private_key pk, std::string fa ) - : name(n), private_key(pk), favorite_author(fa) {} - std::string name; - fc::ecc::private_key private_key; - std::string favorite_author; - }; - - - std::vector< author_actor > authors; - std::vector< voter_actor > voters; - - authors.emplace_back( "alice", alice_private_key ); - authors.emplace_back( "bob" , bob_private_key, ASSET( "0.000 TBD" ) ); - authors.emplace_back( "dave" , dave_private_key ); - voters.emplace_back( "ulysses", ulysses_private_key, "alice"); - voters.emplace_back( "vivian" , vivian_private_key , "bob" ); - voters.emplace_back( "wendy" , wendy_private_key , "dave" ); - - // A,B,D : posters - // U,V,W : voters - - // set a ridiculously high STEEM price ($1 / satoshi) to disable dust threshold - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "0.001 TESTS" ) ) ); - - for( const auto& voter : voters ) - { - fund( voter.name, 10000 ); - vest( voter.name, 10000 ); - } - - // authors all write in the same block, but Bob declines payout - for( const auto& author : authors ) - { - signed_transaction tx; - comment_operation com; - com.author = author.name; - com.permlink = "mypost"; - com.parent_author = STEEM_ROOT_POST_PARENT; - com.parent_permlink = "test"; - com.title = "Hello from "+author.name; - com.body = "Hello, my name is "+author.name; - tx.operations.push_back( com ); - - if( author.max_accepted_payout.valid() ) - { - comment_options_operation copt; - copt.author = com.author; - copt.permlink = com.permlink; - copt.max_accepted_payout = *(author.max_accepted_payout); - tx.operations.push_back( copt ); - } - - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( author.private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - } - - generate_blocks(1); - - // voters all vote in the same block with the same stake - for( const auto& voter : voters ) - { - signed_transaction tx; - vote_operation vote; - vote.voter = voter.name; - vote.author = voter.favorite_author; - vote.permlink = "mypost"; - vote.weight = STEEM_100_PERCENT; - tx.operations.push_back( vote ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( voter.private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - } - - //auto reward_steem = db->get_dynamic_global_properties().total_reward_fund_steem; - - // generate a few blocks to seed the reward fund - generate_blocks(10); - //const auto& rf = db->get< reward_fund_object, by_name >( STEEM_POST_REWARD_FUND_NAME ); - //idump( (rf) ); - - generate_blocks( db->get_comment( "alice", string( "mypost" ) ).cashout_time, true ); - /* - for( const auto& author : authors ) - { - const account_object& a = db->get_account(author.name); - ilog( "${n} : ${steem} ${sbd}", ("n", author.name)("steem", a.reward_steem_balance)("sbd", a.reward_sbd_balance) ); - } - for( const auto& voter : voters ) - { - const account_object& a = db->get_account(voter.name); - ilog( "${n} : ${steem} ${sbd}", ("n", voter.name)("steem", a.reward_steem_balance)("sbd", a.reward_sbd_balance) ); - } - */ - - const account_object& alice_account = db->get_account("alice"); - const account_object& bob_account = db->get_account("bob"); - const account_object& dave_account = db->get_account("dave"); - - BOOST_CHECK( alice_account.reward_sbd_balance == ASSET( "14288.000 TBD" ) ); - BOOST_CHECK( bob_account.reward_sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_CHECK( dave_account.reward_sbd_balance == alice_account.reward_sbd_balance ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( comment_payout_dust ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: comment_payout_dust" ); - - ACTORS( (alice)(bob) ) - generate_block(); - - vest( "alice", ASSET( "10.000 TESTS" ) ); - vest( "bob", ASSET( "10.000 TESTS" ) ); - - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); - - generate_block(); - validate_database(); - - comment_operation comment; - comment.author = "alice"; - comment.permlink = "test"; - comment.parent_permlink = "test"; - comment.title = "test"; - comment.body = "test"; - vote_operation vote; - vote.voter = "alice"; - vote.author = "alice"; - vote.permlink = "test"; - vote.weight = 81 * STEEM_1_PERCENT; - - signed_transaction tx; - tx.operations.push_back( comment ); - tx.operations.push_back( vote ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - validate_database(); - - comment.author = "bob"; - vote.voter = "bob"; - vote.author = "bob"; - vote.weight = 59 * STEEM_1_PERCENT; - - tx.clear(); - tx.operations.push_back( comment ); - tx.operations.push_back( vote ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - validate_database(); - - generate_blocks( db->get_comment( "alice", string( "test" ) ).cashout_time ); - - // If comments are paid out independent of order, then the last satoshi of STEEM cannot be divided among them - const auto rf = db->get< reward_fund_object, by_name >( STEEM_POST_REWARD_FUND_NAME ); - BOOST_REQUIRE( rf.reward_balance == ASSET( "0.001 TESTS" ) ); - - validate_database(); - - BOOST_TEST_MESSAGE( "Done" ); - } - FC_LOG_AND_RETHROW() -} - -/* -BOOST_AUTO_TEST_CASE( reward_funds ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: reward_funds" ); - - ACTORS( (alice)(bob) ) - generate_block(); - - set_price_feed( price( ASSET( "1.000 TESTS" ), ASSET( "1.000 TBD" ) ) ); - generate_block(); - - comment_operation comment; - vote_operation vote; - signed_transaction tx; - - comment.author = "alice"; - comment.permlink = "test"; - comment.parent_permlink = "test"; - comment.title = "foo"; - comment.body = "bar"; - vote.voter = "alice"; - vote.author = "alice"; - vote.permlink = "test"; - vote.weight = STEEM_100_PERCENT; - tx.operations.push_back( comment ); - tx.operations.push_back( vote ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( 5 ); - - comment.author = "bob"; - comment.parent_author = "alice"; - vote.voter = "bob"; - vote.author = "bob"; - tx.clear(); - tx.operations.push_back( comment ); - tx.operations.push_back( vote ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->get_comment( "alice", string( "test" ) ).cashout_time ); - - { - const auto& post_rf = db->get< reward_fund_object, by_name >( STEEM_POST_REWARD_FUND_NAME ); - const auto& comment_rf = db->get< reward_fund_object, by_name >( STEEM_COMMENT_REWARD_FUND_NAME ); - - BOOST_REQUIRE( post_rf.reward_balance.amount == 0 ); - BOOST_REQUIRE( comment_rf.reward_balance.amount > 0 ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_sbd_balance.amount > 0 ); - BOOST_REQUIRE( db->get_account( "bob" ).reward_sbd_balance.amount == 0 ); - validate_database(); - } - - generate_blocks( db->get_comment( "bob", string( "test" ) ).cashout_time ); - - { - const auto& post_rf = db->get< reward_fund_object, by_name >( STEEM_POST_REWARD_FUND_NAME ); - const auto& comment_rf = db->get< reward_fund_object, by_name >( STEEM_COMMENT_REWARD_FUND_NAME ); - - BOOST_REQUIRE( post_rf.reward_balance.amount > 0 ); - BOOST_REQUIRE( comment_rf.reward_balance.amount == 0 ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_sbd_balance.amount > 0 ); - BOOST_REQUIRE( db->get_account( "bob" ).reward_sbd_balance.amount > 0 ); - validate_database(); - } - } - FC_LOG_AND_RETHROW() -} -*/ - -BOOST_AUTO_TEST_CASE( recent_claims_decay ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: recent_rshares_2decay" ); - ACTORS( (alice)(bob) ) - generate_block(); - - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); - generate_block(); - - comment_operation comment; - vote_operation vote; - signed_transaction tx; - - comment.author = "alice"; - comment.permlink = "test"; - comment.parent_permlink = "test"; - comment.title = "foo"; - comment.body = "bar"; - vote.voter = "alice"; - vote.author = "alice"; - vote.permlink = "test"; - vote.weight = STEEM_100_PERCENT; - tx.operations.push_back( comment ); - tx.operations.push_back( vote ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - auto alice_vshares = util::evaluate_reward_curve( db->get_comment( "alice", string( "test" ) ).net_rshares.value, - db->get< reward_fund_object, by_name >( STEEM_POST_REWARD_FUND_NAME ).author_reward_curve, - db->get< reward_fund_object, by_name >( STEEM_POST_REWARD_FUND_NAME ).content_constant ); - - generate_blocks( 5 ); - - comment.author = "bob"; - vote.voter = "bob"; - vote.author = "bob"; - tx.clear(); - tx.operations.push_back( comment ); - tx.operations.push_back( vote ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->get_comment( "alice", string( "test" ) ).cashout_time ); - - { - const auto& post_rf = db->get< reward_fund_object, by_name >( STEEM_POST_REWARD_FUND_NAME ); - - BOOST_REQUIRE( post_rf.recent_claims == alice_vshares ); - validate_database(); - } - - auto bob_cashout_time = db->get_comment( "bob", string( "test" ) ).cashout_time; - auto bob_vshares = util::evaluate_reward_curve( db->get_comment( "bob", string( "test" ) ).net_rshares.value, - db->get< reward_fund_object, by_name >( STEEM_POST_REWARD_FUND_NAME ).author_reward_curve, - db->get< reward_fund_object, by_name >( STEEM_POST_REWARD_FUND_NAME ).content_constant ); - - generate_block(); - - while( db->head_block_time() < bob_cashout_time ) - { - alice_vshares -= ( alice_vshares * STEEM_BLOCK_INTERVAL ) / STEEM_RECENT_RSHARES_DECAY_TIME_HF19.to_seconds(); - const auto& post_rf = db->get< reward_fund_object, by_name >( STEEM_POST_REWARD_FUND_NAME ); - - BOOST_REQUIRE( post_rf.recent_claims == alice_vshares ); - - generate_block(); - - } - - { - alice_vshares -= ( alice_vshares * STEEM_BLOCK_INTERVAL ) / STEEM_RECENT_RSHARES_DECAY_TIME_HF19.to_seconds(); - const auto& post_rf = db->get< reward_fund_object, by_name >( STEEM_POST_REWARD_FUND_NAME ); - - BOOST_REQUIRE( post_rf.recent_claims == alice_vshares + bob_vshares ); - validate_database(); - } - } - FC_LOG_AND_RETHROW() -} - -/*BOOST_AUTO_TEST_CASE( comment_payout ) -{ - try - { - ACTORS( (alice)(bob)(sam)(dave) ) - fund( "alice", 10000 ); - vest( "alice", 10000 ); - fund( "bob", 7500 ); - vest( "bob", 7500 ); - fund( "sam", 8000 ); - vest( "sam", 8000 ); - fund( "dave", 5000 ); - vest( "dave", 5000 ); - - price exchange_rate( ASSET( "1.000 TESTS" ), ASSET( "1.000 TBD" ) ); - set_price_feed( exchange_rate ); - - signed_transaction tx; - - BOOST_TEST_MESSAGE( "Creating comments." ); - - comment_operation com; - com.author = "alice"; - com.permlink = "test"; - com.parent_author = ""; - com.parent_permlink = "test"; - com.title = "foo"; - com.body = "bar"; - tx.operations.push_back( com ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - - com.author = "bob"; - tx.operations.push_back( com ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - - BOOST_TEST_MESSAGE( "Voting for comments." ); - - vote_operation vote; - vote.voter = "alice"; - vote.author = "alice"; - vote.permlink = "test"; - vote.weight = STEEM_100_PERCENT; - tx.operations.push_back( vote ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - - vote.voter = "sam"; - vote.author = "alice"; - tx.operations.push_back( vote ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - - vote.voter = "bob"; - vote.author = "bob"; - tx.operations.push_back( vote ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - - vote.voter = "dave"; - vote.author = "bob"; - tx.operations.push_back( vote ); - tx.sign( dave_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "Generate blocks up until first payout" ); - - //generate_blocks( db->get_comment( "bob", string( "test" ) ).cashout_time - STEEM_BLOCK_INTERVAL, true ); - - auto reward_steem = db->get_dynamic_global_properties().total_reward_fund_steem + ASSET( "1.667 TESTS" ); - auto total_rshares2 = db->get_dynamic_global_properties().total_reward_shares2; - auto bob_comment_rshares = db->get_comment( "bob", string( "test" ) ).net_rshares; - auto bob_vest_shares = db->get_account( "bob" ).vesting_shares; - auto bob_sbd_balance = db->get_account( "bob" ).sbd_balance; - - auto bob_comment_payout = asset( ( ( uint128_t( bob_comment_rshares.value ) * bob_comment_rshares.value * reward_steem.amount.value ) / total_rshares2 ).to_uint64(), STEEM_SYMBOL ); - auto bob_comment_discussion_rewards = asset( bob_comment_payout.amount / 4, STEEM_SYMBOL ); - bob_comment_payout -= bob_comment_discussion_rewards; - auto bob_comment_sbd_reward = db->to_sbd( asset( bob_comment_payout.amount / 2, STEEM_SYMBOL ) ); - auto bob_comment_vesting_reward = ( bob_comment_payout - asset( bob_comment_payout.amount / 2, STEEM_SYMBOL) ) * db->get_dynamic_global_properties().get_vesting_share_price(); - - BOOST_TEST_MESSAGE( "Cause first payout" ); - - generate_block(); - - BOOST_REQUIRE( db->get_dynamic_global_properties().total_reward_fund_steem == reward_steem - bob_comment_payout ); - BOOST_REQUIRE( db->get_comment( "bob", string( "test" ) ).total_payout_value == bob_comment_vesting_reward * db->get_dynamic_global_properties().get_vesting_share_price() + bob_comment_sbd_reward * exchange_rate ); - BOOST_REQUIRE( db->get_account( "bob" ).vesting_shares == bob_vest_shares + bob_comment_vesting_reward ); - BOOST_REQUIRE( db->get_account( "bob" ).sbd_balance == bob_sbd_balance + bob_comment_sbd_reward ); - - BOOST_TEST_MESSAGE( "Testing no payout when less than $0.02" ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "alice"; - vote.author = "alice"; - tx.operations.push_back( vote ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "dave"; - vote.author = "bob"; - vote.weight = STEEM_1_PERCENT; - tx.operations.push_back( vote ); - tx.sign( dave_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->get_comment( "bob", string( "test" ) ).cashout_time - STEEM_BLOCK_INTERVAL, true ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "bob"; - vote.author = "alice"; - vote.weight = STEEM_100_PERCENT; - tx.operations.push_back( vote ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "sam"; - tx.operations.push_back( vote ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "dave"; - tx.operations.push_back( vote ); - tx.sign( dave_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - bob_vest_shares = db->get_account( "bob" ).vesting_shares; - bob_sbd_balance = db->get_account( "bob" ).sbd_balance; - - validate_database(); - - generate_block(); - - BOOST_REQUIRE( bob_vest_shares.amount.value == db->get_account( "bob" ).vesting_shares.amount.value ); - BOOST_REQUIRE( bob_sbd_balance.amount.value == db->get_account( "bob" ).sbd_balance.amount.value ); - validate_database(); - } - FC_LOG_AND_RETHROW() -}*/ - -/* -BOOST_AUTO_TEST_CASE( comment_payout ) -{ - try - { - ACTORS( (alice)(bob)(sam)(dave) ) - fund( "alice", 10000 ); - vest( "alice", 10000 ); - fund( "bob", 7500 ); - vest( "bob", 7500 ); - fund( "sam", 8000 ); - vest( "sam", 8000 ); - fund( "dave", 5000 ); - vest( "dave", 5000 ); - - price exchange_rate( ASSET( "1.000 TESTS" ), ASSET( "1.000 TBD" ) ); - set_price_feed( exchange_rate ); - - auto gpo = db->get_dynamic_global_properties(); - - signed_transaction tx; - - BOOST_TEST_MESSAGE( "Creating comments. " ); - - comment_operation com; - com.author = "alice"; - com.permlink = "test"; - com.parent_permlink = "test"; - com.title = "foo"; - com.body = "bar"; - tx.operations.push_back( com ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - com.author = "bob"; - tx.operations.push_back( com ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "First round of votes." ); - - tx.operations.clear(); - tx.signatures.clear(); - vote_operation vote; - vote.voter = "alice"; - vote.author = "alice"; - vote.permlink = "test"; - vote.weight = STEEM_100_PERCENT; - tx.operations.push_back( vote ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "dave"; - tx.operations.push_back( vote ); - tx.sign( dave_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "bob"; - vote.author = "bob"; - tx.operations.push_back( vote ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "sam"; - tx.operations.push_back( vote ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "Generating blocks..." ); - - generate_blocks( fc::time_point_sec( db->head_block_time().sec_since_epoch() + STEEM_CASHOUT_WINDOW_SECONDS / 2 ), true ); - - BOOST_TEST_MESSAGE( "Second round of votes." ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "alice"; - vote.author = "bob"; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( vote ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "bob"; - vote.author = "alice"; - tx.operations.push_back( vote ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "sam"; - tx.operations.push_back( vote ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "Generating more blocks..." ); - - generate_blocks( db->get_comment( "bob", string( "test" ) ).cashout_time - ( STEEM_BLOCK_INTERVAL / 2 ), true ); - - BOOST_TEST_MESSAGE( "Check comments have not been paid out." ); - - const auto& vote_idx = db->get_index< comment_vote_index >().indices().get< by_comment_voter >(); - - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "alice" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "bob" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "sam" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "dave" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "alice" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "bob" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "sam" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).net_rshares.value > 0 ); - BOOST_REQUIRE( db->get_comment( "bob", string( "test" ) ).net_rshares.value > 0 ); - validate_database(); - - auto reward_steem = db->get_dynamic_global_properties().total_reward_fund_steem + ASSET( "2.000 TESTS" ); - auto total_rshares2 = db->get_dynamic_global_properties().total_reward_shares2; - auto bob_comment_vote_total = db->get_comment( "bob", string( "test" ) ).total_vote_weight; - auto bob_comment_rshares = db->get_comment( "bob", string( "test" ) ).net_rshares; - auto bob_sbd_balance = db->get_account( "bob" ).sbd_balance; - auto alice_vest_shares = db->get_account( "alice" ).vesting_shares; - auto bob_vest_shares = db->get_account( "bob" ).vesting_shares; - auto sam_vest_shares = db->get_account( "sam" ).vesting_shares; - auto dave_vest_shares = db->get_account( "dave" ).vesting_shares; - - auto bob_comment_payout = asset( ( ( uint128_t( bob_comment_rshares.value ) * bob_comment_rshares.value * reward_steem.amount.value ) / total_rshares2 ).to_uint64(), STEEM_SYMBOL ); - auto bob_comment_vote_rewards = asset( bob_comment_payout.amount / 2, STEEM_SYMBOL ); - bob_comment_payout -= bob_comment_vote_rewards; - auto bob_comment_sbd_reward = asset( bob_comment_payout.amount / 2, STEEM_SYMBOL ) * exchange_rate; - auto bob_comment_vesting_reward = ( bob_comment_payout - asset( bob_comment_payout.amount / 2, STEEM_SYMBOL ) ) * db->get_dynamic_global_properties().get_vesting_share_price(); - auto unclaimed_payments = bob_comment_vote_rewards; - auto alice_vote_reward = asset( static_cast< uint64_t >( ( u256( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "alice" ) ).id ) )->weight ) * bob_comment_vote_rewards.amount.value ) / bob_comment_vote_total ), STEEM_SYMBOL ); - auto alice_vote_vesting = alice_vote_reward * db->get_dynamic_global_properties().get_vesting_share_price(); - auto bob_vote_reward = asset( static_cast< uint64_t >( ( u256( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "bob" ) ).id ) )->weight ) * bob_comment_vote_rewards.amount.value ) / bob_comment_vote_total ), STEEM_SYMBOL ); - auto bob_vote_vesting = bob_vote_reward * db->get_dynamic_global_properties().get_vesting_share_price(); - auto sam_vote_reward = asset( static_cast< uint64_t >( ( u256( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "sam" ) ).id ) )->weight ) * bob_comment_vote_rewards.amount.value ) / bob_comment_vote_total ), STEEM_SYMBOL ); - auto sam_vote_vesting = sam_vote_reward * db->get_dynamic_global_properties().get_vesting_share_price(); - unclaimed_payments -= ( alice_vote_reward + bob_vote_reward + sam_vote_reward ); - - BOOST_TEST_MESSAGE( "Generate one block to cause a payout" ); - - generate_block(); - - auto bob_comment_reward = get_last_operations( 1 )[0].get< comment_reward_operation >(); - - BOOST_REQUIRE( db->get_dynamic_global_properties().total_reward_fund_steem.amount.value == reward_steem.amount.value - ( bob_comment_payout + bob_comment_vote_rewards - unclaimed_payments ).amount.value ); - BOOST_REQUIRE( db->get_comment( "bob", string( "test" ) ).total_payout_value.amount.value == ( ( bob_comment_vesting_reward * db->get_dynamic_global_properties().get_vesting_share_price() ) + ( bob_comment_sbd_reward * exchange_rate ) ).amount.value ); - BOOST_REQUIRE( db->get_account( "bob" ).sbd_balance.amount.value == ( bob_sbd_balance + bob_comment_sbd_reward ).amount.value ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).net_rshares.value > 0 ); - BOOST_REQUIRE( db->get_comment( "bob", string( "test" ) ).net_rshares.value == 0 ); - BOOST_REQUIRE( db->get_account( "alice" ).vesting_shares.amount.value == ( alice_vest_shares + alice_vote_vesting ).amount.value ); - BOOST_REQUIRE( db->get_account( "bob" ).vesting_shares.amount.value == ( bob_vest_shares + bob_vote_vesting + bob_comment_vesting_reward ).amount.value ); - BOOST_REQUIRE( db->get_account( "sam" ).vesting_shares.amount.value == ( sam_vest_shares + sam_vote_vesting ).amount.value ); - BOOST_REQUIRE( db->get_account( "dave" ).vesting_shares.amount.value == dave_vest_shares.amount.value ); - BOOST_REQUIRE( bob_comment_reward.author == "bob" ); - BOOST_REQUIRE( bob_comment_reward.permlink == "test" ); - BOOST_REQUIRE( bob_comment_reward.payout.amount.value == bob_comment_sbd_reward.amount.value ); - BOOST_REQUIRE( bob_comment_reward.vesting_payout.amount.value == bob_comment_vesting_reward.amount.value ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "alice" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "bob" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "sam" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "dave" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "alice" ) ).id ) ) == vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "bob" ) ).id ) ) == vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "sam" ) ).id ) ) == vote_idx.end() ); - validate_database(); - - BOOST_TEST_MESSAGE( "Generating blocks up to next comment payout" ); - - generate_blocks( db->get_comment( "alice", string( "test" ) ).cashout_time - ( STEEM_BLOCK_INTERVAL / 2 ), true ); - - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "alice" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "bob" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "sam" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "dave" ) ).id ) ) != vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "alice" ) ).id ) ) == vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "bob" ) ).id ) ) == vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "sam" ) ).id ) ) == vote_idx.end() ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).net_rshares.value > 0 ); - BOOST_REQUIRE( db->get_comment( "bob", string( "test" ) ).net_rshares.value == 0 ); - validate_database(); - - BOOST_TEST_MESSAGE( "Generate block to cause payout" ); - - reward_steem = db->get_dynamic_global_properties().total_reward_fund_steem + ASSET( "2.000 TESTS" ); - total_rshares2 = db->get_dynamic_global_properties().total_reward_shares2; - auto alice_comment_vote_total = db->get_comment( "alice", string( "test" ) ).total_vote_weight; - auto alice_comment_rshares = db->get_comment( "alice", string( "test" ) ).net_rshares; - auto alice_sbd_balance = db->get_account( "alice" ).sbd_balance; - alice_vest_shares = db->get_account( "alice" ).vesting_shares; - bob_vest_shares = db->get_account( "bob" ).vesting_shares; - sam_vest_shares = db->get_account( "sam" ).vesting_shares; - dave_vest_shares = db->get_account( "dave" ).vesting_shares; - - u256 rs( alice_comment_rshares.value ); - u256 rf( reward_steem.amount.value ); - u256 trs2 = total_rshares2.hi; - trs2 = ( trs2 << 64 ) + total_rshares2.lo; - auto rs2 = rs*rs; - - auto alice_comment_payout = asset( static_cast< uint64_t >( ( rf * rs2 ) / trs2 ), STEEM_SYMBOL ); - auto alice_comment_vote_rewards = asset( alice_comment_payout.amount / 2, STEEM_SYMBOL ); - alice_comment_payout -= alice_comment_vote_rewards; - auto alice_comment_sbd_reward = asset( alice_comment_payout.amount / 2, STEEM_SYMBOL ) * exchange_rate; - auto alice_comment_vesting_reward = ( alice_comment_payout - asset( alice_comment_payout.amount / 2, STEEM_SYMBOL ) ) * db->get_dynamic_global_properties().get_vesting_share_price(); - unclaimed_payments = alice_comment_vote_rewards; - alice_vote_reward = asset( static_cast< uint64_t >( ( u256( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "alice" ) ).id ) )->weight ) * alice_comment_vote_rewards.amount.value ) / alice_comment_vote_total ), STEEM_SYMBOL ); - alice_vote_vesting = alice_vote_reward * db->get_dynamic_global_properties().get_vesting_share_price(); - bob_vote_reward = asset( static_cast< uint64_t >( ( u256( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "bob" ) ).id ) )->weight ) * alice_comment_vote_rewards.amount.value ) / alice_comment_vote_total ), STEEM_SYMBOL ); - bob_vote_vesting = bob_vote_reward * db->get_dynamic_global_properties().get_vesting_share_price(); - sam_vote_reward = asset( static_cast< uint64_t >( ( u256( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "sam" ) ).id ) )->weight ) * alice_comment_vote_rewards.amount.value ) / alice_comment_vote_total ), STEEM_SYMBOL ); - sam_vote_vesting = sam_vote_reward * db->get_dynamic_global_properties().get_vesting_share_price(); - auto dave_vote_reward = asset( static_cast< uint64_t >( ( u256( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "dave" ) ).id ) )->weight ) * alice_comment_vote_rewards.amount.value ) / alice_comment_vote_total ), STEEM_SYMBOL ); - auto dave_vote_vesting = dave_vote_reward * db->get_dynamic_global_properties().get_vesting_share_price(); - unclaimed_payments -= ( alice_vote_reward + bob_vote_reward + sam_vote_reward + dave_vote_reward ); - - generate_block(); - auto alice_comment_reward = get_last_operations( 1 )[0].get< comment_reward_operation >(); - - BOOST_REQUIRE( ( db->get_dynamic_global_properties().total_reward_fund_steem + alice_comment_payout + alice_comment_vote_rewards - unclaimed_payments ).amount.value == reward_steem.amount.value ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).total_payout_value.amount.value == ( ( alice_comment_vesting_reward * db->get_dynamic_global_properties().get_vesting_share_price() ) + ( alice_comment_sbd_reward * exchange_rate ) ).amount.value ); - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance.amount.value == ( alice_sbd_balance + alice_comment_sbd_reward ).amount.value ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).net_rshares.value == 0 ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).net_rshares.value == 0 ); - BOOST_REQUIRE( db->get_account( "alice" ).vesting_shares.amount.value == ( alice_vest_shares + alice_vote_vesting + alice_comment_vesting_reward ).amount.value ); - BOOST_REQUIRE( db->get_account( "bob" ).vesting_shares.amount.value == ( bob_vest_shares + bob_vote_vesting ).amount.value ); - BOOST_REQUIRE( db->get_account( "sam" ).vesting_shares.amount.value == ( sam_vest_shares + sam_vote_vesting ).amount.value ); - BOOST_REQUIRE( db->get_account( "dave" ).vesting_shares.amount.value == ( dave_vest_shares + dave_vote_vesting ).amount.value ); - BOOST_REQUIRE( alice_comment_reward.author == "alice" ); - BOOST_REQUIRE( alice_comment_reward.permlink == "test" ); - BOOST_REQUIRE( alice_comment_reward.payout.amount.value == alice_comment_sbd_reward.amount.value ); - BOOST_REQUIRE( alice_comment_reward.vesting_payout.amount.value == alice_comment_vesting_reward.amount.value ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "alice" ) ).id ) ) == vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "bob" ) ).id ) ) == vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "sam" ) ).id ) ) == vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "dave" ) ).id ) ) == vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "alice" ) ).id ) ) == vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "bob" ) ).id ) ) == vote_idx.end() ); - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "sam" ) ).id ) ) == vote_idx.end() ); - validate_database(); - - BOOST_TEST_MESSAGE( "Testing no payout when less than $0.02" ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "alice"; - vote.author = "alice"; - tx.operations.push_back( vote ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "dave"; - vote.author = "bob"; - vote.weight = STEEM_1_PERCENT; - tx.operations.push_back( vote ); - tx.sign( dave_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->get_comment( "bob", string( "test" ) ).cashout_time - STEEM_BLOCK_INTERVAL, true ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "bob"; - vote.author = "alice"; - vote.weight = STEEM_100_PERCENT; - tx.operations.push_back( vote ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "sam"; - tx.operations.push_back( vote ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - vote.voter = "dave"; - tx.operations.push_back( vote ); - tx.sign( dave_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - bob_vest_shares = db->get_account( "bob" ).vesting_shares; - auto bob_sbd = db->get_account( "bob" ).sbd_balance; - - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "dave" ) ).id ) ) != vote_idx.end() ); - validate_database(); - - generate_block(); - - BOOST_REQUIRE( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "dave" ) ).id ) ) == vote_idx.end() ); - BOOST_REQUIRE( bob_vest_shares.amount.value == db->get_account( "bob" ).vesting_shares.amount.value ); - BOOST_REQUIRE( bob_sbd.amount.value == db->get_account( "bob" ).sbd_balance.amount.value ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( nested_comments ) -{ - try - { - ACTORS( (alice)(bob)(sam)(dave) ) - fund( "alice", 10000 ); - vest( "alice", 10000 ); - fund( "bob", 10000 ); - vest( "bob", 10000 ); - fund( "sam", 10000 ); - vest( "sam", 10000 ); - fund( "dave", 10000 ); - vest( "dave", 10000 ); - - price exchange_rate( ASSET( "1.000 TESTS" ), ASSET( "1.000 TBD" ) ); - set_price_feed( exchange_rate ); - - signed_transaction tx; - comment_operation comment_op; - comment_op.author = "alice"; - comment_op.permlink = "test"; - comment_op.parent_permlink = "test"; - comment_op.title = "foo"; - comment_op.body = "bar"; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( comment_op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - comment_op.author = "bob"; - comment_op.parent_author = "alice"; - comment_op.parent_permlink = "test"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( comment_op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - comment_op.author = "sam"; - comment_op.parent_author = "bob"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( comment_op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - comment_op.author = "dave"; - comment_op.parent_author = "sam"; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( comment_op ); - tx.sign( dave_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - - vote_operation vote_op; - vote_op.voter = "alice"; - vote_op.author = "alice"; - vote_op.permlink = "test"; - vote_op.weight = STEEM_100_PERCENT; - tx.operations.push_back( vote_op ); - vote_op.author = "bob"; - tx.operations.push_back( vote_op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - vote_op.voter = "bob"; - vote_op.author = "alice"; - tx.operations.push_back( vote_op ); - vote_op.author = "bob"; - tx.operations.push_back( vote_op ); - vote_op.author = "dave"; - vote_op.weight = STEEM_1_PERCENT * 20; - tx.operations.push_back( vote_op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - vote_op.voter = "sam"; - vote_op.author = "bob"; - vote_op.weight = STEEM_100_PERCENT; - tx.operations.push_back( vote_op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->get_comment( "alice", string( "test" ) ).cashout_time - fc::seconds( STEEM_BLOCK_INTERVAL ), true ); - - auto gpo = db->get_dynamic_global_properties(); - uint128_t reward_steem = gpo.total_reward_fund_steem.amount.value + ASSET( "2.000 TESTS" ).amount.value; - uint128_t total_rshares2 = gpo.total_reward_shares2; - - auto alice_comment = db->get_comment( "alice", string( "test" ) ); - auto bob_comment = db->get_comment( "bob", string( "test" ) ); - auto sam_comment = db->get_comment( "sam", string( "test" ) ); - auto dave_comment = db->get_comment( "dave", string( "test" ) ); - - const auto& vote_idx = db->get_index< comment_vote_index >().indices().get< by_comment_voter >(); - - // Calculate total comment rewards and voting rewards. - auto alice_comment_reward = ( ( reward_steem * alice_comment.net_rshares.value * alice_comment.net_rshares.value ) / total_rshares2 ).to_uint64(); - total_rshares2 -= uint128_t( alice_comment.net_rshares.value ) * ( alice_comment.net_rshares.value ); - reward_steem -= alice_comment_reward; - auto alice_comment_vote_rewards = alice_comment_reward / 2; - alice_comment_reward -= alice_comment_vote_rewards; - - auto alice_vote_alice_reward = asset( static_cast< uint64_t >( ( u256( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "alice" ) ).id ) )->weight ) * alice_comment_vote_rewards ) / alice_comment.total_vote_weight ), STEEM_SYMBOL ); - auto bob_vote_alice_reward = asset( static_cast< uint64_t >( ( u256( vote_idx.find( std::make_tuple( db->get_comment( "alice", string( "test" ).id, db->get_account( "bob" ) ).id ) )->weight ) * alice_comment_vote_rewards ) / alice_comment.total_vote_weight ), STEEM_SYMBOL ); - reward_steem += alice_comment_vote_rewards - ( alice_vote_alice_reward + bob_vote_alice_reward ).amount.value; - - auto bob_comment_reward = ( ( reward_steem * bob_comment.net_rshares.value * bob_comment.net_rshares.value ) / total_rshares2 ).to_uint64(); - total_rshares2 -= uint128_t( bob_comment.net_rshares.value ) * bob_comment.net_rshares.value; - reward_steem -= bob_comment_reward; - auto bob_comment_vote_rewards = bob_comment_reward / 2; - bob_comment_reward -= bob_comment_vote_rewards; - - auto alice_vote_bob_reward = asset( static_cast< uint64_t >( ( u256( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "alice" ) ).id ) )->weight ) * bob_comment_vote_rewards ) / bob_comment.total_vote_weight ), STEEM_SYMBOL ); - auto bob_vote_bob_reward = asset( static_cast< uint64_t >( ( u256( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "bob" ) ).id ) )->weight ) * bob_comment_vote_rewards ) / bob_comment.total_vote_weight ), STEEM_SYMBOL ); - auto sam_vote_bob_reward = asset( static_cast< uint64_t >( ( u256( vote_idx.find( std::make_tuple( db->get_comment( "bob", string( "test" ).id, db->get_account( "sam" ) ).id ) )->weight ) * bob_comment_vote_rewards ) / bob_comment.total_vote_weight ), STEEM_SYMBOL ); - reward_steem += bob_comment_vote_rewards - ( alice_vote_bob_reward + bob_vote_bob_reward + sam_vote_bob_reward ).amount.value; - - auto dave_comment_reward = ( ( reward_steem * dave_comment.net_rshares.value * dave_comment.net_rshares.value ) / total_rshares2 ).to_uint64(); - total_rshares2 -= uint128_t( dave_comment.net_rshares.value ) * dave_comment.net_rshares.value; - reward_steem -= dave_comment_reward; - auto dave_comment_vote_rewards = dave_comment_reward / 2; - dave_comment_reward -= dave_comment_vote_rewards; - - auto bob_vote_dave_reward = asset( static_cast< uint64_t >( ( u256( vote_idx.find( std::make_tuple( db->get_comment( "dave", string( "test" ).id, db->get_account( "bob" ) ).id ) )->weight ) * dave_comment_vote_rewards ) / dave_comment.total_vote_weight ), STEEM_SYMBOL ); - reward_steem += dave_comment_vote_rewards - bob_vote_dave_reward.amount.value; - - // Calculate rewards paid to parent posts - auto alice_pays_alice_sbd = alice_comment_reward / 2; - auto alice_pays_alice_vest = alice_comment_reward - alice_pays_alice_sbd; - auto bob_pays_bob_sbd = bob_comment_reward / 2; - auto bob_pays_bob_vest = bob_comment_reward - bob_pays_bob_sbd; - auto dave_pays_dave_sbd = dave_comment_reward / 2; - auto dave_pays_dave_vest = dave_comment_reward - dave_pays_dave_sbd; - - auto bob_pays_alice_sbd = bob_pays_bob_sbd / 2; - auto bob_pays_alice_vest = bob_pays_bob_vest / 2; - bob_pays_bob_sbd -= bob_pays_alice_sbd; - bob_pays_bob_vest -= bob_pays_alice_vest; - - auto dave_pays_sam_sbd = dave_pays_dave_sbd / 2; - auto dave_pays_sam_vest = dave_pays_dave_vest / 2; - dave_pays_dave_sbd -= dave_pays_sam_sbd; - dave_pays_dave_vest -= dave_pays_sam_vest; - auto dave_pays_bob_sbd = dave_pays_sam_sbd / 2; - auto dave_pays_bob_vest = dave_pays_sam_vest / 2; - dave_pays_sam_sbd -= dave_pays_bob_sbd; - dave_pays_sam_vest -= dave_pays_bob_vest; - auto dave_pays_alice_sbd = dave_pays_bob_sbd / 2; - auto dave_pays_alice_vest = dave_pays_bob_vest / 2; - dave_pays_bob_sbd -= dave_pays_alice_sbd; - dave_pays_bob_vest -= dave_pays_alice_vest; - - // Calculate total comment payouts - auto alice_comment_total_payout = db->to_sbd( asset( alice_pays_alice_sbd + alice_pays_alice_vest, STEEM_SYMBOL ) ); - alice_comment_total_payout += db->to_sbd( asset( bob_pays_alice_sbd + bob_pays_alice_vest, STEEM_SYMBOL ) ); - alice_comment_total_payout += db->to_sbd( asset( dave_pays_alice_sbd + dave_pays_alice_vest, STEEM_SYMBOL ) ); - auto bob_comment_total_payout = db->to_sbd( asset( bob_pays_bob_sbd + bob_pays_bob_vest, STEEM_SYMBOL ) ); - bob_comment_total_payout += db->to_sbd( asset( dave_pays_bob_sbd + dave_pays_bob_vest, STEEM_SYMBOL ) ); - auto sam_comment_total_payout = db->to_sbd( asset( dave_pays_sam_sbd + dave_pays_sam_vest, STEEM_SYMBOL ) ); - auto dave_comment_total_payout = db->to_sbd( asset( dave_pays_dave_sbd + dave_pays_dave_vest, STEEM_SYMBOL ) ); - - auto alice_starting_vesting = db->get_account( "alice" ).vesting_shares; - auto alice_starting_sbd = db->get_account( "alice" ).sbd_balance; - auto bob_starting_vesting = db->get_account( "bob" ).vesting_shares; - auto bob_starting_sbd = db->get_account( "bob" ).sbd_balance; - auto sam_starting_vesting = db->get_account( "sam" ).vesting_shares; - auto sam_starting_sbd = db->get_account( "sam" ).sbd_balance; - auto dave_starting_vesting = db->get_account( "dave" ).vesting_shares; - auto dave_starting_sbd = db->get_account( "dave" ).sbd_balance; - - generate_block(); - - gpo = db->get_dynamic_global_properties(); - - // Calculate vesting share rewards from voting. - auto alice_vote_alice_vesting = alice_vote_alice_reward * gpo.get_vesting_share_price(); - auto bob_vote_alice_vesting = bob_vote_alice_reward * gpo.get_vesting_share_price(); - auto alice_vote_bob_vesting = alice_vote_bob_reward * gpo.get_vesting_share_price(); - auto bob_vote_bob_vesting = bob_vote_bob_reward * gpo.get_vesting_share_price(); - auto sam_vote_bob_vesting = sam_vote_bob_reward * gpo.get_vesting_share_price(); - auto bob_vote_dave_vesting = bob_vote_dave_reward * gpo.get_vesting_share_price(); - - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).total_payout_value.amount.value == alice_comment_total_payout.amount.value ); - BOOST_REQUIRE( db->get_comment( "bob", string( "test" ) ).total_payout_value.amount.value == bob_comment_total_payout.amount.value ); - BOOST_REQUIRE( db->get_comment( "sam", string( "test" ) ).total_payout_value.amount.value == sam_comment_total_payout.amount.value ); - BOOST_REQUIRE( db->get_comment( "dave", string( "test" ) ).total_payout_value.amount.value == dave_comment_total_payout.amount.value ); - - // ops 0-3, 5-6, and 10 are comment reward ops - auto ops = get_last_operations( 13 ); - - BOOST_TEST_MESSAGE( "Checking Virtual Operation Correctness" ); - - curate_reward_operation cur_vop; - comment_reward_operation com_vop = ops[0].get< comment_reward_operation >(); - - BOOST_REQUIRE( com_vop.author == "alice" ); - BOOST_REQUIRE( com_vop.permlink == "test" ); - BOOST_REQUIRE( com_vop.originating_author == "dave" ); - BOOST_REQUIRE( com_vop.originating_permlink == "test" ); - BOOST_REQUIRE( com_vop.payout.amount.value == dave_pays_alice_sbd ); - BOOST_REQUIRE( ( com_vop.vesting_payout * gpo.get_vesting_share_price() ).amount.value == dave_pays_alice_vest ); - - com_vop = ops[1].get< comment_reward_operation >(); - BOOST_REQUIRE( com_vop.author == "bob" ); - BOOST_REQUIRE( com_vop.permlink == "test" ); - BOOST_REQUIRE( com_vop.originating_author == "dave" ); - BOOST_REQUIRE( com_vop.originating_permlink == "test" ); - BOOST_REQUIRE( com_vop.payout.amount.value == dave_pays_bob_sbd ); - BOOST_REQUIRE( ( com_vop.vesting_payout * gpo.get_vesting_share_price() ).amount.value == dave_pays_bob_vest ); - - com_vop = ops[2].get< comment_reward_operation >(); - BOOST_REQUIRE( com_vop.author == "sam" ); - BOOST_REQUIRE( com_vop.permlink == "test" ); - BOOST_REQUIRE( com_vop.originating_author == "dave" ); - BOOST_REQUIRE( com_vop.originating_permlink == "test" ); - BOOST_REQUIRE( com_vop.payout.amount.value == dave_pays_sam_sbd ); - BOOST_REQUIRE( ( com_vop.vesting_payout * gpo.get_vesting_share_price() ).amount.value == dave_pays_sam_vest ); - - com_vop = ops[3].get< comment_reward_operation >(); - BOOST_REQUIRE( com_vop.author == "dave" ); - BOOST_REQUIRE( com_vop.permlink == "test" ); - BOOST_REQUIRE( com_vop.originating_author == "dave" ); - BOOST_REQUIRE( com_vop.originating_permlink == "test" ); - BOOST_REQUIRE( com_vop.payout.amount.value == dave_pays_dave_sbd ); - BOOST_REQUIRE( ( com_vop.vesting_payout * gpo.get_vesting_share_price() ).amount.value == dave_pays_dave_vest ); - - cur_vop = ops[4].get< curate_reward_operation >(); - BOOST_REQUIRE( cur_vop.curator == "bob" ); - BOOST_REQUIRE( cur_vop.reward.amount.value == bob_vote_dave_vesting.amount.value ); - BOOST_REQUIRE( cur_vop.comment_author == "dave" ); - BOOST_REQUIRE( cur_vop.comment_permlink == "test" ); - - com_vop = ops[5].get< comment_reward_operation >(); - BOOST_REQUIRE( com_vop.author == "alice" ); - BOOST_REQUIRE( com_vop.permlink == "test" ); - BOOST_REQUIRE( com_vop.originating_author == "bob" ); - BOOST_REQUIRE( com_vop.originating_permlink == "test" ); - BOOST_REQUIRE( com_vop.payout.amount.value == bob_pays_alice_sbd ); - BOOST_REQUIRE( ( com_vop.vesting_payout * gpo.get_vesting_share_price() ).amount.value == bob_pays_alice_vest ); - - com_vop = ops[6].get< comment_reward_operation >(); - BOOST_REQUIRE( com_vop.author == "bob" ); - BOOST_REQUIRE( com_vop.permlink == "test" ); - BOOST_REQUIRE( com_vop.originating_author == "bob" ); - BOOST_REQUIRE( com_vop.originating_permlink == "test" ); - BOOST_REQUIRE( com_vop.payout.amount.value == bob_pays_bob_sbd ); - BOOST_REQUIRE( ( com_vop.vesting_payout * gpo.get_vesting_share_price() ).amount.value == bob_pays_bob_vest ); - - cur_vop = ops[7].get< curate_reward_operation >(); - BOOST_REQUIRE( cur_vop.curator == "sam" ); - BOOST_REQUIRE( cur_vop.reward.amount.value == sam_vote_bob_vesting.amount.value ); - BOOST_REQUIRE( cur_vop.comment_author == "bob" ); - BOOST_REQUIRE( cur_vop.comment_permlink == "test" ); - - cur_vop = ops[8].get< curate_reward_operation >(); - BOOST_REQUIRE( cur_vop.curator == "bob" ); - BOOST_REQUIRE( cur_vop.reward.amount.value == bob_vote_bob_vesting.amount.value ); - BOOST_REQUIRE( cur_vop.comment_author == "bob" ); - BOOST_REQUIRE( cur_vop.comment_permlink == "test" ); - - cur_vop = ops[9].get< curate_reward_operation >(); - BOOST_REQUIRE( cur_vop.curator == "alice" ); - BOOST_REQUIRE( cur_vop.reward.amount.value == alice_vote_bob_vesting.amount.value ); - BOOST_REQUIRE( cur_vop.comment_author == "bob" ); - BOOST_REQUIRE( cur_vop.comment_permlink == "test" ); - - com_vop = ops[10].get< comment_reward_operation >(); - BOOST_REQUIRE( com_vop.author == "alice" ); - BOOST_REQUIRE( com_vop.permlink == "test" ); - BOOST_REQUIRE( com_vop.originating_author == "alice" ); - BOOST_REQUIRE( com_vop.originating_permlink == "test" ); - BOOST_REQUIRE( com_vop.payout.amount.value == alice_pays_alice_sbd ); - BOOST_REQUIRE( ( com_vop.vesting_payout * gpo.get_vesting_share_price() ).amount.value == alice_pays_alice_vest ); - - cur_vop = ops[11].get< curate_reward_operation >(); - BOOST_REQUIRE( cur_vop.curator == "bob" ); - BOOST_REQUIRE( cur_vop.reward.amount.value == bob_vote_alice_vesting.amount.value ); - BOOST_REQUIRE( cur_vop.comment_author == "alice" ); - BOOST_REQUIRE( cur_vop.comment_permlink == "test" ); - - cur_vop = ops[12].get< curate_reward_operation >(); - BOOST_REQUIRE( cur_vop.curator == "alice" ); - BOOST_REQUIRE( cur_vop.reward.amount.value == alice_vote_alice_vesting.amount.value ); - BOOST_REQUIRE( cur_vop.comment_author == "alice" ); - BOOST_REQUIRE( cur_vop.comment_permlink == "test" ); - - BOOST_TEST_MESSAGE( "Checking account balances" ); - - auto alice_total_sbd = alice_starting_sbd + asset( alice_pays_alice_sbd + bob_pays_alice_sbd + dave_pays_alice_sbd, STEEM_SYMBOL ) * exchange_rate; - auto alice_total_vesting = alice_starting_vesting + asset( alice_pays_alice_vest + bob_pays_alice_vest + dave_pays_alice_vest + alice_vote_alice_reward.amount + alice_vote_bob_reward.amount, STEEM_SYMBOL ) * gpo.get_vesting_share_price(); - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance.amount.value == alice_total_sbd.amount.value ); - BOOST_REQUIRE( db->get_account( "alice" ).vesting_shares.amount.value == alice_total_vesting.amount.value ); - - auto bob_total_sbd = bob_starting_sbd + asset( bob_pays_bob_sbd + dave_pays_bob_sbd, STEEM_SYMBOL ) * exchange_rate; - auto bob_total_vesting = bob_starting_vesting + asset( bob_pays_bob_vest + dave_pays_bob_vest + bob_vote_alice_reward.amount + bob_vote_bob_reward.amount + bob_vote_dave_reward.amount, STEEM_SYMBOL ) * gpo.get_vesting_share_price(); - BOOST_REQUIRE( db->get_account( "bob" ).sbd_balance.amount.value == bob_total_sbd.amount.value ); - BOOST_REQUIRE( db->get_account( "bob" ).vesting_shares.amount.value == bob_total_vesting.amount.value ); - - auto sam_total_sbd = sam_starting_sbd + asset( dave_pays_sam_sbd, STEEM_SYMBOL ) * exchange_rate; - auto sam_total_vesting = bob_starting_vesting + asset( dave_pays_sam_vest + sam_vote_bob_reward.amount, STEEM_SYMBOL ) * gpo.get_vesting_share_price(); - BOOST_REQUIRE( db->get_account( "sam" ).sbd_balance.amount.value == sam_total_sbd.amount.value ); - BOOST_REQUIRE( db->get_account( "sam" ).vesting_shares.amount.value == sam_total_vesting.amount.value ); - - auto dave_total_sbd = dave_starting_sbd + asset( dave_pays_dave_sbd, STEEM_SYMBOL ) * exchange_rate; - auto dave_total_vesting = dave_starting_vesting + asset( dave_pays_dave_vest, STEEM_SYMBOL ) * gpo.get_vesting_share_price(); - BOOST_REQUIRE( db->get_account( "dave" ).sbd_balance.amount.value == dave_total_sbd.amount.value ); - BOOST_REQUIRE( db->get_account( "dave" ).vesting_shares.amount.value == dave_total_vesting.amount.value ); - } - FC_LOG_AND_RETHROW() -} -*/ - - -BOOST_AUTO_TEST_CASE( vesting_withdrawals ) -{ - try - { - ACTORS( (alice) ) - fund( "alice", 100000 ); - vest( "alice", 100000 ); - - const auto& new_alice = db->get_account( "alice" ); - - BOOST_TEST_MESSAGE( "Setting up withdrawal" ); - - signed_transaction tx; - withdraw_vesting_operation op; - op.account = "alice"; - op.vesting_shares = asset( new_alice.vesting_shares.amount / 2, VESTS_SYMBOL ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - auto next_withdrawal = db->head_block_time() + STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS; - asset vesting_shares = new_alice.vesting_shares; - asset to_withdraw = op.vesting_shares; - asset original_vesting = vesting_shares; - asset withdraw_rate = new_alice.vesting_withdraw_rate; - - BOOST_TEST_MESSAGE( "Generating block up to first withdrawal" ); - generate_blocks( next_withdrawal - ( STEEM_BLOCK_INTERVAL / 2 ), true); - - BOOST_REQUIRE( db->get_account( "alice" ).vesting_shares.amount.value == vesting_shares.amount.value ); - - BOOST_TEST_MESSAGE( "Generating block to cause withdrawal" ); - generate_block(); - - auto fill_op = get_last_operations( 1 )[0].get< fill_vesting_withdraw_operation >(); - auto gpo = db->get_dynamic_global_properties(); - - BOOST_REQUIRE( db->get_account( "alice" ).vesting_shares.amount.value == ( vesting_shares - withdraw_rate ).amount.value ); - BOOST_REQUIRE( ( withdraw_rate * gpo.get_vesting_share_price() ).amount.value - db->get_account( "alice" ).balance.amount.value <= 1 ); // Check a range due to differences in the share price - BOOST_REQUIRE( fill_op.from_account == "alice" ); - BOOST_REQUIRE( fill_op.to_account == "alice" ); - BOOST_REQUIRE( fill_op.withdrawn.amount.value == withdraw_rate.amount.value ); - BOOST_REQUIRE( std::abs( ( fill_op.deposited - fill_op.withdrawn * gpo.get_vesting_share_price() ).amount.value ) <= 1 ); - validate_database(); - - BOOST_TEST_MESSAGE( "Generating the rest of the blocks in the withdrawal" ); - - vesting_shares = db->get_account( "alice" ).vesting_shares; - auto balance = db->get_account( "alice" ).balance; - auto old_next_vesting = db->get_account( "alice" ).next_vesting_withdrawal; - - for( int i = 1; i < STEEM_VESTING_WITHDRAW_INTERVALS - 1; i++ ) - { - generate_blocks( db->head_block_time() + STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS ); - - const auto& alice = db->get_account( "alice" ); - - gpo = db->get_dynamic_global_properties(); - fill_op = get_last_operations( 1 )[0].get< fill_vesting_withdraw_operation >(); - - BOOST_REQUIRE( alice.vesting_shares.amount.value == ( vesting_shares - withdraw_rate ).amount.value ); - BOOST_REQUIRE( balance.amount.value + ( withdraw_rate * gpo.get_vesting_share_price() ).amount.value - alice.balance.amount.value <= 1 ); - BOOST_REQUIRE( fill_op.from_account == "alice" ); - BOOST_REQUIRE( fill_op.to_account == "alice" ); - BOOST_REQUIRE( fill_op.withdrawn.amount.value == withdraw_rate.amount.value ); - BOOST_REQUIRE( std::abs( ( fill_op.deposited - fill_op.withdrawn * gpo.get_vesting_share_price() ).amount.value ) <= 1 ); - - if ( i == STEEM_VESTING_WITHDRAW_INTERVALS - 1 ) - BOOST_REQUIRE( alice.next_vesting_withdrawal == fc::time_point_sec::maximum() ); - else - BOOST_REQUIRE( alice.next_vesting_withdrawal.sec_since_epoch() == ( old_next_vesting + STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS ).sec_since_epoch() ); - - validate_database(); - - vesting_shares = alice.vesting_shares; - balance = alice.balance; - old_next_vesting = alice.next_vesting_withdrawal; - } - - if ( to_withdraw.amount.value % withdraw_rate.amount.value != 0 ) - { - BOOST_TEST_MESSAGE( "Generating one more block to take care of remainder" ); - generate_blocks( db->head_block_time() + STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS, true ); - fill_op = get_last_operations( 1 )[0].get< fill_vesting_withdraw_operation >(); - gpo = db->get_dynamic_global_properties(); - - BOOST_REQUIRE( db->get_account( "alice" ).next_vesting_withdrawal.sec_since_epoch() == ( old_next_vesting + STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS ).sec_since_epoch() ); - BOOST_REQUIRE( fill_op.from_account == "alice" ); - BOOST_REQUIRE( fill_op.to_account == "alice" ); - BOOST_REQUIRE( fill_op.withdrawn.amount.value == withdraw_rate.amount.value ); - BOOST_REQUIRE( std::abs( ( fill_op.deposited - fill_op.withdrawn * gpo.get_vesting_share_price() ).amount.value ) <= 1 ); - - generate_blocks( db->head_block_time() + STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS, true ); - gpo = db->get_dynamic_global_properties(); - fill_op = get_last_operations( 1 )[0].get< fill_vesting_withdraw_operation >(); - - BOOST_REQUIRE( db->get_account( "alice" ).next_vesting_withdrawal.sec_since_epoch() == fc::time_point_sec::maximum().sec_since_epoch() ); - BOOST_REQUIRE( fill_op.to_account == "alice" ); - BOOST_REQUIRE( fill_op.from_account == "alice" ); - BOOST_REQUIRE( fill_op.withdrawn.amount.value == to_withdraw.amount.value % withdraw_rate.amount.value ); - BOOST_REQUIRE( std::abs( ( fill_op.deposited - fill_op.withdrawn * gpo.get_vesting_share_price() ).amount.value ) <= 1 ); - - validate_database(); - } - else - { - generate_blocks( db->head_block_time() + STEEM_VESTING_WITHDRAW_INTERVAL_SECONDS, true ); - - BOOST_REQUIRE( db->get_account( "alice" ).next_vesting_withdrawal.sec_since_epoch() == fc::time_point_sec::maximum().sec_since_epoch() ); - - fill_op = get_last_operations( 1 )[0].get< fill_vesting_withdraw_operation >(); - BOOST_REQUIRE( fill_op.from_account == "alice" ); - BOOST_REQUIRE( fill_op.to_account == "alice" ); - BOOST_REQUIRE( fill_op.withdrawn.amount.value == withdraw_rate.amount.value ); - BOOST_REQUIRE( std::abs( ( fill_op.deposited - fill_op.withdrawn * gpo.get_vesting_share_price() ).amount.value ) <= 1 ); - } - - BOOST_REQUIRE( db->get_account( "alice" ).vesting_shares.amount.value == ( original_vesting - op.vesting_shares ).amount.value ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( vesting_withdraw_route ) -{ - try - { - ACTORS( (alice)(bob)(sam) ) - - auto original_vesting = alice.vesting_shares; - - fund( "alice", 1040000 ); - vest( "alice", 1040000 ); - - auto withdraw_amount = alice.vesting_shares - original_vesting; - - BOOST_TEST_MESSAGE( "Setup vesting withdraw" ); - withdraw_vesting_operation wv; - wv.account = "alice"; - wv.vesting_shares = withdraw_amount; - - signed_transaction tx; - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( wv ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - - BOOST_TEST_MESSAGE( "Setting up bob destination" ); - set_withdraw_vesting_route_operation op; - op.from_account = "alice"; - op.to_account = "bob"; - op.percent = STEEM_1_PERCENT * 50; - op.auto_vest = true; - tx.operations.push_back( op ); - - BOOST_TEST_MESSAGE( "Setting up sam destination" ); - op.to_account = "sam"; - op.percent = STEEM_1_PERCENT * 30; - op.auto_vest = false; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "Setting up first withdraw" ); - - auto vesting_withdraw_rate = alice.vesting_withdraw_rate; - auto old_alice_balance = alice.balance; - auto old_alice_vesting = alice.vesting_shares; - auto old_bob_balance = bob.balance; - auto old_bob_vesting = bob.vesting_shares; - auto old_sam_balance = sam.balance; - auto old_sam_vesting = sam.vesting_shares; - generate_blocks( alice.next_vesting_withdrawal, true ); - - { - const auto& alice = db->get_account( "alice" ); - const auto& bob = db->get_account( "bob" ); - const auto& sam = db->get_account( "sam" ); - - BOOST_REQUIRE( alice.vesting_shares == old_alice_vesting - vesting_withdraw_rate ); - BOOST_REQUIRE( alice.balance == old_alice_balance + asset( ( vesting_withdraw_rate.amount * STEEM_1_PERCENT * 20 ) / STEEM_100_PERCENT, VESTS_SYMBOL ) * db->get_dynamic_global_properties().get_vesting_share_price() ); - BOOST_REQUIRE( bob.vesting_shares == old_bob_vesting + asset( ( vesting_withdraw_rate.amount * STEEM_1_PERCENT * 50 ) / STEEM_100_PERCENT, VESTS_SYMBOL ) ); - BOOST_REQUIRE( bob.balance == old_bob_balance ); - BOOST_REQUIRE( sam.vesting_shares == old_sam_vesting ); - BOOST_REQUIRE( sam.balance == old_sam_balance + asset( ( vesting_withdraw_rate.amount * STEEM_1_PERCENT * 30 ) / STEEM_100_PERCENT, VESTS_SYMBOL ) * db->get_dynamic_global_properties().get_vesting_share_price() ); - - old_alice_balance = alice.balance; - old_alice_vesting = alice.vesting_shares; - old_bob_balance = bob.balance; - old_bob_vesting = bob.vesting_shares; - old_sam_balance = sam.balance; - old_sam_vesting = sam.vesting_shares; - } - - BOOST_TEST_MESSAGE( "Test failure with greater than 100% destination assignment" ); - - tx.operations.clear(); - tx.signatures.clear(); - - op.to_account = "sam"; - op.percent = STEEM_1_PERCENT * 50 + 1; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_TEST_MESSAGE( "Test from_account receiving no withdraw" ); - - tx.operations.clear(); - tx.signatures.clear(); - - op.to_account = "sam"; - op.percent = STEEM_1_PERCENT * 50; - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->get_account( "alice" ).next_vesting_withdrawal, true ); - { - const auto& alice = db->get_account( "alice" ); - const auto& bob = db->get_account( "bob" ); - const auto& sam = db->get_account( "sam" ); - - BOOST_REQUIRE( alice.vesting_shares == old_alice_vesting - vesting_withdraw_rate ); - BOOST_REQUIRE( alice.balance == old_alice_balance ); - BOOST_REQUIRE( bob.vesting_shares == old_bob_vesting + asset( ( vesting_withdraw_rate.amount * STEEM_1_PERCENT * 50 ) / STEEM_100_PERCENT, VESTS_SYMBOL ) ); - BOOST_REQUIRE( bob.balance == old_bob_balance ); - BOOST_REQUIRE( sam.vesting_shares == old_sam_vesting ); - BOOST_REQUIRE( sam.balance == old_sam_balance + asset( ( vesting_withdraw_rate.amount * STEEM_1_PERCENT * 50 ) / STEEM_100_PERCENT, VESTS_SYMBOL ) * db->get_dynamic_global_properties().get_vesting_share_price() ); - } - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( feed_publish_mean ) -{ - try - { - resize_shared_mem( 1024 * 1024 * 32 ); - - ACTORS( (alice0)(alice1)(alice2)(alice3)(alice4)(alice5)(alice6) ) - - BOOST_TEST_MESSAGE( "Setup" ); - - generate_blocks( 30 / STEEM_BLOCK_INTERVAL ); - - vector< string > accounts; - accounts.push_back( "alice0" ); - accounts.push_back( "alice1" ); - accounts.push_back( "alice2" ); - accounts.push_back( "alice3" ); - accounts.push_back( "alice4" ); - accounts.push_back( "alice5" ); - accounts.push_back( "alice6" ); - - vector< private_key_type > keys; - keys.push_back( alice0_private_key ); - keys.push_back( alice1_private_key ); - keys.push_back( alice2_private_key ); - keys.push_back( alice3_private_key ); - keys.push_back( alice4_private_key ); - keys.push_back( alice5_private_key ); - keys.push_back( alice6_private_key ); - - vector< feed_publish_operation > ops; - vector< signed_transaction > txs; - - // Upgrade accounts to witnesses - for( int i = 0; i < 7; i++ ) - { - transfer( STEEM_INIT_MINER_NAME, accounts[i], asset( 10000, STEEM_SYMBOL ) ); - witness_create( accounts[i], keys[i], "foo.bar", keys[i].get_public_key(), 1000 ); - - ops.push_back( feed_publish_operation() ); - ops[i].publisher = accounts[i]; - - txs.push_back( signed_transaction() ); - } - - ops[0].exchange_rate = price( asset( 1000, SBD_SYMBOL ), asset( 100000, STEEM_SYMBOL ) ); - ops[1].exchange_rate = price( asset( 1000, SBD_SYMBOL ), asset( 105000, STEEM_SYMBOL ) ); - ops[2].exchange_rate = price( asset( 1000, SBD_SYMBOL ), asset( 98000, STEEM_SYMBOL ) ); - ops[3].exchange_rate = price( asset( 1000, SBD_SYMBOL ), asset( 97000, STEEM_SYMBOL ) ); - ops[4].exchange_rate = price( asset( 1000, SBD_SYMBOL ), asset( 99000, STEEM_SYMBOL ) ); - ops[5].exchange_rate = price( asset( 1000, SBD_SYMBOL ), asset( 97500, STEEM_SYMBOL ) ); - ops[6].exchange_rate = price( asset( 1000, SBD_SYMBOL ), asset( 102000, STEEM_SYMBOL ) ); - - for( int i = 0; i < 7; i++ ) - { - txs[i].set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - txs[i].operations.push_back( ops[i] ); - txs[i].sign( keys[i], db->get_chain_id() ); - db->push_transaction( txs[i], 0 ); - } - - BOOST_TEST_MESSAGE( "Jump forward an hour" ); - - generate_blocks( STEEM_BLOCKS_PER_HOUR ); // Jump forward 1 hour - BOOST_TEST_MESSAGE( "Get feed history object" ); - feed_history_object feed_history = db->get_feed_history(); - BOOST_TEST_MESSAGE( "Check state" ); - BOOST_REQUIRE( feed_history.current_median_history == price( asset( 1000, SBD_SYMBOL ), asset( 99000, STEEM_SYMBOL) ) ); - BOOST_REQUIRE( feed_history.price_history[ 0 ] == price( asset( 1000, SBD_SYMBOL ), asset( 99000, STEEM_SYMBOL) ) ); - validate_database(); - - for ( int i = 0; i < 23; i++ ) - { - BOOST_TEST_MESSAGE( "Updating ops" ); - - for( int j = 0; j < 7; j++ ) - { - txs[j].operations.clear(); - txs[j].signatures.clear(); - ops[j].exchange_rate = price( ops[j].exchange_rate.base, asset( ops[j].exchange_rate.quote.amount + 10, STEEM_SYMBOL ) ); - txs[j].set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - txs[j].operations.push_back( ops[j] ); - txs[j].sign( keys[j], db->get_chain_id() ); - db->push_transaction( txs[j], 0 ); - } - - BOOST_TEST_MESSAGE( "Generate Blocks" ); - - generate_blocks( STEEM_BLOCKS_PER_HOUR ); // Jump forward 1 hour - - BOOST_TEST_MESSAGE( "Check feed_history" ); - - feed_history = db->get(feed_history_id_type()); - BOOST_REQUIRE( feed_history.current_median_history == feed_history.price_history[ ( i + 1 ) / 2 ] ); - BOOST_REQUIRE( feed_history.price_history[ i + 1 ] == ops[4].exchange_rate ); - validate_database(); - } - } - FC_LOG_AND_RETHROW(); -} - -BOOST_AUTO_TEST_CASE( convert_delay ) -{ - try - { - ACTORS( (alice) ) - generate_block(); - vest( "alice", ASSET( "10.000 TESTS" ) ); - fund( "alice", ASSET( "25.000 TBD" ) ); - - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.250 TESTS" ) ) ); - - convert_operation op; - signed_transaction tx; - - auto start_balance = ASSET( "25.000 TBD" ); - - BOOST_TEST_MESSAGE( "Setup conversion to TESTS" ); - tx.operations.clear(); - tx.signatures.clear(); - op.owner = "alice"; - op.amount = asset( 2000, SBD_SYMBOL ); - op.requestid = 2; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "Generating Blocks up to conversion block" ); - generate_blocks( db->head_block_time() + STEEM_CONVERSION_DELAY - fc::seconds( STEEM_BLOCK_INTERVAL / 2 ), true ); - - BOOST_TEST_MESSAGE( "Verify conversion is not applied" ); - const auto& alice_2 = db->get_account( "alice" ); - const auto& convert_request_idx = db->get_index< convert_request_index >().indices().get< by_owner >(); - auto convert_request = convert_request_idx.find( std::make_tuple( "alice", 2 ) ); - - BOOST_REQUIRE( convert_request != convert_request_idx.end() ); - BOOST_REQUIRE( alice_2.balance.amount.value == 0 ); - BOOST_REQUIRE( alice_2.sbd_balance.amount.value == ( start_balance - op.amount ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "Generate one more block" ); - generate_block(); - - BOOST_TEST_MESSAGE( "Verify conversion applied" ); - const auto& alice_3 = db->get_account( "alice" ); - auto vop = get_last_operations( 1 )[0].get< fill_convert_request_operation >(); - - convert_request = convert_request_idx.find( std::make_tuple( "alice", 2 ) ); - BOOST_REQUIRE( convert_request == convert_request_idx.end() ); - BOOST_REQUIRE( alice_3.balance.amount.value == 2500 ); - BOOST_REQUIRE( alice_3.sbd_balance.amount.value == ( start_balance - op.amount ).amount.value ); - BOOST_REQUIRE( vop.owner == "alice" ); - BOOST_REQUIRE( vop.requestid == 2 ); - BOOST_REQUIRE( vop.amount_in.amount.value == ASSET( "2.000 TBD" ).amount.value ); - BOOST_REQUIRE( vop.amount_out.amount.value == ASSET( "2.500 TESTS" ).amount.value ); - validate_database(); - } - FC_LOG_AND_RETHROW(); -} - -BOOST_AUTO_TEST_CASE( steem_inflation ) -{ - try - { - /* - BOOST_TEST_MESSAGE( "Testing STEEM Inflation until the vesting start block" ); - - auto gpo = db->get_dynamic_global_properties(); - auto virtual_supply = gpo.virtual_supply; - auto witness_name = db->get_scheduled_witness(1); - auto old_witness_balance = db->get_account( witness_name ).balance; - auto old_witness_shares = db->get_account( witness_name ).vesting_shares; - - auto new_rewards = std::max( STEEM_MIN_CONTENT_REWARD, asset( ( STEEM_CONTENT_APR * gpo.virtual_supply.amount ) / ( STEEM_BLOCKS_PER_YEAR * 100 ), STEEM_SYMBOL ) ) - + std::max( STEEM_MIN_CURATE_REWARD, asset( ( STEEM_CURATE_APR * gpo.virtual_supply.amount ) / ( STEEM_BLOCKS_PER_YEAR * 100 ), STEEM_SYMBOL ) ); - auto witness_pay = std::max( STEEM_MIN_PRODUCER_REWARD, asset( ( STEEM_PRODUCER_APR * gpo.virtual_supply.amount ) / ( STEEM_BLOCKS_PER_YEAR * 100 ), STEEM_SYMBOL ) ); - auto witness_pay_shares = asset( 0, VESTS_SYMBOL ); - auto new_vesting_steem = asset( 0, STEEM_SYMBOL ); - auto new_vesting_shares = gpo.total_vesting_shares; - - if ( db->get_account( witness_name ).vesting_shares.amount.value == 0 ) - { - new_vesting_steem += witness_pay; - new_vesting_shares += witness_pay * ( gpo.total_vesting_shares / gpo.total_vesting_fund_steem ); - } - - auto new_supply = gpo.current_supply + new_rewards + witness_pay + new_vesting_steem; - new_rewards += gpo.total_reward_fund_steem; - new_vesting_steem += gpo.total_vesting_fund_steem; - - generate_block(); - - gpo = db->get_dynamic_global_properties(); - - BOOST_REQUIRE( gpo.current_supply.amount.value == new_supply.amount.value ); - BOOST_REQUIRE( gpo.virtual_supply.amount.value == new_supply.amount.value ); - BOOST_REQUIRE( gpo.total_reward_fund_steem.amount.value == new_rewards.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_fund_steem.amount.value == new_vesting_steem.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_shares.amount.value == new_vesting_shares.amount.value ); - BOOST_REQUIRE( db->get_account( witness_name ).balance.amount.value == ( old_witness_balance + witness_pay ).amount.value ); - - validate_database(); - - while( db->head_block_num() < STEEM_START_VESTING_BLOCK - 1) - { - virtual_supply = gpo.virtual_supply; - witness_name = db->get_scheduled_witness(1); - old_witness_balance = db->get_account( witness_name ).balance; - old_witness_shares = db->get_account( witness_name ).vesting_shares; - - - new_rewards = std::max( STEEM_MIN_CONTENT_REWARD, asset( ( STEEM_CONTENT_APR * gpo.virtual_supply.amount ) / ( STEEM_BLOCKS_PER_YEAR * 100 ), STEEM_SYMBOL ) ) - + std::max( STEEM_MIN_CURATE_REWARD, asset( ( STEEM_CURATE_APR * gpo.virtual_supply.amount ) / ( STEEM_BLOCKS_PER_YEAR * 100 ), STEEM_SYMBOL ) ); - witness_pay = std::max( STEEM_MIN_PRODUCER_REWARD, asset( ( STEEM_PRODUCER_APR * gpo.virtual_supply.amount ) / ( STEEM_BLOCKS_PER_YEAR * 100 ), STEEM_SYMBOL ) ); - new_vesting_steem = asset( 0, STEEM_SYMBOL ); - new_vesting_shares = gpo.total_vesting_shares; - - if ( db->get_account( witness_name ).vesting_shares.amount.value == 0 ) - { - new_vesting_steem += witness_pay; - witness_pay_shares = witness_pay * gpo.get_vesting_share_price(); - new_vesting_shares += witness_pay_shares; - new_supply += witness_pay; - witness_pay = asset( 0, STEEM_SYMBOL ); - } - - new_supply = gpo.current_supply + new_rewards + witness_pay + new_vesting_steem; - new_rewards += gpo.total_reward_fund_steem; - new_vesting_steem += gpo.total_vesting_fund_steem; - - generate_block(); - - gpo = db->get_dynamic_global_properties(); - - BOOST_REQUIRE( gpo.current_supply.amount.value == new_supply.amount.value ); - BOOST_REQUIRE( gpo.virtual_supply.amount.value == new_supply.amount.value ); - BOOST_REQUIRE( gpo.total_reward_fund_steem.amount.value == new_rewards.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_fund_steem.amount.value == new_vesting_steem.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_shares.amount.value == new_vesting_shares.amount.value ); - BOOST_REQUIRE( db->get_account( witness_name ).balance.amount.value == ( old_witness_balance + witness_pay ).amount.value ); - BOOST_REQUIRE( db->get_account( witness_name ).vesting_shares.amount.value == ( old_witness_shares + witness_pay_shares ).amount.value ); - - validate_database(); - } - - BOOST_TEST_MESSAGE( "Testing up to the start block for miner voting" ); - - while( db->head_block_num() < STEEM_START_MINER_VOTING_BLOCK - 1 ) - { - virtual_supply = gpo.virtual_supply; - witness_name = db->get_scheduled_witness(1); - old_witness_balance = db->get_account( witness_name ).balance; - - new_rewards = std::max( STEEM_MIN_CONTENT_REWARD, asset( ( STEEM_CONTENT_APR * gpo.virtual_supply.amount ) / ( STEEM_BLOCKS_PER_YEAR * 100 ), STEEM_SYMBOL ) ) - + std::max( STEEM_MIN_CURATE_REWARD, asset( ( STEEM_CURATE_APR * gpo.virtual_supply.amount ) / ( STEEM_BLOCKS_PER_YEAR * 100 ), STEEM_SYMBOL ) ); - witness_pay = std::max( STEEM_MIN_PRODUCER_REWARD, asset( ( STEEM_PRODUCER_APR * gpo.virtual_supply.amount ) / ( STEEM_BLOCKS_PER_YEAR * 100 ), STEEM_SYMBOL ) ); - auto witness_pay_shares = asset( 0, VESTS_SYMBOL ); - new_vesting_steem = asset( ( witness_pay + new_rewards ).amount * 9, STEEM_SYMBOL ); - new_vesting_shares = gpo.total_vesting_shares; - - if ( db->get_account( witness_name ).vesting_shares.amount.value == 0 ) - { - new_vesting_steem += witness_pay; - witness_pay_shares = witness_pay * gpo.get_vesting_share_price(); - new_vesting_shares += witness_pay_shares; - new_supply += witness_pay; - witness_pay = asset( 0, STEEM_SYMBOL ); - } - - new_supply = gpo.current_supply + new_rewards + witness_pay + new_vesting_steem; - new_rewards += gpo.total_reward_fund_steem; - new_vesting_steem += gpo.total_vesting_fund_steem; - - generate_block(); - - gpo = db->get_dynamic_global_properties(); - - BOOST_REQUIRE( gpo.current_supply.amount.value == new_supply.amount.value ); - BOOST_REQUIRE( gpo.virtual_supply.amount.value == new_supply.amount.value ); - BOOST_REQUIRE( gpo.total_reward_fund_steem.amount.value == new_rewards.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_fund_steem.amount.value == new_vesting_steem.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_shares.amount.value == new_vesting_shares.amount.value ); - BOOST_REQUIRE( db->get_account( witness_name ).balance.amount.value == ( old_witness_balance + witness_pay ).amount.value ); - BOOST_REQUIRE( db->get_account( witness_name ).vesting_shares.amount.value == ( old_witness_shares + witness_pay_shares ).amount.value ); - - validate_database(); - } - - for( int i = 0; i < STEEM_BLOCKS_PER_DAY; i++ ) - { - virtual_supply = gpo.virtual_supply; - witness_name = db->get_scheduled_witness(1); - old_witness_balance = db->get_account( witness_name ).balance; - - new_rewards = std::max( STEEM_MIN_CONTENT_REWARD, asset( ( STEEM_CONTENT_APR * gpo.virtual_supply.amount ) / ( STEEM_BLOCKS_PER_YEAR * 100 ), STEEM_SYMBOL ) ) - + std::max( STEEM_MIN_CURATE_REWARD, asset( ( STEEM_CURATE_APR * gpo.virtual_supply.amount ) / ( STEEM_BLOCKS_PER_YEAR * 100 ), STEEM_SYMBOL ) ); - witness_pay = std::max( STEEM_MIN_PRODUCER_REWARD, asset( ( STEEM_PRODUCER_APR * gpo.virtual_supply.amount ) / ( STEEM_BLOCKS_PER_YEAR * 100 ), STEEM_SYMBOL ) ); - witness_pay_shares = witness_pay * gpo.get_vesting_share_price(); - new_vesting_steem = asset( ( witness_pay + new_rewards ).amount * 9, STEEM_SYMBOL ) + witness_pay; - new_vesting_shares = gpo.total_vesting_shares + witness_pay_shares; - new_supply = gpo.current_supply + new_rewards + new_vesting_steem; - new_rewards += gpo.total_reward_fund_steem; - new_vesting_steem += gpo.total_vesting_fund_steem; - - generate_block(); - - gpo = db->get_dynamic_global_properties(); - - BOOST_REQUIRE( gpo.current_supply.amount.value == new_supply.amount.value ); - BOOST_REQUIRE( gpo.virtual_supply.amount.value == new_supply.amount.value ); - BOOST_REQUIRE( gpo.total_reward_fund_steem.amount.value == new_rewards.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_fund_steem.amount.value == new_vesting_steem.amount.value ); - BOOST_REQUIRE( gpo.total_vesting_shares.amount.value == new_vesting_shares.amount.value ); - BOOST_REQUIRE( db->get_account( witness_name ).vesting_shares.amount.value == ( old_witness_shares + witness_pay_shares ).amount.value ); - - validate_database(); - } - - virtual_supply = gpo.virtual_supply; - vesting_shares = gpo.total_vesting_shares; - vesting_steem = gpo.total_vesting_fund_steem; - reward_steem = gpo.total_reward_fund_steem; - - witness_name = db->get_scheduled_witness(1); - old_witness_shares = db->get_account( witness_name ).vesting_shares; - - generate_block(); - - gpo = db->get_dynamic_global_properties(); - - BOOST_REQUIRE_EQUAL( gpo.total_vesting_fund_steem.amount.value, - ( vesting_steem.amount.value - + ( ( ( uint128_t( virtual_supply.amount.value ) / 10 ) / STEEM_BLOCKS_PER_YEAR ) * 9 ) - + ( uint128_t( virtual_supply.amount.value ) / 100 / STEEM_BLOCKS_PER_YEAR ) ).to_uint64() ); - BOOST_REQUIRE_EQUAL( gpo.total_reward_fund_steem.amount.value, - reward_steem.amount.value + virtual_supply.amount.value / 10 / STEEM_BLOCKS_PER_YEAR + virtual_supply.amount.value / 10 / STEEM_BLOCKS_PER_DAY ); - BOOST_REQUIRE_EQUAL( db->get_account( witness_name ).vesting_shares.amount.value, - old_witness_shares.amount.value + ( asset( ( ( virtual_supply.amount.value / STEEM_BLOCKS_PER_YEAR ) * STEEM_1_PERCENT ) / STEEM_100_PERCENT, STEEM_SYMBOL ) * ( vesting_shares / vesting_steem ) ).amount.value ); - validate_database(); - */ - } - FC_LOG_AND_RETHROW(); -} - -BOOST_AUTO_TEST_CASE( sbd_interest ) -{ - try - { - ACTORS( (alice)(bob) ) - generate_block(); - vest( "alice", ASSET( "10.000 TESTS" ) ); - vest( "bob", ASSET( "10.000 TESTS" ) ); - - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); - - BOOST_TEST_MESSAGE( "Testing interest over smallest interest period" ); - - convert_operation op; - signed_transaction tx; - - fund( "alice", ASSET( "31.903 TBD" ) ); - - auto start_time = db->get_account( "alice" ).sbd_seconds_last_update; - auto alice_sbd = db->get_account( "alice" ).sbd_balance; - - generate_blocks( db->head_block_time() + fc::seconds( STEEM_SBD_INTEREST_COMPOUND_INTERVAL_SEC ), true ); - - transfer_operation transfer; - transfer.to = "bob"; - transfer.from = "alice"; - transfer.amount = ASSET( "1.000 TBD" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( transfer ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - auto gpo = db->get_dynamic_global_properties(); - auto interest_op = get_last_operations( 1 )[0].get< interest_operation >(); - - BOOST_REQUIRE( gpo.sbd_interest_rate > 0 ); - BOOST_REQUIRE( static_cast(db->get_account( "alice" ).sbd_balance.amount.value) == alice_sbd.amount.value - ASSET( "1.000 TBD" ).amount.value + ( ( ( ( uint128_t( alice_sbd.amount.value ) * ( db->head_block_time() - start_time ).to_seconds() ) / STEEM_SECONDS_PER_YEAR ) * gpo.sbd_interest_rate ) / STEEM_100_PERCENT ).to_uint64() ); - BOOST_REQUIRE( interest_op.owner == "alice" ); - BOOST_REQUIRE( interest_op.interest.amount.value == db->get_account( "alice" ).sbd_balance.amount.value - ( alice_sbd.amount.value - ASSET( "1.000 TBD" ).amount.value ) ); - validate_database(); - - BOOST_TEST_MESSAGE( "Testing interest under interest period" ); - - start_time = db->get_account( "alice" ).sbd_seconds_last_update; - alice_sbd = db->get_account( "alice" ).sbd_balance; - - generate_blocks( db->head_block_time() + fc::seconds( STEEM_SBD_INTEREST_COMPOUND_INTERVAL_SEC / 2 ), true ); - - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( transfer ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance.amount.value == alice_sbd.amount.value - ASSET( "1.000 TBD" ).amount.value ); - validate_database(); - - auto alice_coindays = uint128_t( alice_sbd.amount.value ) * ( db->head_block_time() - start_time ).to_seconds(); - alice_sbd = db->get_account( "alice" ).sbd_balance; - start_time = db->get_account( "alice" ).sbd_seconds_last_update; - - BOOST_TEST_MESSAGE( "Testing longer interest period" ); - - generate_blocks( db->head_block_time() + fc::seconds( ( STEEM_SBD_INTEREST_COMPOUND_INTERVAL_SEC * 7 ) / 3 ), true ); - - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( transfer ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( static_cast(db->get_account( "alice" ).sbd_balance.amount.value) == alice_sbd.amount.value - ASSET( "1.000 TBD" ).amount.value + ( ( ( ( uint128_t( alice_sbd.amount.value ) * ( db->head_block_time() - start_time ).to_seconds() + alice_coindays ) / STEEM_SECONDS_PER_YEAR ) * gpo.sbd_interest_rate ) / STEEM_100_PERCENT ).to_uint64() ); - validate_database(); - } - FC_LOG_AND_RETHROW(); -} - -BOOST_AUTO_TEST_CASE( liquidity_rewards ) -{ - using std::abs; - - try - { - db->liquidity_rewards_enabled = false; - - ACTORS( (alice)(bob)(sam)(dave) ) - generate_block(); - vest( "alice", ASSET( "10.000 TESTS" ) ); - vest( "bob", ASSET( "10.000 TESTS" ) ); - vest( "sam", ASSET( "10.000 TESTS" ) ); - vest( "dave", ASSET( "10.000 TESTS" ) ); - - BOOST_TEST_MESSAGE( "Rewarding Bob with TESTS" ); - - auto exchange_rate = price( ASSET( "1.000 TBD" ), ASSET( "1.250 TESTS" ) ); - set_price_feed( exchange_rate ); - - signed_transaction tx; - - fund( "alice", ASSET( "25.522 TBD" ) ); - asset alice_sbd = db->get_account( "alice" ).sbd_balance; - - generate_block(); - - fund( "alice", alice_sbd.amount ); - fund( "bob", alice_sbd.amount ); - fund( "sam", alice_sbd.amount ); - fund( "dave", alice_sbd.amount ); - - int64_t alice_sbd_volume = 0; - int64_t alice_steem_volume = 0; - time_point_sec alice_reward_last_update = fc::time_point_sec::min(); - int64_t bob_sbd_volume = 0; - int64_t bob_steem_volume = 0; - time_point_sec bob_reward_last_update = fc::time_point_sec::min(); - int64_t sam_sbd_volume = 0; - int64_t sam_steem_volume = 0; - time_point_sec sam_reward_last_update = fc::time_point_sec::min(); - int64_t dave_sbd_volume = 0; - int64_t dave_steem_volume = 0; - time_point_sec dave_reward_last_update = fc::time_point_sec::min(); - - BOOST_TEST_MESSAGE( "Creating Limit Order for STEEM that will stay on the books for 30 minutes exactly." ); - - limit_order_create_operation op; - op.owner = "alice"; - op.amount_to_sell = asset( alice_sbd.amount.value / 20, SBD_SYMBOL ) ; - op.min_to_receive = op.amount_to_sell * exchange_rate; - op.orderid = 1; - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "Waiting 10 minutes" ); - - generate_blocks( db->head_block_time() + STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10, true ); - - BOOST_TEST_MESSAGE( "Creating Limit Order for SBD that will be filled immediately." ); - - op.owner = "bob"; - op.min_to_receive = op.amount_to_sell; - op.amount_to_sell = op.min_to_receive * exchange_rate; - op.fill_or_kill = false; - op.orderid = 2; - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_steem_volume += ( asset( alice_sbd.amount / 20, SBD_SYMBOL ) * exchange_rate ).amount.value; - alice_reward_last_update = db->head_block_time(); - bob_steem_volume -= ( asset( alice_sbd.amount / 20, SBD_SYMBOL ) * exchange_rate ).amount.value; - bob_reward_last_update = db->head_block_time(); - - auto ops = get_last_operations( 1 ); - const auto& liquidity_idx = db->get_index< liquidity_reward_balance_index >().indices().get< by_owner >(); - const auto& limit_order_idx = db->get_index< limit_order_index >().indices().get< by_account >(); - - auto reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - auto fill_order_op = ops[0].get< fill_order_operation >(); - - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 1 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == asset( alice_sbd.amount.value / 20, SBD_SYMBOL ).amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 2 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == ( asset( alice_sbd.amount.value / 20, SBD_SYMBOL ) * exchange_rate ).amount.value ); - - BOOST_CHECK( limit_order_idx.find( std::make_tuple( "alice", 1 ) ) == limit_order_idx.end() ); - BOOST_CHECK( limit_order_idx.find( std::make_tuple( "bob", 2 ) ) == limit_order_idx.end() ); - - BOOST_TEST_MESSAGE( "Creating Limit Order for SBD that will stay on the books for 60 minutes." ); - - op.owner = "sam"; - op.amount_to_sell = asset( ( alice_sbd.amount.value / 20 ), STEEM_SYMBOL ); - op.min_to_receive = asset( ( alice_sbd.amount.value / 20 ), SBD_SYMBOL ); - op.orderid = 3; - - tx.signatures.clear(); - tx.operations.clear(); - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "Waiting 10 minutes" ); - - generate_blocks( db->head_block_time() + STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10, true ); - - BOOST_TEST_MESSAGE( "Creating Limit Order for SBD that will stay on the books for 30 minutes." ); - - op.owner = "bob"; - op.orderid = 4; - op.amount_to_sell = asset( ( alice_sbd.amount.value / 10 ) * 3 - alice_sbd.amount.value / 20, STEEM_SYMBOL ); - op.min_to_receive = asset( ( alice_sbd.amount.value / 10 ) * 3 - alice_sbd.amount.value / 20, SBD_SYMBOL ); - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "Waiting 30 minutes" ); - - generate_blocks( db->head_block_time() + STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10, true ); - - BOOST_TEST_MESSAGE( "Filling both limit orders." ); - - op.owner = "alice"; - op.orderid = 5; - op.amount_to_sell = asset( ( alice_sbd.amount.value / 10 ) * 3, SBD_SYMBOL ); - op.min_to_receive = asset( ( alice_sbd.amount.value / 10 ) * 3, STEEM_SYMBOL ); - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_sbd_volume -= ( alice_sbd.amount.value / 10 ) * 3; - alice_reward_last_update = db->head_block_time(); - sam_sbd_volume += alice_sbd.amount.value / 20; - sam_reward_last_update = db->head_block_time(); - bob_sbd_volume += ( alice_sbd.amount.value / 10 ) * 3 - ( alice_sbd.amount.value / 20 ); - bob_reward_last_update = db->head_block_time(); - ops = get_last_operations( 4 ); - - fill_order_op = ops[1].get< fill_order_operation >(); - BOOST_REQUIRE( fill_order_op.open_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 4 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == asset( ( alice_sbd.amount.value / 10 ) * 3 - alice_sbd.amount.value / 20, STEEM_SYMBOL ).amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 5 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == asset( ( alice_sbd.amount.value / 10 ) * 3 - alice_sbd.amount.value / 20, SBD_SYMBOL ).amount.value ); - - fill_order_op = ops[3].get< fill_order_operation >(); - BOOST_REQUIRE( fill_order_op.open_owner == "sam" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 3 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == asset( alice_sbd.amount.value / 20, STEEM_SYMBOL ).amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 5 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == asset( alice_sbd.amount.value / 20, SBD_SYMBOL ).amount.value ); - - reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - BOOST_TEST_MESSAGE( "Testing a partial fill before minimum time and full fill after minimum time" ); - - op.orderid = 6; - op.amount_to_sell = asset( alice_sbd.amount.value / 20 * 2, SBD_SYMBOL ); - op.min_to_receive = asset( alice_sbd.amount.value / 20 * 2, STEEM_SYMBOL ); - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->head_block_time() + fc::seconds( STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10.to_seconds() / 2 ), true ); - - op.owner = "bob"; - op.orderid = 7; - op.amount_to_sell = asset( alice_sbd.amount.value / 20, STEEM_SYMBOL ); - op.min_to_receive = asset( alice_sbd.amount.value / 20, SBD_SYMBOL ); - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->head_block_time() + fc::seconds( STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10.to_seconds() / 2 ), true ); - - ops = get_last_operations( 3 ); - fill_order_op = ops[2].get< fill_order_operation >(); - - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 6 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == asset( alice_sbd.amount.value / 20, SBD_SYMBOL ).amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 7 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == asset( alice_sbd.amount.value / 20, STEEM_SYMBOL ).amount.value ); - - reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - generate_blocks( db->head_block_time() + STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10, true ); - - op.owner = "sam"; - op.orderid = 8; - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_steem_volume += alice_sbd.amount.value / 20; - alice_reward_last_update = db->head_block_time(); - sam_steem_volume -= alice_sbd.amount.value / 20; - sam_reward_last_update = db->head_block_time(); - - ops = get_last_operations( 2 ); - fill_order_op = ops[1].get< fill_order_operation >(); - - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 6 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == asset( alice_sbd.amount.value / 20, SBD_SYMBOL ).amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "sam" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 8 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == asset( alice_sbd.amount.value / 20, STEEM_SYMBOL ).amount.value ); - - reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - BOOST_TEST_MESSAGE( "Trading to give Alice and Bob positive volumes to receive rewards" ); - - transfer_operation transfer; - transfer.to = "dave"; - transfer.from = "alice"; - transfer.amount = asset( alice_sbd.amount / 2, SBD_SYMBOL ); - - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( transfer ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "alice"; - op.amount_to_sell = asset( 8 * ( alice_sbd.amount.value / 20 ), STEEM_SYMBOL ); - op.min_to_receive = asset( op.amount_to_sell.amount, SBD_SYMBOL ); - op.orderid = 9; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->head_block_time() + STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10, true ); - - op.owner = "dave"; - op.amount_to_sell = asset( 7 * ( alice_sbd.amount.value / 20 ), SBD_SYMBOL );; - op.min_to_receive = asset( op.amount_to_sell.amount, STEEM_SYMBOL ); - op.orderid = 10; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( dave_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_sbd_volume += op.amount_to_sell.amount.value; - alice_reward_last_update = db->head_block_time(); - dave_sbd_volume -= op.amount_to_sell.amount.value; - dave_reward_last_update = db->head_block_time(); - - ops = get_last_operations( 1 ); - fill_order_op = ops[0].get< fill_order_operation >(); - - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 9 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == 7 * ( alice_sbd.amount.value / 20 ) ); - BOOST_REQUIRE( fill_order_op.current_owner == "dave" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 10 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == 7 * ( alice_sbd.amount.value / 20 ) ); - - reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "dave" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "dave" ).id ); - BOOST_REQUIRE( reward->sbd_volume == dave_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == dave_steem_volume ); - BOOST_CHECK( reward->last_update == dave_reward_last_update );*/ - - op.owner = "bob"; - op.amount_to_sell.amount = alice_sbd.amount / 20; - op.min_to_receive.amount = op.amount_to_sell.amount; - op.orderid = 11; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_sbd_volume += op.amount_to_sell.amount.value; - alice_reward_last_update = db->head_block_time(); - bob_sbd_volume -= op.amount_to_sell.amount.value; - bob_reward_last_update = db->head_block_time(); - - ops = get_last_operations( 1 ); - fill_order_op = ops[0].get< fill_order_operation >(); - - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 9 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == alice_sbd.amount.value / 20 ); - BOOST_REQUIRE( fill_order_op.current_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 11 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == alice_sbd.amount.value / 20 ); - - reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "dave" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "dave" ).id ); - BOOST_REQUIRE( reward->sbd_volume == dave_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == dave_steem_volume ); - BOOST_CHECK( reward->last_update == dave_reward_last_update );*/ - - transfer.to = "bob"; - transfer.from = "alice"; - transfer.amount = asset( alice_sbd.amount / 5, SBD_SYMBOL ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( transfer ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "bob"; - op.orderid = 12; - op.amount_to_sell = asset( 3 * ( alice_sbd.amount / 40 ), SBD_SYMBOL ); - op.min_to_receive = asset( op.amount_to_sell.amount, STEEM_SYMBOL ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->head_block_time() + STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10, true ); - - op.owner = "dave"; - op.orderid = 13; - op.amount_to_sell = op.min_to_receive; - op.min_to_receive.symbol = SBD_SYMBOL; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( dave_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - bob_steem_volume += op.amount_to_sell.amount.value; - bob_reward_last_update = db->head_block_time(); - dave_steem_volume -= op.amount_to_sell.amount.value; - dave_reward_last_update = db->head_block_time(); - - ops = get_last_operations( 1 ); - fill_order_op = ops[0].get< fill_order_operation >(); - - BOOST_REQUIRE( fill_order_op.open_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 12 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == 3 * ( alice_sbd.amount.value / 40 ) ); - BOOST_REQUIRE( fill_order_op.current_owner == "dave" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 13 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == 3 * ( alice_sbd.amount.value / 40 ) ); - - reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "dave" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "dave" ).id ); - BOOST_REQUIRE( reward->sbd_volume == dave_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == dave_steem_volume ); - BOOST_CHECK( reward->last_update == dave_reward_last_update );*/ - - auto alice_balance = db->get_account( "alice" ).balance; - auto bob_balance = db->get_account( "bob" ).balance; - auto sam_balance = db->get_account( "sam" ).balance; - auto dave_balance = db->get_account( "dave" ).balance; - - BOOST_TEST_MESSAGE( "Generating Blocks to trigger liquidity rewards" ); - - db->liquidity_rewards_enabled = true; - generate_blocks( STEEM_LIQUIDITY_REWARD_BLOCKS - ( db->head_block_num() % STEEM_LIQUIDITY_REWARD_BLOCKS ) - 1 ); - - BOOST_REQUIRE( db->head_block_num() % STEEM_LIQUIDITY_REWARD_BLOCKS == STEEM_LIQUIDITY_REWARD_BLOCKS - 1 ); - BOOST_REQUIRE( db->get_account( "alice" ).balance.amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "bob" ).balance.amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "sam" ).balance.amount.value == sam_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "dave" ).balance.amount.value == dave_balance.amount.value ); - - generate_block(); - - //alice_balance += STEEM_MIN_LIQUIDITY_REWARD; - - BOOST_REQUIRE( db->get_account( "alice" ).balance.amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "bob" ).balance.amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "sam" ).balance.amount.value == sam_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "dave" ).balance.amount.value == dave_balance.amount.value ); - - ops = get_last_operations( 1 ); - - STEEM_REQUIRE_THROW( ops[0].get< liquidity_reward_operation>(), fc::exception ); - //BOOST_REQUIRE( ops[0].get< liquidity_reward_operation>().payout.amount.value == STEEM_MIN_LIQUIDITY_REWARD.amount.value ); - - generate_blocks( STEEM_LIQUIDITY_REWARD_BLOCKS ); - - //bob_balance += STEEM_MIN_LIQUIDITY_REWARD; - - BOOST_REQUIRE( db->get_account( "alice" ).balance.amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "bob" ).balance.amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "sam" ).balance.amount.value == sam_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "dave" ).balance.amount.value == dave_balance.amount.value ); - - ops = get_last_operations( 1 ); - - STEEM_REQUIRE_THROW( ops[0].get< liquidity_reward_operation>(), fc::exception ); - //BOOST_REQUIRE( ops[0].get< liquidity_reward_operation>().payout.amount.value == STEEM_MIN_LIQUIDITY_REWARD.amount.value ); - - alice_steem_volume = 0; - alice_sbd_volume = 0; - bob_steem_volume = 0; - bob_sbd_volume = 0; - - BOOST_TEST_MESSAGE( "Testing liquidity timeout" ); - - generate_blocks( sam_reward_last_update + STEEM_LIQUIDITY_TIMEOUT_SEC - fc::seconds( STEEM_BLOCK_INTERVAL / 2 ) - STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC , true ); - - op.owner = "sam"; - op.orderid = 14; - op.amount_to_sell = ASSET( "1.000 TESTS" ); - op.min_to_receive = ASSET( "1.000 TBD" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->head_block_time() + ( STEEM_BLOCK_INTERVAL / 2 ) + STEEM_LIQUIDITY_TIMEOUT_SEC, true ); - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - /*BOOST_REQUIRE( reward == liquidity_idx.end() ); - BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - generate_block(); - - op.owner = "alice"; - op.orderid = 15; - op.amount_to_sell.symbol = SBD_SYMBOL; - op.min_to_receive.symbol = STEEM_SYMBOL; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - sam_sbd_volume = ASSET( "1.000 TBD" ).amount.value; - sam_steem_volume = 0; - sam_reward_last_update = db->head_block_time(); - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - /*BOOST_REQUIRE( reward == liquidity_idx.end() ); - BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_sbd_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - } - FC_LOG_AND_RETHROW(); -} - -BOOST_AUTO_TEST_CASE( post_rate_limit ) +BOOST_AUTO_TEST_CASE( vesting_withdrawals ) { try { ACTORS( (alice) ) + fund( AN("alice"), 100000000 ); + vest( AN("alice"), 100000000 ); - fund( "alice", 10000 ); - vest( "alice", 10000 ); + const auto& new_alice = db->get_account( AN("alice") ); - comment_operation op; - op.author = "alice"; - op.permlink = "test1"; - op.parent_author = ""; - op.parent_permlink = "test"; - op.body = "test"; + BOOST_TEST_MESSAGE( "Setting up withdrawal" ); signed_transaction tx; - + withdraw_vesting_operation op; + op.account = AN("alice"); + op.vesting_shares = asset( new_alice.vesting_shares.amount / 2, VESTS_SYMBOL ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test1" ) ).reward_weight == STEEM_100_PERCENT ); + auto next_withdrawal = db->head_block_time() + SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS; + asset vesting_shares = new_alice.vesting_shares; + asset to_withdraw = op.vesting_shares; + asset original_vesting = vesting_shares; + asset withdraw_rate = new_alice.vesting_withdraw_rate; - tx.operations.clear(); - tx.signatures.clear(); + BOOST_TEST_MESSAGE( "Generating block up to first withdrawal" ); + generate_blocks( next_withdrawal - ( SOPHIATX_BLOCK_INTERVAL / 2 ), true); - generate_blocks( db->head_block_time() + STEEM_MIN_ROOT_COMMENT_INTERVAL + fc::seconds( STEEM_BLOCK_INTERVAL ), true ); + BOOST_REQUIRE( db->get_account( AN("alice") ).vesting_shares.amount.value == vesting_shares.amount.value ); - op.permlink = "test2"; + BOOST_TEST_MESSAGE( "Generating block to cause withdrawal" ); + generate_block(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + auto fill_op = get_last_operations( 1 )[0].get< fill_vesting_withdraw_operation >(); + auto gpo = db->get_dynamic_global_properties(); - BOOST_REQUIRE( db->get_comment( "alice", string( "test2" ) ).reward_weight == STEEM_100_PERCENT ); + BOOST_REQUIRE( db->get_account( AN("alice") ).vesting_shares.amount.value == ( vesting_shares - withdraw_rate ).amount.value ); + BOOST_REQUIRE( ( withdraw_rate ).amount.value - db->get_account( AN("alice") ).balance.amount.value <= 1 ); // Check a range due to differences in the share price + BOOST_REQUIRE( fill_op.from_account == AN("alice") ); + BOOST_REQUIRE( fill_op.to_account == AN("alice") ); + BOOST_REQUIRE( fill_op.withdrawn.amount.value == withdraw_rate.amount.value ); + BOOST_REQUIRE( std::abs( fill_op.deposited.amount.value - fill_op.withdrawn.amount.value ) <= 1 ); + validate_database(); - generate_blocks( db->head_block_time() + STEEM_MIN_ROOT_COMMENT_INTERVAL + fc::seconds( STEEM_BLOCK_INTERVAL ), true ); + BOOST_TEST_MESSAGE( "Generating the rest of the blocks in the withdrawal" ); - tx.operations.clear(); - tx.signatures.clear(); + vesting_shares = db->get_account( AN("alice") ).vesting_shares; + auto balance = db->get_account( AN("alice") ).balance; + auto old_next_vesting = db->get_account( AN("alice") ).next_vesting_withdrawal; - op.permlink = "test3"; + for( int i = 1; i < SOPHIATX_VESTING_WITHDRAW_INTERVALS - 1; i++ ) + { + generate_blocks( db->head_block_time() + SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS ); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + const auto& alice = db->get_account( AN("alice") ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test3" ) ).reward_weight == STEEM_100_PERCENT ); + gpo = db->get_dynamic_global_properties(); + fill_op = get_last_operations( 1 )[0].get< fill_vesting_withdraw_operation >(); - generate_blocks( db->head_block_time() + STEEM_MIN_ROOT_COMMENT_INTERVAL + fc::seconds( STEEM_BLOCK_INTERVAL ), true ); + BOOST_REQUIRE( alice.vesting_shares.amount.value == ( vesting_shares - withdraw_rate ).amount.value ); + BOOST_REQUIRE( balance.amount.value + ( withdraw_rate ).amount.value - alice.balance.amount.value <= 1 ); + BOOST_REQUIRE( fill_op.from_account == AN("alice") ); + BOOST_REQUIRE( fill_op.to_account == AN("alice") ); + BOOST_REQUIRE( fill_op.withdrawn.amount.value == withdraw_rate.amount.value ); + BOOST_REQUIRE( std::abs( fill_op.deposited.amount.value - fill_op.withdrawn.amount.value ) <= 1 ); - tx.operations.clear(); - tx.signatures.clear(); + if ( i == SOPHIATX_VESTING_WITHDRAW_INTERVALS - 1 ) + BOOST_REQUIRE( alice.next_vesting_withdrawal == fc::time_point_sec::maximum() ); + else + BOOST_REQUIRE( alice.next_vesting_withdrawal.sec_since_epoch() == ( old_next_vesting + SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS ).sec_since_epoch() ); - op.permlink = "test4"; + validate_database(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + vesting_shares = alice.vesting_shares; + balance = alice.balance; + old_next_vesting = alice.next_vesting_withdrawal; + } - BOOST_REQUIRE( db->get_comment( "alice", string( "test4" ) ).reward_weight == STEEM_100_PERCENT ); + if ( to_withdraw.amount.value % withdraw_rate.amount.value != 0 ) + { + BOOST_TEST_MESSAGE( "Generating one more block to take care of remainder" ); + generate_blocks( db->head_block_time() + SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS, true ); + fill_op = get_last_operations( 1 )[0].get< fill_vesting_withdraw_operation >(); + gpo = db->get_dynamic_global_properties(); - generate_blocks( db->head_block_time() + STEEM_MIN_ROOT_COMMENT_INTERVAL + fc::seconds( STEEM_BLOCK_INTERVAL ), true ); + BOOST_REQUIRE( db->get_account( AN("alice") ).next_vesting_withdrawal.sec_since_epoch() == ( old_next_vesting + SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS ).sec_since_epoch() ); + BOOST_REQUIRE( fill_op.from_account == AN("alice") ); + BOOST_REQUIRE( fill_op.to_account == AN("alice") ); + BOOST_REQUIRE( fill_op.withdrawn.amount.value == withdraw_rate.amount.value ); + BOOST_REQUIRE( std::abs( fill_op.deposited.amount.value - fill_op.withdrawn.amount.value ) <= 1 ); - tx.operations.clear(); - tx.signatures.clear(); + generate_blocks( db->head_block_time() + SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS, true ); + gpo = db->get_dynamic_global_properties(); + fill_op = get_last_operations( 1 )[0].get< fill_vesting_withdraw_operation >(); - op.permlink = "test5"; + BOOST_REQUIRE( db->get_account( AN("alice") ).next_vesting_withdrawal.sec_since_epoch() == fc::time_point_sec::maximum().sec_since_epoch() ); + BOOST_REQUIRE( fill_op.to_account == AN("alice") ); + BOOST_REQUIRE( fill_op.from_account == AN("alice") ); + BOOST_REQUIRE( fill_op.withdrawn.amount.value == to_withdraw.amount.value % withdraw_rate.amount.value ); + BOOST_REQUIRE( std::abs( fill_op.deposited.amount.value - fill_op.withdrawn.amount.value ) <= 1 ); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + validate_database(); + } + else + { + generate_blocks( db->head_block_time() + SOPHIATX_VESTING_WITHDRAW_INTERVAL_SECONDS, true ); + + BOOST_REQUIRE( db->get_account( AN("alice") ).next_vesting_withdrawal.sec_since_epoch() == fc::time_point_sec::maximum().sec_since_epoch() ); + + fill_op = get_last_operations( 1 )[0].get< fill_vesting_withdraw_operation >(); + BOOST_REQUIRE( fill_op.from_account == AN("alice") ); + BOOST_REQUIRE( fill_op.to_account == AN("alice") ); + BOOST_REQUIRE( fill_op.withdrawn.amount.value == withdraw_rate.amount.value ); + BOOST_REQUIRE( std::abs( fill_op.deposited.amount.value - fill_op.withdrawn.amount.value ) <= 1 ); + } - BOOST_REQUIRE( db->get_comment( "alice", string( "test5" ) ).reward_weight == STEEM_100_PERCENT ); + BOOST_REQUIRE( db->get_account( AN("alice") ).vesting_shares.amount.value == ( original_vesting - op.vesting_shares ).amount.value ); } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( comment_freeze ) +BOOST_AUTO_TEST_CASE( feed_publish_mean ) { try { - ACTORS( (alice)(bob)(sam)(dave) ) - fund( "alice", 10000 ); - fund( "bob", 10000 ); - fund( "sam", 10000 ); - fund( "dave", 10000 ); - - vest( "alice", 10000 ); - vest( "bob", 10000 ); - vest( "sam", 10000 ); - vest( "dave", 10000 ); - - auto exchange_rate = price( ASSET( "1.000 TBD" ), ASSET( "1.250 TESTS" ) ); - set_price_feed( exchange_rate ); - - signed_transaction tx; - - comment_operation comment; - comment.author = "alice"; - comment.parent_author = ""; - comment.permlink = "test"; - comment.parent_permlink = "test"; - comment.body = "test"; - - tx.operations.push_back( comment ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - comment.body = "test2"; + resize_shared_mem( 1024 * 1024 * 128 ); - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( comment ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - vote_operation vote; - vote.weight = STEEM_100_PERCENT; - vote.voter = "bob"; - vote.author = "alice"; - vote.permlink = "test"; + ACTORS( (alice0)(alice1)(alice2)(alice3)(alice4)(alice5)(alice6) ) - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( vote ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + BOOST_TEST_MESSAGE( "Setup" ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).last_payout == fc::time_point_sec::min() ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).cashout_time != fc::time_point_sec::min() ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).cashout_time != fc::time_point_sec::maximum() ); + generate_blocks( 30 / SOPHIATX_BLOCK_INTERVAL ); - generate_blocks( db->get_comment( "alice", string( "test" ) ).cashout_time, true ); + vector< string > accounts; + accounts.push_back( AN("alice0") ); + accounts.push_back( AN("alice1") ); + accounts.push_back( AN("alice2") ); + accounts.push_back( AN("alice3") ); + accounts.push_back( AN("alice4") ); + accounts.push_back( AN("alice5") ); + accounts.push_back( AN("alice6") ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).last_payout == db->head_block_time() ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).cashout_time == fc::time_point_sec::maximum() ); + vector< private_key_type > keys; + keys.push_back( alice0_private_key ); + keys.push_back( alice1_private_key ); + keys.push_back( alice2_private_key ); + keys.push_back( alice3_private_key ); + keys.push_back( alice4_private_key ); + keys.push_back( alice5_private_key ); + keys.push_back( alice6_private_key ); - vote.voter = "sam"; + vector< feed_publish_operation > ops; + vector< signed_transaction > txs; - tx.operations.clear(); - tx.signatures.clear(); + // Upgrade accounts to witnesses + for( int i = 0; i < 7; i++ ) + { + transfer( SOPHIATX_INIT_MINER_NAME, accounts[i], asset( SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE, SOPHIATX_SYMBOL ) ); + vest( accounts[i], SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE); + witness_create( accounts[i], keys[i], "foo.bar", keys[i].get_public_key(), 0 ); - tx.operations.push_back( vote ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).cashout_time == fc::time_point_sec::maximum() ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).net_rshares.value == 0 ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).abs_rshares.value == 0 ); + ops.push_back( feed_publish_operation() ); + ops[i].publisher = accounts[i]; - vote.voter = "bob"; - vote.weight = STEEM_100_PERCENT * -1; + txs.push_back( signed_transaction() ); + } - tx.operations.clear(); - tx.signatures.clear(); + ops[0].exchange_rate = price( asset( 1000, SBD1_SYMBOL ), asset( 100000, SOPHIATX_SYMBOL ) ); + ops[1].exchange_rate = price( asset( 1000, SBD1_SYMBOL ), asset( 105000, SOPHIATX_SYMBOL ) ); + ops[2].exchange_rate = price( asset( 1000, SBD1_SYMBOL ), asset( 98000, SOPHIATX_SYMBOL ) ); + ops[3].exchange_rate = price( asset( 1000, SBD1_SYMBOL ), asset( 97000, SOPHIATX_SYMBOL ) ); + ops[4].exchange_rate = price( asset( 1000, SBD1_SYMBOL ), asset( 99000, SOPHIATX_SYMBOL ) ); + ops[5].exchange_rate = price( asset( 1000, SBD1_SYMBOL ), asset( 97500, SOPHIATX_SYMBOL ) ); + ops[6].exchange_rate = price( asset( 1000, SBD1_SYMBOL ), asset( 102000, SOPHIATX_SYMBOL ) ); - tx.operations.push_back( vote ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); + for( int i = 0; i < 7; i++ ) + { + txs[i].set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + txs[i].operations.push_back( ops[i] ); + txs[i].sign( keys[i], db->get_chain_id() ); + db->push_transaction( txs[i], 0 ); + } - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).cashout_time == fc::time_point_sec::maximum() ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).net_rshares.value == 0 ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).abs_rshares.value == 0 ); + BOOST_TEST_MESSAGE( "Jump forward an hour" ); - vote.voter = "dave"; - vote.weight = 0; + generate_blocks( SOPHIATX_BLOCKS_PER_HOUR ); // Jump forward 1 hour + BOOST_TEST_MESSAGE( "Get feed history object" ); + feed_history_object feed_history = db->get_feed_history(SBD1_SYMBOL); + BOOST_TEST_MESSAGE( "Check state" ); + BOOST_REQUIRE( feed_history.current_median_history == price( asset( 1000, SBD1_SYMBOL ), asset( 99000, SOPHIATX_SYMBOL) ) ); + BOOST_REQUIRE( feed_history.price_history[ 0 ] == price( asset( 1000, SBD1_SYMBOL ), asset( 99000, SOPHIATX_SYMBOL) ) ); + validate_database(); - tx.operations.clear(); - tx.signatures.clear(); + for ( int i = 0; i < 23; i++ ) + { + BOOST_TEST_MESSAGE( "Updating ops" ); - tx.operations.push_back( vote ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( dave_private_key, db->get_chain_id() ); + for( int j = 0; j < 7; j++ ) + { + txs[j].operations.clear(); + txs[j].signatures.clear(); + ops[j].exchange_rate = price( ops[j].exchange_rate.base, asset( ops[j].exchange_rate.quote.amount + 10, SOPHIATX_SYMBOL ) ); + txs[j].set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + txs[j].operations.push_back( ops[j] ); + txs[j].sign( keys[j], db->get_chain_id() ); + db->push_transaction( txs[j], 0 ); + } - db->push_transaction( tx, 0 ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).cashout_time == fc::time_point_sec::maximum() ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).net_rshares.value == 0 ); - BOOST_REQUIRE( db->get_comment( "alice", string( "test" ) ).abs_rshares.value == 0 ); + BOOST_TEST_MESSAGE( "Generate Blocks" ); - comment.body = "test4"; + generate_blocks( SOPHIATX_BLOCKS_PER_HOUR ); // Jump forward 1 hour - tx.operations.clear(); - tx.signatures.clear(); + BOOST_TEST_MESSAGE( "Check feed_history" ); - tx.operations.push_back( comment ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); // Works now in #1714 + feed_history = db->get_feed_history(SBD1_SYMBOL); + BOOST_REQUIRE( feed_history.current_median_history == ops[4].exchange_rate ); + //BOOST_REQUIRE( feed_history.price_history[ i + 1 ] == ops[4].exchange_rate ); + validate_database(); + } } - FC_LOG_AND_RETHROW() + FC_LOG_AND_RETHROW(); } -// This test is too intensive without optimizations. Disable it when we build in debug -#ifndef DEBUG -BOOST_AUTO_TEST_CASE( sbd_stability ) +BOOST_AUTO_TEST_CASE( interests ) { - try - { - resize_shared_mem( 1024 * 1024 * 512 ); // Due to number of blocks in the test, it requires a large file. (64 MB) + try{ + ACTORS( (alice)(bob) ) + generate_block(); + fund(AN("alice"), 100000000); + fund(AN("bob"), 1000000000); - auto debug_key = "5JdouSvkK75TKWrJixYufQgePT21V7BAVWbNUWt3ktqhPmy8Z78"; //get_dev_key debug node + generate_blocks( SOPHIATX_INTEREST_DELAY ); + generate_blocks( SOPHIATX_INTEREST_BLOCKS ); + share_type expected_interest = 3 * SOPHIATX_INTEREST_BLOCKS * 1000 * 65 / (SOPHIATX_COINBASE_BLOCKS / 10000) / 7; - ACTORS( (alice)(bob)(sam)(dave)(greg) ); + auto interest_op = get_last_operations( 1, AN("bob") )[0].get< interest_operation >(); + BOOST_REQUIRE( interest_op.owner == AN("bob") ); + BOOST_REQUIRE( interest_op.interest.amount == expected_interest || interest_op.interest.amount == expected_interest + 1 ); //leave some space for rounding + BOOST_REQUIRE( db->get_account( AN("alice") ).balance.amount.value >= 100000000 + expected_interest/10 && db->get_account( AN("alice") ).balance.amount.value <= 100000000 + 2*expected_interest/10); + validate_database(); - fund( "alice", 10000 ); - fund( "bob", 10000 ); + }FC_LOG_AND_RETHROW() +} - vest( "alice", 10000 ); - vest( "bob", 10000 ); - auto exchange_rate = price( ASSET( "1.000 TBD" ), ASSET( "10.000 TESTS" ) ); - set_price_feed( exchange_rate ); +BOOST_AUTO_TEST_CASE( witness_increase_vesting) +{ + try{ + BOOST_TEST_MESSAGE( "Testing: witness_increase_vesting" ); + ACTORS( (alice)(bob) ) + fund( AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + vest( AN("alice"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); - BOOST_REQUIRE( db->get_dynamic_global_properties().sbd_print_rate == STEEM_100_PERCENT ); + private_key_type signing_key = generate_private_key( "new_key" ); - comment_operation comment; - comment.author = "alice"; - comment.permlink = "test"; - comment.parent_permlink = "test"; - comment.title = "test"; - comment.body = "test"; + BOOST_TEST_MESSAGE( "--- Test upgrading an account to a witness" ); + witness_update_operation op; + op.owner = AN("alice"); + op.url = "foo.bar"; + op.block_signing_key = signing_key.get_public_key(); + op.props.account_creation_fee = ASSET("1.000000 SPHTX"); + op.props.maximum_block_size = SOPHIATX_MIN_BLOCK_SIZE_LIMIT + 100; signed_transaction tx; - tx.operations.push_back( comment ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.operations.push_back( op ); tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - vote_operation vote; - vote.voter = "bob"; - vote.author = "alice"; - vote.permlink = "test"; - vote.weight = STEEM_100_PERCENT; - - tx.operations.clear(); - tx.signatures.clear(); - - tx.operations.push_back( vote ); - tx.sign( bob_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - BOOST_TEST_MESSAGE( "Generating blocks up to comment payout" ); - - db_plugin->debug_generate_blocks_until( debug_key, fc::time_point_sec( db->get_comment( comment.author, comment.permlink ).cashout_time.sec_since_epoch() - 2 * STEEM_BLOCK_INTERVAL ), true, database::skip_witness_signature ); - - auto& gpo = db->get_dynamic_global_properties(); - - BOOST_TEST_MESSAGE( "Changing sam and gpo to set up market cap conditions" ); - - asset sbd_balance = asset( ( gpo.virtual_supply.amount * ( STEEM_SBD_STOP_PERCENT + 30 ) ) / STEEM_100_PERCENT, STEEM_SYMBOL ) * exchange_rate; - db_plugin->debug_update( [=]( database& db ) - { - db.modify( db.get_account( "sam" ), [&]( account_object& a ) - { - a.sbd_balance = sbd_balance; - }); - }, database::skip_witness_signature ); - - db_plugin->debug_update( [=]( database& db ) - { - db.modify( db.get_dynamic_global_properties(), [&]( dynamic_global_property_object& gpo ) - { - gpo.current_sbd_supply = sbd_balance; - gpo.virtual_supply = gpo.virtual_supply + sbd_balance * exchange_rate; - }); - }, database::skip_witness_signature ); - - validate_database(); - - db_plugin->debug_generate_blocks( debug_key, 1, database::skip_witness_signature ); + const witness_object& alice_witness = db->get_witness( AN("alice") ); - auto comment_reward = ( gpo.total_reward_fund_steem.amount + 2000 ) - ( ( gpo.total_reward_fund_steem.amount + 2000 ) * 25 * STEEM_1_PERCENT ) / STEEM_100_PERCENT ; - comment_reward /= 2; - auto sbd_reward = ( comment_reward * gpo.sbd_print_rate ) / STEEM_100_PERCENT; - auto alice_sbd = db->get_account( "alice" ).sbd_balance + db->get_account( "alice" ).reward_sbd_balance + asset( sbd_reward, STEEM_SYMBOL ) * exchange_rate; - auto alice_steem = db->get_account( "alice" ).balance + db->get_account( "alice" ).reward_steem_balance ; + BOOST_REQUIRE( alice_witness.owner == AN("alice") ); - BOOST_TEST_MESSAGE( "Checking printing SBD has slowed" ); - BOOST_REQUIRE( db->get_dynamic_global_properties().sbd_print_rate < STEEM_100_PERCENT ); - - BOOST_TEST_MESSAGE( "Pay out comment and check rewards are paid as STEEM" ); - db_plugin->debug_generate_blocks( debug_key, 1, database::skip_witness_signature ); + generate_block(); - validate_database(); + withdraw_vesting_operation wop; + wop.account = AN(AN("alice")); + wop.vesting_shares = ASSET("1000.000000 SPHTX"); - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance + db->get_account( "alice" ).reward_sbd_balance == alice_sbd ); - BOOST_REQUIRE( db->get_account( "alice" ).balance + db->get_account( "alice" ).reward_steem_balance > alice_steem ); + tx.clear(); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); - BOOST_TEST_MESSAGE( "Letting percent market cap fall to 2% to verify printing of SBD turns back on" ); + tx.operations.push_back( wop ); + tx.sign( alice_private_key, db->get_chain_id() ); - // Get close to 1.5% for printing SBD to start again, but not all the way - db_plugin->debug_update( [=]( database& db ) - { - db.modify( db.get_account( "sam" ), [&]( account_object& a ) - { - a.sbd_balance = asset( ( 194 * sbd_balance.amount ) / 500, SBD_SYMBOL ); - }); - }, database::skip_witness_signature ); + SOPHIATX_REQUIRE_THROW(db->push_transaction( tx, 0 ), fc::exception); - db_plugin->debug_update( [=]( database& db ) - { - db.modify( db.get_dynamic_global_properties(), [&]( dynamic_global_property_object& gpo ) - { - gpo.current_sbd_supply = alice_sbd + asset( ( 194 * sbd_balance.amount ) / 500, SBD_SYMBOL ); - }); - }, database::skip_witness_signature ); - db_plugin->debug_generate_blocks( debug_key, 1, database::skip_witness_signature ); - validate_database(); - BOOST_REQUIRE( db->get_dynamic_global_properties().sbd_print_rate < STEEM_100_PERCENT ); + generate_blocks( SOPHIATX_BLOCKS_PER_DAY * 1); - auto last_print_rate = db->get_dynamic_global_properties().sbd_print_rate; - // Keep producing blocks until printing SBD is back - while( ( db->get_dynamic_global_properties().current_sbd_supply * exchange_rate ).amount >= ( db->get_dynamic_global_properties().virtual_supply.amount * STEEM_SBD_START_PERCENT ) / STEEM_100_PERCENT ) - { - auto& gpo = db->get_dynamic_global_properties(); - BOOST_REQUIRE( gpo.sbd_print_rate >= last_print_rate ); - last_print_rate = gpo.sbd_print_rate; - db_plugin->debug_generate_blocks( debug_key, 1, database::skip_witness_signature ); - validate_database(); - } + fund( AN("bob"), SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE ); + vest( AN("bob"), (SOPHIATX_INITIAL_WITNESS_REQUIRED_VESTING_BALANCE - 1000) ); - validate_database(); - BOOST_REQUIRE( db->get_dynamic_global_properties().sbd_print_rate == STEEM_100_PERCENT ); - } - FC_LOG_AND_RETHROW() -} -#endif + BOOST_TEST_MESSAGE( "--- Test upgrading an account to a witness shall fail due to insufficient funds" ); + op.owner = AN("bob"); + op.url = "foo.bar"; + op.block_signing_key = signing_key.get_public_key(); + op.props.account_creation_fee = ASSET("1.000000 SPHTX"); + op.props.maximum_block_size = SOPHIATX_MIN_BLOCK_SIZE_LIMIT + 100; -BOOST_AUTO_TEST_CASE( sbd_price_feed_limit ) -{ - try - { - ACTORS( (alice) ); - generate_block(); - vest( "alice", ASSET( "10.000 TESTS" ) ); + tx.clear(); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.operations.push_back( op ); + tx.sign( bob_private_key, db->get_chain_id() ); - price exchange_rate( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ); - set_price_feed( exchange_rate ); + SOPHIATX_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - comment_operation comment; - comment.author = "alice"; - comment.permlink = "test"; - comment.parent_permlink = "test"; - comment.title = "test"; - comment.body = "test"; + vest( AN("bob"), 1000 ); - vote_operation vote; - vote.voter = "alice"; - vote.author = "alice"; - vote.permlink = "test"; - vote.weight = STEEM_100_PERCENT; + tx.clear(); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); + tx.operations.push_back( op ); + tx.sign( bob_private_key, db->get_chain_id() ); - signed_transaction tx; - tx.operations.push_back( comment ); - tx.operations.push_back( vote ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); - generate_blocks( db->get_comment( "alice", string( "test" ) ).cashout_time, true ); + const witness_object& bob_witness = db->get_witness( AN("bob") ); - BOOST_TEST_MESSAGE( "Setting SBD percent to greater than 10% market cap." ); + BOOST_REQUIRE( bob_witness.owner == AN("bob") ); - db->skip_price_feed_limit_check = false; - const auto& gpo = db->get_dynamic_global_properties(); - auto new_exchange_rate = price( gpo.current_sbd_supply, asset( ( STEEM_100_PERCENT ) * gpo.current_supply.amount, STEEM_SYMBOL ) ); - set_price_feed( new_exchange_rate ); - set_price_feed( new_exchange_rate ); - BOOST_REQUIRE( db->get_feed_history().current_median_history > new_exchange_rate && db->get_feed_history().current_median_history < exchange_rate ); - } - FC_LOG_AND_RETHROW() + }FC_LOG_AND_RETHROW() } BOOST_AUTO_TEST_CASE( clear_null_account ) { - try + /*try { BOOST_TEST_MESSAGE( "Testing clearing the null account's balances on block" ); @@ -2861,27 +373,27 @@ BOOST_AUTO_TEST_CASE( clear_null_account ) transfer_operation transfer1; transfer1.from = "alice"; - transfer1.to = STEEM_NULL_ACCOUNT; + transfer1.to = SOPHIATX_NULL_ACCOUNT; transfer1.amount = ASSET( "1.000 TESTS" ); transfer_operation transfer2; transfer2.from = "alice"; - transfer2.to = STEEM_NULL_ACCOUNT; + transfer2.to = SOPHIATX_NULL_ACCOUNT; transfer2.amount = ASSET( "2.000 TBD" ); transfer_to_vesting_operation vest; vest.from = "alice"; - vest.to = STEEM_NULL_ACCOUNT; + vest.to = SOPHIATX_NULL_ACCOUNT; vest.amount = ASSET( "3.000 TESTS" ); transfer_to_savings_operation save1; save1.from = "alice"; - save1.to = STEEM_NULL_ACCOUNT; + save1.to = SOPHIATX_NULL_ACCOUNT; save1.amount = ASSET( "4.000 TESTS" ); transfer_to_savings_operation save2; save2.from = "alice"; - save2.to = STEEM_NULL_ACCOUNT; + save2.to = SOPHIATX_NULL_ACCOUNT; save2.amount = ASSET( "5.000 TBD" ); BOOST_TEST_MESSAGE( "--- Transferring to NULL Account" ); @@ -2892,42 +404,41 @@ BOOST_AUTO_TEST_CASE( clear_null_account ) tx.operations.push_back( vest ); tx.operations.push_back( save1); tx.operations.push_back( save2 ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); + tx.set_expiration( db->head_block_time() + SOPHIATX_MAX_TIME_UNTIL_EXPIRATION ); tx.sign( alice_private_key, db->get_chain_id() ); db->push_transaction( tx, 0 ); validate_database(); db_plugin->debug_update( [=]( database& db ) { - db.modify( db.get_account( STEEM_NULL_ACCOUNT ), [&]( account_object& a ) + db.modify( db.get_account( SOPHIATX_NULL_ACCOUNT ), [&]( account_object& a ) { - a.reward_steem_balance = ASSET( "1.000 TESTS" ); + a.reward_sophiatx_balance = ASSET( "1.000 TESTS" ); a.reward_sbd_balance = ASSET( "1.000 TBD" ); a.reward_vesting_balance = ASSET( "1.000000 VESTS" ); - a.reward_vesting_steem = ASSET( "1.000 TESTS" ); + a.reward_vesting_sophiatx = ASSET( "1.000 TESTS" ); }); db.modify( db.get_dynamic_global_properties(), [&]( dynamic_global_property_object& gpo ) { gpo.current_supply += ASSET( "2.000 TESTS" ); - gpo.virtual_supply += ASSET( "3.000 TESTS" ); gpo.current_sbd_supply += ASSET( "1.000 TBD" ); gpo.pending_rewarded_vesting_shares += ASSET( "1.000000 VESTS" ); - gpo.pending_rewarded_vesting_steem += ASSET( "1.000 TESTS" ); + gpo.pending_rewarded_vesting_sophiatx += ASSET( "1.000 TESTS" ); }); }); validate_database(); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).balance == ASSET( "1.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).sbd_balance == ASSET( "2.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).vesting_shares > ASSET( "0.000000 VESTS" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).savings_balance == ASSET( "4.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).savings_sbd_balance == ASSET( "5.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).reward_sbd_balance == ASSET( "1.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).reward_steem_balance == ASSET( "1.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).reward_vesting_balance == ASSET( "1.000000 VESTS" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).reward_vesting_steem == ASSET( "1.000 TESTS" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).balance == ASSET( "1.000 TESTS" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).sbd_balance == ASSET( "2.000 TBD" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).vesting_shares > ASSET( "0.000000 VESTS" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).savings_balance == ASSET( "4.000 TESTS" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).savings_sbd_balance == ASSET( "5.000 TBD" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).reward_sbd_balance == ASSET( "1.000 TBD" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).reward_sophiatx_balance == ASSET( "1.000 TESTS" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).reward_vesting_balance == ASSET( "1.000000 VESTS" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).reward_vesting_sophiatx == ASSET( "1.000 TESTS" ) ); BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "2.000 TESTS" ) ); BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance == ASSET( "3.000 TBD" ) ); @@ -2935,20 +446,19 @@ BOOST_AUTO_TEST_CASE( clear_null_account ) generate_block(); validate_database(); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).balance == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).vesting_shares == ASSET( "0.000000 VESTS" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).savings_balance == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).savings_sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).reward_sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).reward_steem_balance == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).reward_vesting_balance == ASSET( "0.000000 VESTS" ) ); - BOOST_REQUIRE( db->get_account( STEEM_NULL_ACCOUNT ).reward_vesting_steem == ASSET( "0.000 TESTS" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).balance == ASSET( "0.000 TESTS" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).sbd_balance == ASSET( "0.000 TBD" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).vesting_shares == ASSET( "0.000000 VESTS" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).savings_balance == ASSET( "0.000 TESTS" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).savings_sbd_balance == ASSET( "0.000 TBD" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).reward_sbd_balance == ASSET( "0.000 TBD" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).reward_sophiatx_balance == ASSET( "0.000 TESTS" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).reward_vesting_balance == ASSET( "0.000000 VESTS" ) ); + BOOST_REQUIRE( db->get_account( SOPHIATX_NULL_ACCOUNT ).reward_vesting_sophiatx == ASSET( "0.000 TESTS" ) ); BOOST_REQUIRE( db->get_account( "alice" ).balance == ASSET( "2.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance == ASSET( "3.000 TBD" ) ); + BOOST_REQUIRE( db->get_account( AN("alice") ).sbd_balance == ASSET( "3.000 TBD" ) ); } - FC_LOG_AND_RETHROW() + FC_LOG_AND_RETHROW()*/ } BOOST_AUTO_TEST_SUITE_END() -#endif diff --git a/tests/tests/serialization_tests.cpp b/tests/tests/serialization_tests.cpp index 58370cb4..8f4ae854 100644 --- a/tests/tests/serialization_tests.cpp +++ b/tests/tests/serialization_tests.cpp @@ -21,14 +21,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -#ifdef IS_TEST_NET +//#ifdef IS_TEST_NET #include -#include -#include +#include +#include -#include -#include +#include +#include #include #include @@ -38,9 +38,9 @@ #include -using namespace steem; -using namespace steem::chain; -using namespace steem::protocol; +using namespace sophiatx; +using namespace sophiatx::chain; +using namespace sophiatx::protocol; BOOST_FIXTURE_TEST_SUITE( serialization_tests, clean_database_fixture ) @@ -67,17 +67,17 @@ BOOST_AUTO_TEST_CASE( account_name_type_test ) auto packed_long_string = fc::raw::pack( std::string( "12345678901234567890" ) ); auto unpacked = fc::raw::unpack>( packed_long_string ); idump( (unpacked) ); -} -*/ +}*/ + BOOST_AUTO_TEST_CASE( serialization_raw_test ) { try { ACTORS( (alice)(bob) ) transfer_operation op; - op.from = "alice"; - op.to = "bob"; - op.amount = asset(100,STEEM_SYMBOL); + op.from = AN("alice"); + op.to = AN("bob"); + op.amount = asset(100,SOPHIATX_SYMBOL); trx.operations.push_back( op ); auto packed = fc::raw::pack_to_vector( trx ); @@ -94,9 +94,9 @@ BOOST_AUTO_TEST_CASE( serialization_json_test ) try { ACTORS( (alice)(bob) ) transfer_operation op; - op.from = "alice"; - op.to = "bob"; - op.amount = asset(100,STEEM_SYMBOL); + op.from = AN("alice"); + op.to = AN("bob"); + op.amount = asset(100,SOPHIATX_SYMBOL); fc::variant test(op.amount); auto tmp = test.as(); @@ -117,66 +117,66 @@ BOOST_AUTO_TEST_CASE( legacy_asset_test ) { try { - using steem::plugins::condenser_api::legacy_asset; + using sophiatx::plugins::condenser_api::legacy_asset; - BOOST_CHECK_EQUAL( legacy_asset().symbol.decimals(), 3 ); - BOOST_CHECK_EQUAL( legacy_asset().to_string(), "0.000 TESTS" ); + BOOST_CHECK_EQUAL( legacy_asset().symbol.decimals(), 6 ); + BOOST_CHECK_EQUAL( legacy_asset().to_string(), "0.000000 SPHTX" ); BOOST_TEST_MESSAGE( "Asset Test" ); - legacy_asset steem = legacy_asset::from_string( "123.456 TESTS" ); - legacy_asset sbd = legacy_asset::from_string( "654.321 TBD" ); - legacy_asset tmp = legacy_asset::from_string( "0.456 TESTS" ); - BOOST_CHECK_EQUAL( tmp.amount.value, 456 ); - tmp = legacy_asset::from_string( "0.056 TESTS" ); - BOOST_CHECK_EQUAL( tmp.amount.value, 56 ); - - BOOST_CHECK_EQUAL( steem.amount.value, 123456 ); - BOOST_CHECK_EQUAL( steem.symbol.decimals(), 3 ); - BOOST_CHECK_EQUAL( steem.to_string(), "123.456 TESTS" ); - BOOST_CHECK( steem.symbol == STEEM_SYMBOL ); - BOOST_CHECK_EQUAL( legacy_asset::from_asset( asset( 50, STEEM_SYMBOL ) ).to_string(), "0.050 TESTS" ); - BOOST_CHECK_EQUAL( legacy_asset::from_asset( asset(50000, STEEM_SYMBOL ) ) .to_string(), "50.000 TESTS" ); - - BOOST_CHECK_EQUAL( sbd.amount.value, 654321 ); - BOOST_CHECK_EQUAL( sbd.symbol.decimals(), 3 ); - BOOST_CHECK_EQUAL( sbd.to_string(), "654.321 TBD" ); - BOOST_CHECK( sbd.symbol == SBD_SYMBOL ); - BOOST_CHECK_EQUAL( legacy_asset::from_asset( asset(50, SBD_SYMBOL ) ).to_string(), "0.050 TBD" ); - BOOST_CHECK_EQUAL( legacy_asset::from_asset( asset(50000, SBD_SYMBOL ) ).to_string(), "50.000 TBD" ); - - BOOST_CHECK_THROW( legacy_asset::from_string( "1.00000000000000000000 TESTS" ), fc::exception ); - BOOST_CHECK_THROW( legacy_asset::from_string( "1.000TESTS" ), fc::exception ); - BOOST_CHECK_THROW( legacy_asset::from_string( "1. 333 TESTS" ), fc::exception ); // Fails because symbol is '333 TESTS', which is too long - BOOST_CHECK_THROW( legacy_asset::from_string( "1 .333 TESTS" ), fc::exception ); - BOOST_CHECK_THROW( legacy_asset::from_string( "1. 333 X" ), fc::exception ); // Not a system asset + legacy_asset sophiatx = legacy_asset::from_string( "123.456000 SPHTX" ); + legacy_asset sbd = legacy_asset::from_string( "654.321000 USD" ); + legacy_asset tmp = legacy_asset::from_string( "0.456000 SPHTX" ); + BOOST_CHECK_EQUAL( tmp.amount.value, 456000 ); + tmp = legacy_asset::from_string( "0.056000 SPHTX" ); + BOOST_CHECK_EQUAL( tmp.amount.value, 56000 ); + + BOOST_CHECK_EQUAL( sophiatx.amount.value, 123456000 ); + BOOST_CHECK_EQUAL( sophiatx.symbol.decimals(), 6 ); + BOOST_CHECK_EQUAL( sophiatx.to_string(), "123.456000 SPHTX" ); + BOOST_CHECK( sophiatx.symbol == SOPHIATX_SYMBOL ); + BOOST_CHECK_EQUAL( legacy_asset::from_asset( asset( 50000, SOPHIATX_SYMBOL ) ).to_string(), "0.050000 SPHTX" ); + BOOST_CHECK_EQUAL( legacy_asset::from_asset( asset(50000000, SOPHIATX_SYMBOL ) ) .to_string(), "50.000000 SPHTX" ); + + BOOST_CHECK_EQUAL( sbd.amount.value, 654321000 ); + BOOST_CHECK_EQUAL( sbd.symbol.decimals(), 6 ); + BOOST_CHECK_EQUAL( sbd.to_string(), "654.321000 USD" ); + BOOST_CHECK( sbd.symbol == SBD1_SYMBOL ); + BOOST_CHECK_EQUAL( legacy_asset::from_asset( asset(50000, SBD1_SYMBOL ) ).to_string(), "0.050000 USD" ); + BOOST_CHECK_EQUAL( legacy_asset::from_asset( asset(50000000, SBD1_SYMBOL ) ).to_string(), "50.000000 USD" ); + + BOOST_CHECK_THROW( legacy_asset::from_string( "1.00000000000000000000 SPHTX" ), fc::exception ); + BOOST_CHECK_THROW( legacy_asset::from_string( "1.000SPHTX" ), fc::exception ); + BOOST_CHECK_THROW( legacy_asset::from_string( "1. 333 SPHTX" ), fc::exception ); // Fails because symbol is '333 SPHTX', which is too long + BOOST_CHECK_THROW( legacy_asset::from_string( "1 .333 SPHTX" ), fc::exception ); + //BOOST_CHECK_THROW( legacy_asset::from_string( "1. 333 X" ), fc::exception ); // Not a system asset BOOST_CHECK_THROW( legacy_asset::from_string( "1 .333 X" ), fc::exception ); BOOST_CHECK_THROW( legacy_asset::from_string( "1 .333" ), fc::exception ); BOOST_CHECK_THROW( legacy_asset::from_string( "1 1.1" ), fc::exception ); - BOOST_CHECK_THROW( legacy_asset::from_string( "11111111111111111111111111111111111111111111111 TESTS" ), fc::exception ); - BOOST_CHECK_THROW( legacy_asset::from_string( "1.1.1 TESTS" ), fc::exception ); - BOOST_CHECK_THROW( legacy_asset::from_string( "1.abc TESTS" ), fc::exception ); - BOOST_CHECK_THROW( legacy_asset::from_string( " TESTS" ), fc::exception ); - BOOST_CHECK_THROW( legacy_asset::from_string( "TESTS" ), fc::exception ); + BOOST_CHECK_THROW( legacy_asset::from_string( "11111111111111111111111111111111111111111111111 SPHTX" ), fc::exception ); + BOOST_CHECK_THROW( legacy_asset::from_string( "1.1.1 SPHTX" ), fc::exception ); + BOOST_CHECK_THROW( legacy_asset::from_string( "1.abc SPHTX" ), fc::exception ); + BOOST_CHECK_THROW( legacy_asset::from_string( " SPHTX" ), fc::exception ); + BOOST_CHECK_THROW( legacy_asset::from_string( "SPHTX" ), fc::exception ); BOOST_CHECK_THROW( legacy_asset::from_string( "1.333" ), fc::exception ); BOOST_CHECK_THROW( legacy_asset::from_string( "1.333 " ), fc::exception ); BOOST_CHECK_THROW( legacy_asset::from_string( "" ), fc::exception ); BOOST_CHECK_THROW( legacy_asset::from_string( " " ), fc::exception ); BOOST_CHECK_THROW( legacy_asset::from_string( " " ), fc::exception ); - BOOST_CHECK_THROW( legacy_asset::from_string( "100 TESTS" ), fc::exception ); // Does not match system asset precision + //BOOST_CHECK_THROW( legacy_asset::from_string( "100 SPHTX" ), fc::exception ); // Does not match system asset precision } FC_LOG_AND_RETHROW() } -BOOST_AUTO_TEST_CASE( asset_test ) +/*BOOST_AUTO_TEST_CASE( asset_test ) { try { fc::string s; - BOOST_CHECK_EQUAL( asset().symbol.decimals(), 3 ); + BOOST_CHECK_EQUAL( asset().symbol.decimals(), 6 ); BOOST_CHECK_EQUAL( fc::json::to_string( asset() ), "[\"0\",3,\"@@000000021\"]" ); - asset steem = fc::json::from_string( "[\"123456\", 3, \"@@000000021\"]" ).as< asset >(); + asset sophiatx = fc::json::from_string( "[\"123456\", 3, \"@@000000021\"]" ).as< asset >(); asset sbd = fc::json::from_string( "[\"654321\", 3, \"@@000000013\"]" ).as< asset >(); asset vests = fc::json::from_string( "[\"123456789\", 6, \"@@000000037\"]" ).as< asset >(); asset tmp = fc::json::from_string( "[\"456\", 3, \"@@000000021\"]" ).as< asset >(); @@ -184,24 +184,24 @@ BOOST_AUTO_TEST_CASE( asset_test ) tmp = fc::json::from_string( "[\"56\", 3, \"@@000000021\"]" ).as< asset >(); BOOST_CHECK_EQUAL( tmp.amount.value, 56 ); - BOOST_CHECK_EQUAL( steem.amount.value, 123456 ); - BOOST_CHECK_EQUAL( steem.symbol.decimals(), 3 ); - BOOST_CHECK_EQUAL( fc::json::to_string( steem ), "[\"123456\",3,\"@@000000021\"]" ); - BOOST_CHECK( steem.symbol.asset_num == STEEM_ASSET_NUM_STEEM ); - BOOST_CHECK_EQUAL( fc::json::to_string( asset( 50, STEEM_SYMBOL ) ), "[\"50\",3,\"@@000000021\"]" ); - BOOST_CHECK_EQUAL( fc::json::to_string( asset( 50000, STEEM_SYMBOL ) ), "[\"50000\",3,\"@@000000021\"]" ); + BOOST_CHECK_EQUAL( sophiatx.amount.value, 123456 ); + BOOST_CHECK_EQUAL( sophiatx.symbol.decimals(), 3 ); + BOOST_CHECK_EQUAL( fc::json::to_string( sophiatx ), "[\"123456\",3,\"@@000000021\"]" ); + BOOST_CHECK( sophiatx.symbol == SOPHIATX_SYMBOL ); + BOOST_CHECK_EQUAL( fc::json::to_string( asset( 50, SOPHIATX_SYMBOL ) ), "[\"50\",3,\"@@000000021\"]" ); + BOOST_CHECK_EQUAL( fc::json::to_string( asset( 50000, SOPHIATX_SYMBOL ) ), "[\"50000\",3,\"@@000000021\"]" ); BOOST_CHECK_EQUAL( sbd.amount.value, 654321 ); BOOST_CHECK_EQUAL( sbd.symbol.decimals(), 3 ); BOOST_CHECK_EQUAL( fc::json::to_string( sbd ), "[\"654321\",3,\"@@000000013\"]" ); - BOOST_CHECK( sbd.symbol.asset_num == STEEM_ASSET_NUM_SBD ); - BOOST_CHECK_EQUAL( fc::json::to_string( asset( 50, SBD_SYMBOL ) ), "[\"50\",3,\"@@000000013\"]" ); - BOOST_CHECK_EQUAL( fc::json::to_string( asset( 50000, SBD_SYMBOL ) ), "[\"50000\",3,\"@@000000013\"]" ); + BOOST_CHECK( sbd.symbol == SBD1_SYMBOL ); + BOOST_CHECK_EQUAL( fc::json::to_string( asset( 50, SBD1_SYMBOL ) ), "[\"50\",3,\"@@000000013\"]" ); + BOOST_CHECK_EQUAL( fc::json::to_string( asset( 50000, SBD1_SYMBOL ) ), "[\"50000\",3,\"@@000000013\"]" ); BOOST_CHECK_EQUAL( vests.amount.value, 123456789 ); BOOST_CHECK_EQUAL( vests.symbol.decimals(), 6 ); BOOST_CHECK_EQUAL( fc::json::to_string( vests ), "[\"123456789\",6,\"@@000000037\"]" ); - BOOST_CHECK( vests.symbol.asset_num == STEEM_ASSET_NUM_VESTS ); + BOOST_CHECK( vests.symbol == VESTS_SYMBOL ); BOOST_CHECK_EQUAL( fc::json::to_string( asset( 50, VESTS_SYMBOL ) ), "[\"50\",6,\"@@000000037\"]" ); BOOST_CHECK_EQUAL( fc::json::to_string( asset( 50000, VESTS_SYMBOL ) ), "[\"50000\",6,\"@@000000037\"]" ); @@ -231,7 +231,7 @@ BOOST_AUTO_TEST_CASE( asset_test ) BOOST_CHECK_EQUAL( fc::json::from_string( "[\"08000\",3,\"@@000000021\"]" ).as< asset >().amount.value, 8000 ); } FC_LOG_AND_RETHROW() -} +}*/ template< typename T > std::string hex_bytes( const T& obj ) @@ -249,22 +249,22 @@ std::string hex_bytes( const T& obj ) void old_pack_symbol(vector& v, asset_symbol_type sym) { - if( sym == STEEM_SYMBOL ) + if( sym == SOPHIATX_SYMBOL ) { - v.push_back('\x03'); v.push_back('T' ); v.push_back('E' ); v.push_back('S' ); - v.push_back('T' ); v.push_back('S' ); v.push_back('\0'); v.push_back('\0'); + v.push_back('S' ); v.push_back('P' ); v.push_back('H' ); + v.push_back('T' ); v.push_back('X' ); v.push_back('\0'); v.push_back('\0'); v.push_back('\0'); // 03 54 45 53 54 53 00 00 } - else if( sym == SBD_SYMBOL ) + else if( sym == SBD1_SYMBOL ) { - v.push_back('\x03'); v.push_back('T' ); v.push_back('B' ); v.push_back('D' ); + v.push_back('U' ); v.push_back('S' ); v.push_back('D' ); v.push_back('\0' ); v.push_back('\0' ); v.push_back('\0'); v.push_back('\0'); v.push_back('\0'); // 03 54 42 44 00 00 00 00 } else if( sym == VESTS_SYMBOL ) { - v.push_back('\x06'); v.push_back('V' ); v.push_back('E' ); v.push_back('S' ); - v.push_back('T' ); v.push_back('S' ); v.push_back('\0'); v.push_back('\0'); + v.push_back('V' ); v.push_back('E' ); v.push_back('S' ); + v.push_back('T' ); v.push_back('S' ); v.push_back('\0'); v.push_back('\0'); v.push_back('\0'); // 06 56 45 53 54 53 00 00 } else @@ -292,7 +292,7 @@ void old_pack_asset( vector& v, const asset& a ) std::string old_json_asset( const asset& a ) { size_t decimal_places = 0; - if( (a.symbol == STEEM_SYMBOL) || (a.symbol == SBD_SYMBOL) ) + if( (a.symbol == SOPHIATX_SYMBOL) || (a.symbol == SBD1_SYMBOL) ) decimal_places = 3; else if( a.symbol == VESTS_SYMBOL ) decimal_places = 6; @@ -300,10 +300,10 @@ std::string old_json_asset( const asset& a ) ss << std::setfill('0') << std::setw(decimal_places+1) << a.amount.value; std::string result = ss.str(); result.insert( result.length() - decimal_places, 1, '.' ); - if( a.symbol == STEEM_SYMBOL ) - result += " TESTS"; - else if( a.symbol == SBD_SYMBOL ) - result += " TBD"; + if( a.symbol == SOPHIATX_SYMBOL ) + result += " SPHTX"; + else if( a.symbol == SBD1_SYMBOL ) + result += " USD"; else if( a.symbol == VESTS_SYMBOL ) result += " VESTS"; result.insert(0, 1, '"'); @@ -315,9 +315,6 @@ BOOST_AUTO_TEST_CASE( asset_raw_test ) { try { - BOOST_CHECK( SBD_SYMBOL < STEEM_SYMBOL ); - BOOST_CHECK( STEEM_SYMBOL < VESTS_SYMBOL ); - // get a bunch of random bits fc::sha256 h = fc::sha256::hash(""); @@ -327,21 +324,21 @@ BOOST_AUTO_TEST_CASE( asset_raw_test ) { uint64_t s = (uint64_t(1) << i); uint64_t x = (h._hash[0] & (s-1)) | s; - if( x >= STEEM_MAX_SHARE_SUPPLY ) + if( x >= SOPHIATX_MAX_SHARE_SUPPLY ) break; amounts.push_back( share_type( x ) ); } // ilog( "h0:${h0}", ("h0", h._hash[0]) ); -/* asset steem = asset::from_string( "0.001 TESTS" ); +/* asset sophiatx = asset::from_string( "0.001 SPHTX" ); #define VESTS_SYMBOL (uint64_t(6) | (uint64_t('V') << 8) | (uint64_t('E') << 16) | (uint64_t('S') << 24) | (uint64_t('T') << 32) | (uint64_t('S') << 40)) ///< VESTS with 6 digits of precision -#define STEEM_SYMBOL (uint64_t(3) | (uint64_t('T') << 8) | (uint64_t('E') << 16) | (uint64_t('S') << 24) | (uint64_t('T') << 32) | (uint64_t('S') << 40)) ///< STEEM with 3 digits of precision -#define SBD_SYMBOL (uint64_t(3) | (uint64_t('T') << 8) | (uint64_t('B') << 16) | (uint64_t('D') << 24) ) ///< Test Backed Dollars with 3 digits of precision +#define SOPHIATX_SYMBOL (uint64_t(3) | (uint64_t('T') << 8) | (uint64_t('E') << 16) | (uint64_t('S') << 24) | (uint64_t('T') << 32) | (uint64_t('S') << 40)) ///< SOPHIATX with 3 digits of precision +#define SBD1_SYMBOL (uint64_t(3) | (uint64_t('T') << 8) | (uint64_t('B') << 16) | (uint64_t('D') << 24) ) ///< Test Backed Dollars with 3 digits of precision */ std::vector< asset_symbol_type > symbols; - symbols.push_back( STEEM_SYMBOL ); - symbols.push_back( SBD_SYMBOL ); + symbols.push_back( SOPHIATX_SYMBOL ); + symbols.push_back( SBD1_SYMBOL ); symbols.push_back( VESTS_SYMBOL ); for( const share_type& amount : amounts ) @@ -456,19 +453,19 @@ BOOST_AUTO_TEST_CASE( version_test ) BOOST_REQUIRE( ver == version( 12, 34, 56 ) ); ver_str = fc::variant( "256.0.0" ); - STEEM_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); + SOPHIATX_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); ver_str = fc::variant( "0.256.0" ); - STEEM_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); + SOPHIATX_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); ver_str = fc::variant( "0.0.65536" ); - STEEM_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); + SOPHIATX_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); ver_str = fc::variant( "1.0" ); - STEEM_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); + SOPHIATX_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); ver_str = fc::variant( "1.0.0.1" ); - STEEM_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); + SOPHIATX_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); } FC_LOG_AND_RETHROW(); } @@ -501,20 +498,20 @@ BOOST_AUTO_TEST_CASE( hardfork_version_test ) BOOST_REQUIRE( ver == hardfork_version( 12, 34 ) ); ver_str = fc::variant( "256.0.0" ); - STEEM_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); + SOPHIATX_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); ver_str = fc::variant( "0.256.0" ); - STEEM_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); + SOPHIATX_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); ver_str = fc::variant( "0.0.1" ); fc::from_variant( ver_str, ver ); BOOST_REQUIRE( ver == hardfork_version( 0, 0 ) ); ver_str = fc::variant( "1.0" ); - STEEM_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); + SOPHIATX_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); ver_str = fc::variant( "1.0.0.1" ); - STEEM_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); + SOPHIATX_REQUIRE_THROW( fc::from_variant( ver_str, ver ), fc::exception ); } FC_LOG_AND_RETHROW(); } @@ -522,31 +519,30 @@ BOOST_AUTO_TEST_CASE( hardfork_version_test ) BOOST_AUTO_TEST_CASE( min_block_size ) { signed_block b; - while( b.witness.length() < STEEM_MIN_ACCOUNT_NAME_LENGTH ) + while( b.witness.length() < SOPHIATX_MIN_ACCOUNT_NAME_LENGTH ) b.witness += 'a'; size_t min_size = fc::raw::pack_size( b ); - BOOST_CHECK( min_size == STEEM_MIN_BLOCK_SIZE ); + BOOST_CHECK( min_size == SOPHIATX_MIN_BLOCK_SIZE ); } BOOST_AUTO_TEST_CASE( legacy_signed_transaction ) { - using steem::plugins::condenser_api::legacy_signed_transaction; + using sophiatx::plugins::condenser_api::legacy_signed_transaction; signed_transaction tx; - vote_operation op; - op.voter = "alice"; - op.author = "bob"; - op.permlink = "foobar"; - op.weight = STEEM_100_PERCENT; + transfer_operation op; + op.from = AN("alice"); + op.to = AN("bob"); + op.amount = asset( 50, SOPHIATX_SYMBOL ); tx.ref_block_num = 4000; tx.ref_block_prefix = 4000000000; tx.expiration = fc::time_point_sec( 1514764800 ); tx.operations.push_back( op ); - signed_transaction tx2 = signed_transaction( fc::json::from_string( "{\"ref_block_num\":4000,\"ref_block_prefix\":4000000000,\"expiration\":\"2018-01-01T00:00:00\",\"operations\":[[\"vote\",{\"voter\":\"alice\",\"author\":\"bob\",\"permlink\":\"foobar\",\"weight\":10000}]],\"extensions\":[],\"signatures\":[\"\"]}" ).as< legacy_signed_transaction >() ); + signed_transaction tx2 = signed_transaction( fc::json::from_string( "{\"ref_block_num\":4000,\"ref_block_prefix\":4000000000,\"expiration\":\"2018-01-01T00:00:00\",\"operations\":[[\"transfer\",{\"from\":\"nbyckkPfkdV4OQtmdTh93QjB5CIA\",\"to\":\"8I1Pt6T2ovPJgEhTaMPP3Qv4uCoA\",\"amount\":\"0.000050 SPHTX\"}]],\"extensions\":[],\"signatures\":[\"\"]}" ).as< legacy_signed_transaction >() ); BOOST_REQUIRE( tx.id() == tx2.id() ); } BOOST_AUTO_TEST_SUITE_END() -#endif +//#endif diff --git a/tests/tests/smt_operation_tests.cpp b/tests/tests/smt_operation_tests.cpp deleted file mode 100644 index 462bc967..00000000 --- a/tests/tests/smt_operation_tests.cpp +++ /dev/null @@ -1,1193 +0,0 @@ -#include - -#if defined IS_TEST_NET && defined STEEM_ENABLE_SMT - -#include - -#include -#include - -#include -#include -#include -#include - -#include "../db_fixture/database_fixture.hpp" - -using namespace steem::chain; -using namespace steem::protocol; -using fc::string; -using boost::container::flat_set; - -BOOST_FIXTURE_TEST_SUITE( smt_operation_tests, smt_database_fixture ) - -BOOST_AUTO_TEST_CASE( smt_limit_order_create_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: smt_limit_order_create_authorities" ); - - ACTORS( (alice)(bob) ) - - limit_order_create_operation op; - - //Create SMT and give some SMT to creator. - signed_transaction tx; - asset_symbol_type alice_symbol = create_smt( "alice", alice_private_key, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - - op.owner = "alice"; - op.amount_to_sell = ASSET( "1.000 TESTS" ); - op.min_to_receive = asset( 1000, alice_symbol ); - - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - - BOOST_TEST_MESSAGE( "--- Test failure when no signature." ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - BOOST_TEST_MESSAGE( "--- Test success with account signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, database::skip_transaction_dupe_check ); - - BOOST_TEST_MESSAGE( "--- Test failure with duplicate signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_duplicate_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure with additional incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_irrelevant_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure with incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( smt_limit_order_create2_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: smt_limit_order_create2_authorities" ); - - ACTORS( (alice)(bob) ) - - limit_order_create2_operation op; - - //Create SMT and give some SMT to creator. - signed_transaction tx; - asset_symbol_type alice_symbol = create_smt( "alice", alice_private_key, 0 ); - - tx.operations.clear(); - tx.signatures.clear(); - - op.owner = "alice"; - op.amount_to_sell = ASSET( "1.000 TESTS" ); - op.exchange_rate = price( ASSET( "1.000 TESTS" ), asset( 1000, alice_symbol ) ); - - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - - BOOST_TEST_MESSAGE( "--- Test failure when no signature." ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - BOOST_TEST_MESSAGE( "--- Test success with account signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, database::skip_transaction_dupe_check ); - - BOOST_TEST_MESSAGE( "--- Test failure with duplicate signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_duplicate_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure with additional incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_irrelevant_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure with incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( smt_limit_order_create_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: limit_order_create_apply" ); - - ACTORS( (alice)(bob) ) - - //Create SMT and give some SMT to creators. - signed_transaction tx; - asset_symbol_type alice_symbol = create_smt( "alice", alice_private_key, 3); - - const account_object& alice_account = db->get_account( "alice" ); - const account_object& bob_account = db->get_account( "bob" ); - - asset alice_0 = asset( 0, alice_symbol ); - - FUND( "bob", 1000000 ); - convert( "bob", ASSET("1000.000 TESTS" ) ); - generate_block(); - - asset alice_smt_balance = asset( 1000000, alice_symbol ); - asset bob_smt_balance = asset( 1000000, alice_symbol ); - - asset alice_balance = alice_account.balance; - - asset bob_balance = bob_account.balance; - - FUND( "alice", alice_smt_balance ); - FUND( "bob", bob_smt_balance ); - - tx.operations.clear(); - tx.signatures.clear(); - - const auto& limit_order_idx = db->get_index< limit_order_index >().indices().get< by_account >(); - - BOOST_TEST_MESSAGE( "--- Test failure when account does not have required funds" ); - limit_order_create_operation op; - - op.owner = "bob"; - op.orderid = 1; - op.amount_to_sell = ASSET( "10.000 TESTS" ); - op.min_to_receive = asset( 10000, alice_symbol ); - op.fill_or_kill = false; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "bob", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure when amount to receive is 0" ); - - op.owner = "alice"; - op.min_to_receive = alice_0; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure when amount to sell is 0" ); - - op.amount_to_sell = alice_0; - op.min_to_receive = ASSET( "10.000 TESTS" ) ; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test success creating limit order that will not be filled" ); - - op.amount_to_sell = ASSET( "10.000 TESTS" ); - op.min_to_receive = asset( 15000, alice_symbol ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_balance -= ASSET( "10.000 TESTS" ); - - auto limit_order = limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == op.owner ); - BOOST_REQUIRE( limit_order->orderid == op.orderid ); - BOOST_REQUIRE( limit_order->for_sale == op.amount_to_sell.amount ); - BOOST_REQUIRE( limit_order->sell_price == price( op.amount_to_sell / op.min_to_receive ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( alice_symbol, STEEM_SYMBOL ) ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure creating limit order with duplicate id" ); - - op.amount_to_sell = ASSET( "20.000 TESTS" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - limit_order = limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == op.owner ); - BOOST_REQUIRE( limit_order->orderid == op.orderid ); - BOOST_REQUIRE( limit_order->for_sale == 10000 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "10.000 TESTS" ), op.min_to_receive ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( alice_symbol, STEEM_SYMBOL ) ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test sucess killing an order that will not be filled" ); - - op.orderid = 2; - op.fill_or_kill = true; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - validate_database(); - - // BOOST_TEST_MESSAGE( "--- Test having a partial match to limit order" ); - // // Alice has order for 15 SMT at a price of 2:3 - // // Fill 5 STEEM for 7.5 SMT - - op.owner = "bob"; - op.orderid = 1; - op.amount_to_sell = asset (7500, alice_symbol ); - op.min_to_receive = ASSET( "5.000 TESTS" ); - op.fill_or_kill = false; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - bob_smt_balance -= asset (7500, alice_symbol ); - alice_smt_balance += asset (7500, alice_symbol ); - bob_balance += ASSET( "5.000 TESTS" ); - - auto recent_ops = get_last_operations( 1 ); - auto fill_order_op = recent_ops[0].get< fill_order_operation >(); - - limit_order = limit_order_idx.find( std::make_tuple( "alice", 1 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "alice" ); - BOOST_REQUIRE( limit_order->orderid == op.orderid ); - BOOST_REQUIRE( limit_order->for_sale == 5000 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "10.000 TESTS" ), asset( 15000, alice_symbol ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( alice_symbol, STEEM_SYMBOL ) ); - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "bob", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 1 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == ASSET( "5.000 TESTS").amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 1 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == asset(7500, alice_symbol ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test filling an existing order fully, but the new order partially" ); - - op.amount_to_sell = asset( 15000, alice_symbol ); - op.min_to_receive = ASSET( "10.000 TESTS" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - bob_smt_balance -= asset( 15000, alice_symbol ); - alice_smt_balance += asset( 7500, alice_symbol ); - bob_balance += ASSET( "5.000 TESTS" ); - - limit_order = limit_order_idx.find( std::make_tuple( "bob", 1 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "bob" ); - BOOST_REQUIRE( limit_order->orderid == 1 ); - BOOST_REQUIRE( limit_order->for_sale.value == 7500 ); - BOOST_REQUIRE( limit_order->sell_price == price( asset( 15000, alice_symbol ), ASSET( "10.000 TESTS" ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( alice_symbol, STEEM_SYMBOL ) ); - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", 1 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test filling an existing order and new order fully" ); - - op.owner = "alice"; - op.orderid = 3; - op.amount_to_sell = ASSET( "5.000 TESTS" ); - op.min_to_receive = asset( 7500, alice_symbol ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_balance -= ASSET( "5.000 TESTS" ); - alice_smt_balance += asset( 7500, alice_symbol ); - bob_balance += ASSET( "5.000 TESTS" ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", 3 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "bob", 1 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test filling limit order with better order when partial order is better." ); - - op.owner = "alice"; - op.orderid = 4; - op.amount_to_sell = ASSET( "10.000 TESTS" ); - op.min_to_receive = asset( 11000, alice_symbol ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "bob"; - op.orderid = 4; - op.amount_to_sell = asset( 12000, alice_symbol ); - op.min_to_receive = ASSET( "10.000 TESTS" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_balance -= ASSET( "10.000 TESTS" ); - alice_smt_balance += asset( 11000, alice_symbol ); - bob_smt_balance -= asset( 12000, alice_symbol ); - bob_balance += ASSET( "10.000 TESTS" ); - - limit_order = limit_order_idx.find( std::make_tuple( "bob", 4 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order_idx.find(std::make_tuple( "alice", 4 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "bob" ); - BOOST_REQUIRE( limit_order->orderid == 4 ); - BOOST_REQUIRE( limit_order->for_sale.value == 1000 ); - BOOST_REQUIRE( limit_order->sell_price == price( asset( 12000, alice_symbol ), ASSET( "10.000 TESTS" ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( alice_symbol, STEEM_SYMBOL ) ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - validate_database(); - - limit_order_cancel_operation can; - can.owner = "bob"; - can.orderid = 4; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( can ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "--- Test filling limit order with better order when partial order is worse." ); - - //auto gpo = db->get_dynamic_global_properties(); - //auto start_sbd = gpo.current_sbd_supply; - - op.owner = "alice"; - op.orderid = 5; - op.amount_to_sell = ASSET( "20.000 TESTS" ); - op.min_to_receive = asset( 22000, alice_symbol ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "bob"; - op.orderid = 5; - op.amount_to_sell = asset( 12000, alice_symbol ); - op.min_to_receive = ASSET( "10.000 TESTS" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_balance -= ASSET( "20.000 TESTS" ); - alice_smt_balance += asset( 12000, alice_symbol ); - - bob_smt_balance -= asset( 11000, alice_symbol ); - bob_balance += ASSET( "10.909 TESTS" ); - - limit_order = limit_order_idx.find( std::make_tuple( "alice", 5 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order_idx.find(std::make_tuple( "bob", 5 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "alice" ); - BOOST_REQUIRE( limit_order->orderid == 5 ); - BOOST_REQUIRE( limit_order->for_sale.value == 9091 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "20.000 TESTS" ), asset( 22000, alice_symbol ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( alice_symbol, STEEM_SYMBOL ) ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( smt_limit_order_cancel_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: smt_limit_order_cancel_authorities" ); - - ACTORS( (alice)(bob) ) - - //Create SMT and give some SMT to creator. - signed_transaction tx; - asset_symbol_type alice_symbol = create_smt( "alice", alice_private_key, 3 ); - - FUND( "alice", asset( 100000, alice_symbol ) ); - - tx.operations.clear(); - tx.signatures.clear(); - - limit_order_create_operation c; - c.owner = "alice"; - c.orderid = 1; - c.amount_to_sell = ASSET( "1.000 TESTS" ); - c.min_to_receive = asset( 1000, alice_symbol ); - - tx.operations.push_back( c ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - limit_order_cancel_operation op; - op.owner = "alice"; - op.orderid = 1; - - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - - BOOST_TEST_MESSAGE( "--- Test failure when no signature." ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - BOOST_TEST_MESSAGE( "--- Test success with account signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, database::skip_transaction_dupe_check ); - - BOOST_TEST_MESSAGE( "--- Test failure with duplicate signature" ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_duplicate_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure with additional incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_private_key, db->get_chain_id() ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_irrelevant_sig ); - - BOOST_TEST_MESSAGE( "--- Test failure with incorrect signature" ); - tx.signatures.clear(); - tx.sign( alice_post_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, database::skip_transaction_dupe_check ), tx_missing_active_auth ); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( smt_limit_order_cancel_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: smt_limit_order_cancel_apply" ); - - ACTORS( (alice) ) - - //Create SMT and give some SMT to creator. - signed_transaction tx; - asset_symbol_type alice_symbol = create_smt( "alice", alice_private_key, 3 ); - - const account_object& alice_account = db->get_account( "alice" ); - - tx.operations.clear(); - tx.signatures.clear(); - - asset alice_smt_balance = asset( 1000000, alice_symbol ); - asset alice_balance = alice_account.balance; - - FUND( "alice", alice_smt_balance ); - - const auto& limit_order_idx = db->get_index< limit_order_index >().indices().get< by_account >(); - - BOOST_TEST_MESSAGE( "--- Test cancel non-existent order" ); - - limit_order_cancel_operation op; - - op.owner = "alice"; - op.orderid = 5; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_TEST_MESSAGE( "--- Test cancel order" ); - - limit_order_create_operation create; - create.owner = "alice"; - create.orderid = 5; - create.amount_to_sell = ASSET( "5.000 TESTS" ); - create.min_to_receive = asset( 7500, alice_symbol ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( create ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", 5 ) ) != limit_order_idx.end() ); - - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", 5 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( smt_limit_order_create2_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: limit_order_create2_apply" ); - - ACTORS( (alice)(bob) ) - - //Create SMT and give some SMT to creators. - signed_transaction tx; - asset_symbol_type alice_symbol = create_smt( "alice", alice_private_key, 3); - - const account_object& alice_account = db->get_account( "alice" ); - const account_object& bob_account = db->get_account( "bob" ); - - asset alice_0 = asset( 0, alice_symbol ); - - FUND( "bob", 1000000 ); - convert( "bob", ASSET("1000.000 TESTS" ) ); - generate_block(); - - asset alice_smt_balance = asset( 1000000, alice_symbol ); - asset bob_smt_balance = asset( 1000000, alice_symbol ); - - asset alice_balance = alice_account.balance; - - asset bob_balance = bob_account.balance; - - FUND( "alice", alice_smt_balance ); - FUND( "bob", bob_smt_balance ); - - tx.operations.clear(); - tx.signatures.clear(); - - const auto& limit_order_idx = db->get_index< limit_order_index >().indices().get< by_account >(); - - BOOST_TEST_MESSAGE( "--- Test failure when account does not have required funds" ); - limit_order_create2_operation op; - - op.owner = "bob"; - op.orderid = 1; - op.amount_to_sell = ASSET( "10.000 TESTS" ); - op.exchange_rate = price( ASSET( "1.000 TESTS" ), asset( 1000, alice_symbol ) ); - op.fill_or_kill = false; - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( bob_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "bob", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure when amount to receive is 0" ); - - op.owner = "alice"; - op.exchange_rate.base = ASSET( "0.000 TESTS" ); - op.exchange_rate.quote = alice_0; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure when amount to sell is 0" ); - - op.amount_to_sell = alice_0; - op.exchange_rate = price( ASSET( "1.000 TESTS" ), asset( 1000, alice_symbol ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test success creating limit order that will not be filled" ); - - op.amount_to_sell = ASSET( "10.000 TESTS" ); - op.exchange_rate = price( ASSET( "2.000 TESTS" ), asset( 3000, alice_symbol ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_balance -= ASSET( "10.000 TESTS" ); - - auto limit_order = limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == op.owner ); - BOOST_REQUIRE( limit_order->orderid == op.orderid ); - BOOST_REQUIRE( limit_order->for_sale == op.amount_to_sell.amount ); - BOOST_REQUIRE( limit_order->sell_price == op.exchange_rate ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( alice_symbol, STEEM_SYMBOL ) ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test failure creating limit order with duplicate id" ); - - op.amount_to_sell = ASSET( "20.000 TESTS" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - limit_order = limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == op.owner ); - BOOST_REQUIRE( limit_order->orderid == op.orderid ); - BOOST_REQUIRE( limit_order->for_sale == 10000 ); - BOOST_REQUIRE( limit_order->sell_price == op.exchange_rate ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( alice_symbol, STEEM_SYMBOL ) ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test sucess killing an order that will not be filled" ); - - op.orderid = 2; - op.fill_or_kill = true; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - STEEM_REQUIRE_THROW( db->push_transaction( tx, 0 ), fc::exception ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - validate_database(); - - // BOOST_TEST_MESSAGE( "--- Test having a partial match to limit order" ); - // // Alice has order for 15 SMT at a price of 2:3 - // // Fill 5 STEEM for 7.5 SMT - - op.owner = "bob"; - op.orderid = 1; - op.amount_to_sell = asset( 7500, alice_symbol ); - op.exchange_rate = price( asset( 3000, alice_symbol ), ASSET( "2.000 TESTS" ) ); - op.fill_or_kill = false; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - bob_smt_balance -= asset (7500, alice_symbol ); - alice_smt_balance += asset (7500, alice_symbol ); - bob_balance += ASSET( "5.000 TESTS" ); - - auto recent_ops = get_last_operations( 1 ); - auto fill_order_op = recent_ops[0].get< fill_order_operation >(); - - limit_order = limit_order_idx.find( std::make_tuple( "alice", 1 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "alice" ); - BOOST_REQUIRE( limit_order->orderid == op.orderid ); - BOOST_REQUIRE( limit_order->for_sale == 5000 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "2.000 TESTS" ), asset( 3000, alice_symbol ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( alice_symbol, STEEM_SYMBOL ) ); - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "bob", op.orderid ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 1 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == ASSET( "5.000 TESTS").amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 1 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == asset(7500, alice_symbol ).amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test filling an existing order fully, but the new order partially" ); - - op.amount_to_sell = asset( 15000, alice_symbol ); - op.exchange_rate = price( asset( 3000, alice_symbol ), ASSET( "2.000 TESTS" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - bob_smt_balance -= asset( 15000, alice_symbol ); - alice_smt_balance += asset( 7500, alice_symbol ); - bob_balance += ASSET( "5.000 TESTS" ); - - limit_order = limit_order_idx.find( std::make_tuple( "bob", 1 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "bob" ); - BOOST_REQUIRE( limit_order->orderid == 1 ); - BOOST_REQUIRE( limit_order->for_sale.value == 7500 ); - BOOST_REQUIRE( limit_order->sell_price == price( asset( 3000, alice_symbol ), ASSET( "2.000 TESTS" ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( alice_symbol, STEEM_SYMBOL ) ); - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", 1 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test filling an existing order and new order fully" ); - - op.owner = "alice"; - op.orderid = 3; - op.amount_to_sell = ASSET( "5.000 TESTS" ); - op.exchange_rate = price( ASSET( "2.000 TESTS" ), asset( 3000, alice_symbol ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_balance -= ASSET( "5.000 TESTS" ); - alice_smt_balance += asset( 7500, alice_symbol ); - bob_balance += ASSET( "5.000 TESTS" ); - - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "alice", 3 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( limit_order_idx.find( std::make_tuple( "bob", 1 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - validate_database(); - - BOOST_TEST_MESSAGE( "--- Test filling limit order with better order when partial order is better." ); - - op.owner = "alice"; - op.orderid = 4; - op.amount_to_sell = ASSET( "10.000 TESTS" ); - op.exchange_rate = price( ASSET( "1.000 TESTS" ), asset( 1100, alice_symbol ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "bob"; - op.orderid = 4; - op.amount_to_sell = asset( 12000, alice_symbol ); - op.exchange_rate = price( asset( 1200, alice_symbol ), ASSET( "1.000 TESTS" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_balance -= ASSET( "10.000 TESTS" ); - alice_smt_balance += asset( 11000, alice_symbol ); - bob_smt_balance -= asset( 12000, alice_symbol ); - bob_balance += ASSET( "10.000 TESTS" ); - - limit_order = limit_order_idx.find( std::make_tuple( "bob", 4 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order_idx.find(std::make_tuple( "alice", 4 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "bob" ); - BOOST_REQUIRE( limit_order->orderid == 4 ); - BOOST_REQUIRE( limit_order->for_sale.value == 1000 ); - BOOST_REQUIRE( limit_order->sell_price == op.exchange_rate ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( alice_symbol, STEEM_SYMBOL ) ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - validate_database(); - - limit_order_cancel_operation can; - can.owner = "bob"; - can.orderid = 4; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( can ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "--- Test filling limit order with better order when partial order is worse." ); - - //auto gpo = db->get_dynamic_global_properties(); - //auto start_sbd = gpo.current_sbd_supply; - - op.owner = "alice"; - op.orderid = 5; - op.amount_to_sell = ASSET( "20.000 TESTS" ); - op.exchange_rate = price( ASSET( "1.000 TESTS" ), asset( 1100, alice_symbol ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "bob"; - op.orderid = 5; - op.amount_to_sell = asset( 12000, alice_symbol ); - op.exchange_rate = price( asset( 1200, alice_symbol ), ASSET( "1.000 TESTS" ) ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_balance -= ASSET( "20.000 TESTS" ); - alice_smt_balance += asset( 12000, alice_symbol ); - - bob_smt_balance -= asset( 11000, alice_symbol ); - bob_balance += ASSET( "10.909 TESTS" ); - - limit_order = limit_order_idx.find( std::make_tuple( "alice", 5 ) ); - BOOST_REQUIRE( limit_order != limit_order_idx.end() ); - BOOST_REQUIRE( limit_order_idx.find(std::make_tuple( "bob", 5 ) ) == limit_order_idx.end() ); - BOOST_REQUIRE( limit_order->seller == "alice" ); - BOOST_REQUIRE( limit_order->orderid == 5 ); - BOOST_REQUIRE( limit_order->for_sale.value == 9091 ); - BOOST_REQUIRE( limit_order->sell_price == price( ASSET( "1.000 TESTS" ), asset( 1100, alice_symbol ) ) ); - BOOST_REQUIRE( limit_order->get_market() == std::make_pair( alice_symbol, STEEM_SYMBOL ) ); - BOOST_REQUIRE( db->get_balance( alice_account, alice_symbol ).amount.value == alice_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( alice_account, STEEM_SYMBOL ).amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, alice_symbol ).amount.value == bob_smt_balance.amount.value ); - BOOST_REQUIRE( db->get_balance( bob_account, STEEM_SYMBOL ).amount.value == bob_balance.amount.value ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( claim_reward_balance2_validate ) -{ - try - { - claim_reward_balance2_operation op; - op.account = "alice"; - - ACTORS( (alice) ) - - generate_block(); - - // Create SMT(s) and continue. - auto smts = create_smt_3("alice", alice_private_key); - const auto& smt1 = smts[0]; - const auto& smt2 = smts[1]; - const auto& smt3 = smts[2]; - - BOOST_TEST_MESSAGE( "Testing empty rewards" ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - - BOOST_TEST_MESSAGE( "Testing ineffective rewards" ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - // Manually inserted. - op.reward_tokens.push_back( ASSET( "0.000 TESTS" ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - op.reward_tokens.push_back( ASSET( "0.000 TBD" ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - op.reward_tokens.push_back( ASSET( "0.000000 VESTS" ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - op.reward_tokens.push_back( asset( 0, smt1 ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - op.reward_tokens.push_back( asset( 0, smt2 ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - op.reward_tokens.push_back( asset( 0, smt3 ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - - BOOST_TEST_MESSAGE( "Testing single reward claims" ); - op.reward_tokens.push_back( ASSET( "1.000 TESTS" ) ); - op.validate(); - op.reward_tokens.clear(); - - op.reward_tokens.push_back( ASSET( "1.000 TBD" ) ); - op.validate(); - op.reward_tokens.clear(); - - op.reward_tokens.push_back( ASSET( "1.000000 VESTS" ) ); - op.validate(); - op.reward_tokens.clear(); - - op.reward_tokens.push_back( asset( 1, smt1 ) ); - op.validate(); - op.reward_tokens.clear(); - - op.reward_tokens.push_back( asset( 1, smt2 ) ); - op.validate(); - op.reward_tokens.clear(); - - op.reward_tokens.push_back( asset( 1, smt3 ) ); - op.validate(); - op.reward_tokens.clear(); - - BOOST_TEST_MESSAGE( "Testing multiple rewards" ); - op.reward_tokens.push_back( ASSET( "1.000 TBD" ) ); - op.reward_tokens.push_back( ASSET( "1.000 TESTS" ) ); - op.reward_tokens.push_back( ASSET( "1.000000 VESTS" ) ); - op.reward_tokens.push_back( asset( 1, smt1 ) ); - op.reward_tokens.push_back( asset( 1, smt2 ) ); - op.reward_tokens.push_back( asset( 1, smt3 ) ); - op.validate(); - op.reward_tokens.clear(); - - BOOST_TEST_MESSAGE( "Testing invalid rewards" ); - op.reward_tokens.push_back( ASSET( "-1.000 TESTS" ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - op.reward_tokens.push_back( ASSET( "-1.000 TBD" ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - op.reward_tokens.push_back( ASSET( "-1.000000 VESTS" ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - op.reward_tokens.push_back( asset( -1, smt1 ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - op.reward_tokens.push_back( asset( -1, smt2 ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - op.reward_tokens.push_back( asset( -1, smt3 ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - - BOOST_TEST_MESSAGE( "Testing duplicated reward tokens." ); - op.reward_tokens.push_back( asset( 1, smt3 ) ); - op.reward_tokens.push_back( asset( 1, smt3 ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - - BOOST_TEST_MESSAGE( "Testing inconsistencies of manually inserted reward tokens." ); - op.reward_tokens.push_back( ASSET( "1.000 TESTS" ) ); - op.reward_tokens.push_back( ASSET( "1.000 TBD" ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.push_back( asset( 1, smt3 ) ); - op.reward_tokens.push_back( asset( 1, smt1 ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.reward_tokens.clear(); - op.reward_tokens.push_back( asset( 1, smt1 ) ); - op.reward_tokens.push_back( asset( -1, smt3 ) ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( claim_reward_balance2_authorities ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: decline_voting_rights_authorities" ); - - claim_reward_balance2_operation op; - op.account = "alice"; - - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; - - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_active_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - expected.insert( "alice" ); - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( claim_reward_balance2_apply ) -{ - try - { - BOOST_TEST_MESSAGE( "Testing: claim_reward_balance2_apply" ); - BOOST_TEST_MESSAGE( "--- Setting up test state" ); - - ACTORS( (alice) ) - generate_block(); - - auto smts = create_smt_3( "alice", alice_private_key ); - const auto& smt1 = smts[0]; - const auto& smt2 = smts[1]; - const auto& smt3 = smts[2]; - - FUND_SMT_REWARDS( "alice", asset( 10*std::pow(10, smt1.decimals()), smt1 ) ); - FUND_SMT_REWARDS( "alice", asset( 10*std::pow(10, smt2.decimals()), smt2 ) ); - FUND_SMT_REWARDS( "alice", asset( 10*std::pow(10, smt3.decimals()), smt3 ) ); - - db_plugin->debug_update( []( database& db ) - { - db.modify( db.get_account( "alice" ), []( account_object& a ) - { - a.reward_sbd_balance = ASSET( "10.000 TBD" ); - a.reward_steem_balance = ASSET( "10.000 TESTS" ); - a.reward_vesting_balance = ASSET( "10.000000 VESTS" ); - a.reward_vesting_steem = ASSET( "10.000 TESTS" ); - }); - - db.modify( db.get_dynamic_global_properties(), []( dynamic_global_property_object& gpo ) - { - gpo.current_sbd_supply += ASSET( "10.000 TBD" ); - gpo.current_supply += ASSET( "20.000 TESTS" ); - gpo.virtual_supply += ASSET( "20.000 TESTS" ); - gpo.pending_rewarded_vesting_shares += ASSET( "10.000000 VESTS" ); - gpo.pending_rewarded_vesting_steem += ASSET( "10.000 TESTS" ); - }); - }); - - generate_block(); - validate_database(); - - auto alice_steem = db->get_account( "alice" ).balance; - auto alice_sbd = db->get_account( "alice" ).sbd_balance; - auto alice_vests = db->get_account( "alice" ).vesting_shares; - auto alice_smt1 = db->get_balance( "alice", smt1 ); - auto alice_smt2 = db->get_balance( "alice", smt2 ); - auto alice_smt3 = db->get_balance( "alice", smt3 ); - - claim_reward_balance2_operation op; - op.account = "alice"; - - BOOST_TEST_MESSAGE( "--- Attempting to claim more than exists in the reward balance." ); - // Legacy symbols - op.reward_tokens.push_back( ASSET( "0.000 TBD" ) ); - op.reward_tokens.push_back( ASSET( "20.000 TESTS" ) ); - op.reward_tokens.push_back( ASSET( "0.000000 VESTS" ) ); - FAIL_WITH_OP(op, alice_private_key, fc::assert_exception); - op.reward_tokens.clear(); - // SMTs - op.reward_tokens.push_back( asset( 0, smt1 ) ); - op.reward_tokens.push_back( asset( 0, smt2 ) ); - op.reward_tokens.push_back( asset( 20*std::pow(10, smt3.decimals()), smt3 ) ); - FAIL_WITH_OP(op, alice_private_key, fc::assert_exception); - op.reward_tokens.clear(); - - BOOST_TEST_MESSAGE( "--- Claiming a partial reward balance" ); - // Legacy symbols - asset partial_vests = ASSET( "5.000000 VESTS" ); - op.reward_tokens.push_back( ASSET( "0.000 TBD" ) ); - op.reward_tokens.push_back( ASSET( "0.000 TESTS" ) ); - op.reward_tokens.push_back( partial_vests ); - PUSH_OP(op, alice_private_key); - BOOST_REQUIRE( db->get_account( "alice" ).balance == alice_steem + ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_steem_balance == ASSET( "10.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance == alice_sbd + ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_sbd_balance == ASSET( "10.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).vesting_shares == alice_vests + partial_vests ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_vesting_balance == ASSET( "5.000000 VESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_vesting_steem == ASSET( "5.000 TESTS" ) ); - validate_database(); - alice_vests += partial_vests; - op.reward_tokens.clear(); - // SMTs - asset partial_smt2 = asset( 5*std::pow(10, smt2.decimals()), smt2 ); - op.reward_tokens.push_back( asset( 0, smt1 ) ); - op.reward_tokens.push_back( partial_smt2 ); - op.reward_tokens.push_back( asset( 0, smt3 ) ); - PUSH_OP(op, alice_private_key); - BOOST_REQUIRE( db->get_balance( "alice", smt1 ) == alice_smt1 + asset( 0, smt1 ) ); - BOOST_REQUIRE( db->get_balance( "alice", smt2 ) == alice_smt2 + partial_smt2 ); - BOOST_REQUIRE( db->get_balance( "alice", smt3 ) == alice_smt3 + asset( 0, smt3 ) ); - validate_database(); - alice_smt2 += partial_smt2; - op.reward_tokens.clear(); - - BOOST_TEST_MESSAGE( "--- Claiming the full reward balance" ); - // Legacy symbols - asset full_steem = ASSET( "10.000 TESTS" ); - asset full_sbd = ASSET( "10.000 TBD" ); - op.reward_tokens.push_back( full_sbd ); - op.reward_tokens.push_back( full_steem ); - op.reward_tokens.push_back( partial_vests ); - PUSH_OP(op, alice_private_key); - BOOST_REQUIRE( db->get_account( "alice" ).balance == alice_steem + full_steem ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_steem_balance == ASSET( "0.000 TESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).sbd_balance == alice_sbd + full_sbd ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_sbd_balance == ASSET( "0.000 TBD" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).vesting_shares == alice_vests + partial_vests ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_vesting_balance == ASSET( "0.000000 VESTS" ) ); - BOOST_REQUIRE( db->get_account( "alice" ).reward_vesting_steem == ASSET( "0.000 TESTS" ) ); - validate_database(); - op.reward_tokens.clear(); - // SMTs - asset full_smt1 = asset( 10*std::pow(10, smt1.decimals()), smt1 ); - asset full_smt3 = asset( 10*std::pow(10, smt3.decimals()), smt3 ); - op.reward_tokens.push_back( full_smt1 ); - op.reward_tokens.push_back( partial_smt2 ); - op.reward_tokens.push_back( full_smt3 ); - PUSH_OP(op, alice_private_key); - BOOST_REQUIRE( db->get_balance( "alice", smt1 ) == alice_smt1 + full_smt1 ); - BOOST_REQUIRE( db->get_balance( "alice", smt2 ) == alice_smt2 + partial_smt2 ); - BOOST_REQUIRE( db->get_balance( "alice", smt3 ) == alice_smt3 + full_smt3 ); - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_SUITE_END() -#endif diff --git a/tests/tests/smt_operation_time_tests.cpp b/tests/tests/smt_operation_time_tests.cpp deleted file mode 100644 index 9ea28280..00000000 --- a/tests/tests/smt_operation_time_tests.cpp +++ /dev/null @@ -1,661 +0,0 @@ - -#if defined IS_TEST_NET && defined STEEM_ENABLE_SMT - -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#include - -#include - -#include "../db_fixture/database_fixture.hpp" - -#include - -using namespace steem; -using namespace steem::chain; -using namespace steem::protocol; - -BOOST_FIXTURE_TEST_SUITE( smt_operation_time_tests, smt_database_fixture ) - -BOOST_AUTO_TEST_CASE( smt_liquidity_rewards ) -{ - using std::abs; - - try - { - db->liquidity_rewards_enabled = false; - - ACTORS( (alice)(bob)(sam)(dave)(smtcreator) ) - - //Create SMT and give some SMT to creators. - signed_transaction tx; - asset_symbol_type any_smt_symbol = create_smt( "smtcreator", smtcreator_private_key, 3); - - generate_block(); - vest( "alice", ASSET( "10.000 TESTS" ) ); - vest( "bob", ASSET( "10.000 TESTS" ) ); - vest( "sam", ASSET( "10.000 TESTS" ) ); - vest( "dave", ASSET( "10.000 TESTS" ) ); - - tx.operations.clear(); - tx.signatures.clear(); - - BOOST_TEST_MESSAGE( "Rewarding Bob with TESTS" ); - - auto exchange_rate = price( ASSET( "1.250 TESTS" ), asset( 1000, any_smt_symbol ) ); - - const account_object& alice_account = db->get_account( "alice" ); - FUND( "alice", asset( 25522, any_smt_symbol ) ); - asset alice_smt = db->get_balance( alice_account, any_smt_symbol ); - - FUND( "alice", alice_smt.amount ); - FUND( "bob", alice_smt.amount ); - FUND( "sam", alice_smt.amount ); - FUND( "dave", alice_smt.amount ); - - int64_t alice_smt_volume = 0; - int64_t alice_steem_volume = 0; - time_point_sec alice_reward_last_update = fc::time_point_sec::min(); - int64_t bob_smt_volume = 0; - int64_t bob_steem_volume = 0; - time_point_sec bob_reward_last_update = fc::time_point_sec::min(); - int64_t sam_smt_volume = 0; - int64_t sam_steem_volume = 0; - time_point_sec sam_reward_last_update = fc::time_point_sec::min(); - int64_t dave_smt_volume = 0; - int64_t dave_steem_volume = 0; - time_point_sec dave_reward_last_update = fc::time_point_sec::min(); - - BOOST_TEST_MESSAGE( "Creating Limit Order for STEEM that will stay on the books for 30 minutes exactly." ); - - limit_order_create_operation op; - op.owner = "alice"; - op.amount_to_sell = asset( alice_smt.amount.value / 20, any_smt_symbol ) ; - op.min_to_receive = op.amount_to_sell * exchange_rate; - op.orderid = 1; - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "Waiting 10 minutes" ); - - generate_blocks( db->head_block_time() + STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10, true ); - - BOOST_TEST_MESSAGE( "Creating Limit Order for SMT that will be filled immediately." ); - - op.owner = "bob"; - op.min_to_receive = op.amount_to_sell; - op.amount_to_sell = op.min_to_receive * exchange_rate; - op.fill_or_kill = false; - op.orderid = 2; - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_steem_volume += ( asset( alice_smt.amount / 20, any_smt_symbol ) * exchange_rate ).amount.value; - alice_reward_last_update = db->head_block_time(); - bob_steem_volume -= ( asset( alice_smt.amount / 20, any_smt_symbol ) * exchange_rate ).amount.value; - bob_reward_last_update = db->head_block_time(); - - auto ops = get_last_operations( 1 ); - const auto& liquidity_idx = db->get_index< liquidity_reward_balance_index >().indices().get< by_owner >(); - const auto& limit_order_idx = db->get_index< limit_order_index >().indices().get< by_account >(); - - auto reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - auto fill_order_op = ops[0].get< fill_order_operation >(); - - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 1 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == asset( alice_smt.amount.value / 20, any_smt_symbol ).amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 2 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == ( asset( alice_smt.amount.value / 20, any_smt_symbol ) * exchange_rate ).amount.value ); - - BOOST_CHECK( limit_order_idx.find( std::make_tuple( "alice", 1 ) ) == limit_order_idx.end() ); - BOOST_CHECK( limit_order_idx.find( std::make_tuple( "bob", 2 ) ) == limit_order_idx.end() ); - - BOOST_TEST_MESSAGE( "Creating Limit Order for SMT that will stay on the books for 60 minutes." ); - - op.owner = "sam"; - op.amount_to_sell = asset( ( alice_smt.amount.value / 20 ), STEEM_SYMBOL ); - op.min_to_receive = asset( ( alice_smt.amount.value / 20 ), any_smt_symbol ); - op.orderid = 3; - - tx.signatures.clear(); - tx.operations.clear(); - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "Waiting 10 minutes" ); - - generate_blocks( db->head_block_time() + STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10, true ); - - BOOST_TEST_MESSAGE( "Creating Limit Order for SMT that will stay on the books for 30 minutes." ); - - op.owner = "bob"; - op.orderid = 4; - op.amount_to_sell = asset( ( alice_smt.amount.value / 10 ) * 3 - alice_smt.amount.value / 20, STEEM_SYMBOL ); - op.min_to_receive = asset( ( alice_smt.amount.value / 10 ) * 3 - alice_smt.amount.value / 20, any_smt_symbol ); - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - BOOST_TEST_MESSAGE( "Waiting 30 minutes" ); - - generate_blocks( db->head_block_time() + STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10, true ); - - BOOST_TEST_MESSAGE( "Filling both limit orders." ); - - op.owner = "alice"; - op.orderid = 5; - op.amount_to_sell = asset( ( alice_smt.amount.value / 10 ) * 3, any_smt_symbol ); - op.min_to_receive = asset( ( alice_smt.amount.value / 10 ) * 3, STEEM_SYMBOL ); - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_smt_volume -= ( alice_smt.amount.value / 10 ) * 3; - alice_reward_last_update = db->head_block_time(); - sam_smt_volume += alice_smt.amount.value / 20; - sam_reward_last_update = db->head_block_time(); - bob_smt_volume += ( alice_smt.amount.value / 10 ) * 3 - ( alice_smt.amount.value / 20 ); - bob_reward_last_update = db->head_block_time(); - ops = get_last_operations( 4 ); - - fill_order_op = ops[1].get< fill_order_operation >(); - BOOST_REQUIRE( fill_order_op.open_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 4 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == asset( ( alice_smt.amount.value / 10 ) * 3 - alice_smt.amount.value / 20, STEEM_SYMBOL ).amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 5 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == asset( ( alice_smt.amount.value / 10 ) * 3 - alice_smt.amount.value / 20, any_smt_symbol ).amount.value ); - - fill_order_op = ops[3].get< fill_order_operation >(); - BOOST_REQUIRE( fill_order_op.open_owner == "sam" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 3 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == asset( alice_smt.amount.value / 20, STEEM_SYMBOL ).amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 5 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == asset( alice_smt.amount.value / 20, any_smt_symbol ).amount.value ); - - reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - BOOST_TEST_MESSAGE( "Testing a partial fill before minimum time and full fill after minimum time" ); - - op.orderid = 6; - op.amount_to_sell = asset( alice_smt.amount.value / 20 * 2, any_smt_symbol ); - op.min_to_receive = asset( alice_smt.amount.value / 20 * 2, STEEM_SYMBOL ); - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->head_block_time() + fc::seconds( STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10.to_seconds() / 2 ), true ); - - op.owner = "bob"; - op.orderid = 7; - op.amount_to_sell = asset( alice_smt.amount.value / 20, STEEM_SYMBOL ); - op.min_to_receive = asset( alice_smt.amount.value / 20, any_smt_symbol ); - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->head_block_time() + fc::seconds( STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10.to_seconds() / 2 ), true ); - - ops = get_last_operations( 3 ); - fill_order_op = ops[2].get< fill_order_operation >(); - - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 6 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == asset( alice_smt.amount.value / 20, any_smt_symbol ).amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 7 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == asset( alice_smt.amount.value / 20, STEEM_SYMBOL ).amount.value ); - - reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - generate_blocks( db->head_block_time() + STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10, true ); - - op.owner = "sam"; - op.orderid = 8; - - tx.signatures.clear(); - tx.operations.clear(); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.operations.push_back( op ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_steem_volume += alice_smt.amount.value / 20; - alice_reward_last_update = db->head_block_time(); - sam_steem_volume -= alice_smt.amount.value / 20; - sam_reward_last_update = db->head_block_time(); - - ops = get_last_operations( 2 ); - fill_order_op = ops[1].get< fill_order_operation >(); - - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 6 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == asset( alice_smt.amount.value / 20, any_smt_symbol ).amount.value ); - BOOST_REQUIRE( fill_order_op.current_owner == "sam" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 8 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == asset( alice_smt.amount.value / 20, STEEM_SYMBOL ).amount.value ); - - reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - BOOST_TEST_MESSAGE( "Trading to give Alice and Bob positive volumes to receive rewards" ); - - transfer_operation transfer; - transfer.to = "dave"; - transfer.from = "alice"; - transfer.amount = asset( alice_smt.amount / 2, any_smt_symbol ); - - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( transfer ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "alice"; - op.amount_to_sell = asset( 8 * ( alice_smt.amount.value / 20 ), STEEM_SYMBOL ); - op.min_to_receive = asset( op.amount_to_sell.amount, any_smt_symbol ); - op.orderid = 9; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->head_block_time() + STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10, true ); - - op.owner = "dave"; - op.amount_to_sell = asset( 7 * ( alice_smt.amount.value / 20 ), any_smt_symbol );; - op.min_to_receive = asset( op.amount_to_sell.amount, STEEM_SYMBOL ); - op.orderid = 10; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( dave_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_smt_volume += op.amount_to_sell.amount.value; - alice_reward_last_update = db->head_block_time(); - dave_smt_volume -= op.amount_to_sell.amount.value; - dave_reward_last_update = db->head_block_time(); - - ops = get_last_operations( 1 ); - fill_order_op = ops[0].get< fill_order_operation >(); - - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 9 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == 7 * ( alice_smt.amount.value / 20 ) ); - BOOST_REQUIRE( fill_order_op.current_owner == "dave" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 10 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == 7 * ( alice_smt.amount.value / 20 ) ); - - reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "dave" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "dave" ).id ); - BOOST_REQUIRE( reward->sbd_volume == dave_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == dave_steem_volume ); - BOOST_CHECK( reward->last_update == dave_reward_last_update );*/ - - op.owner = "bob"; - op.amount_to_sell.amount = alice_smt.amount / 20; - op.min_to_receive.amount = op.amount_to_sell.amount; - op.orderid = 11; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - alice_smt_volume += op.amount_to_sell.amount.value; - alice_reward_last_update = db->head_block_time(); - bob_smt_volume -= op.amount_to_sell.amount.value; - bob_reward_last_update = db->head_block_time(); - - ops = get_last_operations( 1 ); - fill_order_op = ops[0].get< fill_order_operation >(); - - BOOST_REQUIRE( fill_order_op.open_owner == "alice" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 9 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == alice_smt.amount.value / 20 ); - BOOST_REQUIRE( fill_order_op.current_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 11 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == alice_smt.amount.value / 20 ); - - reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "dave" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "dave" ).id ); - BOOST_REQUIRE( reward->sbd_volume == dave_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == dave_steem_volume ); - BOOST_CHECK( reward->last_update == dave_reward_last_update );*/ - - transfer.to = "bob"; - transfer.from = "alice"; - transfer.amount = asset( alice_smt.amount / 5, any_smt_symbol ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( transfer ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - op.owner = "bob"; - op.orderid = 12; - op.amount_to_sell = asset( 3 * ( alice_smt.amount / 40 ), any_smt_symbol ); - op.min_to_receive = asset( op.amount_to_sell.amount, STEEM_SYMBOL ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( bob_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->head_block_time() + STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC_HF10, true ); - - op.owner = "dave"; - op.orderid = 13; - op.amount_to_sell = op.min_to_receive; - op.min_to_receive.symbol = any_smt_symbol; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.sign( dave_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - bob_steem_volume += op.amount_to_sell.amount.value; - bob_reward_last_update = db->head_block_time(); - dave_steem_volume -= op.amount_to_sell.amount.value; - dave_reward_last_update = db->head_block_time(); - - ops = get_last_operations( 1 ); - fill_order_op = ops[0].get< fill_order_operation >(); - - BOOST_REQUIRE( fill_order_op.open_owner == "bob" ); - BOOST_REQUIRE( fill_order_op.open_orderid == 12 ); - BOOST_REQUIRE( fill_order_op.open_pays.amount.value == 3 * ( alice_smt.amount.value / 40 ) ); - BOOST_REQUIRE( fill_order_op.current_owner == "dave" ); - BOOST_REQUIRE( fill_order_op.current_orderid == 13 ); - BOOST_REQUIRE( fill_order_op.current_pays.amount.value == 3 * ( alice_smt.amount.value / 40 ) ); - - reward = liquidity_idx.find( db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "alice" ).id ); - BOOST_REQUIRE( reward->sbd_volume == alice_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == alice_steem_volume ); - BOOST_CHECK( reward->last_update == alice_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "bob" ).id ); - BOOST_REQUIRE( reward->sbd_volume == bob_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == bob_steem_volume ); - BOOST_CHECK( reward->last_update == bob_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - reward = liquidity_idx.find( db->get_account( "dave" ).id ); - BOOST_REQUIRE( reward == liquidity_idx.end() ); - /*BOOST_REQUIRE( reward->owner == db->get_account( "dave" ).id ); - BOOST_REQUIRE( reward->sbd_volume == dave_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == dave_steem_volume ); - BOOST_CHECK( reward->last_update == dave_reward_last_update );*/ - - auto alice_balance = db->get_account( "alice" ).balance; - auto bob_balance = db->get_account( "bob" ).balance; - auto sam_balance = db->get_account( "sam" ).balance; - auto dave_balance = db->get_account( "dave" ).balance; - - BOOST_TEST_MESSAGE( "Generating Blocks to trigger liquidity rewards" ); - - db->liquidity_rewards_enabled = true; - generate_blocks( STEEM_LIQUIDITY_REWARD_BLOCKS - ( db->head_block_num() % STEEM_LIQUIDITY_REWARD_BLOCKS ) - 1 ); - - BOOST_REQUIRE( db->head_block_num() % STEEM_LIQUIDITY_REWARD_BLOCKS == STEEM_LIQUIDITY_REWARD_BLOCKS - 1 ); - BOOST_REQUIRE( db->get_account( "alice" ).balance.amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "bob" ).balance.amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "sam" ).balance.amount.value == sam_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "dave" ).balance.amount.value == dave_balance.amount.value ); - - generate_block(); - - //alice_balance += STEEM_MIN_LIQUIDITY_REWARD; - - BOOST_REQUIRE( db->get_account( "alice" ).balance.amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "bob" ).balance.amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "sam" ).balance.amount.value == sam_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "dave" ).balance.amount.value == dave_balance.amount.value ); - - ops = get_last_operations( 1 ); - - STEEM_REQUIRE_THROW( ops[0].get< liquidity_reward_operation>(), fc::exception ); - //BOOST_REQUIRE( ops[0].get< liquidity_reward_operation>().payout.amount.value == STEEM_MIN_LIQUIDITY_REWARD.amount.value ); - - generate_blocks( STEEM_LIQUIDITY_REWARD_BLOCKS ); - - //bob_balance += STEEM_MIN_LIQUIDITY_REWARD; - - BOOST_REQUIRE( db->get_account( "alice" ).balance.amount.value == alice_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "bob" ).balance.amount.value == bob_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "sam" ).balance.amount.value == sam_balance.amount.value ); - BOOST_REQUIRE( db->get_account( "dave" ).balance.amount.value == dave_balance.amount.value ); - - ops = get_last_operations( 1 ); - - STEEM_REQUIRE_THROW( ops[0].get< liquidity_reward_operation>(), fc::exception ); - //BOOST_REQUIRE( ops[0].get< liquidity_reward_operation>().payout.amount.value == STEEM_MIN_LIQUIDITY_REWARD.amount.value ); - - alice_steem_volume = 0; - alice_smt_volume = 0; - bob_steem_volume = 0; - bob_smt_volume = 0; - - BOOST_TEST_MESSAGE( "Testing liquidity timeout" ); - - generate_blocks( sam_reward_last_update + STEEM_LIQUIDITY_TIMEOUT_SEC - fc::seconds( STEEM_BLOCK_INTERVAL / 2 ) - STEEM_MIN_LIQUIDITY_REWARD_PERIOD_SEC , true ); - - op.owner = "sam"; - op.orderid = 14; - op.amount_to_sell = ASSET( "1.000 TESTS" ); - op.min_to_receive = ASSET( "1.000 TBD" ); - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( sam_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - generate_blocks( db->head_block_time() + ( STEEM_BLOCK_INTERVAL / 2 ) + STEEM_LIQUIDITY_TIMEOUT_SEC, true ); - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - /*BOOST_REQUIRE( reward == liquidity_idx.end() ); - BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - generate_block(); - - op.owner = "alice"; - op.orderid = 15; - op.amount_to_sell.symbol = any_smt_symbol; - op.min_to_receive.symbol = STEEM_SYMBOL; - tx.operations.clear(); - tx.signatures.clear(); - tx.operations.push_back( op ); - tx.set_expiration( db->head_block_time() + STEEM_MAX_TIME_UNTIL_EXPIRATION ); - tx.sign( alice_private_key, db->get_chain_id() ); - db->push_transaction( tx, 0 ); - - sam_smt_volume = ASSET( "1.000 TBD" ).amount.value; - sam_steem_volume = 0; - sam_reward_last_update = db->head_block_time(); - - reward = liquidity_idx.find( db->get_account( "sam" ).id ); - /*BOOST_REQUIRE( reward == liquidity_idx.end() ); - BOOST_REQUIRE( reward->owner == db->get_account( "sam" ).id ); - BOOST_REQUIRE( reward->sbd_volume == sam_smt_volume ); - BOOST_REQUIRE( reward->steem_volume == sam_steem_volume ); - BOOST_CHECK( reward->last_update == sam_reward_last_update );*/ - - validate_database(); - } - FC_LOG_AND_RETHROW(); -} - -BOOST_AUTO_TEST_SUITE_END() -#endif diff --git a/tests/tests/smt_tests.cpp b/tests/tests/smt_tests.cpp deleted file mode 100644 index 49e4b269..00000000 --- a/tests/tests/smt_tests.cpp +++ /dev/null @@ -1,895 +0,0 @@ -#include - -#if defined IS_TEST_NET && defined STEEM_ENABLE_SMT - -FC_TODO(Extend testing scenarios to support multiple NAIs per account) - -#include - -#include -#include - -#include -#include -#include -#include - -#include "../db_fixture/database_fixture.hpp" - -using namespace steem::chain; -using namespace steem::protocol; -using fc::string; -using boost::container::flat_set; - -BOOST_FIXTURE_TEST_SUITE( smt_tests, smt_database_fixture ) - -BOOST_AUTO_TEST_CASE( asset_symbol_validate ) -{ - try - { - auto check_validate = [&]( const std::string& name, uint8_t decimal_places ) - { - asset_symbol_type sym = name_to_asset_symbol( name, decimal_places ); - sym.validate(); - }; - - // specific cases in https://github.com/steemit/steem/issues/1738 - check_validate( "0", 0 ); - check_validate( "d2", 1 ); - check_validate( "da1", 1 ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( smt_create_validate ) -{ - try - { - ACTORS( (alice) ); - - smt_create_operation op; - op.control_account = "alice"; - op.smt_creation_fee = ASSET( "1.000 TESTS" ); - op.symbol = get_new_smt_symbol( 3, db ); - op.precision = op.symbol.decimals(); - op.validate(); - - // Test invalid control account name. - op.control_account = "@@@@@"; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - op.control_account = "alice"; - - // Test invalid creation fee. - // Negative fee. - op.smt_creation_fee.amount = -op.smt_creation_fee.amount; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - // Valid MAX_SHARE_SUPPLY - op.smt_creation_fee.amount = STEEM_MAX_SHARE_SUPPLY; - op.validate(); - // Invalid MAX_SHARE_SUPPLY+1 - ++op.smt_creation_fee.amount; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - // Invalid currency - op.smt_creation_fee = ASSET( "1.000000 VESTS" ); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - // Valid currency, but doesn't match decimals stored in symbol. - op.smt_creation_fee = ASSET( "1.000 TESTS" ); - op.precision = 0; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - op.precision = op.symbol.decimals(); - - // Test symbol - // Vesting symbol used instaed of liquid one. - op.symbol = op.symbol.get_paired_symbol(); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - // Legacy symbol used instead of SMT. - op.symbol = STEEM_SYMBOL; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( smt_create_authorities ) -{ - try - { - SMT_SYMBOL( alice, 3 ); - - smt_create_operation op; - op.control_account = "alice"; - op.symbol = alice_symbol; - op.smt_creation_fee = ASSET( "1.000 TESTS" ); - - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; - - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - expected.insert( "alice" ); - op.get_required_active_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( smt_create_apply ) -{ - try - { - ACTORS( (alice)(bob) ) - - generate_block(); - - FUND( "alice", 10 * 1000 * 1000 ); - - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); - - const dynamic_global_property_object& dgpo = db->get_dynamic_global_properties(); - asset required_creation_fee = dgpo.smt_creation_fee; - FC_ASSERT( required_creation_fee.amount > 0, "Expected positive smt_creation_fee." ); - unsigned int test_amount = required_creation_fee.amount.value; - - smt_create_operation op; - op.control_account = "alice"; - op.symbol = get_new_smt_symbol( 3, db ); - op.precision = op.symbol.decimals(); - - // Fund with STEEM, and set fee with SBD. - FUND( "alice", test_amount ); - // Declare fee in SBD/TBD though alice has none. - op.smt_creation_fee = asset( test_amount, SBD_SYMBOL ); - // Throw due to insufficient balance of SBD/TBD. - FAIL_WITH_OP(op, alice_private_key, fc::assert_exception); - - // Now fund with SBD, and set fee with STEEM. - convert( "alice", asset( test_amount, STEEM_SYMBOL ) ); - // Declare fee in STEEM though alice has none. - op.smt_creation_fee = asset( test_amount, STEEM_SYMBOL ); - // Throw due to insufficient balance of STEEM. - FAIL_WITH_OP(op, alice_private_key, fc::assert_exception); - - // Push valid operation. - op.smt_creation_fee = asset( test_amount, SBD_SYMBOL ); - PUSH_OP( op, alice_private_key ); - - // Check the SMT cannot be created twice even with different precision. - create_conflicting_smt(op.symbol, "alice", alice_private_key); - - // Check that another user/account can't be used to create duplicating SMT even with different precision. - create_conflicting_smt(op.symbol, "bob", bob_private_key); - - // Check that invalid SMT can't be created - create_invalid_smt("alice", alice_private_key); - - // Check fee set too low. - asset fee_too_low = required_creation_fee; - unsigned int too_low_fee_amount = required_creation_fee.amount.value-1; - fee_too_low.amount -= 1; - - SMT_SYMBOL( bob, 0 ); - op.control_account = "bob"; - op.symbol = bob_symbol; - op.precision = op.symbol.decimals(); - - // Check too low fee in STEEM. - FUND( "bob", too_low_fee_amount ); - op.smt_creation_fee = asset( too_low_fee_amount, STEEM_SYMBOL ); - FAIL_WITH_OP(op, bob_private_key, fc::assert_exception); - - // Check too low fee in SBD. - convert( "bob", asset( too_low_fee_amount, STEEM_SYMBOL ) ); - op.smt_creation_fee = asset( too_low_fee_amount, SBD_SYMBOL ); - FAIL_WITH_OP(op, bob_private_key, fc::assert_exception); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( setup_emissions_validate ) -{ - try - { - ACTORS( (alice) ); - generate_block(); - - asset_symbol_type alice_symbol = create_smt("alice", alice_private_key, 3); - - uint64_t h0 = fc::sha256::hash( "alice" )._hash[0]; - uint32_t h0lo = uint32_t( h0 & 0x7FFFFFF ); - uint32_t an = h0lo % (SMT_MAX_NAI+1); - - FC_UNUSED(an); - - smt_setup_emissions_operation op; - // Invalid account name. - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.control_account = "alice"; - // schedule_time <= STEEM_GENESIS_TIME; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - fc::time_point now = fc::time_point::now(); - op.schedule_time = now; - // Empty emissions_unit.token_unit - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.emissions_unit.token_unit["alice"] = 10; - // Both absolute amount fields are zero. - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.lep_abs_amount = ASSET( "0.000 TESTS" ); - // Amount symbol does NOT match control account name. - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.lep_abs_amount = asset( 0, alice_symbol ); - // Mismatch of absolute amount symbols. - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.rep_abs_amount = asset( -1, alice_symbol ); - // Negative absolute amount. - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.rep_abs_amount = asset( 0, alice_symbol ); - // Both amounts are equal zero. - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.rep_abs_amount = asset( 1000, alice_symbol ); - op.validate(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( set_setup_parameters_validate ) -{ - try - { - smt_set_setup_parameters_operation op; - op.control_account = "####"; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); // invalid account name - - op.control_account = "dany"; - op.validate(); - - op.setup_parameters.emplace(smt_param_allow_vesting()); - op.setup_parameters.emplace(smt_param_allow_voting()); - op.validate(); - - op.setup_parameters.emplace(smt_param_allow_vesting({false})); - op.setup_parameters.emplace(smt_param_allow_voting({false})); - op.validate(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( setup_emissions_authorities ) -{ - try - { - SMT_SYMBOL( alice, 3 ); - - smt_setup_emissions_operation op; - op.control_account = "alice"; - fc::time_point now = fc::time_point::now(); - op.schedule_time = now; - op.emissions_unit.token_unit["alice"] = 10; - op.lep_abs_amount = op.rep_abs_amount = asset(1000, alice_symbol); - - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; - - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - expected.insert( "alice" ); - op.get_required_active_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( set_setup_parameters_authorities ) -{ - try - { - smt_set_setup_parameters_operation op; - op.control_account = "dany"; - - flat_set auths; - flat_set expected; - - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - expected.insert( "dany" ); - op.get_required_active_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( setup_emissions_apply ) -{ - try - { - ACTORS( (alice)(bob) ) - - generate_block(); - - smt_setup_emissions_operation fail_op; - fail_op.control_account = "alice"; - fc::time_point now = fc::time_point::now(); - fail_op.schedule_time = now; - fail_op.emissions_unit.token_unit["bob"] = 10; - - // Do invalid attempt at SMT creation. - create_invalid_smt("alice", alice_private_key); - - // Fail due to non-existing SMT (too early). - FAIL_WITH_OP(fail_op, alice_private_key, fc::assert_exception) - - // Create SMT(s) and continue. - auto smts = create_smt_3("alice", alice_private_key); - { - const auto& smt1 = smts[0]; - const auto& smt2 = smts[1]; - - // Do successful op with one smt. - smt_setup_emissions_operation valid_op = fail_op; - valid_op.symbol = smt1; - valid_op.lep_abs_amount = valid_op.rep_abs_amount = asset( 1000, valid_op.symbol ); - PUSH_OP(valid_op,alice_private_key) - - // Fail with another smt. - fail_op.symbol = smt2; - fail_op.lep_abs_amount = fail_op.rep_abs_amount = asset( 1000, fail_op.symbol ); - // TODO: Replace the code below with account setup operation execution once its implemented. - const steem::chain::smt_token_object* smt = db->find< steem::chain::smt_token_object, by_symbol >( fail_op.symbol ); - FC_ASSERT( smt != nullptr, "The SMT has just been created!" ); - FC_ASSERT( smt->phase < steem::chain::smt_token_object::smt_phase::setup_completed, "Who closed setup phase?!" ); - db->modify( *smt, [&]( steem::chain::smt_token_object& token ) - { - token.phase = steem::chain::smt_token_object::smt_phase::setup_completed; - }); - // Fail due to closed setup phase (too late). - FAIL_WITH_OP(fail_op, alice_private_key, fc::assert_exception) - } - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( set_setup_parameters_apply ) -{ - try - { - ACTORS( (dany)(eddy) ) - - generate_block(); - - FUND( "dany", 5000000 ); - - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); - convert( "dany", ASSET( "5000.000 TESTS" ) ); - - smt_set_setup_parameters_operation fail_op; - fail_op.control_account = "dany"; - - // Do invalid attempt at SMT creation. - create_invalid_smt("dany", dany_private_key); - - // Fail due to non-existing SMT (too early). - FAIL_WITH_OP(fail_op, dany_private_key, fc::assert_exception) - - // Create SMT(s) and continue. - auto smts = create_smt_3("dany", dany_private_key); - { - const auto& smt1 = smts[0]; - const auto& smt2 = smts[1]; - - // "Reset" parameters to default value. - smt_set_setup_parameters_operation valid_op = fail_op; - valid_op.symbol = smt1; - PUSH_OP_TWICE(valid_op, dany_private_key); - - // Fail with wrong key. - fail_op.symbol = smt2; - fail_op.setup_parameters.clear(); - fail_op.setup_parameters.emplace( smt_param_allow_vesting() ); - fail_op.setup_parameters.emplace( smt_param_allow_voting() ); - FAIL_WITH_OP(fail_op, eddy_private_key, fc::exception); - - // Set both explicitly to false. - valid_op.setup_parameters.clear(); - valid_op.setup_parameters.emplace( smt_param_allow_vesting({false}) ); - valid_op.setup_parameters.emplace( smt_param_allow_voting({false}) ); - PUSH_OP(valid_op, dany_private_key); - - // Set one to true and another one to false. - valid_op.setup_parameters.clear(); - valid_op.setup_parameters.emplace( smt_param_allow_vesting() ); - PUSH_OP(valid_op, dany_private_key); - - // TODO: - // - check applying smt_set_setup_parameters_operation after setup completed - } - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( runtime_parameters_windows_validate ) -{ - try - { - BOOST_REQUIRE( SMT_VESTING_WITHDRAW_INTERVAL_SECONDS > SMT_UPVOTE_LOCKOUT ); - - smt_set_runtime_parameters_operation op; - - op.control_account = "{}{}{}{}"; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.control_account = "alice"; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - smt_param_windows_v1 windows; - windows.reverse_auction_window_seconds = 2; - windows.cashout_window_seconds = windows.reverse_auction_window_seconds; - op.runtime_parameters.insert( windows ); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.runtime_parameters.clear(); - windows.reverse_auction_window_seconds = 2; - windows.cashout_window_seconds = windows.reverse_auction_window_seconds - 1; - op.runtime_parameters.insert( windows ); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.runtime_parameters.clear(); - windows.reverse_auction_window_seconds = SMT_VESTING_WITHDRAW_INTERVAL_SECONDS; - windows.cashout_window_seconds = windows.reverse_auction_window_seconds + 1; - op.runtime_parameters.insert( windows ); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.runtime_parameters.clear(); - windows.reverse_auction_window_seconds = 1; - windows.cashout_window_seconds = SMT_VESTING_WITHDRAW_INTERVAL_SECONDS; - op.runtime_parameters.insert( windows ); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.runtime_parameters.clear(); - windows.reverse_auction_window_seconds = 0; - windows.cashout_window_seconds = SMT_UPVOTE_LOCKOUT; - op.runtime_parameters.insert( windows ); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.runtime_parameters.clear(); - windows.reverse_auction_window_seconds = 0; - windows.cashout_window_seconds = windows.reverse_auction_window_seconds + SMT_UPVOTE_LOCKOUT + 1; - op.runtime_parameters.insert( windows ); - op.validate(); - - op.runtime_parameters.clear(); - windows.reverse_auction_window_seconds = 0; - windows.cashout_window_seconds = SMT_VESTING_WITHDRAW_INTERVAL_SECONDS - 1; - op.runtime_parameters.insert( windows ); - op.validate(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( runtime_parameters_regeneration_period_validate ) -{ - try - { - smt_set_runtime_parameters_operation op; - op.control_account = "alice"; - - smt_param_vote_regeneration_period_seconds_v1 regeneration; - - regeneration.vote_regeneration_period_seconds = SMT_VESTING_WITHDRAW_INTERVAL_SECONDS; - op.runtime_parameters.insert( regeneration ); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.runtime_parameters.clear(); - regeneration.vote_regeneration_period_seconds = 0; - op.runtime_parameters.insert( regeneration ); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - - op.runtime_parameters.clear(); - regeneration.vote_regeneration_period_seconds = SMT_VESTING_WITHDRAW_INTERVAL_SECONDS - 1; - op.runtime_parameters.insert( regeneration ); - op.validate(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( runtime_parameters_authorities ) -{ - try - { - smt_set_runtime_parameters_operation op; - op.control_account = "alice"; - - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; - - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - expected.insert( "alice" ); - op.get_required_active_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( runtime_parameters_apply ) -{ - try - { - ACTORS( (alice) ) - - generate_block(); - - set_price_feed( price( ASSET( "1.000 TBD" ), ASSET( "1.000 TESTS" ) ) ); - - smt_set_runtime_parameters_operation op; - - op.control_account = "alice"; - - smt_param_windows_v1 windows; - windows.reverse_auction_window_seconds = 0; - windows.cashout_window_seconds = windows.reverse_auction_window_seconds + SMT_UPVOTE_LOCKOUT + 1; - - smt_param_vote_regeneration_period_seconds_v1 regeneration; - regeneration.vote_regeneration_period_seconds = SMT_VESTING_WITHDRAW_INTERVAL_SECONDS / 2; - regeneration.votes_per_regeneration_period = 1; - - smt_param_rewards_v1 rewards; - rewards.content_constant = 1; - rewards.percent_curation_rewards = 2; - rewards.percent_content_rewards = 3; - - op.runtime_parameters.insert( windows ); - op.runtime_parameters.insert( regeneration ); - op.runtime_parameters.insert( rewards ); - - //First we should create SMT - FAIL_WITH_OP(op, alice_private_key, fc::assert_exception) - - // Create SMT(s) and continue. - auto smts = create_smt_3("alice", alice_private_key); - { - //Make transaction again. - op.symbol = smts[2]; - PUSH_OP(op, alice_private_key); - } - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( smt_setup_validate ) -{ - try - { - smt_setup_operation op; - fc::time_point_sec start_time = fc::variant( "2021-01-01T00:00:00" ).as< fc::time_point_sec >(); - fc::time_point_sec start_time_plus_1 = start_time + fc::seconds(1); - // Do minimal operation setup that allows successful validatation. - { - smt_capped_generation_policy gpolicy; - uint64_t max_supply = STEEM_MAX_SHARE_SUPPLY / 6000; - // set steem unit, total is 100 STEEM-satoshis = 0.1 STEEM - gpolicy.pre_soft_cap_unit.steem_unit.emplace( "founder", 100 ); - // set token unit, total is 5 token-satoshis = 0.0005 SMT - gpolicy.pre_soft_cap_unit.token_unit.emplace( "$from", 5 ); - // Note - no soft cap -> no soft cap unit - gpolicy.min_steem_units_commitment.fillin_nonhidden_value( 1 ); - gpolicy.hard_cap_steem_units_commitment.fillin_nonhidden_value( max_supply ); - gpolicy.soft_cap_percent = STEEM_100_PERCENT; - - // Note that neither tested SMT nor even its creator is necessary to validate this operation. - op.control_account = "alice"; - op.decimal_places = 4; - op.initial_generation_policy = gpolicy; - op.generation_begin_time = start_time; - op.generation_end_time = op.announced_launch_time = op.launch_expiration_time = start_time_plus_1; - op.smt_creation_fee = asset( 1000000, SBD_SYMBOL ); - } - - op.validate(); - // TODO put other negative scenarios here. - - // Launch expiration time can't be earlier than announced launch time. - op.launch_expiration_time = start_time; - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - op.launch_expiration_time = start_time_plus_1; // Restored valid value. - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( smt_refund_validate ) -{ - try - { - ACTORS( (creator) ) - generate_block(); - asset_symbol_type creator_symbol = create_smt("creator", creator_private_key, 0); - - smt_refund_operation op; - op.executor = "executor"; - op.contributor = "contributor"; - op.contribution_id = 0; - op.smt = creator_symbol; - op.amount = ASSET( "1.000 TESTS" ); - op.validate(); - - op.executor = "@@@@@"; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - op.executor = "executor"; - - op.contributor = "@@@@@"; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - op.contributor = "contributor"; - - op.smt = op.amount.symbol; - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - op.smt = creator_symbol; - - op.amount = asset( 1, creator_symbol ); - STEEM_REQUIRE_THROW( op.validate(), fc::exception ); - op.amount = ASSET( "1.000 TESTS" ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( smt_refund_authorities ) -{ - try - { - smt_refund_operation op; - op.executor = "executor"; - - flat_set< account_name_type > auths; - flat_set< account_name_type > expected; - - op.get_required_owner_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - op.get_required_posting_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - - expected.insert( "executor" ); - op.get_required_active_authorities( auths ); - BOOST_REQUIRE( auths == expected ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( smt_transfer_validate ) -{ - try - { - ACTORS( (alice) ) - - generate_block(); - - asset_symbol_type alice_symbol = create_smt("alice", alice_private_key, 0); - - transfer_operation op; - op.from = "alice"; - op.to = "bob"; - op.amount = asset(100, alice_symbol); - op.validate(); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( smt_transfer_apply ) -{ - // This simple test touches SMT account balance objects, related functions (get/adjust) - // and transfer operation that builds on them. - try - { - ACTORS( (alice)(bob) ) - - generate_block(); - - // Create SMT. - asset_symbol_type alice_symbol = create_smt("alice", alice_private_key, 0); - asset_symbol_type bob_symbol = create_smt("bob", bob_private_key, 1); - - // Give some SMT to creators. - FUND( "alice", asset( 100, alice_symbol ) ); - FUND( "bob", asset( 110, bob_symbol ) ); - - // Check pre-tranfer amounts. - FC_ASSERT( db->get_balance( "alice", alice_symbol ).amount == 100, "SMT balance adjusting error" ); - FC_ASSERT( db->get_balance( "alice", bob_symbol ).amount == 0, "SMT balance adjusting error" ); - FC_ASSERT( db->get_balance( "bob", alice_symbol ).amount == 0, "SMT balance adjusting error" ); - FC_ASSERT( db->get_balance( "bob", bob_symbol ).amount == 110, "SMT balance adjusting error" ); - - // Transfer SMT. - transfer( "alice", "bob", asset(20, alice_symbol) ); - transfer( "bob", "alice", asset(50, bob_symbol) ); - - // Check transfer outcome. - FC_ASSERT( db->get_balance( "alice", alice_symbol ).amount == 80, "SMT transfer error" ); - FC_ASSERT( db->get_balance( "alice", bob_symbol ).amount == 50, "SMT transfer error" ); - FC_ASSERT( db->get_balance( "bob", alice_symbol ).amount == 20, "SMT transfer error" ); - FC_ASSERT( db->get_balance( "bob", bob_symbol ).amount == 60, "SMT transfer error" ); - - validate_database(); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( comment_votable_assers_validate ) -{ - try - { - BOOST_TEST_MESSAGE( "Test Comment Votable Assets Validate" ); - ACTORS((alice)); - - generate_block(); - - std::array smts; - /// Create one more than limit to test negative cases - for(size_t i = 0; i < SMT_MAX_VOTABLE_ASSETS + 1; ++i) - { - asset_symbol_type smt = create_smt("alice", alice_private_key, 0); - smts[i] = std::move(smt); - } - - { - comment_options_operation op; - - op.author = "alice"; - op.permlink = "test"; - - BOOST_TEST_MESSAGE( "--- Testing valid configuration: no votable_assets" ); - allowed_vote_assets ava; - op.extensions.insert( ava ); - op.validate(); - } - - { - comment_options_operation op; - - op.author = "alice"; - op.permlink = "test"; - - BOOST_TEST_MESSAGE( "--- Testing valid configuration of votable_assets" ); - allowed_vote_assets ava; - for(size_t i = 0; i < SMT_MAX_VOTABLE_ASSETS; ++i) - { - const auto& smt = smts[i]; - ava.add_votable_asset(smt, share_type(10 + i), (i & 2) != 0); - } - - op.extensions.insert( ava ); - op.validate(); - } - - { - comment_options_operation op; - - op.author = "alice"; - op.permlink = "test"; - - BOOST_TEST_MESSAGE( "--- Testing invalid configuration of votable_assets - too much assets specified" ); - allowed_vote_assets ava; - for(size_t i = 0; i < smts.size(); ++i) - { - const auto& smt = smts[i]; - ava.add_votable_asset(smt, share_type(20 + i), (i & 2) != 0); - } - - op.extensions.insert( ava ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - } - - { - comment_options_operation op; - - op.author = "alice"; - op.permlink = "test"; - - BOOST_TEST_MESSAGE( "--- Testing invalid configuration of votable_assets - STEEM added to container" ); - allowed_vote_assets ava; - const auto& smt = smts.front(); - ava.add_votable_asset(smt, share_type(20), false); - ava.add_votable_asset(STEEM_SYMBOL, share_type(20), true); - op.extensions.insert( ava ); - STEEM_REQUIRE_THROW( op.validate(), fc::assert_exception ); - } - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( asset_symbol_vesting_methods ) -{ - try - { - BOOST_TEST_MESSAGE( "Test asset_symbol vesting methods" ); - - asset_symbol_type Steem = STEEM_SYMBOL; - FC_ASSERT( Steem.is_vesting() == false ); - FC_ASSERT( Steem.get_paired_symbol() == VESTS_SYMBOL ); - - asset_symbol_type Vests = VESTS_SYMBOL; - FC_ASSERT( Vests.is_vesting() ); - FC_ASSERT( Vests.get_paired_symbol() == STEEM_SYMBOL ); - - asset_symbol_type Sbd = SBD_SYMBOL; - FC_ASSERT( Sbd.is_vesting() == false ); - FC_ASSERT( Sbd.get_paired_symbol() == SBD_SYMBOL ); - - ACTORS( (alice) ) - generate_block(); - auto smts = create_smt_3("alice", alice_private_key); - { - for( const asset_symbol_type& liquid_smt : smts ) - { - FC_ASSERT( liquid_smt.is_vesting() == false ); - auto vesting_smt = liquid_smt.get_paired_symbol(); - FC_ASSERT( vesting_smt != liquid_smt ); - FC_ASSERT( vesting_smt.is_vesting() ); - FC_ASSERT( vesting_smt.get_paired_symbol() == liquid_smt ); - } - } - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_CASE( vesting_smt_creation ) -{ - try - { - BOOST_TEST_MESSAGE( "Test Creation of vesting SMT" ); - - ACTORS((alice)); - generate_block(); - - asset_symbol_type liquid_symbol = create_smt("alice", alice_private_key, 6); - // Use liquid symbol/NAI to confirm smt object was created. - auto liquid_object_by_symbol = db->find< smt_token_object, by_symbol >( liquid_symbol ); - FC_ASSERT( ( liquid_object_by_symbol != nullptr ) ); - auto liquid_object_by_nai = db->find< smt_token_object, by_nai >( liquid_symbol.to_nai() ); - FC_ASSERT( ( liquid_object_by_nai != nullptr ) ); - FC_ASSERT( ( liquid_object_by_symbol == liquid_object_by_nai ) ); - - asset_symbol_type vesting_symbol = liquid_symbol.get_paired_symbol(); - // Use vesting symbol/NAI to confirm smt object was created. - auto vesting_object_by_symbol = db->find< smt_token_object, by_symbol >( vesting_symbol ); - FC_ASSERT( ( vesting_object_by_symbol != nullptr ) ); - auto vesting_object_by_nai = db->find< smt_token_object, by_nai >( vesting_symbol.to_nai() ); - FC_ASSERT( ( vesting_object_by_nai != nullptr ) ); - FC_ASSERT( ( vesting_object_by_symbol == vesting_object_by_nai ) ); - - // Check that liquid and vesting objecta are the same one. - FC_ASSERT( ( liquid_object_by_symbol == vesting_object_by_symbol ) ); - } - FC_LOG_AND_RETHROW() -} - -BOOST_AUTO_TEST_SUITE_END() -#endif