Urbit Is Building a 'Virtual Galaxy' for Bitcoin Nodes
coindesk.com
coindesk.com
I doubt very much this project will get much traction due to the enormous conceptual overhead of working within its ecosystem. There's a huge learning curve approaching something like this from the Unix/C ecosystem, and I don't think it's merited.
From the authors:
Its syntax is entirely novel and initially quite frightening.
[...]
If I can summarize Hoon's goal, it's to be the C of functional
programming.
[...]
On the other hand, the apparent complexity of Hoon is very high.
When you open a Hoon file, you are confronted with an enormous
avalanche of barely structured line noise. Again this reminds us
of C, which makes no attempt at the kind of abstract prettiness
we expect from a Pascal or a Haskell. Learning Hoon involves
learning nearly 100 ASCII digraph "runes."
Is this a harsh learning curve? Of course it is. On the other hand,
it is not a mathematical task, but a mechanical one. It is trivial
compared to the task of learning the Chinese alphabet, memorizing
the Qu'ran, etc, all rote mental tasks routinely performed by normal
human 11-year-olds.
From the languages even more confusing documentation: https://github.com/cgyarvin/urbit/blob/master/doc/book/0-int...I have some skepticism, but if Urbit and its peer-to-peer network are actually useful things, the incentive system for building useful apps for it exists. It might be strong enough.
This may mean Hoon once learned is easier to cope with than it looks (which I doubt, because it looks like vaguely Lisp-flavored assembly) or it may just mean that nobody like that has come along yet.
* pretty much everything actually useful is implemented as a jet
* the jets often don't actually match the supposed code they're accelerating (e.g. the Markdown jet has different bugs)
Instead of the stated intent of giving you control of your own environment, the actual goal appears to be the opposite.
The C standard library lacked a formal specification for over a decade after its creation. Lisp lacked one for almost thirty years. At least one of these should be an argument in favor of "build it first, formalize it later".
Urbit, under all their jargon, is a base for a federated social network. Sort of like Diaspora. (Right now, they say they have chat, so it's sort of like IRC.) They recognize that a big problem with social networks is spam. If you can freely create user IDs, it's hard to stop spammers. But if user IDs cost money, then spam blocking costs spammers money (their purchased online identities lose value) and spamming is no longer cost-effective.
So their solution is to create a market in user ID space. It's not clear if this will work out, but it's something. If you buy an ID, you own it, in the Bitcoin sense. That is, you're not at the mercy of some service provider, and can freely move from one service provider to another without their permission. (I think this is right. Not entirely sure.)
It's not clear if this will work in the social space. They have the underlying machinery, but nobody has built the Facebook or WhatsApp or Dropbox killer on top of it yet, so it's useless to end users at this stage. The concepts are interesting; it's good to see people trying original ideas.
If someone builds an easy to use social application on this and gets some services to host it (like Wordpress hosting), this could get actual users. Right now, it's a developer toolkit.
Joey Krug, founder of Augur, had a great post on how he could see Urbit as being a great compliment to the blockchain[0]:
"If the blockchain is useful in those areas where [almost] no trust exists, Urbit has the potential to be useful for essentially everything else.
To give a concrete example, this would be useful for any Ethereum app that doesn't want to store data on a central server (which most cannot do whether for legal, security, or ideological reasons). The idea to me is that the internet wasn't built very well to run decentralized apps [which is definitely the case if you've ever tried building one without having to rely on central servers for caching, storing accounts, comments, etc.]. It's, imo, a nice complement to blockchain tech like Ethereum and Bitcoin. Long term once it's out and running I see dapps like Augur [a decentralized prediction market which I work on - http://augur.net] using it so users can securely store their private keys, report data, market data, trade history, etc. and easily go across/between devices as opposed to just using localstorage [which is a pain to migrate using] or fetching it from ethereum every time [which is very time consuming and has lots of overhead].
If we're going to seriously move in this direction of decentralization, at scale we need something like urbit. No one else is really tackling the same set of problems. Came across this quote on it by Alan Kay: "They have verve, and that's generally a good thing. In this case there are a lot of details that need to be grokked to make any reasonable comment. The use of combinators (a kind of dual of lambda calculus) harks back to an excellent thesis by Denis Seror at the University of Utah in the 70s that produced a safe, highly scalable and parallel implementation. I haven't looked at it more deeply (and probably should)." [https://news.ycombinator.com/item?id=11810177] - very cool!"
And finally, another idea: https://urbit.org/posts/objections/#killer
And what is the advantage of this over wordpress? Or even just raw nginx?
I don't necessarily mean what is the advantage of urbit in its current state -- I get that this is an alpha release. What I'm asking is: when urbit becomes what you envision it to be, what tangible advantage should I as a user expect to see from using Urbit over using Wordpress or nginx?
Right now, you can only have two of those at a time. You own your Wordpress install and it's world visible, but your mom needs you to administer it. (Not every mom is lucky enough to have a kid like you.) Your Facebook is world visible and your mom can set one up, but you don't own it (quite the converse). You own what's on your iPhone and your mom can use one, but you can't publish anything with it - you need a separate service with its own set of tradeoffs.
Urbit's USP is that it's designed to be able to provide all three, along with a cryptographically verifiable identity system that can make spamming and shitposting costly enough to be economically inviable.
All this is ambitious as hell, of course, and it's very early days yet - there's every chance Urbit will go down in history as a curious but ultimately doomed also-ran, if it goes down in history at all. But it's easy to understand why people find its design goals appealing.
OK, I am totally down with that set of goals. But...
> You own your Wordpress install and it's world visible, but your mom needs you to administer it.
That's not clear. Have you ever actually used Wordpress? It's actually pretty friendly to non-technical users. But OK, let's accept as a premise that Wordpress is beyond Mom's ability, and that this is a problem that needs to be solved. There are two possible ways to solve it:
1. Modify Wordpress to make it more mom-friendly
2. Throw out everything that has been done in computing to date and start from scratch, rebuilding everything from the ground up (well, except that we're still going to run on unix and hand-compile Hoon to C when performance matters, but we'll let that slide).
Why is approach #1 so unlikely to succeed that we should even try #2?
To use, sure. To install and administer? Not so much. You can get a Wordpress.com account, but that doesn't solve the ownership problem.
Sandstorm.io goes some way toward fixing the specific problem of Wordpress being impossible for non-technical users to install and administer. (Probably quite a long way, in fact.)
And that's great! For Wordpress. But it doesn't do anything to solve the larger problem of ownership of data, which - and I appreciate I didn't make it clear in the comment to which you're responding, but see [1] - is in this case a cipher for ownership of identity, which right now belongs to social media networks, which is another way of saying it belongs to Facebook.
It's not clear that something like Urbit is necessary to solve this problem. But it's also not clear that something like Urbit is not necessary, and I don't know of anyone else who's even trying to attack the problem directly.
I ask again: have you ever tried? Because installing WP can be as easy as:
sudo apt-get install wordpress
after which all the admin is done through a web interface.
> I don't know of anyone else who's even trying to attack the problem directly.
And that matters, because as I learned the hard way, being able to do it just for yourself isn't enough. A social network is social. If you're not on it and everyone else is, you still lose.
(Although tying your fate to Etherium may be a mistake. The contract technology turned out to be insecure, and very hard to secure. Etherium needs to go back into the shop for a major redesign.)
It is entirely unclear this has been demonstrated. Mostly what we see in the cryptocurrency space in practice (not hypotheticals) is scams upon scams: it turns out that a "trustless" system attracts people who can't be trusted.
1.6% of their address space. For $200k. And they sold it all. That puts an implicit current valuation on the entire Urbit address space of $17M.
People regularly spend millions on sculptures which are indeed just special rocks. The Guennol Lioness comes to mind.
Then, if you made the rock cost a negligible amount of money given the regular payouts on such ventures, I would really start considering it. Don't be a boob.
For a stupid example, say someone makes electricity stop working. But there's lots of things that could make it less valuable in the future than the value implied by the recent sale.
So, until the chinese mining cartels or coredevs decide you don't?
Comparisons to Bitcoin are bound to fall apart upon closer examination. For instance, Urbit has no blockchain, and Bitcoin's ownership structure is based on computer power, not federated cryptography.
Digging a bit deeper, Urbit is actually more free than Bitcoin, because the latter is easily eaten by the biggest fish in the sea. Urbit, on the other hand, could only ever de-decentralize if all 255 galaxies were owned by a single person, which is about as likely as all of the Eastern Hemisphere being owned by a single person.
I don't have a Facebook account, but my understanding is that it supports app integrations, and that connected apps have access to the account information you choose to share with them. Why wouldn't this work for Urbit? And why, in theory, wouldn't Urbit be able to support a distributed Facebook in the same way that GNU social supports a distributed Twitter?
The concerning part would seem to me to be how you cope with a situation where you have some people hosting their stuff on their urbits, and others still on Facebook; I don't see a solution here that does not require technical cooperation from Facebook, which as you rightly note will not likely be forthcoming.
As I know to my cost, people stick to Facebook because Facebook owns their social lives, so people aren't going to risk trying to emancipate themselves from Facebook unless they can do so without maybe losing all their friends. No one at Tlön has articulated anything like a clear solution to this problem, and I think it would be a very good idea if they did, because it will kill them if they don't watch out.
Urbit is provably effective at generating techie amazement, and I can well believe it created enough for well-off people to spend money on address space for the amusement value (at least one has explicitly said that's why he bought some). Urbit is a legitimate mad art project, an untrammelled 200-proof expression of its creator's personality; that is in fact interesting.
This is not, however, the same as usefulness.
How is this supposed to work when some advertisers are willing to spend more on a single ad impression for certain keywords (e.x. "mesothelioma") than the average monthly wage for people in some parts of the world?
(Urbit is explicitly intended to instantiate Yarvin's political views, per the 2013 version of the security chapter: http://archive.is/UK8So )
This is all apparently very novel.
* Everything on the VM is purely functional, and inputs essentially cause transactions which can fail/succeed - the result being that it's supposedly easier to implement certain types of network protocols, specifically the ones that Ames implements
* A somewhat decent revision-controlled filesystem with push/pull/merge, static typing of files, and a built-in build system of sorts
And last but not least...
* Feudalism built into the core p2p protocol as an explicit design decision
It has the cult-like approach of Xanadu - use new terminology, tie it to an economic model, and re-invent everything. Also, there seems to be a cult leader.
Jargon: noun (data), nock (interpreter), mint (compiler), span (type), twig (expression), gate (function), mold (constructor), core (object), mark (protocol). It's Newspeak for programmers.
The overall concept seems to be a federated social system, like Diaspora. Everybody has a online presence which they own. But you can take your ball and go home, moving your online presence somewhere else, and it still gets found by others. Somehow. (That's a hard problem at scale.)
There's a claim that nobody can create vast numbers of identities for spam purposes because there are only 2^32 possible human identities. (That number should have been at least as big as the population of the planet. 2^36, maybe.) Apparently you have to buy address space, which is a profit center for somebody.
There's a download, which gets you their "OS" (which runs on top of another OS), an interpreter for their Hoon language and access to their chat environment.
Not sure what to think of this, but someone put in a lot of work.
Bignums themselves are somewhat expensive data structures to pass around, so runtimes that use them usually don't use them for everything; instead, they have an Integer type that has Bignum (data-structure on the stack, or pointer to data structure on the heap) and Fixnum (regular integer machine-register) implementations, and write a glue layer to treat the two interchangeably.
So, you've got a runtime where your only "type" is an integer, but it breaks down into "cheap integers" and "expensive integers."
Now, in most dynamic-language runtimes (i.e. runtimes where type-tagging and pattern-matching doesn't all happen at compile-time), you want a type that "represents itself" to use for type-tagging, dictionary keys, function references, etc. This is usually a Symbol or Interned String (or Atom!) type, with the runtime keeping a symbol table mapping fixnums ('cheap integers') to strings (which are effectively, in Nock, 'expensive integers'). You need this table, because dynamic language functions manipulate/build/pass around/compare a lot of symbols, and the interpreter would be really slow if you were passing and comparing 'expensive integers' by value.
But Nock can't really keep a symbol-table, because every "atom" ID embedded in a Nock program is a universal ID, a handle any other Nock runtime might be passed and attempt to manipulate. (And you can't even use a global symbol-table that uses hashing—i.e. a DHT—because Nock doesn't differentiate the "Symbol" atoms from any other atoms, so you'd have to treat every atom the same and hash them all—and, even pretending that's cheap, you're eventually going to get collisions that way.) The only symbol table that works in a globally-distributed system is one that maps bitstrings to themselves. And that's as good as no symbol table at all.
So what do you do when you can't make your strings ('expensive integers') into interned strings ('cheap integers')? Just use the cheap integers from the start! In Nock, this means that all the runtime-defined symbols—all the atoms in the language and the stdlib—are bitstrings that are short enough to be encoded directly as fixnums. Since Nock has the requirement of running on 32-bit machines, that means 32-bit bitstrings: four-ASCII-character strings. Thus most of the jargon.
Do note, it's not required to use four-letter names for "symbols" you manipulate in the Nock runtime; but doing otherwise means passing around 'expensive' handles instead of 'cheap' ones.
---
I find Urbit's solution here interesting—but they probably chose it for purity's sake.
I would like to contrast it to the implementation in Erlang's BEAM runtime (which also, coincidentally, has 'atoms', but where these are simply its particular symbol type):
• an atom table is kept by each "node", with no need for the atoms in each node to have identical mappings;
• atom IDs are mapped back to their original bitstrings when serializing any data structure including them, even if just for internal persistence;
• each distributed-RPC connection between nodes is stateful, keeping its own atom table (kept synchronized on both sides by additional messages) as a cache to speed up communication between nodes. This can be seen to be similar to a streaming compression algorithm's Huffman tree cache, but it's interesting to look at it as the connection being its own virtual 'node' that has this particular atom table, which both nodes are then modelling and translating to/from.
Addresses can actually be up to 128-bit. I think the idea is that addresses longer than 32-bit are just assumed to be bots, but that convention would probably be changed if Urbit gets popular enough for the 32-bit limit to matter.
I'm trying to think of a 32-bit address space that was found to be too small... I know there was one, it's on the tip of my tongue...
No, it's much uglier than Newspeak.[0]
But joking aside, about a month ago this well-articulated writeup was posted on their site: https://urbit.org/posts/overview/
There was an HN thread on it: https://news.ycombinator.com/item?id=11817721
The gist is it's some sort of distributed datastore network vaguely similar to IPFS [1], Freenet [2], but instead operates at a different level of abstraction from files. It ships with several other components, like an OS and a programming language, to flesh out that ecosystem.
The real reason is probably to generate some buzz for Bitcoin, because some of the valley nouveau riche like to gamble and have long positions.
> Urbit is a new programming and execution environment designed from scratch. Any resemblance to existing languages or operating systems is coincidental, cosmetic, or inevitable.
It was based on this idea: suppose that a different civilization (Martians specifically) had invented computing long before humans. Then by now they would have perfected it. What would their system look like? Urbit is an attempt to rethink computing without the bias of human research and our current intuition. At the heart of Urbit is Nock, a “functional assembly language”. Zero is intentionally used to denote “true” to defy programmer intuition.
[1]: https://moronlab.blogspot.com/2010/01/urbit-functional-progr... [2]: https://github.com/cgyarvin/urbit/blob/master/doc/book/0-int...
OK, that was just perverse. Except check out the latest iteration of point of sale credit card terminal keypads. "0" is Yes and "X" is no.
https://www.reddit.com/r/urbit/comments/4okcm6/were_the_core...
There are more interesting insights in that thread about Urbit’s unorthodox decisions.
It's not a terrible idea. In most types of computing there's often only one way for something to be true but N ways for it to be false.
The C language and the standard library are distinct things. C originally did not define any values at all for booleans (true / false), but later implementations did and even in the oldest C compilers (0 == 0) would evaluate to '1', which caused the most repeated lines of C preprocessor input ever written:
#define TRUE 1 #define FALSE 0
Guarded by some #ifdefs if your compiler supported that.
Some standard library functions return nonzero on error (which can be < 0 or > 0), zero on 'success' which is not the same as true, and others (annoyingly) return 1 on 'success' or 'true' (such as the isalpha function/macro).
I'm jumping through the hoops of "Debianizing" something now, and I have to say the Debian project uses similar techniques to limit participation to the committed. The Debian packaging guidelines are very arcane and the docs are kind of scattered and the whole "experience" seems (probably unintentionally) built to keep casual "spam" out of the repo. Not necessarily a bad thing.
A core axiom of Moldbug's philosophy is that the mathematicalization of computing is an elitist conspiracy. As an example, he thinks that the lambda calculus is intrinsically mathematical, hence elitist, whereas his own concatenative language is non-mathematical, hence non-elitist, by conforming to human nature. It's bizarre to say the least given that his proposed language has an obvious relationship to combinator calculi like SKI calculus, and you'll have to look long and hard to find anyone who thinks the SKI calculus is more intuitive than the lambda calculus.
[1] /s
[0] Extra-Obfuscated Perl-Lisp
http://reddragdiva.tumblr.com/post/141832812938/argumate-all...
https://popehat.com/2013/12/06/nock-hoon-etc-for-non-vulcans...
http://art.yale.edu/file_columns/0000/0066/borges.pdf
I'll never forget the first time I read the opening few sentences. I don't think i've ever had a literary experience like it before or since:
> I owe the discovery of Uqbar to the conjunction of a mirror and an encyclopedia. The mirror troubled the depths of a corridor in a country house on Gaona Street in Ramos Mejia; the encyclopedia is fallaciously called The Anglo-American Cyclopaedia (New York, 1917) and is a literal but delinquent reprint of the Encyclopedia Britannica of 1902. The event took place some five years ago. Bioy Casares had had dinner with me that evening and we became lengthily engaged in a vast polemic concerning the composition of a novel in the first person, whose narrator would omit or disfigure the facts and indulge in various contradictions which would permit a few readers - very few readers - to perceive an atrocious or banal reality. From the remote depths of the corridor, the mirror spied upon us. We discovered (such a discovery is inevitable in the late hours of the night) that mirrors have something monstrous about them. Then Bioy Casares recalled that one of the heresiarchs of Uqbar had declared that mirrors and copulation are abominable, because they increase the number of men.
[What follows is how I think Urbit works. This may be incorrect.]
Urbit seems to actually sell user IDs. Once you own one, some blockchain like system registers this, and you own them forever (unless and until you lose your private key, as with Bitcoin wallets). So Urbit doesn't have the problem of domain registrars raising renewal prices.
Your user ID leads to an online presence on some hosting service, but the system enforces number portability - you can move to another service without the consent of the leaving service. So having an online presence will be price competitive.
Somehow, the hosting services which host user IDs have a distributed directory system so that they can find any given user ID. Unclear how this works, and if it both scales and is secure against attacks.
If Urbit can actually do all that, it's useful as a distributed directory management system. This is useful. Once you have that, you can do chat (this is apparently supported now) and that can be extended to voice and video calls. All without central control.
So, is this a Skype killer? You have to buy a user ID, and then you have to buy hosting. That's going to cost a few dollars a month. It's nice that it's federated and presumably ad-free, but it competes with everybody else's ad-supported chat program. It's hard to compete with free.
You can introduce any one of those and possibly survive. Doing all four at once? You're doomed. Sorry.
> The level below main memory contains rotating magnetic disks that take millions of clock cycles to access. Because of the great discrepancy in access time, no one has yet built a virtual memory operating system that writes through main memory to disk on every store by the processor. (This remark should not be interpreted as an opportunity to become famous by being the first to build one!)
Do we really need a new everything? What problems do these new things solve that couldn't be addressed through other mature technologies used in new and novel ways?
Maybe we do, but if that's the case they've done a terrible job of articulating why.
Most importantly: How can you possibly secure all these things given the complex nature of interactions between all of them?
Since we have buyers in the order they came in, I think it'd be fun to distribute stars sequentially across sequential galaxies. But we really aren't sure yet.
Can you confirm that all galaxies save ~zod are signed by ~zod? I'm presuming here ~zod isn't self-signed.
Urbit is not democratic, it's feudal.
The namespace is scarce by design.
Right now, if you use Facebook, Facebook owns you. If you don't use Facebook but all your friends do, Facebook still owns you, but you're worthless to it, and it punishes you for failing to generate value by making you as close to socially invisible as it can - which is pretty damn close. (Ask me how I know!) None of this is deliberate, in the sense of an evil conspiracy cooked up by cackling villains. But all of it is true.
The purpose of Urbit is to make it possible for people to own themselves. Doing so is not free of charge. (Should it be? Are you worth nothing?) But it is, or will be once (if) it's possible at all, as cheap as can be made practical - which is very cheap indeed, or free, if you don't mind opting out of guaranteed and durable identity. The tradeoff is that people who don't opt out may not be as quick to trust people who do. But that's a choice you get to make, instead of, as now, a choice that Facebook makes for you. I can't speak for anyone else (especially Tlön), but I've had enough of Facebook making choices for me. Have you?
Also, saying "destroyers" a billion times outloud would probably get annoying. "Planets" is easier.
On a more practical level, since most of the address space is unallocated it seems simpler/cheaper to buy fresh space from Tlon than secondhand space. Like how nobody was buying IP addresses when ARIN was giving them out for free.
If it's the latter I can see how 'second hand space' really is a bad idea as there's no way to enforce the transfer of a private key.
I do not share that to be an axiom, clearly they are trying to solve, among many other, that one problem specifically.
A couple observations -- The stars were underpriced, by how much it's hard to know. If your goal is to seed the owner class with random giveaways, this was a success, I suppose. Second, 1020 stars was a HUGE amount to give away. I thought perhaps you would pre-sell one star's share of planets for $1 /ea. $205 for a star is nothin.
From my armchair, what I would suggest is to focus on developing a secondary market for urbit addresses PRIOR TO any further crowdsale. That way you can get some indication of demand before pricing another Tlon-organized event.
Presumably $209k is not interesting money, even to Tlon. It's a shame you gave away 1% at that price but maybe will work out in the end as a way to bootstrap the network with early enthusiasts.
The article doesn't say where this crowdsale took place. The articles makes it sound like it was offered to the public, if so this is the first I've heard of it.
The stars sold out before it was announced outside the mailing list.
All things considered, that's a pretty awesome problem to have.
"Please don't tweet [the sale] or post publicly until 9am PDT on the 29th. But feel free to share privately with friends."
https://news.ycombinator.com/newsguidelines.html
https://news.ycombinator.com/newswelcome.html
Nasty dismissals are of negative value to this site even if there's a legit point locked within them.
We detached this comment from https://news.ycombinator.com/item?id=12003805 and marked it off-topic.
> Urbit is a clean-slate system software stack defined as a deterministic computer. An encrypted P2P network, %ames, runs on a functional operating system, Arvo, written in a strict, typed functional language, Hoon, which compiles itself to a combinator interpreter, Nock, whose spec gzips to 340 bytes.
Geez.