-
Notifications
You must be signed in to change notification settings - Fork 3
/
connect-to-the-p2p-network.js
129 lines (103 loc) · 2.44 KB
/
connect-to-the-p2p-network.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
'use strict';
const bcoin = require('../..').set('main');
const Logger = require('blgr');
// Setup logger to see what's Bcoin doing.
const logger = new Logger({
level: 'info'
});
// Create a blockchain and store it in memory.
const blocks = bcoin.blockstore.create({
memory: true
});
const chain = new bcoin.Chain({
memory: true,
blocks: blocks,
network: 'main',
logger: logger
});
const mempool = new bcoin.Mempool({
chain: chain,
logger: logger
});
// Create a network pool of peers with a limit of 8 peers.
const pool = new bcoin.Pool({
chain: chain,
mempool: mempool,
maxPeers: 8,
logger: logger
});
(async function() {
await logger.open();
await blocks.open();
await chain.open();
await pool.open();
// Connect, start retrieving and relaying txs
await pool.connect();
// Start the blockchain sync.
pool.startSync();
// Watch the action
const color = '\x1b[31m';
chain.on('block', (block) => {
console.log(color, 'Added mainnet block:');
console.log(block.rhash());
});
mempool.on('tx', (tx) => {
console.log(color, 'Added mainnet tx to mempool:');
console.log(tx.rhash);
});
pool.on('tx', (tx) => {
console.log(color, 'Saw mainnet transaction:');
console.log(tx.rhash);
});
})().catch((err) => {
console.error(err.stack);
process.exit(1);
});;
// Start up a testnet sync in-memory
// while we're at it (because we can).
const tblocks = bcoin.blockstore.create({
memory: true
});
const tchain = new bcoin.Chain({
memory: true,
blocks: tblocks,
network: 'testnet',
logger: logger
});
const tmempool = new bcoin.Mempool({
network: 'testnet',
chain: tchain,
logger: logger
});
const tpool = new bcoin.Pool({
network: 'testnet',
chain: tchain,
mempool: tmempool,
size: 8,
logger: logger
});
(async function() {
await tblocks.open();
await tchain.open();
await tpool.open();
// Connect, start retrieving and relaying txs
await tpool.connect();
// Start the blockchain sync.
tpool.startSync();
const color = '\x1b[32m';
tchain.on('block', (block) => {
console.log(color, 'Added testnet block:');
console.log(block.rhash());
});
tmempool.on('tx', (tx) => {
console.log(color, 'Added testnet tx to mempool:');
console.log(tx.rhash);
});
tpool.on('tx', (tx) => {
console.log(color, 'Saw testnet transaction:');
console.log(tx.rhash);
});
})().catch((err) => {
console.error(err.stack);
process.exit(1);
});