Skip to content

Instantly share code, notes, and snippets.

View Nuhvi's full-sized avatar

Nuh Nuhvi

View GitHub Profile
@Nuhvi
Nuhvi / get_peers.js
Last active September 9, 2023 03:56
Mainline peer discovery
import DHT from 'bittorrent-dht'
const BOOTSTRAP = [
{ host: 'router.bittorrent.com', port: 6881 },
{ host: 'router.utorrent.com', port: 6881 },
{ host: 'dht.transmissionbt.com', port: 6881 },
{ host: 'router.nuh.dev', port: 6881 }
]
const infoHash = random()
@Nuhvi
Nuhvi / hyperswarm-works-connect.js
Last active March 4, 2023 19:51
hyperswarm works
// Run https://gist.github.com/Nazeh/64edc0fa2d0920f55eb8b4df227c93c9
// on one machine, then run this code on another passing the publicKey
// logged from the server `node hyperswarm-works-connect.js <publicKey>`
// then you should be able to connect to your peer and start chatting!
// If not, run https://github.com/holepunchto/hyperswarm-doctor
// to check both of your networks, if both have randomized ports, holepunching won't work.
import DHT from '@hyperswarm/dht'
const publicKeyHex = process.argv[2]
@Nuhvi
Nuhvi / hyperswarm-works-server.js
Last active March 4, 2023 19:50
hyperswarm works
// Run `node hyperswarm-works-server.js` on one machine,
// then pass the logged server's public key to your peer,
// once they connect using https://gist.github.com/Nazeh/501ff7b94c4c62a997b8315d3606fc92
// they should be able to connect to you and start chatting.
// If not, run https://github.com/holepunchto/hyperswarm-doctor
// to check both of your networks, if both have randomized ports, holepunching won't work.
import DHT from '@hyperswarm/dht'
const node = new DHT()
@Nuhvi
Nuhvi / hyperswarm-dht-record-max-size.js
Last active March 3, 2023 00:19
Hyperswarm record max size should be less than MTU
import DHT from '@hyperswarm/dht'
const MTU = 1500
const payloadSize = MTU / 2
const payload = random(payloadSize)
const dht = new DHT()
const mutablePutResponse = await dht.mutablePut(dht.defaultKeyPair, payload)
@Nuhvi
Nuhvi / test.js
Last active October 9, 2022 14:55
test hyperdrive keychain PR backward compatibility
import * as SlashURL from '@synonymdev/slashtags-url'
import Corestore from 'corestore'
import Hyperdrive from 'hyperdrive'
import Hyperswarm from 'hyperswarm'
import RAM from 'random-access-memory'
const swarm = new Hyperswarm()
const corestore = new Corestore(RAM)
swarm.on('connection', socket => corestore.replicate(socket))
@Nuhvi
Nuhvi / successful_corestore_replicate_and_protomux_rpc.js
Created August 19, 2022 13:24
successful corestore.replicate + protomuxRPC
import Hyperswarm from 'hyperswarm'
import Corestore from 'corestore'
import ProtomuxRPC from 'protomux-rpc'
import Protomux from 'protomux'
import RAM from 'random-access-memory'
import createTestnet from '@hyperswarm/testnet'
import Hypercore from 'hypercore'
const testnet = await createTestnet()
import Hyperswarm from 'hyperswarm'
import Corestore from 'corestore'
import ProtomuxRPC from 'protomux-rpc'
import RAM from 'random-access-memory'
import createTestnet from '@hyperswarm/testnet'
const testnet = await createTestnet()
const swarm_A = new Hyperswarm(testnet)
const store_A = new Corestore(RAM)
import Hypercore from 'hypercore';
import Hyperbee from 'hyperbee';
class Hyperstate extends Hypercore {
constructor(storage, key, opts) {
super(storage, key, opts);
this.state = {};
this.opening = this._open();
this.opening.catch(noop);
@Nuhvi
Nuhvi / gist:5a152d4ad20a8e240f9fee5accc50127
Last active June 24, 2022 07:19
Slashtags SDK quick communication setup
import { SDK } from '@synonymdev/slashtags-sdk';
const sdkA = await SDK.init({
persist: false, // No storage needed for this demo
primaryKey: Buffer.from('a'.repeat(64)), // Keep primary key consistent
});
console.log("Alice's DHT bootstrapped"); // Bootstrapping DHT takes some time.
const alice = sdkA.slashtag({ name: 'alice' });
alice.listen();
// npm i hypercore@10.0.0-alpha.24 hyperswarm@3.0.1
// Run `node create-hypercore.js` and pass the resulting key to https://gist.github.com/Nazeh/721368b93729dcfa00049c9de230f2ad
const Hypercore = require('hypercore');
const Hyperswarm = require('hyperswarm');
const createCore = async () => {
const core = new Hypercore('origin', { valueEncoding: 'json' });
await core.ready();
// Add blocks here if you want.