Beispiel #1
0
Settings.prototype.setLivenetDefaults = function () {
  this.network.type = 'livenet';
  this.network.port = 8333;
  this.network.magicBytes = hex('f9beb4d9');

  // List of bootstrapping mechanisms
  this.network.bootstrap = [
    new DnsBootstrapper([
      "bitseed.xf2.org",
      "dnsseed.bluematt.me",
      "seed.bitcoin.sipa.be",
      "dnsseed.bitcoin.dashjr.org",
    ]),
    new IrcBootstrapper('irc.lfnet.org', '#bitcoin')
  ];
  this.network.genesisBlock = {
    'height': 0,
    'nonce': 2083236893,
    'version': 1,
    'hash': hex('6FE28C0AB6F1B372C1A6A246AE63F74F' +
                '931E8365E15A089C68D6190000000000'),
    'prev_hash': new Buffer(32).clear(),
    'timestamp': 1231006505,
    'merkle_root': hex('3BA3EDFD7A7B12B27AC72C3E67768F61' +
                       '7FC81BC3888A51323A9FB8AA4B1E5E4A'),
    'bits': 486604799
  };

  this.network.genesisBlockTx = {
    'outs': [{
      'v': hex('00F2052A01000000'), // 50 BTC
      's': Binary.put()
        .word8(65) // 65 bytes of data follow
        .put(hex('04678AFDB0FE5548271967F1A67130B7105CD6A828E03909' +
                 'A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112' +
                 'DE5C384DF7BA0B8D578A4C702B6BF11D5F'))
        .word8(0xAC) // OP_CHECKSIG
        .buffer()
    }],
    'lock_time': 0,
    'version': 1,
    'hash': hex('3BA3EDFD7A7B12B27AC72C3E67768F61' +
                '7FC81BC3888A51323A9FB8AA4B1E5E4A'),
    'ins': [{
      'q': 0xFFFFFFFF,
      'o': hex("000000000000000000000000000000000000" +
               "0000000000000000000000000000FFFFFFFF"),
      's': Binary.put()
        .put(hex('04FFFF001D010445'))
        .put(new Buffer('The Times 03/Jan/2009 Chancellor on brink of ' +
                        'second bailout for banks', 'ascii'))
        .buffer()
    }]
  };

  this.network.proofOfWorkLimit = hex("00000000FFFFFFFFFFFFFFFFFFFFFFFF" +
                                      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");

  this.network.checkpoints = checkpoints.livenet;
};
Beispiel #2
0
Packet.prototype.toData = function() {
  if (!this._data) {
    return binary.put()
      .word16be(this._type)
      .word16be(0)
      .buffer();
  }
  
  return binary.put()
    .word16be(this._type)
    .word16be(this._data.length)
    .put(this._data)
    .buffer();
}
Script.chunksToBuffer = function (chunks) {
  var buf = Put();
  for (var i = 0, l = chunks.length; i < l; i++) {
    var data = chunks[i];
    if (Buffer.isBuffer(data)) {
      if (data.length < OP_PUSHDATA1) {
        buf.word8(data.length);
      } else if (data.length <= 0xff) {
        buf.word8(OP_PUSHDATA1);
        buf.word8(data.length);
      } else if (data.length <= 0xffff) {
        buf.word8(OP_PUSHDATA2);
        buf.word16le(data.length);
      } else {
        buf.word8(OP_PUSHDATA4);
        buf.word32le(data.length);
      }
      buf.put(data);
    } else if ("number" === typeof data) {
      buf.word8(data);
    } else {
      throw new Error("Script.chunksToBuffer(): Invalid chunk datatype");
    }
  }
  return buf.buffer();
};
Beispiel #4
0
Packet.createStartAppPacket = function(info) {
  var data = binary.put()
    .word32be(info.size)
    .buffer();
  
  return new Packet(START_APP_TYPE, data);
}
Beispiel #5
0
Peer.prototype.toBuffer = function() {
  var put = Binary.put();
  put.word32le(this.lastSeen);
  put.word64le(this.services);
  put.put(this.getHostAsBuffer());
  put.word16be(this.port);
  return put.buffer();
};
Script.prototype.writeOp = function (opcode)
{
  var buf = Put();
  buf.put(this.buffer);
  buf.word8(opcode);
  this.buffer = buf.buffer();

  this.chunks.push(opcode);
};
Block.method('getHeader', function () {
  put = Binary.put();
  put.word32le(this.version);
  put.put(this.prev_hash);
  put.put(this.merkle_root);
  put.word32le(this.timestamp);
  put.word32le(this.bits);
  put.word32le(this.nonce);
  return put.buffer();
});
Script.prototype.writeBytes = function (data)
{
  var buf = Put();
  buf.put(this.buffer);
  if (data.length < OP_PUSHDATA1) {
    buf.word8(data.length);
  } else if (data.length <= 0xff) {
    buf.word8(OP_PUSHDATA1);
    buf.word8(data.length);
  } else if (data.length <= 0xffff) {
    buf.word8(OP_PUSHDATA2);
    buf.word16le(data.length);
  } else {
    buf.word8(OP_PUSHDATA4);
    buf.word32le(data.length);
  }
  buf.put(data);
  this.buffer = buf.buffer();
  this.chunks.push(data);
};
// 29812: a3d2c18acc First block to use merged mining with more than one auxiliary chain

cfg.network.genesisBlock = {
  'height': 0,
  'nonce': 0xa21ea192,
  'version': 1,
  'hash': hex('70c7a9f0a2fb3d48e635a70d5b157c807e58c8fb45eb2c5e2cb7620000000000'),
  'prev_hash': new Buffer(32).clear(),
  'timestamp': 1303000001,
  'merkle_root': hex('0dcbd3e6f061215bf3b3383c8ce2ec201bc65acde32595449ac86890bd2dc641'),
  'bits': 0x1c007fff
};
cfg.network.genesisBlockTx = {
  'outs': [{
    'v': hex('00F2052A01'), // 50 BTC
    's': Binary.put()
      .word8(65) // 65 bytes of data follow
      .put(hex('04b620369050cd899ffbbc4e8ee51e8c4534a855bb463439d63d235d4779685d8b6f4870a238cf365ac94fa13ef9a2a22cd99d0d5ee86dcabcafce36c7acf43ce5'))
      .word8(0xAC) // OP_CHECKSIG
      .buffer()
  }],
  'lock_time': 0,
  'version': 1,
  'hash': hex('a6df68c2e882cc6406a477b90e58cd01d102032a8a5e9f49c5e17d44dbef8b5e'),
  'ins': [{
    'q': hex('00F2052A01'),
    'o': hex("000000000000000000000000000000000000" +
             "0000000000000000000000000000FFFFFFFF"),
    's': Binary.put()
      .put(hex('04ff7f001c'))
      .put(hex('020a024b'))