From 4b6317e5a3d23f6ca5111765ad4ab732c2619633 Mon Sep 17 00:00:00 2001 From: jl777 Date: Wed, 5 Sep 2018 22:41:52 -1100 Subject: [PATCH] Make OraclePrice deterministic --- src/cc/oracles.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/cc/oracles.cpp b/src/cc/oracles.cpp index a9554b077..ab3ee030b 100644 --- a/src/cc/oracles.cpp +++ b/src/cc/oracles.cpp @@ -384,12 +384,25 @@ int64_t _correlate_price(int64_t *prices,int32_t n,int64_t price) else return(price); } +int _increasing_uint64(const void *a,const void *b) +{ +#define uint64_a (*(uint64_t *)a) +#define uint64_b (*(uint64_t *)b) + if ( uint64_b > uint64_a ) + return(-1); + else if ( uint64_b < uint64_a ) + return(1); + return(0); +#undef uint64_a +#undef uint64_b +} + int64_t correlate_price(int32_t height,int64_t *prices,int32_t n) { int32_t i,j; int64_t price = 0; if ( n == 1 ) return(prices[0]); - // deterministic sort, like heapsort + heapsort(prices,n,sizeof(*prices),_increasing_uint64); for (i=0; i