RUM: The internet alternatives

RUM: The internet alternatives

An open source peer-to-peer application infrastructure to offer the internet alternatives in a decentralized and privacy oriented way.

Summary

The internet has become too centralized, and RUM is trying to find an alternative way to build online applications.

In the RUM system users are organized into groups, and each group will share a blockchain.

Group’s data will be encrypted and sync with all related users as events. All data will be stored in the group-shared-blockchain and eventually be consistent.

Applications can replay the blockchain locally and render the results on the user interface and interact with users.

There are no centralized server providers to store or process data.

rum-architecture

Concepts

Peer: A user with a pair of keys and connects to the peer-to-peer network.

Group: Multi peers or single peer can be organized into groups. A group can represent any online applications, a twitter-like SNS, a reddit-like community or a personal cloud notebook.

Group Owner: The creator of a group is the group owner, who will record any valid events transactions in this group and produce new blocks onto old blocks.

Group owners have more privileges, including authorizing other peers (as producers) to produce new blocks, or denying some peers to send events in this group.

Producer: Any peers with a public IP address and open ports (including port forwarding/UPnP) can become a producer,who can help the group owner to produce new blocks without reading encrypted events/messages. Producers may receive crypto incentives as reward from the group owner or users, depending on the consensus.

Event/Message: Any activity from users is regarded as an event, for example, creating a post, updating avatars, and replying to a post. Event transactions will be broadcast to the group owner and all producers, waiting to be recorded into the new block. RUM uses a subset of Activity Vocabulary Core Types to represent event types. Blockchain: Events transactions will be recorded into blocks, then be linked together to become a blockchain.

Gossip Network: There are no centralized servers in the RUM network, the network is only constructed by peers. All event transactions/messages will be passed along to their neighbours peers until target peers receive it eventually.

Bootstrap: Bootstrap node is an address book which can help your peers to discover others peers through the DHT-KAD protocol. You can use AddPeer api to add any normal peers which you trust to bootstrap. However, bootstrap node/DHT is not the only way -- a peer will discover others by peer-exchange protocol in the gossip network.

Why

The internet is broken.

Technology monopoly, especially social network monopoly, has become a worldwide problem. In the United States and the EU, technology companies have caused a lot of disputes over privacy and user data ownership issues. Criticism of traditional Internet platforms has long been a mainstream voice in various countries.

Almost all online services are running on Client-Server architecture, which means all users' activities and data will be stored in centralized servers. User's data always be controlled by service providers not themself, this made the internet centralized by nature.

People urgently need an innovative model that no longer adopts the "privacy for advertising" mode: a new type of network system where data is owned by users and has a special way to distribute traffic without being controlled by the enterprise.

RUM uses a different approach to rebuild the online service. Users will control their own data and interact with other related users in the peer-to-peer network.

How (video, WIP)

Ecosystem (WIP)

The RUM tokens can be mined by anon-GPU proof of X algorithm with less energy consuming. After the mainnet launch, the chances of winning the reward is linked to the user's contribution to the network, including the data storage and network traffic.

Why Do We Need RUM Tokens?

  1. Anti-spam

Blocking or blacklists does not work on a decentralized system, so we must use an economic measure to stop abuses and spam. Any RUM network operations will need a small amount of RUM. This is the origin of the Hashcash and POW being invented, as well as the Bitcoin.

  1. Resources contribution incentive

A peer-to-peer system must provide economic incentive to minimize the Free-rider problem. Peers share their computing and network resources to help keep the RUM network secure and robust, to get rewards they deserve from the network.

Getting Started

TL;DR: Try rum-app, a cross platform RUM GUI application.

Build:

Build the quorum binary by running the build.sh script.

Build API Document:

./scripts/swag_init.sh
go run cmd/docs.go

Open browser with http://localhost:1323/swagger/index.html

Run a RUM peer

