fcoin/lib/net/common.js
2017-02-03 22:47:26 -08:00

154 lines
2.2 KiB
JavaScript

/*!
* common.js - p2p constants for bcoin
* Copyright (c) 2014-2015, Fedor Indutny (MIT License)
* Copyright (c) 2014-2017, Christopher Jeffrey (MIT License).
* https://github.com/bcoin-org/bcoin
*/
'use strict';
/**
* @module net/common
*/
var pkg = require('../../package.json');
/**
* Default protocol version.
* @const {Number}
* @default
*/
exports.PROTOCOL_VERSION = 70015;
/**
* Minimum protocol version we're willing to talk to.
* @const {Number}
* @default
*/
exports.MIN_VERSION = 70001;
/**
* Minimum version for getheaders.
* @const {Number}
* @default
*/
exports.HEADERS_VERSION = 31800;
/**
* Minimum version for bip37.
* @const {Number}
* @default
*/
exports.BLOOM_VERSION = 70011;
/**
* Minimum version for bip152.
* @const {Number}
* @default
*/
exports.SENDHEADERS_VERSION = 7012;
/**
* Minimum version for bip152.
* @const {Number}
* @default
*/
exports.COMPACT_VERSION = 70014;
/**
* Minimum version for bip152+segwit.
* @const {Number}
* @default
*/
exports.COMPACT_WITNESS_VERSION = 70015;
/**
* Service bits.
* @enum {Number}
* @default
*/
exports.services = {
/**
* Whether network services are enabled.
*/
NETWORK: 1 << 0,
/**
* Whether the peer supports the getutxos packet.
*/
GETUTXO: 1 << 1,
/**
* Whether the peer supports BIP37.
*/
BLOOM: 1 << 2,
/**
* Whether the peer supports segregated witness.
*/
WITNESS: 1 << 3
};
/**
* Bcoin's services (we support everything).
* @const {Number}
* @default
*/
exports.LOCAL_SERVICES = 0
| exports.services.NETWORK
| exports.services.WITNESS;
/**
* Required services (network and segwit).
* @const {Number}
* @default
*/
exports.REQUIRED_SERVICES = 0
| exports.services.NETWORK;
/**
* Default user agent: `/bcoin:[version]/`.
* @const {String}
* @default
*/
exports.USER_AGENT = '/bcoin:' + pkg.version + '/';
/**
* Max message size (~4mb with segwit, formerly 2mb)
* @const {Number}
* @default
*/
exports.MAX_MESSAGE = 4 * 1000 * 1000;
/**
* Amount of time to ban misbheaving peers.
* @const {Number}
* @default
*/
exports.BAN_TIME = 24 * 60 * 60;
/**
* Ban score threshold before ban is placed in effect.
* @const {Number}
* @default
*/
exports.BAN_SCORE = 100;