From 654e998d89991f31ba8dba0667516d279212473d Mon Sep 17 00:00:00 2001 From: Srdjan Obucina Date: Mon, 19 Aug 2019 19:55:26 +0200 Subject: [PATCH] API endpoint for reading random numbers from the witness Test cmd: curl --data '{"method": "call", "params": ["database", "get_random_number", [1000]], "jsonrpc": "2.0", "id": 1}' http://127.0.0.1:8090/ws curl --data '{"method": "call", "params": ["database", "get_random_number", [5000]], "jsonrpc": "2.0", "id": 1}' http://127.0.0.1:8090/ws curl --data '{"method": "call", "params": ["database", "get_random_number", [1000000]], "jsonrpc": "2.0", "id": 1}' http://127.0.0.1:8090/ws --- libraries/app/database_api.cpp | 11 +++++++++++ libraries/app/include/graphene/app/database_api.hpp | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/libraries/app/database_api.cpp b/libraries/app/database_api.cpp index 3f95a8c1..e30e3f6e 100644 --- a/libraries/app/database_api.cpp +++ b/libraries/app/database_api.cpp @@ -163,6 +163,7 @@ class database_api_impl : public std::enable_shared_from_this // gpos gpos_info get_gpos_info(const account_id_type account) const; + int64_t get_random_number(uint64_t bound) const; //private: template @@ -2072,6 +2073,16 @@ graphene::app::gpos_info database_api_impl::get_gpos_info(const account_id_type return result; } +int64_t database_api::get_random_number(uint64_t bound) const +{ + return my->get_random_number(bound); +} + +int64_t database_api_impl::get_random_number(uint64_t bound) const { + int64_t result = _db.get_random_bits(bound); + return result; +} + ////////////////////////////////////////////////////////////////////// // // // Private methods // diff --git a/libraries/app/include/graphene/app/database_api.hpp b/libraries/app/include/graphene/app/database_api.hpp index 3fac4b5f..78b9621e 100644 --- a/libraries/app/include/graphene/app/database_api.hpp +++ b/libraries/app/include/graphene/app/database_api.hpp @@ -659,6 +659,13 @@ class database_api */ gpos_info get_gpos_info(const account_id_type account) const; + ////////// + // RNG // + ////////// + /** + * @return Current Random number + */ + int64_t get_random_number(uint64_t bound) const; private: @@ -786,4 +793,7 @@ FC_API(graphene::app::database_api, // gpos (get_gpos_info) + + // rngs + (get_random_number) )