urbit / azimuth

General-purpose PKI on Ethereum
MIT License
134 stars 36 forks source link

Document proposal: 0x7e82..b2a2: Naive Rollups #49

Closed philipcmonk closed 3 years ago

philipcmonk commented 3 years ago

Tlon has proposed a vote to enact Naive Rollups ("Layer 2"). This vote specifies the exact semantics of Naive Rollups and makes it live. The document hash is 0x7e825a1e9ee9d3b11e07b43aaa6d086e43f22c97b4b95a76299e3ead4cabb2a2.

The vote ends on 11/7 at 4pm UTC, and if the proposal passes, it will come into effect on 11/9 at 9pm UTC. The full text of the proposal is:

The state of Urbit ID shall be determined by feeding events into the nock 4K
program whose keccak256 hash is 

0xf72a.cad7.5633.afa0.c019.8b1c.e7a4.270d.122f.d73f.bab9.ae53.7049.cb33.ec8c.4f2c

These events will be logs from Azimuth[0] and Ecliptic[1] plus batches from the
Roller contract[2].

This will take effect on November 9, 2021 at 9pm UTC.  It will apply
retroactively to all events and batches corresponding to those contracts.

This nock program may be upgraded in the future by a vote of the galaxies.

Before November 9, 2021 at 9pm UTC, if the Tlon Corporation discovers a security
vulnerability, it may unilaterally cancel this change by publishing a statement
to that effect.  In that case, the galaxies may pass an amended proposal.

[0] 0x223c067F8CF28ae173EE5CafEa60cA44C335fecB
[1] The contract produced by calling owner() on Azimuth at any given time
[2] 0xeb70029CFB3C53c778EAf68Cd28de725390A1fE9

To vote, log into Bridge with the voting proxy or ownership key (e.g. master ticket) of your galaxy. Under "Senate", there will be an option to vote for documents. Find the one with this hash and cast your vote. Further details: https://urbit.org/voting-instructions

Links

High level blog post: https://urbit.org/blog/rollups Developer call with the team, including a demo of the user experience: https://www.youtube.com/watch?v=UScbZ6n7H-4 Preview of layer 2 docs: https://urbit-org-9l0a6849p-urbit.vercel.app/docs/azimuth/l2/layer2 Technical walkthrough of the smart contract: https://www.youtube.com/watch?v=lQdqCwYIBoU

To verify hashes

If you wish to verify the hashes, take the keccak-256 of the full text of the document, with no trailing newline. For example, paste it here: https://emn178.github.io/online-tools/keccak_256.html. This should be equal to the hash you're voting on: 0x7e825a1e9ee9d3b11e07b43aaa6d086e43f22c97b4b95a76299e3ead4cabb2a2

To verify the hash of the nock, copy naive.hoon and tiny.hoon from here (ignore naive.nock): https://github.com/urbit/azimuth/tree/963faed84a8854bcbaeeb65c2e454d95beeaa443/rollup into a running ship (can be a fakezod) in the /lib directory. Then run:

=n -build-file %/lib/naive/hoon
=/  j  (jam n)  `@ux`(keccak-256:keccak:crypto (met 3 j) j)

This should output the hash specified in the document: 0xf72a.cad7.5633.afa0.c019.8b1c.e7a4.270d.122f.d73f.bab9.ae53.7049.cb33.ec8c.4f2c

philipcmonk commented 3 years ago

This proposal passed, and soon the implementation will be live.