From 6379d935110dc4573e6f960b65790e5b079f69c0 Mon Sep 17 00:00:00 2001 From: OliviaJ3388 <90224040+OliviaJ3388@users.noreply.github.com> Date: Mon, 16 Oct 2023 13:19:19 -0400 Subject: [PATCH] Draft Orbit Keyset and Config --- .../assets/Arbitrum_bridge_orbit .png | Bin 0 -> 78317 bytes .../how-tos/Launch-an-Orbit-Mainnet-Chain | 27 ++ .../how-tos/Orbit Keyset and Configuration | 239 ++++++++++++++++++ 3 files changed, 266 insertions(+) create mode 100644 arbitrum-docs/assets/Arbitrum_bridge_orbit .png create mode 100644 arbitrum-docs/launch-orbit-chain/how-tos/Launch-an-Orbit-Mainnet-Chain create mode 100644 arbitrum-docs/launch-orbit-chain/how-tos/Orbit Keyset and Configuration diff --git a/arbitrum-docs/assets/Arbitrum_bridge_orbit .png b/arbitrum-docs/assets/Arbitrum_bridge_orbit .png new file mode 100644 index 0000000000000000000000000000000000000000..3fd333ce1e1bfb4bce88dc53a0597bdd2d0d38de GIT binary patch literal 78317 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