./quorum -peername mypeer -listen /ip4/0.0.0.0/tcp/7000  -apilisten 127.0.0.1:8000 -peer /ip4/94.23.17.189/tcp/10666/p2p/16Uiu2HAkvYJbiKnwzFybbfzNxtuHFEFu1guV9nFcTiZNSYz8kUWf -configdir ~/rumdata/peer5config -datadir ~/rumdata/peer5data -keystoredir /rumdata/peer5keystore -debug true

OPTIONS:
   -listen      a multiaddress for the peer service listening
   -apilisten   http api  listening address
   -peer        a bootstrap peer multiaddress. Any online peer could be used for bootstrap, you can use the RUM testing bootstrap server for testing.
   -configdir   a directory for config files
   -datadir     all data storage location
   -keystoredir a directory to store private keys. All key files are password protected, and it's very important to keep backups of all your keys.
   -debug       enable logging level to debug or not

Example

The main purpose of RUM is to connect groups of people without any centralized server. We start from a simple scenario of a private decentralized forum for a group of friends.

  1. Run RUM peer on each friend’s computer, so we have peerA, peerB, peerC...

  2. PeerA will create the group, and A will become the owner of the group.

curl -k -X POST -H 'Content-Type: application/json' -d '{"group_name":"ourforum","consensus_type":"poa","encryption_type":"public","app_key":"group_forum"}' https://127.0.0.1:8000/api/v1/group

The response is the group seed:

{"genesis_block":{"BlockId":"989ffea1-083e-46b0-be02-3bad3de7d2e1","GroupId":"01014e95-303e-4955-b06e-bf185556a729","ProducerPubKey":"CAISIQPAeFZ8rgsENE12HgYwH+3N/aKsRN4fnPEUzEIY7ZyiAQ==","Hash":"gg6/EpEfafZKigjXKiSSu4oFb86ko7cbk1c7AayASiQ=","Signature":"MEYCIQC2n2lHD2Whe5m3Rn0FzlkwMN+7l2iuVMWsMqQPi4uroQIhAMFFd8kDcibptGzAhb7Pmh2CjvXzOGo0uQd55TDtNZ9d","Timestamp":1633022374646518065},"group_id":"01014e95-303e-4955-b06e-bf185556a729","group_name":"ourforum","owner_pubkey":"CAISIQPAeFZ8rgsENE12HgYwH+3N/aKsRN4fnPEUzEIY7ZyiAQ==","owner_encryptpubkey":"age19732hyts2cs4s0xfm2js5fdd5zlrg7wtzaztcnsf7kcy0acgydksd6q3mu","consensus_type":"poa","encryption_type":"public","cipher_key":"accb6a4faf34734c418683a9c62bb61209dc79380b69dab20b5042694009dfda","app_key":"group_forum","signature":"3046022100b0676faad185a8af627ea98549688e1d0b15164c3b95dd45c756b27194671287022100f0f32dfb4bb8729d0b63fdc3f068e54ff22b3c6c2fc092ab3c8a2c382df22683"}
  1. Share the group seed with your friends, so they can join your group with the seed.

  2. Join the group with Peer B, C...

