From 6fa857fedc59de8b700d6d47f48b3cd2d54f254a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Oct 2023 21:33:22 +0000 Subject: [PATCH] deploy: 603172bd02d444b55461b6c6f315555a15c5e975 --- 404.html | 4 +-- ...93b7f.e4a55cbc.js => 1df93b7f.1a5c27a7.js} | 2 +- ...49772.ca0be864.js => 25349772.85007146.js} | 2 +- ...c242d.5145909c.js => 28ec242d.9260f867.js} | 2 +- ...00941.c3d1e567.js => 29700941.5f59edbc.js} | 2 +- assets/js/3486820e.d1814f44.js | 1 + assets/js/3486820e.d8b3f210.js | 1 - assets/js/3756debb.5c455cb4.js | 1 - assets/js/3756debb.b3e2bfd4.js | 1 + assets/js/39dc615d.963b2cb3.js | 1 + assets/js/39dc615d.9d83c664.js | 1 - ...f2afb.26c58d2d.js => 935f2afb.1f082fc1.js} | 2 +- assets/js/9c8fc7d9.cc6520c7.js | 1 + assets/js/9c8fc7d9.ea006588.js | 1 - assets/js/a22447f8.acd25b84.js | 1 + assets/js/a22447f8.c7171cc7.js | 1 - assets/js/d3ba936f.34f21a1c.js | 1 - assets/js/d3ba936f.4f01a511.js | 1 + ...n.017f4293.js => runtime~main.750ee231.js} | 2 +- .../deploy-a-local-rollup/index.html | 15 ++++++---- docs/dev-cluster/overview/index.html | 16 +++++++---- .../run-multiple-rollups-locally/index.html | 28 ++++++++++++++----- docs/dev-cluster/shutdown/index.html | 4 +-- .../cloud-rollup-deployment/index.html | 22 +++++++++------ .../local-rollup-deployment/index.html | 16 +++++------ docs/dusknet/overview/index.html | 13 ++++----- .../architecture/composer/index.html | 4 +-- .../architecture/conductor/index.html | 4 +-- .../data-availability-layer/index.html | 4 +-- .../architecture/overview/index.html | 4 +-- .../architecture/relayer/index.html | 4 +-- .../architecture/rollup/index.html | 4 +-- .../the-astria-sequencer/index.html | 4 +-- .../architecture/transaction-flow/index.html | 4 +-- .../cross-rollup-composability/index.html | 11 ++++++-- .../introduction/index.html | 20 ++++++------- .../maintain-sovereignty/index.html | 4 +-- .../why-decentralized-sequencers/index.html | 18 ++++++++---- index.html | 4 +-- markdown-page/index.html | 4 +-- 40 files changed, 137 insertions(+), 98 deletions(-) rename assets/js/{1df93b7f.e4a55cbc.js => 1df93b7f.1a5c27a7.js} (92%) rename assets/js/{25349772.ca0be864.js => 25349772.85007146.js} (90%) rename assets/js/{28ec242d.5145909c.js => 28ec242d.9260f867.js} (50%) rename assets/js/{29700941.c3d1e567.js => 29700941.5f59edbc.js} (93%) create mode 100644 assets/js/3486820e.d1814f44.js delete mode 100644 assets/js/3486820e.d8b3f210.js delete mode 100644 assets/js/3756debb.5c455cb4.js create mode 100644 assets/js/3756debb.b3e2bfd4.js create mode 100644 assets/js/39dc615d.963b2cb3.js delete mode 100644 assets/js/39dc615d.9d83c664.js rename assets/js/{935f2afb.26c58d2d.js => 935f2afb.1f082fc1.js} (91%) create mode 100644 assets/js/9c8fc7d9.cc6520c7.js delete mode 100644 assets/js/9c8fc7d9.ea006588.js create mode 100644 assets/js/a22447f8.acd25b84.js delete mode 100644 assets/js/a22447f8.c7171cc7.js delete mode 100644 assets/js/d3ba936f.34f21a1c.js create mode 100644 assets/js/d3ba936f.4f01a511.js rename assets/js/{runtime~main.017f4293.js => runtime~main.750ee231.js} (50%) diff --git a/404.html b/404.html index ec70471..54ebeed 100644 --- a/404.html +++ b/404.html @@ -4,13 +4,13 @@ Page Not Found | Astria Docs - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + \ No newline at end of file diff --git a/assets/js/1df93b7f.e4a55cbc.js b/assets/js/1df93b7f.1a5c27a7.js similarity index 92% rename from assets/js/1df93b7f.e4a55cbc.js rename to assets/js/1df93b7f.1a5c27a7.js index 35f4f43..e54c752 100644 --- a/assets/js/1df93b7f.e4a55cbc.js +++ b/assets/js/1df93b7f.1a5c27a7.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[237],{9217:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(7294);function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...l}=e;return a.createElement("svg",r({width:100,height:100,viewBox:"0 0 100 100",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"featureSvg_GfXr","aria-labelledby":n},l))}},8391:(e,t,n)=>{n.r(t),n.d(t,{default:()=>v});var a=n(7294),r=n(6010),l=n(9960),s=n(2263),i=n(7961),c=n(7462);const o={features:"features_t9lD",featureSvg:"featureSvg_GfXr"},u=[{title:"Decentralized by Default",Svg:n(9217).Z,description:a.createElement(a.Fragment,null,"Share a single decentralized network of sequencers that's simple and permissionless to join.")},{title:"Cross-Rollup Composability",Svg:n(9217).Z,description:a.createElement(a.Fragment,null,"Astria enables atomic transaction inclusion across rollups via its native transaction bundles.")},{title:"Maintain Sovereignty",Svg:n(9217).Z,description:a.createElement(a.Fragment,null,"Rollups own their execution and state. Swapping out the sequencing layer is as simple as updating your Rollup software.")}];function m(e){let{title:t,Svg:n,description:l}=e;return a.createElement("div",{className:(0,r.Z)("col col--4")},a.createElement("div",{className:"text--center"},a.createElement(n,{className:o.featureSvg,role:"img"})),a.createElement("div",{className:"text--center padding-horiz--md"},a.createElement("h3",null,t),a.createElement("p",null,l)))}function d(){return a.createElement("section",{className:o.features},a.createElement("div",{className:"container"},a.createElement("div",{className:"row"},u.map(((e,t)=>a.createElement(m,(0,c.Z)({key:t},e)))))))}const p={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function g(){const{siteConfig:e}=(0,s.Z)();return a.createElement("header",{className:(0,r.Z)("hero hero--primary",p.heroBanner)},a.createElement("div",{className:"container"},a.createElement("h1",{className:"hero__title"},e.title),a.createElement("p",{className:"hero__subtitle"},e.tagline),a.createElement("div",{className:p.buttons},a.createElement(l.Z,{className:"button button--secondary button--lg",to:"/docs/dusknet/overview/"},"Deploy a rollup on Dusknet"))))}function v(){const{siteConfig:e}=(0,s.Z)();return a.createElement(i.Z,{description:"Homepage for Astria Docs"},a.createElement(g,null),a.createElement("main",null,a.createElement(d,null)))}}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[237],{9217:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(7294);function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...l}=e;return a.createElement("svg",r({width:100,height:100,viewBox:"0 0 100 100",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"featureSvg_GfXr","aria-labelledby":n},l))}},8391:(e,t,n)=>{n.r(t),n.d(t,{default:()=>v});var a=n(7294),r=n(6010),l=n(9960),s=n(2263),i=n(7961),c=n(7462);const o={features:"features_t9lD",featureSvg:"featureSvg_GfXr"},u=[{title:"Decentralized by Default",Svg:n(9217).Z,description:a.createElement(a.Fragment,null,"Share a single decentralized network of sequencers that's simple and permissionless to join.")},{title:"Cross-Rollup Composability",Svg:n(9217).Z,description:a.createElement(a.Fragment,null,"Astria enables atomic transaction inclusion across rollups via its native transaction bundles.")},{title:"Maintain Sovereignty",Svg:n(9217).Z,description:a.createElement(a.Fragment,null,"Rollups own their execution and state. Swapping out the sequencing layer is as simple as updating your Rollup software.")}];function m(e){let{title:t,Svg:n,description:l}=e;return a.createElement("div",{className:(0,r.Z)("col col--4")},a.createElement("div",{className:"text--center"},a.createElement(n,{className:o.featureSvg,role:"img"})),a.createElement("div",{className:"text--center padding-horiz--md"},a.createElement("h3",null,t),a.createElement("p",null,l)))}function d(){return a.createElement("section",{className:o.features},a.createElement("div",{className:"container"},a.createElement("div",{className:"row"},u.map(((e,t)=>a.createElement(m,(0,c.Z)({key:t},e)))))))}const p={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function g(){const{siteConfig:e}=(0,s.Z)();return a.createElement("header",{className:(0,r.Z)("hero hero--primary",p.heroBanner)},a.createElement("div",{className:"container"},a.createElement("h1",{className:"hero__title"},e.title),a.createElement("p",{className:"hero__subtitle"},e.tagline),a.createElement("div",{className:p.buttons},a.createElement(l.Z,{className:"button button--secondary button--lg",to:"/docs/dusknet/overview/"},"Deploy a rollup on Dusknet"))))}function v(){return a.createElement(i.Z,{description:"Homepage for Astria Docs"},a.createElement(g,null),a.createElement("main",null,a.createElement(d,null)))}}}]); \ No newline at end of file diff --git a/assets/js/25349772.ca0be864.js b/assets/js/25349772.85007146.js similarity index 90% rename from assets/js/25349772.ca0be864.js rename to assets/js/25349772.85007146.js index c02258d..a6fd857 100644 --- a/assets/js/25349772.ca0be864.js +++ b/assets/js/25349772.85007146.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[28],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var o=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function a(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=o.createContext({}),c=function(e){var t=o.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},f=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(r),f=n,y=u["".concat(l,".").concat(f)]||u[f]||d[f]||i;return r?o.createElement(y,a(a({ref:t},p),{},{components:r})):o.createElement(y,a({ref:t},p))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,a=new Array(i);a[0]=f;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:n,a[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var o=r(7462),n=(r(7294),r(3905));const i={sidebar_position:3},a="Cross-Rollup Composability",s={unversionedId:"overview-of-astria/cross-rollup-composability",id:"overview-of-astria/cross-rollup-composability",title:"Cross-Rollup Composability",description:"To deploy your own rollup on the Astria Dusknet devnet, check out the",source:"@site/docs/overview-of-astria/3-cross-rollup-composability.md",sourceDirName:"overview-of-astria",slug:"/overview-of-astria/cross-rollup-composability",permalink:"/docs/overview-of-astria/cross-rollup-composability",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/overview-of-astria/3-cross-rollup-composability.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docsSidebar",previous:{title:"Why Decentralized Sequencers?",permalink:"/docs/overview-of-astria/why-decentralized-sequencers"},next:{title:"Maintain Sovereignty",permalink:"/docs/overview-of-astria/maintain-sovereignty"}},l={},c=[],p={toc:c},u="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,o.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"cross-rollup-composability"},"Cross-Rollup Composability"),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"To deploy your own rollup on the Astria Dusknet devnet, check out the\n",(0,n.kt)("a",{parentName:"p",href:"/docs/dusknet/overview/"},"instructions here"),"!")),(0,n.kt)("p",null,"Because Astria handles the transaction ordering for multiple rollups, it\u2019s able to provide guarantees that transactions are only included as part of an atomic bundle. This allows users to specify that a transaction on Rollup A can be included in a block if and only if a different transaction on Rollup B is also included in the same block. By enabling such conditional transaction inclusion, Astria unlocks exciting possibilities such as atomic cross-rollup arbitrage."))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[28],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var o=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function a(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=o.createContext({}),c=function(e){var t=o.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},f=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(r),f=n,y=u["".concat(l,".").concat(f)]||u[f]||d[f]||i;return r?o.createElement(y,a(a({ref:t},p),{},{components:r})):o.createElement(y,a({ref:t},p))}));function y(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,a=new Array(i);a[0]=f;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:n,a[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var o=r(7462),n=(r(7294),r(3905));const i={sidebar_position:3},a="Cross-Rollup Composability",s={unversionedId:"overview-of-astria/cross-rollup-composability",id:"overview-of-astria/cross-rollup-composability",title:"Cross-Rollup Composability",description:"To deploy your own rollup on the Astria Dusknet devnet, check out the",source:"@site/docs/overview-of-astria/3-cross-rollup-composability.md",sourceDirName:"overview-of-astria",slug:"/overview-of-astria/cross-rollup-composability",permalink:"/docs/overview-of-astria/cross-rollup-composability",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/overview-of-astria/3-cross-rollup-composability.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docsSidebar",previous:{title:"Why Decentralized Sequencers?",permalink:"/docs/overview-of-astria/why-decentralized-sequencers"},next:{title:"Maintain Sovereignty",permalink:"/docs/overview-of-astria/maintain-sovereignty"}},l={},c=[],p={toc:c},u="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,o.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"cross-rollup-composability"},"Cross-Rollup Composability"),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"To deploy your own rollup on the Astria Dusknet devnet, check out the\n",(0,n.kt)("a",{parentName:"p",href:"/docs/dusknet/overview/"},"instructions here"),"!")),(0,n.kt)("p",null,"Because Astria handles the transaction ordering for multiple rollups, it\u2019s able\nto provide guarantees that transactions are only included as part of an atomic\nbundle. This allows users to specify that a transaction on Rollup A can be\nincluded in a block if and only if a different transaction on Rollup B is also\nincluded in the same block. By enabling such conditional transaction inclusion,\nAstria unlocks exciting possibilities such as atomic cross-rollup arbitrage."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/28ec242d.5145909c.js b/assets/js/28ec242d.9260f867.js similarity index 50% rename from assets/js/28ec242d.5145909c.js rename to assets/js/28ec242d.9260f867.js index 62f5282..c1025a1 100644 --- a/assets/js/28ec242d.5145909c.js +++ b/assets/js/28ec242d.9260f867.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[241],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var i=n.createContext({}),c=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(i.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=c(r),h=o,m=p["".concat(i,".").concat(h)]||p[h]||d[h]||a;return r?n.createElement(m,l(l({ref:t},u),{},{components:r})):n.createElement(m,l({ref:t},u))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=h;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[p]="string"==typeof e?e:o,l[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=r(7462),o=(r(7294),r(3905));const a={sidebar_position:1},l="Dev-Cluster Overview",s={unversionedId:"dev-cluster/overview",id:"dev-cluster/overview",title:"Dev-Cluster Overview",description:"To deploy your own rollup on the Astria Dusknet devnet, check out the",source:"@site/docs/dev-cluster/1-overview.md",sourceDirName:"dev-cluster",slug:"/dev-cluster/overview",permalink:"/docs/dev-cluster/overview",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/dev-cluster/1-overview.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docsSidebar",previous:{title:"Data Availability Layer",permalink:"/docs/overview-of-astria/architecture/data-availability-layer"},next:{title:"Running a Local Rollup",permalink:"/docs/dev-cluster/deploy-a-local-rollup"}},i={},c=[{value:"Running the Dev Cluster Locally",id:"running-the-dev-cluster-locally",level:2},{value:"Installation",id:"installation",level:3},{value:"Deployment",id:"deployment",level:3}],u={toc:c},p="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"dev-cluster-overview"},"Dev-Cluster Overview"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"To deploy your own rollup on the Astria Dusknet devnet, check out the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/dusknet/overview/"},"instructions here"),"!")),(0,o.kt)("p",null,"Astria's Shared Sequencer Network allows multiple rollups to share a single decentralized network of sequencers that\u2019s permissionless to join. This shared sequencer network provides out-of-the-box censorship resistance, fast block confirmations, and atomic cross-rollup inclusion guarantees."),(0,o.kt)("p",null,"The Astria ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster"},"dev-cluster")," is the\ncollective stack of all of Astria's components packaged together using\nKubernetes. While we generally refer to Astria as the network of shared\nsequencers, we provide several other components to make it simpler to integrate\nwith the shared sequencer network. The dev-cluster is provided to make\ndeveloping and testing the Astria network, as well as integrations with Astria,\nas simple as possible."),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"The primary use of the dev-cluster is running the full stack completely locally.\nThere are elements of it that are used for running a local rollup that connects\nto the remote dev-net, but those will be ",(0,o.kt)("a",{parentName:"p",href:"/docs/dusknet/local-rollup-deployment/"},"discussed in another\nsection"),".")),(0,o.kt)("p",null,"See the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster"},"dev-cluster repo here.")),(0,o.kt)("h2",{id:"running-the-dev-cluster-locally"},"Running the Dev Cluster Locally"),(0,o.kt)("h3",{id:"installation"},"Installation"),(0,o.kt)("p",null,"You will need to pull both the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster"},"dev-cluster")," and ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/astria-web3"},"astria-web3")," repos from our github."),(0,o.kt)("p",null,"Install the necessary dependencies and tools listed for each repo:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"docker - ",(0,o.kt)("a",{parentName:"li",href:"https://docs.docker.com/get-docker/"},"https://docs.docker.com/get-docker/")),(0,o.kt)("li",{parentName:"ul"},"kubectl - ",(0,o.kt)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/"},"https://kubernetes.io/docs/tasks/tools/")),(0,o.kt)("li",{parentName:"ul"},"helm - ",(0,o.kt)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"https://helm.sh/docs/intro/install/")),(0,o.kt)("li",{parentName:"ul"},"kind - ",(0,o.kt)("a",{parentName:"li",href:"https://kind.sigs.k8s.io/docs/user/quick-start/#installation"},"https://kind.sigs.k8s.io/docs/user/quick-start/#installation")),(0,o.kt)("li",{parentName:"ul"},"just - ",(0,o.kt)("a",{parentName:"li",href:"https://just.systems/man/en/chapter_4.html"},"https://just.systems/man/en/chapter_4.html"))),(0,o.kt)("p",null,"For contract deployment:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Forge (part of Foundry) - ",(0,o.kt)("a",{parentName:"li",href:"https://book.getfoundry.sh/getting-started/installation"},"https://book.getfoundry.sh/getting-started/installation"))),(0,o.kt)("h3",{id:"deployment"},"Deployment"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"Make sure that Docker is running before deploying with ",(0,o.kt)("inlineCode",{parentName:"p"},"just"),".")),(0,o.kt)("p",null,"To deploy the Astria Sequencer and a local DA, open a terminal in the dev-cluster directory and run the commands: "),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"# Deploys ingress + Sequencer + local DA\njust deploy-astria-local\n")),(0,o.kt)("p",null,"This may take a minute or two if this the first time you are deploying as quite\na few containers need to be downloaded. Once the command completes, all elements\nof the dev-cluster will be up and running. This does not run a rollup, block\nexplorer, or faucet. "),(0,o.kt)("p",null,"You can now deploy a rollup."))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[241],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var i=n.createContext({}),c=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(i.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=c(r),h=o,m=p["".concat(i,".").concat(h)]||p[h]||d[h]||a;return r?n.createElement(m,l(l({ref:t},u),{},{components:r})):n.createElement(m,l({ref:t},u))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=h;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[p]="string"==typeof e?e:o,l[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=r(7462),o=(r(7294),r(3905));const a={sidebar_position:1},l="Dev-Cluster Overview",s={unversionedId:"dev-cluster/overview",id:"dev-cluster/overview",title:"Dev-Cluster Overview",description:"To deploy your own rollup on the Astria Dusknet devnet, check out the",source:"@site/docs/dev-cluster/1-overview.md",sourceDirName:"dev-cluster",slug:"/dev-cluster/overview",permalink:"/docs/dev-cluster/overview",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/dev-cluster/1-overview.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docsSidebar",previous:{title:"Data Availability Layer",permalink:"/docs/overview-of-astria/architecture/data-availability-layer"},next:{title:"Running a Local Rollup",permalink:"/docs/dev-cluster/deploy-a-local-rollup"}},i={},c=[{value:"Running the Dev Cluster Locally",id:"running-the-dev-cluster-locally",level:2},{value:"Installation",id:"installation",level:3},{value:"Deployment",id:"deployment",level:3}],u={toc:c},p="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"dev-cluster-overview"},"Dev-Cluster Overview"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"To deploy your own rollup on the Astria Dusknet devnet, check out the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/dusknet/overview/"},"instructions here"),"!")),(0,o.kt)("p",null,"Astria's Shared Sequencer Network allows multiple rollups to share a single\ndecentralized network of sequencers that\u2019s permissionless to join. This shared\nsequencer network provides out-of-the-box censorship resistance, fast block\nconfirmations, and atomic cross-rollup inclusion guarantees."),(0,o.kt)("p",null,"The Astria ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster"},"dev-cluster")," is the\ncollective stack of all of Astria's components packaged together using\nKubernetes. While we generally refer to Astria as the network of shared\nsequencers, we provide several other components to make it simpler to integrate\nwith the shared sequencer network. The dev-cluster is provided to make\ndeveloping and testing the Astria network, as well as integrations with Astria,\nas simple as possible."),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"The primary use of the dev-cluster is running the full stack completely locally.\nThere are elements of it that are used for running a local rollup that connects\nto the remote dev-net, but those will be ",(0,o.kt)("a",{parentName:"p",href:"/docs/dusknet/local-rollup-deployment/"},"discussed in another\nsection"),".")),(0,o.kt)("p",null,"See the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster"},"dev-cluster repo here.")),(0,o.kt)("h2",{id:"running-the-dev-cluster-locally"},"Running the Dev Cluster Locally"),(0,o.kt)("h3",{id:"installation"},"Installation"),(0,o.kt)("p",null,"You will need to pull both the\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster"},"dev-cluster")," and\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/astria-web3"},"astria-web3")," repos from our github."),(0,o.kt)("p",null,"Install the necessary dependencies and tools listed for each repo:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"docker - ",(0,o.kt)("a",{parentName:"li",href:"https://docs.docker.com/get-docker/"},"https://docs.docker.com/get-docker/")),(0,o.kt)("li",{parentName:"ul"},"kubectl - ",(0,o.kt)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/"},"https://kubernetes.io/docs/tasks/tools/")),(0,o.kt)("li",{parentName:"ul"},"helm - ",(0,o.kt)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"https://helm.sh/docs/intro/install/")),(0,o.kt)("li",{parentName:"ul"},"kind - ",(0,o.kt)("a",{parentName:"li",href:"https://kind.sigs.k8s.io/docs/user/quick-start/#installation"},"https://kind.sigs.k8s.io/docs/user/quick-start/#installation")),(0,o.kt)("li",{parentName:"ul"},"just - ",(0,o.kt)("a",{parentName:"li",href:"https://just.systems/man/en/chapter_4.html"},"https://just.systems/man/en/chapter_4.html"))),(0,o.kt)("p",null,"For contract deployment:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Forge (part of Foundry) - ",(0,o.kt)("a",{parentName:"li",href:"https://book.getfoundry.sh/getting-started/installation"},"https://book.getfoundry.sh/getting-started/installation"))),(0,o.kt)("h3",{id:"deployment"},"Deployment"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"Make sure that Docker is running before deploying with ",(0,o.kt)("inlineCode",{parentName:"p"},"just"),".")),(0,o.kt)("p",null,"To deploy the Astria Sequencer and a local DA, open a terminal in the\ndev-cluster directory and run the commands:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"# Deploys ingress + Sequencer + local DA\njust deploy-astria-local\n")),(0,o.kt)("p",null,"This may take a minute or two if this the first time you are deploying as quite\na few containers need to be downloaded. Once the command completes, all elements\nof the dev-cluster will be up and running. This does not run a rollup, block\nexplorer, or faucet."),(0,o.kt)("p",null,"You can now deploy a rollup."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/29700941.c3d1e567.js b/assets/js/29700941.5f59edbc.js similarity index 93% rename from assets/js/29700941.c3d1e567.js rename to assets/js/29700941.5f59edbc.js index 44cb42b..36e5ecd 100644 --- a/assets/js/29700941.c3d1e567.js +++ b/assets/js/29700941.5f59edbc.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[439],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var i=n.createContext({}),c=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(i.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=c(r),h=a,m=p["".concat(i,".").concat(h)]||p[h]||d[h]||o;return r?n.createElement(m,l(l({ref:t},u),{},{components:r})):n.createElement(m,l({ref:t},u))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=h;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[p]="string"==typeof e?e:a,l[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var n=r(7462),a=(r(7294),r(3905));const o={sidebar_position:1},l="Overview",s={unversionedId:"dusknet/overview",id:"dusknet/overview",title:"Overview",description:"After running the Astria stack locally, the next step is to run a rollup against",source:"@site/docs/dusknet/1-overview.md",sourceDirName:"dusknet",slug:"/dusknet/overview",permalink:"/docs/dusknet/overview",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/dusknet/1-overview.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docsSidebar",previous:{title:"Shutting Down the Cluster",permalink:"/docs/dev-cluster/shutdown"},next:{title:"Local Rollup Deployment",permalink:"/docs/dusknet/local-rollup-deployment"}},i={},c=[{value:"Local Dependencies",id:"local-dependencies",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"overview"},"Overview"),(0,a.kt)("p",null,"After running the Astria stack locally, the next step is to run a rollup against\nthe remote Astria network."),(0,a.kt)("p",null,"The primary difference between running a local rollup and one that targets the\nremote devnet, is the configuration of the rollup and creating an account for\nthe Sequencer."),(0,a.kt)("h2",{id:"local-dependencies"},"Local Dependencies"),(0,a.kt)("p",null,"Clone the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster/tree/main"},"dev-cluster")," and the main\n",(0,a.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/astria"},"astria repo")," repo:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:astriaorg/astria.git\ngit clone https://github.com/astriaorg/dev-cluster\n")),(0,a.kt)("p",null,"And install the following tools:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Foundry Cast and Forge tools - ",(0,a.kt)("a",{parentName:"li",href:"https://book.getfoundry.sh/getting-started/installation"},"https://book.getfoundry.sh/getting-started/installation")),(0,a.kt)("li",{parentName:"ul"},"docker - ",(0,a.kt)("a",{parentName:"li",href:"https://docs.docker.com/get-docker/"},"https://docs.docker.com/get-docker/")),(0,a.kt)("li",{parentName:"ul"},"kubectl - ",(0,a.kt)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/"},"https://kubernetes.io/docs/tasks/tools/")),(0,a.kt)("li",{parentName:"ul"},"helm - ",(0,a.kt)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"https://helm.sh/docs/intro/install/")),(0,a.kt)("li",{parentName:"ul"},"kind - ",(0,a.kt)("a",{parentName:"li",href:"https://kind.sigs.k8s.io/docs/user/quick-start/#installation"},"https://kind.sigs.k8s.io/docs/user/quick-start/#installation")),(0,a.kt)("li",{parentName:"ul"},"just - ",(0,a.kt)("a",{parentName:"li",href:"https://just.systems/man/en/chapter_4.html"},"https://just.systems/man/en/chapter_4.html"))),(0,a.kt)("p",null,"Many of these dependencies are also required for running the local dev-cluster\nif you have previously done that."),(0,a.kt)("p",null,"For reference, the latest component releases that the devnet cluster is running are the\nfollowing:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/astriaorg/astria/releases/tag/v0.7.0--conductor"},"conductor v0.7.0")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/astriaorg/astria/releases/tag/v0.2.2--composer"},"composer v0.2.2")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/astriaorg/astria/releases/tag/v0.5.1--sequencer-relayer"},"sequencer-relayer v0.5.1")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/astriaorg/astria/releases/tag/v0.4.1--sequencer"},"sequencer\nv0.4.1"))),(0,a.kt)("p",null,"You do not need to download these independently, they are already within the\ndev-cluster repo."),(0,a.kt)("p",null,"Once all of the dependencies have been installed, you can move on to running the\nrollup."))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[439],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var i=n.createContext({}),c=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(i.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=c(r),h=a,m=p["".concat(i,".").concat(h)]||p[h]||d[h]||o;return r?n.createElement(m,l(l({ref:t},u),{},{components:r})):n.createElement(m,l({ref:t},u))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=h;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[p]="string"==typeof e?e:a,l[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var n=r(7462),a=(r(7294),r(3905));const o={sidebar_position:1},l="Overview",s={unversionedId:"dusknet/overview",id:"dusknet/overview",title:"Overview",description:"After running the Astria stack locally, the next step is to run a rollup against",source:"@site/docs/dusknet/1-overview.md",sourceDirName:"dusknet",slug:"/dusknet/overview",permalink:"/docs/dusknet/overview",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/dusknet/1-overview.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docsSidebar",previous:{title:"Shutting Down the Cluster",permalink:"/docs/dev-cluster/shutdown"},next:{title:"Local Rollup Deployment",permalink:"/docs/dusknet/local-rollup-deployment"}},i={},c=[{value:"Local Dependencies",id:"local-dependencies",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"overview"},"Overview"),(0,a.kt)("p",null,"After running the Astria stack locally, the next step is to run a rollup against\nthe remote Astria network."),(0,a.kt)("p",null,"The primary difference between running a local rollup and one that targets the\nremote devnet, is the configuration of the rollup and creating an account for\nthe Sequencer."),(0,a.kt)("h2",{id:"local-dependencies"},"Local Dependencies"),(0,a.kt)("p",null,"Clone the ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster/tree/main"},"dev-cluster")," and\nthe main ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/astria"},"astria repo")," repo:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:astriaorg/astria.git\ngit clone https://github.com/astriaorg/dev-cluster\n")),(0,a.kt)("p",null,"And install the following tools:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Foundry Cast and Forge tools - ",(0,a.kt)("a",{parentName:"li",href:"https://book.getfoundry.sh/getting-started/installation"},"https://book.getfoundry.sh/getting-started/installation")),(0,a.kt)("li",{parentName:"ul"},"docker - ",(0,a.kt)("a",{parentName:"li",href:"https://docs.docker.com/get-docker/"},"https://docs.docker.com/get-docker/")),(0,a.kt)("li",{parentName:"ul"},"kubectl - ",(0,a.kt)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/"},"https://kubernetes.io/docs/tasks/tools/")),(0,a.kt)("li",{parentName:"ul"},"helm - ",(0,a.kt)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"https://helm.sh/docs/intro/install/")),(0,a.kt)("li",{parentName:"ul"},"kind - ",(0,a.kt)("a",{parentName:"li",href:"https://kind.sigs.k8s.io/docs/user/quick-start/#installation"},"https://kind.sigs.k8s.io/docs/user/quick-start/#installation")),(0,a.kt)("li",{parentName:"ul"},"just - ",(0,a.kt)("a",{parentName:"li",href:"https://just.systems/man/en/chapter_4.html"},"https://just.systems/man/en/chapter_4.html"))),(0,a.kt)("p",null,"Many of these dependencies are also required for running the local dev-cluster\nif you have previously done that."),(0,a.kt)("p",null,"For reference, the latest component releases that the devnet cluster is running\nare the following:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/astriaorg/astria/releases/tag/v0.7.0--conductor"},"conductor v0.7.0")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/astriaorg/astria/releases/tag/v0.2.2--composer"},"composer v0.2.2")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/astriaorg/astria/releases/tag/v0.5.1--sequencer-relayer"},"sequencer-relayer v0.5.1")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://github.com/astriaorg/astria/releases/tag/v0.4.1--sequencer"},"sequencer v0.4.1"))),(0,a.kt)("p",null,"You do not need to download these independently, they are already within the\ndev-cluster repo."),(0,a.kt)("p",null,"Once all of the dependencies have been installed, you can move on to running the\nrollup."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/3486820e.d1814f44.js b/assets/js/3486820e.d1814f44.js new file mode 100644 index 0000000..91045aa --- /dev/null +++ b/assets/js/3486820e.d1814f44.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[520],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),u=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=u(n),k=r,m=p["".concat(s,".").concat(k)]||p[k]||d[k]||l;return n?a.createElement(m,o(o({ref:t},c),{},{components:n})):a.createElement(m,o({ref:t},c))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,o=new Array(l);o[0]=k;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:r,o[1]=i;for(var u=2;u{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>l,metadata:()=>i,toc:()=>u});var a=n(7462),r=(n(7294),n(3905));const l={sidebar_position:4},o="Cloud Rollup Deployment",i={unversionedId:"dusknet/cloud-rollup-deployment",id:"dusknet/cloud-rollup-deployment",title:"Cloud Rollup Deployment",description:"The following assumes you are using [Digital Ocean Kubernetes",source:"@site/docs/dusknet/4-cloud-rollup-deployment.md",sourceDirName:"dusknet",slug:"/dusknet/cloud-rollup-deployment",permalink:"/docs/dusknet/cloud-rollup-deployment",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/dusknet/4-cloud-rollup-deployment.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"docsSidebar",previous:{title:"Local Rollup Deployment",permalink:"/docs/dusknet/local-rollup-deployment"}},s={},u=[{value:"Setup Digital Ocean Ingress",id:"setup-digital-ocean-ingress",level:2},{value:"Configure Your Own Domain",id:"configure-your-own-domain",level:2},{value:"Digital Ocean Loadbalancer",id:"digital-ocean-loadbalancer",level:2},{value:"Set up an A Record for your Load Balancer",id:"set-up-an-a-record-for-your-load-balancer",level:2},{value:"Endpoints",id:"endpoints",level:2},{value:"Update the helm Chart",id:"update-the-helm-chart",level:2},{value:"Creating your own Genesis Account",id:"creating-your-own-genesis-account",level:2},{value:"Get and Build the astria-cli",id:"get-and-build-the-astria-cli",level:2},{value:"Using the astria-cli",id:"using-the-astria-cli",level:2},{value:"Get Current Sequencer Block Height",id:"get-current-sequencer-block-height",level:3},{value:"Create Rollup Config",id:"create-rollup-config",level:2},{value:"Create new sequencer account",id:"create-new-sequencer-account",level:2},{value:"Use locally modified chart",id:"use-locally-modified-chart",level:2},{value:"Deploy the Rollup Node",id:"deploy-the-rollup-node",level:2},{value:"Default to astria-dev-cluster namespace",id:"default-to-astria-dev-cluster-namespace",level:2},{value:"Watch for pod startup",id:"watch-for-pod-startup",level:2},{value:"Check Block Retrieval on the Conductor",id:"check-block-retrieval-on-the-conductor",level:2},{value:"Observe your Deployment",id:"observe-your-deployment",level:2},{value:"Debug Ingress",id:"debug-ingress",level:2},{value:"Use cast to Interact with your Rollup",id:"use-cast-to-interact-with-your-rollup",level:2},{value:"Fund you Sequencer Account",id:"fund-you-sequencer-account",level:2}],c={toc:u},p="wrapper";function d(e){let{components:t,...l}=e;return(0,r.kt)(p,(0,a.Z)({},c,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"cloud-rollup-deployment"},"Cloud Rollup Deployment"),(0,r.kt)("p",null,"The following assumes you are using ",(0,r.kt)("a",{parentName:"p",href:"https://www.digitalocean.com/products/kubernetes"},"Digital Ocean Kubernetes\n(DOKS)"),"."),(0,r.kt)("p",null,"We recommend using Digital Ocean's Kubernetes ",(0,r.kt)("a",{parentName:"p",href:"https://docs.digitalocean.com/products/kubernetes/getting-started/quickstart/"},"Quick Start\nGuide"),"."),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"You must use at least a 2 node cluster.")),(0,r.kt)("h2",{id:"setup-digital-ocean-ingress"},"Setup Digital Ocean Ingress"),(0,r.kt)("p",null,"We use the Ingress NGINX Controller for consistency across deployment environments:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://kubernetes.github.io/ingress-nginx/deploy/#digital-ocean"},"https://kubernetes.github.io/ingress-nginx/deploy/#digital-ocean"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/do/deploy.yaml\n")),(0,r.kt)("h2",{id:"configure-your-own-domain"},"Configure Your Own Domain"),(0,r.kt)("admonition",{title:"You must configure a DNS record because our ingress configuration uses",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"name based virtual routing:\n",(0,r.kt)("a",{parentName:"p",href:"https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting."},"https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting."))),(0,r.kt)("p",null,"Follow the instructions here:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://docs.digitalocean.com/products/networking/dns/getting-started/dns-registrars/"},"https://docs.digitalocean.com/products/networking/dns/getting-started/dns-registrars/")),(0,r.kt)("li",{parentName:"ul"},"This is where you will set ",(0,r.kt)("inlineCode",{parentName:"li"},""))),(0,r.kt)("h2",{id:"digital-ocean-loadbalancer"},"Digital Ocean Loadbalancer"),(0,r.kt)("p",null,"Look for a new loadbalancer being created in the Digital Ocean console:\n",(0,r.kt)("a",{parentName:"p",href:"https://cloud.digitalocean.com/networking/load_balancers"},"https://cloud.digitalocean.com/networking/load_balancers")),(0,r.kt)("p",null,"You can also check that your Digital Ocean load balancer was created using the\nfollowing command:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl get svc -n ingress-nginx\n")),(0,r.kt)("p",null,"You should see something like this:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\ningress-nginx-controller LoadBalancer 10.245.63.28 161.35.240.50 80:32656/TCP,443:30158/TCP 44h\ningress-nginx-controller-admission ClusterIP 10.245.106.99 443/TCP 44h\n")),(0,r.kt)("h2",{id:"set-up-an-a-record-for-your-load-balancer"},"Set up an ",(0,r.kt)("inlineCode",{parentName:"h2"},"A")," Record for your Load Balancer"),(0,r.kt)("p",null,"Follow the steps here to set up an ",(0,r.kt)("inlineCode",{parentName:"p"},"A")," record for DNS:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://docs.digitalocean.com/products/networking/dns/how-to/manage-records/#a-records"},"https://docs.digitalocean.com/products/networking/dns/how-to/manage-records/#a-records"))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"When configuring the ",(0,r.kt)("inlineCode",{parentName:"p"},"A")," record for DNS, the ",(0,r.kt)("inlineCode",{parentName:"p"},"directs to")," value should specify\nthe ",(0,r.kt)("inlineCode",{parentName:"p"},"loadbalancer")," which was created by the ",(0,r.kt)("inlineCode",{parentName:"p"},"nginx-ingress-controller"),".")),(0,r.kt)("h2",{id:"endpoints"},"Endpoints"),(0,r.kt)("p",null,"Endpoints for the remote cluster are the following:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"NAME"),(0,r.kt)("th",{parentName:"tr",align:null},"HOSTS"),(0,r.kt)("th",{parentName:"tr",align:null},"ADDRESS"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"EVM JSON RPC"),(0,r.kt)("td",{parentName:"tr",align:null},"rpc.evm.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.160.214.22")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"EVM Block Explorer"),(0,r.kt)("td",{parentName:"tr",align:null},"explorer.evm.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.111.167.16")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"EVM Faucet"),(0,r.kt)("td",{parentName:"tr",align:null},"faucet.evm.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"130.211.4.120")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Sequencer RPC"),(0,r.kt)("td",{parentName:"tr",align:null},"rpc.sequencer.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.111.73.187")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Sequencer Faucet"),(0,r.kt)("td",{parentName:"tr",align:null},"faucet.sequencer.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.36.8.102")))),(0,r.kt)("h2",{id:"update-the-helm-chart"},"Update the ",(0,r.kt)("inlineCode",{parentName:"h2"},"helm")," Chart"),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"Deploying a rollup to a cloud provider requires manual changes to the ",(0,r.kt)("inlineCode",{parentName:"p"},"helm"),"\ncharts. Because the default ",(0,r.kt)("inlineCode",{parentName:"p"},"localdev.me")," hostname will not work on a cloud\nprovider.")),(0,r.kt)("p",null,"Pull the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster"},"Astria dev-cluster repo"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:astriaorg/dev-cluster.git\ncd dev-cluster\n")),(0,r.kt)("p",null,"Within the dev-cluster repo, update the ingress template\n",(0,r.kt)("inlineCode",{parentName:"p"},"chart/rollup/templates/ingress.yaml")," so that each hostname ends in\n",(0,r.kt)("inlineCode",{parentName:"p"},"")," instead of ",(0,r.kt)("inlineCode",{parentName:"p"},"localdev.me")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"...\n- host: executor.{{ .Values.config.rollup.name }}.\n...\n- host: ws-executor.{{ .Values.config.rollup.name }}.\n...\n- host: faucet.{{ .Values.config.rollup.name }}.\n...\n- host: blockscout.{{ .Values.config.rollup.name }}.\n...\n")),(0,r.kt)("p",null,"Add an IngressClass so that the ",(0,r.kt)("inlineCode",{parentName:"p"},"metadata")," section in the same file looks like:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"metadata:\n name: {{ .Values.config.rollup.name }}-ingress\n namespace: {{ .Values.namespace }}\n annotations:\n kubernetes.io/ingress.class: nginx\n")),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"You can see an example of these changes in ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster/pull/119/files"},"this PR here"),".")),(0,r.kt)("h2",{id:"creating-your-own-genesis-account"},"Creating your own Genesis Account"),(0,r.kt)("p",null,"You can add genesis account(s) to your rollup during configuration."),(0,r.kt)("p",null,"You can create an account using"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast w new\n")),(0,r.kt)("p",null,"to create a new account:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"Successfully created new keypair.\nAddress: 0xfFe9...5f8b # \nPrivate key: 0x332e...a8fb # \n")),(0,r.kt)("p",null,"You can then ",(0,r.kt)("inlineCode",{parentName:"p"},"export")," the genesis accounts like so:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_GENESIS_ACCOUNTS=:100000000000000000000\n")),(0,r.kt)("p",null,"Set ",(0,r.kt)("inlineCode",{parentName:"p"},"")," to the address printed out from the new command, and\n",(0,r.kt)("inlineCode",{parentName:"p"},"export")," the private key to the env vars using:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_FAUCET_PRIV_KEY=\n")),(0,r.kt)("p",null,"Exporting the genesis account(s) is also shown in the export block in the next section."),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"NEVER")," use a private key you use on a live network.")),(0,r.kt)("h2",{id:"get-and-build-the-astria-cli"},"Get and Build the ",(0,r.kt)("inlineCode",{parentName:"h2"},"astria-cli")),(0,r.kt)("p",null,"Pull the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/astria"},"Astria repo"),"."),(0,r.kt)("p",null,"Build the ",(0,r.kt)("inlineCode",{parentName:"p"},"astria-cli")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:astriaorg/astria.git\ncd astria\njust install-cli\n")),(0,r.kt)("p",null,"Keep track of this block height as it will be used for making the rollup config\nlater on. You will use this printed height in place of\n",(0,r.kt)("inlineCode",{parentName:"p"},"")," in the steps below."),(0,r.kt)("h2",{id:"using-the-astria-cli"},"Using the ",(0,r.kt)("inlineCode",{parentName:"h2"},"astria-cli")),(0,r.kt)("h3",{id:"get-current-sequencer-block-height"},"Get Current Sequencer Block Height"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"astria-cli sequencer blockheight get \\\n --sequencer-url https://rpc.sequencer.dusk-1.devnet.astria.org/\n")),(0,r.kt)("p",null,"Save the returned value for later. You will replace the\n",(0,r.kt)("inlineCode",{parentName:"p"},"")," tag in the following sections with this\nvalue."),(0,r.kt)("p",null,"Replace the tags in the commands and env vars below, as follows:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Var Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Var Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"String"),(0,r.kt)("td",{parentName:"tr",align:null},"The name of your rollup")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"u64"),(0,r.kt)("td",{parentName:"tr",align:null},"The id of your network")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"u64"),(0,r.kt)("td",{parentName:"tr",align:null},"The height of the sequencer (found above)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"[u8; 40]"),(0,r.kt)("td",{parentName:"tr",align:null},"A wallet address")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"u64"),(0,r.kt)("td",{parentName:"tr",align:null},"A balance. It is useful to make this a large value.")))),(0,r.kt)("h2",{id:"create-rollup-config"},"Create Rollup Config"),(0,r.kt)("p",null,"You can use environment variables to set the configuration for the rollup\nconfig creation. Replace all the ",(0,r.kt)("inlineCode",{parentName:"p"},"<>")," tags with their corresponding values."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_USE_TTY=true\nexport ROLLUP_LOG_LEVEL=DEBUG\nexport ROLLUP_NAME=\nexport ROLLUP_NETWORK_ID=\nexport ROLLUP_SKIP_EMPTY_BLOCKS=false\nexport ROLLUP_GENESIS_ACCOUNTS=:\nexport ROLLUP_SEQUENCER_INITIAL_BLOCK_HEIGHT=\nexport ROLLUP_SEQUENCER_WEBSOCKET=wss://rpc.sequencer.dusk-1.devnet.astria.org/websocket\nexport ROLLUP_SEQUENCER_RPC=https://rpc.sequencer.dusk-1.devnet.astria.org\n")),(0,r.kt)("p",null,"Then just run the config create command:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"astria-cli rollup config create\n")),(0,r.kt)("p",null,"You can then run:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"cat -rollup-conf.yaml\n")),(0,r.kt)("p",null,"to print out the config file contents to double check everything:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"config:\n useTTY: true\n logLevel: DEBUG\n rollup:\n name: \n chainId: # derived from rollup name\n networkId: \n skipEmptyBlocks: true\n genesisAccounts: \n - address: 0x\n balance: ''\n sequencer:\n initialBlockHeight: \n websocket: ws://rpc.sequencer.dusk-1.devnet.astria.org/websocket\n rpc: http://rpc.sequencer.dusk-1.devnet.astria.org\n celestia:\n fullNodeUrl: http://celestia-service:26658\n")),(0,r.kt)("p",null,"Export this file to the env vars as follows:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_CONF_FILE=-rollup-conf.yaml\n")),(0,r.kt)("h2",{id:"create-new-sequencer-account"},"Create new sequencer account"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"astria-cli sequencer account create\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'Create Sequencer Account\n\nPrivate Key: "5562...1622" # \nPublic Key: "ec20...f613" # \nAddress: "8a2f...5f68"\n')),(0,r.kt)("p",null,"Keep track of the ",(0,r.kt)("inlineCode",{parentName:"p"},"")," as it will be used with the\nFaucet later on for funding your sequencer account."),(0,r.kt)("p",null,"Export your sequencer private key as an environment variable."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export SEQUENCER_PRIV_KEY=9c78...710d\n")),(0,r.kt)("h2",{id:"use-locally-modified-chart"},"Use locally modified chart"),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"You ",(0,r.kt)("strong",{parentName:"p"},"must")," have modified your local ",(0,r.kt)("inlineCode",{parentName:"p"},"helm")," chart to use your own domain name\nas described in ",(0,r.kt)("a",{parentName:"p",href:"#update-the-helm-chart"},"this section here"),".")),(0,r.kt)("p",null,"Because you needed to modify the host names inside your ingress template you\nmust deploy your rollup using your local chart:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'export ROLLUP_CHART_PATH="/your_path_to/dev-cluster/charts/rollup"\n')),(0,r.kt)("h2",{id:"deploy-the-rollup-node"},"Deploy the Rollup Node"),(0,r.kt)("p",null,"Use the ",(0,r.kt)("inlineCode",{parentName:"p"},"astria-cli")," to deploy the node."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"astria-cli rollup deployment create \\\n --config $ROLLUP_CONF_FILE \\\n --faucet-private-key $ROLLUP_FAUCET_PRIV_KEY \\\n --sequencer-private-key $SEQUENCER_PRIV_KEY\n")),(0,r.kt)("h2",{id:"default-to-astria-dev-cluster-namespace"},"Default to ",(0,r.kt)("inlineCode",{parentName:"h2"},"astria-dev-cluster")," namespace"),(0,r.kt)("p",null,"Set ",(0,r.kt)("inlineCode",{parentName:"p"},"kubectl")," to the correct namespace."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl config set-context --current --namespace=astria-dev-cluster\n")),(0,r.kt)("h2",{id:"watch-for-pod-startup"},"Watch for pod startup"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl get pods -w\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"NAME READY STATUS RESTARTS AGE\n-blockscout-647745c66d-vz4ks 6/6 Running 1 (56s ago) 72s\n-faucet-68667bd895-pwqmz 1/1 Running 0 72s\n-geth-755cb8dd97-k5xp8 3/3 Running 0 72s\n")),(0,r.kt)("h2",{id:"check-block-retrieval-on-the-conductor"},"Check Block Retrieval on the Conductor"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export GETH_POD_NAME=-geth-755cb8dd97-k5x\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl logs $GETH_POD_NAME -c conductor\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'2023-10-16T20:49:16.858852Z INFO run_until_stopped: astria_conductor::executor:\n executed sequencer block sequencer_block_hash=Hash::Sha256\n (93C233F2A2A109FF6CC3162A98916BECAE6D8EC43520C995E82B6D1F2B2742EF)\n sequencer_block_height=423755\n execution_block_hash="2d8b2219a30ea4cc409347320f377de937b9ca2425f670c4f913724a2d53b2aa"\n2023-10-16T20:49:18.922694Z INFO run_until_stopped: astria_conductor::executor:\n executing block with given parent block height=423756\n parent_block_hash="2d8b2219a30ea4cc409347320f377de937b9ca2425f670c4f913724a2d53b2aa"\n2023-10-16T20:49:18.926380Z INFO run_until_stopped: astria_conductor::executor:\n executed sequencer block sequencer_block_hash=Hash::Sha256\n (EAD8701CB15D9B487DC7400ABC2FCB7A4F7E09E09F39D4D6B8FA97B74B5EC50F)\n sequencer_block_height=423756\n execution_block_hash="de20c29febc808b7a2ded8513eb23be116fe441745ccf62d1366b4b9bb160d04"\n')),(0,r.kt)("h2",{id:"observe-your-deployment"},"Observe your Deployment"),(0,r.kt)("p",null,"Your rollups utility endpoints are as follows:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Utility"),(0,r.kt)("th",{parentName:"tr",align:null},"URL"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Block Explorer"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"http://blockscout../"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Faucet"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"http://faucet../"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"RPC"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"http://executor../"))))),(0,r.kt)("p",null,"Open the URLs in your browser to view your running rollup."),(0,r.kt)("h2",{id:"debug-ingress"},"Debug Ingress"),(0,r.kt)("p",null,"If you would like to view the ingress logs you can use the following:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl get po -n ingress-nginx\n# get the name of one of the pods\nexport INGRESS_POD_1=ingress-nginx-controller-6d6559598-ll8gv\n# view the logs\nkubectl logs $INGRESS_POD_1 -n ingress-nginx\n")),(0,r.kt)("h2",{id:"use-cast-to-interact-with-your-rollup"},"Use ",(0,r.kt)("inlineCode",{parentName:"h2"},"cast")," to Interact with your Rollup"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ETH_RPC_URL=http://executor../\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast block 0\n")),(0,r.kt)("p",null,"Use an address of your choice."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export REC_ADDR=\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast balance $REC_ADDR\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast send $REC_ADDR --value 10000000000000000000 --private-key $ROLLUP_FAUCET_PRIV_KEY\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast balance $REC_ADDR\n")),(0,r.kt)("h2",{id:"fund-you-sequencer-account"},"Fund you Sequencer Account"),(0,r.kt)("p",null,"Using your sequencer pub key you created in the ",(0,r.kt)("a",{parentName:"p",href:"#create-new-sequencer-account"},"Create a New Sequencer\nAccount"),", copy and past the\n",(0,r.kt)("inlineCode",{parentName:"p"},"")," into the input on the faucet page, and mint funds\nto your account:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Sequencer Faucet",src:n(9596).Z,width:"1490",height:"794"})))}d.isMDXComponent=!0},9596:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/sequencer-faucet-63615ccc21b8c454150825d608e5dea6.png"}}]); \ No newline at end of file diff --git a/assets/js/3486820e.d8b3f210.js b/assets/js/3486820e.d8b3f210.js deleted file mode 100644 index a94ebd5..0000000 --- a/assets/js/3486820e.d8b3f210.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[520],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var u=a.createContext({}),s=function(e){var t=a.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=s(e.components);return a.createElement(u.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,u=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),p=s(n),k=r,m=p["".concat(u,".").concat(k)]||p[k]||d[k]||l;return n?a.createElement(m,o(o({ref:t},c),{},{components:n})):a.createElement(m,o({ref:t},c))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,o=new Array(l);o[0]=k;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[p]="string"==typeof e?e:r,o[1]=i;for(var s=2;s{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>l,metadata:()=>i,toc:()=>s});var a=n(7462),r=(n(7294),n(3905));const l={sidebar_position:4},o="Cloud Rollup Deployment",i={unversionedId:"dusknet/cloud-rollup-deployment",id:"dusknet/cloud-rollup-deployment",title:"Cloud Rollup Deployment",description:"The following assumes you are using [Digital Ocean Kubernetes",source:"@site/docs/dusknet/4-cloud-rollup-deployment.md",sourceDirName:"dusknet",slug:"/dusknet/cloud-rollup-deployment",permalink:"/docs/dusknet/cloud-rollup-deployment",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/dusknet/4-cloud-rollup-deployment.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"docsSidebar",previous:{title:"Local Rollup Deployment",permalink:"/docs/dusknet/local-rollup-deployment"}},u={},s=[{value:"Setup Digital Ocean Ingress",id:"setup-digital-ocean-ingress",level:2},{value:"Configure Your Own Domain",id:"configure-your-own-domain",level:2},{value:"Digital Ocean Loadbalancer",id:"digital-ocean-loadbalancer",level:2},{value:"Set up an A Record for your Load Balancer",id:"set-up-an-a-record-for-your-load-balancer",level:2},{value:"Endpoints",id:"endpoints",level:2},{value:"Update the helm Chart",id:"update-the-helm-chart",level:2},{value:"Creating your own Genesis Account",id:"creating-your-own-genesis-account",level:2},{value:"Get and Build the astria-cli",id:"get-and-build-the-astria-cli",level:2},{value:"Using the astria-cli",id:"using-the-astria-cli",level:2},{value:"Get Current Sequencer Block Height",id:"get-current-sequencer-block-height",level:3},{value:"Create Rollup Config",id:"create-rollup-config",level:2},{value:"Create new sequencer account",id:"create-new-sequencer-account",level:2},{value:"Use locally modified chart",id:"use-locally-modified-chart",level:2},{value:"Deploy the Rollup Node",id:"deploy-the-rollup-node",level:2},{value:"Default to astria-dev-cluster namespace",id:"default-to-astria-dev-cluster-namespace",level:2},{value:"Watch for pod startup",id:"watch-for-pod-startup",level:2},{value:"Check Block Retrieval on the Conductor",id:"check-block-retrieval-on-the-conductor",level:2},{value:"Observe your Deployment",id:"observe-your-deployment",level:2},{value:"Debug Ingress",id:"debug-ingress",level:2},{value:"Use cast to Interact with your Rollup",id:"use-cast-to-interact-with-your-rollup",level:2},{value:"Fund you Sequencer Account",id:"fund-you-sequencer-account",level:2}],c={toc:s},p="wrapper";function d(e){let{components:t,...l}=e;return(0,r.kt)(p,(0,a.Z)({},c,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"cloud-rollup-deployment"},"Cloud Rollup Deployment"),(0,r.kt)("p",null,"The following assumes you are using ",(0,r.kt)("a",{parentName:"p",href:"https://www.digitalocean.com/products/kubernetes"},"Digital Ocean Kubernetes\n(DOKS)"),"."),(0,r.kt)("p",null,"We recommend using Digital Ocean's Kubernetes ",(0,r.kt)("a",{parentName:"p",href:"https://docs.digitalocean.com/products/kubernetes/getting-started/quickstart/"},"Quick Start Guide"),"."),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"You must use at least a 2 node cluster.")),(0,r.kt)("h2",{id:"setup-digital-ocean-ingress"},"Setup Digital Ocean Ingress"),(0,r.kt)("p",null,"We use the Ingress NGINX Controller for consistency across deployment environments:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://kubernetes.github.io/ingress-nginx/deploy/#digital-ocean"},"https://kubernetes.github.io/ingress-nginx/deploy/#digital-ocean"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/do/deploy.yaml\n")),(0,r.kt)("h2",{id:"configure-your-own-domain"},"Configure Your Own Domain"),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"You must configure a DNS record because our ingress configuration uses name based virtual routing: ",(0,r.kt)("a",{parentName:"p",href:"https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting"},"https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting"),".")),(0,r.kt)("p",null,"Follow the instructions here:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://docs.digitalocean.com/products/networking/dns/getting-started/dns-registrars/"},"https://docs.digitalocean.com/products/networking/dns/getting-started/dns-registrars/")),(0,r.kt)("li",{parentName:"ul"},"This is where you will set ",(0,r.kt)("inlineCode",{parentName:"li"},""))),(0,r.kt)("h2",{id:"digital-ocean-loadbalancer"},"Digital Ocean Loadbalancer"),(0,r.kt)("p",null,"Look for a new loadbalancer being created in the Digital Ocean console:\n",(0,r.kt)("a",{parentName:"p",href:"https://cloud.digitalocean.com/networking/load_balancers"},"https://cloud.digitalocean.com/networking/load_balancers")),(0,r.kt)("p",null,"You can also check that your Digital Ocean load balancer was created using the\nfollowing command:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl get svc -n ingress-nginx\n")),(0,r.kt)("p",null,"You should see something like this:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\ningress-nginx-controller LoadBalancer 10.245.63.28 161.35.240.50 80:32656/TCP,443:30158/TCP 44h\ningress-nginx-controller-admission ClusterIP 10.245.106.99 443/TCP 44h\n")),(0,r.kt)("h2",{id:"set-up-an-a-record-for-your-load-balancer"},"Set up an ",(0,r.kt)("inlineCode",{parentName:"h2"},"A")," Record for your Load Balancer"),(0,r.kt)("p",null,"Follow the steps here to set up an ",(0,r.kt)("inlineCode",{parentName:"p"},"A")," record for DNS:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://docs.digitalocean.com/products/networking/dns/how-to/manage-records/#a-records"},"https://docs.digitalocean.com/products/networking/dns/how-to/manage-records/#a-records"))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"When configuring the ",(0,r.kt)("inlineCode",{parentName:"p"},"A")," record for DNS, the ",(0,r.kt)("inlineCode",{parentName:"p"},"directs to")," value should specify the ",(0,r.kt)("inlineCode",{parentName:"p"},"loadbalancer")," which was created by the ",(0,r.kt)("inlineCode",{parentName:"p"},"nginx-ingress-controller"),". ")),(0,r.kt)("h2",{id:"endpoints"},"Endpoints"),(0,r.kt)("p",null,"Endpoints for the remote cluster are the following:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"NAME"),(0,r.kt)("th",{parentName:"tr",align:null},"HOSTS"),(0,r.kt)("th",{parentName:"tr",align:null},"ADDRESS"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"EVM JSON RPC"),(0,r.kt)("td",{parentName:"tr",align:null},"rpc.evm.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.160.214.22")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"EVM Block Explorer"),(0,r.kt)("td",{parentName:"tr",align:null},"explorer.evm.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.111.167.16")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"EVM Faucet"),(0,r.kt)("td",{parentName:"tr",align:null},"faucet.evm.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"130.211.4.120")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Sequencer RPC"),(0,r.kt)("td",{parentName:"tr",align:null},"rpc.sequencer.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.111.73.187")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Sequencer Faucet"),(0,r.kt)("td",{parentName:"tr",align:null},"faucet.sequencer.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.36.8.102")))),(0,r.kt)("h2",{id:"update-the-helm-chart"},"Update the ",(0,r.kt)("inlineCode",{parentName:"h2"},"helm")," Chart"),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"Deploying a rollup to a cloud provider requires manual changes to the ",(0,r.kt)("inlineCode",{parentName:"p"},"helm"),"\ncharts. Because the default ",(0,r.kt)("inlineCode",{parentName:"p"},"localdev.me")," hostname will not work on a cloud\nprovider.")),(0,r.kt)("p",null,"Pull the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster"},"Astria dev-cluster repo"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:astriaorg/dev-cluster.git\ncd dev-cluster\n")),(0,r.kt)("p",null,"Within the dev-cluster repo, update the ingress template ",(0,r.kt)("inlineCode",{parentName:"p"},"chart/rollup/templates/ingress.yaml")," so that each hostname ends in ",(0,r.kt)("inlineCode",{parentName:"p"},"")," instead of ",(0,r.kt)("inlineCode",{parentName:"p"},"localdev.me")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"...\n- host: executor.{{ .Values.config.rollup.name }}.\n...\n- host: ws-executor.{{ .Values.config.rollup.name }}.\n...\n- host: faucet.{{ .Values.config.rollup.name }}.\n...\n- host: blockscout.{{ .Values.config.rollup.name }}.\n...\n")),(0,r.kt)("p",null,"Add an IngressClass so that the ",(0,r.kt)("inlineCode",{parentName:"p"},"metadata")," section in the same file looks like:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"metadata:\n name: {{ .Values.config.rollup.name }}-ingress\n namespace: {{ .Values.namespace }}\n annotations:\n kubernetes.io/ingress.class: nginx\n")),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"You can see an example of these changes in ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster/pull/119/files"},"this PR here"),".")),(0,r.kt)("h2",{id:"creating-your-own-genesis-account"},"Creating your own Genesis Account"),(0,r.kt)("p",null,"You can add genesis account(s) to your rollup during configuration."),(0,r.kt)("p",null,"You can create an account using"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast w new\n")),(0,r.kt)("p",null,"to create a new account:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"Successfully created new keypair.\nAddress: 0xfFe9...5f8b # \nPrivate key: 0x332e...a8fb # \n")),(0,r.kt)("p",null,"You can then ",(0,r.kt)("inlineCode",{parentName:"p"},"export")," the genesis accounts like so:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_GENESIS_ACCOUNTS=:100000000000000000000\n")),(0,r.kt)("p",null,"Set ",(0,r.kt)("inlineCode",{parentName:"p"},"")," to the address printed out from the new command, and\n",(0,r.kt)("inlineCode",{parentName:"p"},"export")," the private key to the env vars using:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_FAUCET_PRIV_KEY=\n")),(0,r.kt)("p",null,"Exporting the genesis account(s) is also shown in the export block in the next section."),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"NEVER")," use a private key you use on a live network. ")),(0,r.kt)("h2",{id:"get-and-build-the-astria-cli"},"Get and Build the ",(0,r.kt)("inlineCode",{parentName:"h2"},"astria-cli")),(0,r.kt)("p",null,"Pull the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/astria"},"Astria repo"),"."),(0,r.kt)("p",null,"Build the ",(0,r.kt)("inlineCode",{parentName:"p"},"astria-cli")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:astriaorg/astria.git\ncd astria\njust install-cli\n")),(0,r.kt)("p",null,"Keep track of this block height as it will be used for making the rollup config\nlater on. You will use this printed height in place of\n",(0,r.kt)("inlineCode",{parentName:"p"},"")," in the steps below."),(0,r.kt)("h2",{id:"using-the-astria-cli"},"Using the ",(0,r.kt)("inlineCode",{parentName:"h2"},"astria-cli")),(0,r.kt)("h3",{id:"get-current-sequencer-block-height"},"Get Current Sequencer Block Height"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"astria-cli sequencer blockheight get \\\n --sequencer-url https://rpc.sequencer.dusk-1.devnet.astria.org/\n")),(0,r.kt)("p",null,"Save the returned value for later. You will replace the\n",(0,r.kt)("inlineCode",{parentName:"p"},"")," tag in the following sections with this\nvalue."),(0,r.kt)("p",null,"Replace the tags in the commands and env vars below, as follows:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Var Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Var Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"String"),(0,r.kt)("td",{parentName:"tr",align:null},"The name of your rollup")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"u64"),(0,r.kt)("td",{parentName:"tr",align:null},"The id of your network")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"u64"),(0,r.kt)("td",{parentName:"tr",align:null},"The height of the sequencer (found above)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"[u8; 40]"),(0,r.kt)("td",{parentName:"tr",align:null},"A wallet address")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"u64"),(0,r.kt)("td",{parentName:"tr",align:null},"A balance. It is useful to make this a large value.")))),(0,r.kt)("h2",{id:"create-rollup-config"},"Create Rollup Config"),(0,r.kt)("p",null,"You can use environment variables to set the configuration for the rollup\nconfig creation. Replace all the ",(0,r.kt)("inlineCode",{parentName:"p"},"<>")," tags with their corresponding values. "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_USE_TTY=true\nexport ROLLUP_LOG_LEVEL=DEBUG\nexport ROLLUP_NAME=\nexport ROLLUP_NETWORK_ID=\nexport ROLLUP_SKIP_EMPTY_BLOCKS=false\nexport ROLLUP_GENESIS_ACCOUNTS=:\nexport ROLLUP_SEQUENCER_INITIAL_BLOCK_HEIGHT=\nexport ROLLUP_SEQUENCER_WEBSOCKET=wss://rpc.sequencer.dusk-1.devnet.astria.org/websocket\nexport ROLLUP_SEQUENCER_RPC=https://rpc.sequencer.dusk-1.devnet.astria.org\n")),(0,r.kt)("p",null,"Then just run the config create command:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"astria-cli rollup config create\n")),(0,r.kt)("p",null,"You can then run:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"cat -rollup-conf.yaml\n")),(0,r.kt)("p",null,"to print out the config file contents to double check everything:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"config:\n useTTY: true\n logLevel: DEBUG\n rollup:\n name: \n chainId: # derived from rollup name\n networkId: \n skipEmptyBlocks: true\n genesisAccounts: \n - address: 0x\n balance: ''\n sequencer:\n initialBlockHeight: \n websocket: ws://rpc.sequencer.dusk-1.devnet.astria.org/websocket\n rpc: http://rpc.sequencer.dusk-1.devnet.astria.org\n celestia:\n fullNodeUrl: http://celestia-service:26658\n")),(0,r.kt)("p",null,"Export this file to the env vars as follows:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_CONF_FILE=-rollup-conf.yaml\n")),(0,r.kt)("h2",{id:"create-new-sequencer-account"},"Create new sequencer account"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"astria-cli sequencer account create\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'Create Sequencer Account\n\nPrivate Key: "5562...1622" # \nPublic Key: "ec20...f613" # \nAddress: "8a2f...5f68"\n')),(0,r.kt)("p",null,"Keep track of the ",(0,r.kt)("inlineCode",{parentName:"p"},"")," as it will be used with the\nFaucet later on for funding your sequencer account."),(0,r.kt)("p",null,"Export your sequencer private key as an environment variable."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export SEQUENCER_PRIV_KEY=9c78...710d\n")),(0,r.kt)("h2",{id:"use-locally-modified-chart"},"Use locally modified chart"),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"You ",(0,r.kt)("strong",{parentName:"p"},"must")," have modified your local ",(0,r.kt)("inlineCode",{parentName:"p"},"helm")," chart to use your own domain name\nas described in ",(0,r.kt)("a",{parentName:"p",href:"#update-the-helm-chart"},"this section here"),".")),(0,r.kt)("p",null,"Because you needed to modify the host names inside your ingress template you must deploy your rollup using your local chart:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'export ROLLUP_CHART_PATH="/your_path_to/dev-cluster/charts/rollup"\n')),(0,r.kt)("h2",{id:"deploy-the-rollup-node"},"Deploy the Rollup Node"),(0,r.kt)("p",null,"Use the ",(0,r.kt)("inlineCode",{parentName:"p"},"astria-cli")," to deploy the node."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"astria-cli rollup deployment create \\\n --config $ROLLUP_CONF_FILE \\\n --faucet-private-key $ROLLUP_FAUCET_PRIV_KEY \\\n --sequencer-private-key $SEQUENCER_PRIV_KEY\n")),(0,r.kt)("h2",{id:"default-to-astria-dev-cluster-namespace"},"Default to ",(0,r.kt)("inlineCode",{parentName:"h2"},"astria-dev-cluster")," namespace"),(0,r.kt)("p",null,"Set ",(0,r.kt)("inlineCode",{parentName:"p"},"kubectl")," to the correct namespace."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl config set-context --current --namespace=astria-dev-cluster\n")),(0,r.kt)("h2",{id:"watch-for-pod-startup"},"Watch for pod startup"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl get pods -w\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"NAME READY STATUS RESTARTS AGE\n-blockscout-647745c66d-vz4ks 6/6 Running 1 (56s ago) 72s\n-faucet-68667bd895-pwqmz 1/1 Running 0 72s\n-geth-755cb8dd97-k5xp8 3/3 Running 0 72s\n")),(0,r.kt)("h2",{id:"check-block-retrieval-on-the-conductor"},"Check Block Retrieval on the Conductor"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export GETH_POD_NAME=-geth-755cb8dd97-k5x\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl logs $GETH_POD_NAME -c conductor\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'2023-10-16T20:49:16.858852Z INFO run_until_stopped: astria_conductor::executor: executed sequencer block sequencer_block_hash=Hash::Sha256(93C233F2A2A109FF6CC3162A98916BECAE6D8EC43520C995E82B6D1F2B2742EF) sequencer_block_height=423755 execution_block_hash="2d8b2219a30ea4cc409347320f377de937b9ca2425f670c4f913724a2d53b2aa"\n2023-10-16T20:49:18.922694Z INFO run_until_stopped: astria_conductor::executor: executing block with given parent block height=423756 parent_block_hash="2d8b2219a30ea4cc409347320f377de937b9ca2425f670c4f913724a2d53b2aa"\n2023-10-16T20:49:18.926380Z INFO run_until_stopped: astria_conductor::executor: executed sequencer block sequencer_block_hash=Hash::Sha256(EAD8701CB15D9B487DC7400ABC2FCB7A4F7E09E09F39D4D6B8FA97B74B5EC50F) sequencer_block_height=423756 execution_block_hash="de20c29febc808b7a2ded8513eb23be116fe441745ccf62d1366b4b9bb160d04"\n')),(0,r.kt)("h2",{id:"observe-your-deployment"},"Observe your Deployment"),(0,r.kt)("p",null,"Your rollups utility endpoints are as follows:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Utility"),(0,r.kt)("th",{parentName:"tr",align:null},"URL"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Block Explorer"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"http://blockscout."},"http://blockscout."),"./")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Faucet"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"http://faucet."},"http://faucet."),"./")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"RPC"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"http://executor."},"http://executor."),"./")))),(0,r.kt)("p",null,"Open the URLs in your browser to view your running rollup."),(0,r.kt)("h2",{id:"debug-ingress"},"Debug Ingress"),(0,r.kt)("p",null,"If you would like to view the ingress logs you can use the following:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl get po -n ingress-nginx\n# get the name of one of the pods\nexport INGRESS_POD_1=ingress-nginx-controller-6d6559598-ll8gv\n# view the logs\nkubectl logs $INGRESS_POD_1 -n ingress-nginx\n")),(0,r.kt)("h2",{id:"use-cast-to-interact-with-your-rollup"},"Use ",(0,r.kt)("inlineCode",{parentName:"h2"},"cast")," to Interact with your Rollup"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ETH_RPC_URL=http://executor../\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast block 0\n")),(0,r.kt)("p",null,"Use an address of your choice."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export REC_ADDR=\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast balance $REC_ADDR\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast send $REC_ADDR --value 10000000000000000000 --private-key $ROLLUP_FAUCET_PRIV_KEY\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast balance $REC_ADDR\n")),(0,r.kt)("h2",{id:"fund-you-sequencer-account"},"Fund you Sequencer Account"),(0,r.kt)("p",null,"Using your sequencer pub key you created in the ",(0,r.kt)("a",{parentName:"p",href:"#create-a-new-sequencer-account"},"Create a New Sequencer\nAccount"),", copy and past the\n",(0,r.kt)("inlineCode",{parentName:"p"},"")," into the input on the faucet page, and mint funds\nto your account:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Sequencer Faucet",src:n(9596).Z,width:"1490",height:"794"})))}d.isMDXComponent=!0},9596:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/sequencer-faucet-63615ccc21b8c454150825d608e5dea6.png"}}]); \ No newline at end of file diff --git a/assets/js/3756debb.5c455cb4.js b/assets/js/3756debb.5c455cb4.js deleted file mode 100644 index 906a34e..0000000 --- a/assets/js/3756debb.5c455cb4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[110],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>y});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=l(r),f=o,y=u["".concat(c,".").concat(f)]||u[f]||p[f]||a;return r?n.createElement(y,i(i({ref:t},d),{},{components:r})):n.createElement(y,i({ref:t},d))}));function y(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:o,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const a={sidebar_position:2},i="Why Decentralized Sequencers?",s={unversionedId:"overview-of-astria/why-decentralized-sequencers",id:"overview-of-astria/why-decentralized-sequencers",title:"Why Decentralized Sequencers?",description:"To deploy your own rollup on the Astria Dusknet devnet, check out the",source:"@site/docs/overview-of-astria/2-why-decentralized-sequencers.md",sourceDirName:"overview-of-astria",slug:"/overview-of-astria/why-decentralized-sequencers",permalink:"/docs/overview-of-astria/why-decentralized-sequencers",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/overview-of-astria/2-why-decentralized-sequencers.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docsSidebar",previous:{title:"Introduction",permalink:"/docs/overview-of-astria/introduction"},next:{title:"Cross-Rollup Composability",permalink:"/docs/overview-of-astria/cross-rollup-composability"}},c={},l=[],d={toc:l},u="wrapper";function p(e){let{components:t,...a}=e;return(0,o.kt)(u,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"why-decentralized-sequencers"},"Why Decentralized Sequencers?"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"To deploy your own rollup on the Astria Dusknet devnet, check out the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/dusknet/overview/"},"instructions here"),"!")),(0,o.kt)("p",null,"Centralization is antithetical to crypto. And yet, today\u2019s rollups almost universally depend on a single sequencer. Centralized sequencers provide fast transaction confirmations and reduce costs by batching and compressing transactions. However, these benefits come at the cost of relying on a single trusted actor for liveness and censorship resistance."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Sacrificing decentralization for an improved user experience is an unacceptable Faustian bargain.")),(0,o.kt)("p",null,"Astria tackles centralization head-on, providing rollups with a decentralized sequencer and even better UX. Astria\u2019s shared sequencer network is a middleware blockchain with its own decentralized sequencer set which accepts transactions from multiple rollups. These transactions are ordered into a single block and written to the base layer without executing them."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Shared Sequencers",src:r(154).Z,width:"3840",height:"2160"})))}p.isMDXComponent=!0},154:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/shared_sequencer-aef561d11f236d4ade5df4e6b7bcadcf.png"}}]); \ No newline at end of file diff --git a/assets/js/3756debb.b3e2bfd4.js b/assets/js/3756debb.b3e2bfd4.js new file mode 100644 index 0000000..6a81458 --- /dev/null +++ b/assets/js/3756debb.b3e2bfd4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[110],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=l(r),f=o,m=p["".concat(c,".").concat(f)]||p[f]||u[f]||a;return r?n.createElement(m,i(i({ref:t},d),{},{components:r})):n.createElement(m,i({ref:t},d))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:o,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const a={sidebar_position:2},i="Why Decentralized Sequencers?",s={unversionedId:"overview-of-astria/why-decentralized-sequencers",id:"overview-of-astria/why-decentralized-sequencers",title:"Why Decentralized Sequencers?",description:"instructions here!",source:"@site/docs/overview-of-astria/2-why-decentralized-sequencers.md",sourceDirName:"overview-of-astria",slug:"/overview-of-astria/why-decentralized-sequencers",permalink:"/docs/overview-of-astria/why-decentralized-sequencers",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/overview-of-astria/2-why-decentralized-sequencers.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docsSidebar",previous:{title:"Introduction",permalink:"/docs/overview-of-astria/introduction"},next:{title:"Cross-Rollup Composability",permalink:"/docs/overview-of-astria/cross-rollup-composability"}},c={},l=[],d={toc:l},p="wrapper";function u(e){let{components:t,...a}=e;return(0,o.kt)(p,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"why-decentralized-sequencers"},"Why Decentralized Sequencers?"),(0,o.kt)("admonition",{title:"To deploy your own rollup on the Astria Dusknet devnet, check out the",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("a",{parentName:"p",href:"/docs/dusknet/overview/"},"instructions here"),"! :::"),(0,o.kt)("p",{parentName:"admonition"},"Centralization is antithetical to crypto. And yet, today\u2019s rollups almost\nuniversally depend on a single sequencer. Centralized sequencers provide fast\ntransaction confirmations and reduce costs by batching and compressing\ntransactions. However, these benefits come at the cost of relying on a single\ntrusted actor for liveness and censorship resistance."),(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"Sacrificing decentralization for an improved user experience is an\nunacceptable Faustian bargain.")),(0,o.kt)("p",{parentName:"admonition"},"Astria tackles centralization head-on, providing rollups with a decentralized\nsequencer and even better UX. Astria\u2019s shared sequencer network is a middleware\nblockchain with its own decentralized sequencer set which accepts transactions\nfrom multiple rollups. These transactions are ordered into a single block and\nwritten to the base layer without executing them."),(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("img",{alt:"Shared Sequencers",src:r(154).Z,width:"3840",height:"2160"}))))}u.isMDXComponent=!0},154:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/shared_sequencer-aef561d11f236d4ade5df4e6b7bcadcf.png"}}]); \ No newline at end of file diff --git a/assets/js/39dc615d.963b2cb3.js b/assets/js/39dc615d.963b2cb3.js new file mode 100644 index 0000000..5342177 --- /dev/null +++ b/assets/js/39dc615d.963b2cb3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[186],{3905:(e,t,n)=>{n.d(t,{Zo:()=>i,kt:()=>k});var l=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=l.createContext({}),c=function(e){var t=l.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},i=function(e){var t=c(e.components);return l.createElement(p.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},m=l.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,p=e.parentName,i=u(e,["components","mdxType","originalType","parentName"]),s=c(n),m=r,k=s["".concat(p,".").concat(m)]||s[m]||d[m]||a;return n?l.createElement(k,o(o({ref:t},i),{},{components:n})):l.createElement(k,o({ref:t},i))}));function k(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=m;var u={};for(var p in t)hasOwnProperty.call(t,p)&&(u[p]=t[p]);u.originalType=e,u[s]="string"==typeof e?e:r,o[1]=u;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>u,toc:()=>c});var l=n(7462),r=(n(7294),n(3905));const a={sidebar_position:2},o="Running a Local Rollup",u={unversionedId:"dev-cluster/deploy-a-local-rollup",id:"dev-cluster/deploy-a-local-rollup",title:"Running a Local Rollup",description:"To deploy your own rollup on the Astria Dusknet devnet, check out the",source:"@site/docs/dev-cluster/2-deploy-a-local-rollup.md",sourceDirName:"dev-cluster",slug:"/dev-cluster/deploy-a-local-rollup",permalink:"/docs/dev-cluster/deploy-a-local-rollup",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/dev-cluster/2-deploy-a-local-rollup.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docsSidebar",previous:{title:"Dev-Cluster Overview",permalink:"/docs/dev-cluster/overview"},next:{title:"Run Multiple Rollups Locally",permalink:"/docs/dev-cluster/run-multiple-rollups-locally"}},p={},c=[{value:"Faucet, Block Explorer, and Test Data",id:"faucet-block-explorer-and-test-data",level:2}],i={toc:c},s="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(s,(0,l.Z)({},i,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"running-a-local-rollup"},"Running a Local Rollup"),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"To deploy your own rollup on the Astria Dusknet devnet, check out the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/dusknet/overview/"},"instructions here"),"!")),(0,r.kt)("h2",{id:"faucet-block-explorer-and-test-data"},"Faucet, Block Explorer, and Test Data"),(0,r.kt)("p",null,"With the dev-cluster running, you can then deploy a rollup, block explorer, and\nfaucet by running the following command in the terminal withing the dev-cluster:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"just deploy-rollup\n")),(0,r.kt)("p",null,"This ",(0,r.kt)("inlineCode",{parentName:"p"},"just")," command launches a local rollup, block explorer, and faucet using\nthe default in\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster/blob/main/helm/rollup/values.yaml"},"helm/rollup/values.yaml"),"\nin the ",(0,r.kt)("inlineCode",{parentName:"p"},"config.rollup")," definition."),(0,r.kt)("p",null,"For reference, these are:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Rollup name: ",(0,r.kt)("inlineCode",{parentName:"li"},"astria")),(0,r.kt)("li",{parentName:"ul"},"Network Id: ",(0,r.kt)("inlineCode",{parentName:"li"},"912559"))),(0,r.kt)("p",null,"This will also take a moment as the rollup node, block explorer, and faucet spin\nup. You can check the progress of the deployment with the following command:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl get deployments --all-namespaces\n")),(0,r.kt)("p",null,"Or you can run:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"just wait-for-rollup\n")),(0,r.kt)("p",null,"Once deployed, you can view the block explorer and faucet by opening a couple\nnew windows in your browser and going to to the following urls."),(0,r.kt)("p",null,"For the block explorer:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-txt"},"http://blockscout.astria.localdev.me/\n")),(0,r.kt)("p",null,"For the faucet:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-txt"},"http://faucet.astria.localdev.me/\n")),(0,r.kt)("p",null,"You can copy and paste a wallet address on the faucet page and give yourself 1\nRIA."),(0,r.kt)("p",null,"To test out the block explorer, open a terminal in the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/astria-web3/tree/main"},"astria-web3\nrepo")," you downloaded earlier\nand navigate to the ",(0,r.kt)("inlineCode",{parentName:"p"},"packages/evm-test-data/")," and run the following command:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"just generate-transactions\n")),(0,r.kt)("p",null,"This command uses the default rollup name and network id (see above), and will\nsubmit commands to the newly deployed default rollup."),(0,r.kt)("p",null,"You can now go back to your browser and pull up the block explorer and you will\nnow see blocks with transactions getting created in real time."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/39dc615d.9d83c664.js b/assets/js/39dc615d.9d83c664.js deleted file mode 100644 index a9fe023..0000000 --- a/assets/js/39dc615d.9d83c664.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[186],{3905:(e,t,n)=>{n.d(t,{Zo:()=>i,kt:()=>k});var r=n(7294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var p=r.createContext({}),c=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},i=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,l=e.mdxType,o=e.originalType,p=e.parentName,i=u(e,["components","mdxType","originalType","parentName"]),s=c(n),m=l,k=s["".concat(p,".").concat(m)]||s[m]||d[m]||o;return n?r.createElement(k,a(a({ref:t},i),{},{components:n})):r.createElement(k,a({ref:t},i))}));function k(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var o=n.length,a=new Array(o);a[0]=m;var u={};for(var p in t)hasOwnProperty.call(t,p)&&(u[p]=t[p]);u.originalType=e,u[s]="string"==typeof e?e:l,a[1]=u;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>u,toc:()=>c});var r=n(7462),l=(n(7294),n(3905));const o={sidebar_position:2},a="Running a Local Rollup",u={unversionedId:"dev-cluster/deploy-a-local-rollup",id:"dev-cluster/deploy-a-local-rollup",title:"Running a Local Rollup",description:"To deploy your own rollup on the Astria Dusknet devnet, check out the",source:"@site/docs/dev-cluster/2-deploy-a-local-rollup.md",sourceDirName:"dev-cluster",slug:"/dev-cluster/deploy-a-local-rollup",permalink:"/docs/dev-cluster/deploy-a-local-rollup",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/dev-cluster/2-deploy-a-local-rollup.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docsSidebar",previous:{title:"Dev-Cluster Overview",permalink:"/docs/dev-cluster/overview"},next:{title:"Run Multiple Rollups Locally",permalink:"/docs/dev-cluster/run-multiple-rollups-locally"}},p={},c=[{value:"Faucet, Block Explorer, and Test Data",id:"faucet-block-explorer-and-test-data",level:2}],i={toc:c},s="wrapper";function d(e){let{components:t,...n}=e;return(0,l.kt)(s,(0,r.Z)({},i,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"running-a-local-rollup"},"Running a Local Rollup"),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"To deploy your own rollup on the Astria Dusknet devnet, check out the\n",(0,l.kt)("a",{parentName:"p",href:"/docs/dusknet/overview/"},"instructions here"),"!")),(0,l.kt)("h2",{id:"faucet-block-explorer-and-test-data"},"Faucet, Block Explorer, and Test Data"),(0,l.kt)("p",null,"With the dev-cluster running, you can then deploy a rollup, block explorer, and\nfaucet by running the following command in the terminal withing the dev-cluster:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sh"},"just deploy-rollup\n")),(0,l.kt)("p",null,"This ",(0,l.kt)("inlineCode",{parentName:"p"},"just")," command launches a local rollup, block explorer, and faucet using\nthe default in\n",(0,l.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster/blob/main/helm/rollup/values.yaml"},"helm/rollup/values.yaml"),"\nin the ",(0,l.kt)("inlineCode",{parentName:"p"},"config.rollup")," definition."),(0,l.kt)("p",null,"For reference, these are:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Rollup name: ",(0,l.kt)("inlineCode",{parentName:"li"},"astria")),(0,l.kt)("li",{parentName:"ul"},"Network Id: ",(0,l.kt)("inlineCode",{parentName:"li"},"912559"))),(0,l.kt)("p",null,"This will also take a moment as the rollup node, block explorer, and faucet spin\nup. You can check the progress of the deployment with the following command:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl get deployments --all-namespaces\n")),(0,l.kt)("p",null,"Or you can run:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"just wait-for-rollup\n")),(0,l.kt)("p",null,"Once deployed, you can view the block explorer and faucet by opening a couple new windows in your browser and going to to the\nfollowing urls.\nFor the block explorer:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},"http://blockscout.astria.localdev.me/\n")),(0,l.kt)("p",null,"For the faucet:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre"},"http://faucet.astria.localdev.me/\n")),(0,l.kt)("p",null,"You can copy and paste a wallet address on the faucet page and give yourself 1 RIA. "),(0,l.kt)("p",null,"To test out the block explorer, open a terminal in the ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/astria-web3/tree/main"},"astria-web3 repo")," you downloaded earlier and navigate to the ",(0,l.kt)("inlineCode",{parentName:"p"},"packages/evm-test-data/")," and run the following command:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sh"},"just generate-transactions\n")),(0,l.kt)("p",null,"This command uses the default rollup name and network id (see above), and will\nsubmit commands to the newly deployed default rollup."),(0,l.kt)("p",null,"You can now go back to your browser and pull up the block explorer and you will now see blocks with transactions getting created in real time."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.26c58d2d.js b/assets/js/935f2afb.1f082fc1.js similarity index 91% rename from assets/js/935f2afb.26c58d2d.js rename to assets/js/935f2afb.1f082fc1.js index 862d393..32492f0 100644 --- a/assets/js/935f2afb.26c58d2d.js +++ b/assets/js/935f2afb.1f082fc1.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docsSidebar":[{"type":"category","label":"Overview of Astria","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Why Decentralized Sequencers?","href":"/docs/overview-of-astria/why-decentralized-sequencers","docId":"overview-of-astria/why-decentralized-sequencers"},{"type":"link","label":"Cross-Rollup Composability","href":"/docs/overview-of-astria/cross-rollup-composability","docId":"overview-of-astria/cross-rollup-composability"},{"type":"link","label":"Maintain Sovereignty","href":"/docs/overview-of-astria/maintain-sovereignty","docId":"overview-of-astria/maintain-sovereignty"},{"type":"category","label":"Architecture","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Transaction Flow","href":"/docs/overview-of-astria/architecture/transaction-flow","docId":"overview-of-astria/architecture/transaction-flow"},{"type":"link","label":"Rollups","href":"/docs/overview-of-astria/architecture/rollup","docId":"overview-of-astria/architecture/rollup"},{"type":"link","label":"Composer","href":"/docs/overview-of-astria/architecture/composer","docId":"overview-of-astria/architecture/composer"},{"type":"link","label":"The Astria Sequencer","href":"/docs/overview-of-astria/architecture/the-astria-sequencer","docId":"overview-of-astria/architecture/the-astria-sequencer"},{"type":"link","label":"Relayer","href":"/docs/overview-of-astria/architecture/relayer","docId":"overview-of-astria/architecture/relayer"},{"type":"link","label":"Conductor","href":"/docs/overview-of-astria/architecture/conductor","docId":"overview-of-astria/architecture/conductor"},{"type":"link","label":"Data Availability Layer","href":"/docs/overview-of-astria/architecture/data-availability-layer","docId":"overview-of-astria/architecture/data-availability-layer"}],"href":"/docs/overview-of-astria/architecture/overview"}],"href":"/docs/overview-of-astria/introduction"},{"type":"category","label":"Local Dev Cluster","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Running a Local Rollup","href":"/docs/dev-cluster/deploy-a-local-rollup","docId":"dev-cluster/deploy-a-local-rollup"},{"type":"link","label":"Run Multiple Rollups Locally","href":"/docs/dev-cluster/run-multiple-rollups-locally","docId":"dev-cluster/run-multiple-rollups-locally"},{"type":"link","label":"Shutting Down the Cluster","href":"/docs/dev-cluster/shutdown","docId":"dev-cluster/shutdown"}],"href":"/docs/dev-cluster/overview"},{"type":"category","label":"Running a Rollup on Dusknet","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Local Rollup Deployment","href":"/docs/dusknet/local-rollup-deployment","docId":"dusknet/local-rollup-deployment"},{"type":"link","label":"Cloud Rollup Deployment","href":"/docs/dusknet/cloud-rollup-deployment","docId":"dusknet/cloud-rollup-deployment"}],"href":"/docs/dusknet/overview"}]},"docs":{"dev-cluster/deploy-a-local-rollup":{"id":"dev-cluster/deploy-a-local-rollup","title":"Running a Local Rollup","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"dev-cluster/overview":{"id":"dev-cluster/overview","title":"Dev-Cluster Overview","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"dev-cluster/run-multiple-rollups-locally":{"id":"dev-cluster/run-multiple-rollups-locally","title":"Run Multiple Rollups Locally","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"dev-cluster/shutdown":{"id":"dev-cluster/shutdown","title":"Shutting Down the Cluster","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"dusknet/cloud-rollup-deployment":{"id":"dusknet/cloud-rollup-deployment","title":"Cloud Rollup Deployment","description":"The following assumes you are using [Digital Ocean Kubernetes","sidebar":"docsSidebar"},"dusknet/local-rollup-deployment":{"id":"dusknet/local-rollup-deployment","title":"Local Rollup Deployment","description":"Endpoints","sidebar":"docsSidebar"},"dusknet/overview":{"id":"dusknet/overview","title":"Overview","description":"After running the Astria stack locally, the next step is to run a rollup against","sidebar":"docsSidebar"},"overview-of-astria/architecture/composer":{"id":"overview-of-astria/architecture/composer","title":"Composer","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/conductor":{"id":"overview-of-astria/architecture/conductor","title":"Conductor","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/data-availability-layer":{"id":"overview-of-astria/architecture/data-availability-layer","title":"Data Availability Layer","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/overview":{"id":"overview-of-astria/architecture/overview","title":"Architecture Overview","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/relayer":{"id":"overview-of-astria/architecture/relayer","title":"Relayer","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/rollup":{"id":"overview-of-astria/architecture/rollup","title":"Rollups","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/the-astria-sequencer":{"id":"overview-of-astria/architecture/the-astria-sequencer","title":"The Astria Sequencer","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/transaction-flow":{"id":"overview-of-astria/architecture/transaction-flow","title":"Transaction Flow","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/cross-rollup-composability":{"id":"overview-of-astria/cross-rollup-composability","title":"Cross-Rollup Composability","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/introduction":{"id":"overview-of-astria/introduction","title":"Introduction","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/maintain-sovereignty":{"id":"overview-of-astria/maintain-sovereignty","title":"Maintain Sovereignty","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/why-decentralized-sequencers":{"id":"overview-of-astria/why-decentralized-sequencers","title":"Why Decentralized Sequencers?","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docsSidebar":[{"type":"category","label":"Overview of Astria","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Why Decentralized Sequencers?","href":"/docs/overview-of-astria/why-decentralized-sequencers","docId":"overview-of-astria/why-decentralized-sequencers"},{"type":"link","label":"Cross-Rollup Composability","href":"/docs/overview-of-astria/cross-rollup-composability","docId":"overview-of-astria/cross-rollup-composability"},{"type":"link","label":"Maintain Sovereignty","href":"/docs/overview-of-astria/maintain-sovereignty","docId":"overview-of-astria/maintain-sovereignty"},{"type":"category","label":"Architecture","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Transaction Flow","href":"/docs/overview-of-astria/architecture/transaction-flow","docId":"overview-of-astria/architecture/transaction-flow"},{"type":"link","label":"Rollups","href":"/docs/overview-of-astria/architecture/rollup","docId":"overview-of-astria/architecture/rollup"},{"type":"link","label":"Composer","href":"/docs/overview-of-astria/architecture/composer","docId":"overview-of-astria/architecture/composer"},{"type":"link","label":"The Astria Sequencer","href":"/docs/overview-of-astria/architecture/the-astria-sequencer","docId":"overview-of-astria/architecture/the-astria-sequencer"},{"type":"link","label":"Relayer","href":"/docs/overview-of-astria/architecture/relayer","docId":"overview-of-astria/architecture/relayer"},{"type":"link","label":"Conductor","href":"/docs/overview-of-astria/architecture/conductor","docId":"overview-of-astria/architecture/conductor"},{"type":"link","label":"Data Availability Layer","href":"/docs/overview-of-astria/architecture/data-availability-layer","docId":"overview-of-astria/architecture/data-availability-layer"}],"href":"/docs/overview-of-astria/architecture/overview"}],"href":"/docs/overview-of-astria/introduction"},{"type":"category","label":"Local Dev Cluster","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Running a Local Rollup","href":"/docs/dev-cluster/deploy-a-local-rollup","docId":"dev-cluster/deploy-a-local-rollup"},{"type":"link","label":"Run Multiple Rollups Locally","href":"/docs/dev-cluster/run-multiple-rollups-locally","docId":"dev-cluster/run-multiple-rollups-locally"},{"type":"link","label":"Shutting Down the Cluster","href":"/docs/dev-cluster/shutdown","docId":"dev-cluster/shutdown"}],"href":"/docs/dev-cluster/overview"},{"type":"category","label":"Running a Rollup on Dusknet","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Local Rollup Deployment","href":"/docs/dusknet/local-rollup-deployment","docId":"dusknet/local-rollup-deployment"},{"type":"link","label":"Cloud Rollup Deployment","href":"/docs/dusknet/cloud-rollup-deployment","docId":"dusknet/cloud-rollup-deployment"}],"href":"/docs/dusknet/overview"}]},"docs":{"dev-cluster/deploy-a-local-rollup":{"id":"dev-cluster/deploy-a-local-rollup","title":"Running a Local Rollup","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"dev-cluster/overview":{"id":"dev-cluster/overview","title":"Dev-Cluster Overview","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"dev-cluster/run-multiple-rollups-locally":{"id":"dev-cluster/run-multiple-rollups-locally","title":"Run Multiple Rollups Locally","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"dev-cluster/shutdown":{"id":"dev-cluster/shutdown","title":"Shutting Down the Cluster","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"dusknet/cloud-rollup-deployment":{"id":"dusknet/cloud-rollup-deployment","title":"Cloud Rollup Deployment","description":"The following assumes you are using [Digital Ocean Kubernetes","sidebar":"docsSidebar"},"dusknet/local-rollup-deployment":{"id":"dusknet/local-rollup-deployment","title":"Local Rollup Deployment","description":"Endpoints","sidebar":"docsSidebar"},"dusknet/overview":{"id":"dusknet/overview","title":"Overview","description":"After running the Astria stack locally, the next step is to run a rollup against","sidebar":"docsSidebar"},"overview-of-astria/architecture/composer":{"id":"overview-of-astria/architecture/composer","title":"Composer","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/conductor":{"id":"overview-of-astria/architecture/conductor","title":"Conductor","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/data-availability-layer":{"id":"overview-of-astria/architecture/data-availability-layer","title":"Data Availability Layer","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/overview":{"id":"overview-of-astria/architecture/overview","title":"Architecture Overview","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/relayer":{"id":"overview-of-astria/architecture/relayer","title":"Relayer","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/rollup":{"id":"overview-of-astria/architecture/rollup","title":"Rollups","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/the-astria-sequencer":{"id":"overview-of-astria/architecture/the-astria-sequencer","title":"The Astria Sequencer","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/architecture/transaction-flow":{"id":"overview-of-astria/architecture/transaction-flow","title":"Transaction Flow","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/cross-rollup-composability":{"id":"overview-of-astria/cross-rollup-composability","title":"Cross-Rollup Composability","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/introduction":{"id":"overview-of-astria/introduction","title":"Introduction","description":"instructions here!","sidebar":"docsSidebar"},"overview-of-astria/maintain-sovereignty":{"id":"overview-of-astria/maintain-sovereignty","title":"Maintain Sovereignty","description":"To deploy your own rollup on the Astria Dusknet devnet, check out the","sidebar":"docsSidebar"},"overview-of-astria/why-decentralized-sequencers":{"id":"overview-of-astria/why-decentralized-sequencers","title":"Why Decentralized Sequencers?","description":"instructions here!","sidebar":"docsSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/9c8fc7d9.cc6520c7.js b/assets/js/9c8fc7d9.cc6520c7.js new file mode 100644 index 0000000..53bbc86 --- /dev/null +++ b/assets/js/9c8fc7d9.cc6520c7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[238],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var l=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var u=l.createContext({}),i=function(e){var t=l.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=i(e.components);return l.createElement(u.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},m=l.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,u=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=i(n),m=r,h=c["".concat(u,".").concat(m)]||c[m]||d[m]||a;return n?l.createElement(h,o(o({ref:t},p),{},{components:n})):l.createElement(h,o({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[c]="string"==typeof e?e:r,o[1]=s;for(var i=2;i{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>i});var l=n(7462),r=(n(7294),n(3905));const a={sidebar_position:3},o="Run Multiple Rollups Locally",s={unversionedId:"dev-cluster/run-multiple-rollups-locally",id:"dev-cluster/run-multiple-rollups-locally",title:"Run Multiple Rollups Locally",description:"To deploy your own rollup on the Astria Dusknet devnet, check out the",source:"@site/docs/dev-cluster/3-run-multiple-rollups-locally.md",sourceDirName:"dev-cluster",slug:"/dev-cluster/run-multiple-rollups-locally",permalink:"/docs/dev-cluster/run-multiple-rollups-locally",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/dev-cluster/3-run-multiple-rollups-locally.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docsSidebar",previous:{title:"Running a Local Rollup",permalink:"/docs/dev-cluster/deploy-a-local-rollup"},next:{title:"Shutting Down the Cluster",permalink:"/docs/dev-cluster/shutdown"}},u={},i=[{value:"What's Going on Under the Hood?",id:"whats-going-on-under-the-hood",level:3}],p={toc:i},c="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(c,(0,l.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"run-multiple-rollups-locally"},"Run Multiple Rollups Locally"),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"To deploy your own rollup on the Astria Dusknet devnet, check out the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/dusknet/overview/"},"instructions here"),"!")),(0,r.kt)("p",null,"At Astria we believe strongly that deploying a rollup should be as easy as\ndeploying a smart contract. The dev-cluster shows this is indeed possible."),(0,r.kt)("p",null,"Navigate back to the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster"},"dev-cluster"),"\nrepo in your terminal and run the following command with your own rollup name\nand network id:"),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"NOTE:")," The default rollup name and network id are ",(0,r.kt)("inlineCode",{parentName:"p"},"astria")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"912559"),". When\ndeploying your second rollup you ",(0,r.kt)("em",{parentName:"p"},(0,r.kt)("strong",{parentName:"em"},"must"))," use a different name and number.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"just deploy-rollup \n")),(0,r.kt)("p",null,"As before, it will take a moment for everything to spin up, but in the meantime\nkeep the the rollup name and network id handy and navigate back to your browser\nand open a new window with the following url, replacing ",(0,r.kt)("inlineCode",{parentName:"p"},"rollup_name")," with the\nname you just used to deploy your new rollup:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-txt"},"http://blockscout..localdev.me/\n")),(0,r.kt)("p",null,"Once everything has spin up you will see a new block explorer for your new rollup."),(0,r.kt)("p",null,"You can now deploy transaction to that rollup independently.In the\n",(0,r.kt)("inlineCode",{parentName:"p"},"astria-web3/packages/evm-test-data")," directory open a new terminal and run the\nfollowing:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"just generate-transactions \n")),(0,r.kt)("p",null,"As before, this command will deploy test transaction data to your new rollup.\nYou can also go back to your original terminal window for the test data\ndeployment on the default rollup and rerun the ",(0,r.kt)("inlineCode",{parentName:"p"},"just generate-transactions"),"\ncommand. If you switch back and forth between the default block explorer window\nand your new rollup window, you will see transactions showing up on each rollup\nindependently!"),(0,r.kt)("p",null,"To navigate to the new Block Explorer and Faucet from the additional rollup,\ntake the rollup name that you used and replace ",(0,r.kt)("inlineCode",{parentName:"p"},"")," in the urls\nbelow:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-txt"},"http://blockscout..localdev.me/\nhttp://faucet..localdev.me/\n")),(0,r.kt)("p",null,"The only limitations to running numerous rollups are the following:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Can your hardware handle it"),(0,r.kt)("li",{parentName:"ul"},"There are no rollup name and network id clashes")),(0,r.kt)("h3",{id:"whats-going-on-under-the-hood"},"What's Going on Under the Hood?"),(0,r.kt)("p",null,"One last thing to mention is what is actually happening when you deploy a new\nrollup in the dev-cluster. When you you deploy a new rollup the only new\ncontainers that are getting spun up in the cluster are a new rollup node, a\nconductor, block explorer, and faucet. Only one instance of the shared sequencer\nand the DA layer remain running and the transactions from all the rollups are\ncollectively getting run though those networks."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Multiple Rollups",src:n(9276).Z,width:"5412",height:"2013"})),(0,r.kt)("p",null,"You can also use ",(0,r.kt)("inlineCode",{parentName:"p"},"kubectl")," to see that this is the case."),(0,r.kt)("p",null,"When running only the default rollup:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dev-cluster % kubectl get deployments --all-namespaces\nNAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE\nastria-dev-cluster astria-blockscout 1/1 1 1 37s\nastria-dev-cluster astria-faucet 1/1 1 1 37s\nastria-dev-cluster astria-geth 1/1 1 1 37s\nastria-dev-cluster celestia-local 1/1 1 1 94m\nastria-dev-cluster sequencer 1/1 1 1 94m\ningress-nginx ingress-nginx-controller 1/1 1 1 94m\nkube-system calico-kube-controllers 1/1 1 1 95m\nkube-system coredns 2/2 2 2 95m\nlocal-path-storage local-path-provisioner 1/1 1 1 95m\n")),(0,r.kt)("p",null,"After deploying the second rollup:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dev-cluster % kubectl get deployments --all-namespaces\nNAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE\nastria-dev-cluster anotherrollup-blockscout 1/1 1 1 114s\nastria-dev-cluster anotherrollup-faucet 1/1 1 1 114s\nastria-dev-cluster anotherrollup-geth 1/1 1 1 114s\nastria-dev-cluster astria-blockscout 1/1 1 1 2m13s\nastria-dev-cluster astria-faucet 1/1 1 1 2m13s\nastria-dev-cluster astria-geth 1/1 1 1 2m13s\nastria-dev-cluster celestia-local 1/1 1 1 95m\nastria-dev-cluster sequencer 1/1 1 1 95m\ningress-nginx ingress-nginx-controller 1/1 1 1 96m\nkube-system calico-kube-controllers 1/1 1 1 97m\nkube-system coredns 2/2 2 2 97m\nlocal-path-storage local-path-provisioner 1/1 1 1 97m\n")))}d.isMDXComponent=!0},9276:(e,t,n)=>{n.d(t,{Z:()=>l});const l=n.p+"assets/images/multiple-rollups-7f46706e741f9afc0fc8e84c3e96d790.png"}}]); \ No newline at end of file diff --git a/assets/js/9c8fc7d9.ea006588.js b/assets/js/9c8fc7d9.ea006588.js deleted file mode 100644 index 6067e1e..0000000 --- a/assets/js/9c8fc7d9.ea006588.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[238],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var l=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function a(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var u=l.createContext({}),i=function(e){var t=l.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=i(e.components);return l.createElement(u.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},m=l.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,u=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=i(n),m=r,h=c["".concat(u,".").concat(m)]||c[m]||d[m]||o;return n?l.createElement(h,a(a({ref:t},p),{},{components:n})):l.createElement(h,a({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,a=new Array(o);a[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[c]="string"==typeof e?e:r,a[1]=s;for(var i=2;i{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>i});var l=n(7462),r=(n(7294),n(3905));const o={sidebar_position:3},a="Run Multiple Rollups Locally",s={unversionedId:"dev-cluster/run-multiple-rollups-locally",id:"dev-cluster/run-multiple-rollups-locally",title:"Run Multiple Rollups Locally",description:"To deploy your own rollup on the Astria Dusknet devnet, check out the",source:"@site/docs/dev-cluster/3-run-multiple-rollups-locally.md",sourceDirName:"dev-cluster",slug:"/dev-cluster/run-multiple-rollups-locally",permalink:"/docs/dev-cluster/run-multiple-rollups-locally",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/dev-cluster/3-run-multiple-rollups-locally.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docsSidebar",previous:{title:"Running a Local Rollup",permalink:"/docs/dev-cluster/deploy-a-local-rollup"},next:{title:"Shutting Down the Cluster",permalink:"/docs/dev-cluster/shutdown"}},u={},i=[{value:"What's Going on Under the Hood?",id:"whats-going-on-under-the-hood",level:3}],p={toc:i},c="wrapper";function d(e){let{components:t,...o}=e;return(0,r.kt)(c,(0,l.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"run-multiple-rollups-locally"},"Run Multiple Rollups Locally"),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"To deploy your own rollup on the Astria Dusknet devnet, check out the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/dusknet/overview/"},"instructions here"),"!")),(0,r.kt)("p",null,"At Astria we believe strongly that deploying a rollup should be as easy as deploying a smart contract. The dev-cluster shows this is indeed possible."),(0,r.kt)("p",null,"Navigate back to the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster"},"dev-cluster"),"\nrepo in your terminal and run the following command with your own rollup name\nand network id:"),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"NOTE:")," The default rollup name and network id are ",(0,r.kt)("inlineCode",{parentName:"p"},"astria")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"912559"),". When\ndeploying your second rollup you ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},"must"))," use a different name and number.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"just deploy-rollup \n")),(0,r.kt)("p",null,"As before, it will take a moment for everything to spin up, but in the meantime keep the the rollup name and network id handy and navigate back to your browser and open a new window with the following url, replacing ",(0,r.kt)("inlineCode",{parentName:"p"},"rollup_name")," with the name you just used to deploy your new rollup:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"http://blockscout..localdev.me/\n")),(0,r.kt)("p",null,"Once everything has spin up you will see a new block explorer for your new rollup."),(0,r.kt)("p",null,"You can now deploy transaction to that rollup independently.\nIn the ",(0,r.kt)("inlineCode",{parentName:"p"},"astria-web3/packages/evm-test-data")," directory open a new terminal and run the following:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"just generate-transactions \n")),(0,r.kt)("p",null,"As before, this command will deploy test transaction data to your new rollup.\nYou can also go back to your original terminal window for the test data deployment on the default rollup and rerun the ",(0,r.kt)("inlineCode",{parentName:"p"},"just generate-transactions")," command. If you switch back and forth between the default block explorer window and your new rollup window, you will see transactions showing up on each rollup independently!"),(0,r.kt)("p",null,"To navigate to the new Block Explorer and Faucet from the additional rollup,\ntake the rollup name that you used and replace ",(0,r.kt)("inlineCode",{parentName:"p"},"")," in the urls\nbelow:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"http://blockscout..localdev.me/\nhttp://faucet..localdev.me/\n")),(0,r.kt)("p",null,"The only limitations to running numerous rollups are the following:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Can your hardware handle it"),(0,r.kt)("li",{parentName:"ul"},"There are no rollup name and network id clashes")),(0,r.kt)("h3",{id:"whats-going-on-under-the-hood"},"What's Going on Under the Hood?"),(0,r.kt)("p",null,"One last thing to mention is what is actually happening when you deploy a new rollup in the dev-cluster. When you you deploy a new rollup the only new containers that are getting spun up in the cluster are a new rollup node, a conductor, block explorer, and faucet. Only one instance of the shared sequencer and the DA layer remain running and the transactions from all the rollups are collectively getting run though those networks."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Multiple Rollups",src:n(9276).Z,width:"5412",height:"2013"})),(0,r.kt)("p",null,"You can also use ",(0,r.kt)("inlineCode",{parentName:"p"},"kubectl")," to see that this is the case."),(0,r.kt)("p",null,"When running only the default rollup:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dev-cluster % kubectl get deployments --all-namespaces\nNAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE\nastria-dev-cluster astria-blockscout 1/1 1 1 37s\nastria-dev-cluster astria-faucet 1/1 1 1 37s\nastria-dev-cluster astria-geth 1/1 1 1 37s\nastria-dev-cluster celestia-local 1/1 1 1 94m\nastria-dev-cluster sequencer 1/1 1 1 94m\ningress-nginx ingress-nginx-controller 1/1 1 1 94m\nkube-system calico-kube-controllers 1/1 1 1 95m\nkube-system coredns 2/2 2 2 95m\nlocal-path-storage local-path-provisioner 1/1 1 1 95m\n")),(0,r.kt)("p",null,"After deploying the second rollup:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dev-cluster % kubectl get deployments --all-namespaces\nNAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE\nastria-dev-cluster anotherrollup-blockscout 1/1 1 1 114s\nastria-dev-cluster anotherrollup-faucet 1/1 1 1 114s\nastria-dev-cluster anotherrollup-geth 1/1 1 1 114s\nastria-dev-cluster astria-blockscout 1/1 1 1 2m13s\nastria-dev-cluster astria-faucet 1/1 1 1 2m13s\nastria-dev-cluster astria-geth 1/1 1 1 2m13s\nastria-dev-cluster celestia-local 1/1 1 1 95m\nastria-dev-cluster sequencer 1/1 1 1 95m\ningress-nginx ingress-nginx-controller 1/1 1 1 96m\nkube-system calico-kube-controllers 1/1 1 1 97m\nkube-system coredns 2/2 2 2 97m\nlocal-path-storage local-path-provisioner 1/1 1 1 97m\n")))}d.isMDXComponent=!0},9276:(e,t,n)=>{n.d(t,{Z:()=>l});const l=n.p+"assets/images/multiple-rollups-7f46706e741f9afc0fc8e84c3e96d790.png"}}]); \ No newline at end of file diff --git a/assets/js/a22447f8.acd25b84.js b/assets/js/a22447f8.acd25b84.js new file mode 100644 index 0000000..659a4ea --- /dev/null +++ b/assets/js/a22447f8.acd25b84.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[956],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=l(r),f=o,m=u["".concat(c,".").concat(f)]||u[f]||d[f]||i;return r?n.createElement(m,a(a({ref:t},p),{},{components:r})):n.createElement(m,a({ref:t},p))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=f;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:o,a[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const i={sidebar_position:1},a="Introduction",s={unversionedId:"overview-of-astria/introduction",id:"overview-of-astria/introduction",title:"Introduction",description:"instructions here!",source:"@site/docs/overview-of-astria/1-introduction.md",sourceDirName:"overview-of-astria",slug:"/overview-of-astria/introduction",permalink:"/docs/overview-of-astria/introduction",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/overview-of-astria/1-introduction.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docsSidebar",next:{title:"Why Decentralized Sequencers?",permalink:"/docs/overview-of-astria/why-decentralized-sequencers"}},c={},l=[],p={toc:l},u="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"introduction"},"Introduction"),(0,o.kt)("admonition",{title:"To deploy your own rollup on the Astria Dusknet devnet, check out the",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("a",{parentName:"p",href:"/docs/dusknet/overview/"},"instructions here"),"! :::"),(0,o.kt)("p",{parentName:"admonition"},"Astria is a shared sequencing network that allows many rollups to share a single\ndecentralized network of sequencers. These sequencers are simple and\npermissionless to join, completely replacing centralized sequencers."),(0,o.kt)("p",{parentName:"admonition"},"This shared sequencer network provides out-of-the-box censorship resistance,\nfast block confirmations, and atomic cross-rollup composability \u2013 all while\nretaining each rollup\u2019s sovereignty. Astria envisions a future where thousands\nof decentralized rollups flourish, each one tailored to meet the unique\nrequirements of different industries, applications, and use cases."),(0,o.kt)("p",{parentName:"admonition"},"To achieve this vision, we believe that deploying an economically secure,\ndecentralized, and censorship-resistant rollup should be as easy as deploying a\nsmart contract."),(0,o.kt)("p",{parentName:"admonition"},"See the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/astria"},"Astria repo here."))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a22447f8.c7171cc7.js b/assets/js/a22447f8.c7171cc7.js deleted file mode 100644 index 8cf2a0e..0000000 --- a/assets/js/a22447f8.c7171cc7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[956],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=l(r),f=o,m=p["".concat(c,".").concat(f)]||p[f]||d[f]||i;return r?n.createElement(m,a(a({ref:t},u),{},{components:r})):n.createElement(m,a({ref:t},u))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=f;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:o,a[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const i={sidebar_position:1},a="Introduction",s={unversionedId:"overview-of-astria/introduction",id:"overview-of-astria/introduction",title:"Introduction",description:"To deploy your own rollup on the Astria Dusknet devnet, check out the",source:"@site/docs/overview-of-astria/1-introduction.md",sourceDirName:"overview-of-astria",slug:"/overview-of-astria/introduction",permalink:"/docs/overview-of-astria/introduction",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/overview-of-astria/1-introduction.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"docsSidebar",next:{title:"Why Decentralized Sequencers?",permalink:"/docs/overview-of-astria/why-decentralized-sequencers"}},c={},l=[],u={toc:l},p="wrapper";function d(e){let{components:t,...r}=e;return(0,o.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"introduction"},"Introduction"),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"To deploy your own rollup on the Astria Dusknet devnet, check out the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/dusknet/overview/"},"instructions here"),"!")),(0,o.kt)("p",null,"Astria is a shared sequencing network that allows many rollups to share a single\ndecentralized network of sequencers. These sequencers are simple and\npermissionless to join, completely replacing centralized sequencers."),(0,o.kt)("p",null,"This shared sequencer network provides out-of-the-box censorship resistance,\nfast block confirmations, and atomic cross-rollup composability \u2013 all while\nretaining each rollup\u2019s sovereignty.\nAstria envisions a future where thousands of decentralized rollups\nflourish, each one tailored to meet the unique requirements of different\nindustries, applications, and use cases. "),(0,o.kt)("p",null,"To achieve this vision, we believe that\ndeploying an economically secure, decentralized, and censorship-resistant rollup\nshould be as easy as deploying a smart contract. "),(0,o.kt)("p",null,"See the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/astria"},"Astria repo here.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d3ba936f.34f21a1c.js b/assets/js/d3ba936f.34f21a1c.js deleted file mode 100644 index ec02136..0000000 --- a/assets/js/d3ba936f.34f21a1c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[601],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var i=a.createContext({}),p=function(e){var t=a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(i.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,i=e.parentName,c=u(e,["components","mdxType","originalType","parentName"]),s=p(n),k=r,m=s["".concat(i,".").concat(k)]||s[k]||d[k]||l;return n?a.createElement(m,o(o({ref:t},c),{},{components:n})):a.createElement(m,o({ref:t},c))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,o=new Array(l);o[0]=k;var u={};for(var i in t)hasOwnProperty.call(t,i)&&(u[i]=t[i]);u.originalType=e,u[s]="string"==typeof e?e:r,o[1]=u;for(var p=2;p{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>d,frontMatter:()=>l,metadata:()=>u,toc:()=>p});var a=n(7462),r=(n(7294),n(3905));const l={sidebar_position:3},o="Local Rollup Deployment",u={unversionedId:"dusknet/local-rollup-deployment",id:"dusknet/local-rollup-deployment",title:"Local Rollup Deployment",description:"Endpoints",source:"@site/docs/dusknet/3-local-rollup-deployment.md",sourceDirName:"dusknet",slug:"/dusknet/local-rollup-deployment",permalink:"/docs/dusknet/local-rollup-deployment",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/dusknet/3-local-rollup-deployment.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docsSidebar",previous:{title:"Overview",permalink:"/docs/dusknet/overview"},next:{title:"Cloud Rollup Deployment",permalink:"/docs/dusknet/cloud-rollup-deployment"}},i={},p=[{value:"Endpoints",id:"endpoints",level:2},{value:"Creating your own Genesis Account",id:"creating-your-own-genesis-account",level:2},{value:"Build the astria-cli",id:"build-the-astria-cli",level:2},{value:"Using the astria-cli",id:"using-the-astria-cli",level:2},{value:"Get Current Sequencer Block Height",id:"get-current-sequencer-block-height",level:3},{value:"Create Rollup Config",id:"create-rollup-config",level:2},{value:"Setup Local Environment",id:"setup-local-environment",level:2},{value:"Create a New Sequencer Account",id:"create-a-new-sequencer-account",level:2},{value:"Deploy the Configuration",id:"deploy-the-configuration",level:2},{value:"Observe your Deployment",id:"observe-your-deployment",level:2},{value:"Use cast to Interact with your Rollup",id:"use-cast-to-interact-with-your-rollup",level:2},{value:"Fund you Sequencer Account",id:"fund-you-sequencer-account",level:2}],c={toc:p},s="wrapper";function d(e){let{components:t,...l}=e;return(0,r.kt)(s,(0,a.Z)({},c,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"local-rollup-deployment"},"Local Rollup Deployment"),(0,r.kt)("h2",{id:"endpoints"},"Endpoints"),(0,r.kt)("p",null,"Endpoints for the remote cluster are the following:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"NAME"),(0,r.kt)("th",{parentName:"tr",align:null},"HOSTS"),(0,r.kt)("th",{parentName:"tr",align:null},"ADDRESS"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"EVM JSON RPC"),(0,r.kt)("td",{parentName:"tr",align:null},"rpc.evm.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.160.214.22")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"EVM Block Explorer"),(0,r.kt)("td",{parentName:"tr",align:null},"explorer.evm.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.111.167.16")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"EVM Faucet"),(0,r.kt)("td",{parentName:"tr",align:null},"faucet.evm.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"130.211.4.120")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Sequencer RPC"),(0,r.kt)("td",{parentName:"tr",align:null},"rpc.sequencer.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.111.73.187")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Sequencer Faucet"),(0,r.kt)("td",{parentName:"tr",align:null},"faucet.sequencer.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.36.8.102")))),(0,r.kt)("h2",{id:"creating-your-own-genesis-account"},"Creating your own Genesis Account"),(0,r.kt)("p",null,"You can add genesis account(s) to your rollup during configuration.\nThis is done by ",(0,r.kt)("inlineCode",{parentName:"p"},"export"),"ing the additional ",(0,r.kt)("inlineCode",{parentName:"p"},"ROLLUP_GENESIS_ACCOUNTS")," environment variable."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_GENESIS_ACCOUNTS=:100000000000000000000\n")),(0,r.kt)("p",null,"You can create an account using"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast w new\n")),(0,r.kt)("p",null,"to create a new account:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"Successfully created new keypair.\nAddress: 0xfFe9...5f8b # \nPrivate key: 0x332e...a8fb # \n")),(0,r.kt)("p",null,"Set ",(0,r.kt)("inlineCode",{parentName:"p"},"")," to the address printed out from the new command, and\n",(0,r.kt)("inlineCode",{parentName:"p"},"export")," the private key to the env vars using:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_FAUCET_PRIV_KEY=\n")),(0,r.kt)("p",null,"This export is also shown in the export block in the next section."),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"NEVER")," use a private key you use on a live network. "),(0,r.kt)("p",{parentName:"admonition"},"For ease of use we recommend you set this to an key which you have access to")),(0,r.kt)("h2",{id:"build-the-astria-cli"},"Build the ",(0,r.kt)("inlineCode",{parentName:"h2"},"astria-cli")),(0,r.kt)("p",null,"Clone the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/astria/tree/main"},"Astria repo")," and build\na new config using the ",(0,r.kt)("inlineCode",{parentName:"p"},"astria-cli"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:astriaorg/astria.git\ncd astria\njust install-cli\n")),(0,r.kt)("h2",{id:"using-the-astria-cli"},"Using the ",(0,r.kt)("inlineCode",{parentName:"h2"},"astria-cli")),(0,r.kt)("h3",{id:"get-current-sequencer-block-height"},"Get Current Sequencer Block Height"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"astria-cli sequencer blockheight get \\\n --sequencer-url https://rpc.sequencer.dusk-1.devnet.astria.org/\n")),(0,r.kt)("p",null,"Keep track of this block height as it will be used for making the rollup config\nlater on. You will use this printed height in place of\n",(0,r.kt)("inlineCode",{parentName:"p"},"")," in the steps below."),(0,r.kt)("p",null,"Replace the following tags in the sections below, as follows:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Var Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Var Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"String"),(0,r.kt)("td",{parentName:"tr",align:null},"The name of your rollup")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"u64"),(0,r.kt)("td",{parentName:"tr",align:null},"The id of your network")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"u64"),(0,r.kt)("td",{parentName:"tr",align:null},"The height of the sequencer (found above)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"[u8; 40]"),(0,r.kt)("td",{parentName:"tr",align:null},"A wallet address")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"u64"),(0,r.kt)("td",{parentName:"tr",align:null},"A balance. It is useful to make this a large value.")))),(0,r.kt)("h2",{id:"create-rollup-config"},"Create Rollup Config"),(0,r.kt)("p",null,"You can use environment variables to set the configuration for the rollup\nconfig creation. Replace all the ",(0,r.kt)("inlineCode",{parentName:"p"},"<>")," tags with their corresponding values. "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_USE_TTY=true\nexport ROLLUP_LOG_LEVEL=DEBUG\nexport ROLLUP_NAME=\nexport ROLLUP_NETWORK_ID=\nexport ROLLUP_SKIP_EMPTY_BLOCKS=false\nexport ROLLUP_GENESIS_ACCOUNTS=:\nexport ROLLUP_SEQUENCER_INITIAL_BLOCK_HEIGHT=\nexport ROLLUP_SEQUENCER_WEBSOCKET=wss://rpc.sequencer.dusk-1.devnet.astria.org/websocket\nexport ROLLUP_SEQUENCER_RPC=https://rpc.sequencer.dusk-1.devnet.astria.org\n")),(0,r.kt)("p",null,"Then just run the config create command:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"astria-cli rollup config create\n")),(0,r.kt)("p",null,"You can then run:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"cat -rollup-conf.yaml\n")),(0,r.kt)("p",null,"to print out the config file contents to double check everything:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"config:\n useTTY: true\n logLevel: DEBUG\n rollup:\n name: \n chainId: # derived from rollup name\n networkId: \n skipEmptyBlocks: true\n genesisAccounts: \n - address: 0x\n balance: ''\n sequencer:\n initialBlockHeight: \n websocket: ws://rpc.sequencer.dusk-1.devnet.astria.org/websocket\n rpc: http://rpc.sequencer.dusk-1.devnet.astria.org\n celestia:\n fullNodeUrl: http://celestia-service:26658\n")),(0,r.kt)("p",null,"Export this file to the env vars as follows:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_CONF_FILE=-rollup-conf.yaml\n")),(0,r.kt)("p",null,"At this point, if you do not want to add any genesis accounts to your rollup you\ncan move on to the next section."),(0,r.kt)("p",null,"If you do want to add an account(s), see the next section."),(0,r.kt)("h2",{id:"setup-local-environment"},"Setup Local Environment"),(0,r.kt)("p",null,"We use part of the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster"},"Astria\ndev-cluster")," to setup a local\nKubernetes (k8s) cluster where we will deploy our local rollup."),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"Make sure that Docker is running before deploying with ",(0,r.kt)("inlineCode",{parentName:"p"},"just"),".")),(0,r.kt)("p",null,"In the ",(0,r.kt)("strong",{parentName:"p"},"dev-cluster repo"),", run:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"git clone git@github.com:astriaorg/dev-cluster.git\ncd dev-cluster\njust create-cluster\njust deploy-ingress-controller\njust wait-for-ingress-controller\n")),(0,r.kt)("p",null,"This gives us a local environment compatible with our helm charts."),(0,r.kt)("h2",{id:"create-a-new-sequencer-account"},"Create a New Sequencer Account"),(0,r.kt)("p",null,"Back in the ",(0,r.kt)("strong",{parentName:"p"},"Astria repo"),", run the cli to create the address and key\ninformation for a new sequencer account. "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"astria-cli sequencer account create\n")),(0,r.kt)("p",null,"The address, public and private keys will be different from those below. Save\nthese values for later use."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'Create Sequencer Account\n\nPrivate Key: "5562...1622" # \nPublic Key: "ec20...f613" # \nAddress: "8a2f...5f68"\n')),(0,r.kt)("p",null,"Keep track of the ",(0,r.kt)("inlineCode",{parentName:"p"},"")," as it will be used with the\nFaucet later on for funding your sequencer account."),(0,r.kt)("p",null,"Now export the private key printed above:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export SEQUENCER_PRIV_KEY=\n")),(0,r.kt)("h2",{id:"deploy-the-configuration"},"Deploy the Configuration"),(0,r.kt)("p",null,"Then deploy the configuration with:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"astria-cli rollup deployment create \\\n --config $ROLLUP_CONF_FILE \\\n --faucet-private-key $ROLLUP_FAUCET_PRIV_KEY \\\n --sequencer-private-key $SEQUENCER_PRIV_KEY\n")),(0,r.kt)("h2",{id:"observe-your-deployment"},"Observe your Deployment"),(0,r.kt)("p",null,"Your rollups utility endpoints are as follows:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Utility"),(0,r.kt)("th",{parentName:"tr",align:null},"URL"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Block Explorer"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"http://blockscout."},"http://blockscout."),".localdev.me/")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Faucet"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"http://faucet."},"http://faucet."),".localdev.me/")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"RPC"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("a",{parentName:"td",href:"http://executor."},"http://executor."),".localdev.me/")))),(0,r.kt)("p",null,"Open the URLs in your browser to view your running rollup."),(0,r.kt)("p",null,"You can also open the Block Explorer in a new browser window to see the faucet\ntransaction appear, or any of the transactions you have sent using ",(0,r.kt)("inlineCode",{parentName:"p"},"cast"),"."),(0,r.kt)("h2",{id:"use-cast-to-interact-with-your-rollup"},"Use ",(0,r.kt)("inlineCode",{parentName:"h2"},"cast")," to Interact with your Rollup"),(0,r.kt)("p",null,"Use ",(0,r.kt)("inlineCode",{parentName:"p"},"cast")," to view the blocks on your rollup."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"# replace with the name you used in your configuration\nexport ETH_RPC_URL=http://executor.$ROLLUP_NAME.localdev.me/\ncast block 0\n")),(0,r.kt)("p",null,"Which should print something like this:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"baseFeePerGas 1000000000\ndifficulty 10000000\nextraData 0x\ngasLimit 8000000\ngasUsed 0\nhash 0xa2d5f000ef275b5f6ce6af5a0de50c17e5893c5ea664b77f534eb62f317caff1\nlogsBloom 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\nminer 0x0000000000000000000000000000000000000000\nmixHash 0x0000000000000000000000000000000000000000000000000000000000000000\nnonce 0x0000000000000000\nnumber 0\nparentHash 0x0000000000000000000000000000000000000000000000000000000000000000\nreceiptsRoot 0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421\nsealFields []\nsha3Uncles 0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\nsize 512\nstateRoot 0xc1a913facf57b18de72d25155293c53b2a463d93a1de735269410b8663f2efca\ntimestamp 0\nwithdrawalsRoot\ntotalDifficulty 10000000\ntransactions: []\n")),(0,r.kt)("p",null,"If you have an address you would like to deposit funds to, export that address\nto the env vars:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export REC_ADDR=
\n")),(0,r.kt)("p",null,"You can also use ",(0,r.kt)("inlineCode",{parentName:"p"},"cast")," to view your balance:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast balance $REC_ADDR\n")),(0,r.kt)("p",null,"Send an ammount to your address:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast send $REC_ADDR --value 10000000000000000000 --private-key $ROLLUP_FAUCET_PRIV_KEY\n")),(0,r.kt)("p",null,"And view your new balance:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast balance $REC_ADDR\n")),(0,r.kt)("h2",{id:"fund-you-sequencer-account"},"Fund you Sequencer Account"),(0,r.kt)("p",null,"Using your sequencer pub key you created in the ",(0,r.kt)("a",{parentName:"p",href:"#create-a-new-sequencer-account"},"Create a New Sequencer\nAccount"),", copy and past the\n",(0,r.kt)("inlineCode",{parentName:"p"},"")," into the input on the faucet page, and mint funds\nto your account:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Sequencer Faucet",src:n(9596).Z,width:"1490",height:"794"})))}d.isMDXComponent=!0},9596:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/sequencer-faucet-63615ccc21b8c454150825d608e5dea6.png"}}]); \ No newline at end of file diff --git a/assets/js/d3ba936f.4f01a511.js b/assets/js/d3ba936f.4f01a511.js new file mode 100644 index 0000000..ce13070 --- /dev/null +++ b/assets/js/d3ba936f.4f01a511.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[601],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var u=a.createContext({}),p=function(e){var t=a.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(u.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,u=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),s=p(n),k=r,m=s["".concat(u,".").concat(k)]||s[k]||d[k]||l;return n?a.createElement(m,o(o({ref:t},c),{},{components:n})):a.createElement(m,o({ref:t},c))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,o=new Array(l);o[0]=k;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[s]="string"==typeof e?e:r,o[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var a=n(7462),r=(n(7294),n(3905));const l={sidebar_position:3},o="Local Rollup Deployment",i={unversionedId:"dusknet/local-rollup-deployment",id:"dusknet/local-rollup-deployment",title:"Local Rollup Deployment",description:"Endpoints",source:"@site/docs/dusknet/3-local-rollup-deployment.md",sourceDirName:"dusknet",slug:"/dusknet/local-rollup-deployment",permalink:"/docs/dusknet/local-rollup-deployment",draft:!1,editUrl:"https://github.com/astriaorg/docs/docs/dusknet/3-local-rollup-deployment.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docsSidebar",previous:{title:"Overview",permalink:"/docs/dusknet/overview"},next:{title:"Cloud Rollup Deployment",permalink:"/docs/dusknet/cloud-rollup-deployment"}},u={},p=[{value:"Endpoints",id:"endpoints",level:2},{value:"Creating your own Genesis Account",id:"creating-your-own-genesis-account",level:2},{value:"Build the astria-cli",id:"build-the-astria-cli",level:2},{value:"Using the astria-cli",id:"using-the-astria-cli",level:2},{value:"Get Current Sequencer Block Height",id:"get-current-sequencer-block-height",level:3},{value:"Create Rollup Config",id:"create-rollup-config",level:2},{value:"Setup Local Environment",id:"setup-local-environment",level:2},{value:"Create a New Sequencer Account",id:"create-a-new-sequencer-account",level:2},{value:"Deploy the Configuration",id:"deploy-the-configuration",level:2},{value:"Observe your Deployment",id:"observe-your-deployment",level:2},{value:"Use cast to Interact with your Rollup",id:"use-cast-to-interact-with-your-rollup",level:2},{value:"Fund you Sequencer Account",id:"fund-you-sequencer-account",level:2}],c={toc:p},s="wrapper";function d(e){let{components:t,...l}=e;return(0,r.kt)(s,(0,a.Z)({},c,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"local-rollup-deployment"},"Local Rollup Deployment"),(0,r.kt)("h2",{id:"endpoints"},"Endpoints"),(0,r.kt)("p",null,"Endpoints for the remote cluster are the following:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"NAME"),(0,r.kt)("th",{parentName:"tr",align:null},"HOSTS"),(0,r.kt)("th",{parentName:"tr",align:null},"ADDRESS"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"EVM JSON RPC"),(0,r.kt)("td",{parentName:"tr",align:null},"rpc.evm.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.160.214.22")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"EVM Block Explorer"),(0,r.kt)("td",{parentName:"tr",align:null},"explorer.evm.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.111.167.16")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"EVM Faucet"),(0,r.kt)("td",{parentName:"tr",align:null},"faucet.evm.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"130.211.4.120")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Sequencer RPC"),(0,r.kt)("td",{parentName:"tr",align:null},"rpc.sequencer.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.111.73.187")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Sequencer Faucet"),(0,r.kt)("td",{parentName:"tr",align:null},"faucet.sequencer.dusk-1.devnet.astria.org"),(0,r.kt)("td",{parentName:"tr",align:null},"34.36.8.102")))),(0,r.kt)("h2",{id:"creating-your-own-genesis-account"},"Creating your own Genesis Account"),(0,r.kt)("p",null,"You can add genesis account(s) to your rollup during configuration. This is done\nby ",(0,r.kt)("inlineCode",{parentName:"p"},"export"),"ing the additional ",(0,r.kt)("inlineCode",{parentName:"p"},"ROLLUP_GENESIS_ACCOUNTS")," environment variable."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_GENESIS_ACCOUNTS=:100000000000000000000\n")),(0,r.kt)("p",null,"You can create an account using"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast w new\n")),(0,r.kt)("p",null,"to create a new account:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"Successfully created new keypair.\nAddress: 0xfFe9...5f8b # \nPrivate key: 0x332e...a8fb # \n")),(0,r.kt)("p",null,"Set ",(0,r.kt)("inlineCode",{parentName:"p"},"")," to the address printed out from the new command, and\n",(0,r.kt)("inlineCode",{parentName:"p"},"export")," the private key to the env vars using:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_FAUCET_PRIV_KEY=\n")),(0,r.kt)("p",null,"This export is also shown in the export block in the next section."),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"NEVER")," use a private key you use on a live network."),(0,r.kt)("p",{parentName:"admonition"},"For ease of use we recommend you set this to an key which you have access to")),(0,r.kt)("h2",{id:"build-the-astria-cli"},"Build the ",(0,r.kt)("inlineCode",{parentName:"h2"},"astria-cli")),(0,r.kt)("p",null,"Clone the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/astria/tree/main"},"Astria repo")," and build\na new config using the ",(0,r.kt)("inlineCode",{parentName:"p"},"astria-cli"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:astriaorg/astria.git\ncd astria\njust install-cli\n")),(0,r.kt)("h2",{id:"using-the-astria-cli"},"Using the ",(0,r.kt)("inlineCode",{parentName:"h2"},"astria-cli")),(0,r.kt)("h3",{id:"get-current-sequencer-block-height"},"Get Current Sequencer Block Height"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"astria-cli sequencer blockheight get \\\n --sequencer-url https://rpc.sequencer.dusk-1.devnet.astria.org/\n")),(0,r.kt)("p",null,"Keep track of this block height as it will be used for making the rollup config\nlater on. You will use this printed height in place of\n",(0,r.kt)("inlineCode",{parentName:"p"},"")," in the steps below."),(0,r.kt)("p",null,"Replace the following tags in the sections below, as follows:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Var Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Var Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"String"),(0,r.kt)("td",{parentName:"tr",align:null},"The name of your rollup")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"u64"),(0,r.kt)("td",{parentName:"tr",align:null},"The id of your network")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"u64"),(0,r.kt)("td",{parentName:"tr",align:null},"The height of the sequencer (found above)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"[u8; 40]"),(0,r.kt)("td",{parentName:"tr",align:null},"A wallet address")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"")),(0,r.kt)("td",{parentName:"tr",align:null},"u64"),(0,r.kt)("td",{parentName:"tr",align:null},"A balance. It is useful to make this a large value.")))),(0,r.kt)("h2",{id:"create-rollup-config"},"Create Rollup Config"),(0,r.kt)("p",null,"You can use environment variables to set the configuration for the rollup\nconfig creation. Replace all the ",(0,r.kt)("inlineCode",{parentName:"p"},"<>")," tags with their corresponding values."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_USE_TTY=true\nexport ROLLUP_LOG_LEVEL=DEBUG\nexport ROLLUP_NAME=\nexport ROLLUP_NETWORK_ID=\nexport ROLLUP_SKIP_EMPTY_BLOCKS=false\nexport ROLLUP_GENESIS_ACCOUNTS=:\nexport ROLLUP_SEQUENCER_INITIAL_BLOCK_HEIGHT=\nexport ROLLUP_SEQUENCER_WEBSOCKET=wss://rpc.sequencer.dusk-1.devnet.astria.org/websocket\nexport ROLLUP_SEQUENCER_RPC=https://rpc.sequencer.dusk-1.devnet.astria.org\n")),(0,r.kt)("p",null,"Then just run the config create command:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"astria-cli rollup config create\n")),(0,r.kt)("p",null,"You can then run:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"cat -rollup-conf.yaml\n")),(0,r.kt)("p",null,"to print out the config file contents to double check everything:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"config:\n useTTY: true\n logLevel: DEBUG\n rollup:\n name: \n chainId: # derived from rollup name\n networkId: \n skipEmptyBlocks: true\n genesisAccounts: \n - address: 0x\n balance: ''\n sequencer:\n initialBlockHeight: \n websocket: ws://rpc.sequencer.dusk-1.devnet.astria.org/websocket\n rpc: http://rpc.sequencer.dusk-1.devnet.astria.org\n celestia:\n fullNodeUrl: http://celestia-service:26658\n")),(0,r.kt)("p",null,"Export this file to the env vars as follows:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export ROLLUP_CONF_FILE=-rollup-conf.yaml\n")),(0,r.kt)("p",null,"At this point, if you do not want to add any genesis accounts to your rollup you\ncan move on to the next section."),(0,r.kt)("p",null,"If you do want to add an account(s), see the next section."),(0,r.kt)("h2",{id:"setup-local-environment"},"Setup Local Environment"),(0,r.kt)("p",null,"We use part of the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/astriaorg/dev-cluster"},"Astria\ndev-cluster")," to setup a local\nKubernetes (k8s) cluster where we will deploy our local rollup."),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"Make sure that Docker is running before deploying with ",(0,r.kt)("inlineCode",{parentName:"p"},"just"),".")),(0,r.kt)("p",null,"In the ",(0,r.kt)("strong",{parentName:"p"},"dev-cluster repo"),", run:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"git clone git@github.com:astriaorg/dev-cluster.git\ncd dev-cluster\njust create-cluster\njust deploy-ingress-controller\njust wait-for-ingress-controller\n")),(0,r.kt)("p",null,"This gives us a local environment compatible with our helm charts."),(0,r.kt)("h2",{id:"create-a-new-sequencer-account"},"Create a New Sequencer Account"),(0,r.kt)("p",null,"Back in the ",(0,r.kt)("strong",{parentName:"p"},"Astria repo"),", run the cli to create the address and key\ninformation for a new sequencer account."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"astria-cli sequencer account create\n")),(0,r.kt)("p",null,"The address, public and private keys will be different from those below. Save\nthese values for later use."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'Create Sequencer Account\n\nPrivate Key: "5562...1622" # \nPublic Key: "ec20...f613" # \nAddress: "8a2f...5f68"\n')),(0,r.kt)("p",null,"Keep track of the ",(0,r.kt)("inlineCode",{parentName:"p"},"")," as it will be used with the\nFaucet later on for funding your sequencer account."),(0,r.kt)("p",null,"Now export the private key printed above:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export SEQUENCER_PRIV_KEY=\n")),(0,r.kt)("h2",{id:"deploy-the-configuration"},"Deploy the Configuration"),(0,r.kt)("p",null,"Then deploy the configuration with:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"astria-cli rollup deployment create \\\n --config $ROLLUP_CONF_FILE \\\n --faucet-private-key $ROLLUP_FAUCET_PRIV_KEY \\\n --sequencer-private-key $SEQUENCER_PRIV_KEY\n")),(0,r.kt)("h2",{id:"observe-your-deployment"},"Observe your Deployment"),(0,r.kt)("p",null,"Your rollups utility endpoints are as follows:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Utility"),(0,r.kt)("th",{parentName:"tr",align:null},"URL"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Block Explorer"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"http://blockscout..localdev.me/"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Faucet"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"http://faucet..localdev.me/"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"RPC"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"http://executor..localdev.me/"))))),(0,r.kt)("p",null,"Open the URLs in your browser to view your running rollup."),(0,r.kt)("p",null,"You can also open the Block Explorer in a new browser window to see the faucet\ntransaction appear, or any of the transactions you have sent using ",(0,r.kt)("inlineCode",{parentName:"p"},"cast"),"."),(0,r.kt)("h2",{id:"use-cast-to-interact-with-your-rollup"},"Use ",(0,r.kt)("inlineCode",{parentName:"h2"},"cast")," to Interact with your Rollup"),(0,r.kt)("p",null,"Use ",(0,r.kt)("inlineCode",{parentName:"p"},"cast")," to view the blocks on your rollup."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"# replace with the name you used in your configuration\nexport ETH_RPC_URL=http://executor.$ROLLUP_NAME.localdev.me/\ncast block 0\n")),(0,r.kt)("p",null,"Which should print something like this:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"baseFeePerGas 1000000000\ndifficulty 10000000\nextraData 0x\ngasLimit 8000000\ngasUsed 0\nhash 0xa2d5f000ef275b5f6ce6af5a0de50c17e5893c5ea664b77f534eb62f317caff1\nlogsBloom 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\nminer 0x0000000000000000000000000000000000000000\nmixHash 0x0000000000000000000000000000000000000000000000000000000000000000\nnonce 0x0000000000000000\nnumber 0\nparentHash 0x0000000000000000000000000000000000000000000000000000000000000000\nreceiptsRoot 0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421\nsealFields []\nsha3Uncles 0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\nsize 512\nstateRoot 0xc1a913facf57b18de72d25155293c53b2a463d93a1de735269410b8663f2efca\ntimestamp 0\nwithdrawalsRoot\ntotalDifficulty 10000000\ntransactions: []\n")),(0,r.kt)("p",null,"If you have an address you would like to deposit funds to, export that address\nto the env vars:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export REC_ADDR=
\n")),(0,r.kt)("p",null,"You can also use ",(0,r.kt)("inlineCode",{parentName:"p"},"cast")," to view your balance:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast balance $REC_ADDR\n")),(0,r.kt)("p",null,"Send an ammount to your address:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast send $REC_ADDR --value 10000000000000000000 --private-key $ROLLUP_FAUCET_PRIV_KEY\n")),(0,r.kt)("p",null,"And view your new balance:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cast balance $REC_ADDR\n")),(0,r.kt)("h2",{id:"fund-you-sequencer-account"},"Fund you Sequencer Account"),(0,r.kt)("p",null,"Using your sequencer pub key you created in the ",(0,r.kt)("a",{parentName:"p",href:"#create-a-new-sequencer-account"},"Create a New Sequencer\nAccount"),", copy and past the\n",(0,r.kt)("inlineCode",{parentName:"p"},"")," into the input on the faucet page, and mint funds\nto your account:"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Sequencer Faucet",src:n(9596).Z,width:"1490",height:"794"})))}d.isMDXComponent=!0},9596:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/sequencer-faucet-63615ccc21b8c454150825d608e5dea6.png"}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.017f4293.js b/assets/js/runtime~main.750ee231.js similarity index 50% rename from assets/js/runtime~main.017f4293.js rename to assets/js/runtime~main.750ee231.js index 00d38fe..0d40a7c 100644 --- a/assets/js/runtime~main.017f4293.js +++ b/assets/js/runtime~main.750ee231.js @@ -1 +1 @@ -(()=>{"use strict";var e,t,r,o,f,a={},d={};function n(e){var t=d[e];if(void 0!==t)return t.exports;var r=d[e]={id:e,loaded:!1,exports:{}};return a[e].call(r.exports,r,r.exports,n),r.loaded=!0,r.exports}n.m=a,n.c=d,e=[],n.O=(t,r,o,f)=>{if(!r){var a=1/0;for(i=0;i=f)&&Object.keys(n.O).every((e=>n.O[e](r[b])))?r.splice(b--,1):(d=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[r,o,f]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(e,o){if(1&o&&(e=this(e)),8&o)return e;if("object"==typeof e&&e){if(4&o&&e.__esModule)return e;if(16&o&&"function"==typeof e.then)return e}var f=Object.create(null);n.r(f);var a={};t=t||[null,r({}),r([]),r(r)];for(var d=2&o&&e;"object"==typeof d&&!~t.indexOf(d);d=r(d))Object.getOwnPropertyNames(d).forEach((t=>a[t]=()=>e[t]));return a.default=()=>e,n.d(f,a),f},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((t,r)=>(n.f[r](e,t),t)),[])),n.u=e=>"assets/js/"+({5:"94d4bf4c",28:"25349772",53:"935f2afb",85:"1f391b9e",110:"3756debb",111:"a2bc7f68",186:"39dc615d",237:"1df93b7f",238:"9c8fc7d9",241:"28ec242d",309:"33cb50ef",334:"247783bb",414:"393be207",439:"29700941",494:"6ff8e36b",514:"1be78505",520:"3486820e",521:"9171b866",582:"b2019779",593:"d4497d8e",601:"d3ba936f",645:"a7434565",671:"f3471ce4",823:"39034b90",918:"17896441",940:"22085d9f",956:"a22447f8"}[e]||e)+"."+{5:"8bf6550a",28:"ca0be864",53:"26c58d2d",85:"53e11c87",110:"5c455cb4",111:"6af03ab7",186:"9d83c664",237:"e4a55cbc",238:"ea006588",241:"5145909c",309:"8740f035",334:"f0025cee",414:"6d991e03",439:"c3d1e567",455:"98acbaa8",494:"63233958",514:"131974b6",520:"d8b3f210",521:"51ad09bc",582:"037b66a1",593:"810793a7",601:"34f21a1c",645:"92d5216c",671:"ce74f729",823:"911730a5",918:"353f5eda",940:"23f2e7e5",956:"c7171cc7",972:"d5cc17b1"}[e]+".js",n.miniCssF=e=>{},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o={},f="docs:",n.l=(e,t,r,a)=>{if(o[e])o[e].push(t);else{var d,b;if(void 0!==r)for(var c=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var f=o[e];if(delete o[e],d.parentNode&&d.parentNode.removeChild(d),f&&f.forEach((e=>e(r))),t)return t(r)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),b&&document.head.appendChild(d)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="/",n.gca=function(e){return e={17896441:"918",25349772:"28",29700941:"439","94d4bf4c":"5","935f2afb":"53","1f391b9e":"85","3756debb":"110",a2bc7f68:"111","39dc615d":"186","1df93b7f":"237","9c8fc7d9":"238","28ec242d":"241","33cb50ef":"309","247783bb":"334","393be207":"414","6ff8e36b":"494","1be78505":"514","3486820e":"520","9171b866":"521",b2019779:"582",d4497d8e:"593",d3ba936f:"601",a7434565:"645",f3471ce4:"671","39034b90":"823","22085d9f":"940",a22447f8:"956"}[e]||e,n.p+n.u(e)},(()=>{var e={303:0,532:0};n.f.j=(t,r)=>{var o=n.o(e,t)?e[t]:void 0;if(0!==o)if(o)r.push(o[2]);else if(/^(303|532)$/.test(t))e[t]=0;else{var f=new Promise(((r,f)=>o=e[t]=[r,f]));r.push(o[2]=f);var a=n.p+n.u(t),d=new Error;n.l(a,(r=>{if(n.o(e,t)&&(0!==(o=e[t])&&(e[t]=void 0),o)){var f=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;d.message="Loading chunk "+t+" failed.\n("+f+": "+a+")",d.name="ChunkLoadError",d.type=f,d.request=a,o[1](d)}}),"chunk-"+t,t)}},n.O.j=t=>0===e[t];var t=(t,r)=>{var o,f,a=r[0],d=r[1],b=r[2],c=0;if(a.some((t=>0!==e[t]))){for(o in d)n.o(d,o)&&(n.m[o]=d[o]);if(b)var i=b(n)}for(t&&t(r);c{"use strict";var e,t,r,o,a,f={},d={};function n(e){var t=d[e];if(void 0!==t)return t.exports;var r=d[e]={id:e,loaded:!1,exports:{}};return f[e].call(r.exports,r,r.exports,n),r.loaded=!0,r.exports}n.m=f,n.c=d,e=[],n.O=(t,r,o,a)=>{if(!r){var f=1/0;for(i=0;i=a)&&Object.keys(n.O).every((e=>n.O[e](r[c])))?r.splice(c--,1):(d=!1,a0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[r,o,a]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(e,o){if(1&o&&(e=this(e)),8&o)return e;if("object"==typeof e&&e){if(4&o&&e.__esModule)return e;if(16&o&&"function"==typeof e.then)return e}var a=Object.create(null);n.r(a);var f={};t=t||[null,r({}),r([]),r(r)];for(var d=2&o&&e;"object"==typeof d&&!~t.indexOf(d);d=r(d))Object.getOwnPropertyNames(d).forEach((t=>f[t]=()=>e[t]));return f.default=()=>e,n.d(a,f),a},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((t,r)=>(n.f[r](e,t),t)),[])),n.u=e=>"assets/js/"+({5:"94d4bf4c",28:"25349772",53:"935f2afb",85:"1f391b9e",110:"3756debb",111:"a2bc7f68",186:"39dc615d",237:"1df93b7f",238:"9c8fc7d9",241:"28ec242d",309:"33cb50ef",334:"247783bb",414:"393be207",439:"29700941",494:"6ff8e36b",514:"1be78505",520:"3486820e",521:"9171b866",582:"b2019779",593:"d4497d8e",601:"d3ba936f",645:"a7434565",671:"f3471ce4",823:"39034b90",918:"17896441",940:"22085d9f",956:"a22447f8"}[e]||e)+"."+{5:"8bf6550a",28:"85007146",53:"1f082fc1",85:"53e11c87",110:"b3e2bfd4",111:"6af03ab7",186:"963b2cb3",237:"1a5c27a7",238:"cc6520c7",241:"9260f867",309:"8740f035",334:"f0025cee",414:"6d991e03",439:"5f59edbc",455:"98acbaa8",494:"63233958",514:"131974b6",520:"d1814f44",521:"51ad09bc",582:"037b66a1",593:"810793a7",601:"4f01a511",645:"92d5216c",671:"ce74f729",823:"911730a5",918:"353f5eda",940:"23f2e7e5",956:"acd25b84",972:"d5cc17b1"}[e]+".js",n.miniCssF=e=>{},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o={},a="docs:",n.l=(e,t,r,f)=>{if(o[e])o[e].push(t);else{var d,c;if(void 0!==r)for(var b=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var a=o[e];if(delete o[e],d.parentNode&&d.parentNode.removeChild(d),a&&a.forEach((e=>e(r))),t)return t(r)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),c&&document.head.appendChild(d)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="/",n.gca=function(e){return e={17896441:"918",25349772:"28",29700941:"439","94d4bf4c":"5","935f2afb":"53","1f391b9e":"85","3756debb":"110",a2bc7f68:"111","39dc615d":"186","1df93b7f":"237","9c8fc7d9":"238","28ec242d":"241","33cb50ef":"309","247783bb":"334","393be207":"414","6ff8e36b":"494","1be78505":"514","3486820e":"520","9171b866":"521",b2019779:"582",d4497d8e:"593",d3ba936f:"601",a7434565:"645",f3471ce4:"671","39034b90":"823","22085d9f":"940",a22447f8:"956"}[e]||e,n.p+n.u(e)},(()=>{var e={303:0,532:0};n.f.j=(t,r)=>{var o=n.o(e,t)?e[t]:void 0;if(0!==o)if(o)r.push(o[2]);else if(/^(303|532)$/.test(t))e[t]=0;else{var a=new Promise(((r,a)=>o=e[t]=[r,a]));r.push(o[2]=a);var f=n.p+n.u(t),d=new Error;n.l(f,(r=>{if(n.o(e,t)&&(0!==(o=e[t])&&(e[t]=void 0),o)){var a=r&&("load"===r.type?"missing":r.type),f=r&&r.target&&r.target.src;d.message="Loading chunk "+t+" failed.\n("+a+": "+f+")",d.name="ChunkLoadError",d.type=a,d.request=f,o[1](d)}}),"chunk-"+t,t)}},n.O.j=t=>0===e[t];var t=(t,r)=>{var o,a,f=r[0],d=r[1],c=r[2],b=0;if(f.some((t=>0!==e[t]))){for(o in d)n.o(d,o)&&(n.m[o]=d[o]);if(c)var i=c(n)}for(t&&t(r);b Running a Local Rollup | Astria Docs - + @@ -15,11 +15,14 @@ the default in helm/rollup/values.yaml in the config.rollup definition.

For reference, these are:

  • Rollup name: astria
  • Network Id: 912559

This will also take a moment as the rollup node, block explorer, and faucet spin -up. You can check the progress of the deployment with the following command:

kubectl get deployments --all-namespaces

Or you can run:

just wait-for-rollup

Once deployed, you can view the block explorer and faucet by opening a couple new windows in your browser and going to to the -following urls. -For the block explorer:

http://blockscout.astria.localdev.me/

For the faucet:

http://faucet.astria.localdev.me/

You can copy and paste a wallet address on the faucet page and give yourself 1 RIA.

To test out the block explorer, open a terminal in the astria-web3 repo you downloaded earlier and navigate to the packages/evm-test-data/ and run the following command:

just generate-transactions

This command uses the default rollup name and network id (see above), and will -submit commands to the newly deployed default rollup.

You can now go back to your browser and pull up the block explorer and you will now see blocks with transactions getting created in real time.

- +up. You can check the progress of the deployment with the following command:

kubectl get deployments --all-namespaces

Or you can run:

just wait-for-rollup

Once deployed, you can view the block explorer and faucet by opening a couple +new windows in your browser and going to to the following urls.

For the block explorer:

http://blockscout.astria.localdev.me/

For the faucet:

http://faucet.astria.localdev.me/

You can copy and paste a wallet address on the faucet page and give yourself 1 +RIA.

To test out the block explorer, open a terminal in the astria-web3 +repo you downloaded earlier +and navigate to the packages/evm-test-data/ and run the following command:

just generate-transactions

This command uses the default rollup name and network id (see above), and will +submit commands to the newly deployed default rollup.

You can now go back to your browser and pull up the block explorer and you will +now see blocks with transactions getting created in real time.

+ \ No newline at end of file diff --git a/docs/dev-cluster/overview/index.html b/docs/dev-cluster/overview/index.html index cb84af0..87787e6 100644 --- a/docs/dev-cluster/overview/index.html +++ b/docs/dev-cluster/overview/index.html @@ -4,13 +4,16 @@ Dev-Cluster Overview | Astria Docs - +

Dev-Cluster Overview

tip

To deploy your own rollup on the Astria Dusknet devnet, check out the -instructions here!

Astria's Shared Sequencer Network allows multiple rollups to share a single decentralized network of sequencers that’s permissionless to join. This shared sequencer network provides out-of-the-box censorship resistance, fast block confirmations, and atomic cross-rollup inclusion guarantees.

The Astria dev-cluster is the +instructions here!

Astria's Shared Sequencer Network allows multiple rollups to share a single +decentralized network of sequencers that’s permissionless to join. This shared +sequencer network provides out-of-the-box censorship resistance, fast block +confirmations, and atomic cross-rollup inclusion guarantees.

The Astria dev-cluster is the collective stack of all of Astria's components packaged together using Kubernetes. While we generally refer to Astria as the network of shared sequencers, we provide several other components to make it simpler to integrate @@ -19,11 +22,14 @@ as simple as possible.

tip

The primary use of the dev-cluster is running the full stack completely locally. There are elements of it that are used for running a local rollup that connects to the remote dev-net, but those will be discussed in another -section.

See the dev-cluster repo here.

Running the Dev Cluster Locally

Installation

You will need to pull both the dev-cluster and astria-web3 repos from our github.

Install the necessary dependencies and tools listed for each repo:

For contract deployment:

Deployment

tip

Make sure that Docker is running before deploying with just.

To deploy the Astria Sequencer and a local DA, open a terminal in the dev-cluster directory and run the commands:

# Deploys ingress + Sequencer + local DA
just deploy-astria-local

This may take a minute or two if this the first time you are deploying as quite +section.

See the dev-cluster repo here.

Running the Dev Cluster Locally

Installation

You will need to pull both the +dev-cluster and +astria-web3 repos from our github.

Install the necessary dependencies and tools listed for each repo:

For contract deployment:

Deployment

tip

Make sure that Docker is running before deploying with just.

To deploy the Astria Sequencer and a local DA, open a terminal in the +dev-cluster directory and run the commands:

# Deploys ingress + Sequencer + local DA
just deploy-astria-local

This may take a minute or two if this the first time you are deploying as quite a few containers need to be downloaded. Once the command completes, all elements of the dev-cluster will be up and running. This does not run a rollup, block -explorer, or faucet.

You can now deploy a rollup.

- +explorer, or faucet.

You can now deploy a rollup.

+ \ No newline at end of file diff --git a/docs/dev-cluster/run-multiple-rollups-locally/index.html b/docs/dev-cluster/run-multiple-rollups-locally/index.html index 25ef81d..3c1cebe 100644 --- a/docs/dev-cluster/run-multiple-rollups-locally/index.html +++ b/docs/dev-cluster/run-multiple-rollups-locally/index.html @@ -4,21 +4,35 @@ Run Multiple Rollups Locally | Astria Docs - +

Run Multiple Rollups Locally

tip

To deploy your own rollup on the Astria Dusknet devnet, check out the -instructions here!

At Astria we believe strongly that deploying a rollup should be as easy as deploying a smart contract. The dev-cluster shows this is indeed possible.

Navigate back to the dev-cluster +instructions here!

At Astria we believe strongly that deploying a rollup should be as easy as +deploying a smart contract. The dev-cluster shows this is indeed possible.

Navigate back to the dev-cluster repo in your terminal and run the following command with your own rollup name and network id:

danger

NOTE: The default rollup name and network id are astria and 912559. When -deploying your second rollup you must use a different name and number.

just deploy-rollup <rollup_name> <network_id>

As before, it will take a moment for everything to spin up, but in the meantime keep the the rollup name and network id handy and navigate back to your browser and open a new window with the following url, replacing rollup_name with the name you just used to deploy your new rollup:

http://blockscout.<rollup_name>.localdev.me/

Once everything has spin up you will see a new block explorer for your new rollup.

You can now deploy transaction to that rollup independently. -In the astria-web3/packages/evm-test-data directory open a new terminal and run the following:

just generate-transactions <rollup_name> <network_id>

As before, this command will deploy test transaction data to your new rollup. -You can also go back to your original terminal window for the test data deployment on the default rollup and rerun the just generate-transactions command. If you switch back and forth between the default block explorer window and your new rollup window, you will see transactions showing up on each rollup independently!

To navigate to the new Block Explorer and Faucet from the additional rollup, +deploying your second rollup you must use a different name and number.

just deploy-rollup <rollup_name> <network_id>

As before, it will take a moment for everything to spin up, but in the meantime +keep the the rollup name and network id handy and navigate back to your browser +and open a new window with the following url, replacing rollup_name with the +name you just used to deploy your new rollup:

http://blockscout.<rollup_name>.localdev.me/

Once everything has spin up you will see a new block explorer for your new rollup.

You can now deploy transaction to that rollup independently.In the +astria-web3/packages/evm-test-data directory open a new terminal and run the +following:

just generate-transactions <rollup_name> <network_id>

As before, this command will deploy test transaction data to your new rollup. +You can also go back to your original terminal window for the test data +deployment on the default rollup and rerun the just generate-transactions +command. If you switch back and forth between the default block explorer window +and your new rollup window, you will see transactions showing up on each rollup +independently!

To navigate to the new Block Explorer and Faucet from the additional rollup, take the rollup name that you used and replace <rollup_name> in the urls -below:

http://blockscout.<rollup_name>.localdev.me/
http://faucet.<rollup_name>.localdev.me/

The only limitations to running numerous rollups are the following:

  • Can your hardware handle it
  • There are no rollup name and network id clashes

What's Going on Under the Hood?

One last thing to mention is what is actually happening when you deploy a new rollup in the dev-cluster. When you you deploy a new rollup the only new containers that are getting spun up in the cluster are a new rollup node, a conductor, block explorer, and faucet. Only one instance of the shared sequencer and the DA layer remain running and the transactions from all the rollups are collectively getting run though those networks.

Multiple Rollups

You can also use kubectl to see that this is the case.

When running only the default rollup:

dev-cluster % kubectl get deployments --all-namespaces
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
astria-dev-cluster astria-blockscout 1/1 1 1 37s
astria-dev-cluster astria-faucet 1/1 1 1 37s
astria-dev-cluster astria-geth 1/1 1 1 37s
astria-dev-cluster celestia-local 1/1 1 1 94m
astria-dev-cluster sequencer 1/1 1 1 94m
ingress-nginx ingress-nginx-controller 1/1 1 1 94m
kube-system calico-kube-controllers 1/1 1 1 95m
kube-system coredns 2/2 2 2 95m
local-path-storage local-path-provisioner 1/1 1 1 95m

After deploying the second rollup:

dev-cluster % kubectl get deployments --all-namespaces
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
astria-dev-cluster anotherrollup-blockscout 1/1 1 1 114s
astria-dev-cluster anotherrollup-faucet 1/1 1 1 114s
astria-dev-cluster anotherrollup-geth 1/1 1 1 114s
astria-dev-cluster astria-blockscout 1/1 1 1 2m13s
astria-dev-cluster astria-faucet 1/1 1 1 2m13s
astria-dev-cluster astria-geth 1/1 1 1 2m13s
astria-dev-cluster celestia-local 1/1 1 1 95m
astria-dev-cluster sequencer 1/1 1 1 95m
ingress-nginx ingress-nginx-controller 1/1 1 1 96m
kube-system calico-kube-controllers 1/1 1 1 97m
kube-system coredns 2/2 2 2 97m
local-path-storage local-path-provisioner 1/1 1 1 97m
- +below:

http://blockscout.<rollup_name>.localdev.me/
http://faucet.<rollup_name>.localdev.me/

The only limitations to running numerous rollups are the following:

  • Can your hardware handle it
  • There are no rollup name and network id clashes

What's Going on Under the Hood?

One last thing to mention is what is actually happening when you deploy a new +rollup in the dev-cluster. When you you deploy a new rollup the only new +containers that are getting spun up in the cluster are a new rollup node, a +conductor, block explorer, and faucet. Only one instance of the shared sequencer +and the DA layer remain running and the transactions from all the rollups are +collectively getting run though those networks.

Multiple Rollups

You can also use kubectl to see that this is the case.

When running only the default rollup:

dev-cluster % kubectl get deployments --all-namespaces
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
astria-dev-cluster astria-blockscout 1/1 1 1 37s
astria-dev-cluster astria-faucet 1/1 1 1 37s
astria-dev-cluster astria-geth 1/1 1 1 37s
astria-dev-cluster celestia-local 1/1 1 1 94m
astria-dev-cluster sequencer 1/1 1 1 94m
ingress-nginx ingress-nginx-controller 1/1 1 1 94m
kube-system calico-kube-controllers 1/1 1 1 95m
kube-system coredns 2/2 2 2 95m
local-path-storage local-path-provisioner 1/1 1 1 95m

After deploying the second rollup:

dev-cluster % kubectl get deployments --all-namespaces
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
astria-dev-cluster anotherrollup-blockscout 1/1 1 1 114s
astria-dev-cluster anotherrollup-faucet 1/1 1 1 114s
astria-dev-cluster anotherrollup-geth 1/1 1 1 114s
astria-dev-cluster astria-blockscout 1/1 1 1 2m13s
astria-dev-cluster astria-faucet 1/1 1 1 2m13s
astria-dev-cluster astria-geth 1/1 1 1 2m13s
astria-dev-cluster celestia-local 1/1 1 1 95m
astria-dev-cluster sequencer 1/1 1 1 95m
ingress-nginx ingress-nginx-controller 1/1 1 1 96m
kube-system calico-kube-controllers 1/1 1 1 97m
kube-system coredns 2/2 2 2 97m
local-path-storage local-path-provisioner 1/1 1 1 97m
+ \ No newline at end of file diff --git a/docs/dev-cluster/shutdown/index.html b/docs/dev-cluster/shutdown/index.html index 49411c7..8991ee0 100644 --- a/docs/dev-cluster/shutdown/index.html +++ b/docs/dev-cluster/shutdown/index.html @@ -4,7 +4,7 @@ Shutting Down the Cluster | Astria Docs - + @@ -13,7 +13,7 @@ instructions here!

Deleting Specific Rollups

To delete a specific rollup deployment, you can use the following command:

just delete-rollup <ROLLUP_NAME>

This will remove the rollup, its block explorer, and faucet, but keep the rest of the cluster running.

Shutting Down the Whole Cluster

If you just want to shut everything down, you can run:

just clean

To delete all the data that may have also been created during your testing, you can then run:

just clean-persisted-data

Which will delete all the local data created.

- + \ No newline at end of file diff --git a/docs/dusknet/cloud-rollup-deployment/index.html b/docs/dusknet/cloud-rollup-deployment/index.html index dcc37cd..239b23a 100644 --- a/docs/dusknet/cloud-rollup-deployment/index.html +++ b/docs/dusknet/cloud-rollup-deployment/index.html @@ -4,29 +4,35 @@ Cloud Rollup Deployment | Astria Docs - +

Cloud Rollup Deployment

The following assumes you are using Digital Ocean Kubernetes -(DOKS).

We recommend using Digital Ocean's Kubernetes Quick Start Guide.

danger

You must use at least a 2 node cluster.

Setup Digital Ocean Ingress

We use the Ingress NGINX Controller for consistency across deployment environments:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/do/deploy.yaml

Configure Your Own Domain

tip

You must configure a DNS record because our ingress configuration uses name based virtual routing: https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting.

Follow the instructions here:

Digital Ocean Loadbalancer

Look for a new loadbalancer being created in the Digital Ocean console: +(DOKS).

We recommend using Digital Ocean's Kubernetes Quick Start +Guide.

danger

You must use at least a 2 node cluster.

Setup Digital Ocean Ingress

We use the Ingress NGINX Controller for consistency across deployment environments:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/do/deploy.yaml

Configure Your Own Domain

You must configure a DNS record because our ingress configuration uses

Follow the instructions here:

Digital Ocean Loadbalancer

Look for a new loadbalancer being created in the Digital Ocean console: https://cloud.digitalocean.com/networking/load_balancers

You can also check that your Digital Ocean load balancer was created using the -following command:

kubectl get svc -n ingress-nginx

You should see something like this:

NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
ingress-nginx-controller LoadBalancer 10.245.63.28 161.35.240.50 80:32656/TCP,443:30158/TCP 44h
ingress-nginx-controller-admission ClusterIP 10.245.106.99 <none> 443/TCP 44h

Set up an A Record for your Load Balancer

Follow the steps here to set up an A record for DNS:

tip

When configuring the A record for DNS, the directs to value should specify the loadbalancer which was created by the nginx-ingress-controller.

Endpoints

Endpoints for the remote cluster are the following:

NAMEHOSTSADDRESS
EVM JSON RPCrpc.evm.dusk-1.devnet.astria.org34.160.214.22
EVM Block Explorerexplorer.evm.dusk-1.devnet.astria.org34.111.167.16
EVM Faucetfaucet.evm.dusk-1.devnet.astria.org130.211.4.120
Sequencer RPCrpc.sequencer.dusk-1.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-1.devnet.astria.org34.36.8.102

Update the helm Chart

danger

Deploying a rollup to a cloud provider requires manual changes to the helm +following command:

kubectl get svc -n ingress-nginx

You should see something like this:

NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
ingress-nginx-controller LoadBalancer 10.245.63.28 161.35.240.50 80:32656/TCP,443:30158/TCP 44h
ingress-nginx-controller-admission ClusterIP 10.245.106.99 <none> 443/TCP 44h

Set up an A Record for your Load Balancer

Follow the steps here to set up an A record for DNS:

tip

When configuring the A record for DNS, the directs to value should specify +the loadbalancer which was created by the nginx-ingress-controller.

Endpoints

Endpoints for the remote cluster are the following:

NAMEHOSTSADDRESS
EVM JSON RPCrpc.evm.dusk-1.devnet.astria.org34.160.214.22
EVM Block Explorerexplorer.evm.dusk-1.devnet.astria.org34.111.167.16
EVM Faucetfaucet.evm.dusk-1.devnet.astria.org130.211.4.120
Sequencer RPCrpc.sequencer.dusk-1.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-1.devnet.astria.org34.36.8.102

Update the helm Chart

danger

Deploying a rollup to a cloud provider requires manual changes to the helm charts. Because the default localdev.me hostname will not work on a cloud -provider.

Pull the Astria dev-cluster repo:

git clone git@github.com:astriaorg/dev-cluster.git
cd dev-cluster

Within the dev-cluster repo, update the ingress template chart/rollup/templates/ingress.yaml so that each hostname ends in <YOUR_HOSTNAME> instead of localdev.me

...
- host: executor.{{ .Values.config.rollup.name }}.<YOUR_HOSTNAME>
...
- host: ws-executor.{{ .Values.config.rollup.name }}.<YOUR_HOSTNAME>
...
- host: faucet.{{ .Values.config.rollup.name }}.<YOUR_HOSTNAME>
...
- host: blockscout.{{ .Values.config.rollup.name }}.<YOUR_HOSTNAME>
...

Add an IngressClass so that the metadata section in the same file looks like:

metadata:
name: {{ .Values.config.rollup.name }}-ingress
namespace: {{ .Values.namespace }}
annotations:
kubernetes.io/ingress.class: nginx
tip

You can see an example of these changes in this PR here.

Creating your own Genesis Account

You can add genesis account(s) to your rollup during configuration.

You can create an account using

cast w new

to create a new account:

Successfully created new keypair.
Address: 0xfFe9...5f8b # <GENESIS_ADDRESS>
Private key: 0x332e...a8fb # <GENESIS_PRIVATE_KEY>

You can then export the genesis accounts like so:

export ROLLUP_GENESIS_ACCOUNTS=<GENESIS_ADDRESS>:100000000000000000000

Set <GENESIS_ADDRESS> to the address printed out from the new command, and -export the private key to the env vars using:

export ROLLUP_FAUCET_PRIV_KEY=<GENESIS_PRIVATE_KEY>

Exporting the genesis account(s) is also shown in the export block in the next section.

danger

NEVER use a private key you use on a live network.

Get and Build the astria-cli

Pull the Astria repo.

Build the astria-cli

git clone git@github.com:astriaorg/astria.git
cd astria
just install-cli

Keep track of this block height as it will be used for making the rollup config +provider.

Pull the Astria dev-cluster repo:

git clone git@github.com:astriaorg/dev-cluster.git
cd dev-cluster

Within the dev-cluster repo, update the ingress template +chart/rollup/templates/ingress.yaml so that each hostname ends in +<YOUR_HOSTNAME> instead of localdev.me

...
- host: executor.{{ .Values.config.rollup.name }}.<YOUR_HOSTNAME>
...
- host: ws-executor.{{ .Values.config.rollup.name }}.<YOUR_HOSTNAME>
...
- host: faucet.{{ .Values.config.rollup.name }}.<YOUR_HOSTNAME>
...
- host: blockscout.{{ .Values.config.rollup.name }}.<YOUR_HOSTNAME>
...

Add an IngressClass so that the metadata section in the same file looks like:

metadata:
name: {{ .Values.config.rollup.name }}-ingress
namespace: {{ .Values.namespace }}
annotations:
kubernetes.io/ingress.class: nginx
tip

You can see an example of these changes in this PR here.

Creating your own Genesis Account

You can add genesis account(s) to your rollup during configuration.

You can create an account using

cast w new

to create a new account:

Successfully created new keypair.
Address: 0xfFe9...5f8b # <GENESIS_ADDRESS>
Private key: 0x332e...a8fb # <GENESIS_PRIVATE_KEY>

You can then export the genesis accounts like so:

export ROLLUP_GENESIS_ACCOUNTS=<GENESIS_ADDRESS>:100000000000000000000

Set <GENESIS_ADDRESS> to the address printed out from the new command, and +export the private key to the env vars using:

export ROLLUP_FAUCET_PRIV_KEY=<GENESIS_PRIVATE_KEY>

Exporting the genesis account(s) is also shown in the export block in the next section.

danger

NEVER use a private key you use on a live network.

Get and Build the astria-cli

Pull the Astria repo.

Build the astria-cli

git clone git@github.com:astriaorg/astria.git
cd astria
just install-cli

Keep track of this block height as it will be used for making the rollup config later on. You will use this printed height in place of <INITIAL_SEQUENCER_BLOCK_HEIGHT> in the steps below.

Using the astria-cli

Get Current Sequencer Block Height

astria-cli sequencer blockheight get \
--sequencer-url https://rpc.sequencer.dusk-1.devnet.astria.org/

Save the returned value for later. You will replace the <INITIAL_SEQUENCER_BLOCK_HEIGHT> tag in the following sections with this value.

Replace the tags in the commands and env vars below, as follows:

Var NameVar TypeDescription
<YOUR_ROLLUP_NAME>StringThe name of your rollup
<YOUR_NETWORK_ID>u64The id of your network
<INITIAL_SEQUENCER_BLOCK_HEIGHT>u64The height of the sequencer (found above)
<GENESIS_ADDRESS>[u8; 40]A wallet address
<BALANCE>u64A balance. It is useful to make this a large value.

Create Rollup Config

You can use environment variables to set the configuration for the rollup -config creation. Replace all the <> tags with their corresponding values.

export ROLLUP_USE_TTY=true
export ROLLUP_LOG_LEVEL=DEBUG
export ROLLUP_NAME=<YOUR_ROLLUP_NAME>
export ROLLUP_NETWORK_ID=<YOUR_NETWORK_ID>
export ROLLUP_SKIP_EMPTY_BLOCKS=false
export ROLLUP_GENESIS_ACCOUNTS=<GENESIS_ADDRESS>:<BALANCE>
export ROLLUP_SEQUENCER_INITIAL_BLOCK_HEIGHT=<INITIAL_SEQUENCER_BLOCK_HEIGHT>
export ROLLUP_SEQUENCER_WEBSOCKET=wss://rpc.sequencer.dusk-1.devnet.astria.org/websocket
export ROLLUP_SEQUENCER_RPC=https://rpc.sequencer.dusk-1.devnet.astria.org

Then just run the config create command:

astria-cli rollup config create

You can then run:

cat <YOUR_ROLLUP_NAME>-rollup-conf.yaml

to print out the config file contents to double check everything:

config:
useTTY: true
logLevel: DEBUG
rollup:
name: <YOUR_ROLLUP_NAME>
chainId: # derived from rollup name
networkId: <YOUR_NETWORK_ID>
skipEmptyBlocks: true
genesisAccounts:
- address: 0x<GENESIS_ADDRESS>
balance: '<BALANCE>'
sequencer:
initialBlockHeight: <INITIAL_SEQUENCER_BLOCK_HEIGHT>
websocket: ws://rpc.sequencer.dusk-1.devnet.astria.org/websocket
rpc: http://rpc.sequencer.dusk-1.devnet.astria.org
celestia:
fullNodeUrl: http://celestia-service:26658

Export this file to the env vars as follows:

export ROLLUP_CONF_FILE=<YOUR_ROLLUP_NAME>-rollup-conf.yaml

Create new sequencer account

astria-cli sequencer account create
Create Sequencer Account

Private Key: "5562...1622" # <SEQUENCER_ACCOUNT_PRIV_KEY>
Public Key: "ec20...f613" # <SEQUENCER_ACCOUNT_PUB_KEY>
Address: "8a2f...5f68"

Keep track of the <SEQUENCER_ACCOUNT_PUB_KEY> as it will be used with the +config creation. Replace all the <> tags with their corresponding values.

export ROLLUP_USE_TTY=true
export ROLLUP_LOG_LEVEL=DEBUG
export ROLLUP_NAME=<YOUR_ROLLUP_NAME>
export ROLLUP_NETWORK_ID=<YOUR_NETWORK_ID>
export ROLLUP_SKIP_EMPTY_BLOCKS=false
export ROLLUP_GENESIS_ACCOUNTS=<GENESIS_ADDRESS>:<BALANCE>
export ROLLUP_SEQUENCER_INITIAL_BLOCK_HEIGHT=<INITIAL_SEQUENCER_BLOCK_HEIGHT>
export ROLLUP_SEQUENCER_WEBSOCKET=wss://rpc.sequencer.dusk-1.devnet.astria.org/websocket
export ROLLUP_SEQUENCER_RPC=https://rpc.sequencer.dusk-1.devnet.astria.org

Then just run the config create command:

astria-cli rollup config create

You can then run:

cat <YOUR_ROLLUP_NAME>-rollup-conf.yaml

to print out the config file contents to double check everything:

config:
useTTY: true
logLevel: DEBUG
rollup:
name: <YOUR_ROLLUP_NAME>
chainId: # derived from rollup name
networkId: <YOUR_NETWORK_ID>
skipEmptyBlocks: true
genesisAccounts:
- address: 0x<GENESIS_ADDRESS>
balance: '<BALANCE>'
sequencer:
initialBlockHeight: <INITIAL_SEQUENCER_BLOCK_HEIGHT>
websocket: ws://rpc.sequencer.dusk-1.devnet.astria.org/websocket
rpc: http://rpc.sequencer.dusk-1.devnet.astria.org
celestia:
fullNodeUrl: http://celestia-service:26658

Export this file to the env vars as follows:

export ROLLUP_CONF_FILE=<YOUR_ROLLUP_NAME>-rollup-conf.yaml

Create new sequencer account

astria-cli sequencer account create
Create Sequencer Account

Private Key: "5562...1622" # <SEQUENCER_ACCOUNT_PRIV_KEY>
Public Key: "ec20...f613" # <SEQUENCER_ACCOUNT_PUB_KEY>
Address: "8a2f...5f68"

Keep track of the <SEQUENCER_ACCOUNT_PUB_KEY> as it will be used with the Faucet later on for funding your sequencer account.

Export your sequencer private key as an environment variable.

export SEQUENCER_PRIV_KEY=9c78...710d

Use locally modified chart

danger

You must have modified your local helm chart to use your own domain name -as described in this section here.

Because you needed to modify the host names inside your ingress template you must deploy your rollup using your local chart:

export ROLLUP_CHART_PATH="/your_path_to/dev-cluster/charts/rollup"

Deploy the Rollup Node

Use the astria-cli to deploy the node.

astria-cli rollup deployment create \
--config $ROLLUP_CONF_FILE \
--faucet-private-key $ROLLUP_FAUCET_PRIV_KEY \
--sequencer-private-key $SEQUENCER_PRIV_KEY

Default to astria-dev-cluster namespace

Set kubectl to the correct namespace.

kubectl config set-context --current --namespace=astria-dev-cluster

Watch for pod startup

kubectl get pods -w
NAME                                             READY   STATUS    RESTARTS      AGE
<YOUR_ROLLUP_NAME>-blockscout-647745c66d-vz4ks 6/6 Running 1 (56s ago) 72s
<YOUR_ROLLUP_NAME>-faucet-68667bd895-pwqmz 1/1 Running 0 72s
<YOUR_ROLLUP_NAME>-geth-755cb8dd97-k5xp8 3/3 Running 0 72s

Check Block Retrieval on the Conductor

export GETH_POD_NAME=<YOUR_ROLLUP_NAME>-geth-755cb8dd97-k5x
kubectl logs $GETH_POD_NAME -c conductor
2023-10-16T20:49:16.858852Z  INFO run_until_stopped: astria_conductor::executor: executed sequencer block sequencer_block_hash=Hash::Sha256(93C233F2A2A109FF6CC3162A98916BECAE6D8EC43520C995E82B6D1F2B2742EF) sequencer_block_height=423755 execution_block_hash="2d8b2219a30ea4cc409347320f377de937b9ca2425f670c4f913724a2d53b2aa"
2023-10-16T20:49:18.922694Z INFO run_until_stopped: astria_conductor::executor: executing block with given parent block height=423756 parent_block_hash="2d8b2219a30ea4cc409347320f377de937b9ca2425f670c4f913724a2d53b2aa"
2023-10-16T20:49:18.926380Z INFO run_until_stopped: astria_conductor::executor: executed sequencer block sequencer_block_hash=Hash::Sha256(EAD8701CB15D9B487DC7400ABC2FCB7A4F7E09E09F39D4D6B8FA97B74B5EC50F) sequencer_block_height=423756 execution_block_hash="de20c29febc808b7a2ded8513eb23be116fe441745ccf62d1366b4b9bb160d04"

Observe your Deployment

Your rollups utility endpoints are as follows:

UtilityURL
Block Explorerhttp://blockscout.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/
Faucethttp://faucet.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/
RPChttp://executor.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/

Open the URLs in your browser to view your running rollup.

Debug Ingress

If you would like to view the ingress logs you can use the following:

kubectl get po -n ingress-nginx
# get the name of one of the pods
export INGRESS_POD_1=ingress-nginx-controller-6d6559598-ll8gv
# view the logs
kubectl logs $INGRESS_POD_1 -n ingress-nginx

Use cast to Interact with your Rollup

export ETH_RPC_URL=http://executor.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/
cast block 0

Use an address of your choice.

export REC_ADDR=<SOME_ADDRESS>
cast balance $REC_ADDR
cast send $REC_ADDR --value 10000000000000000000 --private-key $ROLLUP_FAUCET_PRIV_KEY
cast balance $REC_ADDR

Fund you Sequencer Account

Using your sequencer pub key you created in the Create a New Sequencer +as described in this section here.

Because you needed to modify the host names inside your ingress template you +must deploy your rollup using your local chart:

export ROLLUP_CHART_PATH="/your_path_to/dev-cluster/charts/rollup"

Deploy the Rollup Node

Use the astria-cli to deploy the node.

astria-cli rollup deployment create \
--config $ROLLUP_CONF_FILE \
--faucet-private-key $ROLLUP_FAUCET_PRIV_KEY \
--sequencer-private-key $SEQUENCER_PRIV_KEY

Default to astria-dev-cluster namespace

Set kubectl to the correct namespace.

kubectl config set-context --current --namespace=astria-dev-cluster

Watch for pod startup

kubectl get pods -w
NAME                                             READY   STATUS    RESTARTS      AGE
<YOUR_ROLLUP_NAME>-blockscout-647745c66d-vz4ks 6/6 Running 1 (56s ago) 72s
<YOUR_ROLLUP_NAME>-faucet-68667bd895-pwqmz 1/1 Running 0 72s
<YOUR_ROLLUP_NAME>-geth-755cb8dd97-k5xp8 3/3 Running 0 72s

Check Block Retrieval on the Conductor

export GETH_POD_NAME=<YOUR_ROLLUP_NAME>-geth-755cb8dd97-k5x
kubectl logs $GETH_POD_NAME -c conductor
2023-10-16T20:49:16.858852Z  INFO run_until_stopped: astria_conductor::executor:
executed sequencer block sequencer_block_hash=Hash::Sha256
(93C233F2A2A109FF6CC3162A98916BECAE6D8EC43520C995E82B6D1F2B2742EF)
sequencer_block_height=423755
execution_block_hash="2d8b2219a30ea4cc409347320f377de937b9ca2425f670c4f913724a2d53b2aa"
2023-10-16T20:49:18.922694Z INFO run_until_stopped: astria_conductor::executor:
executing block with given parent block height=423756
parent_block_hash="2d8b2219a30ea4cc409347320f377de937b9ca2425f670c4f913724a2d53b2aa"
2023-10-16T20:49:18.926380Z INFO run_until_stopped: astria_conductor::executor:
executed sequencer block sequencer_block_hash=Hash::Sha256
(EAD8701CB15D9B487DC7400ABC2FCB7A4F7E09E09F39D4D6B8FA97B74B5EC50F)
sequencer_block_height=423756
execution_block_hash="de20c29febc808b7a2ded8513eb23be116fe441745ccf62d1366b4b9bb160d04"

Observe your Deployment

Your rollups utility endpoints are as follows:

UtilityURL
Block Explorerhttp://blockscout.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/
Faucethttp://faucet.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/
RPChttp://executor.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/

Open the URLs in your browser to view your running rollup.

Debug Ingress

If you would like to view the ingress logs you can use the following:

kubectl get po -n ingress-nginx
# get the name of one of the pods
export INGRESS_POD_1=ingress-nginx-controller-6d6559598-ll8gv
# view the logs
kubectl logs $INGRESS_POD_1 -n ingress-nginx

Use cast to Interact with your Rollup

export ETH_RPC_URL=http://executor.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/
cast block 0

Use an address of your choice.

export REC_ADDR=<SOME_ADDRESS>
cast balance $REC_ADDR
cast send $REC_ADDR --value 10000000000000000000 --private-key $ROLLUP_FAUCET_PRIV_KEY
cast balance $REC_ADDR

Fund you Sequencer Account

Using your sequencer pub key you created in the Create a New Sequencer Account, copy and past the <SEQUENCER_ACCOUNT_PUB_KEY> into the input on the faucet page, and mint funds to your account:

Sequencer Faucet

- + \ No newline at end of file diff --git a/docs/dusknet/local-rollup-deployment/index.html b/docs/dusknet/local-rollup-deployment/index.html index 9f5f2aa..608ca59 100644 --- a/docs/dusknet/local-rollup-deployment/index.html +++ b/docs/dusknet/local-rollup-deployment/index.html @@ -4,30 +4,30 @@ Local Rollup Deployment | Astria Docs - +
-

Local Rollup Deployment

Endpoints

Endpoints for the remote cluster are the following:

NAMEHOSTSADDRESS
EVM JSON RPCrpc.evm.dusk-1.devnet.astria.org34.160.214.22
EVM Block Explorerexplorer.evm.dusk-1.devnet.astria.org34.111.167.16
EVM Faucetfaucet.evm.dusk-1.devnet.astria.org130.211.4.120
Sequencer RPCrpc.sequencer.dusk-1.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-1.devnet.astria.org34.36.8.102

Creating your own Genesis Account

You can add genesis account(s) to your rollup during configuration. -This is done by exporting the additional ROLLUP_GENESIS_ACCOUNTS environment variable.

export ROLLUP_GENESIS_ACCOUNTS=<GENESIS_ADDRESS>:100000000000000000000

You can create an account using

cast w new

to create a new account:

Successfully created new keypair.
Address: 0xfFe9...5f8b # <GENESIS_ADDRESS>
Private key: 0x332e...a8fb # <GENESIS_PRIVATE_KEY>

Set <GENESIS_ADDRESS> to the address printed out from the new command, and -export the private key to the env vars using:

export ROLLUP_FAUCET_PRIV_KEY=<GENESIS_PRIVATE_KEY>

This export is also shown in the export block in the next section.

danger

NEVER use a private key you use on a live network.

For ease of use we recommend you set this to an key which you have access to

Build the astria-cli

Clone the Astria repo and build +

Local Rollup Deployment

Endpoints

Endpoints for the remote cluster are the following:

NAMEHOSTSADDRESS
EVM JSON RPCrpc.evm.dusk-1.devnet.astria.org34.160.214.22
EVM Block Explorerexplorer.evm.dusk-1.devnet.astria.org34.111.167.16
EVM Faucetfaucet.evm.dusk-1.devnet.astria.org130.211.4.120
Sequencer RPCrpc.sequencer.dusk-1.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-1.devnet.astria.org34.36.8.102

Creating your own Genesis Account

You can add genesis account(s) to your rollup during configuration. This is done +by exporting the additional ROLLUP_GENESIS_ACCOUNTS environment variable.

export ROLLUP_GENESIS_ACCOUNTS=<GENESIS_ADDRESS>:100000000000000000000

You can create an account using

cast w new

to create a new account:

Successfully created new keypair.
Address: 0xfFe9...5f8b # <GENESIS_ADDRESS>
Private key: 0x332e...a8fb # <GENESIS_PRIVATE_KEY>

Set <GENESIS_ADDRESS> to the address printed out from the new command, and +export the private key to the env vars using:

export ROLLUP_FAUCET_PRIV_KEY=<GENESIS_PRIVATE_KEY>

This export is also shown in the export block in the next section.

danger

NEVER use a private key you use on a live network.

For ease of use we recommend you set this to an key which you have access to

Build the astria-cli

Clone the Astria repo and build a new config using the astria-cli.

git clone git@github.com:astriaorg/astria.git
cd astria
just install-cli

Using the astria-cli

Get Current Sequencer Block Height

astria-cli sequencer blockheight get \
--sequencer-url https://rpc.sequencer.dusk-1.devnet.astria.org/

Keep track of this block height as it will be used for making the rollup config later on. You will use this printed height in place of <INITIAL_SEQUENCER_BLOCK_HEIGHT> in the steps below.

Replace the following tags in the sections below, as follows:

Var NameVar TypeDescription
<YOUR_ROLLUP_NAME>StringThe name of your rollup
<YOUR_NETWORK_ID>u64The id of your network
<INITIAL_SEQUENCER_BLOCK_HEIGHT>u64The height of the sequencer (found above)
<GENESIS_ADDRESS>[u8; 40]A wallet address
<BALANCE>u64A balance. It is useful to make this a large value.

Create Rollup Config

You can use environment variables to set the configuration for the rollup -config creation. Replace all the <> tags with their corresponding values.

export ROLLUP_USE_TTY=true
export ROLLUP_LOG_LEVEL=DEBUG
export ROLLUP_NAME=<YOUR_ROLLUP_NAME>
export ROLLUP_NETWORK_ID=<YOUR_NETWORK_ID>
export ROLLUP_SKIP_EMPTY_BLOCKS=false
export ROLLUP_GENESIS_ACCOUNTS=<GENESIS_ADDRESS>:<BALANCE>
export ROLLUP_SEQUENCER_INITIAL_BLOCK_HEIGHT=<INITIAL_SEQUENCER_BLOCK_HEIGHT>
export ROLLUP_SEQUENCER_WEBSOCKET=wss://rpc.sequencer.dusk-1.devnet.astria.org/websocket
export ROLLUP_SEQUENCER_RPC=https://rpc.sequencer.dusk-1.devnet.astria.org

Then just run the config create command:

astria-cli rollup config create

You can then run:

cat <YOUR_ROLLUP_NAME>-rollup-conf.yaml

to print out the config file contents to double check everything:

config:
useTTY: true
logLevel: DEBUG
rollup:
name: <YOUR_ROLLUP_NAME>
chainId: # derived from rollup name
networkId: <YOUR_NETWORK_ID>
skipEmptyBlocks: true
genesisAccounts:
- address: 0x<GENESIS_ADDRESS>
balance: '<BALANCE>'
sequencer:
initialBlockHeight: <INITIAL_SEQUENCER_BLOCK_HEIGHT>
websocket: ws://rpc.sequencer.dusk-1.devnet.astria.org/websocket
rpc: http://rpc.sequencer.dusk-1.devnet.astria.org
celestia:
fullNodeUrl: http://celestia-service:26658

Export this file to the env vars as follows:

export ROLLUP_CONF_FILE=<YOUR_ROLLUP_NAME>-rollup-conf.yaml

At this point, if you do not want to add any genesis accounts to your rollup you +config creation. Replace all the <> tags with their corresponding values.

export ROLLUP_USE_TTY=true
export ROLLUP_LOG_LEVEL=DEBUG
export ROLLUP_NAME=<YOUR_ROLLUP_NAME>
export ROLLUP_NETWORK_ID=<YOUR_NETWORK_ID>
export ROLLUP_SKIP_EMPTY_BLOCKS=false
export ROLLUP_GENESIS_ACCOUNTS=<GENESIS_ADDRESS>:<BALANCE>
export ROLLUP_SEQUENCER_INITIAL_BLOCK_HEIGHT=<INITIAL_SEQUENCER_BLOCK_HEIGHT>
export ROLLUP_SEQUENCER_WEBSOCKET=wss://rpc.sequencer.dusk-1.devnet.astria.org/websocket
export ROLLUP_SEQUENCER_RPC=https://rpc.sequencer.dusk-1.devnet.astria.org

Then just run the config create command:

astria-cli rollup config create

You can then run:

cat <YOUR_ROLLUP_NAME>-rollup-conf.yaml

to print out the config file contents to double check everything:

config:
useTTY: true
logLevel: DEBUG
rollup:
name: <YOUR_ROLLUP_NAME>
chainId: # derived from rollup name
networkId: <YOUR_NETWORK_ID>
skipEmptyBlocks: true
genesisAccounts:
- address: 0x<GENESIS_ADDRESS>
balance: '<BALANCE>'
sequencer:
initialBlockHeight: <INITIAL_SEQUENCER_BLOCK_HEIGHT>
websocket: ws://rpc.sequencer.dusk-1.devnet.astria.org/websocket
rpc: http://rpc.sequencer.dusk-1.devnet.astria.org
celestia:
fullNodeUrl: http://celestia-service:26658

Export this file to the env vars as follows:

export ROLLUP_CONF_FILE=<YOUR_ROLLUP_NAME>-rollup-conf.yaml

At this point, if you do not want to add any genesis accounts to your rollup you can move on to the next section.

If you do want to add an account(s), see the next section.

Setup Local Environment

We use part of the Astria dev-cluster to setup a local Kubernetes (k8s) cluster where we will deploy our local rollup.

tip

Make sure that Docker is running before deploying with just.

In the dev-cluster repo, run:

git clone git@github.com:astriaorg/dev-cluster.git
cd dev-cluster
just create-cluster
just deploy-ingress-controller
just wait-for-ingress-controller

This gives us a local environment compatible with our helm charts.

Create a New Sequencer Account

Back in the Astria repo, run the cli to create the address and key -information for a new sequencer account.

astria-cli sequencer account create

The address, public and private keys will be different from those below. Save +information for a new sequencer account.

astria-cli sequencer account create

The address, public and private keys will be different from those below. Save these values for later use.

Create Sequencer Account

Private Key: "5562...1622" # <SEQUENCER_ACCOUNT_PRIV_KEY>
Public Key: "ec20...f613" # <SEQUENCER_ACCOUNT_PUB_KEY>
Address: "8a2f...5f68"

Keep track of the <SEQUENCER_ACCOUNT_PUB_KEY> as it will be used with the -Faucet later on for funding your sequencer account.

Now export the private key printed above:

export SEQUENCER_PRIV_KEY=<SEQUENCER_ACCOUNT_PRIV_KEY>

Deploy the Configuration

Then deploy the configuration with:

astria-cli rollup deployment create \
--config $ROLLUP_CONF_FILE \
--faucet-private-key $ROLLUP_FAUCET_PRIV_KEY \
--sequencer-private-key $SEQUENCER_PRIV_KEY

Observe your Deployment

Your rollups utility endpoints are as follows:

UtilityURL
Block Explorerhttp://blockscout.<YOUR_ROLLUP_NAME>.localdev.me/
Faucethttp://faucet.<YOUR_ROLLUP_NAME>.localdev.me/
RPChttp://executor.<YOUR_ROLLUP_NAME>.localdev.me/

Open the URLs in your browser to view your running rollup.

You can also open the Block Explorer in a new browser window to see the faucet +Faucet later on for funding your sequencer account.

Now export the private key printed above:

export SEQUENCER_PRIV_KEY=<SEQUENCER_ACCOUNT_PRIV_KEY>

Deploy the Configuration

Then deploy the configuration with:

astria-cli rollup deployment create \
--config $ROLLUP_CONF_FILE \
--faucet-private-key $ROLLUP_FAUCET_PRIV_KEY \
--sequencer-private-key $SEQUENCER_PRIV_KEY

Observe your Deployment

Your rollups utility endpoints are as follows:

UtilityURL
Block Explorerhttp://blockscout.<YOUR_ROLLUP_NAME>.localdev.me/
Faucethttp://faucet.<YOUR_ROLLUP_NAME>.localdev.me/
RPChttp://executor.<YOUR_ROLLUP_NAME>.localdev.me/

Open the URLs in your browser to view your running rollup.

You can also open the Block Explorer in a new browser window to see the faucet transaction appear, or any of the transactions you have sent using cast.

Use cast to Interact with your Rollup

Use cast to view the blocks on your rollup.

# replace <your_rollup_name> with the name you used in your configuration
export ETH_RPC_URL=http://executor.$ROLLUP_NAME.localdev.me/
cast block 0

Which should print something like this:

baseFeePerGas        1000000000
difficulty 10000000
extraData 0x
gasLimit 8000000
gasUsed 0
hash 0xa2d5f000ef275b5f6ce6af5a0de50c17e5893c5ea664b77f534eb62f317caff1
logsBloom 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
miner 0x0000000000000000000000000000000000000000
mixHash 0x0000000000000000000000000000000000000000000000000000000000000000
nonce 0x0000000000000000
number 0
parentHash 0x0000000000000000000000000000000000000000000000000000000000000000
receiptsRoot 0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421
sealFields []
sha3Uncles 0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347
size 512
stateRoot 0xc1a913facf57b18de72d25155293c53b2a463d93a1de735269410b8663f2efca
timestamp 0
withdrawalsRoot
totalDifficulty 10000000
transactions: []

If you have an address you would like to deposit funds to, export that address to the env vars:

export REC_ADDR=<ADDRESS>

You can also use cast to view your balance:

cast balance $REC_ADDR

Send an ammount to your address:

cast send $REC_ADDR --value 10000000000000000000 --private-key $ROLLUP_FAUCET_PRIV_KEY

And view your new balance:

cast balance $REC_ADDR

Fund you Sequencer Account

Using your sequencer pub key you created in the Create a New Sequencer Account, copy and past the <SEQUENCER_ACCOUNT_PUB_KEY> into the input on the faucet page, and mint funds to your account:

Sequencer Faucet

- + \ No newline at end of file diff --git a/docs/dusknet/overview/index.html b/docs/dusknet/overview/index.html index f2d6ac9..1601144 100644 --- a/docs/dusknet/overview/index.html +++ b/docs/dusknet/overview/index.html @@ -4,7 +4,7 @@ Overview | Astria Docs - + @@ -12,14 +12,13 @@

Overview

After running the Astria stack locally, the next step is to run a rollup against the remote Astria network.

The primary difference between running a local rollup and one that targets the remote devnet, is the configuration of the rollup and creating an account for -the Sequencer.

Local Dependencies

Clone the dev-cluster and the main -astria repo repo:

git clone git@github.com:astriaorg/astria.git
git clone https://github.com/astriaorg/dev-cluster

And install the following tools:

Many of these dependencies are also required for running the local dev-cluster -if you have previously done that.

For reference, the latest component releases that the devnet cluster is running are the -following:

You do not need to download these independently, they are already within the +the Sequencer.

Local Dependencies

Clone the dev-cluster and +the main astria repo repo:

git clone git@github.com:astriaorg/astria.git
git clone https://github.com/astriaorg/dev-cluster

And install the following tools:

Many of these dependencies are also required for running the local dev-cluster +if you have previously done that.

For reference, the latest component releases that the devnet cluster is running +are the following:

You do not need to download these independently, they are already within the dev-cluster repo.

Once all of the dependencies have been installed, you can move on to running the rollup.

- + \ No newline at end of file diff --git a/docs/overview-of-astria/architecture/composer/index.html b/docs/overview-of-astria/architecture/composer/index.html index df932af..281dd23 100644 --- a/docs/overview-of-astria/architecture/composer/index.html +++ b/docs/overview-of-astria/architecture/composer/index.html @@ -4,7 +4,7 @@ Composer | Astria Docs - + @@ -20,7 +20,7 @@ on our architecture design by stubbing out the roles and requiring other components to interact with them through an interface.

While a real searcher implementation would create profit-generating bundles of rollup transactions and submit them to a builder, the Composer implementation simply bundles every rollup transaction it receives into a sequencer transaction and submits it to the sequencer. As our approach to proposer-builder separation is still in its design phase, there is currently no explicit builder role in the MEV supply chain and transactions are submitted directly to validator nodes' CometBFT mempool.

Once Astria's block builder design moves to its implementation phase, the Composer will include a reference builder implementation as well. Similarly to the searcher, while a real builder implementation would run a profit-generating auction, the composer implementation will simply run a FIFO queue that will add all the sequencer transactions it receives and submits a block to the sequencer's proposer.

Once Astria's block builder design moves to its implementation phase, the Composer will include a reference builder implementation as well. Similarly to the searcher, while a real builder implementation would run a profit-generating auction, the composer implementation will simply run a FIFO queue that will add all the sequencer transactions it receives and submits a block to the sequencer's proposer.

See the Conductor code here.

- + \ No newline at end of file diff --git a/docs/overview-of-astria/architecture/conductor/index.html b/docs/overview-of-astria/architecture/conductor/index.html index 48d44eb..62abc09 100644 --- a/docs/overview-of-astria/architecture/conductor/index.html +++ b/docs/overview-of-astria/architecture/conductor/index.html @@ -4,7 +4,7 @@ Conductor | Astria Docs - + @@ -28,7 +28,7 @@ Relayer, it sends a firm commit message to the rollup to update that block to "finalized."

See the Conductor code here.

- + \ No newline at end of file diff --git a/docs/overview-of-astria/architecture/data-availability-layer/index.html b/docs/overview-of-astria/architecture/data-availability-layer/index.html index 1d2327e..90c43cc 100644 --- a/docs/overview-of-astria/architecture/data-availability-layer/index.html +++ b/docs/overview-of-astria/architecture/data-availability-layer/index.html @@ -4,7 +4,7 @@ Data Availability Layer | Astria Docs - + @@ -16,7 +16,7 @@ order is considered final and it is where all data will be pulled from when a new rollup node is spun up.

See the Celestia website for a more in depth introduction.

- + \ No newline at end of file diff --git a/docs/overview-of-astria/architecture/overview/index.html b/docs/overview-of-astria/architecture/overview/index.html index 1ad13fd..e1e76aa 100644 --- a/docs/overview-of-astria/architecture/overview/index.html +++ b/docs/overview-of-astria/architecture/overview/index.html @@ -4,7 +4,7 @@ Architecture Overview | Astria Docs - + @@ -21,7 +21,7 @@ nod to the Lazy Evaluation principle found in programming language theory.

See the Astria repo here.

- + \ No newline at end of file diff --git a/docs/overview-of-astria/architecture/relayer/index.html b/docs/overview-of-astria/architecture/relayer/index.html index b47c22b..d45c240 100644 --- a/docs/overview-of-astria/architecture/relayer/index.html +++ b/docs/overview-of-astria/architecture/relayer/index.html @@ -4,7 +4,7 @@ Relayer | Astria Docs - + @@ -19,7 +19,7 @@ truth and are ultimately pulled from the DA to be used as firm commits for finality in the rolllups.

See the Relayer code here.

- + \ No newline at end of file diff --git a/docs/overview-of-astria/architecture/rollup/index.html b/docs/overview-of-astria/architecture/rollup/index.html index e9dea95..0d08e10 100644 --- a/docs/overview-of-astria/architecture/rollup/index.html +++ b/docs/overview-of-astria/architecture/rollup/index.html @@ -4,7 +4,7 @@ Rollups | Astria Docs - + @@ -12,7 +12,7 @@

Rollups

tip

To deploy your own rollup on the Astria Dusknet devnet, check out the instructions here!

Astria is designed for permissionless rollup integration and takes advantage of lazy shared sequencing. This means that rollup developers have total sovereignty over their own execution state and can swap out sequencing layers without fear of being locked in. You do not need to ask for permission or go through a governance process to gain access. A rollup simply needs to satisfy the following interfaces:

Write Interface (Rollup <-> Composer):

  • For transaction submissions.

Read Interface (Rollup <-> Conductor):

  • For receiving blocks from the shared sequencer network.

Single Rollup

The Composer and Conductor are explained in more detail in future sections.

Both composer and conductor expose gRPC interfaces. See the astria-protos repo for specific implementation details.

Astria currently deploys a fork of Geth as an EVM rollup.

- + \ No newline at end of file diff --git a/docs/overview-of-astria/architecture/the-astria-sequencer/index.html b/docs/overview-of-astria/architecture/the-astria-sequencer/index.html index 0d137d8..5ebc631 100644 --- a/docs/overview-of-astria/architecture/the-astria-sequencer/index.html +++ b/docs/overview-of-astria/architecture/the-astria-sequencer/index.html @@ -4,7 +4,7 @@ The Astria Sequencer | Astria Docs - + @@ -14,7 +14,7 @@ participates in the production and finalization of new blocks.

Astria Shared Sequencer

Components of note that are not shown in the above diagram are the Composer, Relayer, and Conductor.

These components facilitate the delivery transactions, batches, and different commits shown above, back to the users.

See the Sequencer code here.

- + \ No newline at end of file diff --git a/docs/overview-of-astria/architecture/transaction-flow/index.html b/docs/overview-of-astria/architecture/transaction-flow/index.html index 8217801..89209ac 100644 --- a/docs/overview-of-astria/architecture/transaction-flow/index.html +++ b/docs/overview-of-astria/architecture/transaction-flow/index.html @@ -4,14 +4,14 @@ Transaction Flow | Astria Docs - + - + \ No newline at end of file diff --git a/docs/overview-of-astria/cross-rollup-composability/index.html b/docs/overview-of-astria/cross-rollup-composability/index.html index 1e7f360..5c81d10 100644 --- a/docs/overview-of-astria/cross-rollup-composability/index.html +++ b/docs/overview-of-astria/cross-rollup-composability/index.html @@ -4,14 +4,19 @@ Cross-Rollup Composability | Astria Docs - +

Cross-Rollup Composability

tip

To deploy your own rollup on the Astria Dusknet devnet, check out the -instructions here!

Because Astria handles the transaction ordering for multiple rollups, it’s able to provide guarantees that transactions are only included as part of an atomic bundle. This allows users to specify that a transaction on Rollup A can be included in a block if and only if a different transaction on Rollup B is also included in the same block. By enabling such conditional transaction inclusion, Astria unlocks exciting possibilities such as atomic cross-rollup arbitrage.

- +instructions here!

Because Astria handles the transaction ordering for multiple rollups, it’s able +to provide guarantees that transactions are only included as part of an atomic +bundle. This allows users to specify that a transaction on Rollup A can be +included in a block if and only if a different transaction on Rollup B is also +included in the same block. By enabling such conditional transaction inclusion, +Astria unlocks exciting possibilities such as atomic cross-rollup arbitrage.

+ \ No newline at end of file diff --git a/docs/overview-of-astria/introduction/index.html b/docs/overview-of-astria/introduction/index.html index 9435a66..34cf8e0 100644 --- a/docs/overview-of-astria/introduction/index.html +++ b/docs/overview-of-astria/introduction/index.html @@ -3,24 +3,22 @@ -Introduction | Astria Docs - +Introduction | Astria Docs +
-

Introduction

tip

To deploy your own rollup on the Astria Dusknet devnet, check out the -instructions here!

Astria is a shared sequencing network that allows many rollups to share a single +

Introduction

To deploy your own rollup on the Astria Dusknet devnet, check out the

instructions here! :::

Astria is a shared sequencing network that allows many rollups to share a single decentralized network of sequencers. These sequencers are simple and permissionless to join, completely replacing centralized sequencers.

This shared sequencer network provides out-of-the-box censorship resistance, fast block confirmations, and atomic cross-rollup composability – all while -retaining each rollup’s sovereignty. -Astria envisions a future where thousands of decentralized rollups -flourish, each one tailored to meet the unique requirements of different -industries, applications, and use cases.

To achieve this vision, we believe that -deploying an economically secure, decentralized, and censorship-resistant rollup -should be as easy as deploying a smart contract.

See the Astria repo here.

- +retaining each rollup’s sovereignty. Astria envisions a future where thousands +of decentralized rollups flourish, each one tailored to meet the unique +requirements of different industries, applications, and use cases.

To achieve this vision, we believe that deploying an economically secure, +decentralized, and censorship-resistant rollup should be as easy as deploying a +smart contract.

See the Astria repo here.

+ \ No newline at end of file diff --git a/docs/overview-of-astria/maintain-sovereignty/index.html b/docs/overview-of-astria/maintain-sovereignty/index.html index fe395c1..16694de 100644 --- a/docs/overview-of-astria/maintain-sovereignty/index.html +++ b/docs/overview-of-astria/maintain-sovereignty/index.html @@ -4,7 +4,7 @@ Maintain Sovereignty | Astria Docs - + @@ -17,7 +17,7 @@ layer (eg. Celestia), and rollup full nodes hold the state and perform execution, this means there’s nothing that Astria can do to hold the rollup hostage.

- + \ No newline at end of file diff --git a/docs/overview-of-astria/why-decentralized-sequencers/index.html b/docs/overview-of-astria/why-decentralized-sequencers/index.html index 64c85b2..ccaf346 100644 --- a/docs/overview-of-astria/why-decentralized-sequencers/index.html +++ b/docs/overview-of-astria/why-decentralized-sequencers/index.html @@ -3,15 +3,23 @@ -Why Decentralized Sequencers? | Astria Docs - +Why Decentralized Sequencers? | Astria Docs +
-

Why Decentralized Sequencers?

tip

To deploy your own rollup on the Astria Dusknet devnet, check out the -instructions here!

Centralization is antithetical to crypto. And yet, today’s rollups almost universally depend on a single sequencer. Centralized sequencers provide fast transaction confirmations and reduce costs by batching and compressing transactions. However, these benefits come at the cost of relying on a single trusted actor for liveness and censorship resistance.

Sacrificing decentralization for an improved user experience is an unacceptable Faustian bargain.

Astria tackles centralization head-on, providing rollups with a decentralized sequencer and even better UX. Astria’s shared sequencer network is a middleware blockchain with its own decentralized sequencer set which accepts transactions from multiple rollups. These transactions are ordered into a single block and written to the base layer without executing them.

Shared Sequencers

- +

Why Decentralized Sequencers?

To deploy your own rollup on the Astria Dusknet devnet, check out the

instructions here! :::

Centralization is antithetical to crypto. And yet, today’s rollups almost +universally depend on a single sequencer. Centralized sequencers provide fast +transaction confirmations and reduce costs by batching and compressing +transactions. However, these benefits come at the cost of relying on a single +trusted actor for liveness and censorship resistance.

Sacrificing decentralization for an improved user experience is an +unacceptable Faustian bargain.

Astria tackles centralization head-on, providing rollups with a decentralized +sequencer and even better UX. Astria’s shared sequencer network is a middleware +blockchain with its own decentralized sequencer set which accepts transactions +from multiple rollups. These transactions are ordered into a single block and +written to the base layer without executing them.

Shared Sequencers

+ \ No newline at end of file diff --git a/index.html b/index.html index 24e0a26..d8057e1 100644 --- a/index.html +++ b/index.html @@ -4,13 +4,13 @@ Astria Docs - +

Astria Docs

The Shared Sequencer Network

Decentralized by Default

Share a single decentralized network of sequencers that's simple and permissionless to join.

Cross-Rollup Composability

Astria enables atomic transaction inclusion across rollups via its native transaction bundles.

Maintain Sovereignty

Rollups own their execution and state. Swapping out the sequencing layer is as simple as updating your Rollup software.

- + \ No newline at end of file diff --git a/markdown-page/index.html b/markdown-page/index.html index a6b4543..e830912 100644 --- a/markdown-page/index.html +++ b/markdown-page/index.html @@ -4,13 +4,13 @@ Markdown page example | Astria Docs - +

Markdown page example

You don't need React to write simple standalone pages.

- + \ No newline at end of file