Skip to content

Commit 52879fe

Browse files
committed
[WIP] Fix reserve calculation
1 parent f077a56 commit 52879fe

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

src/core/server.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
'use strict';
22

3+
34
const _ = require('lodash');
5+
const assert = require('assert');
46
const util = require('util');
57
const url = require('url');
68
const HttpsProxyAgent = require('https-proxy-agent');
@@ -905,6 +907,9 @@ Server.prototype._feeTxUnit = function() {
905907
*/
906908

907909
Server.prototype._reserve = function(ownerCount) {
910+
// We should be in a valid state before calling this method
911+
assert(this._reserve_base && this._reserve_inc);
912+
908913
const reserve_base = Amount.from_json(String(this._reserve_base));
909914
const reserve_inc = Amount.from_json(String(this._reserve_inc));
910915
const owner_count = ownerCount || 0;
@@ -913,7 +918,7 @@ Server.prototype._reserve = function(ownerCount) {
913918
throw new Error('Owner count must not be negative.');
914919
}
915920

916-
return reserve_base.add(reserve_inc.product_human(owner_count));
921+
return reserve_base.add(reserve_inc.multiply(owner_count));
917922
};
918923

919924
/**

test/remote-test.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -935,11 +935,10 @@ describe('Remote', function() {
935935
remote.feeTxUnit(10).to_json();
936936
});
937937
});
938-
it('Get reserve', function() {
938+
it('reserve() before reserve rate known', function() {
939939
remote._connected = true;
940940
remote._servers[0]._connected = true;
941-
assert.strictEqual(remote.reserve(1).to_json(), 'NaN');
942-
remote._servers = [];
941+
// Throws because the server has not had reserve_inc, reserve_base set
943942
assert.throws(function() {
944943
remote.reserve(10).to_json();
945944
});

test/server-test.js

+7
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,13 @@ describe('Server', function() {
10631063
assert.strictEqual(server._reserve().to_json(), '20000000');
10641064
});
10651065

1066+
it('Compute reserve, positive OwnerCount', function() {
1067+
const server = new Server(new Remote(), 'ws://localhost:5748');
1068+
server._reserve_base = 20000000;
1069+
server._reserve_inc = 5000000;
1070+
assert.strictEqual(server._reserve(4).to_json(), '40000000');
1071+
});
1072+
10661073
it('Cache hostid', function(done) {
10671074
const wss = new ws.Server({
10681075
port: 5748

0 commit comments

Comments
 (0)