curl -k -X POST -H 'Content-Type: application/json' -d '{"genesis_block":{"BlockId":"989ffea1-083e-46b0-be02-3bad3de7d2e1","GroupId":"01014e95-303e-4955-b06e-bf185556a729","ProducerPubKey":"CAISIQPAeFZ8rgsENE12HgYwH+3N/aKsRN4fnPEUzEIY7ZyiAQ==","Hash":"gg6/EpEfafZKigjXKiSSu4oFb86ko7cbk1c7AayASiQ=","Signature":"MEYCIQC2n2lHD2Whe5m3Rn0FzlkwMN+7l2iuVMWsMqQPi4uroQIhAMFFd8kDcibptGzAhb7Pmh2CjvXzOGo0uQd55TDtNZ9d","Timestamp":1633022374646518065},"group_id":"01014e95-303e-4955-b06e-bf185556a729","group_name":"ourforum","owner_pubkey":"CAISIQPAeFZ8rgsENE12HgYwH+3N/aKsRN4fnPEUzEIY7ZyiAQ==","owner_encryptpubkey":"age19732hyts2cs4s0xfm2js5fdd5zlrg7wtzaztcnsf7kcy0acgydksd6q3mu","consensus_type":"poa","encryption_type":"public","cipher_key":"accb6a4faf34734c418683a9c62bb61209dc79380b69dab20b5042694009dfda","app_key":"group_forum","signature":"3046022100b0676faad185a8af627ea98549688e1d0b15164c3b95dd45c756b27194671287022100f0f32dfb4bb8729d0b63fdc3f068e54ff22b3c6c2fc092ab3c8a2c382df22683"}' https://127.0.0.1:8001/api/v1/group/join
{"group_id":"01014e95-303e-4955-b06e-bf185556a729","group_name":"ourforum","owner_pubkey":"CAISIQPAeFZ8rgsENE12HgYwH+3N/aKsRN4fnPEUzEIY7ZyiAQ==","user_pubkey":"CAISIQNc7wg3VLZCbKHetaqbZdUro/IUSy33ypWPoI4J24L6gw==","user_encryptpubkey":"age1xk8znrr3ewpz3hcnu34x6wap750vvuyhl63t0rwqhn0a33pke45q2yjkez","consensus_type":"poa","encryption_type":"public","cipher_key":"accb6a4faf34734c418683a9c62bb61209dc79380b69dab20b5042694009dfda","app_key":"group_forum","signature":"3045022100e7ff167741db35d482aa1a233693f95807a5df1e44ce338121a103bd8e9444450220595e23cb5c129a6a257cb34f4d914799c1f606cb3e13d25b6cda2c8b84e58cb2"}
  1. Check the group status
curl -k https://127.0.0.1:8000/api/v1/groups
{ "groups": [ { "group_id": "01014e95-303e-4955-b06e-bf185556a729", "group_name": "ourforum", "owner_pubkey": "CAISIQPAeFZ8rgsENE12HgYwH+3N/aKsRN4fnPEUzEIY7ZyiAQ==", "user_pubkey": "CAISIQPAeFZ8rgsENE12HgYwH+3N/aKsRN4fnPEUzEIY7ZyiAQ==", "consensus_type": "POA", "encryption_type": "PUBLIC", "cipher_key": "accb6a4faf34734c418683a9c62bb61209dc79380b69dab20b5042694009dfda", "app_key": "group_forum", "last_updated": 1633022375303983600, "highest_height": 0, "highest_block_id": [ "989ffea1-083e-46b0-be02-3bad3de7d2e1" ], "group_status": "IDLE" } ] }
  1. "group_status": "IDLE" means the group is ready to use. Check the group_status on PeerB, C... make sure group_status is IDLE on every peer.

  2. It’s time to create your first forum post.

curl --insecure -X POST -H 'Content-Type: application/json' -d '{"type":"Add","object":{"type":"Note","content":"The Future Will Be Decentralized","name":"My First Post!"},"target":{"id":"01014e95-303e-4955-b06e-bf185556a729","type":"Group"}}' https://127.0.0.1:8000/api/v1/group/content
 {"trx_id":"0ad70ee3-b6de-4a19-9b3d-f02c037e6a52"}
  1. waiting about 10s to sync the blockchain, then check the groups status again.
curl -k https://127.0.0.1:8000/api/v1/groups
{ "groups": [ { "group_id": "01014e95-303e-4955-b06e-bf185556a729", "group_name": "ourforum", "owner_pubkey": "CAISIQPAeFZ8rgsENE12HgYwH+3N/aKsRN4fnPEUzEIY7ZyiAQ==", "user_pubkey": "CAISIQPAeFZ8rgsENE12HgYwH+3N/aKsRN4fnPEUzEIY7ZyiAQ==", "consensus_type": "POA", "encryption_type": "PUBLIC", "cipher_key": "accb6a4faf34734c418683a9c62bb61209dc79380b69dab20b5042694009dfda", "app_key": "group_forum", "last_updated": 1633024842663874300, "highest_height": 1, "highest_block_id": [ "a835ea5f-ece1-4ba4-94f3-782470dff8c6" ], "group_status": "IDLE" } ] }

