on master help sign in
Merge master into anchor-links
commit60c58c385ec6a93c1bdabd7004e1521ce5870e08 authorYaseen <yaseen.nvt@gmail.com> dateThu 21 Jan 2021, 15:59 (6 years ago) parent8ca15ac
4 files changed+85−32
glossary/chat.md+17−7 glossary/modulo.md−15 glossary/talk.md−10 tutorials/advanced-azimuth-tools.md+68
glossary/chat.md+17−7
@@ -7,17 +7,27 @@ category = "arvo"
77insert_anchor_links = "none"
88+++
99
10−**Chat** is a suite of applications that handle "instant messaging"-style communication between ships.
10+**Chat** is a suite of [Gall](../gall) applications that handle "instant
11+messaging"-style communication between [ships](../ship).
1112
12−A chat is a named collection of messages created by and hosted in a ship's chat-store, usually represented as `~ship-name/circle-name`. Most of Chat revolves around doing things with these chats.
13+A chat is a named collection of messages created by and hosted in a ship's
14+`chat-store`. Most of Chat revolves around doing things with these chats.
1315
14−Chats are subscribed to by some number of ships which are permitted to post and retrieve messages from the chat.
16+Chats are subscribed to by some number of ships which are permitted to post and
17+retrieve messages from the chat.
1518
16−There are two "kinds" of chats, that use different permission modes:
19+There are two "kinds" of chats:
1720
18− * A `channel` is a chat that is publicly readable and writable, with a blacklist for blocking.
19− * A `village` is an invite-only chat.
21+ * A `channel` is a chat that exists as part of a group that is readable and writable by
22+ members of the group. Messages are sent to the chat's host ship, and the host
23+ ship distributes those messages to members of the chat. Therefore, if you
24+ plan to host a chat, you should ensure that your ship has high uptime.
25+ * A `DM` is a direct message from one ship to another, visible to no other
26+ ship, and not part of a group. Messages may be sent while offline, but the
27+ other party will not receive them until both ships are online simultaneously.
2028
2129### Further Reading
2230
23−- [Messaging guide](@/using/operations/using-your-ship.md#messaging): A guide to using Chat from the command line.
31+- [Landscape](../landscape) includes a web interface for using Chat.
32+- [Messaging guide](@/using/operations/using-your-ship.md#messaging): A guide to
33+ using Chat from the command line.
glossary/modulo.md−15
@@ -1,15 +0,0 @@
1−+++
2−title = "Modulo"
3−
4−template = "doc.html"
5−[extra]
6−category = "arvo"
7−insert_anchor_links = "none"
8−+++
9−
10−**Modulo** is the home screen interface for [Arvo](../arvo), and is the primary method for ordinary users to interact with Arvo and their ship without using the command line. Modulo facilitates user interaction with [Gall](../gall) apps such as [Landscape](../landscape) via a GUI written using React.js.
11−
12−### Further Reading
13−
14−- [Lesson 2.7: Gall](@/docs/tutorials/hoon/hoon-school/gall.md): A Hoon Tutorial lesson that explains how to write simple tile.
15−- [The Gall tutorial](@/docs/tutorials/arvo/gall.md): A technical guide to the Gall van.
glossary/talk.md−10
@@ -1,10 +0,0 @@
1−+++
2−title = "Talk"
3−
4−template = "doc.html"
5−[extra]
6−category = "arvo"
7−insert_anchor_links = "none"
8−+++
9−
10−**Talk** was Urbit's first big user-facing application. Talk utilized the [Hall](../hall) backend to ferry messages between ships, and acted as the frontend for the users to chat. This included reading from and writing to circles, as well as managing them. Talk is no longer used, and has been superseded by [Chat](../chat).
tutorials/advanced-azimuth-tools.mdnew file+68
@@ -0,0 +1,68 @@
1++++
2+title = "Advanced Azimuth Tools"
3+weight = 4
4+template = "doc.html"
5++++
6+
7+This document outlines some advanced techniques for generating, signing, and sending Azimuth-related transactions from within Urbit itself. It's strongly discouraged to do this unless you're very confident as Azimuth transactions are permanent and will cost ETH to complete. However, until you upload a signed transaction to the blockchain no transaction will take place so it's safe to explore these tools. It will also be very helpful to have at least a rudimentary understanding of Hoon in order to read and modify parts of the code.
8+
9+First you will want to [boot a fakezod](https://urbit.org/using/develop/#creating-a-development-ship). You can do this with your live running ship but at this time this will need you to modify the code so it's best to do this on a ship you can make mistakes on.
10+
11+Be sure to have mounted your home desk so you can easily edit files on it.
12+The first edit that will probably need to be made is in [`app/claz.hoon`](https://github.com/urbit/urbit/blob/85435e9a81e105809d5d381b5d34fae1d4daa3b8/pkg/arvo/app/claz.hoon#L14). The listed url will need to be changed to a valid Ethereum endpoint. infura.io provides an Ethereum API that you can use.
13+
14+The second change that may potentially be needed is to modify the [gas limit](https://github.com/urbit/urbit/blob/85435e9a81e105809d5d381b5d34fae1d4daa3b8/pkg/arvo/app/claz.hoon#L179). This number here is the maximum number of gas units that will be used. In future this will be configurable but for now you may need to change this manually. For a guide to what to set it to you can use the [constants in bridge](https://github.com/urbit/bridge/blob/29f4a14869489481a950a1af53f583d751897444/src/lib/constants.js#L23) as a guide based on what action you are going to be performing. The maximum cost of your transaction will be the maximum gas units multiplied by the gwei you're going to set later. You'll need at least this much in your account.
15+
16+Once you have made these changes be sure to run `|commit %home` to get them into your ship.
17+
18+Next run `|start %claz` after which you'll be able to generate transactions.
19+
20+```
21+:claz [%generate %/spawn/eth-txs %mainnet author %single %spawn ~ship to]
22+```
23+
24+Here we have an example of generating a transaction to spawn a ship. Something to note is that for this to be successful you'll need to actually have the right to spawn the ship in question. Let's break down the command.
25+
26+
27+`%generate` is how all commands to `claz` are going to start.
28+
29+`%/spawn/eth-txs` is simply the path for the output file
30+
31+`%mainnet` specifies which network this is going to sent out on. Other options are possible including the test-net `%ropsten`.
32+
33+`author` here is an Ethereum address that is issuing the transaction. It will need to be written in `@ux` notation, e.g. `0x3b17.d097.d9dd.711e.4ef8.517a.bbf1.8b2b.a643.81fe`.
34+
35+`%single` specifies what kind of batch that will be created. If you are going to do multiple transactions you will need to either set this to `%more` followed by a _list_ of batches, or generate the next transaction after having submitted the previous one to the blockchain.
36+
37+`[%spawn ~ship to]` is the transaction we want to issue. The arguments are will vary based on the transaction. `~ship` will be the ship to be spawned. `to` is the Ethereum address to spawn the ship to.
38+
39+You will want to read [`/sur/claz.hoon`](https://github.com/urbit/urbit/blob/85435e9a81e105809d5d381b5d34fae1d4daa3b8/pkg/arvo/sur/claz.hoon).
40+This will contain more details about the various kinds of transactions you can perform particularly `++call`
41+
42+After running this command you should find a csv file at the output path you specified. You can examine this file to learn how they are constructed. You are able to modify the nonces, gas limit and price without changing the functionality of the transaction but it's not important for this guide.
43+
44+This file can now be signed and uploaded. At this point, you can transfer this file to an airgapped machine which has your keys, if you want. If you choose to do that you will need to download the `urbit` binary as well as the most recent pill file or a copy of the fakezod pier you have already booted.
45+
46+For this guide, we'll continue on the same ship.
47+
48+Run `|start %eth-sender` and then you can use it to sign the transaction file.
49+
50+```
51+:eth-sender [%sign %/spawn-signed/txt %/spawn/eth-txs %/mykey/txt ~[40 80]]
52+```
53+
54+Let's break this down again.
55+
56+`%sign` is the action we are going to perform here. `eth-sender` can also be used to submit batches of transactions to the network in various ways, but details on that are outside of the scope of this guide.
57+
58+`%/spawn-signed/txt` is the path to the output file.
59+
60+`%/spawn/eth-txs` is the path to the transaction file we generated earlier. It will need to be accessible so don't forget to `|commit %home` if you moved it to a different pier.
61+
62+`%/mykey/txt` is the path to your private key file. It should contain your private key beginning with 0x and followed by a hex string with no dots, and where capital letters are fine. This file is most likely the reason you will want to use an airgapped machine so that your private key never touches a networked computer. Opsec is left to the reader.
63+
64+`~[40 80]` is a list of gas prices, in gwei; a signed transaction file will be created for each one listed. Here we just specify 40 and 80 gwei. You may want to adjust this list based on current Ethereum network traffic and your time preference for the transactions.
65+
66+Now you should have one file in your pier for each gwei costs.
67+
68+To actually transmit the transaction, paste the contents of one of these files into https://etherscan.io/pushTx or whatever other transmission system you would like to use. **This is the action that will actually cost you ETH and perform the transaction on the network. Only do this step if you want to actually perform the action.**