-sw(|Y7^*k^|M4+>F@aw`&`o*^$%fgAUx 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 literal 0 HcmV?d00001 diff --git a/arbitrum-docs/launch-orbit-chain/how-tos/Launch-an-Orbit-Mainnet-Chain b/arbitrum-docs/launch-orbit-chain/how-tos/Launch-an-Orbit-Mainnet-Chain new file mode 100644 index 000000000..1e742e2bc --- /dev/null +++ b/arbitrum-docs/launch-orbit-chain/how-tos/Launch-an-Orbit-Mainnet-Chain @@ -0,0 +1,27 @@ + Deploying an Orbit Chain on Mainnet has many risks. These instructions will do its best at guiding you through the process, however there are additional risks. + +These instructions serve as a resource and do not gurantee secure deployment. + +After deploying an Orbit Testnet chain, you can deploy an Orbit Mainnet Chain now as Contracts have been audited on mainnet and are production ready + +This tutorial shows you to do the following on Mainnet: + Create an Orbit Mainnet Chain +Prerequisites +- Public RPC +PLACEHOLDER for guidance for running backend (minimal helm chart guidance, etc.) +PLACEHOLDER FOR guidance for validators and members of the Data Availability Committee (DAC) to run required infrastructure and reasonable support in connection with the same + + + We've listed below a few options for infrastructure to get ready for mainnet + +Block Explorer Options + +RPC Infrastructure Providers + +Fast Bridging Provider + +Rollup as a Service Providers + +Data Availability Layers + +Subgraph Providrs \ No newline at end of file diff --git a/arbitrum-docs/launch-orbit-chain/how-tos/Orbit Keyset and Configuration b/arbitrum-docs/launch-orbit-chain/how-tos/Orbit Keyset and Configuration new file mode 100644 index 000000000..b703de01c --- /dev/null +++ b/arbitrum-docs/launch-orbit-chain/how-tos/Orbit Keyset and Configuration @@ -0,0 +1,239 @@ +--- +title: "How to create Orbit Keyset and Configuration" +sidebar_label: "How to create Orbit Keyset and Configuration" +description: "How to create Orbit Keyset and Configuration" +sidebar_position: 1 +--- + +# Batch Poster Configuration + +AnyTrust uses a committee of Data Availability Servers to provide access to batched transaction data. The Nitro Batch Poster needs to be configured, for each committee member, the URL, BLS public key of that committee member, and a single bit bitmask to uniquely identify that committee member, and a parameter called `assumed-honest` that sets how many committee members need to respond that they successfully stored the data. + +Someone setting up an AnyTrust L3 would need to first set up the committee of Data Availability Servers, including generating their BLS keys. How to do that is described [here](https://developer.arbitrum.io/das/daserver-instructions#generate-key). + +Here is a sample of the JSON configuration, taken from the current configuration for Nova [Keyset 8](https://www.notion.so/Keyset-8-582b01592fae4811be4c2eb77026e4e2?pvs=21), to add to the batch poster configuration. The list of current and past committee members is here: [Anytrust Mainnet](https://www.notion.so/Anytrust-Mainnet-21c30b22ab0544ab97d970fdf39185a4?pvs=21). Note that due to a quirk in a configuration library we use in Nitro, the `backends` field is an escaped JSON string with `url`, `pubkey`, and `signer-mask` fields. `pubkey` is the base64 encoded BLS public key of the committee member, and `signer-mask` should be a power of 2, starting from 2^0, 2^1, etc + +``` + "data-availability": { + "enable": true, + "rpc-aggregator": { + "enable": true, + "assumed-honest": 2, + "backends": [ + { + "url": "http://committee-0-daserver.anytrust.svc.cluster.local:9876", + "pubkey": "YAbcteVnZLty5qRebeswHKhdjEMVwdou+imSfyrI+yVXHOMdLWA3Nf4DGW9tVry/mhmZqJp01TaYIsREXWdsFe1S5QCNqnddyag5yZ/5Y6GZRqx0BXmHTaxPY5kHrhvGnwxmlJVbUk1xjKRFgxxTdTk3c0AfM3JaeWYTed3avV//KGGdwHC+/Z7XPWmeXCNsGhY75YuoEAK2EwcJvAZK9de6lHEwtyBWvxcmOADxo6siacalEO+OdBL9VtHvG5FqEwbjsdnILAmTcb2YYVgqyq2joW6d/uXQ685hCWWYqC8RLQqTXoyrXEjYLjEEsMe6eRV9rRoBmj5/atB3uOYwixFv7A9YI5YiRjw2MfoB4rQnJAkhW4AJQiwWcV2+3lkJBg==", + "signermask": 1 + }, + { + "url": "http://committee-1-daserver.anytrust.svc.cluster.local:9876", + "pubkey": "YAg1+ZXyR48kiS0FDaoon4trnBsYW80oUy+I1hDCZCotxvNQl0AjbTPD4tkTaqsX+BnIxnEpO7ondxd2Lo0cH3usnhfdKNKTmpWbs45QD5wRw4zrvEJuLeqXxAF1plXRdACubHX/SeiEx5RpJJ5wlTJYhUtk+oRFxYWtRdxtxpdVAcavfP9wdCAsaH+Ke/GjrBkmiXVfIyJ1tMhCGxpWaem5BMKaKSzflht4OnwLTOc2kA3k2MY8X4WmXLRK80vvhArO+Eq3X0TEyRN2ELaBB6/zu9zBkRnHqSfBFbe5v7J9hcUA7nfRPsWpejrmv1HTtwpVAuhBbee1646f7uN2QRyjXIp/P1l8dgZXjPlqRxXOWjXPSOOcCh+qLe4i105oGQ==", + "signermask": 2 + }, + { + "url": "https://anytrust.redditspace.com/mainnet/das", + "pubkey": "YAXbmOUQgLs5Kntevb/PM+D08BkxAsxA95qe8KlVfFpi3R74AAVpRugyn5eboMyCUQ0Nx4w8zv+mbuXeXimJh6mFi/UmIXFhTlVvQGh85pEsvqaltERyyz/xB+zmnL0P2g2zkqZKgr5xQHc1HWOE1s6iVK08IeRah4UtrDkZCGXESaZHpOOZKNrXYRsNIHRDfRfkTHZvPgoVCFLN4jXUVScbkeygPX7JHJEMo4VA9verlPy/pMQ6TdDwZLYhADfZNws61wLriD3L965tj+ZSkWRZRpLwD5iIwud9E16SJYWtnOHBYpG5qz5KmFgrPt0gmhAKAF/kT6LkhDvxmVmRqL+1rw/SxeV0mkqW2IZfMc77k2j2/qy2HyR38krTMrZVMg==", + "signermask": 4 + }, + { + "url": "https://dasrpc-mainnet.arbitrum.p2p.org", + "pubkey": "YAbOg53k1qOuAvJbQIlTHmo9LeVWvQBr0wzy00CLl30Y8XVt1KG8PADbkALw2O8a9Q+6ppWd7L7By+I0zG72JwoDM5CQ4COPisn4oY9EuHNMjzthI90SiuSKCGO5p/bYgwIENoF3LCt581DBS8nXsY5XjHlcp2klznvSiR0Jqjf+LOHqL/5MA4/vIvZuKJlcYQkCIehqM2j7bWcar8GQAfQif5LzZxr2pgs9sShaFC9JwfRQt2/rmxrvGlUehY5LcwLGzxyn+sBbmTujddgYP5DAifqKPfMaRD0uCo7xkwZwaPv8yizvI0z22cm1iE72lwWnGBClZlFybKO3rN+v/fq5soRLTqaHK0P/m32i4QouI6eRMMPExwqK0Kd+stUfFg==", + "signermask": 8 + }, + { + "url": "https://arbitrum-anytrust-das.infura.io/mainnet/das-data", + "pubkey": "YA+HK4mKT9G4rnNRX30zzXvh6XHOGJaqvvL4km5YbEJI3A23/XhRQCwUFJ3D3ITzgww0YWfDnlMjlxrDQEFfCi6wVKmo4KXVA6Ks/s690d9xrurDs4JgSAxpm8CZNPCRPg7lquq9VzEyhSB+uJNmtBEobPPxxeMOt+NV9VOFMIuR1YByhDI+6JqXQ8cGdv +``` + +# Keyset Generation + +For the Batch Poster to be able to post batches, the keyset corresponding to the configuration it is using must be enabled on the Inbox contract. You’ll need to generate the keyset and keyset hash binary blobs to pass to the `SetValidKeyset` call on the Inbox contract. Here’s an example using the same Nova [Keyset 8](https://www.notion.so/Keyset-8-582b01592fae4811be4c2eb77026e4e2?pvs=21) configuration as before, and the `datool` utility which is distributed with Nitro: + + "keyset": { + "assumed-honest": 2, + "backends": "[{\"url\":\"http://committee-0-daserver.anytrust.svc.cluster.local:9876\",\"pubkey\":\"YAbcteVnZLty5qRebeswHKhdjEMVwdou+imSfyrI+yVXHOMdLWA3Nf4DGW9tVry/mhmZqJp01TaYIsREXWdsFe1S5QCNqnddyag5yZ/5Y6GZRqx0BXmHTaxPY5kHrhvGnwxmlJVbUk1xjKRFgxxTdTk3c0AfM3JaeWYTed3avV//KGGdwHC+/Z7XPWmeXCNsGhY75YuoEAK2EwcJvAZK9de6lHEwtyBWvxcmOADxo6siacalEO+OdBL9VtHvG5FqEwbjsdnILAmTcb2YYVgqyq2joW6d/uXQ685hCWWYqC8RLQqTXoyrXEjYLjEEsMe6eRV9rRoBmj5/atB3uOYwixFv7A9YI5YiRjw2MfoB4rQnJAkhW4AJQiwWcV2+3lkJBg==\",\"signermask\":1},{\"url\":\"http://committee-1-daserver.anytrust.svc.cluster.local:9876\",\"pubkey\":\"YAg1+ZXyR48kiS0FDaoon4trnBsYW80oUy+I1hDCZCotxvNQl0AjbTPD4tkTaqsX+BnIxnEpO7ondxd2Lo0cH3usnhfdKNKTmpWbs45QD5wRw4zrvEJuLeqXxAF1plXRdACubHX/SeiEx5RpJJ5wlTJYhUtk+oRFxYWtRdxtxpdVAcavfP9wdCAsaH+Ke/GjrBkmiXVfIyJ1tMhCGxpWaem5BMKaKSzflht4OnwLTOc2kA3k2MY8X4WmXLRK80vvhArO+Eq3X0TEyRN2ELaBB6/zu9zBkRnHqSfBFbe5v7J9hcUA7nfRPsWpejrmv1HTtwpVAuhBbee1646f7uN2QRyjXIp/P1l8dgZXjPlqRxXOWjXPSOOcCh+qLe4i105oGQ==\",\"signermask\":2},{\"url\":\"https://anytrust.redditspace.com/mainnet/das\",\"pubkey\":\"YAXbmOUQgLs5Kntevb/PM+D08BkxAsxA95qe8KlVfFpi3R74AAVpRugyn5eboMyCUQ0Nx4w8zv+mbuXeXimJh6mFi/UmIXFhTlVvQGh85pEsvqaltERyyz/xB+zmnL0P2g2zkqZKgr5xQHc1HWOE1s6iVK08IeRah4UtrDkZCGXESaZHpOOZKNrXYRsNIHRDfRfkTHZvPgoVCFLN4jXUVScbkeygPX7JHJEMo4VA9verlPy/pMQ6TdDwZLYhADfZNws61wLriD3L965tj+ZSkWRZRpLwD5iIwud9E16SJYWtnOHBYpG5qz5KmFgrPt0gmhAKAF/kT6LkhDvxmVmRqL+1rw/SxeV0mkqW2IZfMc77k2j2/qy2HyR38krTMrZVMg==\",\"signermask\":4},{\"url\":\"https://dasrpc-mainnet.arbitrum.p2p.org\",\"pubkey\":\"YAbOg53k1qOuAvJbQIlTHmo9LeVWvQBr0wzy00CLl30Y8XVt1KG8PADbkALw2O8a9Q+6ppWd7L7By+I0zG72JwoDM5CQ4COPisn4oY9EuHNMjzthI90SiuSKCGO5p/bYgwIENoF3LCt581DBS8nXsY5XjHlcp2klznvSiR0Jqjf+LOHqL/5MA4/vIvZuKJlcYQkCIehqM2j7bWcar8GQAfQif5LzZxr2pgs9sShaFC9JwfRQt2/rmxrvGlUehY5LcwLGzxyn+sBbmTujddgYP5DAifqKPfMaRD0uCo7xkwZwaPv8yizvI0z22cm1iE72lwWnGBClZlFybKO3rN+v/fq5soRLTqaHK0P/m32i4QouI6eRMMPExwqK0Kd+stUfFg==\",\"signermask\":8},{\"url\":\"https://arbitrum-anytrust-das.infura.io/mainnet/das-data\",\"pubkey\":\"YA+HK4mKT9G4rnNRX30zzXvh6XHOGJaqvvL4km5YbEJI3A23/XhRQCwUFJ3D3ITzgww0YWfDnlMjlxrDQEFfCi6wVKmo4KXVA6Ks/s690d9xrurDs4JgSAxpm8CZNPCRPg7lquq9VzEyhSB+uJNmtBEobPPxxeMOt+NV9VOFMIuR1YByhDI+6JqXQ8cGdvSUlQTO0+1BYSy/2gatVSAMHHfT+zcABZvv1kxEvEpXy1Z+wUge5WTPbNbPHy9KLe5tsAxUfDhACrEY3tror9W6uTtwP3agmRuqXUP7sSUZTAa1Rh+Mc4o8Qnij2Y5UVq7AcgiDwNKJGVN6NuL/1fcx50K2ZTVX0VTBZOBo75g7Nn72Jvqu1G9Orey7ErflXyMXXQ==\",\"signermask\":16},{\"url\":\"https://das.nova-mainnet.quiknode.pro\",\"pubkey\":\"YALC7DeOtroXqegbj9RCY9aZw0cZSSpOzx7napQrwiR4+3qflOLxWCJjDy1hbDKjNAOHEY5LluJtbkHbqrn+J61gi9gjoUL5iPfamZzeygirSv7baz2i1NsgjMC6kb/UThU71zc2t98BNBeAqqfxhfyg06R437U7YS7ZHwVEFt571ixZ05tO5gTqlstC89aqIBEhl7S5rPc25H+0TPAMvjclIn2K6lvKHvu7iUwcu1ZqerG3Aegdr9W58wd85Piy+AAKBH+4jcXc+K/udljfD5hTM6MVFvumIgB2D+QlbAJgsZmUlzf7iPd9dcNd6kNJJhIT7mvrv/NQIEr/fNhGFlG+1Xy0VRhLkKv1ahuyPe/+qbsl2uxc0r6dfOAQcZudWg==\",\"signermask\":32},{\"url\":\"https://rpc.das.arbitrum.gcda.xyz\",\"pubkey\":\"YBN+CWUmeRP56vhb/yLjzl9Euxv67XZ5sWgKzRVDaoQyXrp/KWLKRpN8y/Rtme3JRANM3Ze8T7HY3DrducNIQxqZl1lZ5qyCODdq8x8D51T6PDFZJ81oYCZeyObpfaQKlQkyd3PnqlvPrvdpDXaQYzNvbVIQp95V4OvyUf/VP23KAiJn+8P/wI5HCeNBSpa4BAVt1+f/w4kn2KPYpcD0ao5zfWOOie9clvxd/nmiHaCitcvQwbsulcqbv/HUFlhcLAEZtnbcBTxauzsLTWDq+gZXFaLDAajVi6yHHfg238DrjU7eGRyrTPZlVFGjfJzzdggqZdXyO4GMGFxWsWzpgLb+DWiDj95nePzGUs9oE/79Ids3J0VN9ZrTvnRl1gUHqg==\",\"signermask\":64},{\"url\":\"https://arbitrum-das.seadn.io\",\"pubkey\":\"YAR40SbOOU71LW/8aEVnLfztsU1Mq+dqzZ7/8liSsx3DLYvSFCZXXwijCxuEu4wfZQeBDiXUeFLx8qBrZrU0HQLXSBoczgElfnaKoaWbaDoo9veUZnRUHw9OI2Q9Md/X6QlYo2HH24a2KP4HXZTIXixD+FjT82g9U2mof3azkCwHZd3IyQTjdbD1dA210uJfGxWalm4gWWsaOP8xG1Nl13CcxnmZEwfWkhUs/0mHZmPzFeCB9MC8hcOKZvIZjVOQFwwnXiPphD6nSgRrPnCEqqHVPG/GyGIiUNy4EtREw0GoRw30ssLsOrDUqlY7EBoxUg1x3wycHuxIGMuuyzJKwrkEWusxa7H0xsmqySR/HsP7gkJH84WNG5xgMUE6EaewWQ==\",\"signermask\":128}]" + + ```) + +.../nitro $ ./target/bin/datool dumpkeyset --conf.file datestconf/datool-keyset.conf + ``` + Keyset: 0x0000000000000002000000000000000801216006dcb5e56764bb72e6a45e6deb301ca85d8c4315c1da2efa29927f2ac8fb25571ce31d2d603735fe03196f6d56bcbf9a1999a89a74d5369822c4445d676c15ed52e5008daa775dc9a839c99ff963a19946ac740579874dac4f639907ae1bc69f0c6694955b524d718ca445831c5375393773401f33725a79661379dddabd5fff28619dc070befd9ed73d699e5c236c1a163be58ba81002b6130709bc064af5d7ba947130b72056bf17263800f1a3ab2269c6a510ef8e7412fd56d1ef1b916a1306e3b1d9c82c099371bd9861582acaada3a16e9dfee5d0ebce61096598a82f112d0a935e8cab5c48d82e3104b0c7ba79157dad1a019a3e7f6ad077b8e6308b116fec0f58239622463c3631fa01e2b4272409215b8009422c16715dbede5909060121600835f995f2478f24892d050daa289f8b6b9c1b185bcd28532f88d610c2642a2dc6f3509740236d33c3e2d9136aab17f819c8c671293bba277717762e8d1c1f7bac9e17dd28d2939a959bb38e500f9c11c38cebbc426e2dea97c40175a655d17400ae6c75ff49e884c79469249e70953258854b64fa8445c585ad45dc6dc6975501c6af7cff7074202c687f8a7bf1a3ac192689755f232275b4c8421b1a5669e9b904c29a292cdf961b783a7c0b4ce736900de4d8c63c5f85a65cb44af34bef840acef84ab75f44c4c9137610b68107aff3bbdcc19119c7a927c115b7b9bfb27d85c500ee77d13ec5a97a3ae6bf51d3b70a5502e8416de7b5eb8e9feee376411ca35c8a7f3f597c7606578cf96a4715ce5a35cf48e39c0a1faa2dee22d74e681901216005db98e51080bb392a7b5ebdbfcf33e0f4f0193102cc40f79a9ef0a9557c5a62dd1ef800056946e8329f979ba0cc82510d0dc78c3cceffa66ee5de5e298987a9858bf5262171614e556f40687ce6912cbea6a5b44472cb3ff107ece69cbd0fda0db392a64a82be714077351d6384d6cea254ad3c21e45a87852dac39190865c449a647a4e39928dad7611b0d2074437d17e44c766f3e0a150852cde235d455271b91eca03d7ec91c910ca38540f6f7ab94fcbfa4c43a4dd0f064b6210037d9370b3ad702eb883dcbf7ae6d8fe6529164594692f00f9888c2e77d135e922585ad9ce1c16291b9ab3e4a98582b3edd209a100a005fe44fa2e4843bf1995991a8bfb5af0fd2c5e5749a4a96d8865f31cefb9368f6feacb61f2477f24ad332b6553201216006ce839de4d6a3ae02f25b4089531e6a3d2de556bd006bd30cf2d3408b977d18f1756dd4a1bc3c00db9002f0d8ef1af50fbaa6959decbec1cbe234cc6ef6270a03339090e0238f8ac9f8a18f44b8734c8f3b6123dd128ae48a0863b9a7f6d88302043681772c2b79f350c14bc9d7b18e578c795ca76925ce7bd2891d09aa37fe2ce1ea2ffe4c038fef22f66e28995c61090221e86a3368fb6d671aafc19001f4227f92f3671af6a60b3db1285a142f49c1f450b76feb9b1aef1a551e858e4b7302c6cf1ca7fac05b993ba375d8183f90c089fa8a3df31a443d2e0a8ef193067068fbfcca2cef234cf6d9c9b5884ef69705a71810a56651726ca3b7acdfaffdfab9b2844b4ea6872b43ff9b7da2e10a2e23a79130c3c4c70a8ad0a77eb2d51f160121600f872b898a4fd1b8ae73515f7d33cd7be1e971ce1896aabef2f8926e586c4248dc0db7fd7851402c14149dc3dc84f3830c346167c39e5323971ac340415f0a2eb054a9a8e0a5d503a2acfecebdd1df71aeeac3b38260480c699bc09934f0913e0ee5aaeabd57313285207eb89366b411286cf3f1c5e30eb7e355f55385308b91d5807284323ee89a9743c70676f4949504ced3ed41612cbfda06ad55200c1c77d3fb3700059befd64c44bc4a57cb567ec1481ee564cf6cd6cf1f2f4a2dee6db00c547c38400ab118dedae8afd5bab93b703f76a0991baa5d43fbb125194c06b5461f8c738a3c4278a3d98e5456aec0720883c0d28919537a36e2ffd5f731e742b6653557d154c164e068ef983b367ef626faaed46f4eadecbb12b7e55f23175d01216002c2ec378eb6ba17a9e81b8fd44263d699c34719492a4ecf1ee76a942bc22478fb7a9f94e2f15822630f2d616c32a3340387118e4b96e26d6e41dbaab9fe27ad608bd823a142f988f7da999cdeca08ab4afedb6b3da2d4db208cc0ba91bfd44e153bd73736b7df01341780aaa7f185fca0d3a478dfb53b612ed91f054416de7bd62c59d39b4ee604ea96cb42f3d6aa20112197b4b9acf736e47fb44cf00cbe3725227d8aea5bca1efbbb894c1cbb566a7ab1b701e81dafd5b9f3077ce4f8b2f8000a047fb88dc5dcf8afee7658df0f985333a31516fba62200760fe4256c0260b199949737fb88f77d75c35dea4349261213ee6bebbff350204aff7cd8461651bed57cb455184b90abf56a1bb23deffea9bb25daec5cd2be9d7ce010719b9d5a012160137e0965267913f9eaf85bff22e3ce5f44bb1bfaed7679b1680acd15436a84325eba7f2962ca46937ccbf46d99edc944034cdd97bc4fb1d8dc3addb9c348431a99975959e6ac8238376af31f03e754fa3c315927cd6860265ec8e6e97da40a9509327773e7aa5bcfaef7690d769063336f6d5210a7de55e0ebf251ffd53f6dca022267fbc3ffc08e4709e3414a96b804056dd7e7ffc38927d8a3d8a5c0f46a8e737d638e89ef5c96fc5dfe79a21da0a2b5cbd0c1bb2e95ca9bbff1d416585c2c0119b676dc053c5abb3b0b4d60eafa065715a2c301a8d58bac871df836dfc0eb8d4ede191cab4cf6655451a37c9cf376082a65d5f23b818c185c56b16ce980b6fe0d68838fde6778fcc652cf6813fefd21db3727454df59ad3be7465d60507aa0121600478d126ce394ef52d6ffc6845672dfcedb14d4cabe76acd9efff25892b31dc32d8bd21426575f08a30b1b84bb8c1f6507810e25d47852f1f2a06b66b5341d02d7481a1cce01257e768aa1a59b683a28f6f7946674541f0f4e23643d31dfd7e90958a361c7db86b628fe075d94c85e2c43f858d3f3683d5369a87f76b3902c0765ddc8c904e375b0f5740db5d2e25f1b159a966e20596b1a38ff311b5365d7709cc679991307d692152cff49876663f315e081f4c0bc85c38a66f2198d5390170c275e23e9843ea74a046b3e7084aaa1d53c6fc6c8622250dcb812d444c341a8470df4b2c2ec3ab0d4aa563b101a31520d71df0c9c1eec4818cbaecb324ac2b9045aeb316bb1f4c6c9aac9247f1ec3fb824247f3858d1b9c6031413a11a7b059 +KeysetHash: 0xf8bb9a67839d1767e79afe52d21e97a04ee0bf5f816d5b52c10df60cccb7f822 +For Orbit we may need to make a JS implementation of keyset and keysethash serialization. See below for descriptions of the formats. + ``` + +## BLS implementation details + +See [this file](https://github.com/OffchainLabs/nitro/blob/3d407778881c26768a24757333d22d34e8f02230/blsSignatures/blsSignatures.go) for the code implementing our BLS functionality. We use go-ethereum’s implementation of BLS12-381, [github.com/ethereum/go-ethereum/crypto/bls12381](http://github.com/ethereum/go-ethereum/crypto/bls12381). + +These functions from [this file](https://github.com/OffchainLabs/nitro/blob/3d407778881c26768a24757333d22d34e8f02230/blsSignatures/blsSignatures.go) show how we generate the BLS keypair: + +``` +func GeneratePrivKeyString() (string, error) { + g2 := bls12381.NewG2() + privKey, err := cryptorand.Int(cryptorand.Reader, g2.Q()) + if err != nil { + return "", err + } + privKeyBytes := PrivateKeyToBytes(privKey) + encodedPrivKey := make([]byte, base64.StdEncoding.EncodedLen(len(privKeyBytes))) + base64.StdEncoding.Encode(encodedPrivKey, privKeyBytes) + return string(encodedPrivKey), nil +} + +func GenerateKeys() (PublicKey, PrivateKey, error) { + g2 := bls12381.NewG2() + privateKey, err := cryptorand.Int(cryptorand.Reader, g2.Q()) + if err != nil { + return PublicKey{}, nil, err + } + publicKey, err := PublicKeyFromPrivateKey(privateKey) + return publicKey, privateKey, err +} + +func PublicKeyFromPrivateKey(privateKey PrivateKey) (PublicKey, error) { + pubKey := &bls12381.PointG2{} + g2 := bls12381.NewG2() + g2.MulScalar(pubKey, g2.One(), privateKey) + proof, err := KeyValidityProof(pubKey, privateKey) + if err != nil { + return PublicKey{}, err + } + publicKey, err := NewPublicKey(pubKey, proof) + if err != nil { + return PublicKey{}, err + } + return publicKey, nil +``` + +The relevant snippet of the public key deserialization function is: +``` +func PublicKeyFromBytes(in []byte, trustedSource bool) (PublicKey, error) { + if len(in) == 0 { + return PublicKey{}, errors.New("tried to deserialize empty public key") + } + g2 := bls12381.NewG2() + proofLen := int(in[0]) + if proofLen == 0 { + // SNIP: the proof is supplied with the public key + } else { + if len(in) < 1+proofLen { + return PublicKey{}, errors.New("invalid serialized public key") + } + g1 := bls12381.NewG1() + proofBytes := in[1 : 1+proofLen] + validityProof, err := g1.FromBytes(proofBytes) + if err != nil { + return PublicKey{}, err + } + keyBytes := in[1+proofLen:] + key, err := g2.FromBytes(keyBytes) + if err != nil { + return PublicKey{}, err + } + // SNIP: not a trusted source + return NewPublicKey(key, validityProof) + } +} +``` + +### BLS Keypair examples + +Changing the code of the above key generation functions as follows to deterministically generate a key gives the following keys: +``` + + /* + g2 := bls12381.NewG2() + privateKey, err := cryptorand.Int(devnullReader{}, g2.Q()) + */ + privateKey := big.NewInt(0xA12B1) +``` + +The keys are written to disk using this function: + + func GenerateAndStoreKeys(keyDir string) (*blsSignatures.PublicKey, *blsSignatures.PrivateKey, error) { + pubKey, privKey, err := blsSignatures.GenerateKeys() + if err != nil { + return nil, nil, err + } + pubKeyPath := keyDir + "/" + DefaultPubKeyFilename + pubKeyBytes := blsSignatures.PublicKeyToBytes(pubKey) + encodedPubKey := make([]byte, base64.StdEncoding.EncodedLen(len(pubKeyBytes))) + base64.StdEncoding.Encode(encodedPubKey, pubKeyBytes) + err = os.WriteFile(pubKeyPath, encodedPubKey, 0o600) + if err != nil { + return nil, nil, err + } + + privKeyPath := keyDir + "/" + DefaultPrivKeyFilename + privKeyBytes := blsSignatures.PrivateKeyToBytes(privKey) + encodedPrivKey := make([]byte, base64.StdEncoding.EncodedLen(len(privKeyBytes))) + base64.StdEncoding.Encode(encodedPrivKey, privKeyBytes) + err = os.WriteFile(privKeyPath, encodedPrivKey, 0o600) + if err != nil { + return nil, nil, err + } + return &pubKey, &privKey, nil +} + ``` +$ ./target/bin/datool keygen --dir /tmp/blskey/ +$ cat /tmp/blskey/das_bls +ChKx +$ cat /tmp/blskey/das_bls.pub +YBXceirFVmKWqLOZeWSWYeW1eMjgZv2u5WjJ+hTCoi7ExSqE/D0hhuufbXruMi2QghbPG49e5pB7HTgIdjDNyuUJLZ6uOJ3mARP+ZH8/dUUBBualxKirS+ndRZ1D5M8EwBVGma5eDm/8dcyIa/K6z8sVcuKrbZ87DvJg83jiXkhwx50HOehmJy6WHD5NNU9D4hG/04yE6Wpii6bucrkCIZehdb2roJ3nkz6M3JC40RfhCJ6u4bTwrIlszXpM89G9AxaIiWRH3fHWE9lyNOHzytW/myMGvcy1OX8+/oLRNecIRMb8gQWcvN3NmJ0gA5/QqQDxShL5KEFDZ4WtXM5bJSpc850nmjN7NalPpsCI0fUvg6cKFoZEQqqVjvpRaigNHg== + ``` + +### Keyset with single private key = zero + +**Key** + ``` +$ cat /tmp/orbit-bls/das_bls # this is an empty file, the private key is zero +$ cat /tmp/orbit-bls/das_bls.pub +YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + ``` +Keyset + ``` +Keyset: 0x00000000000000010000000000000001012160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +KeysetHash: 0x4d795e20d33eea0b070600e4e100c512a750562bf03c300c99444bd5af92d9b0 + ``` + +Sequencer config + ``` +{ +... + "data-availability": { + "enable": true, + "rpc-aggregator": { + "enable": true, + "assumed-honest": 1, + "backends": "[{\"url\":\"http://localhost:9876\",\"pubkey\":\"YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\",\"signermask\":1}]" + } + } +... +} + ``` + +## Keyset binary format + +https://github.com/OffchainLabs/nitro/blob/3d407778881c26768a24757333d22d34e8f02230/arbstate/das_reader.go#L159 + +The keyset in binary representation is: + ``` +assumed-honest: big endian uint64 +number of committee members: big endian uint64 +for each committee member: + total length of fields listed below: big endian uint16 + length of bls signature: uint8 + bls signature: variable length byte array + bls public key: variable length byte array + ``` + +## Keyset hash binary format + +The keyset hash is the bytes of the keyset, hashed with our `dastree` hashing scheme. The full scheme is described [here](https://github.com/OffchainLabs/nitro/blob/3d407778881c26768a24757333d22d34e8f02230/das/dastree/dastree.go#L26) but the size of data being hashed fits in a single bin (<64KB), so it is a simpler case. + +LeafByte = 0xFE + +Hash = Keccak256 + +keysetHash = FlipFirstBit(Hash(LeafByte + Hash(keysetBytes))) \ No newline at end of file