You will find the group’s highest_height becomes 1, and the highest_block_id also changed.

Check the group_status on PeerB, C ... , All peers should have the same highest_height and highest_block_id which means that all peers have been synchronized successfully.

  1. view the posts
curl -k -X POST -H 'Content-Type: application/json' -d '{"senders":[]}' "https://localhost:8000/app/api/v1/group/01014e95-303e-4955-b06e-bf185556a729/content?num=20&reverse=false"
[ { "TrxId": "0ad70ee3-b6de-4a19-9b3d-f02c037e6a52", "Publisher": "CAISIQNc7wg3VLZCbKHetaqbZdUro/IUSy33ypWPoI4J24L6gw==", "Content": { "type": "Note", "content": "The Future Will Be Decentralized", "name": "My First Post!" }, "TypeUrl": "quorum.pb.Object", "TimeStamp": 1633024832659417600 } ]

Congratulations, You have a fully decentralized forum now. Every peer can view the forum posts from their peers.All the data belongs to you and your friends, there is no other service provider or centralized storage.

  1. Next

Add more producers to prevent outages.


Tips: rum-app will help you create/join/post/view with a nice GUI.

Similar Resources

A comprehensive list of alternatives to your favorite software

alternativeto A comprehensive list of alternatives to your favorite software. Please do not edit this file directly. Instead, follow the steps outline

Jun 16, 2022

Resolved the issue that Windows cannot detect the Internet even if it does have an Internet connection.

win-connect 中文文档 Background This program is built to resolved the issue that Windows cannot detect the Internet even if it does have an Internet conne

Dec 19, 2021

Fast specialized time-series database for IoT, real-time internet connected devices and AI analytics.

Fast specialized time-series database for IoT, real-time internet connected devices and AI analytics.

unitdb Unitdb is blazing fast specialized time-series database for microservices, IoT, and realtime internet connected devices. As Unitdb satisfy the

Jan 1, 2023

:envelope: A streaming Go library for the Internet Message Format and mail messages

go-message A Go library for the Internet Message Format. It implements: RFC 5322: Internet Message Format RFC 2045, RFC 2046 and RFC 2047: Multipurpos

Dec 26, 2022

Golang framework for robotics, drones, and the Internet of Things (IoT)

Golang framework for robotics, drones, and the Internet of Things (IoT)

