The future of Steem. What's coming and what I want to make happen.

in #steemit8 years ago (edited)

In case you haven't already heard, Steem is going to be introducing some pretty awesome new features. There is going to be groups, names rented by an account, and the name account will allow open membership as well as invite only and user blocking (to stop spamming and harassment), and each group will have a tradeable token that has its own marketplace between tokens and Steem.

There is also coming the ability to operate escrow transfers within Steem.

So, when you look at it, pretty soon this is going to be a marketplace. You just have to add an order/inventory management system and advertisments. These are features that will come later I think, or at least, I will be working on figuring out how to do it.

The things that I want to create are an email and messaging system. I figure why not just use Bitmessage for the message integration system, the user's keys can be the bitmessage encryption key and ID. The chat system I envision as being a modified version of Bitmessage, where the PoW is a little less taxing, so there is a shorter propagation delay, and a shorter line length (maybe something like 512 characters or so).

This would enable a fully serverless adjunct communications platform that an interface just needs to plug in with an RPC API, whether you are running them locally, or connecting to a remote service, and with this, Steem has IM and email built in as well. These will be encrypted by default, and it will be impossible to know where your counterparty is in the world, thanks to the blockchain-like distribution replication system it uses. You just have to be on the network and passing these blocks around and some of them are for you, and the rest are for who knows who.

After that feature is completed, I think the next thing would be to create a protocol for advertising. This would need to integrate into Maidsafe or so, for storing image files, in particular, for ads. The ads would include an advertised inventory level, a price in Steem and in some Fiat currency (whichever way you want to price it), and a user can search them, make an order, pay by an intra-steem transfer, into an escrow, which is then released when the buyer receives the order.

This would almost completely round out the features list of everything I have wanted to see in a decentralised network system, except for a strong agoric location obfuscation network underpinning it. This can surely be added later. So I have some kind of a roadmap for development laid out. This is bigger than just Steem, but the design of Steem starts you off with a rudimentary blog/voting system, these further features seem to just naturally extend from where it is now, and once they all gel together, it will be revolutionary for online commerce.

A single, borderless, failure resistant, censorship resistant, and the possibility for anonymous interaction is really not that complicated, especially if you simply tunnel your outgoing traffic through Tor or similar, onto the blockchain and chat/bitmessage network. Yes, I envision there could be all kinds of things being sold. There could be private members only groups that advertise only to those named by the administrators and secured by encrypting the advertisments to the user. Essentially, what I am saying is that it is only small steps to eliminating centralised, failure prone deep web markets, it is just a matter of arranging the encryption correctly and with the distributed nature of the blockchain, if you are also running a full node yourself, you already are grabbing all the traffic, and if you send your outgoing TX data via obfuscation tunnel...

Right now, it might seem like the system is wide open. But just like happened with HTTP, it can be tunnelled. Data on the blockchain right now is open, to be public, but it can be encrypted and prevent reading unless you have an unlock key to it. The email and IM system will do this by default by way of group membership moderation needs, as well as privacy in the messages. The advertisements I mentioned, these could be propagated as specially formatted bitmessage messages that your client sets long expiry on, and inside the advertisement, special links that load images and such from maidsafe file stores. Instant messages have a short lifespan, emails longer, last longer than emails, and can be updated to add encryptions to match changes in the membership database, so only members can see the advertisments (and thus also, enabling blacklisting customers).

One thing I can see coming up as an issue - there needs to be a way to make new accounts by buying them. Some kind of fee that gets distributed into some or other fund pool within the blockchain. Or an escrow that unlocks after a time period, say, a special type of Steem Power that cannot be powered down before some period. So it is beneficial to do it, you lock in SP, which helps the total market cap of the network, and it allows you to create pseudonymous or corporative identities, pure business accounts.

This is what I see coming from all of this. I believe Steem is just the beginning of a universal new form of the internet with a complex and powerful financial system. And eventually, also, security, legal and insurance systems will be integrated.

One step at a time, towards Liberty and Prosperity

Edit

This line of thinking led to the following:

https://steemit.com/steemportal/@l0k1/steem-light-nodes

Tor-like obfuscation is possible with blockchains that have a TX relay protocol added, so you can onion-route through nodes on the network. Proxy nodes of witnesses can pay witness nodes for traffic used. Add a slow and fast email and IM system, it can run as a component of the main node, and talks Bitmessage protocol or this proposed lower latency, short message sending system.

Sort:  

Wow... Posts like this make me excited!

Ps... I'm at a club right now with some girl-friends and they think I'm texting my mom... But actually I'm steeming

