Contact InformationIf you have any questions please email us at [email protected]. We encourage you to send us an encrypted email using PGP.
Table of Contents
- What is Loom?
- How do I sign up?
- Where do I get an invitation?
- How do I pay assets to one of my contacts?
- How do I claim assets that one of my contacts paid to me?
- What is an Asset?
- What is a Loom Asset?
- How do you transfer assets in Loom?
- How do I establish contact with someone else in Loom?
- Couldn't someone guess the location of some assets and steal them away?
- How exactly do I sign up?
- What should I do after signing up?
- Why do you call it a "Wallet"?
- Why do I log in with only a passphrase? Don't I have to enter a user name?
- How do I invite someone else into Loom?
- How do I add an asset type to my wallet?
- What is an asset description and where do I get them?
- How do I use Loom to accept payments from customers on my web site?
- Does Loom have an API for software developers?
- Does Loom have a transactional API?
- Can I download or view the Loom source code?
- I've downloaded the code, now how do I install and run it?
For example, a reputable individual can store gold in a vault and create a brand new digital asset redeemable for that physical gold. People who know and trust that digital asset can add it to their Loom wallets and pay it around however they like.
Gold is just one example. Imagine digital assets directly redeemable for cash, silver, coffee, oil, gasoline, copper, electricity, lumber, hours of professional service, rewards & the possibilities are endless!
First, you should know that using the Loom system is not free. To use Loom, you must have an asset called usage tokens. Loom charges usage tokens when you store information, and refunds usage tokens when you delete information.
So before you can sign up and create a Loom wallet, you need to get an invitation code, which is a location that contains enough usage tokens for you to get started. Then you can follow the simple steps to sign up.
If you know someone who already uses Loom, you can ask her for an invitation. Or just contact support and we can help you.
Some people object to the invitation requirement, for example: "The reason I won't be using Loom is because of your elitist invitation requirement, where I have to either know someone who is using your obscure system, or pay someone for an invitation."
It's not elitist, it's a simple matter of economics. Loom does not charge transaction fees, and it does not sell advertising. The operator of a Loom system has only one primary source of revenue: selling usage tokens. So if you're not willing to buy usage tokens, and you don't know someone who will give you some usage tokens for free, then no, you cannot use the system.
Having said that, here is a free invitation (issued 2013-12-06), first come first serve: (expired) . Join today!
Here's how you pay someone:
- Log in.
- Enter a quantity.
- Choose an asset type from the drop-down list.
- Choose a contact from the drop-down list.
- Press Pay.
Although those specific steps are very easy, if you're new to Loom you may want to read more about asset transfers here.
Also, before you can pay someone for the first time, you first need to establish contact with the other party.
When someone pays you, you have to claim the assets before they become exclusively yours. Here's how:
- Log in.
- You will see the assets sitting "On the table" under the name of the contact who paid you.
- Click the "Claim asset" link to the right of those assets.
- The assets will move into your personal stash, "In my wallet".
An asset is an item of property, often considered valuable.
Typically assets are physical goods which can be produced, measured, and traded in various quantities. Examples include bushels of wheat, pounds of coffee, pounds of copper, grams of gold, or kilowatt-hours of electricity. An asset can also be totally unique, such as a specific house, piece of land, or work of art.
But not all assets are physical goods. The rights to goods are also valuable, and so they too are assets. Some examples are stock certificates, property deeds, promissory notes, or even the key or combination to a safe.
The possibilities continue. Assets include rights to services, for example a prepaid service contract. Assets also include rights to other assets, such as the right to purchase a specific security at a fixed price in the future.
Some assets might even be worthless: for example, a Loom asset created for testing purposes only. Also, investors sometimes carry securities on their books marked with a value of zero, but we still call these "assets" as well. They might even become valuable in the future.
A Loom asset is a digital form of asset which gives its bearer certain rights. Each Loom asset type has a unique and distinct identifier, also known as an ID. Some hypothetical examples might be:
|a11590550d42888981be659b0451dba2||Redeemable on demand for bushels of wheat stored in silos managed by a reputable storage company.|
|5690a4d3a527ff18d3c168884e8a2d63||Redeemable on demand for kilowatt-hours of electricity produced by a specific power company.|
|2fcb2b81bb96bb51cec88edcb4b9a480||Shares of ownership in the aforementioned power company.|
By the way, you don't have to worry about memorizing or reading these arcane looking IDs. They are meant to be copied and pasted once into your own personal wallet, and after that you rarely see them again.
The Loom system itself knows absolutely nothing about the meaning or value of assets issued within it. All meaning and value is held solely in the minds of users. Loom is merely a utility which provides a standardized service in a very reliable way, like phone service. Loom is a provider of "economic dialtone."
Any Loom user can create a new asset type and ascribe any desired meaning to it. That user can then issue new units of the asset type into existence. But that doesn't give the issuer a free lunch. Other Loom users will value that asset only if they can trade it reliably for something valuable in the real world, or for another valuable Loom asset. This kind of value cannot be created out of thin air. It is built on reputation, integrity, reliability, productivity, and service.
Many users will deal only in asset types created by other trusted issuers, and will not bother creating new asset types of their own.f6aae7c01c41ee8684192a15ec7919ba, and it behaves somewhat like a GPS coordinate on Earth. The assets just sit there until someone moves them somewhere else. If you know the location of some assets, then you can move them to another location.
So what does it mean to "own" assets in Loom? Simple: if you are the only individual in the universe who knows the location of some assets, then you own them. Owning assets means having the exclusive power to control them. Nothing more, nothing less.
So how do you "pay" or "transfer" assets to someone else in Loom? It's two steps.
- First, you move the assets from the secret location which only you know, to a shared location which you and the recipient share.
- Then the recipient moves the assets from the shared location to her own secret location. Now the recipient owns the assets, and you don't.
So the process is very simple in concept: I push some assets toward you, and you pull them toward yourself. The actual steps are simple too.
Of course, before you can transfer assets back and forth with someone, you must first establish contact with that other party, so that the two of you will have a shared location where you can pay each other.
This is similar to how you spend cash in a retail store. It's two steps. First you move the cash from your wallet to the countertop. Then the cashier moves the cash from the countertop into the cash register.
(Image courtesy rayservers.com)
Before you can send or receive assets with another individual, you must establish a shared location (contact point) where the two of you will pay each other back and forth. One of you initiates the contact; the other accepts it.
Initiating a contact
Here's how you create a brand new contact point and send it to someone else:
- Log in.
- Click Contacts.
- Click "Create a new contact point."
- Enter a nickname for the new contact point. Here you might use the name or email address the party to whom you'll be sending the contact point. You can easily change this later if you like.
- If the other party already uses Loom, you should probably uncheck the box that automatically includes 100 usage tokens. That's only for inviting brand new people who haven't even signed up yet.
- Click Save.
- Next, copy and paste the new contact ID into an email or chat and send it to the other party. Try to send it as securely as possible, using encryption if you know how. You could even deliver it in person or read it over the phone if you prefer.
Accepting a contact
Here's how you accept a contact point which someone else initiated and sent to you:
- Log in.
- Click Contacts.
- Click "Accept a contact point that someone sent to you."
- Copy and paste the ID into the form.
- Enter a nickname for the contact point. Here you you might use the name or email address of the party who sent you the contact point. You can easily change this later if you like.
- Click Save.
That's it, you're done. The two of you can now pay assets back and forth through your shared contact point.
Oh you might say it's theoretically possible but let's keep it real. The number of possible locations is so enormous that searching for a needle in a haystack looks easy by comparison. To get a sense of the scale, consider dividing the entire planet Earth into small pieces of a cubic millimeter each. That's a lot of pieces right? Now do that with over 300 million planets the size of Earth. Out of those 300 million planets, choose a single cubic millimeter piece at random and hide some assets there.
What is the chance that someone will guess the location of those assets, stumbling upon them at random? As close to zero as you can possibly imagine. Guessing a random location is like winning a typical lottery a trillion trillion times in a row. Not something you should worry about.invitation only. You must first find someone who already uses Loom to "sponsor" you by sending you an invitation. Only then can you sign up. Once you've received an invitation, here are the steps to sign up:
- Visit loom.cc
- Click Sign Up.
- Press the Random button to generate a strong passphrase.
- Write the passphrase down.
- Type the passphrase into the form, twice just to be sure you got it right.
- Paste in the invitation code which your sponsor sent you.
- Press Create Wallet.
You will also notice one other contact in your list called "My Sponsor". That is the name assigned to the invitation location which your sponsor sent you. You and your sponsor share that common location, which means you can move assets back and forth to each other through there. To help you remember with whom you share that location, you might want to rename it. So click Contacts, then click the entry called "My Sponsor", and click Rename. Then enter a new name for it and press Save. (For example if your sponsor's name is Alice you might call it "Alice" or "[email protected]".)
A Loom wallet stores the set of asset types which you recognize and value, and a set of "contact" points where you can move assets back and forth to other users. It also optionally stores a history of your transactions which only you can see. You can disable history altogether if you like, or delete old history entries at will. You can add and edit memos on history entries, a feature which comes in handy as a simple note-taking device. Think of history as an informal "rear view mirror" of recent actions. It is not a permanent record or formal audit trail. It is merely a glorified notes feature.
So when you type in a passphrase, you're just traveling to that location to visit that particular wallet. You can create multiple wallets if you like and use them for different purposes. For security purposes, some people keep one "petty cash" wallet for every day use with fairly low balances, and another "vault" wallet for less frequent use with high balances.
Some have expressed concern that logging in with only a passphrase might be less secure than logging in with both a user name and a passphrase. That is an illusion. Let's say your Loom passphrase is "sally zing huff assure chess". Right now you type that whole thing into a single text box on the screen. But what would happen if you typed it into two text boxes instead of one, for example, typing "sally" in the first box, and "zing huff assure chess" in the second box? Would that increase security? Clearly not. Typing the same random text into two boxes is no more secure than typing it into one box.
Also keep in mind that guessing a five word random passphrase is about like winning the lottery a million million times in a row. That's about as secure as it gets. But if that's not good enough for you, feel free to use more random words.
- Log in.
- Click Contacts, then Invite.
- Enter a name for the new contact.
- Press Save.
- Copy and paste the new contact ID into a secure email or chat and send it to the invitee.
This is a brand new user, so include 100 usage tokens to enable Sign Up
It is automatically checked for you. That is good. Leave it checked. Sign-ups are not free. The Loom system charges usage tokens any time you store information on the server. Those 100 usage tokens are the price you, the sponsor, must pay to enable the invitee to create a new wallet.asset type, you must first add it to your wallet. Until you do that, your wallet will not recognize the asset. Even if someone tries to pay you some of that asset at a shared location, you will not even see it until you first add the asset type to your wallet. Only then will you see the assets of that type, and then you can click them to claim them as your own.
Some people think this is a pain but it's actually a good thing. First, it prevents strangers from spamming you with all sorts of dodgey new assets that they make up. So if you're interested in an asset type, you must copy and paste its asset description into your wallet from an authoritative source. Second, there's really no alternative. Loom has no idea what asset types you might find useful or valuable. You have to add them yourself.
This is the price you pay for using a wide-open system like Loom. Loom does not vouch for any asset types, and it does not build any asset types into your wallet automatically because it thinks they're special. Accepting new asset types is entirely your responsibility.
So here is how you add an asset type to your wallet:
- Log in.
- Click Assets.
- Click "Accept an existing asset type into your wallet."
- Paste in the asset description.
- Press Save.
Simple right? But now you're probably asking ...
0f8fccf7c65e42d422c37ea222e700d5x2x2x466c6f77657220506574616c73x52c0dc51You can simply double-click that text, then copy and paste it into your wallet. Now you can send and receive "Flower Petals".
But what if your friend sent you that asset description, and you trust your friend very much? Well, maybe that's OK, but you should still go to the flower store's web site and grab it from there. Stick with this practice, because it will prevent you from doing silly things like accepting counterfeit asset types from strangers trying to con you. The nice thing is, once you add the real asset type and even buy some flowers with it, you'll know you have the real thing once and for all.
That said, the author of this FAQ has published a reliable catalog of some known Loom asset types here:
Keep in mind that you won't see every single Loom asset type in the universe listed there. There is no such thing as a list of all asset types. I mean, who knows? Someone named Joe might have created an asset type for settling up lunch debts among his friends and coworkers in Kansas. First, there's no way to know about that, and second, who would be interested in such an asset type anyway? Joe's friends, sure, but they spread the asset type by word of mouth, peer to peer, and nobody else ever knows about it or needs to know about it.
If you like, you can use the contact ID as a key for the customer in your database. The next time the customer pastes in that contact ID, you can look up the customer's name, shipping address, order history, and product preferences.
You can also allow the customer to paste in a contact ID at any time, even long before reaching your Check Out page. That way you can identify the customer even earlier, and do product suggestion or ad placement appropriately.
I also plan to add a very simple feature to make it easy for a customer to come into your site with her contact ID, without copy and paste. The customer can attach your site's URL to a contact ID in her Loom wallet. When she wants to go shopping, she simply clicks that link in her wallet. Your site opens in a new browser tab or window, automatically carrying the contact ID in a query parameter called "contact".
There are two APIs, one for the "Grid" which is the space where assets reside and move around, and another for the "Archive" where arbitrary pieces of text (such as wallet) can be stored. The documentation for these APIs, along with interactive tutorials, can be found here:
Yes, the API has a very simple and general-purpose transactional feature, which allows the client to send an entire series of individual API instructions and then commit the entire sequence in one step. If any values the client read during the transaction were changed "under its feet" by other processes, the commit fails and no changes are made. It's as if nothing happened. The client can then simply retry the API sequence until it succeeds.
This transactional feature was very easy to implement because the Loom system is already built on a very solid foundation of optimistic concurrency control.
To use the transaction features, you simply do a GET on these urls:
|/trans/begin||To start a new transaction|
|/trans/commit||To commit your changes|
|/trans/cancel||To cancel your changes|
The process is a little clunky because people don't do it that often, but here it is.
- Download the .zip source code and run "unzip" on it. (You've probably already done that.)
- CD into the directory.
- mkdir -p data/run
- Run "code/loom -y" to start the server. In the future you should probably add that code directory to your search path so you can just run "loom -y".
- Point your browser to http://localhost:8286/
- Click the "Sign Up" link.
- Choose a passphrase for the master account where you'll issue usage tokens. Enter that passphrase twice.
- At this point, in a brand new system, the issuer location for usage tokens is at the zero location 00000000000000000000000000000000 . There you have an infinite supply of usage tokens. So you will use that location as your initial "invitation" in the sign up form. Copy and paste that into Step 3 there.
- You have now created a new wallet. However, the issuer location for usage tokens is still at your "Sponsor" location zero. Now you have to do a trick to claim the issuer location for yourself, changing it from zero to your secret master folder location. Here's how.
- Click "Assets".
- Click "usage tokens" in your asset list.
- Click "Delete".
- Check the box to confirm, then press the "Delete Now!" button.
- Click "Create a brand new asset type which you issue."
- Paste 00000000000000000000000000000000 in as the asset ID.
- Enter "usage tokens" as the name.
- Leave Scale and Min Precision blank.
- Press Save.
Now you're done. Your wallet has now successfully seized control of issuing usage tokens because it has changed the issuer location from zero to your own secret wallet location.
At this point you may want to delete the "My Sponsor" location, which is location zero. That is useless now, so you might as well delete it.
- Click "Contacts".
- Click "My Sponsor".
- Click "Delete".
- Check the box to confirm, then press the "Delete Now!" button.
If you have any further questions or comments please email [email protected]. Thank you.