Merge pull request #440 from nodar-chkuaselidze/mtx/from-json
MTX - Recover view from JSON
This commit is contained in:
commit
9fb9b1c4ad
@ -21,6 +21,7 @@ const consensus = require('../protocol/consensus');
|
||||
const policy = require('../protocol/policy');
|
||||
const Amount = require('../btc/amount');
|
||||
const Stack = require('../script/stack');
|
||||
const util = require('../utils/util');
|
||||
|
||||
/**
|
||||
* MTX
|
||||
@ -1460,6 +1461,32 @@ class MTX extends TX {
|
||||
return super.getJSON(network, this.view);
|
||||
}
|
||||
|
||||
/**
|
||||
* Inject properties from a json object
|
||||
* @param {Object} json
|
||||
*/
|
||||
|
||||
fromJSON(json) {
|
||||
super.fromJSON(json);
|
||||
|
||||
for (let i = 0; i < json.inputs.length; i++) {
|
||||
const input = json.inputs[i];
|
||||
const {prevout} = input;
|
||||
|
||||
if (!input.coin)
|
||||
continue;
|
||||
|
||||
const coin = Coin.fromJSON(input.coin);
|
||||
|
||||
coin.hash = util.revHex(prevout.hash);
|
||||
coin.index = prevout.index;
|
||||
|
||||
this.view.addCoin(coin);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiate a transaction from a
|
||||
* jsonified transaction object.
|
||||
|
||||
@ -10,6 +10,7 @@ const random = require('bcrypto/lib/random');
|
||||
const util = require('../lib/utils/util');
|
||||
const consensus = require('../lib/protocol/consensus');
|
||||
const TX = require('../lib/primitives/tx');
|
||||
const MTX = require('../lib/primitives/mtx');
|
||||
const Output = require('../lib/primitives/output');
|
||||
const Outpoint = require('../lib/primitives/outpoint');
|
||||
const Script = require('../lib/script/script');
|
||||
@ -1102,4 +1103,19 @@ describe('TX', function() {
|
||||
assert.strictEqual(json.index, index);
|
||||
}
|
||||
});
|
||||
|
||||
it('should recover coins from JSON', () => {
|
||||
const [tx, view] = tx2.getTX();
|
||||
|
||||
const mtx = MTX.fromTX(tx);
|
||||
mtx.view = view;
|
||||
|
||||
// get input value as example
|
||||
const value1 = mtx.getInputValue();
|
||||
|
||||
const mtx2 = MTX.fromJSON(mtx.toJSON());
|
||||
const value2 = mtx2.getInputValue();
|
||||
|
||||
assert.strictEqual(value1, value2);
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user