The problem, however is that the internet's infrastructure is not completely decentralised. With internet providers stake in the network they have the power to completely shut people off. In my opinion if a decentralised society will succeed, the network infrastructure has to be independent of any corporation or governing body.

Sure, in the case of an internet blackout, there can be connectivity issues. But they can't shut down analog PTSN's and yes, this is why I talk about a new routing protocol as well, something like Tor but more flexible and able to charge users for access to a hotspot, for example. A system that works over TCP/IP, but only has to make a few links to a couple of nodes and then the routing is happening in another network system. One in which you have cryptographic public wallet keys as addresses, and you can rent a name from the network...

Which is why it is doubly interesting that Steem witness nodes are going to be running essentially the basis of a DNS system. Names will have public keys attached to them, and these could also be used to connect to logged in nodes. Just add an underlying agoric obfuscation network, underpinning it, and you also enable pay-to-use hotspots without any damned captive portal, or ability to filter your traffic, and every node running this finds all the others and whoever controls the secret key of these router nodes, can send out traffic through them, configure the way they trade traffic routing with other nodes.

No DNS system required. All connections are encrypted, and can be multi-hop obfuscated.

It only needs TCP/IP connectivity.

I agree, this is a necessity. We have to obsolete IANA, and all that US federal government centralisation. With a system like this, including the routing system I just mentioned, you don't need no stinking permission, and the network is completely decentralised, and transparently can be surveillance resistant as well. Even web servers will be obsoleted. You will be able to download pages from a Maidsafe style network, after querying the Steem DNS system for the location of the file that opens it, then it downloads it (if it didn't happen to already be cached) and runs your javascripts etc that query remote databases to load other content.

You get the idea. We are only a few steps from this becoming a reality, and it's going to shake up the internet in a way that 'cloud' pretends to be. You only need an internet connection and everyone can participate, and be paid for participating, in the operation of this network system. It is encrypted by default. In theory you could even back up your home folder on your computer to this, but not keep all of it locally online if the device has space constraints. So no matter where you are, or what hardware you are running, you can open up a client that links you into this network.

One more thing that I think about this, is the possibility of using a Maidsafe style storage network to enable software distribution (or any kind of data you want publicly available). Instead of webpages, you download docker-style applications, which query a distributed database system as well as filesystem. Your 'browser' could run python apps, ruby apps, native linux apps inside a windows machine, or vice versa. There could be different versions for different types of interfaces, touch, small, big. Instead of just this crummy javascript DOM HTML5 interface, you could run anything. It would help with the problem of disparity between hardware running these applications. Native apps would work far faster than these interpretive, reflective environments. There is compiled, introspective systems now anyway.

Well, those are further thoughts anyway. You bring up the very good point about internet connectivity and attachment to the centralised regulation based in the USA. This is moving towards an independent name system for seeing web content. Like the early days of HTML, only links and pictures. But with a URL on the blockchain. You don't need no stinkin' IANA Bind network to find that. Just an IP address of a witness node RPC endpoint.

By adding the ability to rent these names, and issue currencies under them, it is just a little step away from an internet that does not require Bind DNS systems at all. These other things are a little further into the future but we already now have a kind of other web content namespace here at steemit.com. It can be found at other sites, who also do this by talking to a Witness Node, not querying the network.

Immensely informative. Thank you for this.

YES: "user blocking (to stop spamming and harassment)"

I have had an arrogant prick trolling and harassing me on my posts, rather than just unfollow me and stop reading them, they choose to insult me, call me names, it's very childish low-quality behavior and the HIDE feature isn't enough. I want to BLOCK them from all of my content so they leave me alone forever.

and

YES: "email and messaging system"

I had opened a ticket for PMs, because chat is limiting requiring people to go there. A PM feature like FB, even adding Friends, would be VERY useful to network and speak to people.

The other features are beyond my needs or wants or understanding of what they are really adding at this time... lol

Thanks for the info!

Take care. Peace.

Being driven by the underlying financial technology infrastructure, Steem's developers focus towards this. But these other needs are valid and serve to help keep the crabs in the bucket, and picking up this habit that you get after a while, of seeing how you can use this in some new way profitably.

I am pretty sure that my idea of making PMs work with bitmessage will be what is chosen, it leverages an existing, quite large network, it is distributed, and by altering its operational parameters, the same mechanism can create a distributed chat system, that works on shorter timescales and smaller blocks of data.

Bitmessage is like a blockchain, except things intentionally disappear from it. All nodes keep any unexpired block in their cache, and send copies to everyone who hasn't already got a copy, just like a blockchain. It limits spam by requiring some cost in time and processing power to send a message. By reducing all these parameters I see no reason why such a system could not be interactive enough to be a chat platform. By adapting what is closest to hand to the purpose, you can benefit from existing infrastructure, as well as mutually benefiting that infrastructure by dramatically increasing the pool of nodes.