Gobot (https://gobot.io/) is a framework using the Go programming language (https://golang.org/) for robotics, physical computing, and the Internet of

Dec 29, 2022

Go client for the Internet Game Database API

Go client for the Internet Game Database API

IGDB Communicate with the Internet Game Database API quickly and easily with the igdb package. With the igdb client, you can retrieve extensive inform

Sep 27, 2022

twitter clone front-end for Internet Engineering course - fall 99 built by go+echo

twitter backend build twitter-like back-end for internet engeering course - fall 99 with go+echo+gorm team mates Roozbeh Sharifnasab + Parsa Fadaee +

Nov 9, 2022

Use random bot scanning the internet to seed a Conways Game of Life running on a small LCD on my desk

botnet-fishbowl Use random bots scanning the internet to seed a Conways Game of Life running on a small LCD on my desk Conways Game of Life tends to r

Dec 9, 2022

Discover internet-wide misconfigurations while drinking coffee

netz 🌐 🦅 The purpose of this project is to discover an internet-wide misconfiguration of network components like web-servers/databases/cache-service

Dec 31, 2022

Secure and Interoperable Internet of Things

plgd Cloud Internet of Things (IoT) technologies have evolved rapidly in recent years and continue to change how we interact with our surroundings. Fo

Dec 26, 2022

A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

frp README | 中文文档 What is frp? frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the Internet. As of now, it s

Jan 5, 2023

Check your internet speed right from your terminal. Built on GOlang using chromedp

Check your internet speed right from your terminal. Built on GOlang using chromedp

adhocore/fast A GO lang command line tool to check internet speed right from the terminal. Uses fast.com through headless chrome. Prerequistie Chrome

Dec 26, 2022

Monitor your network and internet speed with Docker & Prometheus

Monitor your network and internet speed with Docker & Prometheus

Stand-up a Docker Prometheus stack containing Prometheus, Grafana with blackbox-exporter, and speedtest-exporter to collect and graph home Internet reliability and throughput.

Dec 26, 2022

Beagle is a CLI written in Go to search for an specific username across the Internet.

Beagle __ \,--------/_/'--o Use beagle with /_ ___ /~" responsibility. /_/_/ /_/_/ ^^^^^^^^^^^^^^^^^^ Beagle is a CLI w

Nov 16, 2022

Upterm is an open-source solution for sharing terminal sessions instantly over the public internet via secure tunnels.

Upterm is an open-source solution for sharing terminal sessions instantly over the public internet via secure tunnels.

Upterm is an open-source solution for sharing terminal sessions instantly over the public internet via secure tunnels.

Jan 8, 2023

Gobot - Golang framework for robotics, drones, and the Internet of Things (IoT)

Gobot - Golang framework for robotics, drones, and the Internet of Things (IoT)

Gobot (https://gobot.io/) is a framework using the Go programming language (https://golang.org/) for robotics, physical computing, and the Internet of Things.

Jan 8, 2023

SplitVPN - Split Internet and VPN routing

SplitVPN - Split Internet and VPN routing

Jul 15, 2022

Managing your Kubernetes clusters (including public, private, edge, etc) as easily as visiting the Internet

Clusternet Managing Your Clusters (including public, private, hybrid, edge, etc) as easily as Visiting the Internet. Clusternet (Cluster Internet) is

Dec 30, 2022

It is a proxy to improve article readability, a directory for your favorite articles, and a way to make the internet lighter and more accessible.

timoneiro It is a work in progress. Some features are unimplemented yet. The helmsman's goal is to be a way to browse articles without all the distrac

Jun 13, 2022
Comments
  • No 'Access-Control-Allow-Origin' header is present on the requested resource.

    No 'Access-Control-Allow-Origin' header is present on the requested resource.

    In the process of my development, I called the local port api through the axios library, and a CORS problem occurred. I referred to rum-app but still don't know how to solve it. The following is the problem description.

    Here is my Typescript code.

    axios.get('https://localhost:64147/api/v1/groups').then((res) => {
      console.log(res.status)
    })
    

    But it happened No access problem, it should be a configuration problem of my node.

    屏幕截图 2022-06-26 175820

    Emmm, should I add config with my axios code?

    But when I open the api-groups on my brower, the problem disappeared。

    屏幕截图 2022-06-26 180251

    I view the source code of quorum, No CORS config. And, the bug plagued me for two days and interrupted my next work...

  • feature: transaction publish queue

    feature: transaction publish queue

    This PR contains two parts

    feature

    • Added pubqueue to keep track of the status of transactions. Program will check these transactions every 10 seconds. Successful transactions are removed, and the failed ones are retried(at most 10 times).
    • Provide API to get the transactions in the current pubqueue

    bugfix

    fixed:

    • wasm logging level not working
    • change the default IO permission of indexeddb from RW to RO
    • upstream update caused API changes

    Also I commented out the code in internal/pkg/chain/chain_test.go because it didn't seem to work and would cause the compiler to complain about "circular references".

  • panic: runtime error: invalid memory address or nil pointer dereference

    panic: runtime error: invalid memory address or nil pointer dereference

    2021-11-10T09:59:55.717+0800 DEBUG user chain/molassesuser.go:61 <3bb7a3be-d145-44af-94cf-e64b992ff8f0> AddBlock called 2021-11-10T09:59:55.716+0800 DEBUG pubsub [email protected]/gossipsub.go:1144 dropping message to peer 16Uiu2HAmBigME5YdVJxfvp8GxU3DacFjvZT9LUDu19erGsyYw8Sq: queue full 2021-11-10T09:59:55.719+0800 DEBUG pubsub [email protected]/gossipsub.go:1144 dropping message to peer 16Uiu2HAm7wwBcznVF2jpyKkJ4ssGjGqStMjtuWXGueXgVuMTnLYG: queue full 2021-11-10T09:59:55.719+0800 DEBUG pubsub [email protected]/gossipsub.go:1144 dropping message to peer 16Uiu2HAkywzUsPZ1yHZxV18ZPL5NosXyCWvErWuaWUmpzp9TCvtG: queue full 2021-11-10T09:59:55.719+0800 DEBUG pubsub [email protected]/gossipsub.go:1144 dropping message to peer 16Uiu2HAmBigME5YdVJxfvp8GxU3DacFjvZT9LUDu19erGsyYw8Sq: queue full 2021-11-10T09:59:55.719+0800 DEBUG pubsub [email protected]/gossipsub.go:1144 dropping message to peer 16Uiu2HAmQBz6JHhma4oXRAwR7dQLLH6S2HrzH9Kci4Mbk1DA2SRL: queue full 2021-11-10T09:59:55.719+0800 DEBUG pubsub [email protected]/gossipsub.go:1144 dropping message to peer 16Uiu2HAmVFGwfgrXLNXyTY9SjFAFQ6jhyzUZBnkfar2D7kp6f27d: queue full 2021-11-10T09:59:55.719+0800 DEBUG pubsub [email protected]/gossipsub.go:1144 dropping message to peer 16Uiu2HAmVX7uWuLXwgdNmPARsSVfuZcQyv3ZVPxuqeXceA5NaXu8: queue full 2021-11-10T09:59:55.719+0800 DEBUG pubsub [email protected]/gossipsub.go:1144 dropping message to peer 16Uiu2HAm8RKsPhxVDsu8MGL8ZxrhyyfZesfX5C9ohx3aDgMYdGJx: queuefull 2021-11-10T09:59:55.722+0800 DEBUG user chain/molassesuser.go:201 <3bb7a3be-d145-44af-94cf-e64b992ff8f0> applyTrxs called2021-11-10T09:59:55.722+0800 DEBUG user chain/molassesuser.go:245 <3bb7a3be-d145-44af-94cf-e64b992ff8f0> try apply trx <7ad58af6-c260-4318-b966-6f05c6ad3405> 2021-11-10T09:59:55.722+0800 DEBUG user chain/molassesuser.go:249 <3bb7a3be-d145-44af-94cf-e64b992ff8f0> apply POST trx 2021-11-10T09:59:55.723+0800 INFO dbmgr storage/dbmgr.go:397 Add POST with key default_grp_cnt_3bb7a3be-d145-44af-94cf-e64b992ff8f0_1634717703348800900_7ad58af6-c260-4318-b966-6f05c6ad3405 2021-11-10T09:59:55.723+0800 DEBUG user chain/molassesuser.go:135 <3bb7a3be-d145-44af-94cf-e64b992ff8f0> move block <72b83ae0-39cd-4196-bf2d-c2fbc67c7283> from cache to chain 2021-11-10T09:59:55.725+0800 DEBUG user chain/molassesuser.go:156 <3bb7a3be-d145-44af-94cf-e64b992ff8f0> height before recal <65>2021-11-10T09:59:55.725+0800 DEBUG user chain/molassesuser.go:165 <3bb7a3be-d145-44af-94cf-e64b992ff8f0> new height <66>, new highest blockId 72b83ae0-39cd-4196-bf2d-c2fbc67c7283 2021-11-10T09:59:55.725+0800 DEBUG chain chain/chain.go:144 <3bb7a3be-d145-44af-94cf-e64b992ff8f0> UpdChainInfo called 2021-11-10T09:59:55.725+0800 INFO chain chain/chain.go:148 <3bb7a3be-d145-44af-94cf-e64b992ff8f0> Chain Info updated 66, 72b83ae0-39cd-4196-bf2d-c2fbc67c7283 2021-11-10T09:59:55.725+0800 DEBUG pubsub [email protected]/gossipsub.go:660 IHAVE: Asking for 698 out of 698 messages from 16Uiu2HAm6S4fFgrL1EvwtrcMznDssQTBpzWMHzhhG8dEunVzVosL panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x102079f]

    goroutine 629 [running]: github.com/rumsystem/quorum/internal/pkg/chain.(*Syncer).AddBlockSynced(0xc015734500, 0xc00ace75f0, 0xc0058bc1a0, 0x34, 0xc0155c9b58) C:/Users/samso/go/src/quorum/internal/pkg/chain/syncer.go:167 +0x6ff github.com/rumsystem/quorum/internal/pkg/chain.(*Chain).handleReqBlockResp(0xc0157365a0, 0xc0049b26c0, 0x34, 0x6af500) C:/Users/samso/go/src/quorum/internal/pkg/chain/chain.go:294 +0x4ec github.com/rumsystem/quorum/internal/pkg/chain.(*Chain).HandleTrx(0xc0157365a0, 0xc0049b26c0, 0xa000, 0x16bd500) C:/Users/samso/go/src/quorum/internal/pkg/chain/chain.go:183 +0x449 github.com/rumsystem/quorum/internal/pkg/pubsubconn.(*P2pPubSubConn).handleGroupChannel(0xc013ef5e60, 0x13, 0xc01185f310) C:/Users/samso/go/src/quorum/internal/pkg/pubsubconn/p2p_pubsubconn.go:87 +0x1ce created by github.com/rumsystem/quorum/internal/pkg/pubsubconn.(*P2pPubSubConn).JoinChannel C:/Users/samso/go/src/quorum/internal/pkg/pubsubconn/p2p_pubsubconn.go:51 +0x3ea

  • storage interface & cli update

    storage interface & cli update

    • Abstract storage with QuorumStorage interface
    • implement QuorumStorage for baderdb (QSBadger)
    • cli data types change (timestamp field from int64 to string)
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

frp README | 中文文档 What is frp? frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the Internet. As of now, it s

Jan 5, 2023
SplitVPN - Split Internet and VPN routing

SplitVPN - Split Internet and VPN routing

Jul 15, 2022
It is a proxy to improve article readability, a directory for your favorite articles, and a way to make the internet lighter and more accessible.

timoneiro It is a work in progress. Some features are unimplemented yet. The helmsman's goal is to be a way to browse articles without all the distrac

Jun 13, 2022
Internet connectivity for your VPC-attached Lambda functions without a NAT Gateway
Internet connectivity for your VPC-attached Lambda functions without a NAT Gateway

lambdaeip Internet connectivity for your VPC-attached Lambda functions without a NAT Gateway Background I occasionally have serverless applications th

Nov 9, 2022
4chain is a simple、fast reverse proxy to help you expose a local server behind a NAT or firewall to the Internet.

4Chain What is 4chain? 4chain is a simple、fast reverse proxy to help you expose a local server behind a NAT or firewall to the Internet. Using the ssh

Nov 1, 2022
Control your legacy Reciva based internet radios (Crane, Grace Digital, Tangent, etc.) via REST api or web browser.

reciva-web-remote Control your legacy Reciva based internet radios (Crane, Grace Digital, Tangent, etc.) via REST api or web browser. Usage This progr

May 3, 2022
Running Golang on the Internet Computer?...
Running Golang on the Internet Computer?...

Golang on the Internet Computer Running Golang on the Internat Computer?! Yes, it is possible! This repository contains a simple example that shows ho

Jun 13, 2022
USENET-inspired decentralized internet discussion system
USENET-inspired decentralized internet discussion system

===============================================================================

Jan 6, 2023
Sixmap - Tool to visualize the SIX (Seattle Internet Exchange) route server coverage

Mapping the SIX route server This program generates an IPv4 map. In particular,

Nov 9, 2022
Battlesnake-logging-proxy - A little proxy between the internet and your battlesnake

battlesnake-logging-proxy a little proxy between the internet and your battlesna

Feb 11, 2022