bitcore/lib/txout.js

74 lines
1.8 KiB
JavaScript
Raw Normal View History

2014-11-20 07:56:35 -08:00
'use strict';
var BN = require('./crypto/bn');
2014-11-21 07:54:56 -08:00
var BufferReader = require('./encoding/bufferreader');
var BufferWriter = require('./encoding/bufferwriter');
var Varint = require('./encoding/varint');
2014-09-15 18:38:21 -07:00
var Script = require('./script');
2014-09-17 16:48:23 -07:00
var Txout = function Txout(valuebn, scriptvi, script) {
2014-09-15 18:38:21 -07:00
if (!(this instanceof Txout))
2014-09-17 16:48:23 -07:00
return new Txout(valuebn, scriptvi, script);
2014-09-15 18:38:21 -07:00
if (valuebn instanceof BN) {
this.set({
valuebn: valuebn,
2014-09-17 16:48:23 -07:00
scriptvi: scriptvi,
2014-09-15 18:38:21 -07:00
script: script
});
} else if (valuebn) {
var obj = valuebn;
this.set(obj);
}
};
Txout.prototype.set = function(obj) {
this.valuebn = obj.valuebn || this.valuebn;
2014-09-17 16:48:23 -07:00
this.scriptvi = obj.scriptvi || this.scriptvi;
2014-09-15 18:38:21 -07:00
this.script = obj.script || this.script;
return this;
};
Txout.prototype.fromJSON = function(json) {
this.set({
valuebn: BN().fromJSON(json.valuebn),
scriptvi: Varint().fromJSON(json.scriptvi),
script: Script().fromJSON(json.script)
});
return this;
};
Txout.prototype.toJSON = function() {
return {
valuebn: this.valuebn.toJSON(),
scriptvi: this.scriptvi.toJSON(),
script: this.script.toJSON()
};
};
2014-09-15 18:38:21 -07:00
Txout.prototype.fromBuffer = function(buf) {
return this.fromBufferReader(BufferReader(buf));
};
Txout.prototype.fromBufferReader = function(br) {
this.valuebn = br.readUInt64LEBN();
2014-09-17 16:48:23 -07:00
this.scriptvi = Varint(br.readVarintNum());
this.script = Script().fromBuffer(br.read(this.scriptvi.toNumber()));
2014-09-15 18:38:21 -07:00
return this;
};
Txout.prototype.toBuffer = function() {
var bw = new BufferWriter();
return this.toBufferWriter(bw).concat();
};
Txout.prototype.toBufferWriter = function(bw) {
if (!bw)
bw = new BufferWriter();
bw.writeUInt64LEBN(this.valuebn);
2014-09-17 16:48:23 -07:00
bw.write(this.scriptvi.buf);
2014-09-15 18:38:21 -07:00
bw.write(this.script.toBuffer());
return bw;
};
module.exports = Txout;