UNPKG

bitcore-p2p

Version:

Interface to the bitcoin P2P network for bitcore

44 lines (36 loc) 1.14 kB
'use strict'; var bitcore = require('bitcore-lib'); var $ = bitcore.util.preconditions; var BufferWriter = bitcore.encoding.BufferWriter; var Hash = bitcore.crypto.Hash; /** * Base message that can be inherited to add an additional * `getPayload` method to modify the message payload. * @param {Object=} options * @param {String=} options.command * @param {Network=} options.network * @constructor */ function Message(options) { this.command = options.command; this.network = options.network; } /** * @returns {Buffer} - Serialized message * @constructor */ Message.prototype.toBuffer = Message.prototype.serialize = function() { $.checkState(this.network, 'Need to have a defined network to serialize message'); var commandBuf = new Buffer(Array(12)); commandBuf.write(this.command, 'ascii'); var payload = this.getPayload(); var checksum = Hash.sha256sha256(payload).slice(0, 4); var bw = new BufferWriter(); bw.write(this.network.networkMagic); bw.write(commandBuf); bw.writeUInt32LE(payload.length); bw.write(checksum); bw.write(payload); return bw.concat(); }; module.exports = Message;