on master help sign in
smart contract edits
commitf48ac7276e147cb8e313250a0991e13cf63d6633 authordrbeefsupreme <drbeefsupreme@discordja.net> dateWed 3 Nov 2021, 16:30 (5 years ago) parent953a6d9
2 files changed+51−44
content/docs/azimuth/azimuth-eth.md+17−16 content/docs/azimuth/ecliptic.md+34−28
content/docs/azimuth/azimuth-eth.md+17−16
@@ -6,15 +6,15 @@ template = "doc.html"
66
77[Azimuth.eth](https://etherscan.io/address/azimuth.eth) is used for storing all
88data related to Azimuth points and their ownership, and should be considered to
9−be the ledger for Azimuth. This contract is only a data store - it only contains
9+be the ledger for Azimuth. This contract is just a data store - it only contains
1010the bare minimum of business logic. See [Ecliptic.eth](/docs/azimuth/ecliptic)
1111for the contract containing the business logic for this ledger. `Azimuth.eth`
1212cannot be modified directly by [galaxy vote](/docs/glossary/upgrade) - they are
1313only eligible to modify the Ecliptic.
1414
15−## Global state
15+## Global state {#global}
1616
17−The global state of Azimuth is given as follows.
17+The global state of `Azimuth.eth` is given by the following.
1818
1919```solidity
2020 // points: per point, general network-relevant point state
@@ -39,13 +39,13 @@ The global state of Azimuth is given as follows.
3939
4040Urbit ID's are formalized as [ERC-721 non-fungible
4141tokens](https://eips.ethereum.org/EIPS/eip-721) and are indexed by a number
42−between `0` and `2^32-1`, or `uint32`. There are two data structures associated to a given
43−`uint32`: a `Point` and a `Deed`.
42+between `0` and `2^32-1`, e.g. a `uint32`. There are two data structures
43+associated to a given `uint32`: a `Point` and a `Deed`.
4444
4545## `Point`s {#points}
4646
47−A `Point` contains data about networking keys
48−and sponsorship status, arranged in the following `struct`:
47+A `Point` contains data about networking keys and sponsorship status, arranged
48+in the following `struct`:
4949
5050```solidity
5151 struct Point
@@ -103,8 +103,8 @@ and sponsorship status, arranged in the following `struct`:
103103
104104## `Deed`s {#deeds}
105105
106−The owner of an Urbit ID may also set several [proxies](/docs/using/id/proxies)
107−by modifying their `Deed`:
106+A `Deed` says which Ethereum address owns a given `Point` as well as several
107+[proxies](/docs/using/id/proxies) for that `Point`.
108108
109109```solidity
110110struct Deed
@@ -134,13 +134,15 @@ struct Deed
134134 }
135135```
136136
137−## Other state
137+## Other state {#other}
138138
139−Finally, each Ethereum address may set for itself a number of `operators`,
140−as defined and required by the ERC-721 standard. These are for third party
141−brokers/wallets/auctioneers/etc such as [OpenSea](http://opensea.io).
139+Finally, each Ethereum address may set for itself a number of `operators`, as
140+defined and required by the [ERC-721
141+standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-721/).
142+These are for third party brokers/wallets/auctioneers/etc such as
143+[OpenSea](http://opensea.io), which facilitate exchange of ERC-721 tokens.
142144
143−The ledger also contains some other state—`dnsDomains`—which are domain names by
145+`Azimuth.eth` also contains some other state—`dnsDomains`—which are domain names by
144146which the IP address of a galaxy may be looked up, e.g. `zod.urbit.org` resolves
145147to `35.247.119.159`. This is used for bootstrapping the network from DNS. Three
146148domains may be listed here, but as of today they are all `urbit.org`. This may
@@ -152,6 +154,5 @@ All data in this ledger is stored and processed locally on your ship by the
152154[`%azimuth` Gall agent](/docs/azimuth/flow#azimuth), including [layer
1531552](/docs/azimuth/l2/layer2) data. Because state transitions resulting from layer 2
154156transactions are not included in this ledger, in general the local store will
155−differ from what is kept in Azimuth.eth.
156−
157+differ from what is kept in `Azimuth.eth`.
157158
content/docs/azimuth/ecliptic.md+34−28
@@ -5,31 +5,31 @@ template = "doc.html"
55+++
66
77[Ecliptic.eth](https://etherscan.io/address/ecliptic.eth) holds the business
8−logic for the ledger kept by Azimuth.eth. It may be modified by [galaxy
8+logic for the ledger kept by `Azimuth.eth`. It may be modified by [galaxy
99vote](/docs/glossary/upgrade). This determines things such as what the various
1010proxies are capable of, how keys are changed, or verifying that a request is
1111valid.
1212
13−Ecliptic uses external contracts such as
13+`Ecliptic.eth` uses external contracts such as
1414[Azimuth.eth](/docs/azimuth/azimuth-eth) and
1515[Polls](https://github.com/urbit/azimuth/blob/master/contracts/Polls.sol) for
1616data storage so that it can easily be replaced in case the logic needs to be
17−changed without affecting the data. These data contracts are owned by the
18−Ecliptic contract, and this ownership is passed to the new Ecliptic contract
17+changed without affecting the data. These data contracts are owned by
18+`Ecliptic.eth`, and this ownership is passed to the new Ecliptic contract
1919whenever it is replaced. Thus it is advised for clients to not store Ecliptic's
20−contract address directly, but instead ask the Azimuth.eth contract for its
20+contract address directly, but instead ask the `Azimuth.eth` contract for its
2121`owner` attribute to ensure that transactions are sent to the latest Ecliptic
22−contract. Alternatively, the ENS name `ecliptic.eth` will always resolve to the
23−latest Ecliptic.
22+contract. Alternatively, the [ENS](https://ens.domains/) name `Ecliptic.eth`
23+will always resolve to the latest Ecliptic.
2424
2525You can read about [Urbit's first
2626upgrade](https://github.com/urbit/azimuth/pull/35) to Ecliptic, which occurred
2727in the summer of 2021, [here](https://urbit.org/blog/first-contract). The
2828[second](https://github.com/urbit/azimuth/pull/43) occurred later in the year
2929and consisted of several small modifications to ready the PKI for the
30−introduction of naive rollups.
30+introduction of [naive rollups](/docs/azimuth/l2/layer2).
3131
32−Ecliptic implements the [ERC-721](https://eips.ethereum.org/EIPS/eip-721)
32+`Ecliptic.eth` implements the [ERC-721](https://eips.ethereum.org/EIPS/eip-721)
3333interface for non-fungible tokens, as well as the
3434[ERC-165](https://eips.ethereum.org/EIPS/eip-165) standard for interface
3535detection.
@@ -42,12 +42,12 @@ applicable.
4242
4343## Write functions {#write}
4444
45−Here we briefly describe each function in the Ecliptic which allows one to write
45+Here we briefly describe each function in `Ecliptic.eth` which allows one to write
4646data to Ethereum. These can be called using
4747[Etherscan](https://etherscan.io/address/ecliptic.eth#writeContract), but
4848the most common functions may be called from within Bridge.
4949
50−We only document here the write functions specific to Ecliptic and not the
50+We only document here the write functions specific to `Ecliptic.eth` and not the
5151standard functions that are part of the ERC-721 or ERC-165 interfaces.
5252
5353### `Point`s interface
@@ -66,9 +66,11 @@ to its [proxies](#proxies). All of these actions may be performed from Bridge.
6666 bool _discontinuous)
6767```
6868
69−Configure `_point` with network public keys `_encryptionKey`, `_authenticationKey`,
70−and corresponding `_cryptoSuiteVersion`, incrementing the `Point`'s continuity
71−number if needed.
69+Configure `_point` with network public keys `_encryptionKey`,
70+`_authenticationKey`, and corresponding `_cryptoSuiteVersion`, incrementing the
71+`Point`'s [`keyRevisionNumber`](/docs/azimuth/azimuth-eth#points) if the keys
72+have changed and `continuityNumber` number if `_discontinuous` is set to true
73+(see [Life and Rift](/docs/azimuth/life-and-rift)).
7274
7375Corresponds to the layer 2 `%configure-keys` action.
7476
@@ -97,15 +99,17 @@ Corresponds to the layer 2 `%spawn` action.
9799 function transferPoint(uint32 _point, address _target, bool _reset)
98100```
99101
100−Transfer `_point` to `_target`, clearing all permissions
101−data and keys if `_reset` is true
102−
103−Note: the `_reset` flag is useful when transferring the point to
104−a recipient who doesn't trust the previous owner.
102+Transfer `_point` to `_target`, clearing all permissions data and keys if
103+`_reset` is true. `_reset` set to makes this transaction a
104+[breach](/using/id/guide-to-breaches), and thus this action increments the
105+[`continuityNumber`](/docs/azimuth/azimuth-eth#points) of `_point`, and usually
106+the `keyRevisionNumber` as well (see [Life and
107+Rift](/docs/azimuth/life-and-rift)).
105108
106109Requirements:
107110 - `:msg.sender` must be either `_point`'s current owner, authorized to transfer
108− `_point`, or authorized to transfer the current owner's points (as in ERC721's operator)
111+ `_point`, or authorized to transfer the current owner's points (i.e. is
112+ listed as an ERC-721 operator in [`operators`](/docs/azimuth/azimuth-eth#other)).
109113 - `_target` must not be the zero address.
110114
111115Corresponds to the layer 2 `%transfer-point` action.
@@ -179,8 +183,10 @@ Requirements:
179183Corresponds to the layer 2 `%detach` action.
180184
181185Unlike all other layer 1 actions, layer 1 sponsors may use a layer 1 `detach` on
182−a layer 2 sponsee. See the [Layer 2](/docs/azimuth/l2/layer2#sponsorship) section
183−for more detail.
186+a layer 2 sponsee. See the [Layer 2](/docs/azimuth/l2/layer2#sponsorship)
187+section for more detail. The detach action available in Bridge is a layer 2
188+action, so a layer 1 detach must be done
189+[manually](https://etherscan.io/address/ecliptic.eth#writeContract).
184190
185191### Proxy management {#proxies}
186192
@@ -337,6 +343,9 @@ performed manually. It is not available in Bridge.
337343Check whether the `_proposal` has achieved majority. Any Ethereum address may
338344call this function.
339345
346+This action eiher occurs as part of a vote that achieves a majority, or must be
347+performed manually. It is not available in Bridge.
348+
340349### Contract owner operations
341350
342351The following functions may only be performed by the owner of the contract.
@@ -363,9 +372,6 @@ this function has no valid arguments.
363372Sets 3 DNS domains by which galaxy IP addresses may be looked up as part of the
364373bootstrap process to get on the network. Currently, all three domains are `urbit.org`.
365374
366−In the future, this function should probably be parameterized as a per-galaxy
367−setting, so that each galaxy may set its own domain.
368−
369375## Read functions {#read}
370376
371377Here we briefly describe each function in the Ecliptic which allows one to read
@@ -424,7 +430,7 @@ Release](https://etherscan.io/address/0x86cd9cd0992f04231751e3761de45cecea5d1801
424430and [Conditional Star
425431Release](https://etherscan.io/address/0x8c241098c3d3498fe1261421633fd57986d74aea).
426432
427−Beginning in 2019, stars may spawn at most 1024 planets. This limit doubles for
428−every subsequent year. However, this limit is not currently implemented on
429−[Layer 2](/docs/azimuth/l2/layer2).
433+Beginning in 2019, stars may spawn at most 1024 planets. This limit doubles
434+every subsequent year until the maximum is reached. However, this limit is not
435+currently implemented on [Layer 2](/docs/azimuth/l2/layer2).
430436