The bigger bitmessage gets, the harder it is to monitor its traffic patterns. Its data usage requirements are quite low in both storage and transmission. Maybe not everyone will run a witness node, but these nodes, they could run quite fine on a mobile device. By creating this faster instant messaging variant of Bitmessage, this can also be distributed, and support other network platforms as well, like XMPP is a common protocol currently for chat systems, other applications can link. There can be distributed name systems as well, creating memorable addresses, like email addresses. But linking them into Steem, you can make it easier for people to go to Steem... any app that works with Steem can message other Steem users, and building a bridge outside that bucket is also transparent. It could automatically recognise Steem usernames, but if you put a bitmessage address in, it can send it that way as well.

I think it's important that these things emerge, in order to support the gradual seamless linkage between all existing distributed network technologies, so it doesn't matter anymore, which thing you are part of, they can all integrate, eventually, and the servers that run will become more integrated. A modified small witness node could be devised, that caches past queries and acts as a proxy to get new queries, perhaps randomly selecting witnesses to draw from and multiple to verify consensus on the data.

The reason why I am so excited is because I can see how from this little humble base of Steem, you can glue everything else together.

looking forward to the changes! hope i can keep up!! lol

Big changes are coming, for sure. All knowledge in computer science will eventually come on the surface and serve humanity in hole new way. We should all be excited.

So email and IM will only differ in lifetime of the messages, right? BTW, pretty clever to expire messages to save blockchain size. What about archiving though, is it possible to archive bitmessages?

Yes, there is nothing stopping a node from holding data after it expires. It just isn't a feature exposed in the interface, or at least, for this you need to add a toggle switch that disables the 'garbage collector' that deletes expired blocks. With bitmessage, every block is encrypted to the secret key behind the 'wallet address' style BM-*** address, so you can't use this. Also, by default the bitmessage client does archive every message your key can decrypt.

There is a system that is used in the Ethereum protocol I think, called 'Merkle trees', which allow a node to identify the depth to which one needs to store blocks to retain certainty of the chain of custody of coins. It works by turning the linear chain into a tree graph to identify the relationships between blocks and as the tree gets deeper you can identify points at which you can cut it off - more or less, making it possible to only store the data of the latest movement of any given token, and eliminating all prior data.

There is a need, of course, for the whole blockchain to be stored, but varying degrees of trimming this are necessary in order to enable features, for clients that only perform more limited functions. A small caching proxy node can capture all new transactions on the network in a size limited ring buffer that trims at the end with some margin of size to allow jitter in the overall bandwidth required to capture the new data. The caching node copies blocks into a secondary cache when it is queried, so the user's client can query it without sending out a request for blocks to other full nodes on the network, if they are new.

This is also why I have conceived the idea of adding an onion routing style protocol for full nodes. This way, transaction posts and block query requests origin can be hidden from a large, capable attacker seeking to identify IP addresses and thus physical locations of particular account operators.

If you had a caching node that pulls all new blocks off, the inbound data side of the circuit is already anonymised, same as like with Bitmessage. The routing protocol I mentioned, acts like using a Tor circuit to propagate requests and can open up a connection session between two nodes without advertising the endpoints to an external observer.

The other things that could be options a user can set for such a caching node (or indeed a full node with this routing feature added) is whether or not they want to relay some amount of those onion routed connection data, for transaction posts and/or RPC block requests, and whether they want the caching node to pass new blocks it receives on to other nodes.

Further, by using a payment system built into the blockchain, a full or caching node with a user behind it can also pay for bandwidth for relaying to a cluster of randomly selected other nodes. The purchase provides a token that proves purchase but does not give the identity of the buyer. This is added as a payment header to relay traffic, constructed from end to start each time layering over the encryption only the node can undo. The first hop unwraps it, finds a payment header/voucher, and a destination, passes the packet, and the next hop, same thing again, until it reaches the final destination. The connection remains open for a period of time, and through this back channel, the endpoint can broadcast back replies, such as the block query case. If it is just a transaction posting, the endpoint returns an acknowledgement and the circuit expires.

It sounds like great news and I look forward to the huge learning curve... jut when you think you had HTML and social platforms down, we are in for change.

Lots of room to grow here!

I featured two ideas of yours in the latest edition of the Steemit Wish List.

Coin Marketplace

STEEM 0.19
TRX 0.13
JST 0.028
BTC 64646.41
ETH 3230.29
USDT 1.00
SBD 2.63